acinclude.m4:dnl FIND_ZIP[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]
acinclude.m4:dnl ------------------------------------------------
acinclude.m4:  AS_HELP_STRING([--without-zip], [build without libx (default: test)]))
acinclude.m4:# Treat --without-zip like --without-zip-includes --without-zip-libraries.
acinclude.m4:AC_ARG_WITH(zip-includes,
acinclude.m4:  AS_HELP_STRING([--with-zip-includes=DIR], [libz includes are in DIR]),
acinclude.m4:  ZIP_INCLUDES="-I$withval")
acinclude.m4:AC_ARG_WITH(zip-libraries,
acinclude.m4:  AS_HELP_STRING([--with-zip-libraries=DIR], [libz libraries are in DIR]),
acinclude.m4:  ZIP_LIBS="-L$withval -lz")
acinclude.m4:    INCLUDES="-I${prefix}/include $INCLUDES"
acinclude.m4:      ZIP_INCLUDES="-I${prefix}/include"
acinclude.m4:  LIBS="-lz $LIBS"
acinclude.m4:    ZIP_LIBS="-lz"
acinclude.m4:    LIBS="-L${prefix}/lib $LIBS"
acinclude.m4:      ZIP_LIBS="-L${prefix}/lib -lz"
acinclude.m4:# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
acinclude.m4:dnl FIND_TIFF[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]
acinclude.m4:dnl ------------------------------------------------
acinclude.m4:  AS_HELP_STRING([--without-tiff], [build without libtiff (default: test)]))
acinclude.m4:# Treat --without-tiff like --without-tiff-includes --without-tiff-libraries.
acinclude.m4:AC_ARG_WITH(tiff-includes,
acinclude.m4:  AS_HELP_STRING([--with-tiff-includes=DIR], [libtiff includes are in DIR]),
acinclude.m4:  TIFF_INCLUDES="-I$withval")
acinclude.m4:AC_ARG_WITH(tiff-libraries,
acinclude.m4:  AS_HELP_STRING([--with-tiff-libraries=DIR], [libtiff libraries are in DIR]),
acinclude.m4:  TIFF_LIBS="-L$withval -ltiff")
acinclude.m4:    INCLUDES="-I${prefix}/include $INCLUDES"
acinclude.m4:      TIFF_INCLUDES="-I${prefix}/include"
acinclude.m4:  LIBS="-ltiff -lm $LIBS"
acinclude.m4:    TIFF_LIBS="-ltiff"
acinclude.m4:    LIBS="-L${prefix}/lib $LIBS"
acinclude.m4:      TIFF_LIBS="-L${prefix}/lib -ltiff"
acinclude.m4:# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
acinclude.m4:dnl FIND_JPEG[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]
acinclude.m4:dnl ------------------------------------------------
acinclude.m4:  AS_HELP_STRING([--without-jpeg], [build without libjpeg (default: test)]))
acinclude.m4:# Treat --without-jpeg like --without-jpeg-includes --without-jpeg-libraries.
acinclude.m4:AC_ARG_WITH(jpeg-includes,
acinclude.m4:  AS_HELP_STRING([--with-jpeg-includes=DIR], [libjpeg includes are in DIR]),
acinclude.m4:  JPEG_INCLUDES="-I$withval")
acinclude.m4:AC_ARG_WITH(jpeg-libraries,
acinclude.m4:  AS_HELP_STRING([--with-jpeg-libraries=DIR], [libjpeg libraries are in DIR]),
acinclude.m4:  JPEG_LIBS="-L$withval -ljpeg")
acinclude.m4:    INCLUDES="-I${prefix}/include $INCLUDES"
acinclude.m4:      JPEG_INCLUDES="-I${prefix}/include"
acinclude.m4:  LIBS="-ljpeg $LIBS"
acinclude.m4:    JPEG_LIBS="-ljpeg"
acinclude.m4:    LIBS="-L${prefix}/lib $LIBS"
acinclude.m4:      JPEG_LIBS="-L${prefix}/lib -ljpeg"
acinclude.m4:# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
acinclude.m4:dnl FIND_PNG[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]
acinclude.m4:dnl ------------------------------------------------
acinclude.m4:  AS_HELP_STRING([--without-png], [build without libpng (default: test)]))
acinclude.m4:# Treat --without-png like --without-png-includes --without-png-libraries.
acinclude.m4:AC_ARG_WITH(png-includes,
acinclude.m4:  AS_HELP_STRING([--with-png-includes=DIR], [libpng includes are in DIR]),
acinclude.m4:  PNG_INCLUDES="-I$withval")
acinclude.m4:AC_ARG_WITH(png-libraries,
acinclude.m4:  AS_HELP_STRING([--with-png-libraries=DIR], [libpng libraries are in DIR]),
acinclude.m4:  PNG_LIBS="-L$withval -lpng")
acinclude.m4:    INCLUDES="-I${prefix}/include $INCLUDES"
acinclude.m4:      PNG_INCLUDES="-I${prefix}/include"
acinclude.m4:  LIBS="-lpng $LIBS"
acinclude.m4:    PNG_LIBS="-lpng"
acinclude.m4:    LIBS="-L${prefix}/lib $LIBS"
acinclude.m4:      PNG_LIBS="-L${prefix}/lib -lpng"
acinclude.m4:# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
acinclude.m4:dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
acinclude.m4:py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
acinclude.m4:py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
acinclude.m4:PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
acinclude.m4:  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
aclocal.m4:# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
aclocal.m4:# Copyright (C) 1995-2002 Free Software Foundation, Inc.
aclocal.m4:# Copyright (C) 2001-2003,2004 Red Hat, Inc.
aclocal.m4:# We need this here as well, since someone might use autoconf-2.5x
aclocal.m4:#--------------------
aclocal.m4:#----------------------------
aclocal.m4:dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
aclocal.m4:dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
aclocal.m4:    test -z "$ac_dir" && ac_dir=.
aclocal.m4:    if test -f $ac_dir/$ac_word; then
aclocal.m4:ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
aclocal.m4:if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
aclocal.m4:#-----------------
aclocal.m4:	  AC_MSG_CHECKING([if -liconv is needed to use gettext])
aclocal.m4:			libintl_extra_libs=-liconv],
aclocal.m4:			:,-liconv)],
aclocal.m4:		:,-liconv)
aclocal.m4:          LIBS="$LIBS -lintl $libintl_extra_libs"
aclocal.m4:        INTLLIBS="-lintl $libintl_extra_libs"
aclocal.m4:	  [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
aclocal.m4:	  AC_MSG_CHECKING([if msgfmt accepts -c])
aclocal.m4:	  GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[
aclocal.m4:"Content-Type: text/plain; charset=UTF-8\n"
aclocal.m4:"Project-Id-Version: test 1.0\n"
aclocal.m4:"PO-Revision-Date: 2007-02-15 12:01+0100\n"
aclocal.m4:"Last-Translator: test <foo@bar.xx>\n"
aclocal.m4:"Language-Team: C <LL@li.org>\n"
aclocal.m4:"MIME-Version: 1.0\n"
aclocal.m4:"Content-Transfer-Encoding: 8bit\n"
aclocal.m4:], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
aclocal.m4:	    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
aclocal.m4:	    *-*-solaris*)
aclocal.m4:      if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
aclocal.m4:        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
aclocal.m4:# -------------------
aclocal.m4:# glib-gettextize.
aclocal.m4:         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
aclocal.m4:     if test -n "$LINGUAS"; then
aclocal.m4:   if test -n "$ac_aux_dir"; then
aclocal.m4:   if test -z "$MKINSTALLDIRS"; then
aclocal.m4:   test -d po || mkdir po
aclocal.m4:   rm -f po/POTFILES
aclocal.m4:   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
aclocal.m4:# -------------------------------
aclocal.m4:# GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL])
aclocal.m4:# Create a temporary file with TEST-FILE as its contents and pass the
aclocal.m4:# file name to PROGRAM.  Perform ACTION-IF-PASS if PROGRAM exits with
aclocal.m4:# 0 and perform ACTION-IF-FAIL for any other exit status.
aclocal.m4:dnl -*- mode: autoconf -*-
aclocal.m4:dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
aclocal.m4:  AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
aclocal.m4:  AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
aclocal.m4:  AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
aclocal.m4:  AC_ARG_WITH([html-dir],
aclocal.m4:    AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
aclocal.m4:    [with_html_dir='${datadir}/gtk-doc/html'])
aclocal.m4:  AC_ARG_ENABLE([gtk-doc],
aclocal.m4:    AS_HELP_STRING([--enable-gtk-doc],
aclocal.m4:                   [use gtk-doc to build documentation [[default=no]]]),,
aclocal.m4:      [PKG_CHECK_EXISTS([gtk-doc],,
aclocal.m4:                        AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
aclocal.m4:      [PKG_CHECK_EXISTS([gtk-doc >= $1],,
aclocal.m4:                        AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
aclocal.m4:  AC_MSG_CHECKING([whether to build gtk-doc documentation])
aclocal.m4:  AC_ARG_ENABLE([gtk-doc-html],
aclocal.m4:    AS_HELP_STRING([--enable-gtk-doc-html],
aclocal.m4:    AC_ARG_ENABLE([gtk-doc-pdf],
aclocal.m4:      AS_HELP_STRING([--enable-gtk-doc-pdf],
aclocal.m4:  if test -z "$GTKDOC_MKPDF"; then
aclocal.m4:  AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
aclocal.m4:  AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
aclocal.m4:# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
aclocal.m4:# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
aclocal.m4:# ------------------
aclocal.m4:[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
aclocal.m4:# ------------------
aclocal.m4:# ------------------
aclocal.m4:m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# -------------------
aclocal.m4:# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
aclocal.m4:    \-*) ;;
aclocal.m4:cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
aclocal.m4:# ----------------------
aclocal.m4:[: ${CP="cp -f"}
aclocal.m4:: ${MV="mv -f"}
aclocal.m4:: ${RM="rm -f"}
aclocal.m4:# ---------
aclocal.m4:test -z "$LN_S" && LN_S="ln -s"
aclocal.m4:if test -n "\${ZSH_VERSION+set}" ; then
aclocal.m4:if test -n "${ZSH_VERSION+set}" ; then
aclocal.m4:# metacharacters that are still active within double-quoted strings.
aclocal.m4:test -z "$CC" && CC=cc
aclocal.m4:test -z "$LTCC" && LTCC=$CC
aclocal.m4:test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
aclocal.m4:test -z "$LD" && LD=ld
aclocal.m4:test -z "$ac_objext" && ac_objext=o
aclocal.m4:test -z "$MAGIC_CMD" && MAGIC_CMD=file
aclocal.m4:# ---------------
aclocal.m4:# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
aclocal.m4:# ----------------------------------------
aclocal.m4:# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
aclocal.m4:# ------------------------------
aclocal.m4:# -----------------------------------------------------
aclocal.m4:# -----------------------------
aclocal.m4:# full-stop to the whole comment if one is not present already.
aclocal.m4:# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
aclocal.m4:# -------------------------------------------------------------------
aclocal.m4:# --------------------------------------------------------
aclocal.m4:# ------------------------------------------------
aclocal.m4:# ---------------------------------------------------------
aclocal.m4:# --------------------------------------------------
aclocal.m4:# ---------------------------------------------------
aclocal.m4:# ---------------------------------------------------
aclocal.m4:# ------------------------------------------------
aclocal.m4:# ------------------------------------
aclocal.m4:[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
aclocal.m4:# ------------------------------
aclocal.m4:#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
aclocal.m4:# ----------------
aclocal.m4:# -----------------------------------
aclocal.m4:# -----------------------
aclocal.m4:# Produce commented declarations of non-tagged libtool config variables
aclocal.m4:# -------------------------
aclocal.m4:# ------------------------------
aclocal.m4:# -------------------
aclocal.m4:# The HP-UX ksh and POSIX shell print the target directory to stdout
aclocal.m4:      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
aclocal.m4:# Double-quote double-evaled strings.
aclocal.m4:      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
aclocal.m4:# Fix-up fallback echo if it was mangled by the above quoting rules.
aclocal.m4:*'\\\[$]0 --fallback-echo"')dnl "
aclocal.m4:  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
aclocal.m4:# ---------
aclocal.m4:SHELL=\${CONFIG_SHELL-$SHELL}
aclocal.m4:  -h, --help      print this help, then exit
aclocal.m4:  -V, --version   print version number, then exit
aclocal.m4:  -q, --quiet     do not print progress messages
aclocal.m4:  -d, --debug     don't remove temporary files
aclocal.m4:Report bugs to <bug-libtool@gnu.org>."
aclocal.m4:    --version | --v* | -V )
aclocal.m4:    --help | --h* | -h )
aclocal.m4:    --debug | --d* | -d )
aclocal.m4:    --quiet | --q* | --silent | --s* | -q )
aclocal.m4:    -*) AC_MSG_ERROR([unrecognized option: $[1]
aclocal.m4:Try \`$[0] --help' for more information.]) ;;
aclocal.m4:Try \`$[0] --help' for more information.]) ;;
aclocal.m4:    lt_config_lt_args="$lt_config_lt_args --quiet"
aclocal.m4:# ---------------
aclocal.m4:# If TAG is the built-in tag, create an initial libtool script with a
aclocal.m4:    if test -n "${ZSH_VERSION+set}" ; then
aclocal.m4:# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
aclocal.m4:# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
aclocal.m4:  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
aclocal.m4:    || (rm -f "$cfgfile"; exit 1)
aclocal.m4:  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
aclocal.m4:    || (rm -f "$cfgfile"; exit 1)
aclocal.m4:  mv -f "$cfgfile" "$ofile" ||
aclocal.m4:    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
aclocal.m4:# ---------------------
aclocal.m4:# --tag option, using:
aclocal.m4:#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
aclocal.m4:# C support is built-in for now
aclocal.m4:# -------------
aclocal.m4:# ------------------
aclocal.m4:# -----------------------
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# ----------------
aclocal.m4:LTCC=${LTCC-"$CC"}
aclocal.m4:LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
aclocal.m4:# ------------------------
aclocal.m4:# ----------------------
aclocal.m4:$RM -r conftest*
aclocal.m4:# -------------------------
aclocal.m4:      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
aclocal.m4:      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
aclocal.m4:    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
aclocal.m4:      if test -z "${LT_MULTI_MODULE}"; then
aclocal.m4:	# By default we will add the -single_module flag. You can override
aclocal.m4:	# non-empty at configure time, or by adding -multi_module to the
aclocal.m4:	rm -rf libconftest.dylib*
aclocal.m4:	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
aclocal.m4:-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
aclocal.m4:	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
aclocal.m4:	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
aclocal.m4:	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
aclocal.m4:	rm -rf libconftest.dylib*
aclocal.m4:	rm -f conftest.*
aclocal.m4:    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
aclocal.m4:      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
aclocal.m4:      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
aclocal.m4:      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
aclocal.m4:      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
aclocal.m4:	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
aclocal.m4:	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
aclocal.m4:	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
aclocal.m4:	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
aclocal.m4:      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
aclocal.m4:      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
aclocal.m4:# --------------------------
aclocal.m4:    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
aclocal.m4:    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
aclocal.m4:    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
aclocal.m4:    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
aclocal.m4:      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
aclocal.m4:# -----------------------
aclocal.m4:aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
aclocal.m4:# Check for a 64-bit object if we didn't find anything.
aclocal.m4:if test -z "$aix_libpath"; then
aclocal.m4:  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
aclocal.m4:if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
aclocal.m4:# -------------------
aclocal.m4:# -----------------------
aclocal.m4:SHELL=${CONFIG_SHELL-/bin/sh}
aclocal.m4:X*--fallback-echo)
aclocal.m4:ECHO=${lt_ECHO-echo}
aclocal.m4:if test "X[$]1" = X--no-reexec; then
aclocal.m4:  # Discard the --no-reexec flag, and continue.
aclocal.m4:elif test "X[$]1" = X--fallback-echo; then
aclocal.m4:  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
aclocal.m4:if test "X[$]1" = X--fallback-echo; then
aclocal.m4:# The HP-UX ksh and POSIX shell print the target directory to stdout
aclocal.m4:if test -z "$lt_ECHO"; then
aclocal.m4:      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
aclocal.m4:      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
aclocal.m4:         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
aclocal.m4:        # This shell has a builtin print -r that does the trick.
aclocal.m4:        ECHO='print -r'
aclocal.m4:      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
aclocal.m4:        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
aclocal.m4:        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
aclocal.m4:        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
aclocal.m4:	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
aclocal.m4:	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
aclocal.m4:        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
aclocal.m4:	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
aclocal.m4:	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
aclocal.m4:	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
aclocal.m4:if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
aclocal.m4:   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
aclocal.m4:# ---------------
aclocal.m4:[AC_ARG_ENABLE([libtool-lock],
aclocal.m4:  [AS_HELP_STRING([--disable-libtool-lock],
aclocal.m4:ia64-*-hpux*)
aclocal.m4:      *ELF-32*)
aclocal.m4:      *ELF-64*)
aclocal.m4:  rm -rf conftest*
aclocal.m4:*-*-irix6*)
aclocal.m4:	*32-bit*)
aclocal.m4:	  LD="${LD-ld} -melf32bsmip"
aclocal.m4:	  LD="${LD-ld} -melf32bmipn32"
aclocal.m4:	*64-bit*)
aclocal.m4:	  LD="${LD-ld} -melf64bmip"
aclocal.m4:	*32-bit*)
aclocal.m4:	  LD="${LD-ld} -32"
aclocal.m4:	  LD="${LD-ld} -n32"
aclocal.m4:	*64-bit*)
aclocal.m4:	  LD="${LD-ld} -64"
aclocal.m4:  rm -rf conftest*
aclocal.m4:x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
aclocal.m4:s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
aclocal.m4:      *32-bit*)
aclocal.m4:	  x86_64-*kfreebsd*-gnu)
aclocal.m4:	    LD="${LD-ld} -m elf_i386_fbsd"
aclocal.m4:	  x86_64-*linux*)
aclocal.m4:	    LD="${LD-ld} -m elf_i386"
aclocal.m4:	  ppc64-*linux*|powerpc64-*linux*)
aclocal.m4:	    LD="${LD-ld} -m elf32ppclinux"
aclocal.m4:	  s390x-*linux*)
aclocal.m4:	    LD="${LD-ld} -m elf_s390"
aclocal.m4:	  sparc64-*linux*)
aclocal.m4:	    LD="${LD-ld} -m elf32_sparc"
aclocal.m4:      *64-bit*)
aclocal.m4:	  x86_64-*kfreebsd*-gnu)
aclocal.m4:	    LD="${LD-ld} -m elf_x86_64_fbsd"
aclocal.m4:	  x86_64-*linux*)
aclocal.m4:	    LD="${LD-ld} -m elf_x86_64"
aclocal.m4:	  ppc*-*linux*|powerpc*-*linux*)
aclocal.m4:	    LD="${LD-ld} -m elf64ppc"
aclocal.m4:	  s390*-*linux*|s390*-*tpf*)
aclocal.m4:	    LD="${LD-ld} -m elf64_s390"
aclocal.m4:	  sparc*-*linux*)
aclocal.m4:	    LD="${LD-ld} -m elf64_sparc"
aclocal.m4:  rm -rf conftest*
aclocal.m4:*-*-sco3.2v5*)
aclocal.m4:  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
aclocal.m4:  CFLAGS="$CFLAGS -belf"
aclocal.m4:  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
aclocal.m4:    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
aclocal.m4:sparc*-*solaris*)
aclocal.m4:    *64-bit*)
aclocal.m4:      yes*) LD="${LD-ld} -m elf64_sparc" ;;
aclocal.m4:	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
aclocal.m4:	  LD="${LD-ld} -64"
aclocal.m4:  rm -rf conftest*
aclocal.m4:# -------------------
aclocal.m4:test -z "$AR" && AR=ar
aclocal.m4:test -z "$AR_FLAGS" && AR_FLAGS=cru
aclocal.m4:test -z "$STRIP" && STRIP=:
aclocal.m4:test -z "$RANLIB" && RANLIB=:
aclocal.m4:    [Commands used to install an old-style archive])
aclocal.m4:# Determine commands to create old-style static archives.
aclocal.m4:if test -n "$RANLIB"; then
aclocal.m4:    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
aclocal.m4:    [Commands used to build an old-style archive])
aclocal.m4:# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
aclocal.m4:#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
aclocal.m4:# ----------------------------------------------------------------
aclocal.m4:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
aclocal.m4:   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
aclocal.m4:   -e 's:$: $lt_compiler_flag:'`
aclocal.m4:   if (exit $ac_status) && test -s "$ac_outfile"; then
aclocal.m4:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
aclocal.m4:     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
aclocal.m4:#                  [ACTION-SUCCESS], [ACTION-FAILURE])
aclocal.m4:# ----------------------------------------------------
aclocal.m4:   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
aclocal.m4:     if test -s conftest.err; then
aclocal.m4:       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
aclocal.m4:   $RM -r conftest*
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:#---------------
aclocal.m4:    # Libtool will interpret -1 as no limit whatsoever
aclocal.m4:    lt_cv_sys_max_cmd_len=-1;
aclocal.m4:    # On Win9x/ME, this test blows up -- it succeeds, but takes
aclocal.m4:    # Worse, since 9x/ME are not pre-emptively multitasking,
aclocal.m4:    if test -x /sbin/sysctl; then
aclocal.m4:      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
aclocal.m4:    elif test -x /usr/sbin/sysctl; then
aclocal.m4:      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
aclocal.m4:    if test -x /sbin/sysconfig; then
aclocal.m4:      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
aclocal.m4:        *1*) lt_cv_sys_max_cmd_len=-1 ;;
aclocal.m4:    if test -n "$kargmax"; then
aclocal.m4:    if test -n "$lt_cv_sys_max_cmd_len"; then
aclocal.m4:      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
aclocal.m4:      # If test is not a shell built-in, we'll probably end up computing a
aclocal.m4:      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
aclocal.m4:if test -n $lt_cv_sys_max_cmd_len ; then
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# ----------------
aclocal.m4:# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
aclocal.m4:#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
aclocal.m4:# ----------------------------------------------------------------
aclocal.m4:  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
aclocal.m4:rm -fr conftest*
aclocal.m4:# ------------------
aclocal.m4:		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
aclocal.m4:	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
aclocal.m4:		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
aclocal.m4:		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
aclocal.m4:		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
aclocal.m4:    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# ---------------------------
aclocal.m4:# Check to see if options -c and -o are simultaneously supported by compiler.
aclocal.m4:AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
aclocal.m4:   $RM -r conftest 2>/dev/null
aclocal.m4:   lt_compiler_flag="-o out/conftest2.$ac_objext"
aclocal.m4:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
aclocal.m4:   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
aclocal.m4:   -e 's:$: $lt_compiler_flag:'`
aclocal.m4:   if (exit $ac_status) && test -s out/conftest2.$ac_objext
aclocal.m4:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
aclocal.m4:     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
aclocal.m4:   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
aclocal.m4:   $RM -r conftest
aclocal.m4:	[Does compiler simultaneously support -c and -o options?])
aclocal.m4:# ----------------------------------
aclocal.m4:    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
aclocal.m4:# ----------------
aclocal.m4:[rm -f .libs 2>/dev/null
aclocal.m4:if test -d .libs; then
aclocal.m4:  # MS-DOS does not allow filenames that begin with a dot.
aclocal.m4:  [Define to the sub-directory in which libtool stores uninstalled libraries.])
aclocal.m4:# --------------------------------------
aclocal.m4:if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
aclocal.m4:   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
aclocal.m4:  # We can hardcode non-existent directories.
aclocal.m4:     # when we should be linking with a yet-to-be-installed one
aclocal.m4:# ----------------
aclocal.m4:if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
aclocal.m4:  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
aclocal.m4:  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
aclocal.m4:# FIXME - insert some real tests, host_os isn't really good enough
aclocal.m4:    if test -n "$STRIP" ; then
aclocal.m4:      striplib="$STRIP -x"
aclocal.m4:      old_striplib="$STRIP -S"
aclocal.m4:# -----------------------------
aclocal.m4:  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
aclocal.m4:    # otherwise default to the standard path separator (i.e. ":") - it is
aclocal.m4:    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
aclocal.m4:    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
aclocal.m4:  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
aclocal.m4:    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
aclocal.m4:      test -d "$lt_sys_path" && \
aclocal.m4:  for (lt_i = NF; lt_i > 0; lt_i--) {
aclocal.m4:          lt_count--;
aclocal.m4:# when you set need_version to no, make sure it does not cause -set_version
aclocal.m4:aix[[4-9]]*)
aclocal.m4:	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
aclocal.m4:    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
aclocal.m4:    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
aclocal.m4:  # libtool to hard-code these into programs
aclocal.m4:      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
aclocal.m4:      test -d \$dldir || mkdir -p \$dldir~
aclocal.m4:      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
aclocal.m4:    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
aclocal.m4:      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
aclocal.m4:      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
aclocal.m4:      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
aclocal.m4:      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
aclocal.m4:        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
aclocal.m4:        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
aclocal.m4:      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
aclocal.m4:    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
aclocal.m4:  if test -x /usr/bin/objformat; then
aclocal.m4:  version_type=freebsd-$objformat
aclocal.m4:    freebsd-elf*)
aclocal.m4:    freebsd-*)
aclocal.m4:  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
aclocal.m4:  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
aclocal.m4:  # HP-UX runs *really* slowly unless shared libraries are mode 555.
aclocal.m4:interix[[3-9]]*)
aclocal.m4:    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
aclocal.m4:      libsuff= shlibsuff= libmagic=32-bit;;
aclocal.m4:    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
aclocal.m4:    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
aclocal.m4:      libsuff=64 shlibsuff=64 libmagic=64-bit;;
aclocal.m4:    *) libsuff= shlibsuff= libmagic=never-match;;
aclocal.m4:linux* | k*bsd*-gnu | kopensolaris*-gnu)
aclocal.m4:  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
aclocal.m4:    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
aclocal.m4:  if test -f /etc/ld.so.conf; then
aclocal.m4:    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
aclocal.m4:  # most powerpc-linux boxes support dynamic linking these days and
aclocal.m4:  # people can always --disable-shared, the test was removed, and we
aclocal.m4:netbsdelf*-gnu)
aclocal.m4:  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
aclocal.m4:    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
aclocal.m4:  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
aclocal.m4:  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
aclocal.m4:  if test -d /usr/nec ;then
aclocal.m4:  version_type=freebsd-elf
aclocal.m4:  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
aclocal.m4:    [Is shlibpath searched before the hard-coded library search path?])
aclocal.m4:    The last name is the one that the linker finds with -lNAME]])
aclocal.m4:    [Compile-time system search path for libraries])
aclocal.m4:    [Run-time system search path for libraries])
aclocal.m4:# --------------------------
aclocal.m4:dnl $ac_dummy forces splitting on constant user-supplied paths.
aclocal.m4:    test -z "$ac_dir" && ac_dir=.
aclocal.m4:    if test -f $ac_dir/$1; then
aclocal.m4:      if test -n "$file_magic_test_file"; then
aclocal.m4:*** bug-libtool@gnu.org
aclocal.m4:if test -n "$MAGIC_CMD"; then
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# --------------
aclocal.m4:if test -z "$lt_cv_path_MAGIC_CMD"; then
aclocal.m4:  if test -n "$ac_tool_prefix"; then
aclocal.m4:# ----------
aclocal.m4:# find the pathname to the GNU or non-GNU linker
aclocal.m4:AC_ARG_WITH([gnu-ld],
aclocal.m4:    [AS_HELP_STRING([--with-gnu-ld],
aclocal.m4:  # Check if gcc -print-prog-name=ld gives a path.
aclocal.m4:  *-*-mingw*)
aclocal.m4:    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
aclocal.m4:    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
aclocal.m4:      test -z "$LD" && LD="$ac_prog"
aclocal.m4:  AC_MSG_CHECKING([for non-GNU ld])
aclocal.m4:[if test -z "$LD"; then
aclocal.m4:    test -z "$ac_dir" && ac_dir=.
aclocal.m4:    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
aclocal.m4:      # Check to see if the program is GNU ld.  I'd rather use --version,
aclocal.m4:      # but apparently some variants of GNU ld only accept -v.
aclocal.m4:      # Break only if it was the GNU/non-GNU ld that we prefer.
aclocal.m4:      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
aclocal.m4:if test -n "$LD"; then
aclocal.m4:test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:#- --------------
aclocal.m4:[# I'd rather use --version here, but apparently some GNU lds only accept -v.
aclocal.m4:case `$LD -v 2>&1 </dev/null` in
aclocal.m4:# --------------
aclocal.m4:#   -- PORTME Some linkers may need a different reload flag.
aclocal.m4:  [lt_cv_ld_reload_flag='-r'])
aclocal.m4:reload_cmds='$LD$reload_flag -o $output$reload_objs'
aclocal.m4:      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
aclocal.m4:      reload_cmds='$LD$reload_flag -o $output$reload_objs'
aclocal.m4:# ----------------------
aclocal.m4:#  -- PORTME fill in with the dynamic library characteristics
aclocal.m4:# 'none' -- dependencies not supported.
aclocal.m4:# `unknown' -- same as none, but documents that we really don't know.
aclocal.m4:# 'pass_all' -- all dependencies passed with no checks.
aclocal.m4:# 'test_compile' -- check by making test program.
aclocal.m4:# 'file_magic [[regex]]' -- check by looking for files in library path
aclocal.m4:aix[[4-9]]*)
aclocal.m4:  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
aclocal.m4:  lt_cv_file_magic_cmd='/usr/bin/file -L'
aclocal.m4:  # unless we find 'file', for example because we are cross-compiling.
aclocal.m4:    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
aclocal.m4:    lt_cv_file_magic_cmd='$OBJDUMP -f'
aclocal.m4:  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
aclocal.m4:  lt_cv_file_magic_cmd='$OBJDUMP -f'
aclocal.m4:  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
aclocal.m4:      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
aclocal.m4:    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
aclocal.m4:    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
aclocal.m4:    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
aclocal.m4:interix[[3-9]]*)
aclocal.m4:  *-32|*"-32 ") libmagic=32-bit;;
aclocal.m4:  *-n32|*"-n32 ") libmagic=N32;;
aclocal.m4:  *-64|*"-64 ") libmagic=64-bit;;
aclocal.m4:  *) libmagic=never-match;;
aclocal.m4:linux* | k*bsd*-gnu | kopensolaris*-gnu)
aclocal.m4:netbsd* | netbsdelf*-gnu)
aclocal.m4:  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
aclocal.m4:    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
aclocal.m4:  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
aclocal.m4:  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
aclocal.m4:    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
aclocal.m4:    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
aclocal.m4:    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
aclocal.m4:    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
aclocal.m4:    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
aclocal.m4:test -z "$deplibs_check_method" && deplibs_check_method=unknown
aclocal.m4:# ----------
aclocal.m4:# find the pathname to a BSD- or MS-compatible name lister
aclocal.m4:AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
aclocal.m4:[if test -n "$NM"; then
aclocal.m4:  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
aclocal.m4:      test -z "$ac_dir" && ac_dir=.
aclocal.m4:      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
aclocal.m4:	# Check to see if the nm accepts a BSD-compat flag.
aclocal.m4:	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
aclocal.m4:	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
aclocal.m4:	  lt_cv_path_NM="$tmp_nm -B"
aclocal.m4:	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
aclocal.m4:	    lt_cv_path_NM="$tmp_nm -p"
aclocal.m4:  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
aclocal.m4:test -z "$NM" && NM=nm
aclocal.m4:_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
aclocal.m4:  rm -f conftest*])
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# --------
aclocal.m4:*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
aclocal.m4:*-ncr-sysv4.3*)
aclocal.m4:  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
aclocal.m4:  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
aclocal.m4:  AC_CHECK_LIB(m, cos, LIBM="-lm")
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# -------------------------------
aclocal.m4:  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
aclocal.m4:  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
aclocal.m4:    [-fno-rtti -fno-exceptions], [],
aclocal.m4:    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
aclocal.m4:# ----------------------
aclocal.m4:sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
aclocal.m4:# Define system-specific variables.
aclocal.m4:case `$NM -V 2>&1` in
aclocal.m4:lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
aclocal.m4:lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
aclocal.m4:lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
aclocal.m4:    # Fake it for dumpbin and say T for any non-static function
aclocal.m4:    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
aclocal.m4:  rm -f conftest*
aclocal.m4:    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
aclocal.m4:	mv -f "$nlist"T "$nlist"
aclocal.m4:	rm -f "$nlist"T
aclocal.m4:	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
aclocal.m4:	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
aclocal.m4:	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
aclocal.m4:  rm -rf conftest* conftst*
aclocal.m4:if test -z "$lt_cv_sys_global_symbol_pipe"; then
aclocal.m4:if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
aclocal.m4:# ---------------------------
aclocal.m4:    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
aclocal.m4:            # adding the `-m68020' flag to GCC prevents building anything better,
aclocal.m4:            # like `-m68040'.
aclocal.m4:            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
aclocal.m4:      # Although the cygwin gcc ignores -fPIC, still need this for old-style
aclocal.m4:      # (--disable-auto-import) libraries
aclocal.m4:	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
aclocal.m4:    interix[[3-9]]*)
aclocal.m4:      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
aclocal.m4:      if test -d /usr/nec; then
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
aclocal.m4:      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
aclocal.m4:      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
aclocal.m4:      # QNX uses GNU C++, but need to define -shared option too, otherwise
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
aclocal.m4:      aix[[4-9]]*)
aclocal.m4:	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
aclocal.m4:	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
aclocal.m4:	    # CC pic flag -KPIC is the default.
aclocal.m4:      linux* | k*bsd*-gnu | kopensolaris*-gnu)
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
aclocal.m4:	    # old Intel C++ for x86_64 which still supported -KPIC.
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
aclocal.m4:	    # ICC 10 doesn't accept -KPIC any more.
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
aclocal.m4:	    case `$CC -V 2>&1 | sed 5q` in
aclocal.m4:	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
aclocal.m4:      netbsd* | netbsdelf*-gnu)
aclocal.m4:        # QNX uses GNU C++, but need to define -shared option too, otherwise
aclocal.m4:        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:	    # NonStop-UX NCC 3.20
aclocal.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
aclocal.m4:            # adding the `-m68020' flag to GCC prevents building anything better,
aclocal.m4:            # like `-m68040'.
aclocal.m4:            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
aclocal.m4:      # Although the cygwin gcc ignores -fPIC, still need this for old-style
aclocal.m4:      # (--disable-auto-import) libraries
aclocal.m4:	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
aclocal.m4:      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
aclocal.m4:      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
aclocal.m4:    interix[[3-9]]*)
aclocal.m4:      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
aclocal.m4:      # QNX uses GNU C++, but need to define -shared option too, otherwise
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
aclocal.m4:      if test -d /usr/nec; then
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
aclocal.m4:	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
aclocal.m4:      # not for PA HP-UX.
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:      # PIC (with -KPIC) is the default.
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
aclocal.m4:    linux* | k*bsd*-gnu | kopensolaris*-gnu)
aclocal.m4:      # old Intel for x86_64 which still supported -KPIC.
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
aclocal.m4:      # ICC 10 doesn't accept -KPIC any more.
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
aclocal.m4:	case `$CC -V 2>&1 | sed 5q` in
aclocal.m4:	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:      # QNX uses GNU C++, but need to define -shared option too, otherwise
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:      if test -d /usr/nec ;then
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
aclocal.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
aclocal.m4:  # For platforms which do not support PIC, -DPIC is meaningless:
aclocal.m4:    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
aclocal.m4:if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
aclocal.m4:    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
aclocal.m4:# ----------------------------
aclocal.m4:  aix[[4-9]]*)
aclocal.m4:    # If we're using GNU nm, then we don't want the "-C" option.
aclocal.m4:    # -C means demangle to AIX nm, but means don't demangle with GNU nm
aclocal.m4:    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
aclocal.m4:      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
aclocal.m4:      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
aclocal.m4:    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
aclocal.m4:  linux* | k*bsd*-gnu)
aclocal.m4:  # include_expsyms should be a list of space-separated symbols to be *always*
aclocal.m4:  linux* | k*bsd*-gnu)
aclocal.m4:    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
aclocal.m4:    # ancient GNU ld didn't support --whole-archive et. al.
aclocal.m4:    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
aclocal.m4:      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
aclocal.m4:    case `$LD -v 2>&1` in
aclocal.m4:      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
aclocal.m4:    aix[[3-9]]*)
aclocal.m4:*** so that a non-GNU linker is found, and then restart.
aclocal.m4:            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
aclocal.m4:            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
aclocal.m4:	# support --undefined.  This deserves some investigation.  FIXME
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
aclocal.m4:      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
aclocal.m4:        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
aclocal.m4:	# If the export-symbols file already is a .def file (1st line
aclocal.m4:	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
aclocal.m4:    interix[[3-9]]*)
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
aclocal.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
aclocal.m4:      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
aclocal.m4:      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
aclocal.m4:    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
aclocal.m4:      if test "$host_os" = linux-dietlibc; then
aclocal.m4:	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
aclocal.m4:      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
aclocal.m4:	tmp_sharedflag='-shared'
aclocal.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
aclocal.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
aclocal.m4:	  tmp_addflag=' $pic_flag -Mnomain' ;;
aclocal.m4:	  tmp_addflag=' -i_dynamic' ;;
aclocal.m4:	  tmp_addflag=' -i_dynamic -nofor_main' ;;
aclocal.m4:	  tmp_addflag=' -nofor_main' ;;
aclocal.m4:	  tmp_sharedflag='--shared' ;;
aclocal.m4:	  tmp_sharedflag='-qmkshrobj'
aclocal.m4:	case `$CC -V 2>&1 | sed 5q` in
aclocal.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
aclocal.m4:	  tmp_sharedflag='-G' ;;
aclocal.m4:	  tmp_sharedflag='-G' ;;
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
aclocal.m4:	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
aclocal.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
aclocal.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
aclocal.m4:	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
aclocal.m4:	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
aclocal.m4:    netbsd* | netbsdelf*-gnu)
aclocal.m4:      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
aclocal.m4:      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
aclocal.m4:      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
aclocal.m4:      case `$LD -v 2>&1` in
aclocal.m4:        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
aclocal.m4:	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
aclocal.m4:      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
aclocal.m4:      # are no directories specified by -L.
aclocal.m4:      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
aclocal.m4:    aix[[4-9]]*)
aclocal.m4:	exp_sym_flag='-Bexport'
aclocal.m4:	# If we're using GNU nm, then we don't want the "-C" option.
aclocal.m4:	# -C means demangle to AIX nm, but means don't demangle with GNU nm
aclocal.m4:	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
aclocal.m4:	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
aclocal.m4:	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
aclocal.m4:	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
aclocal.m4:	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
aclocal.m4:	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aclocal.m4:	exp_sym_flag='-bexport'
aclocal.m4:	no_entry_flag='-bnoentry'
aclocal.m4:      # or program results in "error TOC overflow" add -mminimal-toc to
aclocal.m4:      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
aclocal.m4:      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
aclocal.m4:	  collect2name=`${CC} -print-prog-name=collect2`
aclocal.m4:	  if test -f "$collect2name" &&
aclocal.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:	shared_flag='-shared'
aclocal.m4:	  shared_flag="$shared_flag "'${wl}-G'
aclocal.m4:	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
aclocal.m4:	# chokes on -Wl,-G. The following line is correct:
aclocal.m4:	  shared_flag='-G'
aclocal.m4:	    shared_flag='${wl}-G'
aclocal.m4:	    shared_flag='${wl}-bM:SRE'
aclocal.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
aclocal.m4:      # It seems that -bexpall does not export symbols beginning with
aclocal.m4:	# Warning - without using the other runtime loading flags (-brtl),
aclocal.m4:	# -berok will link without error, but may produce a broken library.
aclocal.m4:	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
aclocal.m4:        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
aclocal.m4:        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
aclocal.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
aclocal.m4:	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
aclocal.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
aclocal.m4:	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
aclocal.m4:	  # Warning - without using the other run time loading flags,
aclocal.m4:	  # -berok will link without error, but may produce a broken library.
aclocal.m4:	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
aclocal.m4:	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
aclocal.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
aclocal.m4:            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
aclocal.m4:            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
aclocal.m4:      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
aclocal.m4:      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
aclocal.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
aclocal.m4:      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
aclocal.m4:      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
aclocal.m4:	# Try to use the -exported_symbol ld option, if it does not
aclocal.m4:	# work, assume that -exports_file does not work either and
aclocal.m4:        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
aclocal.m4:          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:    netbsd* | netbsdelf*-gnu)
aclocal.m4:      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:      if test -f /usr/libexec/ld.so; then
aclocal.m4:	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
aclocal.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
aclocal.m4:	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
aclocal.m4:	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
aclocal.m4:	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
aclocal.m4:	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
aclocal.m4:      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
aclocal.m4:	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
aclocal.m4:	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:    osf4* | osf5*)	# as osf3* with the addition of -msym flag
aclocal.m4:	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
aclocal.m4:	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
aclocal.m4:	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
aclocal.m4:	# Both c and cxx compiler support -rpath directly
aclocal.m4:	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
aclocal.m4:      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
aclocal.m4:	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
aclocal.m4:	case `$CC -V 2>&1` in
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
aclocal.m4:	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
aclocal.m4:	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
aclocal.m4:      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
aclocal.m4:	# but understands `-z linker_flag'.  GCC discards it without `$wl',
aclocal.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
aclocal.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
aclocal.m4:      if test -d /usr/nec; then
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:      # Note: We can NOT use -z defs as we might desire, because we do not
aclocal.m4:      # link with -lc, and that would cause any symbols used from libc to
aclocal.m4:      # ever link correctly.  If we're not using GNU ld we use -z text
aclocal.m4:      # though, which does catch some bad symbols but isn't as heavy-handed
aclocal.m4:      # as -z defs.
aclocal.m4:      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
aclocal.m4:      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
aclocal.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
aclocal.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
aclocal.m4:  # Assume -lc should be added
aclocal.m4:      # FIXME: we may have to deal with multi-command sequences.
aclocal.m4:      # Test whether the compiler implicitly links with -lc since on some
aclocal.m4:      # systems, -lgcc has to come before -lc. If gcc already passes -lc
aclocal.m4:      # to ld, don't add -lc before -lgcc.
aclocal.m4:      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
aclocal.m4:        compiler_flags=-v
aclocal.m4:        linker_flags=-v
aclocal.m4:        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
aclocal.m4:    [Whether or not to add -lc for building shared libraries])
aclocal.m4:    [Create an old-style archive from a shared archive])
aclocal.m4:    [Create a temporary old-style archive to link instead of a shared archive])
aclocal.m4:    [Whether we need a single "-rpath" flag with a separated argument])
aclocal.m4:    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
aclocal.m4:# ------------------------
aclocal.m4:if test -n "$compiler"; then
aclocal.m4:    if test -n "$RANLIB"; then
aclocal.m4:  aix[[4-9]]*)
aclocal.m4:# ------------
aclocal.m4:if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
aclocal.m4:    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# --------------------------
aclocal.m4:# and will be corrupted by setting them based on a non-working compiler.
aclocal.m4:  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
aclocal.m4:  if test -n "${lt_cv_path_LDCXX+set}"; then
aclocal.m4:  test -z "${LDCXX+set}" || LD=$LDCXX
aclocal.m4:  CC=${CXX-"c++"}
aclocal.m4:  if test -n "$compiler"; then
aclocal.m4:    # We don't want -fno-exception when compiling C++ code, so set the
aclocal.m4:      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
aclocal.m4:        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
aclocal.m4:        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
aclocal.m4:        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
aclocal.m4:        # ancient GNU ld didn't support --whole-archive et. al.
aclocal.m4:        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
aclocal.m4:	  $GREP 'no-whole-archive' > /dev/null; then
aclocal.m4:          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
aclocal.m4:        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
aclocal.m4:      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
aclocal.m4:      aix[[4-9]]*)
aclocal.m4:          exp_sym_flag='-Bexport'
aclocal.m4:          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
aclocal.m4:          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
aclocal.m4:	      *-brtl*)
aclocal.m4:          exp_sym_flag='-bexport'
aclocal.m4:          no_entry_flag='-bnoentry'
aclocal.m4:        # or program results in "error TOC overflow" add -mminimal-toc to
aclocal.m4:        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
aclocal.m4:        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
aclocal.m4:	  collect2name=`${CC} -print-prog-name=collect2`
aclocal.m4:	  if test -f "$collect2name" &&
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:          shared_flag='-shared'
aclocal.m4:	    shared_flag="$shared_flag "'${wl}-G'
aclocal.m4:	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
aclocal.m4:	  # chokes on -Wl,-G. The following line is correct:
aclocal.m4:	  shared_flag='-G'
aclocal.m4:	      shared_flag='${wl}-G'
aclocal.m4:	      shared_flag='${wl}-bM:SRE'
aclocal.m4:        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
aclocal.m4:        # It seems that -bexpall does not export symbols beginning with
aclocal.m4:          # Warning - without using the other runtime loading flags (-brtl),
aclocal.m4:          # -berok will link without error, but may produce a broken library.
aclocal.m4:          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
aclocal.m4:          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
aclocal.m4:          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
aclocal.m4:	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
aclocal.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
aclocal.m4:	    # Warning - without using the other run time loading flags,
aclocal.m4:	    # -berok will link without error, but may produce a broken library.
aclocal.m4:	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
aclocal.m4:	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
aclocal.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
aclocal.m4:	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
aclocal.m4:	  # support --undefined.  This deserves some investigation.  FIXME
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
aclocal.m4:        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
aclocal.m4:          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
aclocal.m4:          # If the export-symbols file already is a .def file (1st line
aclocal.m4:          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
aclocal.m4:      freebsd-elf*)
aclocal.m4:        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
aclocal.m4:            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
aclocal.m4:            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
aclocal.m4:              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
aclocal.m4:	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
aclocal.m4:	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
aclocal.m4:	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
aclocal.m4:	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
aclocal.m4:	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
aclocal.m4:      interix[[3-9]]*)
aclocal.m4:	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
aclocal.m4:	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
aclocal.m4:	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
aclocal.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
aclocal.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
aclocal.m4:	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
aclocal.m4:	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
aclocal.m4:        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:      linux* | k*bsd*-gnu | kopensolaris*-gnu)
aclocal.m4:	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
aclocal.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
aclocal.m4:	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
aclocal.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
aclocal.m4:	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
aclocal.m4:	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
aclocal.m4:	    case `$CC -V 2>&1` in
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
aclocal.m4:		  ia64*) tmp_idyn=' -i_dynamic';;
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
aclocal.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
aclocal.m4:	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
aclocal.m4:	    case `$CC -V` in
aclocal.m4:	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
aclocal.m4:		rm -rf $tpldir~
aclocal.m4:		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
aclocal.m4:		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
aclocal.m4:		rm -rf $tpldir~
aclocal.m4:		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
aclocal.m4:		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
aclocal.m4:		rm -rf $tpldir~
aclocal.m4:		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
aclocal.m4:		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
aclocal.m4:		rm -rf $tpldir~
aclocal.m4:		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
aclocal.m4:		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
aclocal.m4:	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
aclocal.m4:	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
aclocal.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
aclocal.m4:	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
aclocal.m4:	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
aclocal.m4:		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
aclocal.m4:		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
aclocal.m4:	    case `$CC -V 2>&1 | sed 5q` in
aclocal.m4:	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
aclocal.m4:	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
aclocal.m4:	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
aclocal.m4:	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
aclocal.m4:	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
aclocal.m4:	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
aclocal.m4:	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
aclocal.m4:	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
aclocal.m4:        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
aclocal.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
aclocal.m4:	# Workaround some broken pre-1.5 toolchains
aclocal.m4:	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
aclocal.m4:	if test -f /usr/libexec/ld.so; then
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
aclocal.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
aclocal.m4:	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
aclocal.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
aclocal.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
aclocal.m4:	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
aclocal.m4:	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
aclocal.m4:	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
aclocal.m4:	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
aclocal.m4:	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
aclocal.m4:	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
aclocal.m4:	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
aclocal.m4:	          echo "-hidden">> $lib.exp~
aclocal.m4:	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
aclocal.m4:	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
aclocal.m4:	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
aclocal.m4:	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
aclocal.m4:	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
aclocal.m4:	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
aclocal.m4:	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
aclocal.m4:	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
aclocal.m4:	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
aclocal.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
aclocal.m4:	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
aclocal.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
aclocal.m4:	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
aclocal.m4:		# but understands `-z linker_flag'.
aclocal.m4:		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
aclocal.m4:	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
aclocal.m4:	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
aclocal.m4:	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
aclocal.m4:	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
aclocal.m4:	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
aclocal.m4:	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
aclocal.m4:		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
aclocal.m4:	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
aclocal.m4:	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
aclocal.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
aclocal.m4:	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
aclocal.m4:		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
aclocal.m4:	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
aclocal.m4:	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
aclocal.m4:		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
aclocal.m4:		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
aclocal.m4:      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	# Note: We can NOT use -z defs as we might desire, because we do not
aclocal.m4:	# link with -lc, and that would cause any symbols used from libc to
aclocal.m4:	# ever link correctly.  If we're not using GNU ld we use -z text
aclocal.m4:	# though, which does catch some bad symbols but isn't as heavy-handed
aclocal.m4:	# as -z defs.
aclocal.m4:	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
aclocal.m4:	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
aclocal.m4:	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
aclocal.m4:	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
aclocal.m4:	    # NonStop-UX NCC 3.20
aclocal.m4:  fi # test -n "$compiler"
aclocal.m4:# ---------------------------------
aclocal.m4:    -L* | -R* | -l*)
aclocal.m4:       # Some compilers place space between "-{L,R}" and the path.
aclocal.m4:       if test $p = "-L" ||
aclocal.m4:          test $p = "-R"; then
aclocal.m4:	 -L* | -R*)
aclocal.m4:	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
aclocal.m4:	 # The "-l" case would never come before the object being
aclocal.m4:	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
aclocal.m4:	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
aclocal.m4:	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
aclocal.m4:  rm -f a.out a.exe
aclocal.m4:$RM -f confest.$objext
aclocal.m4:interix[[3-9]]*)
aclocal.m4:  case `$CC -V 2>&1 | sed 5q` in
aclocal.m4:    # The more standards-conforming stlport4 library is
aclocal.m4:    # -library=stlport4 depends on it.
aclocal.m4:    *" -library=stlport4 "*)
aclocal.m4:      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
aclocal.m4:    # The more standards-conforming stlport4 library is
aclocal.m4:    # -library=stlport4 depends on it.
aclocal.m4:    *" -library=stlport4 "*)
aclocal.m4:    # Adding this requires a known-good setup of shared libraries for
aclocal.m4:      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
aclocal.m4:*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
aclocal.m4:if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
aclocal.m4: _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
aclocal.m4:# ------------
aclocal.m4:if test -z "$F77" || test "X$F77" = "Xno"; then
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# --------------------------
aclocal.m4:# and will be corrupted by setting them based on a non-working compiler.
aclocal.m4:  CC=${F77-"f77"}
aclocal.m4:  if test -n "$compiler"; then
aclocal.m4:        if test -n "$RANLIB"; then
aclocal.m4:      aix[[4-9]]*)
aclocal.m4:  fi # test -n "$compiler"
aclocal.m4:# -----------
aclocal.m4:if test -z "$FC" || test "X$FC" = "Xno"; then
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# -------------------------
aclocal.m4:ac_ext=${ac_fc_srcext-f}
aclocal.m4:# and will be corrupted by setting them based on a non-working compiler.
aclocal.m4:  CC=${FC-"f95"}
aclocal.m4:  if test -n "$compiler"; then
aclocal.m4:        if test -n "$RANLIB"; then
aclocal.m4:      aix[[4-9]]*)
aclocal.m4:  fi # test -n "$compiler"
aclocal.m4:# --------------------------
aclocal.m4:CC=${GCJ-"gcj"}
aclocal.m4:if test -n "$compiler"; then
aclocal.m4:# -------------------------
aclocal.m4:CC=${RC-"windres"}
aclocal.m4:if test -n "$compiler"; then
aclocal.m4:# -----------
aclocal.m4:      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# ----------
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# --------------
aclocal.m4:test -z "$GREP" && GREP=grep
aclocal.m4:dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
aclocal.m4:# --------------
aclocal.m4:test -z "$OBJDUMP" && OBJDUMP=objdump
aclocal.m4:# ------------
aclocal.m4:# Check for a fully-functional sed program, that truncates
aclocal.m4:test -z "$SED" && SED=sed
aclocal.m4:Xsed="$SED -e 1s/^X//"
aclocal.m4:_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
aclocal.m4:    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
aclocal.m4:  test -z "$as_dir" && as_dir=.
aclocal.m4:  test ! -f $lt_ac_sed && continue
aclocal.m4:  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
aclocal.m4:    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
aclocal.m4:    cmp -s conftest.out conftest.nl || break
aclocal.m4:    test $lt_ac_count -gt 10 && break
aclocal.m4:    if test $lt_ac_count -gt $lt_ac_max; then
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# ------------------------
aclocal.m4:    && eval 'test $(( 1 + 1 )) -eq 2 \
aclocal.m4:    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
aclocal.m4:# ---------------------
aclocal.m4:# func_xform libobj-or-source
aclocal.m4:# func_arith arithmetic-term...
aclocal.m4:  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
aclocal.m4:  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
aclocal.m4:           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
aclocal.m4:           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
aclocal.m4:my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
aclocal.m4:my_sed_long_arg='1s/^-[[^=]]*=//'
aclocal.m4:  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
aclocal.m4:  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
aclocal.m4:  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
aclocal.m4:# func_xform libobj-or-source
aclocal.m4:  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
aclocal.m4:# func_arith arithmetic-term...
aclocal.m4:# Helper functions for option handling.                    -*- Autoconf -*-
aclocal.m4:# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
aclocal.m4:# ------------------------------------------
aclocal.m4:[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
aclocal.m4:# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
aclocal.m4:# ---------------------------------------
aclocal.m4:# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
aclocal.m4:# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
aclocal.m4:# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
aclocal.m4:# ------------------------------------------------------------
aclocal.m4:# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
aclocal.m4:# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
aclocal.m4:# -------------------------------------------------------
aclocal.m4:# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
aclocal.m4:# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
aclocal.m4:# ----------------------------------------
aclocal.m4:# OPTION-LIST is a space-separated list of Libtool options associated
aclocal.m4:# with MACRO-NAME.  If any OPTION has a matching handler declared with
aclocal.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
aclocal.m4:  dnl `shared' nor `disable-shared' was passed, we enable building of shared
aclocal.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
aclocal.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
aclocal.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
aclocal.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
aclocal.m4:# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
aclocal.m4:# -----------------------------------------
aclocal.m4:[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
aclocal.m4:# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
aclocal.m4:# -----------------------------------------------
aclocal.m4:# ------
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# win32-dll
aclocal.m4:# ---------
aclocal.m4:LT_OPTION_DEFINE([LT_INIT], [win32-dll],
aclocal.m4:*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
aclocal.m4:test -z "$AS" && AS=as
aclocal.m4:test -z "$DLLTOOL" && DLLTOOL=dlltool
aclocal.m4:test -z "$OBJDUMP" && OBJDUMP=objdump
aclocal.m4:])# win32-dll
aclocal.m4:_LT_SET_OPTION([LT_INIT], [win32-dll])
aclocal.m4:put the `win32-dll' option into LT_INIT's first parameter.])
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# ----------------------------
aclocal.m4:# implement the --enable-shared flag, and supports the `shared' and
aclocal.m4:# `disable-shared' LT_INIT options.
aclocal.m4:    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
aclocal.m4:    [p=${PACKAGE-default}
aclocal.m4:LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
aclocal.m4:[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
aclocal.m4:[_LT_SET_OPTION([LT_INIT], [disable-shared])
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# ----------------------------
aclocal.m4:# implement the --enable-static flag, and support the `static' and
aclocal.m4:# `disable-static' LT_INIT options.
aclocal.m4:    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
aclocal.m4:    [p=${PACKAGE-default}
aclocal.m4:LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
aclocal.m4:[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
aclocal.m4:[_LT_SET_OPTION([LT_INIT], [disable-static])
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# ----------------------------------
aclocal.m4:# implement the --enable-fast-install flag, and support the `fast-install'
aclocal.m4:# and `disable-fast-install' LT_INIT options.
aclocal.m4:AC_ARG_ENABLE([fast-install],
aclocal.m4:    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
aclocal.m4:    [p=${PACKAGE-default}
aclocal.m4:LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
aclocal.m4:LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
aclocal.m4:[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
aclocal.m4:the `fast-install' option into LT_INIT's first parameter.])
aclocal.m4:[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
aclocal.m4:the `disable-fast-install' option into LT_INIT's first parameter.])
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# --------------------
aclocal.m4:# implement the --with-pic flag, and support the `pic-only' and `no-pic'
aclocal.m4:    [AS_HELP_STRING([--with-pic],
aclocal.m4:	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
aclocal.m4:test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
aclocal.m4:LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
aclocal.m4:LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
aclocal.m4:[_LT_SET_OPTION([LT_INIT], [pic-only])
aclocal.m4:put the `pic-only' option into LT_INIT's first parameter.])
aclocal.m4:dnl aclocal-1.4 backwards compatibility:
aclocal.m4:# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
aclocal.m4:# -----------------------------
aclocal.m4:# ------------
aclocal.m4:# Autoconf-2.59 which quotes differently.
aclocal.m4:# lt_append(MACRO-NAME, STRING, [SEPARATOR])
aclocal.m4:# ------------------------------------------
aclocal.m4:# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
aclocal.m4:# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
aclocal.m4:# No SEPARATOR is output if MACRO-NAME was previously undefined (different
aclocal.m4:# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
aclocal.m4:# ----------------------------------------------------------
aclocal.m4:# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
aclocal.m4:# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
aclocal.m4:# -----------------------------------------------------------------------
aclocal.m4:# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
aclocal.m4:# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
aclocal.m4:	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
aclocal.m4:# -----------------------------
aclocal.m4:# --------------------------------------------
aclocal.m4:# ----------------------------------
aclocal.m4:# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
aclocal.m4:# -----------------------------------------------------------------
aclocal.m4:# --------------------------------------------------------------
aclocal.m4:# ltversion.m4 -- version numbers			-*- Autoconf -*-
aclocal.m4:# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
aclocal.m4:# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
aclocal.m4:# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
aclocal.m4:# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
aclocal.m4:# PKG_PROG_PKG_CONFIG([MIN-VERSION])
aclocal.m4:# ----------------------------------
aclocal.m4:[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
aclocal.m4:AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
aclocal.m4:	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
aclocal.m4:if test -n "$PKG_CONFIG"; then
aclocal.m4:	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
aclocal.m4:	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
aclocal.m4:# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
aclocal.m4:# --------------------------------------------------------------
aclocal.m4:if test -n "$PKG_CONFIG" && \
aclocal.m4:    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
aclocal.m4:# ---------------------------------------------
aclocal.m4:[if test -n "$PKG_CONFIG"; then
aclocal.m4:    if test -n "$$1"; then
aclocal.m4:                         [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
aclocal.m4:# -----------------------------
aclocal.m4:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
aclocal.m4:# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
aclocal.m4:# [ACTION-IF-NOT-FOUND])
aclocal.m4:# --------------------------------------------------------------
aclocal.m4:AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
aclocal.m4:AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
aclocal.m4:and $1[]_LIBS to avoid the need to call pkg-config.
aclocal.m4:See the pkg-config man page for more details.])
aclocal.m4:	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
aclocal.m4:	        $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
aclocal.m4:installed software in a non-standard prefix.
aclocal.m4:[The pkg-config script could not be found or is too old.  Make sure it
aclocal.m4:path to pkg-config.
aclocal.m4:To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
aclocal.m4:# ----------------------------
aclocal.m4:# -----------------------------
aclocal.m4:# -------------------------------
aclocal.m4:# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
aclocal.m4:# are both prefixed by $srcdir.  In an in-source build this is usually
aclocal.m4:# AM_CONDITIONAL                                            -*- Autoconf -*-
aclocal.m4:# AM_CONDITIONAL(NAME, SHELL-CONDITION)
aclocal.m4:# -------------------------------------
aclocal.m4:[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
aclocal.m4:# ----------------------
aclocal.m4:[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
aclocal.m4:  # instance it was reported that on HP-UX the gcc test will end up
aclocal.m4:  # making a dummy file named `D' -- because `-MD' means `put the output
aclocal.m4:  # both Tru64's cc and ICC support -MD to output dependencies as a
aclocal.m4:     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
aclocal.m4:     *\ -arch\ *\ -arch\ *) am__universal=true ;;
aclocal.m4:     *\ -arch\ *\ -arch\ *) am__universal=true ;;
aclocal.m4:    # We check with `-c' and `-o' for the sake of the "dashmstdout"
aclocal.m4:    # handle `-M -o', and we need to detect this.  Also, some Intel
aclocal.m4:    am__obj=sub/conftest.${OBJEXT-o}
aclocal.m4:    am__minus_obj="-o $am__obj"
aclocal.m4:      # after this tag, mechanisms are not by side-effect, so they'll
aclocal.m4:      # This compiler won't grok `-c -o', but also, the minuso test has
aclocal.m4:      am__obj=conftest.${OBJEXT-o}
aclocal.m4:       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
aclocal.m4:       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
aclocal.m4:      # or remarks (even with -Werror).  So we grep stderr for any message
aclocal.m4:      # When given -MP, icc 7.0 and 7.1 complain thusly:
aclocal.m4:      #   icc: Command line warning: ignoring option '-M'; no argument required
aclocal.m4:      #   icc: Command line remark: option '-MP' not supported
aclocal.m4:  rm -rf conftest.dir
aclocal.m4:# -------------
aclocal.m4:# ------------
aclocal.m4:[AC_ARG_ENABLE(dependency-tracking,
aclocal.m4:[  --disable-dependency-tracking  speeds up one-time build
aclocal.m4:  --enable-dependency-tracking   do not reject slow dependency extractors])
aclocal.m4:# Generate code to set up dependency tracking.              -*- Autoconf -*-
aclocal.m4:# ------------------------------
aclocal.m4:  # Autoconf 2.62 quotes --file arguments for eval, but not when files
aclocal.m4:  # are listed without --file.  Let's play safe and only enable the eval
aclocal.m4:    mf=`echo "$mf" | sed -e 's/:.*$//'`
aclocal.m4:    # Grep'ing the first line is not enough: some people post-process
aclocal.m4:    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
aclocal.m4:    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
aclocal.m4:    test -z "$DEPDIR" && continue
aclocal.m4:    am__include=`sed -n 's/^am__include = //p' < "$mf"`
aclocal.m4:    test -z "am__include" && continue
aclocal.m4:    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
aclocal.m4:    U=`sed -n 's/^U = //p' < "$mf"`
aclocal.m4:    for file in `sed -n "
aclocal.m4:	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
aclocal.m4:      test -f "$dirpart/$file" && continue
aclocal.m4:# -----------------------------
aclocal.m4:# This macro should only be invoked once -- use via AC_REQUIRE.
aclocal.m4:[  --with-dmalloc          use dmalloc, as in
aclocal.m4:  LIBS="$LIBS -ldmalloc"
aclocal.m4:  LDFLAGS="$LDFLAGS -g"
aclocal.m4:# Do all the work for Automake.                             -*- Autoconf -*-
aclocal.m4:# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
aclocal.m4:# -----------------------------------------------
aclocal.m4:# call (pre autoconf-2.50), which is being phased out.  PACKAGE
aclocal.m4:m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
aclocal.m4:  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
aclocal.m4:  # is not polluted with repeated "-I."
aclocal.m4:  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
aclocal.m4:  if test -f $srcdir/config.status; then
aclocal.m4:if test -z "$CYGPATH_W"; then
aclocal.m4:  if (cygpath --version) >/dev/null 2>/dev/null; then
aclocal.m4:    CYGPATH_W='cygpath -w'
aclocal.m4:dnl Distinguish between old-style and new-style calls.
aclocal.m4:[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
aclocal.m4:dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
aclocal.m4:_AM_IF_OPTION([no-define],,
aclocal.m4:AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
aclocal.m4:AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
aclocal.m4:_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
aclocal.m4:	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
aclocal.m4:_AM_IF_OPTION([no-dependencies],,
aclocal.m4:_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
aclocal.m4:dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
aclocal.m4:  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
aclocal.m4:# When config.status generates a header, we must update the stamp-h file.
aclocal.m4:echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
aclocal.m4:# ------------------
aclocal.m4:    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
aclocal.m4:    install_sh="\${SHELL} $am_aux_dir/install-sh"
aclocal.m4:# Check whether the underlying file-system supports filenames
aclocal.m4:# with a leading dot.  For instance MS-DOS doesn't.
aclocal.m4:[rm -rf .tst 2>/dev/null
aclocal.m4:if test -d .tst; then
aclocal.m4:# Check to see how 'make' treats includes.	            -*- Autoconf -*-
aclocal.m4:# -----------------
aclocal.m4:[am_make=${MAKE-make}
aclocal.m4:case `$am_make -s -f confmf 2> /dev/null` in #(
aclocal.m4:   case `$am_make -s -f confmf 2> /dev/null` in #(
aclocal.m4:rm -f confinc confmf
aclocal.m4:# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
aclocal.m4:# ------------------------------
aclocal.m4:$1=${$1-"${am_missing_run}$2"}
aclocal.m4:# ------------------
aclocal.m4:# Define MISSING if not defined so far and test if it supports --run.
aclocal.m4:if eval "$MISSING --run true"; then
aclocal.m4:  am_missing_run="$MISSING --run "
aclocal.m4:# ---------------
aclocal.m4:# Check for `mkdir -p'.
aclocal.m4:# Helper functions for option handling.                     -*- Autoconf -*-
aclocal.m4:# -----------------------
aclocal.m4:[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
aclocal.m4:# ------------------------------
aclocal.m4:# ----------------------------------
aclocal.m4:# OPTIONS is a space-separated list of Automake options.
aclocal.m4:# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
aclocal.m4:# -------------------------------------------
aclocal.m4:# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
aclocal.m4:# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
aclocal.m4:# ---------------------------------------------------------------------------
aclocal.m4:# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
aclocal.m4:# doesn't meet the requirement.  MINIMUM-VERSION should consist of
aclocal.m4:    if test -z "$PYTHON"; then
aclocal.m4:    if test -n "$PYTHON"; then
aclocal.m4:  dnl Run any user-specified action, or abort.
aclocal.m4:    [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
aclocal.m4:    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
aclocal.m4:  dnl pythondir -- where to install python scripts.  This is the
aclocal.m4:  dnl   site-packages directory, not the python standard library
aclocal.m4:     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null ||
aclocal.m4:     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
aclocal.m4:	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
aclocal.m4:  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
aclocal.m4:  dnl pyexecdir -- directory for installing python extension modules
aclocal.m4:     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null ||
aclocal.m4:     echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
aclocal.m4:	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
aclocal.m4:  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
aclocal.m4:  dnl Run any user-specified action.
aclocal.m4:# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
aclocal.m4:# ---------------------------------------------------------------------------
aclocal.m4:# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
aclocal.m4:# Run ACTION-IF-FALSE otherwise.
aclocal.m4:  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
aclocal.m4:# -------------------
aclocal.m4:# Check to make sure that the build environment is sane.    -*- Autoconf -*-
aclocal.m4:# ---------------
aclocal.m4:# arguments.  Must try -L first in case configure is actually a
aclocal.m4:   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
aclocal.m4:      # -L didn't work.
aclocal.m4:      set X `ls -t "$srcdir/configure" conftest.file`
aclocal.m4:   rm -f conftest.file
aclocal.m4:      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
aclocal.m4:# ---------------------
aclocal.m4:# annoying in cross-compiling environments, where the build's strip
aclocal.m4:# Fortunately install-sh will honor a STRIPPROG variable, so we
aclocal.m4:# always use install-sh in `make install-strip', and initialize
aclocal.m4:# run `make install-strip'.  However `strip' might not be the right
aclocal.m4:# tool to use in cross-compilation environments, therefore Automake
aclocal.m4:INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
aclocal.m4:# ---------------------------
aclocal.m4:# ---------------------------
aclocal.m4:# Check how to create a tarball.                            -*- Autoconf -*-
aclocal.m4:# --------------------
aclocal.m4:# writing to stdout a FORMAT-tarball containing the directory
aclocal.m4:     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
aclocal.m4:_am_tools=${am_cv_prog_tar_$1-$_am_tools}
aclocal.m4:# Solaris sh will not grok spaces in the rhs of `-'.
aclocal.m4:      AM_RUN_LOG([$_am_tar --version]) && break
aclocal.m4:    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
aclocal.m4:    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
aclocal.m4:    am__untar="$_am_tar -xf -"
aclocal.m4:    # Must skip GNU tar: if it does not support --format= it doesn't create
aclocal.m4:    (tar --version) >/dev/null 2>&1 && continue
aclocal.m4:    am__tar='tar chf - "$$tardir"'
aclocal.m4:    am__tar_='tar chf - "$tardir"'
aclocal.m4:    am__untar='tar xf -'
aclocal.m4:    am__tar='pax -L -x $1 -w "$$tardir"'
aclocal.m4:    am__tar_='pax -L -x $1 -w "$tardir"'
aclocal.m4:    am__untar='pax -r'
aclocal.m4:    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
aclocal.m4:    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
aclocal.m4:    am__untar='cpio -i -H $1 -d'
aclocal.m4:  test -n "${am_cv_prog_tar_$1}" && break
aclocal.m4:  rm -rf conftest.dir
aclocal.m4:  rm -rf conftest.dir
aclocal.m4:  if test -s conftest.tar; then
aclocal.m4:rm -rf conftest.dir
AUTHORS:Ruven Pillay, Steve Perry, Lars Raffelt, David Saunders, Jean-Philippe
benchmark/benchmarkn.sh:uname -a
benchmark/benchmarkn.sh:gcc --version
benchmark/benchmarkn.sh:vips --version
benchmark/benchmarkn.sh:# higher values run more slowly and are more likely to be CPU-bound
benchmark/benchmarkn.sh:  echo "build of test image failed -- out of disc space?"
benchmark/benchmarkn.sh:echo -n "test image is" `header -f Xsize temp.v` 
benchmark/benchmarkn.sh:echo " by" `header -f Ysize temp.v` "pixels"
benchmark/benchmarkn.sh:  echo time -p vips im_benchmarkn temp.v temp2.v $chain
benchmark/benchmarkn.sh:  time -p vips im_benchmarkn temp.v temp2.v $chain
benchmark/benchmarkn.sh:  time -p vips im_benchmarkn temp.v temp2.v $chain
benchmark/benchmarkn.sh:    echo "benchmark failed -- install problem?"
benchmark/README:------------------
benchmark/README:  http://cima.ng-london.org.uk/~john/POD
Coincidencia en el archivo binario benchmark/sample2.v
bootstrap.sh:# set -x
bootstrap.sh:rm -f Makefile Makefile.in aclocal.m4 
bootstrap.sh:rm -rf autom4te.cache
bootstrap.sh:rm -f config.* configure depcomp
bootstrap.sh:rm -f install-sh intltool-* libtool ltmain.sh missing mkinstalldirs
bootstrap.sh:rm -f stamp-* vipsCC-7.19.pc vips-7.19.spec vips-7.19.pc
bootstrap.sh:rm -f swig/vipsCC/*.cxx
bootstrap.sh:rm -f swig/vipsCC/VImage.h
bootstrap.sh:rm -f swig/vipsCC/VImage.py python/vipsCC/VError.py python/vipsCC/VMask.py python/vipsCC/Display.py
bootstrap.sh:rm -f benchmark/temp*
bootstrap.sh:( cd doc ; mkdir poop ; mv reference/libvips-docs.sgml.in poop ; mv reference/Makefile.am poop ; mv reference/images poop ; rm -rf reference/* ; mv poop/* reference ; rmdir poop )
bootstrap.sh:gtkdocize --copy --docdir doc/reference --flavour no-tmpl || exit 1
bootstrap.sh:if glibtoolize --version >/dev/null 2>&1; then 
bootstrap.sh:test -r aclocal.m4 || touch aclocal.m4
bootstrap.sh:glib-gettextize --force --copy
bootstrap.sh:test -r aclocal.m4 && chmod u+w aclocal.m4
bootstrap.sh:# intltoolize --copy --force --automake
bootstrap.sh:$LIBTOOLIZE --copy --force --automake
bootstrap.sh:automake --add-missing --copy
bootstrap.sh:swig -version > /dev/null
bootstrap.sh:if [ $? -ne 0 ]; then
ChangeLog:- fix a problem with tiff pyramid write and >1cpu, thanks Ruven
ChangeLog:- constant ops clip to target range
ChangeLog:- oops, moreconst and moreeqconst were the same
ChangeLog:- better buffer handling in sinkdisc for single-line images
ChangeLog:- less chatty errors from "vips"
ChangeLog:- oops, don't rename "copy_set" as "copy_", thanks Ole
ChangeLog:- bump and rename
ChangeLog:- vipsthumbnail has a manualpage and sharpens correctly
ChangeLog:- more interpolator work
ChangeLog:- fixes to --disable-cxx mode (thanks Mike)
ChangeLog:- added German translation, thanks Chris Leick
ChangeLog:- fixed typos in some messages, thanks Chris Leick
ChangeLog:- fix gettext startup
ChangeLog:- all "colour" in messages changed to "color", have a proper en_GB 
ChangeLog:- vipsthumbnail delete profile failed if there was a profile
ChangeLog:- interpolate cli unref was broken
ChangeLog:- more accurate, slightly faster bilinear and bicubic (thanks Nicolas)
ChangeLog:- added progress feedback to threadpool
ChangeLog:- --vips-wbuffer2 switch does all wbuffer use now
ChangeLog:- im_wbuffer2() renamed as vips_discsink(), some cleanups
ChangeLog:- im_gammacorrect() can do 16-bit images too
ChangeLog:- im_histplot() could fail for signed int histograms
ChangeLog:- im_fwfft() and im_invfft() could free their output image too early
ChangeLog:- added im_local_imask(), im_local_dmask()
ChangeLog:- added im_mpercent_hist()
ChangeLog:- im_maplut() casts the index image to one of the uint types
ChangeLog:- fixed a couple of /0 problems with scale == 0 masks
ChangeLog:- set G_LOG_DOMAIN to VIPS so we can use g_warning etc.
ChangeLog:- added VIPS_DEBUG_MSG() macro
ChangeLog:- --vips-wbuffer2 turns on threadpool for im_iterate as well
ChangeLog:- im_vips2tiff() uses vips_sink() instead of threadgroup
ChangeLog:- strip out threadgroup
ChangeLog:- add --enable-debug=xxx flag
ChangeLog:- im_iterate() -> vips_sink()
ChangeLog:- better number-of-bands detection for im_magick2vips() 
ChangeLog:- added im_get_argv0()
ChangeLog:- added PFM read / write
ChangeLog:- "invalidate" is careful to keep images alive, so invalidate callbacks can do
ChangeLog:- flood_blob could loop if start point == ink
ChangeLog:- added im_meta_remove()
ChangeLog:- added remove profile option to vipsthumbnail
ChangeLog:- added vips_bandfmt_iscomplex() and friends, im_iscomplex() and friends 
ChangeLog:- im_bandjoin()/im_gbandjoin() work with images of varying formats
ChangeLog:- added im_copy_native(), deprecated im_copy_from() and friends
ChangeLog:- im_check*() name rationalisation
ChangeLog:- finally removed old flood stuff
ChangeLog:- im_insert*() bandalike and formatalike
ChangeLog:- im_*join() bandalike and formatalike
ChangeLog:- im_ri2c() bandalike 
ChangeLog:- im_vips2png() saves 16-bit PNGs, if necessary
ChangeLog:- vipsthumbnail has selectable interpolators, optional sharpen
ChangeLog:- moved a lot of stuff (eg. im_iscomplex()) from deprecated to 
ChangeLog:- im_csv2vips(): allow lines that end with EOF rather than \n
ChangeLog:- im_vips2tiff has a bigtiff option
ChangeLog:- oops, im_lineset() needs to ask for WIO of mask and ink
ChangeLog:- move cache invalidation to REGION, fixes a race
ChangeLog:- don't im_invalidate() after paint, it can cause horrible performance
ChangeLog:- instead, users of the inplace operations need to call im_invalidate() at the
ChangeLog:- parent/child renamed as upstream/downstream in DAG
ChangeLog:- set VIPS_ICC_DIR in configure
ChangeLog:- ICC profiles are looked for in VIPS_ICC_DIR as a fallback
ChangeLog:- im_render() mask image generation no longer triggers image calc
ChangeLog:- threadgroups scale output buffers with number of threads for smalltile ...
ChangeLog:  improves SMP scaling for narrow images on many-way machines
ChangeLog:- default to max number of processors (--vips-concurrency and IM_CONCURRENCY
ChangeLog:- better nprocs guesser
ChangeLog:- im_render() fixes to help the paintbox, some speedups too
ChangeLog:- added im_wbuffer2(), a new distributed threading system, and --vips-wbuffer2
ChangeLog:- added "written" callbacks, used to implement write to non-vips formats
ChangeLog:- branch for new dev cycle
ChangeLog:- argh, missing init from colour.c (thanks Peter)
ChangeLog:- argh, im_measure() was not looping over bands correctly (thanks Peter)
ChangeLog:- removed mmap_limit, we now always use windows ... reduces VM use hugely,
ChangeLog:- have a min bytes for mmap windows as well, so we don't make too many tiny
ChangeLog:- im_disp2Lab() was broken
ChangeLog:- deprecated.h is now defined in terms of current functionality, rather than
ChangeLog:- im_flood() and friends rewritten, typically 4x faster
ChangeLog:- removed --with-cimg option, added --disable-cxx
ChangeLog:- added im_system_image() (thanks Roland)
ChangeLog:- added postclose callbacks
ChangeLog:- added vipsthumbnail 
ChangeLog:- oops, generate C++/Python wrappers for deprecated operations by default
ChangeLog:- read TIFF images strip-wise, not scanline-wise
ChangeLog:- better TIFF YCbCr reading (thanks Ole)
ChangeLog:- isanalyze generates fewer silly error messages
ChangeLog:- updated en_GB.po translation 
ChangeLog:- file_length is gint64 to avoid win32 breakage
ChangeLog:- GETTEXT_PACKAGE now includes lib version number (thanks Jay)
ChangeLog:- oop, im_clip2fmt() was missing PTOP flag, should get a small speedup
ChangeLog:- im_conv() / im_convf() didn't like all-zero masks
ChangeLog:- small updates to im_convf() from im_conv()
ChangeLog:- im_read_imask() produced an incorrect error message if passed a doublemask
ChangeLog:- rename im_convf(), im_convsepf() as _f()
ChangeLog:- vips.c drops _f suffix when overloading
ChangeLog:- regenerate C++ binding, don't make deprecated package
ChangeLog:- removed vips-7.x.spec.in, shouldn't really have this in SVN
ChangeLog:- bumped version to 7.20
ChangeLog:- fixes to get "make dist" working again
ChangeLog:- version bump
ChangeLog:- tiny conv speedup
ChangeLog:- catch lcms error messages
ChangeLog:- fix includes for gtk+-3.0
ChangeLog:- report virtual memory too in im__print_all()
ChangeLog:- cosmetic changes to nohalo
ChangeLog:- im_magick2vips() needs to invert alpha
ChangeLog:- now (more or less) passes -Wextra
ChangeLog:- added "fail" option to im_jpeg2vips: fail with an error on any warning
ChangeLog:- started gtk-doc changes
ChangeLog:- renamed im_meta_get_type() and im_header_get_type() as 
ChangeLog:- revised more names, limited documented API
ChangeLog:- im_buildlut() could segv for non-zero based tables (thanks Jack)
ChangeLog:- VIPS_BUF_STATIC() does not take length arg
ChangeLog:- check for SetImageOption() so we work with GraphicsMagick too
ChangeLog:- "header" sets a non-zero exit code if anything failed
ChangeLog:- add and use im_check_uncoded() and friends
ChangeLog:- matlab load handles column-major and plane-separated images (thanks Mikhail)
ChangeLog:- JPEG save allows "none" for profile, meaning don't attach a profile
ChangeLog:- saner, simpler, faster typecasting for im_add(), im_subtract(),
ChangeLog:- im_remainder() has a float result for float types
ChangeLog:- im_measure() allows sel == NULL, meaning all patches
ChangeLog:- added "deprecated" package
ChangeLog:- faster, simpler, better im_max(), im_min, im_avg(), im_deviate()
ChangeLog:- im_max() returns true modulus, not square of modulus, for complex images
ChangeLog:- im_avg() works for complex, returning average modulus
ChangeLog:- im_system() fix (thanks Roland)
ChangeLog:- im_system() rewrite
ChangeLog:- im_maxpos()/im_minpos() are partial and work for complex
ChangeLog:- im_max()/im_min() are now convenience functions
ChangeLog:- im_maxpos_avg() handles complex and multi-band images
ChangeLog:- added im_point(), rewrite im_point_bilinear() in terms of this
ChangeLog:- close callbacks now happen *after* images have closed resources (such as
ChangeLog:- added vips_interpolate_get_window_offset()
ChangeLog:- boolean revised: smaller, more general, faster
ChangeLog:- im_remainderconst_vec() renamed to im_remainder_vec() for consistency
ChangeLog:- added im_shift*_vec()
ChangeLog:- renamed im_eor_vec() as im_eorimage_vec() for consistency, also and, or
ChangeLog:- renamed im_eorconst() as im_eorimage_const() for consistency, also and, or
ChangeLog:- relational revised: smaller, more general, faster
ChangeLog:- im_blend()/im_ifthenelse() allows many-band conditional, 1-band then/else
ChangeLog:- im_blend()/im_ifthenelse() allows band and format to differ between then 
ChangeLog:- better im_check() functions
ChangeLog:- added im_flood_other() as start of simple segmentation operator
ChangeLog:- added im_label_regions() 
ChangeLog:- im_printlines(), im_debugim() deprecated (use im_vips2csv() instead)
ChangeLog:- meta, header, callback, error, region, check, generate, memory gtkdocs
ChangeLog:- removed printlines tool, vips2csv is much better
ChangeLog:- removed other useless tools as well: debugim, binfile
ChangeLog:- fix up addr calcs on 64-bit machines with >2gb images and inplace ops
ChangeLog:- im_generate() checks that im_demand_hint() has been called for this image
ChangeLog:- im_jpeg2vips.c, set scale_num on shrink (thanks Guido)
ChangeLog:- heh argh reading history always stopped after the first line (thanks Haida)
ChangeLog:- added im_histindexed
ChangeLog:- new im_iterate() calls start and stop functions from workers so resources 
ChangeLog:- threadgroup no longer has any default action, you must attach a work
ChangeLog:- added im_copy_file()
ChangeLog:- added im_insertset()
ChangeLog:- im_insertplace() allows small to be outside big
ChangeLog:- added im__colour_difference(), colour ops now work on any image format
ChangeLog:- added im_col_display_get_table(), so display tables are now shared by name
ChangeLog:- added im__colour_unary()
ChangeLog:- drop "set" postfix from names, so "insert" can now take a vector of positions
ChangeLog:- deprecate all the "_raw" variants, not really necessary now
ChangeLog:- removed "contrib", not very useful anymore
ChangeLog:- added im_header_as_string()
ChangeLog:- im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes confusion 
ChangeLog:- added im_history_get(), im_getexp(), im_printdesc() as wrapped functions ...
ChangeLog:- image vectors from Python work, woo
ChangeLog:- revised version numbers
ChangeLog:- updated vipsmanual
ChangeLog:- revised manpages
ChangeLog:- removed name and "changed" from vipsobject since we don't use them yet
ChangeLog:- explicitly link with stdc++ for nohalo etc. stuff
ChangeLog:- wrap im_gauss_imask_sep in C++/Python
ChangeLog:- revised nohalo
ChangeLog:- remove fading stuff from im_render() -- cleaner and simpler
ChangeLog:- configure spots support for "restrict"
ChangeLog:- reset dcm:display-range on magick read to help DICOM
ChangeLog:- saner im_buildlut() behaviour
ChangeLog:- added im_gauss_imask_sep()
ChangeLog:- allow open and view of truncated images (thanks Joe & Rachel)
ChangeLog:- revising rounding on im_affine*() coordinate transforms to make them more
ChangeLog:- added Radiance write
ChangeLog:- added im_float2rad()
ChangeLog:- added IM_CODING_RAD, support where it makes sense (extract, flip, rotate,
ChangeLog:- IM_PROGRESS env var
ChangeLog:- docs for rad2float and IM_CODING_RAD
ChangeLog:- im_magick2vips.c: allow funky bit depths, like 14 (thanks Mikkel)
ChangeLog:- isradiance was returning TRUE too often
ChangeLog:- radiance loader now loads packed RGBE/XYZE instead of unpacking to float
ChangeLog:- added im_rad2float()
ChangeLog:- merge vips-7.16 brach back into trunk
ChangeLog:- bumped version number to 7.17.0
ChangeLog:- re-added type.[hc]
ChangeLog:- added vipsinterpolate and im_affinei
ChangeLog:- added yafrsmooth interpolation
ChangeLog:- added yafrtest
ChangeLog:- added yafrnohalo
ChangeLog:- ubuntu 8.10 changes
ChangeLog:- interpolators get an output pointer, not region
ChangeLog:- tuning for bicubic
ChangeLog:- revised transform / clip code, we now do corner not centre
ChangeLog:- yafr-smooth reworked along the lines of bicubic
ChangeLog:- cleanups after yafr hacking
ChangeLog:- added affinei_all
ChangeLog:- don't set im_error() on failed callback
ChangeLog:- moved im_format_t to VipsFormat, now sits over VipsObject
ChangeLog:- IM_FORMAT_FLAG_PARTIAL -> VIPS_FORMAT_PARTIAL
ChangeLog:- updated docs
ChangeLog:- interpolators use type introspection
ChangeLog:- added vips --list classes, does formats too
ChangeLog:- include sys/param.h to get PATH_MAX in more places
ChangeLog:- added vips_format_get_flags()
ChangeLog:- oop, forgot to check for cancel during tiled tiff write
ChangeLog:- don't use mmap for tiff read: no performance advantage, chews up VM
ChangeLog:- VIPS_INTERPOLATE_SHIFT bumped to 12, we need the extra precision for u16 gel
ChangeLog:- added string->double transform for cmdline args
ChangeLog:- merged class-params branch back into trunk
ChangeLog:- IM_FREE() can do "const char*" variables
ChangeLog:- im_buf_t renamed as VipsBuf
ChangeLog:- added vips_object_to_string()
ChangeLog:- added "nickname" and "description" properties to VipsObject
ChangeLog:- shift/and/or/eor ops were broken for non-int types
ChangeLog:- added nohalo interpolator
ChangeLog:- updated format docs
ChangeLog:- IM_INPUT_INTERPOLATE() now used by affinei and affinei_all
ChangeLog:- added vips_object_new
ChangeLog:- resamplers/interpolators now in a resample package
ChangeLog:- removed yafrnohalo.c
ChangeLog:- added matio as a dependency
ChangeLog:- added Matlab save file read
ChangeLog:- added Radiance file read
ChangeLog:- better file-not-found messages
ChangeLog:- oop typo in manpage for im_project()
ChangeLog:- doc fixes
ChangeLog:- returning non-zero from eval callbacks was not always stopping computation
ChangeLog:- added --without-v4l option
ChangeLog:- added -no-undefined to libsrcCC build, so we get a libvipsCC.dll
ChangeLog:- removed the swig dependency: we include the generated bindings in the
ChangeLog:- trigger eval callbacks on tiled tiff write
ChangeLog:- added vips as an im_format_t
ChangeLog:- added im_format_write()/_read() convenience functions
ChangeLog:- more cleanups for the format API, argh
ChangeLog:- removed win32/ directory now mingw finally makes DLLs correctly
ChangeLog:- removed the windowed spcor for now, it has some edge effects
ChangeLog:- renames and version numbers
ChangeLog:- load plgs from libdir as well as libdir/vips-x.x for compat
ChangeLog:- complex -> complex conversion was broken
ChangeLog:- refstring <-> gstring transforms
ChangeLog:- better behaviour with Magick non-presence
ChangeLog:- added --enable-links switch to configure ... we no longer make the bin/im_*
ChangeLog:- started a 'format' section in the docs
ChangeLog:- configure fails if no gettext found
ChangeLog:- revised po/
ChangeLog:- released as 7.16.0!
ChangeLog:- image load/save in non-vips format code moved to own dir
ChangeLog:- simple format searching added
ChangeLog:- some cleanups for vips load
ChangeLog:- im_open() simplified
ChangeLog:- add im_format_flags
ChangeLog:- only consider formats with a save method in im_format_for_name()
ChangeLog:- oops, format sort order was reversed
ChangeLog:- im_filename_suffix() includes "." in suffix
ChangeLog:- merge back into trunk for 7.15.1
ChangeLog:- remove im_ispng(), im_png2vips_header() etc. & friends
ChangeLog:- add "vips --list formats"
ChangeLog:- rename VBuf as im_buf_t for consistency
ChangeLog:- add type.[hc], start of new type system
ChangeLog:- removed man pages for IM_MIN, MAX and RINT to avoid case confusion on 
ChangeLog:- MAGIC constants should be tagged as unsigned
ChangeLog:- write MAGIC correctly on sparc/powerpc machines (thanks Joe)
ChangeLog:- oop, we were still making fade threads even when not fading
ChangeLog:- tiny cond jump fixes for valgrind in colour.c
ChangeLog:- remove -lstdc++ from libs, except on windows 
ChangeLog:- push Magick cflags earlier in the include order to make it easier to pick
ChangeLog:- fix the en_GB translation
ChangeLog:- use meta to preserve resunit between tiff load and save
ChangeLog:- small doc improvements
ChangeLog:- read and write CMYKA tiff (thanks Doron)
ChangeLog:- performance improvements for morphology ops, esp. when zooming out
ChangeLog:- oop, im_render() was broken for mask == NULL
ChangeLog:- better support for multiple Python installs (thanks Jay)
ChangeLog:- better IM_SETSTR() stops some warnings
ChangeLog:- im_histcum() works for signed histograms
ChangeLog:- better rounding for im_conv(), im_convsep()
ChangeLog:- tiny speedup for im_conv()
ChangeLog:- better /0 test for remainderconst
ChangeLog:- revise i18n configure, get rid of intltool 
ChangeLog:- command-line IMAGVEC input could segv with non-vips image output
ChangeLog:- added .tobuffer()/.frombuffer(), .tostring()/.fromstring() to Python binding
ChangeLog:- add PIL_mode_from_vips () and vips_from_PIL_mode () utility functions
ChangeLog:- update docs for new Python stuff
ChangeLog:- FIND_ macros no longer search for stuff, you have to specify prefixes if the
ChangeLog:- configure prints a summary of optional packages found at the end
ChangeLog:- im_lhisteq() checks for window too small
ChangeLog:- added invalidate callbacks
ChangeLog:- now tests for MagickWand before ImageMagick (thanks Adam) 
ChangeLog:- added "-rotate" option to vips2dj
ChangeLog:- added man page for im_resize_linear
ChangeLog:- better jpeg-in-tiff YCbCr read (thanks Ole)
ChangeLog:- oops, invalidatefns were not being freed on im__close()
ChangeLog:- VMask() can init from std::vector, so Python can init from []
ChangeLog:- added IM_LIBDIR, im_guess_libdir()
ChangeLog:- load plugins from libdir/vips-x.x on startup
ChangeLog:- added meta get/set int/double/string/area/blob/GValue to C++ API
ChangeLog:- include time_t in vips.h, thanks nicola
ChangeLog:- lock global image list (thanks lee)
ChangeLog:- bump all version numbers for new stable
ChangeLog:- better CMYK JPEG read (thanks Ole)
ChangeLog:- add __str__ to VError in Python (thanks Ole)
ChangeLog:- revert the dynamic wrapping for Python :-( next version!
ChangeLog:- added VImage::convert2disc (thanks Ole)
ChangeLog:- you can now set the jpeg quality factor for tiff pyramids (thanks Joe)
ChangeLog:- you can now shrink jpegs during read, see "man im_jpeg2vips"
ChangeLog:- added CMYK JPEG write
ChangeLog:- optionally use GraphicsMagick (thanks Bob Friesenhahn)
ChangeLog:- look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel)
ChangeLog:- set icc profiles in tiff pyramids explicitly (thanks Joe)
ChangeLog:- add --without-cimg configure option
ChangeLog:- add im_maxpos_subpel 
ChangeLog:- make im_abs compile without liboil 
ChangeLog:- add im_align_bands 
ChangeLog:- fix type overflow in complex division 
ChangeLog:- fix im_cross_phase and im_addgnoise (Tom)
ChangeLog:- updated docs, C++ and python
ChangeLog:- header no longer stops on error
ChangeLog:- C++ dummy2.cpp helps OS X linking
ChangeLog:- added "include <cstring>" to VImage.cc to help gcc 4.3
ChangeLog:- started moving the python binding to dynamic wrapping
ChangeLog:- added im_wrap(), im_wraptwo(), im_phasecor_fft(), im_cross_phase() (Tom)
ChangeLog:- memleak plugged in im_save_string_setf()
ChangeLog:- bugfix in and docs for im_gradcor() (Tom)
ChangeLog:- use Glib macros to make im_msb work on big-endian platforms (Tom)
ChangeLog:- use Glib macros to get rid of needless compile warnings (Tom)
ChangeLog:- fix type overflow in im_c2ps/im_abs (Tom)
ChangeLog:- build cimg on windows fixes
ChangeLog:- various include cleanups, updated man pages
ChangeLog:- break im_wbuffer() out to a separate API
ChangeLog:- use im_wbuffer() to make im_vips2jpeg() compress in the background
ChangeLog:- also im_vips2png(), im_vips2tiff(), im_vips2ppm()
ChangeLog:- revised evaluation progress system
ChangeLog:- new evalstart/evalend/preclose callbacks fix over/underflow reporting
ChangeLog:- but the meaning of evalend has changed in a non-backwards-compatible way :(
ChangeLog:- added "--vips-progress" flag to turn on a simple eval progress tracker
ChangeLog:- make im_spcor[12] static, im_spcor is wrapper (Tom)
ChangeLog:- vips2dj can print RGB images
ChangeLog:- oop, include <stdexcept> missing
ChangeLog:- add protos for generate/iterate function args, fix warnings
ChangeLog:- add cimg package, we now have C++ source inside VIPS, sigh
ChangeLog:- added OUTPUT_DOUBLEVEC and OUTPUT_INTVEC, use for im_maxpos_vec() and friends
ChangeLog:- we now have a trunk and the version is 7.13.x, woo!
ChangeLog:- move manpages into a separate man/ dir ... speeds up builds a lot on windows
ChangeLog:- don't install malkovich
ChangeLog:- don't fail on unknown args for python (thanks Simon)
ChangeLog:- im_embed() is more general ... x and y can be negative
ChangeLog:- predicate.c is smaller and cleaner
ChangeLog:- libsrcCC link improvement from Pablo
ChangeLog:- support 32/64-bit ImageMagick as well (thanks Marcel)
ChangeLog:- better im_magick2vips() for Q8 ImageMagick
ChangeLog:- split repository to trunk/branches ready for a stable 7.12.x branch
ChangeLog:- proto.h had vars called small, breaking on win32
ChangeLog:- more python fixing, we now have working matricies too
ChangeLog:- fix to VImage.i for gcc 4.2 (thanks Damir)
ChangeLog:- eek, off by 1 for more than 1 band hists
ChangeLog:- needed a slightly larger worst-case buffer in im__b64_encode()
ChangeLog:- tiny cleanup for make_hI() prevents cond jump on ui in valgrind
ChangeLog:- --disable-threads was broken again
ChangeLog:- remove .svn dirs from dist
ChangeLog:- now passes distcheck again
ChangeLog:- added im_bandmean()
ChangeLog:- added support for TIFFTAG_PREDICTOR (Andrey Kiselev)
ChangeLog:- fix TIFFOpen() mode snafu (Andrey Kiselev)
ChangeLog:- memory.c abort()s with DEBUG
ChangeLog:- oops, im_bits_of_fmt() manpage was not being installed
ChangeLog:- im_histcum() can do all image types
ChangeLog:- updated NEWS
ChangeLog:- added im_csv2vips_header() 
ChangeLog:- command-line csv read was broken (thanks Tom)
ChangeLog:- removed length limit on argument vectors (Tom)
ChangeLog:- added IM_PREFIX, configure-time install prefix
ChangeLog:- oop, turned off memory.c DEBUG
ChangeLog:- fix some bogus gcc 4.1 warnings with im_open_local_array()
ChangeLog:- better vips usage message
ChangeLog:- oops, IM_ANY missing from im_demand_hint() manpage (thanks Shahid)
ChangeLog:- just warn if plugins fail to load in im_init_world()
ChangeLog:- expose Vargv and make refblock public rather than private so that 
ChangeLog:  subclasses of VImage can add vips-style member operations (thanks Pablo)
ChangeLog:- oops, im_initdesc() needed to have bbits set correctly (thanks Shahid)
ChangeLog:- make VError derive from std::exception more officially
ChangeLog:- woo, got exceptions working in SWIG
ChangeLog:- soname version bumped to 12.x.x
ChangeLog:- oops, added vector ops to Python
ChangeLog:- check for overflow of int in return of strtol in dispatch system (Tom)
ChangeLog:- add im_[di]mask_[xy]size to dispatch system (Tom)
ChangeLog:- add im_gradcor(), im_grad_[xy] (Tom)
ChangeLog:- ooo, added %include "std_except.i" & friends to VError.i, VImage.i
ChangeLog:- im_init_world() is more lenient about recursive invocation
ChangeLog:- im_gbandjoin() falls back to im_copy() for 1 input image
ChangeLog:- race condition fixed in im_render.c (thanks Simon)
ChangeLog:- bump for 7.12!!!
ChangeLog:- another fix to im_region_image() (thanks Mikkel)
ChangeLog:- tiny speed up to im_rect_includesrect()
ChangeLog:- avoid recursive invocation in im_init_world() (thanks Christian)
ChangeLog:- fix to extract_prefix (thanks Christian)
ChangeLog:- buffer cache is now per thread
ChangeLog:- combine buffer unref and ref in a single operation to reduce malloc/free
ChangeLog:- new internal API for passing regions between threads means we can remove
ChangeLog:- more buffer/region sanity checks, plus a memory barrier
ChangeLog:- lock around error buffer changes
ChangeLog:- im_vips2mask() was wrong for nx1 m-band images
ChangeLog:- liboil back to "test"
ChangeLog:- add buffer_cache_list to avoid GHashTable _insert()s
ChangeLog:- oop, --vips-concurrency was broken
ChangeLog:- renamed (in dispatch layer) im_and/or/eor_const -> im_and/or/eorimageconst 
ChangeLog:- C++ API wraps IMAGEVEC, DOUBLEVEC, INTVEC arguments
ChangeLog:- oop, IMAGE % vector<double> was broken
ChangeLog:- added im_linreg() (Tom)
ChangeLog:- various C++ API polishes, plus a bugfix (Dennis Lubert)
ChangeLog:- vips.spec split to devel and python too (Dennis Lubert)
ChangeLog:- be more explicit about sizeof(magic)
ChangeLog:- init magic to native order by default (thanks Dennis)
ChangeLog:- Hist becomes im_history_get() 
ChangeLog:- new history mechanism is faster, uses much less memory, and removes 
ChangeLog:- added im_get_option_group()
ChangeLog:- added official im_concurrency_set()/_get()()
ChangeLog:- don't read bbits from vips files ... set ourselves from bandfmt
ChangeLog:- oops add RGB16 and GREY16 to C++ header
ChangeLog:- --list packages option to vips.c
ChangeLog:- updated docs to 7.12
ChangeLog:- oops, im_region_image() snafu was causing a lot of recomputation
ChangeLog:- make im_mpercent() suck a little less
ChangeLog:- EXIF save was a bit bOrked ... cause of mac crashes?
ChangeLog:- im_histgr(), im_heq(), im_hist() all number bands from zero now
ChangeLog:- fix stride in liboil calls
ChangeLog:- set RGB16 on 16-bit RGB ICC export
ChangeLog:- added im_buffer_t so regions can share calculated pixels: 2-3x speedup on 
ChangeLog:- im_region_local() -> im_region_buffer()
ChangeLog:- im_sharpen() order change to help sharing
ChangeLog:- im_invalidate() clears buffer caches
ChangeLog:- add sentinel attributes
ChangeLog:- add some missing im_demand_hint()s
ChangeLog:- paint ops invalidate the output image
ChangeLog:- fix nothread eval
ChangeLog:- raise threads limit to 1024 (thanks Christian)
ChangeLog:- manual redone
ChangeLog:- vipsCC python init() hooks 
ChangeLog:- add liboil dependency
ChangeLog:- use liboil for im_abs(), im_add(), im_divide(), im_floor(), im_multiply(),
ChangeLog:- quiet libtoolize test (thanks Tom)
ChangeLog:- im_benchmarkn now regrows image each time
ChangeLog:- strip meta from sample2.v ... saves a lot of mem (esp. Hist)
ChangeLog:- added im_isscalar() (Tom)
ChangeLog:- added IM_REGION_ADDR_TOPLEFT() (Tom)
ChangeLog:- reduce size of im_rightshift_size.c to help compile (Tom)
ChangeLog:- make im_stop_many(NULL) safe (Tom)
ChangeLog:- better benchmark script makes graphing easier
ChangeLog:- double-buffer image file writes
ChangeLog:- reuse write threads
ChangeLog:- clean up threadgroup / iterate / generate
ChangeLog:- added im_benchmarkn to make it easier to make a CPU-bound op on large
ChangeLog:- im_cache() failed for cpus > 1
ChangeLog:- moved im__convert_saveable() into im_copy() (thanks Christian)
ChangeLog:- missing gobject dependency (thanks Christian)
ChangeLog:- --enable-threads was broken (thanks Christian)
ChangeLog:- eval without theads was broken (thanks Christian)
ChangeLog:- LIBADD libvips.la to libvipsCC.la (thanks Simon)
ChangeLog:- benchmark.sh is now plain sh, not bash
ChangeLog:- set ORIENTATION_TOPLEFT in im_vips2tiff (thanks Josef)
ChangeLog:- oops, im_vips2csv() output separator was broken
ChangeLog:- added im_benchmark2
ChangeLog:- move XYZ2Lab LUT build outside the eval thread
ChangeLog:- print leaked windows
ChangeLog:- oops, race condition in im_window_unref()
ChangeLog:- integrated im_region_window() into im_region_image(), tiny speed up
ChangeLog:- ifthenelse and affine dhints revised
ChangeLog:- buildlut no longer outputs x cods
ChangeLog:- configure asks for glib >= 2.6 (we need GOption)
ChangeLog:- configure uses AC_TOOL_CHECK to find tool names to help cross-compiling.
ChangeLog:- better configure test for libexif
ChangeLog:- add </libexif/ prefix if required
ChangeLog:- test for glibtoolize during bootstrap to help OS X
ChangeLog:- add --version to vips main prog
ChangeLog:- don't set Type in im_scale, want to be able to scale hists, for example
ChangeLog:- im_vips2mask() allows multiband hists as well
ChangeLog:- im_vips2csv() lets you specify an output separator
ChangeLog:- vips.c cleanups in arg handling
ChangeLog:- removed python binding to C layer, too hard to get it working right
ChangeLog:- leak test python test program
ChangeLog:- added throw() decls to C++ to help SWIG
ChangeLog:- no longer derive VError from std::exception, can't get it to work with SWIG
ChangeLog:- added mmap window manager to share windows between regions ... big reduction
ChangeLog:- add im_spcor2 (with sliding window) (Tom)
ChangeLog:- python vips wrapper hooks into init to start vips
ChangeLog:- oop, python detect was broken again
ChangeLog:- im_file_length() error return was wrong (thanks Christian)
ChangeLog:- im_csv2vips() isnored last column if there was no trailing
ChangeLog:- test for NULL filename/mode, common if you forget to check argc
ChangeLog:- im_break_token() returns NULL on trailing whitespace ... helps read_dmask
ChangeLog:- added im_buildlut(3)
ChangeLog:- removed extra im_free() in im_copy() fallback in im_msb()
ChangeLog:- added GValue input/output args
ChangeLog:- various C++ binding improvements (thanks Dennis): namespace support, 
ChangeLog:- remove im_msb() warning on fallback to copy for uchar ... not very serious,
ChangeLog:- added <vips/vips> C++ include ... include in a namespace
ChangeLog:- added im_benchmark / SMP benchmark script
ChangeLog:- add im_maxpos_avg() and im_point_bilinear() (Tom)
ChangeLog:- make im_region_free(NULL) safe (Tom)
ChangeLog:- link in manpages for im_contrast_surface (Tom)
ChangeLog:- add im_norm_dmask()
ChangeLog:- removed old code for gradient and lindetect
ChangeLog:- internal decls split from proto.h to help SWIG
ChangeLog:- test for python and SWIG during configure
ChangeLog:- added python dir for the binding
ChangeLog:- python binding done!
ChangeLog:- oops, --without-python was broken (thanks Tom)
ChangeLog:- added python/test
ChangeLog:- add im_lu_decomp() im_lu_solve(), rewrite NR type functions in terms of these (Tom)
ChangeLog:- still more im_affine() rounding/clipping tweaks
ChangeLog:- ignore "--" arguments to vips.c
ChangeLog:- im_init_world() also sets g_*_prgname() and loads plugins
ChangeLog:- add manpage for im_init_world() (oops)
ChangeLog:- error_exit() prints prgname
ChangeLog:- various cygwin fixes
ChangeLog:- fix cache thread assert failure (thanks Joe)
ChangeLog:- "header" now uses GOption, slightly different args, will loop over args
ChangeLog:- fixed assert() overenthusiasm in im_prepare()
ChangeLog:- im_csv2vips() now has separate whitespace / separator tables
ChangeLog:- add im_rightshift_size() (Tom)
ChangeLog:- add im_maxpos_vec(), im_minpos_vec() (Tom)
ChangeLog:- add im_norm_dmask() (Tom)
ChangeLog:- make im_free_[di]mask(NULL) safe (Tom)
ChangeLog:- back on sourceforge CVS again
ChangeLog:- require openexr 1.2.2 or greater 
ChangeLog:- range check xy on im_insert*() for sanity
ChangeLog:- VMask::invertlut decl removed (thanks Jean)
ChangeLog:- added \"all\" option to vips.c
ChangeLog:- debrokened openexr read
ChangeLog:- added im_tile_cache()
ChangeLog:- added tiled read to im_exr2vips()
ChangeLog:- im_tiff2vips() now uses im_tile_cache() rather than its own cache ...
ChangeLog:- removed 'broken' read option from im_tiff2vips()
ChangeLog:- read/write doubles with g_ascii_strtod() and friends where appropriate
ChangeLog:- add a "thread" member to region to help sanity check region ownership
ChangeLog:- saner threadgroup fixes a race problem on gcc 4.0.3 / amd64
ChangeLog:- added im_vips2csv()
ChangeLog:- im_open() now does CSV read/write too
ChangeLog:- oops, broke vips main prog for function name in argv1 case
ChangeLog:- split vips_png.c to im_vips2png.c and im_png2vips.c
ChangeLog:- added OpenEXR dependency
ChangeLog:- added im_exr2vips(), im_exr2vips_header()
ChangeLog:- added im_isexr(), im_open() knows about OpenEXR
ChangeLog:- added im_contrast_surface(), im_contrast_surface_raw() (Tom)
ChangeLog:- added im_msb(), im_msb_band() (Tom)
ChangeLog:- im_scale() sets Type on output
ChangeLog:- added RGB16, GREY16 types
ChangeLog:- im_*2vips() set these types if appropriate
ChangeLog:- configure fixes for mac
ChangeLog:- vips main prog uses GOption
ChangeLog:- im_icc_* locks around calls to cmsDoTransform() to avoid corruption on SMP
ChangeLog:- add im_prepare_many() (Tom)
ChangeLog:- typo in manpage and header for im_rect_dup() (Tom)
ChangeLog:- don't abort image load if XML read fails
ChangeLog:- added im_video_test() ... test video source
ChangeLog:- oops, lcms .pc finder was not working
ChangeLog:- clipping problem in im_affine() fixed (thanks Clare)
ChangeLog:- test for attr support in libmagick
ChangeLog:- im_text() returns an error for empty string 
ChangeLog:- im_falsecolour() scale reversed
ChangeLog:- im_remosaic() could crash on bad mosaics
ChangeLog:- configure changes to fix --without-magick, lcms and fftw (but sadly we now
ChangeLog:- im_vips2jpeg() automatically converts to 1 or 3 band sRGB uchar for write
ChangeLog:- also im_vips2png()
ChangeLog:- added im_project()
ChangeLog:- added im_csv2vips()
ChangeLog:- commas in filename options can be escaped with a '\'
ChangeLog:- raise tile buffer limit (thanks Ruven)
ChangeLog:- im_spcor() and im_fastcor() have prettier borders
ChangeLog:- im_fastcor() returns sum of squares of differences, not sum of abs of 
ChangeLog:- small win32 fixes, thanks Juan
ChangeLog:- added im_flood_blob_copy() ... a temporary hack
ChangeLog:- much faster im_histplot()
ChangeLog:- read RGBA palette-ized PNG images more robustly (thanks Tom)
ChangeLog:- turn on -ms-bitfields automatically for mingw
ChangeLog:- better error recovery for im_binfile() file too large
ChangeLog:- all raw files now use mmap windows, so (eg.) ppm and analyze reads can go
ChangeLog:- remove DISABLE_COMPAT ... you now have to define IM_ENABLE_DEPRECATED to get
ChangeLog:- fix to build without exif, thanks Chas
ChangeLog:- use native win32 API for seek()/truncate() to work with large files
ChangeLog:- use attribute to check printf-style args with gcc
ChangeLog:- fix gcc4 warnings
ChangeLog:- removed ebuild, since it's in gentoo now
ChangeLog:- im_magick2vips() sets meta from attributes (good for dicom)
ChangeLog:- im_magick2vips() writes many-frame images as tall thin VIPS images
ChangeLog:- im_histcum() was broken for vertical histograms
ChangeLog:- im_histnorm() is neater
ChangeLog:- simpler and faster inner loop for im_conv() and im_convf() avoids gcc4 bug 
ChangeLog:- appendc() was reading past the end of the buffer on MSB machines
ChangeLog:- im_copy_set() was messed up in 7.11.1
ChangeLog:- put into CVS, phew
ChangeLog:- fixed a rounding bug in im_affine() ... should no longer get black edges on
ChangeLog:- if TIFF open fails in im_open(), try going through libmagick
ChangeLog:- merge requires all bands == 0 for transparency (used to just check 1st
ChangeLog:- 16 bit LAB TIFF read/write was wrong
ChangeLog:- new GType for refstring makes it visible from im_header_map()
ChangeLog:- jpeg loader attaches exif data (and human-readable meta fields)
ChangeLog:- jpeg saver writes any exif data 
ChangeLog:- meta not wiped by im_*incheck() in a "w" image
ChangeLog:- meta keeps traverse order
ChangeLog:- now require glib >= 2.4
ChangeLog:- require libxml-2.0 for meta save and new history mechanism
ChangeLog:- no more .desc files, history saved in XML after pixel data
ChangeLog:- i/s/d meta fields saved there too
ChangeLog:- added base64 encode/decode
ChangeLog:- added blob header write
ChangeLog:- added a save string type: types which define transforms to and from the
ChangeLog:- GValue meta API now exposed, since we can serialise anything
ChangeLog:- jpeg loader loads ICC profiles
ChangeLog:- jpeg saver saves ICC profiles from the VIPS header
ChangeLog:- src/header.c knows about meta system
ChangeLog:- added im_analyze2vips(), im_grid(), im_raw2vips()
ChangeLog:- extract/grid/replicate/zoom were not setting TRANSFORM flag
ChangeLog:- better falsecolour LUT
ChangeLog:- less stupid + more portable read/write of VIPS header
ChangeLog:- better im_updatehist()
ChangeLog:- jpeg load sets vips xres/yres from exif, if possible
ChangeLog:- jpeg save sets exif xres/yres from vips, if possible
ChangeLog:- icc_export and icc_transform  attach profiles and intents to output images
ChangeLog:- added im_icc_import_embedded() to import with an embedded profile
ChangeLog:- split vips_jpeg.c into two, it was getting too big
ChangeLog:- added im_cp_descv(), im_cp_desc_array(), funcs use them
ChangeLog:- removed im_append_Hist() from API
ChangeLog:- fixed meta copy bug
ChangeLog:- better history copy, removed nonsense about 1st line of Hist being special
ChangeLog:- tiff read/write now reads/writes ICC profile from meta
ChangeLog:- edvips rewritten to remove stupidness, and can now set xml
ChangeLog:- header can now print xml extension block
ChangeLog:- IM_ prefix for colour temp names
ChangeLog:- added im_copy_morph()
ChangeLog:- im_region_region() allows Bands and BandFmt to differ, provided
ChangeLog:- added im_meta*() functions (MW)
ChangeLog:- im_header_*() rewritten for meta 
ChangeLog:- added im_header_exists(), im_header_map()
ChangeLog:- use pkg-config to find libpng and ImageMagick
ChangeLog:- added im_lineset()
ChangeLog:- added im_extract_areabands() (JF)
ChangeLog:- added im_copy_from() (JF)
ChangeLog:- im_ifthenelse just evals left/right for region all zero/all one
ChangeLog:- also im_blend
ChangeLog:- swap g_setenv() back to plain setenv() so we work with glib 2.2
ChangeLog:- docs no longer have broken links
ChangeLog:- fixed memleak in im_text()
ChangeLog:- one bit tiff read was sometimes reading a byte too far in each scanline
ChangeLog:- im_filename_split() will now usually work for filenames containing ':'
ChangeLog:- added im_render_fade() for fancier nip2 image repaint
ChangeLog:- added "ccittfax4" as a TIFF compression option
ChangeLog:- fix all 64-bit compiler warnings
ChangeLog:- "," allowed as column separator in mask read
ChangeLog:- better at spotting singular matricies
ChangeLog:- small im_render() tidies
ChangeLog:- glib dependancy reduced to just 2.0, but untested ... helps people building
ChangeLog:- removing leading spaces from IMAGEVEC arguments
ChangeLog:- load non-interlaced PNGs more efficiently
ChangeLog:- 1 point mosaic functions work on more image types
ChangeLog:- better memory allocation debugging info
ChangeLog:- local memory on regions can shrink as well as grow
ChangeLog:- shut down threadgroups on render if no dirty tiles
ChangeLog:- limit number of simultaneous renders
ChangeLog:- higher mmap window threshold 
ChangeLog:- allow max == -1 for unlimited render cache
ChangeLog:- 'priority' marks non-suspendable renders
ChangeLog:- im_embed() mode == 4 paints white pels
ChangeLog:- im_tiff2vips() was broken with --disable-threads
ChangeLog:- oops, im_errormsg() compat macros were GCC only
ChangeLog:- larger default tile size and strip height
ChangeLog:- tiff write sets PHOTOMETRIC_CIELAB for vips TYPE_LAB images ... so we can 
ChangeLog:- also 16 bit LAB TIFF write
ChangeLog:- im_render() rewritten
ChangeLog:- im_sharpen() is ~15% faster
ChangeLog:- more quoting for MAGICK finder
ChangeLog:- im_XYZ2Lab() uses a LUT rather than cbrt(), 5x faster
ChangeLog:- --disable-threads removes gthread dependency completely (thanks Simon)
ChangeLog:- intercept TIFF warnings as well as errors ... stops occasional libMagick
ChangeLog:- add im_init_world() to im_init() as well to help backwards compat (thanks 
ChangeLog:- im_icc_present() function description was broken, thanks Jay
ChangeLog:- oops, libtool library versioning was wrong, thanks Jay
ChangeLog:- can now make TIFF pyramids of any non-complex image type (was uchar and LAB
ChangeLog:- 1st order mosaic code now works for LABQ too
ChangeLog:- build system changes to make "make distcheck" work
ChangeLog:- RPM .spec files fixed up and updated by configure (thanks Simon)
ChangeLog:- tiny cleanups for vdump
ChangeLog:- use g_setenv()/g_getenv()
ChangeLog:- tiny improvements to IM_FREE*()
ChangeLog:- tiny VImage debug print fixes (thanks Jay)
ChangeLog:- swap off_t for gint64 to fix LARGEFILE support on win32
ChangeLog:- computation feedback now uses gint64 for number of pels, so we give feedback
ChangeLog:- other small fixes for >2**31 pels in an image
ChangeLog:- im_histnD() was not checking BandFmt (thanks Kirk)
ChangeLog:- improvements to threading system speed up non-vips output in some cases
ChangeLog:- use cbrt(x) where we can ... 10x faster than pow(x,1.0/3) on win32
ChangeLog:- typeo in im_text() when built without PANGOFT2 (thanks Stefan)
ChangeLog:- tiny doc fixes
ChangeLog:- scripts now only depend on 'vips' program
ChangeLog:- im_open( "r" ) is now lazier ... for non-VIPS formats, we delay read until 
ChangeLog:  the first ->generate()
ChangeLog:- so im_open_header() now deprecated since im_open("r") is identical
ChangeLog:- now looks for fftw3 as well as fftw2 ... slightly faster ffts
ChangeLog:- fix to light_correct (thanks Jay)
ChangeLog:- edvips knows about xoffset/yoffset
ChangeLog:- better vips enum<->char conversions
ChangeLog:- man page fixes (thanks Jay)
ChangeLog:- removed last csh scripts (thanks Jay)
ChangeLog:- scripts default VIPSHOME to $prefix (thanks Jay)
ChangeLog:- doc build system tidies
ChangeLog:- im_rank() edge padding was wrong
ChangeLog:- im_vips2tiff() can now embed ICC profiles
ChangeLog:- mildly better im_vips2tiff()
ChangeLog:- *, -, +, /, % between two images now work for mixed number of bands
ChangeLog:- im_free() was missing a man page
ChangeLog:- revised documentation
ChangeLog:- C++ .pc files were still set for 7.9, grr
ChangeLog:- im_insertplace() didn't check compatibility of images (thanks Matt)
ChangeLog:- set default stack size explicitly to help platforms with a very low default
ChangeLog:- 16 bit RGB tiff read was broken (bug introduced in 7.9.5, thanks Haida)
ChangeLog:- !pangoft2 was broken, thanks Kenneth
ChangeLog:- win32 build fixes
ChangeLog:- added NOCACHE function flag ... stops nip memoising video & paint ops
ChangeLog:- added im_extract_bands() ... takes out many bands from an image
ChangeLog:- im_vips2tiff() scanline write speed up for area pipelines
ChangeLog:- tiny polishing of im_ppm2vips()
ChangeLog:- im_blend() can now work on labq
ChangeLog:- boolean ops all work on float/complex images (by casting to int)
ChangeLog:- im_maplut() was broken for 1 band image + many band lut + >8 bit output
ChangeLog:- im_lintra_vec() now handles 1 band image and many band vector to make many
ChangeLog:- oops, im_lintra_vec() was missing a man page
ChangeLog:- im_measure() can work on labq
ChangeLog:- im_lhisteq() uses new embed mode, _raw() version is one pixel smaller, sets
ChangeLog:- generalised im_tone_build() to any image type to make im_tone_build_range()
ChangeLog:- tiff output res can be a single number too 
ChangeLog:- added im_text() to make a bitmap from a string with pango
ChangeLog:- im_tiff2vips() does 16 bit RGBA
ChangeLog:- im_binfile() was broken since 7.9.2 due to im_mapfile() change
ChangeLog:- im_ppm2vips() now works for 16 bit images
ChangeLog:- added im_copy_swap() ... copies, reversing byte order
ChangeLog:- im_resize_linear() was broken for some images, thanks Javi
ChangeLog:- oops, config.h include missing in a few places
ChangeLog:- im_vips2tiff() can now write 1 bit images
ChangeLog:- im__find_lr/tboverlap() now exported to nip
ChangeLog:- better edge tile handling for tiff read/write (thanks Ruven)
ChangeLog:- added extend-pixels-from-edge mode to im_embed()
ChangeLog:- im_conv*(), im_rank(), im_stdif(), im_dilate(), im_erode() all use it to
ChangeLog:- im_fastcor() now does an im_embed( 1 ) on the output ... the zero borders
ChangeLog:- no change to im_spcor(), since you will usually be searching for the maximum
ChangeLog:- better im_render() cache behaviour under heavy loads
ChangeLog:- im_affine() revised 
ChangeLog:	* clip, resample and transform is now pixel-perfect for all 
ChangeLog:	* about 20 - 30% faster
ChangeLog:- policy change: Xoffset and Yoffset are now set by all operations to record
ChangeLog:- im_replicate() is much faster for some cases
ChangeLog:- added tile and mirror flags to im_embed()
ChangeLog:- added im_cache() convenience function
ChangeLog:- better ETA for image calculation
ChangeLog:- im_tiff2vips() now has a "broken" option so it can read tiled tiffs made
ChangeLog:- on convert float to int format, now does floor() not rint() ... more
ChangeLog:- added im_rint()
ChangeLog:- im_sharpen() now uses a gaussian mask
ChangeLog:- im_convsep() more resistant to int overflow problems
ChangeLog:- added im_make_xy(), avoids rounding problems with the old float-based thing
ChangeLog:- im_profile() now makes vertical images for a vertical profile
ChangeLog:- added im_vips2tiff() option to set the resolution in inches not cm (thanks
ChangeLog:- im_binfile() is now exported 
ChangeLog:- added an im_init_world() to im_open(), to help old progs
ChangeLog:- renamed VSemaphore as im_semaphore_t
ChangeLog:- started using libtool library versioning
ChangeLog:- now uses g_module_*() in place of dlopen()
ChangeLog:- now uses pkg-config instead of vips-config (thanks Simon)
ChangeLog:- fixes to vips.h for _ADDR() with DEBUG on (thanks Konrad)
ChangeLog:- patches for freebsd, thanks Lev Serebryakov
ChangeLog:- vips2dj knows about my colour laser printer
ChangeLog:- added i18n support, glib/gmodule/gthread dependency
ChangeLog:- im_error*() API revised to be more i18n friendly
ChangeLog:- List type removed, now uses g_slist
ChangeLog:- VBuf added, some more utility funcs pushed down from nip
ChangeLog:- im_thread stuff removed, now uses g_thread
ChangeLog:- im_lock stuff removed, now uses g_mutex
ChangeLog:- im_semaphore_t renamed to VSemaphore, not sure this is a good idea
ChangeLog:- build with --disable-threads to turn off threaded render 
ChangeLog:- #include <vips/vips.h> now pulls in most of the public API, you shouldn't
ChangeLog:- im_close() is better at cleaning up if there's an error
ChangeLog:- inverse FFTs could fail for wider-than-high images with fftw
ChangeLog:- better im_icc_transform error messages
ChangeLog:- bug fix in im_render with large caches
ChangeLog:- im_binfile() now has an offset parameter
ChangeLog:- im_mapfile()/im_unmapfile() now work on IMAGE and record the length of the
ChangeLog:- threadgroups now have their own kill flag
ChangeLog:- im_plotmask() now does anti-aliasing
ChangeLog:- im_iterate() fix for operations on mmap window images (thanks Clare)
ChangeLog:- im_writeline() stops on kill
ChangeLog:- fix for im_fwfft() segv for wider-than-high real images (thanks Andrey)
ChangeLog:- fix for im_fwfft() to work for non-square real images (thanks Andrey)
ChangeLog:- can now read and write 32-bit IEEE float TIFF (Andrey Kiselev)
ChangeLog:- clean-ups for colour.c (Andrey Kiselev)
ChangeLog:- no longer lets you make an image with width|height|bands == 0 (thanks Joe)
ChangeLog:- im_vips2tiff(), im_vips2*jpeg*(), im_vips2png(), im_vips2ppm() could
ChangeLog:- added IM_RECT_HCENTRE(), IM_RECT_VCENTRE() macros
ChangeLog:- started 7.9.0
ChangeLog:- added im_rank_image() ... im_maxvalue() a special case of this
ChangeLog:- im_subtract() goes up to int earlier for better value preserving, thanks
ChangeLog:- im_rank() much faster for large windows, correct result on all platforms 
ChangeLog:- fixed problem with libMagick config if installed somewhere strange
ChangeLog:- fixed problem with include order in library compile 
ChangeLog:- added --without-magick configure option
ChangeLog:- added im_render(), threaded background image paint
ChangeLog:- added im_replicate(), replicate an image horizontally and vertically
ChangeLog:- started 7.8.11
ChangeLog:- fixed a problem with relational operators and some combinations of input
ChangeLog:- vips-7.8 script overrides VIPSHOME environment variable
ChangeLog:- better im_guess_prefix
ChangeLog:- stupid light_correct script no longer uses /pics/tmp
ChangeLog:- added batch_crop script
ChangeLog:- started 7.8.10
ChangeLog:- the JPEG writer can embed ICC profiles in output images ... although I've
ChangeLog:  yet to see it make any difference :-( test this carefully at some point
ChangeLog:- fixed a possible coredumper in jpeg write
ChangeLog:- jpeg read now spots truncated files
ChangeLog:- im_invertlut() now makes an image, not a mask ... sorry :-( 
ChangeLog:- im_histnD() makes an n-dimensional histogram from an n-band image
ChangeLog:- im_col_pythagoras() patch
ChangeLog:- IM_NUMBER() now returns int not size_t
ChangeLog:- new win32 build system from Juan and friends, based on tmake
ChangeLog:- sample project files for MSVC added, thanks Juan
ChangeLog:- win32/ subdir now has the win32 build systems
ChangeLog:- spec/ subdir now has the spec files for building RPMs
ChangeLog:- dist now includes formatted documentation
ChangeLog:- license change: VIPS is now LGPL, nip stays GPL ... this means proprietary
ChangeLog:- had a report of a working VIPS build on a 64 bit system (!)
ChangeLog:- im_log_dmask() now includes all of the negative lobe, thanks matt
ChangeLog:- vips-7.8 start script now auto-relocates
ChangeLog:- im_spcor_raw(), im_fastcor_raw() now exported
ChangeLog:- started 7.8.9
ChangeLog:- changes to build to help MSVC 
ChangeLog:- oops, makedef.pl missed out function names with an initial cap, and
ChangeLog:- im_min() and im_max() gave random wrong results for >1 thread on >1 CPU
ChangeLog:- vips.c no longer generates C++ wrappers for functions with no image argument
ChangeLog:- im_invertlut() now wrapped by hand in VMask.cc
ChangeLog:- C++ docs updated
ChangeLog:- added im_open_header(), returns an IMAGE with just width/height/etc and no
ChangeLog:- ... so now "header" will print useful stuff even on truncated files
ChangeLog:- tiff writer knows about alpha (thanks Jenny)
ChangeLog:- started 7.8.8
ChangeLog:- build failed with lcms turned off
ChangeLog:- im_spcor() could segv for 16bit images (thanks Joe)
ChangeLog:- im_tiff2vips() read resolution expressed as pixels/cm incorrectly
ChangeLog:- im_vips2tiff() tries not to write mad resolutions
ChangeLog:- header and im_open file type tests reordered for slight speedup
ChangeLog:- im_copy_set() had a broken dispatch function for xres/yres
ChangeLog:- im_fwfft() exploits libfftw real -> complex transform if possible for a 2x
ChangeLog:  speed-up (thanks Matt)
ChangeLog:- im_invfftr() added for complex -> real inverse transform for 2x speed-up
ChangeLog:- im_freqflt() now uses im_invfftr() for real result and speedup
ChangeLog:- im_flipver() could segv on some inputs, thanks Clare
ChangeLog:- relational operators now work on complex
ChangeLog:- relational rewritten ... now fractionally slower, but 1/3 the size
ChangeLog:- vips2dj -1:1 produced incorrect height
ChangeLog:- better overlap-too-small detection in mosaicing code
ChangeLog:- im_system() can have NULL output
ChangeLog:- global balance ignores overlaps with only transparent pixels
ChangeLog:- started 7.8.7
ChangeLog:- worked in patch from Hans Breuer (thanks!)
ChangeLog:	- png read/write with im_png2vips(), im_png2vips_header(), 
ChangeLog:	- im_errorstring() and im_col_displays() are now functions not externs
ChangeLog:	- many include fixes to help native win32 build
ChangeLog:- added libMagick support, 78 file formats now loadable with
ChangeLog:- now installs vips.m4 to $prefix/share/aclocal
ChangeLog:- added im_icc_export_depth() ... export to device space with a specified bit
ChangeLog:- vips.def now rebuilt with custom rule in libsrc/Makefile.am
ChangeLog:- removed externs im_Type, im_BandFmt, im_Coding, im_Compression to simplify
ChangeLog:- im_mmap() -> im__mmap(), since it's supposed to be an internal function
ChangeLog:- new vips-7.8.x/proj directory holds unsupported sample makefiles and 
ChangeLog:- new scripts batch_image_convert and batch_rubber_sheet (thanks Joe)
ChangeLog:- added the RPM .spec files to the main distribution
ChangeLog:- InitializeMagic() now passed "" rather than NULL to avoid assert() problems 
ChangeLog:- started 7.8.6
ChangeLog:- now reads 8-bit RGBA tiff
ChangeLog:- C++ build guide fixes (thanks fsicre)
ChangeLog:- im_Type2char array text slightly messed up
ChangeLog:- global_balance is safer for complex mixed mosaics
ChangeLog:- removed im_lintra() fallback to im_copy() for scale == 1, offset == 0 ...
ChangeLog:- im_tiff2vips() now reads 16-bit LAB
ChangeLog:- added im_Lab2LabS() and im_LabS2Lab()
ChangeLog:- started 7.8.5
ChangeLog:- fix for mmap window of local region ... caused im_iterate() to break
ChangeLog:- tiny speed up for im_rot90()/270()
ChangeLog:- on install on win32, add .exe suffix for links
ChangeLog:- vips.c knows to remove .exe suffix for linked commands
ChangeLog:- added im_errormsg_system() ... decode win32 error codes too
ChangeLog:- pagesize calcs for roving mmap windows were messed up on win32 (thanks Kirk)
ChangeLog:- some TODO cleanups
ChangeLog:- global balance broke horribly if you had filenames with spaces in (thanks
ChangeLog:- started 7.8.4
ChangeLog:- im_unmapfile() includes mixed up on mac os x
ChangeLog:- libtool patched for mac os x
ChangeLog:- vips.c sets numeric locale to "C"
ChangeLog:- started 7.8.3
ChangeLog:- configure fixes help mac os x
ChangeLog:- im_guess_prefix() adds ".exe" suffix on w32 if not there
ChangeLog:- changed im_measure() error messages to number bands from 1
ChangeLog:- added func descriptor for im_read_dmask() to help nip, updated C++ API, docs
ChangeLog:- started 7.8.2
ChangeLog:- tries rand() if random() is not available
ChangeLog:- tries mktemp() if mkstemp() is not available
ChangeLog:- turns off realpath() if not available
ChangeLog:- added IM_DIR_SEP/IM_DIR_SEP_STR directory separator character/string
ChangeLog:- added IM_PATH_SEP/IM_PATH_SEP_STR path separator character/string
ChangeLog:- added im_path_is_absolute()
ChangeLog:- vips.c knows to link to vips.exe on win32
ChangeLog:- spot mingw* and set BINARY_OPEN
ChangeLog:- open images in binary too (since we now read() the header)
ChangeLog:- im_lintra() and im_lintra_vec() were broken for complex images :-( thanks
ChangeLog:- renamed im_and() as im_andimage(), im_eor() as im_eorimage() and im_or() as
ChangeLog:- added im_dE00_fromLab()
ChangeLog:- limited release as vips-7.8.0
ChangeLog:- renamed as vips-7.8, woohoo
ChangeLog:- revised documentation
ChangeLog:- started sorting out VIPS #defines ... there are now a sensible set of new
ChangeLog:- define IM_NO_VIPS7_COMPAT to turn off the old names
ChangeLog:- added im_mmap()/im_munmap() layer for windows portability
ChangeLog:- removed the contents of history.h .. obsolete
ChangeLog:- added IM_IMAGE_ADDR() macro
ChangeLog:- handle errors from TIFF lib correctly
ChangeLog:- configure fixes for cygwin
ChangeLog:- CMYK TIFF write fixed
ChangeLog:- configure fixes for mingw
ChangeLog:- im_cp_desc() now copies Xoffset/Yoffset
ChangeLog:- started 7.7.24
ChangeLog:- reads CMYK TIFF
ChangeLog:- reads dpi from TIFFs
ChangeLog:- better float Xres/Yres
ChangeLog:- new header fields Xoffset and Yoffset ... used by functions to hint 
ChangeLog:- support added to c++ api and to header
ChangeLog:- im__lrmerge(), im__tbmerge(), im__affine(), im_insert(),
ChangeLog:- now uses <lcms.h>, not <lcms/lcms.h> for better suse w0rkage
ChangeLog:- better configure for fftw (uses libdfftw name if libfftw not found)
ChangeLog:- large file support with mmap() windows ... had to change 
ChangeLog:  - system
ChangeLog:	compiler: gcc 2.95.3, -O2, threads turned on
ChangeLog:  - benchmarks
ChangeLog:	cpu-bound: im_sharpen fred.v fred3.v 11 1.5 20 50 1 2
ChangeLog:	io-bound: im_insert fred.v fred2.v fred3.v 4000 0
ChangeLog:	worst-case: im_rot90 fred.v fred3.v 
ChangeLog:  - results
ChangeLog:	cpu-bound	real    0m3.712s	real    0m3.970s
ChangeLog:	io-bound	real    0m1.813s	real    0m1.865s
ChangeLog:	worst-case	real    0m1.344s	real    0m3.039s
ChangeLog:  the same though ... worst-case is having to constantly move windows about
ChangeLog:	io-bound 	real    2m52.759s	real    2m11.172s
ChangeLog:	worst-case	real    3m35.391s	real    3m50.760s
ChangeLog:- added -lm for better lcms detect
ChangeLog:- README notes for fftw on suse8
ChangeLog:- im_profile() sets HISTOGRAM for output image
ChangeLog:- im_copy()/im_copy_set() function descriptor no longer sets PTOP ... helps 
ChangeLog:- im_subsample()/im_zoom() fall back to im_copy() for shrink/grow == 1
ChangeLog:- im_lintra() falls back to im_copy() for scale == 1, offset == 0
ChangeLog:- no longer use Type == LUT ... all just Type == HISTOGRAM now
ChangeLog:- im_blend() was messed up for > 1 band images :(
ChangeLog:- started 7.7.23
ChangeLog:- im_XYZ2sRGB() wasn't setting Type = sRGB
ChangeLog:- im_icc_import() was broken for rgb
ChangeLog:- im_header_string() had wrong return type in function database
ChangeLog:- added im_flood_blob() 
ChangeLog:- added im_open_local_array() ... C API convenience function
ChangeLog:- oop, im_flood() was missing a man page
ChangeLog:- Type == FOURIER added to help visualisation
ChangeLog:- released as 7.7.22
ChangeLog:- JPEG, TIFF and PPM import all now set sRGB Type for RGB import
ChangeLog:- im_header_int(), im_header_double() and im_header_string() added to aid
ChangeLog:- now uses gettimeofday(), not time()
ChangeLog:- for consistency with other trig functions, im_c2amph() now returns degrees 
ChangeLog:- added im_c2rect() ... turn (amp, phase) to rectangular
ChangeLog:- added im_sign() ... unit vector in direction of value
ChangeLog:- better im_scaleps() ... old code was terrible
ChangeLog:- rewritten im_rotquad() ... now partial
ChangeLog:- im_icc_export()/_import() now do ABSOLUTE correctly
ChangeLog:- added im_icc_ac2rc() ... converts absolute to relative colorimetry 
ChangeLog:- added im_copy_set(3) ... like im_copy(), but set informational header fields
ChangeLog:- added im_ceil(), im_floor()
ChangeLog:- im_Lab2LabQ was not clipping a/b range correctly
ChangeLog:- im_icc_export(), own ABSOLUTE mode
ChangeLog:- released as 7.7.21
ChangeLog:- im_remainderconst_vec broken for float/double
ChangeLog:- added Yxy colourspace
ChangeLog:- auug, libtool was all messed up ... redone all the autotools stuff 
ChangeLog:- uses libtool convenience libraries to build vips in sections
ChangeLog:- uses config subdir for temp files and .m4 things
ChangeLog:- patched stupid suse config.guess
ChangeLog:- vips2dj patched for better raw cmyk
ChangeLog:- released as 7.7.20
ChangeLog:- im_vips2jpeg*() and im_vips2ppm() now both partial
ChangeLog:- started updating the C++ guide
ChangeLog:- had to change the location of the C++ headers :-( all C++ progs should now
ChangeLog:- changes for Mac OS X 
ChangeLog:- several functions were missing IM_FN_PIO in their descriptor ... this was
ChangeLog:- im_system() now defaults "/tmp" for temp files
ChangeLog:- STRING input and output args were broken for C++ :-(
ChangeLog:- threads exit more quickly on error
ChangeLog:- im_min()/im_max() now partial (at last)
ChangeLog:- im_remainderconst()/im_remainderconst_vec() added
ChangeLog:- --with-dmalloc configure switch
ChangeLog:- vips2dj does CMYK and mono too
ChangeLog:- im_vips2tiff() allows any number of bands (but not the right way to
ChangeLog:- old ICC profile reader removed
ChangeLog:- little cms wrapped ... configure spots it, im_icc_transform() uses it to map
ChangeLog:- also im_icc_import() and im_icc_export() so you can see PCS images
ChangeLog:- im_icc_present() to test for existence of lib
ChangeLog:- README fixes
ChangeLog:- TODO changes
ChangeLog:- oops, DEBUG left on in im_invertlut()
ChangeLog:- im_fwfft.c/im_invfft.c now use libfftw if available ... about 5x speed up
ChangeLog:- added FIND_FFTW autoconf macro
ChangeLog:- include/vips/proto.h changes
ChangeLog:- started 7.7.19
ChangeLog:- im_log_dmask() was broken (thanks matt)
ChangeLog:- casts between VDMask and VIMask were broken (thanks matt)
ChangeLog:- various error msgs improvements and tiny man page fixes
ChangeLog:- tb/lr merge first/last cache moved to per-call state for better sharing
ChangeLog:- im_remosaic() bails out faster on error and makes better error messages
ChangeLog:- im_vips2tiff() pyramids stop at tilesize, not 64x64
ChangeLog:- im_remosaic() is smarter, and works better with im_global_balance()
ChangeLog:- im_affine() 2x faster
ChangeLog:- started 7.7.18
ChangeLog:- vips.m4 and libsrc/Makefile.am fixes for IRIX
ChangeLog:- vips/thread.h and vips/threadgroup.h were missing extern "C" for C++ 
ChangeLog:- VImage::write() now tracks dependencies, so you can write() to a partial
ChangeLog:- new VImage::print() function for debugging
ChangeLog:- added im_print()
ChangeLog:- started 7.7.17
ChangeLog:- im_rect_unionrect() and im_rect_intersectrect() safer for repeated args
ChangeLog:- im_video_v4l() no longer perrror()s on ioctl fail for less spam
ChangeLog:- started 7.7.16
ChangeLog:- im_version_string() really does return the date as well now
ChangeLog:- im_guess_prefix() extra smartness for relative path names
ChangeLog:- VImage() no longer uses tmpnam() (thanks Paul)
ChangeLog:- renamed im_fexists() as im_existsf()
ChangeLog:- ppm man pages added (doh)
ChangeLog:- warnings on g++ 2.96 fixed
ChangeLog:- started 7.7.15
ChangeLog:- im_video_v4l() failed to compile on non-linux platforms
ChangeLog:- im_remosaic() added
ChangeLog:- im_*merge() are more intelligent about transparency in bizarre overlaps
ChangeLog:- grr! putenv() semantics change on more recent clibs ... should be safer
ChangeLog:- VDisplay( "display name" ) segved on unknown display :-( thanks mike
ChangeLog:- contrib tools get data files from share/vips/xxx area now
ChangeLog:- im_vipshome() renamed as im_guess_prefix(), reworked for new package layout
ChangeLog:- doc/ build sorted out
ChangeLog:- ... but of course, docs still need updating for 7.8
ChangeLog:- fix to im_vipshome()
ChangeLog:- ip2 renamed as nip
ChangeLog:- split to library only ... separate ip and nip packages
ChangeLog:- new VIPS_VERSION_* macros set from configure.in in vips/version.h.in
ChangeLog:- vips.m4 VIPS finder
ChangeLog:- reworked README, doc/README and TODO
ChangeLog:- now installs to /usr/local/ by default
ChangeLog:- fmask4th.c was including varargs.h ... d'oh
ChangeLog:- include area reorganised: everything inside <vips/..> now ... hopefully the
ChangeLog:  only user-visible change is that all plain C progs need to change:
ChangeLog:- im_setupout() was missing some #includes
ChangeLog:- started 7.7.14
ChangeLog:- added libxml dependency for ip2
ChangeLog:- im_conv(), im_convf(), im_convsep(), im_convsepf() now reject masks with 
ChangeLog:- started 7.7.12
ChangeLog:- started 7.7.11
ChangeLog:- oop, im_histeq() and im_tonemap() also missed
ChangeLog:- better error messages from im_run_command()
ChangeLog:- started 7.7.10
ChangeLog:- im_sharpen() failed due to change in im_band_extract() offset
ChangeLog:- started 7.7.9
ChangeLog:- im_open(,"w") open() delayed until im_setupout(), very slightly safer
ChangeLog:- updated im_open() man page
ChangeLog:- im_tiff2vips() now embeds index in filename ... and it's page number (from
ChangeLog:- finally bit the bullet ... im_extract()/im_extract_band() now number from 
ChangeLog:- and im_lrmosaic()/im_tbmosaic() bandno param too
ChangeLog:- im_region_free() now frees immediately
ChangeLog:- im_vips2tiff() man page updated for deflate, 2 years late
ChangeLog:- oops, limit wrong on im_rank()
ChangeLog:- better post_install for --prefix outside VIPS's tree
ChangeLog:- -ltiff needs -lm in acinclude.m4 ... fixes configure on redhat 7.x
ChangeLog:- started 7.7.8
ChangeLog:- im_invertlut() added 
ChangeLog:- im_colour_temperature, im_XYZ2Lab_temp, im_Lab2XYZ_temp added
ChangeLog:- ... colour temp stuff needs sorting out properly
ChangeLog:- added vips-config script, cf. gtk-config
ChangeLog:- --without-threads option added
ChangeLog:- did a bit of work on the C++ API docs
ChangeLog:- added im_tiff2vips_header(), im_jpeg2vips_header() and im_ppm2vips_header()
ChangeLog:- header uses these to print fields quickly
ChangeLog:- switched to config.h
ChangeLog:- configure.in rewritten ... much nicer, fewer options, more automatic
ChangeLog:- im_matinv() didn't free stuff correctly on singular matrix
ChangeLog:- vips2dj now knows about 5000ps printers
ChangeLog:- allow RW mode for non-native VIPS image files, for 8 bit images
ChangeLog:- started 7.7.7
ChangeLog:- im_addgnoise() did not work for >1 band images
ChangeLog:- configure options to remove support for JPEG and TIFF ... helpful for a no-
ChangeLog:- im_(v)snprintf() added
ChangeLog:- all sprintf()s removed
ChangeLog:- im_affine() had a rounding problem
ChangeLog:- tiny mosaicing bug fixed in im__lrcalcon
ChangeLog:- started 7.7.6
ChangeLog:- new iblend code in im_tbmerge() was typo-d 
ChangeLog:- mosaic1 was broken by affine too
ChangeLog:- im_image() failed for FMTUCHAR
ChangeLog:- started 7.7.5
ChangeLog:- im_sharpen() uses seperable convolution for big speed up
ChangeLog:- new "Print" menu
ChangeLog:- REALVEC renamed as DOUBLEVEC
ChangeLog:- added IMAGEVEC
ChangeLog:- added IM_INPUT_IMAGEVEC
ChangeLog:- gbandjoin now has function description
ChangeLog:- new function im_maxvalue()
ChangeLog:- im_compass()/im_lindetect() reimplemented with im_conv()/im_maxvalue(), 
ChangeLog:- im_gradient() reimplemented with im_conv()/im_abs()/im_add(), about 30%
ChangeLog:- new function, im_clip2fmt() converts between any image formats ...
ChangeLog:- legacy im_clip2us() etc. functions now just call this
ChangeLog:- im_conv() rewritten, simpler, about 10% faster
ChangeLog:- im_convsep() rewritten, now does any non-complex type, partial, 20% faster
ChangeLog:- new functions: im_convf(), im_convsepf() for DOUBLEMASK
ChangeLog:- raw versions of each
ChangeLog:- legacy convolvers (eg. im_convbi()) removed
ChangeLog:- new function im_blend()
ChangeLog:- new function im_lab_morph()
ChangeLog:- speed up to im_ifthenelse()
ChangeLog:- speed up to im_*merge() (uses integer arithmetic for integer blends)
ChangeLog:- tiny speed ups to im_histgr() 
ChangeLog:- speed ups to im_maplut() 
ChangeLog:- new functions: im_histnorm(), im_histcum()
ChangeLog:- im_histeq() more general
ChangeLog:- im_vipshome() --- better behaviour for relative paths
ChangeLog:- new video package
ChangeLog:- im_video_v4l1() (video for linux) added
ChangeLog:- configure.in switches to turn v4l1 on and off
ChangeLog:- new im_histspec() implementation ... more general, bugs removed
ChangeLog:- better vips2dj usage message
ChangeLog:- im_image_sanity() added, called in various places in iofuncs
ChangeLog:- added 'check' and 'name' class member stuff to ip from ip_gtk2
ChangeLog:- new "Plot" menu
ChangeLog:- new "Overlay" menu
ChangeLog:- more stuff in _stdenv/_list ... curried forms of head/tail etc.
ChangeLog:- started 7.7.4
ChangeLog:- vips2dj and vdump now use im_vipshome()
ChangeLog:- new im_vipshome() function
ChangeLog:- min()/max() macros renamed as MIN()/MAX()
ChangeLog:- new im_load_plugins() function
ChangeLog:- vips.exe and ip now load $VIPSHOME/lib plugins at startup
ChangeLog:- mosaicing functions now have an extra max blend width parameter
ChangeLog:- fixed tbmerge no overlap detect
ChangeLog:- started 7.7.3
ChangeLog:- vips.h fixes for cygwin/wingdi conflict
ChangeLog:- added im_vips2ppm(), im_open() imports and exports it
ChangeLog:- fixed nasty implicit output conversion problem for PIO dispatch() calls
ChangeLog:- added im_ppm2vips()
ChangeLog:- configure.in fixes ... jpeg found correctly now
ChangeLog:- searches for libz as well
ChangeLog:- started 7.7.2
ChangeLog:- speed up to lab2labq
ChangeLog:- started 7.7.1
ChangeLog:- oops, im_open() was missing an 'else' in jpeg/tiff load
ChangeLog:- im_vips2tiff() now has mode string embedded in output filename
ChangeLog:- im_vips2jpeg() now has qfac in output filename
ChangeLog:- im_open() understands this
ChangeLog:- new im_image() function ... wraps a VIPS image around a memory buffer
ChangeLog:- C++ layer changes:
ChangeLog:- more consts added to vips protos
ChangeLog:- minor configure.in changes to help solaris
ChangeLog:- removed _TIFFmalloc() and _TIFFfree() calls
ChangeLog:- fixed rounding problem in generate grid
ChangeLog:- fixup to im_system() temp dir
ChangeLog:- added im_system()
ChangeLog:- small tidies
ChangeLog:- better plugin test in configure.in
ChangeLog:- fixes to Makefile.am in ip/src* and configure.in, to help ip find the right
ChangeLog:  gtk includes on systems with more than one gtk-xxx installed
ChangeLog:- now builds ip and ip_gtk2
ChangeLog:- configure.in fixes for xil and some TIFF/JPEG strangeness
ChangeLog:- im_global_balancef() was broken! d'oh
ChangeLog:- note in README about enabling video cards
ChangeLog:- configure now searches for xil ... FIND_XIL macro
ChangeLog:- im_zoom() spots integer overflow
ChangeLog:- better shape set on region drag end in ip
ChangeLog:- better zoom-too-far handling in ip
ChangeLog:- fixes to configure etc. to help cygwin
ChangeLog:- jpeg is now searched for too ... FIND_JPEG macro
ChangeLog:- global_balance() now uses new affine() atuff
ChangeLog:- mosaic1 stuff now uses new affine() funcs
ChangeLog:- added Joe's docs
ChangeLog:- im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0
ChangeLog:- new function: im_affine()
ChangeLog:- similarity*() now in terms of affine()
ChangeLog:- tests for error return in reduce.c from maplut
ChangeLog:- small clean-ups
ChangeLog:- im_version() added, new iofuncs package for it
ChangeLog:- ip did not call zero-input-arg vips functions 
ChangeLog:- vips.c did not like zero-input-arg functions
ChangeLog:- Sobel filter was a bit broken
ChangeLog:- menu reorganisation
ChangeLog:- generate gauss mask dialog
ChangeLog:- reworked text file IO, better error messages
ChangeLog:- reworked .iprc filename stuff, cleaner
ChangeLog:- better menu set switcher in calc preferences
ChangeLog:- ip now thinks it's 7.7
ChangeLog:- did a spellcheck on the ip guide
ChangeLog:- 7.7 started!
ChangeLog:- srgb D65->D50 converter
ChangeLog:- Negate added to arith
ChangeLog:- find similar pixel value dialog
ChangeLog:- find similar colour dialog
ChangeLog:- paste into background dialog
ChangeLog:- adjust labq was mising
ChangeLog:- shrink image defaulted to /2 not /1
ChangeLog:- sharpdropshadow broken
ChangeLog:- Rotate.* broken
ChangeLog:- vips-7.6.3 release
ChangeLog:- ip didn't report space free on >2GB filesystems correctly
ChangeLog:- ip did not link statically against libXpm on solaris7
ChangeLog:- im_histplot() failed for all 0's histogram
ChangeLog:- new profile_image dialog
ChangeLog:- man pages for im_sRGB2XYZ/im_XYZ2sRGB were broken
ChangeLog:- new colourize image dialog
ChangeLog:- new shrink image image dialog
ChangeLog:- new expand image image dialog
ChangeLog:- better doc Makefiles
ChangeLog:- more menu reorganising
ChangeLog:- new image_to_mask/mask_to_image buttons
ChangeLog:- new match_two_images dialog
ChangeLog:- new measure_colour_chart dialog
ChangeLog:- new custom LABQ sharpen in Image menu
ChangeLog:- configure support for SGI video (thanks Ruven)
ChangeLog:- menu fiddling in ip
ChangeLog:- new "resize canvas" menu item
ChangeLog:- im_insert_noexpand() added, no docs tho'
ChangeLog:- new ip menu item: Image=>Adjust white/black/saturation of LabQ 
ChangeLog:- fixed bug in decompose complex number
ChangeLog:- browse-icons now ignores errors
ChangeLog:- better error msg for "12 12" etc cases
ChangeLog:- open hi-res gives proper error msg if no file found
ChangeLog:- made file-select boxes a bit more compact and clearer
ChangeLog:- updated configure.in for vips-examples-7.6
ChangeLog:- new column start point moved
ChangeLog:- vdump now defaults to subsample 1, portrait
ChangeLog:- navigation boxes were broken
ChangeLog:- no longer shrink-to-fit if loading as high res
ChangeLog:- better positioning of zoom windows
ChangeLog:- removed some old cruft
ChangeLog:- ooops, im_remainder() got lost somehow
ChangeLog:- refguide converted to latex and updated 
ChangeLog:- cppguide updated
ChangeLog:- libguide converted to latex and updated
ChangeLog:- ip guide now latex2htmls cleanly ... still needs updating tho'
ChangeLog:- cpp/app guide latex2html redone
ChangeLog:- configure no longer adds -32 to IRIX builds for you
ChangeLog:- some more stuff in README
ChangeLog:- simple DEBUGM malloc tracking, made libsrc/iofuncs/memory.c
ChangeLog:- changed im_malloc() to return void *
ChangeLog:- removed duplicate im_malloc() proto from util.h
ChangeLog:- changed all malloc/free to go through im_malloc()/im_free()
ChangeLog:- double-click on error image now pops a load browser and an error dialog
ChangeLog:- add-new-column no longer scrolls to right edge of workspace
ChangeLog:- better scroll-to-bottom on item add
ChangeLog:- load ws twice does not cause 'already open' errors
ChangeLog:- memorise directory button in fsb
ChangeLog:- new FIND_TIFF/FIND_MOTIF macros for acinclude.m4
ChangeLog:- new ./configure switches, see ./configure --help
ChangeLog:- enabled static libs
ChangeLog:- broke action_proc_bop() into smaller functions, stops bad code gen on 
ChangeLog:- restored old Makefiles in doc/src/ipguide
ChangeLog:- vips7.6 script renamed as vips-7.6
ChangeLog:- replace image was broken
ChangeLog:- some menu reorganisation
ChangeLog:- 'reload all menus' button
ChangeLog:- computed regions in ip were broken
ChangeLog:- updated system.iprc defaults
ChangeLog:- new menu item: adjust white/black points
ChangeLog:- browse icons was broken
ChangeLog:- greyscale 16-bit tiled tiff was broken
ChangeLog:- extra mutex locks for TIFF*() in im_tiff2vips()
ChangeLog:- some automake probs fixed
ChangeLog:- squished two ip bugs
ChangeLog:- fixed problem with pthreads, now works on suse6.2 as well
ChangeLog:- new API stuff for threaded evaluation with im_threadgroup_t
ChangeLog:- new public interface provide platform independent threads/locks/semaphores
ChangeLog:- no error box if you zoom out too far now
ChangeLog:- lr/tb merge blend was not quite right ... should be smoother now
ChangeLog:- histplot broken for float images
ChangeLog:- better mono->labq converter
ChangeLog:- more portable ispoweroftwo detect for freq filter stuff
ChangeLog:- better graphics expose handling
ChangeLog:- >/< stuff in ip was a bit mixed up
ChangeLog:- ink preview fixed for mono images
ChangeLog:- help popup fixed
ChangeLog:- linedetect and sobel filters for ip, thnx Kirk
ChangeLog:- Find_histogram was broken
ChangeLog:- im_profile() man pages was broken
ChangeLog:- ooops, ip had old set of macros
ChangeLog:- im_and/im_or/im_eor now work for any integer type
ChangeLog:- initial heap block larger to avoid start gcs
ChangeLog:- def slicer fixed
ChangeLog:- larger max heap
ChangeLog:- toolkits with initial '_' hidden by default
ChangeLog:- custom recomb
ChangeLog:- dialog.def removed
ChangeLog:- ... other menu fixes
ChangeLog:- generate grid menu
ChangeLog:- im_remainder() added
ChangeLog:- new cursor change code, hglass rotates during comp!
ChangeLog:- dialog.c handles cursor changes better
ChangeLog:- rubber band in paintbox displays
ChangeLog:- mag widget stays on right!
ChangeLog:- undo/redo single pixel paint ops
ChangeLog:- heap size control from prefs
ChangeLog:- cancel for reductions as well as for image calc
ChangeLog:- browse stuff reworked, no more .icon.v files
ChangeLog:- save stops you overwriting open .v files
ChangeLog:- better animate_countdown() handling
ChangeLog:- better resize behaviour for bars added to images
ChangeLog:- better code generation, bug fixed in state tracking
ChangeLog:- auto recover from crash
config.guess:timestamp='2009-06-10'
config.guess:# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
config.guess:# 02110-1301, USA.
config.guess:# Please send patches to <config-patches@gnu.org>.  Submit a context
config.guess:me=`echo "$0" | sed -e 's,.*/,,'`
config.guess:  -h, --help         print this help, then exit
config.guess:  -t, --time-stamp   print date of last modification, then exit
config.guess:  -v, --version      print version number, then exit
config.guess:Report bugs and patches to <config-patches@gnu.org>."
config.guess:Try \`$me --help' for more information."
config.guess:while test $# -gt 0 ; do
config.guess:    --time-stamp | --time* | -t )
config.guess:    --version | -v )
config.guess:    --help | --h* | -h )
config.guess:    -- )     # Stop option processing
config.guess:    - )	# Use stdin as input.
config.guess:    -* )
config.guess:# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
config.guess:trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
config.guess:trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
config.guess: { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
config.guess: { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
config.guess: { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
config.guess:	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
config.guess:# (ghazi@noc.rutgers.edu 1994-08-24)
config.guess:if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
config.guess:UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
config.guess:UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
config.guess:UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
config.guess:UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
config.guess:# Note: order is significant - the case branches are not exclusive.
config.guess:	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
config.guess:	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
config.guess:	# switched to ELF, *-*-netbsd* would select the old
config.guess:	sysctl="sysctl -n hw.machine_arch"
config.guess:	    armeb) machine=armeb-unknown ;;
config.guess:	    arm*) machine=arm-unknown ;;
config.guess:	    sh3el) machine=shl-unknown ;;
config.guess:	    sh3eb) machine=sh-unknown ;;
config.guess:	    sh5el) machine=sh5le-unknown ;;
config.guess:	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
config.guess:		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
config.guess:			| grep -q __ELF__
config.guess:	# suitable tag, in the style of linux-gnu.
config.guess:		release='-gnu'
config.guess:		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
config.guess:	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
config.guess:	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
config.guess:	echo "${machine}-${os}${release}"
config.guess:	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
config.guess:	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
config.guess:	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
config.guess:	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
config.guess:	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
config.guess:		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
config.guess:	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
config.guess:	# types through head -n 1, so we only detect the type of CPU 0.
config.guess:	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
config.guess:	# 1.2 uses "1.2" for uname -r.
config.guess:	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
config.guess:	echo alpha-pc-interix
config.guess:	echo alpha-dec-winnt3.5
config.guess:	echo m68k-unknown-sysv4
config.guess:	echo ${UNAME_MACHINE}-unknown-amigaos
config.guess:	echo ${UNAME_MACHINE}-unknown-morphos
config.guess:	echo i370-ibm-openedition
config.guess:	echo s390-ibm-zvmoe
config.guess:        echo powerpc-ibm-os400
config.guess:	echo arm-acorn-riscix${UNAME_RELEASE}
config.guess:	echo arm-unknown-riscos
config.guess:    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
config.guess:	echo hppa1.1-hitachi-hiuxmpp
config.guess:    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
config.guess:		echo pyramid-pyramid-sysv3
config.guess:		echo pyramid-pyramid-bsd
config.guess:	echo pyramid-pyramid-svr4
config.guess:	echo sparc-icl-nx6
config.guess:	case `/usr/bin/uname -p` in
config.guess:	    sparc) echo sparc-icl-nx7; exit ;;
config.guess:	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
config.guess:	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
config.guess:	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
config.guess:	# If there is a compiler, see if it is configured for 64-bit objects.
config.guess:		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
config.guess:	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
config.guess:	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
config.guess:	case "`/usr/bin/arch -k`" in
config.guess:		UNAME_RELEASE=`uname -v`
config.guess:	# Japanese Language versions have a version number like `4.1.3-JL'.
config.guess:	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
config.guess:	echo m68k-sun-sunos${UNAME_RELEASE}
config.guess:		echo m68k-sun-sunos${UNAME_RELEASE}
config.guess:		echo sparc-sun-sunos${UNAME_RELEASE}
config.guess:	echo sparc-auspex-sunos${UNAME_RELEASE}
config.guess:        echo m68k-atari-mint${UNAME_RELEASE}
config.guess:	echo m68k-atari-mint${UNAME_RELEASE}
config.guess:        echo m68k-atari-mint${UNAME_RELEASE}
config.guess:        echo m68k-milan-mint${UNAME_RELEASE}
config.guess:        echo m68k-hades-mint${UNAME_RELEASE}
config.guess:        echo m68k-unknown-mint${UNAME_RELEASE}
config.guess:	echo m68k-apple-machten${UNAME_RELEASE}
config.guess:	echo powerpc-apple-machten${UNAME_RELEASE}
config.guess:	echo mips-dec-mach_bsd4.3
config.guess:	echo mips-dec-ultrix${UNAME_RELEASE}
config.guess:	echo vax-dec-ultrix${UNAME_RELEASE}
config.guess:	echo clipper-intergraph-clix${UNAME_RELEASE}
config.guess:	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
config.guess:	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
config.guess:	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
config.guess:	  exit (-1);
config.guess:	$CC_FOR_BUILD -o $dummy $dummy.c &&
config.guess:	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
config.guess:	echo mips-mips-riscos${UNAME_RELEASE}
config.guess:	echo powerpc-motorola-powermax
config.guess:    Motorola:*:4.3:PL8-*)
config.guess:	echo powerpc-harris-powermax
config.guess:	echo powerpc-harris-powermax
config.guess:	echo powerpc-harris-powerunix
config.guess:	echo m88k-harris-cxux7
config.guess:	echo m88k-motorola-sysv4
config.guess:	echo m88k-motorola-sysv3
config.guess:        UNAME_PROCESSOR=`/usr/bin/uname -p`
config.guess:		echo m88k-dg-dgux${UNAME_RELEASE}
config.guess:		echo m88k-dg-dguxbcs${UNAME_RELEASE}
config.guess:	    echo i586-dg-dgux${UNAME_RELEASE}
config.guess:	echo m88k-dolphin-sysv3
config.guess:	echo m88k-motorola-sysv3
config.guess:	echo m88k-tektronix-sysv3
config.guess:    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
config.guess:	echo m68k-tektronix-bsd
config.guess:	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
config.guess:	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
config.guess:	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
config.guess:	echo i386-ibm-aix
config.guess:	if [ -x /usr/bin/oslevel ] ; then
config.guess:	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
config.guess:			puts("powerpc-ibm-aix3.2.5");
config.guess:		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
config.guess:			echo rs6000-ibm-aix3.2.5
config.guess:		echo rs6000-ibm-aix3.2.4
config.guess:		echo rs6000-ibm-aix3.2
config.guess:	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
config.guess:	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
config.guess:	if [ -x /usr/bin/oslevel ] ; then
config.guess:	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
config.guess:	echo rs6000-ibm-aix
config.guess:    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
config.guess:	echo romp-ibm-bsd4.4
config.guess:    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
config.guess:	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
config.guess:	exit ;;                             # report: romp-ibm BSD 4.3
config.guess:	echo rs6000-bull-bosx
config.guess:	echo m68k-bull-sysv3
config.guess:	echo m68k-hp-bsd
config.guess:	echo m68k-hp-bsd4.4
config.guess:    9000/[34678]??:HP-UX:*:*)
config.guess:	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
config.guess:	    9000/[678][0-9][0-9])
config.guess:		if [ -x /usr/bin/getconf ]; then
config.guess:			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
config.guess:		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
config.guess:		    test -z "$HP_ARCH" && HP_ARCH=hppa
config.guess:	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
config.guess:	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
config.guess:	    # generating 64-bit code.  GNU and HP use different nomenclature:
config.guess:	    # => hppa2.0w-hp-hpux11.23
config.guess:	    # => hppa64-hp-hpux11.23
config.guess:	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
config.guess:		grep -q __LP64__
config.guess:	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
config.guess:    ia64:HP-UX:*:*)
config.guess:	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
config.guess:	echo ia64-hp-hpux${HPUX_REV}
config.guess:    3050*:HI-UX:*:*)
config.guess:		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
config.guess:		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
config.guess:		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
config.guess:		  default: puts ("hppa-hitachi-hiuxwe2"); break;
config.guess:	    puts ("m68k-hitachi-hiuxwe2");
config.guess:	  else puts ("unknown-hitachi-hiuxwe2");
config.guess:	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
config.guess:	echo unknown-hitachi-hiuxwe2
config.guess:	echo hppa1.1-hp-bsd
config.guess:	echo hppa1.0-hp-bsd
config.guess:	echo hppa1.0-hp-mpeix
config.guess:	echo hppa1.1-hp-osf
config.guess:	echo hppa1.0-hp-osf
config.guess:	if [ -x /usr/sbin/sysversion ] ; then
config.guess:	    echo ${UNAME_MACHINE}-unknown-osf1mk
config.guess:	    echo ${UNAME_MACHINE}-unknown-osf1
config.guess:	echo hppa1.1-hp-lites
config.guess:	echo c1-convex-bsd
config.guess:	if getsysinfo -f scalar_acc
config.guess:	then echo c32-convex-bsd
config.guess:	else echo c2-convex-bsd
config.guess:	echo c34-convex-bsd
config.guess:	echo c38-convex-bsd
config.guess:	echo c4-convex-bsd
config.guess:    CRAY*Y-MP:*:*:*)
config.guess:	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
config.guess:    CRAY*[A-Z]90:*:*:*)
config.guess:	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
config.guess:	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
config.guess:	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
config.guess:	      -e 's/\.[^.]*$/.X/'
config.guess:	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
config.guess:	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
config.guess:	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
config.guess:	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
config.guess:	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
config.guess:        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
config.guess:        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
config.guess:        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
config.guess:        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
config.guess:        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
config.guess:        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
config.guess:	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
config.guess:	echo sparc-unknown-bsdi${UNAME_RELEASE}
config.guess:	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
config.guess:		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
config.guess:		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
config.guess:		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
config.guess:	echo ${UNAME_MACHINE}-pc-cygwin
config.guess:	echo ${UNAME_MACHINE}-pc-mingw32
config.guess:    	# uname -m includes "-pc" on this system.
config.guess:    	echo ${UNAME_MACHINE}-mingw32
config.guess:	echo ${UNAME_MACHINE}-pc-pw32
config.guess:		echo i586-pc-interix${UNAME_RELEASE}
config.guess:		echo x86_64-unknown-interix${UNAME_RELEASE}
config.guess:		echo ia64-unknown-interix${UNAME_RELEASE}
config.guess:	echo i${UNAME_MACHINE}-pc-mks
config.guess:	echo x86_64-pc-mks
config.guess:	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
config.guess:	echo i586-pc-interix
config.guess:	echo ${UNAME_MACHINE}-pc-uwin
config.guess:	echo x86_64-unknown-cygwin
config.guess:	echo powerpcle-unknown-cygwin
config.guess:	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
config.guess:	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
config.guess:	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
config.guess:	echo ${UNAME_MACHINE}-pc-minix
config.guess:	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
config.guess:	    | grep -q __ARM_EABI__
config.guess:	    echo ${UNAME_MACHINE}-unknown-linux-gnu
config.guess:	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
config.guess:	echo ${UNAME_MACHINE}-unknown-linux-gnu
config.guess:	echo cris-axis-linux-gnu
config.guess:	echo crisv32-axis-linux-gnu
config.guess:    	echo frv-unknown-linux-gnu
config.guess:	echo ${UNAME_MACHINE}-unknown-linux-gnu
config.guess:	echo ${UNAME_MACHINE}-unknown-linux-gnu
config.guess:	echo ${UNAME_MACHINE}-unknown-linux-gnu
config.guess:	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
config.guess:	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
config.guess:	echo or32-unknown-linux-gnu
config.guess:	echo powerpc-unknown-linux-gnu
config.guess:	echo powerpc64-unknown-linux-gnu
config.guess:	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
config.guess:	objdump --private-headers /bin/sh | grep -q ld.so.1
config.guess:	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
config.guess:	echo sparc-unknown-linux-gnu
config.guess:	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
config.guess:	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
config.guess:	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
config.guess:	  *)    echo hppa-unknown-linux-gnu ;;
config.guess:	echo hppa64-unknown-linux-gnu
config.guess:	echo ${UNAME_MACHINE}-ibm-linux
config.guess:    	echo ${UNAME_MACHINE}-unknown-linux-gnu
config.guess:	echo ${UNAME_MACHINE}-unknown-linux-gnu
config.guess:	echo ${UNAME_MACHINE}-unknown-linux-gnu
config.guess:	echo ${UNAME_MACHINE}-dec-linux-gnu
config.guess:	echo x86_64-unknown-linux-gnu
config.guess:    	echo ${UNAME_MACHINE}-unknown-linux-gnu
config.guess:	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
config.guess:			 | sed -ne '/supported targets:/!d
config.guess:	  elf32-i386)
config.guess:		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
config.guess:	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
config.guess:		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
config.guess:	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
config.guess:	echo i386-sequent-sysv4
config.guess:	# I just have to hope.  -- rms.
config.guess:	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
config.guess:	echo ${UNAME_MACHINE}-pc-os2-emx
config.guess:    i*86:XTS-300:*:STOP)
config.guess:	echo ${UNAME_MACHINE}-unknown-stop
config.guess:	echo ${UNAME_MACHINE}-unknown-atheos
config.guess:	echo ${UNAME_MACHINE}-pc-syllable
config.guess:	echo i386-unknown-lynxos${UNAME_RELEASE}
config.guess:	echo ${UNAME_MACHINE}-pc-msdosdjgpp
config.guess:		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
config.guess:		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
config.guess:	case `/bin/uname -X | grep "^Machine"` in
config.guess:	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
config.guess:	if test -f /usr/options/cb.name; then
config.guess:		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
config.guess:		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
config.guess:	elif /bin/uname -X 2>/dev/null >/dev/null ; then
config.guess:		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
config.guess:		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
config.guess:		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
config.guess:		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
config.guess:		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
config.guess:		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
config.guess:		echo ${UNAME_MACHINE}-pc-sysv32
config.guess:        # uname -m prints for DJGPP always 'pc', but it prints nothing about
config.guess:	# this is a cross-build.
config.guess:	echo i586-pc-msdosdjgpp
config.guess:	echo i386-pc-mach3
config.guess:	echo i860-intel-osf1
config.guess:    i860:*:4.*:*) # i860-SVR4
config.guess:	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
config.guess:	else # Add other i860-SVR4 vendors below as they are discovered.
config.guess:	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
config.guess:	echo m68010-convergent-sysv
config.guess:	echo m68k-convergent-sysv
config.guess:    M680?0:D-NIX:5.3:*)
config.guess:	echo m68k-diab-dnix
config.guess:	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
config.guess:	test -r /etc/.relid \
config.guess:	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
config.guess:	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
config.guess:	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
config.guess:	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
config.guess:	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
config.guess:        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
config.guess:          && { echo i486-ncr-sysv4; exit; } ;;
config.guess:	test -r /etc/.relid \
config.guess:	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
config.guess:	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
config.guess:	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
config.guess:	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
config.guess:	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
config.guess:	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
config.guess:	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
config.guess:	echo m68k-unknown-lynxos${UNAME_RELEASE}
config.guess:	echo m68k-atari-sysv4
config.guess:	echo sparc-unknown-lynxos${UNAME_RELEASE}
config.guess:	echo rs6000-unknown-lynxos${UNAME_RELEASE}
config.guess:	echo powerpc-unknown-lynxos${UNAME_RELEASE}
config.guess:	echo mips-dde-sysv${UNAME_RELEASE}
config.guess:    RM*:ReliantUNIX-*:*:*)
config.guess:	echo mips-sni-sysv4
config.guess:    RM*:SINIX-*:*:*)
config.guess:	echo mips-sni-sysv4
config.guess:    *:SINIX-*:*:*)
config.guess:	if uname -p 2>/dev/null >/dev/null ; then
config.guess:		UNAME_MACHINE=`(uname -p) 2>/dev/null`
config.guess:		echo ${UNAME_MACHINE}-sni-sysv4
config.guess:		echo ns32k-sni-sysv
config.guess:        echo i586-unisys-sysv4
config.guess:	# How about differentiating between stratus architectures? -djm
config.guess:	echo hppa1.1-stratus-sysv4
config.guess:	echo i860-stratus-sysv4
config.guess:	echo ${UNAME_MACHINE}-stratus-vos
config.guess:	echo hppa1.1-stratus-vos
config.guess:	echo m68k-apple-aux${UNAME_RELEASE}
config.guess:    news*:NEWS-OS:6*:*)
config.guess:	echo mips-sony-newsos6
config.guess:	if [ -d /usr/nec ]; then
config.guess:	        echo mips-nec-sysv${UNAME_RELEASE}
config.guess:	        echo mips-unknown-sysv${UNAME_RELEASE}
config.guess:	echo powerpc-be-beos
config.guess:	echo powerpc-apple-beos
config.guess:	echo i586-pc-beos
config.guess:	echo i586-pc-haiku
config.guess:    SX-4:SUPER-UX:*:*)
config.guess:	echo sx4-nec-superux${UNAME_RELEASE}
config.guess:    SX-5:SUPER-UX:*:*)
config.guess:	echo sx5-nec-superux${UNAME_RELEASE}
config.guess:    SX-6:SUPER-UX:*:*)
config.guess:	echo sx6-nec-superux${UNAME_RELEASE}
config.guess:    SX-7:SUPER-UX:*:*)
config.guess:	echo sx7-nec-superux${UNAME_RELEASE}
config.guess:    SX-8:SUPER-UX:*:*)
config.guess:	echo sx8-nec-superux${UNAME_RELEASE}
config.guess:    SX-8R:SUPER-UX:*:*)
config.guess:	echo sx8r-nec-superux${UNAME_RELEASE}
config.guess:	echo powerpc-apple-rhapsody${UNAME_RELEASE}
config.guess:	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
config.guess:	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
config.guess:	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
config.guess:	UNAME_PROCESSOR=`uname -p`
config.guess:	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
config.guess:	echo i386-pc-qnx
config.guess:    NSE-?:NONSTOP_KERNEL:*:*)
config.guess:	echo nse-tandem-nsk${UNAME_RELEASE}
config.guess:    NSR-?:NONSTOP_KERNEL:*:*)
config.guess:	echo nsr-tandem-nsk${UNAME_RELEASE}
config.guess:    *:NonStop-UX:*:*)
config.guess:	echo mips-compaq-nonstopux
config.guess:	echo bs2000-siemens-sysv
config.guess:	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
config.guess:	# "uname -m" is not consistent, so use $cputype instead. 386
config.guess:	echo ${UNAME_MACHINE}-unknown-plan9
config.guess:    *:TOPS-10:*:*)
config.guess:	echo pdp10-unknown-tops10
config.guess:	echo pdp10-unknown-tenex
config.guess:    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
config.guess:	echo pdp10-dec-tops20
config.guess:    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
config.guess:	echo pdp10-xkl-tops20
config.guess:    *:TOPS-20:*:*)
config.guess:	echo pdp10-unknown-tops20
config.guess:	echo pdp10-unknown-its
config.guess:        echo mips-sei-seiux${UNAME_RELEASE}
config.guess:	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
config.guess:    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
config.guess:	    A*) echo alpha-dec-vms ; exit ;;
config.guess:	    I*) echo ia64-dec-vms ; exit ;;
config.guess:	    V*) echo vax-dec-vms ; exit ;;
config.guess:	echo i386-pc-xenix
config.guess:	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
config.guess:	echo ${UNAME_MACHINE}-pc-rdos
config.guess:	echo ${UNAME_MACHINE}-pc-aros
config.guess:  printf ("mips-sony-bsd\n"); exit (0);
config.guess:  printf ("m68k-sony-newsos%s\n",
config.guess:  printf ("arm-acorn-riscix\n"); exit (0);
config.guess:  printf ("m68k-hp-bsd\n"); exit (0);
config.guess:  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
config.guess:    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
config.guess:    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
config.guess:  printf ("ns32k-encore-sysv\n"); exit (0);
config.guess:  printf ("ns32k-encore-mach\n"); exit (0);
config.guess:  printf ("ns32k-encore-bsd\n"); exit (0);
config.guess:  printf ("i386-pc-bsd\n"); exit (0);
config.guess:  printf ("i386-sequent-dynix\n"); exit (0);
config.guess:  printf ("ns32k-sequent-dynix\n"); exit (0);
config.guess:	printf ("i386-sequent-ptx2\n"); exit (0);
config.guess:	printf ("i386-sequent-ptx1\n"); exit (0);
config.guess:    printf ("i386-sequent-ptx\n"); exit (0);
config.guess:      printf ("vax-dec-bsd4.3\n"); exit (0);
config.guess:      printf ("vax-dec-bsd4.3reno\n"); exit (0);
config.guess:      printf ("vax-dec-bsd\n"); exit (0);
config.guess:    printf ("vax-dec-bsd\n"); exit (0);
config.guess:    printf ("vax-dec-ultrix\n"); exit (0);
config.guess:  printf ("i860-alliant-bsd\n"); exit (0);
config.guess:$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
config.guess:test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
config.guess:if [ -x /usr/convex/getsysinfo ]
config.guess:    case `getsysinfo -f cpu_type` in
config.guess:	echo c1-convex-bsd
config.guess:	if getsysinfo -f scalar_acc
config.guess:	then echo c32-convex-bsd
config.guess:	else echo c2-convex-bsd
config.guess:	echo c34-convex-bsd
config.guess:	echo c38-convex-bsd
config.guess:	echo c4-convex-bsd
config.guess:pertinent to <config-patches@gnu.org> in order to provide the needed
config.guess:uname -m = `(uname -m) 2>/dev/null || echo unknown`
config.guess:uname -r = `(uname -r) 2>/dev/null || echo unknown`
config.guess:uname -s = `(uname -s) 2>/dev/null || echo unknown`
config.guess:uname -v = `(uname -v) 2>/dev/null || echo unknown`
config.guess:/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
config.guess:/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
config.guess:/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
config.guess:# eval: (add-hook 'write-file-hooks 'time-stamp)
config.guess:# time-stamp-start: "timestamp='"
config.guess:# time-stamp-format: "%:y-%02m-%02d"
config.guess:# time-stamp-end: "'"
config.h.in:/* define to open non-text files in binary mode */
config.h.in:/* define if you have liboil-0.3 installed. */
config.h.in:/* configure-time library directory */
config.h.in:/* configure-time install prefix */
config.h.in:/* Define to the sub-directory in which libtool stores uninstalled libraries.
config.h.in:/* Define for large files, on AIX-style hosts. */
config.sub:timestamp='2009-06-11'
config.sub:# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
config.sub:# 02110-1301, USA.
config.sub:# Please send patches to <config-patches@gnu.org>.  Submit a context
config.sub:#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
config.sub:# or in some cases, the newer four-part form:
config.sub:#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
config.sub:me=`echo "$0" | sed -e 's,.*/,,'`
config.sub:Usage: $0 [OPTION] CPU-MFR-OPSYS
config.sub:  -h, --help         print this help, then exit
config.sub:  -t, --time-stamp   print date of last modification, then exit
config.sub:  -v, --version      print version number, then exit
config.sub:Report bugs and patches to <config-patches@gnu.org>."
config.sub:Try \`$me --help' for more information."
config.sub:while test $# -gt 0 ; do
config.sub:    --time-stamp | --time* | -t )
config.sub:    --version | -v )
config.sub:    --help | --h* | -h )
config.sub:    -- )     # Stop option processing
config.sub:    - )	# Use stdin as input.
config.sub:    -* )
config.sub:# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
config.sub:# Here we must recognize all the valid KERNEL-OS combinations.
config.sub:maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
config.sub:  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
config.sub:  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
config.sub:  kopensolaris*-gnu* | \
config.sub:  storm-chaos* | os2-emx* | rtmk-nova*)
config.sub:    os=-$maybe_os
config.sub:    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
config.sub:    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
config.sub:    then os=`echo $1 | sed 's/.*-/-/'`
config.sub:### that things like config.sub decstation-3100 work.  We also
config.sub:	-sun*os*)
config.sub:	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
config.sub:	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
config.sub:	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
config.sub:	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
config.sub:	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
config.sub:	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
config.sub:	-apple | -axis | -knuth | -cray)
config.sub:        -bluegene*)
config.sub:	        os=-cnk
config.sub:	-sim | -cisco | -oki | -wec | -winbond)
config.sub:	-scout)
config.sub:	-wrs)
config.sub:		os=-vxworks
config.sub:	-chorusos*)
config.sub:		os=-chorusos
config.sub: 	-chorusrdb)
config.sub: 		os=-chorusrdb
config.sub:	-hiux*)
config.sub:		os=-hiuxwe2
config.sub:	-sco6)
config.sub:		os=-sco5v6
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-sco5)
config.sub:		os=-sco3.2v5
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-sco4)
config.sub:		os=-sco3.2v4
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-sco3.2.[4-9]*)
config.sub:		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-sco3.2v[4-9]*)
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-sco5v6*)
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-sco*)
config.sub:		os=-sco3.2v2
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-udk*)
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-isc)
config.sub:		os=-isc2.2
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-clix*)
config.sub:		basic_machine=clipper-intergraph
config.sub:	-isc*)
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
config.sub:	-lynx*)
config.sub:		os=-lynxos
config.sub:	-ptx*)
config.sub:		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
config.sub:	-windowsnt*)
config.sub:		os=`echo $os | sed -e 's/windowsnt/winnt/'`
config.sub:	-psos*)
config.sub:		os=-psos
config.sub:	-mint | -mint[0-9]*)
config.sub:		basic_machine=m68k-atari
config.sub:		os=-mint
config.sub:# Decode aliases for certain CPU-COMPANY combinations.
config.sub:	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
config.sub:	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
config.sub:		basic_machine=$basic_machine-unknown
config.sub:		basic_machine=$basic_machine-unknown
config.sub:		os=-none
config.sub:		basic_machine=mt-unknown
config.sub:	  basic_machine=$basic_machine-pc
config.sub:	*-*-*)
config.sub:	580-* \
config.sub:	| a29k-* \
config.sub:	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
config.sub:	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
config.sub:	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
config.sub:	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
config.sub:	| avr-* | avr32-* \
config.sub:	| bfin-* | bs2000-* \
config.sub:	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
config.sub:	| clipper-* | craynv-* | cydra-* \
config.sub:	| d10v-* | d30v-* | dlx-* \
config.sub:	| elxsi-* \
config.sub:	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
config.sub:	| h8300-* | h8500-* \
config.sub:	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
config.sub:	| i*86-* | i860-* | i960-* | ia64-* \
config.sub:	| ip2k-* | iq2000-* \
config.sub:	| lm32-* \
config.sub:	| m32c-* | m32r-* | m32rle-* \
config.sub:	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
config.sub:	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
config.sub:	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
config.sub:	| mips16-* \
config.sub:	| mips64-* | mips64el-* \
config.sub:	| mips64octeon-* | mips64octeonel-* \
config.sub:	| mips64orion-* | mips64orionel-* \
config.sub:	| mips64r5900-* | mips64r5900el-* \
config.sub:	| mips64vr-* | mips64vrel-* \
config.sub:	| mips64vr4100-* | mips64vr4100el-* \
config.sub:	| mips64vr4300-* | mips64vr4300el-* \
config.sub:	| mips64vr5000-* | mips64vr5000el-* \
config.sub:	| mips64vr5900-* | mips64vr5900el-* \
config.sub:	| mipsisa32-* | mipsisa32el-* \
config.sub:	| mipsisa32r2-* | mipsisa32r2el-* \
config.sub:	| mipsisa64-* | mipsisa64el-* \
config.sub:	| mipsisa64r2-* | mipsisa64r2el-* \
config.sub:	| mipsisa64sb1-* | mipsisa64sb1el-* \
config.sub:	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
config.sub:	| mipstx39-* | mipstx39el-* \
config.sub:	| mmix-* \
config.sub:	| mt-* \
config.sub:	| msp430-* \
config.sub:	| nios-* | nios2-* \
config.sub:	| none-* | np1-* | ns16k-* | ns32k-* \
config.sub:	| orion-* \
config.sub:	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
config.sub:	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
config.sub:	| pyramid-* \
config.sub:	| romp-* | rs6000-* \
config.sub:	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
config.sub:	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
config.sub:	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
config.sub:	| sparclite-* \
config.sub:	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
config.sub:	| tahoe-* | thumb-* \
config.sub:	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
config.sub:	| tron-* \
config.sub:	| v850-* | v850e-* | vax-* \
config.sub:	| we32k-* \
config.sub:	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
config.sub:	| xstormy16-* | xtensa*-* \
config.sub:	| ymp-* \
config.sub:	| z8k-* | z80-*)
config.sub:		basic_machine=$basic_machine-unknown
config.sub:		basic_machine=i386-unknown
config.sub:		os=-bsd
config.sub:	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
config.sub:		basic_machine=m68000-att
config.sub:		basic_machine=we32k-att
config.sub:		basic_machine=a29k-amd
config.sub:		os=-udi
config.sub:		basic_machine=abacus-unknown
config.sub:		basic_machine=m68010-adobe
config.sub:		os=-scout
config.sub:		basic_machine=fx80-alliant
config.sub:		basic_machine=m68k-altos
config.sub:		basic_machine=a29k-none
config.sub:		os=-bsd
config.sub:		basic_machine=x86_64-pc
config.sub:	amd64-*)
config.sub:		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:		basic_machine=580-amdahl
config.sub:		os=-sysv
config.sub:	amiga | amiga-*)
config.sub:		basic_machine=m68k-unknown
config.sub:		basic_machine=m68k-unknown
config.sub:		os=-amigaos
config.sub:		basic_machine=m68k-unknown
config.sub:		os=-sysv4
config.sub:		basic_machine=m68k-apollo
config.sub:		os=-sysv
config.sub:		basic_machine=m68k-apollo
config.sub:		os=-bsd
config.sub:		basic_machine=i386-pc
config.sub:		os=-aros
config.sub:		basic_machine=m68k-apple
config.sub:		os=-aux
config.sub:		basic_machine=ns32k-sequent
config.sub:		os=-dynix
config.sub:		basic_machine=bfin-unknown
config.sub:		os=-linux
config.sub:	blackfin-*)
config.sub:		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:		os=-linux
config.sub:		basic_machine=powerpc-ibm
config.sub:		os=-cnk
config.sub:		basic_machine=c90-cray
config.sub:		os=-unicos
config.sub:		basic_machine=arm-unknown
config.sub:		os=-cegcc
config.sub:	convex-c1)
config.sub:		basic_machine=c1-convex
config.sub:		os=-bsd
config.sub:	convex-c2)
config.sub:		basic_machine=c2-convex
config.sub:		os=-bsd
config.sub:	convex-c32)
config.sub:		basic_machine=c32-convex
config.sub:		os=-bsd
config.sub:	convex-c34)
config.sub:		basic_machine=c34-convex
config.sub:		os=-bsd
config.sub:	convex-c38)
config.sub:		basic_machine=c38-convex
config.sub:		os=-bsd
config.sub:		basic_machine=j90-cray
config.sub:		os=-unicos
config.sub:		basic_machine=craynv-cray
config.sub:		os=-unicosmp
config.sub:		basic_machine=cr16-unknown
config.sub:		os=-elf
config.sub:		basic_machine=m68k-crds
config.sub:	crisv32 | crisv32-* | etraxfs*)
config.sub:		basic_machine=crisv32-axis
config.sub:	cris | cris-* | etrax*)
config.sub:		basic_machine=cris-axis
config.sub:		basic_machine=crx-unknown
config.sub:		os=-elf
config.sub:	da30 | da30-*)
config.sub:		basic_machine=m68k-da30
config.sub:	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
config.sub:		basic_machine=mips-dec
config.sub:		basic_machine=pdp10-dec
config.sub:		os=-tops10
config.sub:		basic_machine=pdp10-dec
config.sub:		os=-tops20
config.sub:	delta | 3300 | motorola-3300 | motorola-delta \
config.sub:	      | 3300-motorola | delta-motorola)
config.sub:		basic_machine=m68k-motorola
config.sub:		basic_machine=m88k-motorola
config.sub:		os=-sysv3
config.sub:		basic_machine=i686-pc
config.sub:		os=-dicos
config.sub:		basic_machine=i586-pc
config.sub:		os=-msdosdjgpp
config.sub:	dpx20 | dpx20-*)
config.sub:		basic_machine=rs6000-bull
config.sub:		os=-bosx
config.sub:	dpx2* | dpx2*-bull)
config.sub:		basic_machine=m68k-bull
config.sub:		os=-sysv3
config.sub:		basic_machine=a29k-amd
config.sub:		os=-ebmon
config.sub:		basic_machine=elxsi-elxsi
config.sub:		os=-bsd
config.sub:		basic_machine=ns32k-encore
config.sub:		basic_machine=m68k-ericsson
config.sub:		os=-ose
config.sub:		basic_machine=i860-alliant
config.sub:		basic_machine=ns32k-ns
config.sub:		basic_machine=tron-gmicro
config.sub:		os=-sysv
config.sub:		basic_machine=i386-pc
config.sub:		os=-go32
config.sub:		basic_machine=hppa1.1-hitachi
config.sub:		os=-hiuxwe2
config.sub:		basic_machine=h8300-hitachi
config.sub:		os=-hms
config.sub:		basic_machine=h8300-hitachi
config.sub:		os=-xray
config.sub:		basic_machine=h8500-hitachi
config.sub:		os=-hms
config.sub:		basic_machine=m88k-harris
config.sub:		os=-sysv3
config.sub:	hp300-*)
config.sub:		basic_machine=m68k-hp
config.sub:		basic_machine=m68k-hp
config.sub:		os=-bsd
config.sub:		basic_machine=m68k-hp
config.sub:		os=-hpux
config.sub:	hp3k9[0-9][0-9] | hp9[0-9][0-9])
config.sub:		basic_machine=hppa1.0-hp
config.sub:	hp9k2[0-9][0-9] | hp9k31[0-9])
config.sub:		basic_machine=m68000-hp
config.sub:	hp9k3[2-9][0-9])
config.sub:		basic_machine=m68k-hp
config.sub:	hp9k6[0-9][0-9] | hp6[0-9][0-9])
config.sub:		basic_machine=hppa1.0-hp
config.sub:	hp9k7[0-79][0-9] | hp7[0-79][0-9])
config.sub:		basic_machine=hppa1.1-hp
config.sub:	hp9k78[0-9] | hp78[0-9])
config.sub:		# FIXME: really hppa2.0-hp
config.sub:		basic_machine=hppa1.1-hp
config.sub:		# FIXME: really hppa2.0-hp
config.sub:		basic_machine=hppa1.1-hp
config.sub:	hp9k8[0-9][13679] | hp8[0-9][13679])
config.sub:		basic_machine=hppa1.1-hp
config.sub:	hp9k8[0-9][0-9] | hp8[0-9][0-9])
config.sub:		basic_machine=hppa1.0-hp
config.sub:	hppa-next)
config.sub:		os=-nextstep3
config.sub:		basic_machine=hppa1.1-hp
config.sub:		os=-osf
config.sub:		basic_machine=hppa1.1-hp
config.sub:		os=-proelf
config.sub:	i370-ibm* | ibm*)
config.sub:		basic_machine=i370-ibm
config.sub:		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
config.sub:		os=-sysv32
config.sub:		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
config.sub:		os=-sysv4
config.sub:		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
config.sub:		os=-sysv
config.sub:		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
config.sub:		os=-solaris2
config.sub:		basic_machine=i386-mach
config.sub:		os=-mach
config.sub:	i386-vsta | vsta)
config.sub:		basic_machine=i386-unknown
config.sub:		os=-vsta
config.sub:		basic_machine=mips-sgi
config.sub:		    -irix*)
config.sub:			os=-irix4
config.sub:		basic_machine=m68k-isi
config.sub:		os=-sysv
config.sub:		basic_machine=m68k-unknown
config.sub:		os=-linux
config.sub:	m68knommu-*)
config.sub:		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:		os=-linux
config.sub:	m88k-omron*)
config.sub:		basic_machine=m88k-omron
config.sub:		basic_machine=mips-mips
config.sub:		os=-sysv
config.sub:		basic_machine=ns32k-utek
config.sub:		os=-sysv
config.sub:		basic_machine=i386-pc
config.sub:		os=-mingw32
config.sub:		basic_machine=arm-unknown
config.sub:		os=-mingw32ce
config.sub:		basic_machine=m68000-convergent
config.sub:	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
config.sub:		basic_machine=m68k-atari
config.sub:		os=-mint
config.sub:	mips3*-*)
config.sub:		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
config.sub:		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
config.sub:		basic_machine=m68k-rom68k
config.sub:		os=-coff
config.sub:		basic_machine=powerpc-unknown
config.sub:		os=-morphos
config.sub:		basic_machine=i386-pc
config.sub:		os=-msdos
config.sub:	ms1-*)
config.sub:		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
config.sub:		basic_machine=i370-ibm
config.sub:		os=-mvs
config.sub:		basic_machine=i486-ncr
config.sub:		os=-sysv4
config.sub:		basic_machine=i386-unknown
config.sub:		os=-netbsd
config.sub:		basic_machine=armv4l-rebel
config.sub:		os=-linux
config.sub:		basic_machine=m68k-sony
config.sub:		os=-newsos
config.sub:		basic_machine=m68030-sony
config.sub:		os=-newsos
config.sub:	news-3600 | risc-news)
config.sub:		basic_machine=mips-sony
config.sub:		os=-newsos
config.sub:		basic_machine=v70-nec
config.sub:		os=-sysv
config.sub:	next | m*-next )
config.sub:		basic_machine=m68k-next
config.sub:		    -nextstep* )
config.sub:		    -ns2*)
config.sub:		      os=-nextstep2
config.sub:		      os=-nextstep3
config.sub:		basic_machine=m68k-harris
config.sub:		os=-cxux
config.sub:		basic_machine=m88k-harris
config.sub:		os=-cxux
config.sub:		basic_machine=i960-intel
config.sub:		os=-nindy
config.sub:		basic_machine=i960-intel
config.sub:		os=-mon960
config.sub:		basic_machine=mips-compaq
config.sub:		os=-nonstopux
config.sub:		basic_machine=np1-gould
config.sub:	nsr-tandem)
config.sub:		basic_machine=nsr-tandem
config.sub:	op50n-* | op60c-*)
config.sub:		basic_machine=hppa1.1-oki
config.sub:		os=-proelf
config.sub:	openrisc | openrisc-*)
config.sub:		basic_machine=or32-unknown
config.sub:		basic_machine=powerpc-ibm
config.sub:		os=-os400
config.sub:		basic_machine=m68000-ericsson
config.sub:		os=-ose
config.sub:		basic_machine=m68k-none
config.sub:		os=-os68k
config.sub:	pa-hitachi)
config.sub:		basic_machine=hppa1.1-hitachi
config.sub:		os=-hiuxwe2
config.sub:		basic_machine=i860-intel
config.sub:		os=-osf
config.sub:		basic_machine=hppa-unknown
config.sub:		os=-linux
config.sub:	parisc-*)
config.sub:		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:		os=-linux
config.sub:		basic_machine=sparc-tti
config.sub:		basic_machine=m68k-tti
config.sub:	pc532 | pc532-*)
config.sub:		basic_machine=ns32k-pc532
config.sub:		basic_machine=i386-pc
config.sub:	pc98-*)
config.sub:		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:		basic_machine=i586-pc
config.sub:		basic_machine=i686-pc
config.sub:		basic_machine=i686-pc
config.sub:		basic_machine=i786-pc
config.sub:	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
config.sub:		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:	pentiumpro-* | p6-* | 6x86-* | athlon-*)
config.sub:		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
config.sub:		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:	pentium4-*)
config.sub:		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:		basic_machine=pn-gould
config.sub:	power)	basic_machine=power-ibm
config.sub:	ppc)	basic_machine=powerpc-unknown
config.sub:	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:	ppcle | powerpclittle | ppc-le | powerpc-little)
config.sub:		basic_machine=powerpcle-unknown
config.sub:	ppcle-* | powerpclittle-*)
config.sub:		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:	ppc64)	basic_machine=powerpc64-unknown
config.sub:	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
config.sub:		basic_machine=powerpc64le-unknown
config.sub:	ppc64le-* | powerpc64little-*)
config.sub:		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
config.sub:		basic_machine=i386-ibm
config.sub:		basic_machine=i586-unknown
config.sub:		os=-pw32
config.sub:		basic_machine=i386-pc
config.sub:		os=-rdos
config.sub:		basic_machine=m68k-rom68k
config.sub:		os=-coff
config.sub:		basic_machine=mips-siemens
config.sub:	rtpc | rtpc-*)
config.sub:		basic_machine=romp-ibm
config.sub:	s390 | s390-*)
config.sub:		basic_machine=s390-ibm
config.sub:	s390x | s390x-*)
config.sub:		basic_machine=s390x-ibm
config.sub:		basic_machine=a29k-amd
config.sub:		os=-udi
config.sub:		basic_machine=mipsisa64sb1-unknown
config.sub:		basic_machine=mipsisa64sb1el-unknown
config.sub:		basic_machine=mipsisa32-sde
config.sub:		os=-elf
config.sub:		basic_machine=mips-sei
config.sub:		os=-seiux
config.sub:		basic_machine=i386-sequent
config.sub:		basic_machine=sh-hitachi
config.sub:		os=-hms
config.sub:		basic_machine=sh5le-unknown
config.sub:		basic_machine=sh64-unknown
config.sub:	sparclite-wrs | simso-wrs)
config.sub:		basic_machine=sparclite-wrs
config.sub:		os=-vxworks
config.sub:		basic_machine=m68k-bull
config.sub:		os=-sysv2
config.sub:		basic_machine=spur-unknown
config.sub:		basic_machine=m68k-tandem
config.sub:		basic_machine=i860-stratus
config.sub:		os=-sysv4
config.sub:		basic_machine=m68000-sun
config.sub:		basic_machine=m68000-sun
config.sub:		os=-sunos3
config.sub:		basic_machine=m68000-sun
config.sub:		os=-sunos4
config.sub:		basic_machine=m68k-sun
config.sub:		os=-sunos3
config.sub:		basic_machine=m68k-sun
config.sub:		os=-sunos4
config.sub:		basic_machine=sparc-sun
config.sub:		os=-sunos3
config.sub:		basic_machine=sparc-sun
config.sub:		os=-sunos4
config.sub:		basic_machine=sparc-sun
config.sub:		os=-solaris2
config.sub:	sun3 | sun3-*)
config.sub:		basic_machine=m68k-sun
config.sub:		basic_machine=sparc-sun
config.sub:		basic_machine=i386-sun
config.sub:		basic_machine=sv1-cray
config.sub:		os=-unicos
config.sub:		basic_machine=i386-sequent
config.sub:		os=-dynix
config.sub:		basic_machine=alphaev5-cray
config.sub:		os=-unicos
config.sub:		basic_machine=t90-cray
config.sub:		os=-unicos
config.sub:		basic_machine=tic54x-unknown
config.sub:		os=-coff
config.sub:		basic_machine=tic55x-unknown
config.sub:		os=-coff
config.sub:		basic_machine=tic6x-unknown
config.sub:		os=-coff
config.sub:		basic_machine=tile-unknown
config.sub:		os=-linux-gnu
config.sub:		basic_machine=mipstx39-unknown
config.sub:		basic_machine=mipstx39el-unknown
config.sub:		basic_machine=pdp10-xkl
config.sub:		os=-tops20
config.sub:	tower | tower-32)
config.sub:		basic_machine=m68k-ncr
config.sub:		basic_machine=s390x-ibm
config.sub:		os=-tpf
config.sub:		basic_machine=a29k-amd
config.sub:		os=-udi
config.sub:		basic_machine=a29k-nyu
config.sub:		os=-sym1
config.sub:		basic_machine=v810-nec
config.sub:		os=-none
config.sub:		basic_machine=vax-dec
config.sub:		os=-sysv
config.sub:		basic_machine=vax-dec
config.sub:		os=-vms
config.sub:	vpp*|vx|vx-*)
config.sub:		basic_machine=f301-fujitsu
config.sub:		basic_machine=i960-wrs
config.sub:		os=-vxworks
config.sub:		basic_machine=m68k-wrs
config.sub:		os=-vxworks
config.sub:		basic_machine=a29k-wrs
config.sub:		os=-vxworks
config.sub:		basic_machine=w65-wdc
config.sub:		os=-none
config.sub:	w89k-*)
config.sub:		basic_machine=hppa1.1-winbond
config.sub:		os=-proelf
config.sub:		basic_machine=i686-pc
config.sub:		os=-mingw32
config.sub:		basic_machine=xps100-honeywell
config.sub:		basic_machine=ymp-cray
config.sub:		os=-unicos
config.sub:	z8k-*-coff)
config.sub:		basic_machine=z8k-unknown
config.sub:		os=-sim
config.sub:	z80-*-coff)
config.sub:		basic_machine=z80-unknown
config.sub:		os=-sim
config.sub:		basic_machine=none-none
config.sub:		os=-none
config.sub:		basic_machine=hppa1.1-winbond
config.sub:		basic_machine=hppa1.1-oki
config.sub:		basic_machine=hppa1.1-oki
config.sub:		basic_machine=romp-ibm
config.sub:		basic_machine=mmix-knuth
config.sub:		basic_machine=rs6000-ibm
config.sub:		basic_machine=vax-dec
config.sub:		basic_machine=pdp10-unknown
config.sub:		basic_machine=pdp11-dec
config.sub:		basic_machine=we32k-att
config.sub:		basic_machine=sh-unknown
config.sub:		basic_machine=sparc-sun
config.sub:		basic_machine=cydra-cydrome
config.sub:		basic_machine=orion-highlevel
config.sub:		basic_machine=clipper-highlevel
config.sub:	mac | mpw | mac-mpw)
config.sub:		basic_machine=m68k-apple
config.sub:	pmac | pmac-mpw)
config.sub:		basic_machine=powerpc-apple
config.sub:	*-unknown)
config.sub:		# Make sure to match an already-canonicalized machine name.
config.sub:	*-digital*)
config.sub:	*-commodore*)
config.sub:# Decode manufacturer-specific aliases for certain operating systems.
config.sub:	# -solaris* is a basic system type, with this one exception.
config.sub:	-solaris1 | -solaris1.*)
config.sub:		os=`echo $os | sed -e 's|solaris1|sunos4|'`
config.sub:	-solaris)
config.sub:		os=-solaris2
config.sub:	-svr4*)
config.sub:		os=-sysv4
config.sub:	-unixware*)
config.sub:		os=-sysv4.2uw
config.sub:	-gnu/linux*)
config.sub:		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
config.sub:	# -sysv* is not here because it comes later, after sysvr4.
config.sub:	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
config.sub:	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
config.sub:	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
config.sub:	      | -kopensolaris* \
config.sub:	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
config.sub:	      | -aos* | -aros* \
config.sub:	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
config.sub:	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
config.sub:	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
config.sub:	      | -openbsd* | -solidbsd* \
config.sub:	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
config.sub:	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
config.sub:	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
config.sub:	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
config.sub:	      | -chorusos* | -chorusrdb* | -cegcc* \
config.sub:	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
config.sub:	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
config.sub:	      | -uxpv* | -beos* | -mpeix* | -udk* \
config.sub:	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
config.sub:	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
config.sub:	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
config.sub:	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
config.sub:	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
config.sub:	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
config.sub:	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
config.sub:	-qnx*)
config.sub:		    x86-* | i*86-*)
config.sub:			os=-nto$os
config.sub:	-nto-qnx*)
config.sub:	-nto*)
config.sub:		os=`echo $os | sed -e 's|nto|nto-qnx|'`
config.sub:	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
config.sub:	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
config.sub:	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
config.sub:	-mac*)
config.sub:		os=`echo $os | sed -e 's|mac|macos|'`
config.sub:	-linux-dietlibc)
config.sub:		os=-linux-dietlibc
config.sub:	-linux*)
config.sub:		os=`echo $os | sed -e 's|linux|linux-gnu|'`
config.sub:	-sunos5*)
config.sub:		os=`echo $os | sed -e 's|sunos5|solaris2|'`
config.sub:	-sunos6*)
config.sub:		os=`echo $os | sed -e 's|sunos6|solaris3|'`
config.sub:	-opened*)
config.sub:		os=-openedition
config.sub:        -os400*)
config.sub:		os=-os400
config.sub:	-wince*)
config.sub:		os=-wince
config.sub:	-osfrose*)
config.sub:		os=-osfrose
config.sub:	-osf*)
config.sub:		os=-osf
config.sub:	-utek*)
config.sub:		os=-bsd
config.sub:	-dynix*)
config.sub:		os=-bsd
config.sub:	-acis*)
config.sub:		os=-aos
config.sub:	-atheos*)
config.sub:		os=-atheos
config.sub:	-syllable*)
config.sub:		os=-syllable
config.sub:	-386bsd)
config.sub:		os=-bsd
config.sub:	-ctix* | -uts*)
config.sub:		os=-sysv
config.sub:	-nova*)
config.sub:		os=-rtmk-nova
config.sub:	-ns2 )
config.sub:		os=-nextstep2
config.sub:	-nsk*)
config.sub:		os=-nsk
config.sub:	-sinix5.*)
config.sub:		os=`echo $os | sed -e 's|sinix|sysv|'`
config.sub:	-sinix*)
config.sub:		os=-sysv4
config.sub:        -tpf*)
config.sub:		os=-tpf
config.sub:	-triton*)
config.sub:		os=-sysv3
config.sub:	-oss*)
config.sub:		os=-sysv3
config.sub:	-svr4)
config.sub:		os=-sysv4
config.sub:	-svr3)
config.sub:		os=-sysv3
config.sub:	-sysvr4)
config.sub:		os=-sysv4
config.sub:	# This must come after -sysvr4.
config.sub:	-sysv*)
config.sub:	-ose*)
config.sub:		os=-ose
config.sub:	-es1800*)
config.sub:		os=-ose
config.sub:	-xenix)
config.sub:		os=-xenix
config.sub:	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
config.sub:		os=-mint
config.sub:	-aros*)
config.sub:		os=-aros
config.sub:	-kaos*)
config.sub:		os=-kaos
config.sub:	-zvmoe)
config.sub:		os=-zvmoe
config.sub:	-dicos*)
config.sub:		os=-dicos
config.sub:	-none)
config.sub:		# Get rid of the `-' at the beginning of $os.
config.sub:		os=`echo $os | sed 's/[^-]*-//'`
config.sub:# Note that if you're going to try to match "-MANUFACTURER" here (say,
config.sub:# "-sun"), then you have to tell the case statement up towards the top
config.sub:        score-*)
config.sub:		os=-elf
config.sub:        spu-*)
config.sub:		os=-elf
config.sub:	*-acorn)
config.sub:		os=-riscix1.2
config.sub:	arm*-rebel)
config.sub:		os=-linux
config.sub:	arm*-semi)
config.sub:		os=-aout
config.sub:        c4x-* | tic4x-*)
config.sub:        	os=-coff
config.sub:	# This must come before the *-dec entry.
config.sub:	pdp10-*)
config.sub:		os=-tops20
config.sub:	pdp11-*)
config.sub:		os=-none
config.sub:	*-dec | vax-*)
config.sub:		os=-ultrix4.2
config.sub:	m68*-apollo)
config.sub:		os=-domain
config.sub:	i386-sun)
config.sub:		os=-sunos4.0.2
config.sub:	m68000-sun)
config.sub:		os=-sunos3
config.sub:		# os=-sunos4
config.sub:	m68*-cisco)
config.sub:		os=-aout
config.sub:        mep-*)
config.sub:		os=-elf
config.sub:	mips*-cisco)
config.sub:		os=-elf
config.sub:	mips*-*)
config.sub:		os=-elf
config.sub:	or32-*)
config.sub:		os=-coff
config.sub:	*-tti)	# must be before sparc entry or we get the wrong os.
config.sub:		os=-sysv3
config.sub:	sparc-* | *-sun)
config.sub:		os=-sunos4.1.1
config.sub:	*-be)
config.sub:		os=-beos
config.sub:	*-haiku)
config.sub:		os=-haiku
config.sub:	*-ibm)
config.sub:		os=-aix
config.sub:    	*-knuth)
config.sub:		os=-mmixware
config.sub:	*-wec)
config.sub:		os=-proelf
config.sub:	*-winbond)
config.sub:		os=-proelf
config.sub:	*-oki)
config.sub:		os=-proelf
config.sub:	*-hp)
config.sub:		os=-hpux
config.sub:	*-hitachi)
config.sub:		os=-hiux
config.sub:	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
config.sub:		os=-sysv
config.sub:	*-cbm)
config.sub:		os=-amigaos
config.sub:	*-dg)
config.sub:		os=-dgux
config.sub:	*-dolphin)
config.sub:		os=-sysv3
config.sub:	m68k-ccur)
config.sub:		os=-rtu
config.sub:	m88k-omron*)
config.sub:		os=-luna
config.sub:	*-next )
config.sub:		os=-nextstep
config.sub:	*-sequent)
config.sub:		os=-ptx
config.sub:	*-crds)
config.sub:		os=-unos
config.sub:	*-ns)
config.sub:		os=-genix
config.sub:	i370-*)
config.sub:		os=-mvs
config.sub:	*-next)
config.sub:		os=-nextstep3
config.sub:	*-gould)
config.sub:		os=-sysv
config.sub:	*-highlevel)
config.sub:		os=-bsd
config.sub:	*-encore)
config.sub:		os=-bsd
config.sub:	*-sgi)
config.sub:		os=-irix
config.sub:	*-siemens)
config.sub:		os=-sysv4
config.sub:	*-masscomp)
config.sub:		os=-rtu
config.sub:	f30[01]-fujitsu | f700-fujitsu)
config.sub:		os=-uxpv
config.sub:	*-rom68k)
config.sub:		os=-coff
config.sub:	*-*bug)
config.sub:		os=-coff
config.sub:	*-apple)
config.sub:		os=-macos
config.sub:	*-atari*)
config.sub:		os=-mint
config.sub:		os=-none
config.sub:	*-unknown)
config.sub:			-riscix*)
config.sub:			-sunos*)
config.sub:			-cnk*|-aix*)
config.sub:			-beos*)
config.sub:			-hpux*)
config.sub:			-mpeix*)
config.sub:			-hiux*)
config.sub:			-unos*)
config.sub:			-dgux*)
config.sub:			-luna*)
config.sub:			-genix*)
config.sub:			-mvs* | -opened*)
config.sub:			-os400*)
config.sub:			-ptx*)
config.sub:			-tpf*)
config.sub:			-vxsim* | -vxworks* | -windiss*)
config.sub:			-aux*)
config.sub:			-hms*)
config.sub:			-mpw* | -macos*)
config.sub:			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
config.sub:			-vos*)
config.sub:# eval: (add-hook 'write-file-hooks 'time-stamp)
config.sub:# time-stamp-start: "timestamp='"
config.sub:# time-stamp-format: "%:y-%02m-%02d"
config.sub:# time-stamp-end: "'"
configure:# Guess values for system-dependent variables and create Makefiles.
configure:## -------------------- ##
configure:## -------------------- ##
configure:if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
configure:  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
configure:  alias -g '${1+"$@"}'='"$@"'
configure:  case `(set -o) 2>/dev/null` in #(
configure:    set -o posix ;; #(
configure:if test -z "$BASH_VERSION$ZSH_VERSION" \
configure:    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
configure:  as_echo='print -r --'
configure:  as_echo_n='print -rn --'
configure:  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
configure:    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
configure:    as_echo_n='/usr/ucb/echo -n'
configure:      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
configure:    as_echo_n='sh -c $as_echo_n_body as_echo'
configure:  as_echo='sh -c $as_echo_body as_echo'
configure:  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
configure:    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
configure:# there to prevent editors from complaining about space-tab.
configure:  test -z "$as_dir" && as_dir=.
configure:    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
configure:if test ! -f "$as_myself"; then
configure:# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
configure:  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
configure:  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
configure:  alias -g '\${1+\"\$@\"}'='\"\$@\"'
configure:  case \`(set -o) 2>/dev/null\` in #(
configure:    set -o posix ;; #(
configure:  test -z "$as_dir" && as_dir=.
configure:	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
configure:$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
configure:    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
configure:SHELL=${CONFIG_SHELL-/bin/sh}
configure:## --------------------- ##
configure:## --------------------- ##
configure:# ---------------
configure:# -----------------------
configure:# -----------------
configure:# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
configure:# -------------
configure:  -*) as_dir=./$as_dir;;
configure:  test -d "$as_dir" || eval $as_mkdir_p || {
configure:      as_dir=`$as_dirname -- "$as_dir" ||
configure:      test -d "$as_dir" && break
configure:    test -z "$as_dirs" || eval "mkdir $as_dirs"
configure:  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
configure:# ----------------------
configure:# ------------------
configure:    as_val=`expr "$@" || test $? -eq 1`
configure:# ---------------------------------
configure:  as_status=$?; test $as_status -eq 0 && as_status=1
configure:    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
configure:if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
configure:if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
configure:as_me=`$as_basename -- "$0" ||
configure:  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
configure:  sed -n '
configure:      s/[$]LINENO.*/&-/
configure:      s/-\n.*//
configure:case `echo -n x` in #(((((
configure:-n*)
configure:  ECHO_N='-n';;
configure:rm -f conf$$ conf$$.exe conf$$.file
configure:if test -d conf$$.dir; then
configure:  rm -f conf$$.dir/conf$$.file
configure:  rm -f conf$$.dir
configure:  if ln -s conf$$.file conf$$ 2>/dev/null; then
configure:    as_ln_s='ln -s'
configure:    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
configure:    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
configure:    # In both cases, we have to default to `cp -p'.
configure:    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
configure:      as_ln_s='cp -p'
configure:    as_ln_s='cp -p'
configure:  as_ln_s='cp -p'
configure:rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
configure:if mkdir -p . 2>/dev/null; then
configure:  as_mkdir_p='mkdir -p "$as_dir"'
configure:  test -d ./-p && rmdir ./-p
configure:if test -x / >/dev/null 2>&1; then
configure:  as_test_x='test -x'
configure:  if ls -dL / >/dev/null 2>&1; then
configure:    eval sh -c '\''
configure:      if test -d "$1"; then
configure:	test -d "$1/.";
configure:	-*)set "./$1";;
configure:	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
configure:SHELL=${CONFIG_SHELL-/bin/sh}
configure:X*--fallback-echo)
configure:ECHO=${lt_ECHO-echo}
configure:if test "X$1" = X--no-reexec; then
configure:  # Discard the --no-reexec flag, and continue.
configure:elif test "X$1" = X--fallback-echo; then
configure:  exec $SHELL "$0" --no-reexec ${1+"$@"}
configure:if test "X$1" = X--fallback-echo; then
configure:# The HP-UX ksh and POSIX shell print the target directory to stdout
configure:if test -z "$lt_ECHO"; then
configure:      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
configure:      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
configure:         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
configure:        # This shell has a builtin print -r that does the trick.
configure:        ECHO='print -r'
configure:      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
configure:        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
configure:        exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
configure:        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
configure:	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
configure:	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
configure:        elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
configure:	     echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
configure:	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
configure:	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
configure:if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
configure:   lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
configure:test -n "$DJDIR" || exec 7<&0 </dev/null
configure:ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
configure:  if test -n "$ac_prev"; then
configure:  --)
configure:  -bindir | --bindir | --bindi | --bind | --bin | --bi)
configure:  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
configure:  -build | --build | --buil | --bui | --bu)
configure:  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
configure:  -cache-file | --cache-file | --cache-fil | --cache-fi \
configure:  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
configure:  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
configure:  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
configure:  --config-cache | -C)
configure:  -datadir | --datadir | --datadi | --datad)
configure:  -datadir=* | --datadir=* | --datadi=* | --datad=*)
configure:  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
configure:  | --dataroo | --dataro | --datar)
configure:  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
configure:  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
configure:  -disable-* | --disable-*)
configure:    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
configure:    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
configure:    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
configure:      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
configure:  -docdir | --docdir | --docdi | --doc | --do)
configure:  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
configure:  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
configure:  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
configure:  -enable-* | --enable-*)
configure:    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
configure:    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
configure:    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
configure:      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
configure:  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
configure:  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
configure:  | --exec | --exe | --ex)
configure:  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
configure:  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
configure:  | --exec=* | --exe=* | --ex=*)
configure:  -gas | --gas | --ga | --g)
configure:    # Obsolete; use --with-gas.
configure:  -help | --help | --hel | --he | -h)
configure:  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
configure:  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
configure:  -host | --host | --hos | --ho)
configure:  -host=* | --host=* | --hos=* | --ho=*)
configure:  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
configure:  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
configure:  | --ht=*)
configure:  -includedir | --includedir | --includedi | --included | --include \
configure:  | --includ | --inclu | --incl | --inc)
configure:  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
configure:  | --includ=* | --inclu=* | --incl=* | --inc=*)
configure:  -infodir | --infodir | --infodi | --infod | --info | --inf)
configure:  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
configure:  -libdir | --libdir | --libdi | --libd)
configure:  -libdir=* | --libdir=* | --libdi=* | --libd=*)
configure:  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
configure:  | --libexe | --libex | --libe)
configure:  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
configure:  | --libexe=* | --libex=* | --libe=*)
configure:  -localedir | --localedir | --localedi | --localed | --locale)
configure:  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
configure:  -localstatedir | --localstatedir | --localstatedi | --localstated \
configure:  | --localstate | --localstat | --localsta | --localst | --locals)
configure:  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
configure:  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
configure:  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
configure:  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
configure:  -nfp | --nfp | --nf)
configure:    # Obsolete; use --without-fp.
configure:  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
configure:  | --no-cr | --no-c | -n)
configure:  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
configure:  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
configure:  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
configure:  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
configure:  | --oldin | --oldi | --old | --ol | --o)
configure:  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
configure:  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
configure:  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
configure:  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
configure:  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
configure:  -program-prefix | --program-prefix | --program-prefi | --program-pref \
configure:  | --program-pre | --program-pr | --program-p)
configure:  -program-prefix=* | --program-prefix=* | --program-prefi=* \
configure:  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
configure:  -program-suffix | --program-suffix | --program-suffi | --program-suff \
configure:  | --program-suf | --program-su | --program-s)
configure:  -program-suffix=* | --program-suffix=* | --program-suffi=* \
configure:  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
configure:  -program-transform-name | --program-transform-name \
configure:  | --program-transform-nam | --program-transform-na \
configure:  | --program-transform-n | --program-transform- \
configure:  | --program-transform | --program-transfor \
configure:  | --program-transfo | --program-transf \
configure:  | --program-trans | --program-tran \
configure:  | --progr-tra | --program-tr | --program-t)
configure:  -program-transform-name=* | --program-transform-name=* \
configure:  | --program-transform-nam=* | --program-transform-na=* \
configure:  | --program-transform-n=* | --program-transform-=* \
configure:  | --program-transform=* | --program-transfor=* \
configure:  | --program-transfo=* | --program-transf=* \
configure:  | --program-trans=* | --program-tran=* \
configure:  | --progr-tra=* | --program-tr=* | --program-t=*)
configure:  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
configure:  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
configure:  -psdir | --psdir | --psdi | --psd | --ps)
configure:  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
configure:  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
configure:  | -silent | --silent | --silen | --sile | --sil)
configure:  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
configure:  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
configure:  | --sbi=* | --sb=*)
configure:  -sharedstatedir | --sharedstatedir | --sharedstatedi \
configure:  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
configure:  | --sharedst | --shareds | --shared | --share | --shar \
configure:  | --sha | --sh)
configure:  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
configure:  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
configure:  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
configure:  | --sha=* | --sh=*)
configure:  -site | --site | --sit)
configure:  -site=* | --site=* | --sit=*)
configure:  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
configure:  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
configure:  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
configure:  | --syscon | --sysco | --sysc | --sys | --sy)
configure:  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
configure:  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
configure:  -target | --target | --targe | --targ | --tar | --ta | --t)
configure:  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
configure:  -v | -verbose | --verbose | --verbos | --verbo | --verb)
configure:  -version | --version | --versio | --versi | --vers | -V)
configure:  -with-* | --with-*)
configure:    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
configure:    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
configure:    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
configure:      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
configure:  -without-* | --without-*)
configure:    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
configure:    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
configure:    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
configure:      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
configure:  --x)
configure:    # Obsolete; use --with-x.
configure:  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
configure:  | --x-incl | --x-inc | --x-in | --x-i)
configure:  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
configure:  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
configure:  -x-libraries | --x-libraries | --x-librarie | --x-librari \
configure:  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
configure:  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
configure:  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
configure:  -*) as_fn_error "unrecognized option: \`$ac_option'
configure:Try \`$0 --help' for more information."
configure:      '' | [0-9]* | *[!_$as_cr_alnum]* )
configure:    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
configure:    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
configure:if test -n "$ac_prev"; then
configure:  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
configure:if test -n "$ac_unrecognized_opts"; then
configure:  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
configure:# used to hold the argument of --host etc.
configure:    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
configure:test -n "$host_alias" && ac_tool_prefix=$host_alias-
configure:ac_pwd=`pwd` && test -n "$ac_pwd" &&
configure:ac_ls_di=`ls -di .` &&
configure:ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
configure:if test -z "$srcdir"; then
configure:  ac_confdir=`$as_dirname -- "$as_myself" ||
configure:  if test ! -r "$srcdir/$ac_unique_file"; then
configure:if test ! -r "$srcdir/$ac_unique_file"; then
configure:	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
configure:# mess up M-x gdb in Emacs.
configure:# Report the --help message.
configure:  -h, --help              display this help and exit
configure:      --help=short        display options specific to this package
configure:      --help=recursive    display the short help of all the included packages
configure:  -V, --version           display version information and exit
configure:  -q, --quiet, --silent   do not print \`checking...' messages
configure:      --cache-file=FILE   cache test results in FILE [disabled]
configure:  -C, --config-cache      alias for \`--cache-file=config.cache'
configure:  -n, --no-create         do not create output files
configure:      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
configure:  --prefix=PREFIX         install architecture-independent files in PREFIX
configure:  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
configure:an installation prefix other than \`$ac_default_prefix' using \`--prefix',
configure:for instance \`--prefix=\$HOME'.
configure:  --bindir=DIR            user executables [EPREFIX/bin]
configure:  --sbindir=DIR           system admin executables [EPREFIX/sbin]
configure:  --libexecdir=DIR        program executables [EPREFIX/libexec]
configure:  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
configure:  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
configure:  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
configure:  --libdir=DIR            object code libraries [EPREFIX/lib]
configure:  --includedir=DIR        C header files [PREFIX/include]
configure:  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
configure:  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
configure:  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
configure:  --infodir=DIR           info documentation [DATAROOTDIR/info]
configure:  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
configure:  --mandir=DIR            man documentation [DATAROOTDIR/man]
configure:  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
configure:  --htmldir=DIR           html documentation [DOCDIR]
configure:  --dvidir=DIR            dvi documentation [DOCDIR]
configure:  --pdfdir=DIR            pdf documentation [DOCDIR]
configure:  --psdir=DIR             ps documentation [DOCDIR]
configure:  --program-prefix=PREFIX            prepend PREFIX to installed program names
configure:  --program-suffix=SUFFIX            append SUFFIX to installed program names
configure:  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
configure:  --x-includes=DIR    X include files are in DIR
configure:  --x-libraries=DIR   X library files are in DIR
configure:  --build=BUILD     configure for building on BUILD [guessed]
configure:  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
configure:if test -n "$ac_init_help"; then
configure:  --disable-option-checking  ignore unrecognized --enable/--with options
configure:  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
configure:  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
configure:  --enable-debug=[no/minimum/yes]
configure:  --disable-largefile     omit support for large files
configure:  --disable-dependency-tracking  speeds up one-time build
configure:  --enable-dependency-tracking   do not reject slow dependency extractors
configure:  --enable-cxx            build C++ components (default: enabled)
configure:  --enable-shared[=PKGS]  build shared libraries [default=yes]
configure:  --enable-static[=PKGS]  build static libraries [default=yes]
configure:  --enable-fast-install[=PKGS]
configure:  --disable-libtool-lock  avoid locking (might break parallel builds)
configure:  --enable-links          make links for operations (default: no)
configure:  --enable-threads        evaluate with threads (default: yes)
configure:  --enable-gtk-doc        use gtk-doc to build documentation [[default=no]]
configure:  --enable-gtk-doc-html   build documentation in html format [[default=yes]]
configure:  --enable-gtk-doc-pdf    build documentation in pdf format [[default=no]]
configure:  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
configure:  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
configure:  --with-dmalloc          use dmalloc, as in
configure:  --with-pic              try to use only PIC/non-PIC objects [default=use
configure:  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
configure:  --with-html-dir=PATH    path to installed docs
configure:  --without-fftw3         build without fftw3 (default: test)
configure:  --without-magick        build without libMagic (default: test)
configure:  --with-magickpackage    magickpackage to use (default: MagickWand,
configure:  --without-liboil        build without liboil (default: test)
configure:  --without-lcms          build without lcms (default: test)
configure:  --without-OpenEXR       build without OpenEXR (default: test)
configure:  --without-matio         build without matio (default: test)
configure:  --without-pangoft2      build without pangoft2 (default: test)
configure:  --with-x                use the X Window System
configure:  --without-tiff          build without libtiff (default: test)
configure:  --with-tiff-includes=DIR
configure:  --with-tiff-libraries=DIR
configure:  --without-zip           build without libx (default: test)
configure:  --with-zip-includes=DIR libz includes are in DIR
configure:  --with-zip-libraries=DIR
configure:  --without-jpeg          build without libjpeg (default: test)
configure:  --with-jpeg-includes=DIR
configure:  --with-jpeg-libraries=DIR
configure:  --without-png           build without libpng (default: test)
configure:  --with-png-includes=DIR libpng includes are in DIR
configure:  --with-png-libraries=DIR
configure:  --without-libexif       build without libexif (default: test)
configure:  --without-v4l           build without video4linux (default: test)
configure:  --without-python        build without Python bindings (default: test)
configure:  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
configure:  LIBS        libraries to pass to the linker, e.g. -l<library>
configure:  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
configure:  PKG_CONFIG  path to pkg-config utility
configure:              C compiler flags for REQUIRED, overriding pkg-config
configure:              linker flags for REQUIRED, overriding pkg-config
configure:              C compiler flags for GTHREAD, overriding pkg-config
configure:              linker flags for GTHREAD, overriding pkg-config
configure:              C compiler flags for FFTW3, overriding pkg-config
configure:  FFTW3_LIBS  linker flags for FFTW3, overriding pkg-config
configure:              C compiler flags for MAGICK_WAND, overriding pkg-config
configure:              linker flags for MAGICK_WAND, overriding pkg-config
configure:              C compiler flags for IMAGE_MAGICK, overriding pkg-config
configure:              linker flags for IMAGE_MAGICK, overriding pkg-config
configure:              C compiler flags for MAGICK, overriding pkg-config
configure:  MAGICK_LIBS linker flags for MAGICK, overriding pkg-config
configure:              C compiler flags for LIBOIL, overriding pkg-config
configure:  LIBOIL_LIBS linker flags for LIBOIL, overriding pkg-config
configure:  LCMS_CFLAGS C compiler flags for LCMS, overriding pkg-config
configure:  LCMS_LIBS   linker flags for LCMS, overriding pkg-config
configure:              C compiler flags for OPENEXR, overriding pkg-config
configure:              linker flags for OPENEXR, overriding pkg-config
configure:              C compiler flags for MATIO, overriding pkg-config
configure:  MATIO_LIBS  linker flags for MATIO, overriding pkg-config
configure:              C compiler flags for PANGOFT2, overriding pkg-config
configure:              linker flags for PANGOFT2, overriding pkg-config
configure:  PNG_CFLAGS  C compiler flags for PNG, overriding pkg-config
configure:  PNG_LIBS    linker flags for PNG, overriding pkg-config
configure:  EXIF_CFLAGS C compiler flags for EXIF, overriding pkg-config
configure:  EXIF_LIBS   linker flags for EXIF, overriding pkg-config
configure:  # If there are subdirs, report their specific --help.
configure:    test -d "$ac_dir" ||
configure:      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
configure:    if test -f "$ac_srcdir/configure.gnu"; then
configure:      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
configure:    elif test -f "$ac_srcdir/configure"; then
configure:      $SHELL "$ac_srcdir/configure" --help=recursive
configure:test -n "$ac_init_help" && exit $ac_status
configure:## ------------------------ ##
configure:## ------------------------ ##
configure:# --------------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:  rm -f conftest.$ac_objext
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:    grep -v '^ *+' conftest.err >conftest.er1
configure:    mv -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:	 test -z "$ac_c_werror_flag" ||
configure:	 test ! -s conftest.err
configure:       } && test -s conftest.$ac_objext; then :
configure:# ----------------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:  rm -f conftest.$ac_objext
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:    grep -v '^ *+' conftest.err >conftest.er1
configure:    mv -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:	 test -z "$ac_cxx_werror_flag" ||
configure:	 test ! -s conftest.err
configure:       } && test -s conftest.$ac_objext; then :
configure:# ----------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:    grep -v '^ *+' conftest.err >conftest.er1
configure:    mv -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
configure:	 test ! -s conftest.err
configure:# ----------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
configure:# -------------------------------------------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
configure:	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
configure:	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
configure:# -------------------------------------------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
configure:# -----------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:  rm -f conftest.$ac_objext conftest$ac_exeext
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:    grep -v '^ *+' conftest.err >conftest.er1
configure:    mv -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:	 test -z "$ac_c_werror_flag" ||
configure:	 test ! -s conftest.err
configure:       } && test -s conftest$ac_exeext && {
configure:  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
configure:# ----------------------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
configure:rm -f core conftest.err conftest.$ac_objext \
configure:	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
configure:# ------------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:    grep -v '^ *+' conftest.err >conftest.er1
configure:    mv -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
configure:	 test ! -s conftest.err
configure:# -------------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:  rm -f conftest.$ac_objext conftest$ac_exeext
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:    grep -v '^ *+' conftest.err >conftest.er1
configure:    mv -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:	 test -z "$ac_cxx_werror_flag" ||
configure:	 test ! -s conftest.err
configure:       } && test -s conftest$ac_exeext && {
configure:  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
configure:# -------------------------------------------
configure:  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
configure:## --------- ##
configure:## --------- ##
configure:hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
configure:uname -m = `(uname -m) 2>/dev/null || echo unknown`
configure:uname -r = `(uname -r) 2>/dev/null || echo unknown`
configure:uname -s = `(uname -s) 2>/dev/null || echo unknown`
configure:uname -v = `(uname -v) 2>/dev/null || echo unknown`
configure:/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
configure:/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
configure:/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
configure:  test -z "$as_dir" && as_dir=.
configure:## ----------- ##
configure:## ----------- ##
configure:# Strip out --no-create and --no-recursion so they do not pile up.
configure:# Strip out --silent because we don't want to record it for future runs.
configure:# Also quote any args containing shell meta-characters.
configure:# Make two passes to allow for proper duplicate-argument suppression.
configure:    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
configure:    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
configure:    | -silent | --silent | --silen | --sile | --sil)
configure:	  *=* | --config-cache | -C | -disable-* | --disable-* \
configure:	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
configure:	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
configure:	  | -with-* | --with-* | -without-* | --without-* | --x)
configure:	  -* ) ac_must_keep_next=true ;;
configure:## ---------------- ##
configure:## ---------------- ##
configure:  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
configure:      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
configure:      sed -n \
configure:      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
configure:## ----------------- ##
configure:## ----------------- ##
configure:    if test -n "$ac_subst_files"; then
configure:## ------------------- ##
configure:## ------------------- ##
configure:    if test -s confdefs.h; then
configure:## ----------- ##
configure:## ----------- ##
configure:  rm -f core *.core core.conftest.* &&
configure:    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
configure:rm -f -r conftest* confdefs.h
configure:if test -n "$CONFIG_SITE"; then
configure:  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
configure:if test -r "$cache_file"; then
configure:  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
configure:	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
configure:	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
configure:## -------------------- ##
configure:## -------------------- ##
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:# user-visible library versioning
configure:IM_VERSION_STRING=$IM_VERSION-`date`
configure:# libtool library versioning ... not user-visible (except as part of the
configure:  for ac_t in install-sh install.sh shtool; do
configure:    if test -f "$ac_dir/$ac_t"; then
configure:      ac_install_sh="$ac_aux_dir/$ac_t -c"
configure:if test -z "$ac_aux_dir"; then
configure:  as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
configure:# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
configure:$as_echo_n "checking for a BSD-compatible install... " >&6; }
configure:if test -z "$INSTALL"; then
configure:  test -z "$as_dir" && as_dir=.
configure:	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
configure:	    # program-specific install script used by HP pwplus--don't use.
configure:	    rm -rf conftest.one conftest.two conftest.dir
configure:	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
configure:	      test -s conftest.one && test -s conftest.two &&
configure:	      test -s conftest.dir/conftest.one &&
configure:	      test -s conftest.dir/conftest.two
configure:	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
configure:rm -rf conftest.one conftest.two conftest.dir
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
configure:# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
configure:test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
configure:test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
configure:test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
configure:# arguments.  Must try -L first in case configure is actually a
configure:   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
configure:      # -L didn't work.
configure:      set X `ls -t "$srcdir/configure" conftest.file`
configure:   rm -f conftest.file
configure:      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:if eval "$MISSING --run true"; then
configure:  am_missing_run="$MISSING --run "
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
configure:    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
configure:    install_sh="\${SHELL} $am_aux_dir/install-sh"
configure:# run `make install-strip'.  However `strip' might not be the right
configure:# tool to use in cross-compilation environments, therefore Automake
configure:  if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$STRIP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$STRIP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_STRIP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_STRIP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_STRIP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
configure:$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
configure:if test -z "$MKDIR_P"; then
configure:  test -z "$as_dir" && as_dir=.
configure:	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
configure:	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
configure:  test -d ./--version && rmdir ./--version
configure:    MKDIR_P="$ac_cv_path_mkdir -p"
configure:    MKDIR_P="$ac_install_sh -d"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$AWK"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$AWK"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  test -n "$AWK" && break
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
configure:$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
configure:set x ${MAKE-make}
configure:ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
configure:case `${MAKE-make} -f conftest.make 2>/dev/null` in
configure:rm -f conftest.make
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  SET_MAKE="MAKE=${MAKE-make}"
configure:rm -rf .tst 2>/dev/null
configure:if test -d .tst; then
configure:  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
configure:  # is not polluted with repeated "-I."
configure:  am__isrc=' -I$(srcdir)'
configure:  if test -f $srcdir/config.status; then
configure:if test -z "$CYGPATH_W"; then
configure:  if (cygpath --version) >/dev/null 2>/dev/null; then
configure:    CYGPATH_W='cygpath -w'
configure:ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
configure:AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
configure:AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
configure:AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
configure:MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
configure:AMTAR=${AMTAR-"${am_missing_run}tar"}
configure:am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
configure:*-*-*) ;;
configure:ac_save_IFS=$IFS; IFS='-'
configure:case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
configure:*-*-*) ;;
configure:ac_save_IFS=$IFS; IFS='-'
configure:case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
configure:# Check whether --enable-debug was given.
configure:  VIPS_DEBUG_FLAGS="-DDEBUG_FATAL -DDEBUG_LEAK"
configure:  VIPS_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
configure:    VIPS_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for native Win32" >&5
configure:  *-*-mingw*)
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vips_os_win32" >&5
configure:  VIPS_CFLAGS="-mms-bitfields $VIPS_CFLAGS"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for binary open needed" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vips_binary_open" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mac OS X" >&5
configure:  *-*-darwin*)
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vips_os_darwin" >&5
configure:am_make=${MAKE-make}
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
configure:case `$am_make -s -f confmf 2> /dev/null` in #(
configure:   case `$am_make -s -f confmf 2> /dev/null` in #(
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
configure:rm -f confinc confmf
configure:# Check whether --enable-dependency-tracking was given.
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_CC"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -z "$CC"; then
configure:          if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$CC"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$CC"; then
configure:  if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:    test -n "$CC" && break
configure:if test -z "$CC"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  test -n "$ac_ct_CC" && break
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
configure:for ac_option in --version -v -V -qversion; do
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:  rm -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:# Try to create an executable without -o first, disregard a.out.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
configure:ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
configure:rm -f $ac_rmfiles
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
configure:# so that the user can short-circuit this test for compilers unknown to
configure:  test -f "$ac_file" || continue
configure:	# safe: cross compilers may not add the suffix if given an `-o'
configure:if test -z "$ac_file"; then :
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
configure:rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  test -f "$ac_file" || continue
configure:  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:rm -f conftest conftest$ac_cv_exeext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
configure:rm -f conftest.$ac_ext
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:If you meant to cross compile, use \`--host'.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
configure:rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.o conftest.obj
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  test -f "$ac_file" || continue;
configure:{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:rm -f conftest.$ac_cv_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
configure:$as_echo_n "checking whether $CC accepts -g... " >&6; }
configure:   CFLAGS="-g"
configure:   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:	 CFLAGS="-g"
configure:	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
configure:    CFLAGS="-g -O2"
configure:    CFLAGS="-g"
configure:    CFLAGS="-O2"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
configure:   as 'x'.  The following induces an error, until -std is added to get
configure:   that's true only with -std.  */
configure:int osf4_cc_array ['\x00' == 0 ? 1 : -1];
configure:/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
configure:int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
configure:for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
configure:	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
configure:rm -f core conftest.err conftest.$ac_objext
configure:rm -f conftest.$ac_ext
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
configure:  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
configure:  # instance it was reported that on HP-UX the gcc test will end up
configure:  # making a dummy file named `D' -- because `-MD' means `put the output
configure:  # both Tru64's cc and ICC support -MD to output dependencies as a
configure:     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
configure:     *\ -arch\ *\ -arch\ *) am__universal=true ;;
configure:    # We check with `-c' and `-o' for the sake of the "dashmstdout"
configure:    # handle `-M -o', and we need to detect this.  Also, some Intel
configure:    am__obj=sub/conftest.${OBJEXT-o}
configure:    am__minus_obj="-o $am__obj"
configure:      # after this tag, mechanisms are not by side-effect, so they'll
configure:      # This compiler won't grok `-c -o', but also, the minuso test has
configure:      am__obj=conftest.${OBJEXT-o}
configure:       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
configure:       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
configure:      # or remarks (even with -Werror).  So we grep stderr for any message
configure:      # When given -MP, icc 7.0 and 7.1 complain thusly:
configure:      #   icc: Command line warning: ignoring option '-M'; no argument required
configure:      #   icc: Command line remark: option '-MP' not supported
configure:  rm -rf conftest.dir
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
configure:# Check whether --enable-largefile was given.
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
configure:	 # so use the C compiler's -n32 option if that helps.
configure:	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure: /* Check that off_t can represent 2**63 - 1 correctly.
configure:#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
configure:		      ? 1 : -1];
configure:rm -f core conftest.err conftest.$ac_objext
configure:	 CC="$CC -n32"
configure:  ac_cv_sys_largefile_CC=' -n32'; break
configure:rm -f core conftest.err conftest.$ac_objext
configure:       rm -f conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure: /* Check that off_t can represent 2**63 - 1 correctly.
configure:#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
configure:		      ? 1 : -1];
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure: /* Check that off_t can represent 2**63 - 1 correctly.
configure:#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
configure:		      ? 1 : -1];
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
configure:rm -rf conftest*
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure: /* Check that off_t can represent 2**63 - 1 correctly.
configure:#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
configure:		      ? 1 : -1];
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure: /* Check that off_t can represent 2**63 - 1 correctly.
configure:#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
configure:		      ? 1 : -1];
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
configure:rm -rf conftest*
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$AWK"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$AWK"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  test -n "$AWK" && break
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_CC"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -z "$CC"; then
configure:          if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$CC"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$CC"; then
configure:  if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:    test -n "$CC" && break
configure:if test -z "$CC"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_CC"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_CC"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  test -n "$ac_ct_CC" && break
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
configure:for ac_option in --version -v -V -qversion; do
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:  rm -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
configure:$as_echo_n "checking whether $CC accepts -g... " >&6; }
configure:   CFLAGS="-g"
configure:   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:	 CFLAGS="-g"
configure:	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
configure:    CFLAGS="-g -O2"
configure:    CFLAGS="-g"
configure:    CFLAGS="-O2"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
configure:   as 'x'.  The following induces an error, until -std is added to get
configure:   that's true only with -std.  */
configure:int osf4_cc_array ['\x00' == 0 ? 1 : -1];
configure:/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
configure:int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
configure:for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
configure:	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
configure:rm -f core conftest.err conftest.$ac_objext
configure:rm -f conftest.$ac_ext
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
configure:  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
configure:  # instance it was reported that on HP-UX the gcc test will end up
configure:  # making a dummy file named `D' -- because `-MD' means `put the output
configure:  # both Tru64's cc and ICC support -MD to output dependencies as a
configure:     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
configure:     *\ -arch\ *\ -arch\ *) am__universal=true ;;
configure:    # We check with `-c' and `-o' for the sake of the "dashmstdout"
configure:    # handle `-M -o', and we need to detect this.  Also, some Intel
configure:    am__obj=sub/conftest.${OBJEXT-o}
configure:    am__minus_obj="-o $am__obj"
configure:      # after this tag, mechanisms are not by side-effect, so they'll
configure:      # This compiler won't grok `-c -o', but also, the minuso test has
configure:      am__obj=conftest.${OBJEXT-o}
configure:       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
configure:       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
configure:      # or remarks (even with -Werror).  So we grep stderr for any message
configure:      # When given -MP, icc 7.0 and 7.1 complain thusly:
configure:      #   icc: Command line warning: ignoring option '-M'; no argument required
configure:      #   icc: Command line remark: option '-MP' not supported
configure:  rm -rf conftest.dir
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:static long long int bignum = -9223372036854775807LL;
configure:  // See if C++-style comments work.
configure:  ia->datasize = 10;
configure:  for (int i = 0; i < ia->datasize; ++i)
configure:    ia->data[i] = i * 1.234;
configure:  dynamic_array[ni.number - 1] = 543;
configure:	  || dynamic_array[ni.number - 1] != 543);
configure:for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
configure:rm -f core conftest.err conftest.$ac_objext
configure:rm -f conftest.$ac_ext
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
configure:   as 'x'.  The following induces an error, until -std is added to get
configure:   that's true only with -std.  */
configure:int osf4_cc_array ['\x00' == 0 ? 1 : -1];
configure:/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
configure:int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
configure:for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
configure:	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
configure:rm -f core conftest.err conftest.$ac_objext
configure:rm -f conftest.$ac_ext
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
configure:$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:     an arm of an if-expression whose if-part is not a constant
configure:  pcpcc = &g + (g ? g-g : 0);
configure:  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
configure:  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
configure:       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
configure:    struct s *b; b->j = 5;
configure:  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
configure:     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$RANLIB"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$RANLIB"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_RANLIB"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_RANLIB"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_RANLIB"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
configure:$as_echo_n "checking whether ln -s works... " >&6; }
configure:if test "$LN_S" = "ln -s"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5
configure:# Check whether --with-dmalloc was given.
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:  LIBS="$LIBS -ldmalloc"
configure:  LDFLAGS="$LDFLAGS -g"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:# Check whether --enable-cxx was given.
configure:ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:if test -z "$CXX"; then
configure:  if test -n "$CCC"; then
configure:    if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CXX"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CXX"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:    test -n "$CXX" && break
configure:if test -z "$CXX"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_CXX"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_CXX"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  test -n "$ac_ct_CXX" && break
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
configure:for ac_option in --version -v -V -qversion; do
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:  rm -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
configure:$as_echo_n "checking whether $CXX accepts -g... " >&6; }
configure:   CXXFLAGS="-g"
configure:   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:	 CXXFLAGS="-g"
configure:	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
configure:    CXXFLAGS="-g -O2"
configure:    CXXFLAGS="-g"
configure:    CXXFLAGS="-O2"
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
configure:  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
configure:  # instance it was reported that on HP-UX the gcc test will end up
configure:  # making a dummy file named `D' -- because `-MD' means `put the output
configure:  # both Tru64's cc and ICC support -MD to output dependencies as a
configure:     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
configure:     *\ -arch\ *\ -arch\ *) am__universal=true ;;
configure:    # We check with `-c' and `-o' for the sake of the "dashmstdout"
configure:    # handle `-M -o', and we need to detect this.  Also, some Intel
configure:    am__obj=sub/conftest.${OBJEXT-o}
configure:    am__minus_obj="-o $am__obj"
configure:      # after this tag, mechanisms are not by side-effect, so they'll
configure:      # This compiler won't grok `-c -o', but also, the minuso test has
configure:      am__obj=conftest.${OBJEXT-o}
configure:       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
configure:       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
configure:      # or remarks (even with -Werror).  So we grep stderr for any message
configure:      # When given -MP, icc 7.0 and 7.1 complain thusly:
configure:      #   icc: Command line warning: ignoring option '-M'; no argument required
configure:      #   icc: Command line remark: option '-MP' not supported
configure:  rm -rf conftest.dir
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
configure:# set $expanded_value to the full-expanded value of the argument
configure:# the configure-time install prefix
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
configure:if test -n "$CPP" && test -d "$CPP"; then
configure:if test -z "$CPP"; then
configure:    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
configure:  # with a fresh cross-compiler works.
configure:  # On the NeXT, cc -E runs the code through the compiler's parser,
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
configure:  # with a fresh cross-compiler works.
configure:  # On the NeXT, cc -E runs the code through the compiler's parser,
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
configure:$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
configure:  if test -z "$GREP"; then
configure:  # Loop through the user's path and test for each of PROGNAME-LIST
configure:  test -z "$as_dir" && as_dir=.
configure:      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
configure:case `"$ac_path_GREP" --version 2>&1` in
configure:    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
configure:    if test $ac_count -gt ${ac_path_GREP_max-0}; then
configure:    test $ac_count -gt 10 && break
configure:  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
configure:  if test -z "$ac_cv_path_GREP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
configure:  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
configure:   then ac_cv_path_EGREP="$GREP -E"
configure:     if test -z "$EGREP"; then
configure:  # Loop through the user's path and test for each of PROGNAME-LIST
configure:  test -z "$as_dir" && as_dir=.
configure:      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
configure:case `"$ac_path_EGREP" --version 2>&1` in
configure:    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
configure:    test $ac_count -gt 10 && break
configure:  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
configure:  if test -z "$ac_cv_path_EGREP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest*
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest*
configure:  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
configure:rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5
configure:	      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5
configure:$as_echo_n "checking for bindtextdomain in -lintl... " >&6; }
configure:LIBS="-lintl  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
configure:$as_echo_n "checking for ngettext in -lintl... " >&6; }
configure:LIBS="-lintl  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
configure:$as_echo_n "checking for dgettext in -lintl... " >&6; }
configure:LIBS="-lintl  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5
configure:	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5
configure:$as_echo_n "checking if -liconv is needed to use gettext... " >&6; }
configure:	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
configure:  	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
configure:$as_echo_n "checking for ngettext in -lintl... " >&6; }
configure:LIBS="-lintl -liconv $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5
configure:$as_echo_n "checking for dcgettext in -lintl... " >&6; }
configure:LIBS="-lintl -liconv $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5
configure:			libintl_extra_libs=-liconv
configure:          LIBS="$LIBS -lintl $libintl_extra_libs"
configure:        INTLLIBS="-lintl $libintl_extra_libs"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:    test -z "$ac_dir" && ac_dir=.
configure:    if test -f $ac_dir/$ac_word; then
configure:      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
configure:  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5
configure:$as_echo_n "checking if msgfmt accepts -c... " >&6; }
configure:"Content-Type: text/plain; charset=UTF-8\n"
configure:"Project-Id-Version: test 1.0\n"
configure:"PO-Revision-Date: 2007-02-15 12:01+0100\n"
configure:"Last-Translator: test <foo@bar.xx>\n"
configure:"Language-Team: C <LL@li.org>\n"
configure:"MIME-Version: 1.0\n"
configure:"Content-Transfer-Encoding: 8bit\n"
configure:if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5
configure:  ($MSGFMT -c -o /dev/null conftest.foo) 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
configure:if test -n "$GMSGFMT"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:    test -z "$ac_dir" && ac_dir=.
configure:    if test -f $ac_dir/$ac_word; then
configure:      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
configure:  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:	  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:	    *-*-solaris*)
configure:rm -f core conftest.err conftest.$ac_objext \
configure:                  if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
configure:    ac_config_commands="$ac_config_commands default-1"
configure:       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
configure:         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
configure:       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
configure:          if test -n "$LINGUAS"; then
configure:   if test -n "$ac_aux_dir"; then
configure:   if test -z "$MKINSTALLDIRS"; then
configure:         test -d po || mkdir po
configure:   rm -f po/POTFILES
configure:   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
configure:# build list of pkg-config packages we used here
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
configure:# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  if test -z "$ac_lib"; then
configure:    ac_res=-l$ac_lib
configure:    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  if test -z "$ac_lib"; then
configure:    ac_res=-l$ac_lib
configure:    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest*
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest*
configure:  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
configure:rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
configure:*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
configure:  if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$AS"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$AS"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_AS"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_AS"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_AS"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:  if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$DLLTOOL"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$DLLTOOL"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_DLLTOOL"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_DLLTOOL"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_DLLTOOL"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:  if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$OBJDUMP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$OBJDUMP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_OBJDUMP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_OBJDUMP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_OBJDUMP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:test -z "$AS" && AS=as
configure:test -z "$DLLTOOL" && DLLTOOL=dlltool
configure:test -z "$OBJDUMP" && OBJDUMP=objdump
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$DLLWRAP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$DLLWRAP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLWRAP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_DLLWRAP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_DLLWRAP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_DLLWRAP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLWRAP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$DLLTOOL"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$DLLTOOL"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_DLLTOOL"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_DLLTOOL"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_DLLTOOL"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$OBJDUMP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$OBJDUMP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_OBJDUMP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_OBJDUMP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_OBJDUMP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$RANLIB"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$RANLIB"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_RANLIB"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_RANLIB"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_RANLIB"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$STRIP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$STRIP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_STRIP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_STRIP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_STRIP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$AR"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$AR"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_AR"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_AR"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_AR"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$AS"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$AS"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_AS"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_AS"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_AS"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$LD"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$LD"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_LD"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_LD"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_LD"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
configure:     if test -z "$SED"; then
configure:  # Loop through the user's path and test for each of PROGNAME-LIST
configure:  test -z "$as_dir" && as_dir=.
configure:      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
configure:case `"$ac_path_SED" --version 2>&1` in
configure:    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
configure:    if test $ac_count -gt ${ac_path_SED_max-0}; then
configure:    test $ac_count -gt 10 && break
configure:  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
configure:  if test -z "$ac_cv_path_SED"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
configure:  rm -f conftest.sed
configure:test -z "$SED" && SED=sed
configure:Xsed="$SED -e 1s/^X//"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
configure:  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
configure:   then ac_cv_path_FGREP="$GREP -F"
configure:     if test -z "$FGREP"; then
configure:  # Loop through the user's path and test for each of PROGNAME-LIST
configure:  test -z "$as_dir" && as_dir=.
configure:      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
configure:case `"$ac_path_FGREP" --version 2>&1` in
configure:    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
configure:    test $ac_count -gt 10 && break
configure:  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
configure:  if test -z "$ac_cv_path_FGREP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
configure:test -z "$GREP" && GREP=grep
configure:# Check whether --with-gnu-ld was given.
configure:  # Check if gcc -print-prog-name=ld gives a path.
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
configure:  *-*-mingw*)
configure:    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
configure:    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
configure:      test -z "$LD" && LD="$ac_prog"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
configure:$as_echo_n "checking for non-GNU ld... " >&6; }
configure:  if test -z "$LD"; then
configure:    test -z "$ac_dir" && ac_dir=.
configure:    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
configure:      # Check to see if the program is GNU ld.  I'd rather use --version,
configure:      # but apparently some variants of GNU ld only accept -v.
configure:      # Break only if it was the GNU/non-GNU ld that we prefer.
configure:      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
configure:if test -n "$LD"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
configure:  # I'd rather use --version here, but apparently some GNU lds only accept -v.
configure:case `$LD -v 2>&1 </dev/null` in
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
configure:$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
configure:  if test -n "$NM"; then
configure:  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
configure:      test -z "$ac_dir" && ac_dir=.
configure:      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
configure:	# Check to see if the nm accepts a BSD-compat flag.
configure:	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
configure:	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
configure:	  lt_cv_path_NM="$tmp_nm -B"
configure:	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
configure:	    lt_cv_path_NM="$tmp_nm -p"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
configure:  if test -n "$ac_tool_prefix"; then
configure:  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$DUMPBIN"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$DUMPBIN"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:    test -n "$DUMPBIN" && break
configure:if test -z "$DUMPBIN"; then
configure:  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_DUMPBIN"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_DUMPBIN"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  test -n "$ac_ct_DUMPBIN" && break
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:test -z "$NM" && NM=nm
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
configure:  rm -f conftest*
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
configure:    # Libtool will interpret -1 as no limit whatsoever
configure:    lt_cv_sys_max_cmd_len=-1;
configure:    # On Win9x/ME, this test blows up -- it succeeds, but takes
configure:    # Worse, since 9x/ME are not pre-emptively multitasking,
configure:    if test -x /sbin/sysctl; then
configure:      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
configure:    elif test -x /usr/sbin/sysctl; then
configure:      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
configure:    if test -x /sbin/sysconfig; then
configure:      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
configure:        *1*) lt_cv_sys_max_cmd_len=-1 ;;
configure:    if test -n "$kargmax"; then
configure:    if test -n "$lt_cv_sys_max_cmd_len"; then
configure:      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
configure:      # If test is not a shell built-in, we'll probably end up computing a
configure:      while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
configure:if test -n $lt_cv_sys_max_cmd_len ; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
configure:: ${CP="cp -f"}
configure:: ${MV="mv -f"}
configure:: ${RM="rm -f"}
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
configure:    && eval 'test $(( 1 + 1 )) -eq 2 \
configure:    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
configure:  lt_cv_ld_reload_flag='-r'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
configure:reload_cmds='$LD$reload_flag -o $output$reload_objs'
configure:      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
configure:      reload_cmds='$LD$reload_flag -o $output$reload_objs'
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$OBJDUMP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$OBJDUMP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_OBJDUMP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_OBJDUMP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_OBJDUMP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:test -z "$OBJDUMP" && OBJDUMP=objdump
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
configure:# 'none' -- dependencies not supported.
configure:# `unknown' -- same as none, but documents that we really don't know.
configure:# 'pass_all' -- all dependencies passed with no checks.
configure:# 'test_compile' -- check by making test program.
configure:# 'file_magic [[regex]]' -- check by looking for files in library path
configure:aix[4-9]*)
configure:  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
configure:  lt_cv_file_magic_cmd='/usr/bin/file -L'
configure:  # unless we find 'file', for example because we are cross-compiling.
configure:    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
configure:    lt_cv_file_magic_cmd='$OBJDUMP -f'
configure:  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
configure:  lt_cv_file_magic_cmd='$OBJDUMP -f'
configure:  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
configure:      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
configure:    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
configure:    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
configure:    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
configure:interix[3-9]*)
configure:  *-32|*"-32 ") libmagic=32-bit;;
configure:  *-n32|*"-n32 ") libmagic=N32;;
configure:  *-64|*"-64 ") libmagic=64-bit;;
configure:  *) libmagic=never-match;;
configure:linux* | k*bsd*-gnu | kopensolaris*-gnu)
configure:netbsd* | netbsdelf*-gnu)
configure:  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
configure:    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
configure:  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
configure:  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
configure:    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
configure:    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
configure:    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
configure:    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
configure:    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
configure:test -z "$deplibs_check_method" && deplibs_check_method=unknown
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$AR"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$AR"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_AR"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_AR"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_AR"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:test -z "$AR" && AR=ar
configure:test -z "$AR_FLAGS" && AR_FLAGS=cru
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$STRIP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$STRIP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_STRIP"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_STRIP"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_STRIP"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:test -z "$STRIP" && STRIP=:
configure:if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$RANLIB"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$RANLIB"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_RANLIB"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_RANLIB"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_RANLIB"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:test -z "$RANLIB" && RANLIB=:
configure:# Determine commands to create old-style static archives.
configure:if test -n "$RANLIB"; then
configure:    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
configure:LTCC=${LTCC-"$CC"}
configure:LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
configure:sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
configure:# Define system-specific variables.
configure:case `$NM -V 2>&1` in
configure:lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
configure:lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
configure:lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
configure:    # Fake it for dumpbin and say T for any non-static function
configure:    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
configure:  rm -f conftest*
configure:  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  test $ac_status = 0; } && test -s "$nlist"; then
configure:	mv -f "$nlist"T "$nlist"
configure:	rm -f "$nlist"T
configure:	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
configure:	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
configure:	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
configure:  rm -rf conftest* conftst*
configure:if test -z "$lt_cv_sys_global_symbol_pipe"; then
configure:if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
configure:# Check whether --enable-libtool-lock was given.
configure:ia64-*-hpux*)
configure:  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:      *ELF-32*)
configure:      *ELF-64*)
configure:  rm -rf conftest*
configure:*-*-irix6*)
configure:  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:	*32-bit*)
configure:	  LD="${LD-ld} -melf32bsmip"
configure:	  LD="${LD-ld} -melf32bmipn32"
configure:	*64-bit*)
configure:	  LD="${LD-ld} -melf64bmip"
configure:	*32-bit*)
configure:	  LD="${LD-ld} -32"
configure:	  LD="${LD-ld} -n32"
configure:	*64-bit*)
configure:	  LD="${LD-ld} -64"
configure:  rm -rf conftest*
configure:x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
configure:s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
configure:  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:      *32-bit*)
configure:	  x86_64-*kfreebsd*-gnu)
configure:	    LD="${LD-ld} -m elf_i386_fbsd"
configure:	  x86_64-*linux*)
configure:	    LD="${LD-ld} -m elf_i386"
configure:	  ppc64-*linux*|powerpc64-*linux*)
configure:	    LD="${LD-ld} -m elf32ppclinux"
configure:	  s390x-*linux*)
configure:	    LD="${LD-ld} -m elf_s390"
configure:	  sparc64-*linux*)
configure:	    LD="${LD-ld} -m elf32_sparc"
configure:      *64-bit*)
configure:	  x86_64-*kfreebsd*-gnu)
configure:	    LD="${LD-ld} -m elf_x86_64_fbsd"
configure:	  x86_64-*linux*)
configure:	    LD="${LD-ld} -m elf_x86_64"
configure:	  ppc*-*linux*|powerpc*-*linux*)
configure:	    LD="${LD-ld} -m elf64ppc"
configure:	  s390*-*linux*|s390*-*tpf*)
configure:	    LD="${LD-ld} -m elf64_s390"
configure:	  sparc*-*linux*)
configure:	    LD="${LD-ld} -m elf64_sparc"
configure:  rm -rf conftest*
configure:*-*-sco3.2v5*)
configure:  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
configure:  CFLAGS="$CFLAGS -belf"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
configure:$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
configure:    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
configure:sparc*-*solaris*)
configure:  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:    *64-bit*)
configure:      yes*) LD="${LD-ld} -m elf64_sparc" ;;
configure:	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
configure:	  LD="${LD-ld} -64"
configure:  rm -rf conftest*
configure:    if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$DSYMUTIL"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$DSYMUTIL"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_DSYMUTIL"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_DSYMUTIL"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_DSYMUTIL"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:    if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$NMEDIT"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$NMEDIT"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_NMEDIT"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_NMEDIT"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_NMEDIT"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:    if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$LIPO"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$LIPO"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_LIPO"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_LIPO"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_LIPO"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:    if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$OTOOL"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$OTOOL"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_OTOOL"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_OTOOL"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_OTOOL"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:    if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$OTOOL64"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$OTOOL64"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_prog_OTOOL64"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_OTOOL64"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_OTOOL64"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
configure:$as_echo_n "checking for -single_module linker flag... " >&6; }
configure:      if test -z "${LT_MULTI_MODULE}"; then
configure:	# By default we will add the -single_module flag. You can override
configure:	# non-empty at configure time, or by adding -multi_module to the
configure:	rm -rf libconftest.dylib*
configure:	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
configure:-dynamiclib -Wl,-single_module conftest.c" >&5
configure:	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
configure:	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
configure:	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
configure:	rm -rf libconftest.dylib*
configure:	rm -f conftest.*
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
configure:$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
configure:      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
configure:      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
configure:      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
configure:      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
configure:      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
configure:	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
configure:	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
configure:	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
configure:	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
configure:      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
configure:      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
configure:ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:if test -z "$CXX"; then
configure:  if test -n "$CCC"; then
configure:    if test -n "$ac_tool_prefix"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$CXX"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$CXX"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:    test -n "$CXX" && break
configure:if test -z "$CXX"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  if test -n "$ac_ct_CXX"; then
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_ct_CXX"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  test -n "$ac_ct_CXX" && break
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
configure:for ac_option in --version -v -V -qversion; do
configure:eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
configure:  if test -s conftest.err; then
configure:  rm -f conftest.er1 conftest.err
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
configure:$as_echo_n "checking whether $CXX accepts -g... " >&6; }
configure:   CXXFLAGS="-g"
configure:   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:	 CXXFLAGS="-g"
configure:	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
configure:    CXXFLAGS="-g -O2"
configure:    CXXFLAGS="-g"
configure:    CXXFLAGS="-O2"
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
configure:  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
configure:  # instance it was reported that on HP-UX the gcc test will end up
configure:  # making a dummy file named `D' -- because `-MD' means `put the output
configure:  # both Tru64's cc and ICC support -MD to output dependencies as a
configure:     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
configure:     *\ -arch\ *\ -arch\ *) am__universal=true ;;
configure:    # We check with `-c' and `-o' for the sake of the "dashmstdout"
configure:    # handle `-M -o', and we need to detect this.  Also, some Intel
configure:    am__obj=sub/conftest.${OBJEXT-o}
configure:    am__minus_obj="-o $am__obj"
configure:      # after this tag, mechanisms are not by side-effect, so they'll
configure:      # This compiler won't grok `-c -o', but also, the minuso test has
configure:      am__obj=conftest.${OBJEXT-o}
configure:       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
configure:       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
configure:      # or remarks (even with -Werror).  So we grep stderr for any message
configure:      # When given -MP, icc 7.0 and 7.1 complain thusly:
configure:      #   icc: Command line warning: ignoring option '-M'; no argument required
configure:      #   icc: Command line remark: option '-MP' not supported
configure:  rm -rf conftest.dir
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
configure:if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
configure:    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
configure:ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
configure:if test -z "$CXXCPP"; then
configure:    for CXXCPP in "$CXX -E" "/lib/cpp"
configure:  # with a fresh cross-compiler works.
configure:  # On the NeXT, cc -E runs the code through the compiler's parser,
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
configure:  # with a fresh cross-compiler works.
configure:  # On the NeXT, cc -E runs the code through the compiler's parser,
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:rm -f conftest.err conftest.$ac_ext
configure:  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:            # Check whether --enable-shared was given.
configure:  enableval=$enable_shared; p=${PACKAGE-default}
configure:  # Check whether --enable-static was given.
configure:  enableval=$enable_static; p=${PACKAGE-default}
configure:# Check whether --with-pic was given.
configure:test -z "$pic_mode" && pic_mode=default
configure:  # Check whether --enable-fast-install was given.
configure:  enableval=$enable_fast_install; p=${PACKAGE-default}
configure:test -z "$LN_S" && LN_S="ln -s"
configure:if test -n "${ZSH_VERSION+set}" ; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
configure:  rm -f .libs 2>/dev/null
configure:if test -d .libs; then
configure:  # MS-DOS does not allow filenames that begin with a dot.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
configure:# metacharacters that are still active within double-quoted strings.
configure:test -z "$CC" && CC=cc
configure:test -z "$LTCC" && LTCC=$CC
configure:test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
configure:test -z "$LD" && LD=ld
configure:test -z "$ac_objext" && ac_objext=o
configure:    \-*) ;;
configure:cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
configure:test -z "$MAGIC_CMD" && MAGIC_CMD=file
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
configure:    test -z "$ac_dir" && ac_dir=.
configure:    if test -f $ac_dir/${ac_tool_prefix}file; then
configure:      if test -n "$file_magic_test_file"; then
configure:*** bug-libtool@gnu.org
configure:if test -n "$MAGIC_CMD"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$lt_cv_path_MAGIC_CMD"; then
configure:  if test -n "$ac_tool_prefix"; then
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
configure:    test -z "$ac_dir" && ac_dir=.
configure:    if test -f $ac_dir/file; then
configure:      if test -n "$file_magic_test_file"; then
configure:*** bug-libtool@gnu.org
configure:if test -n "$MAGIC_CMD"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:LTCC=${LTCC-"$CC"}
configure:LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
configure:$RM -r conftest*
configure:if test -n "$compiler"; then
configure:  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
configure:$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
configure:   lt_compiler_flag="-fno-rtti -fno-exceptions"
configure:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
configure:   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
configure:   -e 's:$: $lt_compiler_flag:'`
configure:   if (exit $ac_status) && test -s "$ac_outfile"; then
configure:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
configure:     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
configure:    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
configure:    lt_prog_compiler_wl='-Wl,'
configure:    lt_prog_compiler_static='-static'
configure:	lt_prog_compiler_static='-Bstatic'
configure:            lt_prog_compiler_pic='-fPIC'
configure:            # adding the `-m68020' flag to GCC prevents building anything better,
configure:            # like `-m68040'.
configure:            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
configure:      # Although the cygwin gcc ignores -fPIC, still need this for old-style
configure:      # (--disable-auto-import) libraries
configure:      lt_prog_compiler_pic='-DDLL_EXPORT'
configure:      lt_prog_compiler_pic='-fno-common'
configure:      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
configure:      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
configure:	lt_prog_compiler_pic='-fPIC'
configure:    interix[3-9]*)
configure:      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
configure:      # QNX uses GNU C++, but need to define -shared option too, otherwise
configure:      lt_prog_compiler_pic='-fPIC -shared'
configure:      if test -d /usr/nec; then
configure:	lt_prog_compiler_pic=-Kconform_pic
configure:      lt_prog_compiler_pic='-fPIC'
configure:      lt_prog_compiler_wl='-Wl,'
configure:	lt_prog_compiler_static='-Bstatic'
configure:	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
configure:      lt_prog_compiler_pic='-DDLL_EXPORT'
configure:      lt_prog_compiler_wl='-Wl,'
configure:      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
configure:      # not for PA HP-UX.
configure:      lt_prog_compiler_static='${wl}-a ${wl}archive'
configure:      lt_prog_compiler_wl='-Wl,'
configure:      # PIC (with -KPIC) is the default.
configure:      lt_prog_compiler_static='-non_shared'
configure:    linux* | k*bsd*-gnu | kopensolaris*-gnu)
configure:      # old Intel for x86_64 which still supported -KPIC.
configure:	lt_prog_compiler_wl='-Wl,'
configure:	lt_prog_compiler_pic='-KPIC'
configure:	lt_prog_compiler_static='-static'
configure:      # ICC 10 doesn't accept -KPIC any more.
configure:	lt_prog_compiler_wl='-Wl,'
configure:	lt_prog_compiler_pic='-fPIC'
configure:	lt_prog_compiler_static='-static'
configure:	lt_prog_compiler_wl='-Wl,'
configure:	lt_prog_compiler_pic='--shared'
configure:	lt_prog_compiler_static='--static'
configure:	lt_prog_compiler_wl='-Wl,'
configure:	lt_prog_compiler_pic='-fpic'
configure:	lt_prog_compiler_static='-Bstatic'
configure:        lt_prog_compiler_wl='-Wl,'
configure:        lt_prog_compiler_static='-non_shared'
configure:	lt_prog_compiler_wl='-Wl,'
configure:	lt_prog_compiler_pic='-qpic'
configure:	lt_prog_compiler_static='-qstaticlink'
configure:	case `$CC -V 2>&1 | sed 5q` in
configure:	  lt_prog_compiler_pic='-KPIC'
configure:	  lt_prog_compiler_static='-Bstatic'
configure:	  lt_prog_compiler_wl='-Wl,'
configure:	  lt_prog_compiler_pic='-KPIC'
configure:	  lt_prog_compiler_static='-Bstatic'
configure:      lt_prog_compiler_pic='-KPIC'
configure:      lt_prog_compiler_static='-Bstatic'
configure:      # QNX uses GNU C++, but need to define -shared option too, otherwise
configure:      lt_prog_compiler_pic='-fPIC -shared'
configure:      lt_prog_compiler_wl='-Wl,'
configure:      lt_prog_compiler_static='-non_shared'
configure:      lt_prog_compiler_static='-non_shared'
configure:      lt_prog_compiler_pic='-KPIC'
configure:      lt_prog_compiler_static='-Bstatic'
configure:	lt_prog_compiler_wl='-Qoption ld ';;
configure:	lt_prog_compiler_wl='-Wl,';;
configure:      lt_prog_compiler_wl='-Qoption ld '
configure:      lt_prog_compiler_pic='-PIC'
configure:      lt_prog_compiler_static='-Bstatic'
configure:      lt_prog_compiler_wl='-Wl,'
configure:      lt_prog_compiler_pic='-KPIC'
configure:      lt_prog_compiler_static='-Bstatic'
configure:      if test -d /usr/nec ;then
configure:	lt_prog_compiler_pic='-Kconform_pic'
configure:	lt_prog_compiler_static='-Bstatic'
configure:      lt_prog_compiler_wl='-Wl,'
configure:      lt_prog_compiler_pic='-KPIC'
configure:      lt_prog_compiler_static='-Bstatic'
configure:      lt_prog_compiler_wl='-Wl,'
configure:      lt_prog_compiler_pic='-pic'
configure:      lt_prog_compiler_static='-Bstatic'
configure:  # For platforms which do not support PIC, -DPIC is meaningless:
configure:    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
configure:if test -n "$lt_prog_compiler_pic"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
configure:   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
configure:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
configure:   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
configure:   -e 's:$: $lt_compiler_flag:'`
configure:   if (exit $ac_status) && test -s "$ac_outfile"; then
configure:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
configure:     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
configure:   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
configure:     if test -s conftest.err; then
configure:       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
configure:   $RM -r conftest*
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
configure:$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
configure:   $RM -r conftest 2>/dev/null
configure:   lt_compiler_flag="-o out/conftest2.$ac_objext"
configure:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
configure:   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
configure:   -e 's:$: $lt_compiler_flag:'`
configure:   if (exit $ac_status) && test -s out/conftest2.$ac_objext
configure:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
configure:     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
configure:   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
configure:   $RM -r conftest
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
configure:$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
configure:   $RM -r conftest 2>/dev/null
configure:   lt_compiler_flag="-o out/conftest2.$ac_objext"
configure:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
configure:   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
configure:   -e 's:$: $lt_compiler_flag:'`
configure:   if (exit $ac_status) && test -s out/conftest2.$ac_objext
configure:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
configure:     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
configure:   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
configure:   $RM -r conftest
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
configure:$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
configure:  # include_expsyms should be a list of space-separated symbols to be *always*
configure:  linux* | k*bsd*-gnu)
configure:    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
configure:    export_dynamic_flag_spec='${wl}--export-dynamic'
configure:    # ancient GNU ld didn't support --whole-archive et. al.
configure:    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
configure:      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
configure:    case `$LD -v 2>&1` in
configure:      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
configure:    aix[3-9]*)
configure:*** so that a non-GNU linker is found, and then restart.
configure:            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
configure:            hardcode_libdir_flag_spec='-L$libdir'
configure:      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
configure:	# support --undefined.  This deserves some investigation.  FIXME
configure:	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:      hardcode_libdir_flag_spec='-L$libdir'
configure:      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
configure:      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
configure:        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
configure:	# If the export-symbols file already is a .def file (1st line
configure:	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
configure:    interix[3-9]*)
configure:      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
configure:      export_dynamic_flag_spec='${wl}-E'
configure:      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
configure:      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
configure:      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
configure:    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
configure:      if test "$host_os" = linux-dietlibc; then
configure:	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
configure:      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
configure:	tmp_sharedflag='-shared'
configure:	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
configure:	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
configure:	  tmp_addflag=' $pic_flag -Mnomain' ;;
configure:	  tmp_addflag=' -i_dynamic' ;;
configure:	  tmp_addflag=' -i_dynamic -nofor_main' ;;
configure:	  tmp_addflag=' -nofor_main' ;;
configure:	  tmp_sharedflag='--shared' ;;
configure:	  tmp_sharedflag='-qmkshrobj'
configure:	case `$CC -V 2>&1 | sed 5q` in
configure:	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
configure:	  tmp_sharedflag='-G' ;;
configure:	  tmp_sharedflag='-G' ;;
configure:	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
configure:	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
configure:	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
configure:	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
configure:	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
configure:	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
configure:	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
configure:    netbsd* | netbsdelf*-gnu)
configure:      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
configure:	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
configure:	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
configure:      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
configure:      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
configure:	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
configure:      case `$LD -v 2>&1` in
configure:        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
configure:	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
configure:	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
configure:	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
configure:      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
configure:      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
configure:	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
configure:      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
configure:      # are no directories specified by -L.
configure:      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
configure:    aix[4-9]*)
configure:	exp_sym_flag='-Bexport'
configure:	# If we're using GNU nm, then we don't want the "-C" option.
configure:	# -C means demangle to AIX nm, but means don't demangle with GNU nm
configure:	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
configure:	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
configure:	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
configure:	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
configure:	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
configure:	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
configure:	exp_sym_flag='-bexport'
configure:	no_entry_flag='-bnoentry'
configure:      # or program results in "error TOC overflow" add -mminimal-toc to
configure:      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
configure:      file_list_spec='${wl}-f,'
configure:	  collect2name=`${CC} -print-prog-name=collect2`
configure:	  if test -f "$collect2name" &&
configure:	  hardcode_libdir_flag_spec='-L$libdir'
configure:	shared_flag='-shared'
configure:	  shared_flag="$shared_flag "'${wl}-G'
configure:	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
configure:	# chokes on -Wl,-G. The following line is correct:
configure:	  shared_flag='-G'
configure:	    shared_flag='${wl}-G'
configure:	    shared_flag='${wl}-bM:SRE'
configure:      export_dynamic_flag_spec='${wl}-bexpall'
configure:      # It seems that -bexpall does not export symbols beginning with
configure:	# Warning - without using the other runtime loading flags (-brtl),
configure:	# -berok will link without error, but may produce a broken library.
configure:	allow_undefined_flag='-berok'
configure:        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
configure:# Check for a 64-bit object if we didn't find anything.
configure:if test -z "$aix_libpath"; then
configure:  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
configure:rm -f core conftest.err conftest.$ac_objext \
configure:if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
configure:        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
configure:        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
configure:	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
configure:	  allow_undefined_flag="-z nodefs"
configure:	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
configure:	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
configure:# Check for a 64-bit object if we didn't find anything.
configure:if test -z "$aix_libpath"; then
configure:  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
configure:rm -f core conftest.err conftest.$ac_objext \
configure:if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
configure:	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
configure:	  # Warning - without using the other run time loading flags,
configure:	  # -berok will link without error, but may produce a broken library.
configure:	  no_undefined_flag=' ${wl}-bernotok'
configure:	  allow_undefined_flag=' ${wl}-berok'
configure:	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
configure:            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
configure:            hardcode_libdir_flag_spec='-L$libdir'
configure:      export_dynamic_flag_spec=-rdynamic
configure:      archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
configure:      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
configure:      fix_srcfile_path='`cygpath -w "$srcfile"`'
configure:    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
configure:    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
configure:    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
configure:    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
configure:      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
configure:      hardcode_libdir_flag_spec='-L$libdir'
configure:      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
configure:      hardcode_libdir_flag_spec='-R$libdir'
configure:      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
configure:    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
configure:      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
configure:      hardcode_libdir_flag_spec='-R$libdir'
configure:	archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
configure:	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
configure:      export_dynamic_flag_spec='${wl}-E'
configure:      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
configure:	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
configure:	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
configure:	export_dynamic_flag_spec='${wl}-E'
configure:      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
configure:	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
configure:	  export_dynamic_flag_spec='${wl}-E'
configure:	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
configure:	# Try to use the -exported_symbol ld option, if it does not
configure:	# work, assume that -exports_file does not work either and
configure:        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
configure:        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
configure:rm -f core conftest.err conftest.$ac_objext \
configure:	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
configure:	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
configure:      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
configure:    netbsd* | netbsdelf*-gnu)
configure:      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
configure:	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
configure:	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
configure:      hardcode_libdir_flag_spec='-R$libdir'
configure:      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
configure:      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
configure:      if test -f /usr/libexec/ld.so; then
configure:	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
configure:	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
configure:	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
configure:	  export_dynamic_flag_spec='${wl}-E'
configure:	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
configure:	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
configure:	     hardcode_libdir_flag_spec='-R$libdir'
configure:	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
configure:	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
configure:      hardcode_libdir_flag_spec='-L$libdir'
configure:      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
configure:      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
configure:	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
configure:	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
configure:	allow_undefined_flag=' -expect_unresolved \*'
configure:	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
configure:      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
configure:    osf4* | osf5*)	# as osf3* with the addition of -msym flag
configure:	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
configure:	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
configure:	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
configure:	allow_undefined_flag=' -expect_unresolved \*'
configure:	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
configure:	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
configure:	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
configure:	# Both c and cxx compiler support -rpath directly
configure:	hardcode_libdir_flag_spec='-rpath $libdir'
configure:      no_undefined_flag=' -z defs'
configure:	archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
configure:	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
configure:	case `$CC -V 2>&1` in
configure:	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
configure:	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
configure:	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
configure:	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
configure:	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
configure:      hardcode_libdir_flag_spec='-R$libdir'
configure:      solaris2.[0-5] | solaris2.[0-5].*) ;;
configure:	# but understands `-z linker_flag'.  GCC discards it without `$wl',
configure:	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
configure:	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
configure:	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
configure:      hardcode_libdir_flag_spec='-L$libdir'
configure:	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
configure:	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
configure:	  reload_cmds='$CC -r -o $output$reload_objs'
configure:	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
configure:      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
configure:      export_dynamic_flag_spec='-Bexport'
configure:      if test -d /usr/nec; then
configure:	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
configure:      no_undefined_flag='${wl}-z,text'
configure:	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:      # Note: We can NOT use -z defs as we might desire, because we do not
configure:      # link with -lc, and that would cause any symbols used from libc to
configure:      # ever link correctly.  If we're not using GNU ld we use -z text
configure:      # though, which does catch some bad symbols but isn't as heavy-handed
configure:      # as -z defs.
configure:      no_undefined_flag='${wl}-z,text'
configure:      allow_undefined_flag='${wl}-z,nodefs'
configure:      hardcode_libdir_flag_spec='${wl}-R,$libdir'
configure:      export_dynamic_flag_spec='${wl}-Bexport'
configure:	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
configure:      hardcode_libdir_flag_spec='-L$libdir'
configure:	export_dynamic_flag_spec='${wl}-Blargedynsym'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
configure:  # Assume -lc should be added
configure:      # FIXME: we may have to deal with multi-command sequences.
configure:      # Test whether the compiler implicitly links with -lc since on some
configure:      # systems, -lgcc has to come before -lc. If gcc already passes -lc
configure:      # to ld, don't add -lc before -lgcc.
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
configure:$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
configure:      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:        compiler_flags=-v
configure:        linker_flags=-v
configure:        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
configure:  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
configure:  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
configure:    # otherwise default to the standard path separator (i.e. ":") - it is
configure:    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
configure:    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
configure:  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
configure:    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
configure:      test -d "$lt_sys_path" && \
configure:  for (lt_i = NF; lt_i > 0; lt_i--) {
configure:          lt_count--;
configure:# when you set need_version to no, make sure it does not cause -set_version
configure:aix[4-9]*)
configure:	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
configure:    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
configure:    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
configure:  # libtool to hard-code these into programs
configure:      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
configure:      test -d \$dldir || mkdir -p \$dldir~
configure:      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
configure:    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
configure:      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
configure:      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
configure:      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
configure:      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
configure:        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
configure:        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
configure:      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
configure:    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
configure:  if test -x /usr/bin/objformat; then
configure:  version_type=freebsd-$objformat
configure:    freebsd-elf*)
configure:    freebsd-*)
configure:  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
configure:  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
configure:  # HP-UX runs *really* slowly unless shared libraries are mode 555.
configure:interix[3-9]*)
configure:    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
configure:      libsuff= shlibsuff= libmagic=32-bit;;
configure:    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
configure:    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
configure:      libsuff=64 shlibsuff=64 libmagic=64-bit;;
configure:    *) libsuff= shlibsuff= libmagic=never-match;;
configure:linux* | k*bsd*-gnu | kopensolaris*-gnu)
configure:  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
configure:rm -f core conftest.err conftest.$ac_objext \
configure:  if test -f /etc/ld.so.conf; then
configure:    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
configure:  # most powerpc-linux boxes support dynamic linking these days and
configure:  # people can always --disable-shared, the test was removed, and we
configure:netbsdelf*-gnu)
configure:  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
configure:    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
configure:  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
configure:  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
configure:  if test -d /usr/nec ;then
configure:  version_type=freebsd-elf
configure:  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
configure:if test -n "$hardcode_libdir_flag_spec" ||
configure:   test -n "$runpath_var" ||
configure:  # We can hardcode non-existent directories.
configure:     # when we should be linking with a yet-to-be-installed one
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
configure:$as_echo_n "checking for dlopen in -ldl... " >&6; }
configure:LIBS="-ldl  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
configure:  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
configure:$as_echo_n "checking for shl_load in -ldld... " >&6; }
configure:LIBS="-ldld  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
configure:  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
configure:$as_echo_n "checking for dlopen in -ldl... " >&6; }
configure:LIBS="-ldl  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
configure:  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
configure:$as_echo_n "checking for dlopen in -lsvld... " >&6; }
configure:LIBS="-lsvld  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
configure:  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
configure:$as_echo_n "checking for dld_link in -ldld... " >&6; }
configure:LIBS="-ldld  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
configure:  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
configure:    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
configure:  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
configure:rm -fr conftest*
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
configure:  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
configure:rm -fr conftest*
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
configure:if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
configure:  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
configure:  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:# FIXME - insert some real tests, host_os isn't really good enough
configure:    if test -n "$STRIP" ; then
configure:      striplib="$STRIP -x"
configure:      old_striplib="$STRIP -S"
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
configure:    if test -n "$RANLIB"; then
configure:  aix[4-9]*)
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:# and will be corrupted by setting them based on a non-working compiler.
configure:LTCC=${LTCC-"$CC"}
configure:LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
configure:$RM -r conftest*
configure:  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
configure:  if test -n "${lt_cv_path_LDCXX+set}"; then
configure:  test -z "${LDCXX+set}" || LD=$LDCXX
configure:  CC=${CXX-"c++"}
configure:    \-*) ;;
configure:cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
configure:  if test -n "$compiler"; then
configure:    # We don't want -fno-exception when compiling C++ code, so set the
configure:      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
configure:# Check whether --with-gnu-ld was given.
configure:  # Check if gcc -print-prog-name=ld gives a path.
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
configure:  *-*-mingw*)
configure:    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
configure:    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
configure:      test -z "$LD" && LD="$ac_prog"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
configure:$as_echo_n "checking for non-GNU ld... " >&6; }
configure:  if test -z "$LD"; then
configure:    test -z "$ac_dir" && ac_dir=.
configure:    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
configure:      # Check to see if the program is GNU ld.  I'd rather use --version,
configure:      # but apparently some variants of GNU ld only accept -v.
configure:      # Break only if it was the GNU/non-GNU ld that we prefer.
configure:      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
configure:if test -n "$LD"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
configure:  # I'd rather use --version here, but apparently some GNU lds only accept -v.
configure:case `$LD -v 2>&1 </dev/null` in
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
configure:        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:        archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
configure:        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
configure:        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
configure:        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
configure:        # ancient GNU ld didn't support --whole-archive et. al.
configure:        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
configure:	  $GREP 'no-whole-archive' > /dev/null; then
configure:          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
configure:        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
configure:      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
configure:      aix[4-9]*)
configure:          exp_sym_flag='-Bexport'
configure:          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
configure:          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
configure:	      *-brtl*)
configure:          exp_sym_flag='-bexport'
configure:          no_entry_flag='-bnoentry'
configure:        # or program results in "error TOC overflow" add -mminimal-toc to
configure:        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
configure:        file_list_spec_CXX='${wl}-f,'
configure:	  collect2name=`${CC} -print-prog-name=collect2`
configure:	  if test -f "$collect2name" &&
configure:	    hardcode_libdir_flag_spec_CXX='-L$libdir'
configure:          shared_flag='-shared'
configure:	    shared_flag="$shared_flag "'${wl}-G'
configure:	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
configure:	  # chokes on -Wl,-G. The following line is correct:
configure:	  shared_flag='-G'
configure:	      shared_flag='${wl}-G'
configure:	      shared_flag='${wl}-bM:SRE'
configure:        export_dynamic_flag_spec_CXX='${wl}-bexpall'
configure:        # It seems that -bexpall does not export symbols beginning with
configure:          # Warning - without using the other runtime loading flags (-brtl),
configure:          # -berok will link without error, but may produce a broken library.
configure:          allow_undefined_flag_CXX='-berok'
configure:          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
configure:# Check for a 64-bit object if we didn't find anything.
configure:if test -z "$aix_libpath"; then
configure:  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
configure:rm -f core conftest.err conftest.$ac_objext \
configure:if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
configure:          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
configure:          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
configure:	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
configure:	    allow_undefined_flag_CXX="-z nodefs"
configure:	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
configure:	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
configure:# Check for a 64-bit object if we didn't find anything.
configure:if test -z "$aix_libpath"; then
configure:  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
configure:rm -f core conftest.err conftest.$ac_objext \
configure:if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
configure:	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
configure:	    # Warning - without using the other run time loading flags,
configure:	    # -berok will link without error, but may produce a broken library.
configure:	    no_undefined_flag_CXX=' ${wl}-bernotok'
configure:	    allow_undefined_flag_CXX=' ${wl}-berok'
configure:	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
configure:	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
configure:	  # support --undefined.  This deserves some investigation.  FIXME
configure:	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:        hardcode_libdir_flag_spec_CXX='-L$libdir'
configure:        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
configure:          archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
configure:          # If the export-symbols file already is a .def file (1st line
configure:          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
configure:    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
configure:    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
configure:    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
configure:    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
configure:      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
configure:      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
configure:      freebsd-elf*)
configure:        export_dynamic_flag_spec_CXX='${wl}-E'
configure:            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
configure:            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
configure:              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
configure:	      export_dynamic_flag_spec_CXX='${wl}-E'
configure:	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
configure:	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
configure:	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
configure:	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
configure:	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
configure:	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
configure:	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
configure:      interix[3-9]*)
configure:	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
configure:	export_dynamic_flag_spec_CXX='${wl}-E'
configure:	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
configure:	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
configure:	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
configure:	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
configure:	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
configure:	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
configure:	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
configure:	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
configure:        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
configure:      linux* | k*bsd*-gnu | kopensolaris*-gnu)
configure:	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
configure:	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
configure:	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
configure:	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
configure:	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
configure:	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
configure:	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
configure:	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
configure:	    case `$CC -V 2>&1` in
configure:	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
configure:		  ia64*) tmp_idyn=' -i_dynamic';;
configure:	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
configure:	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
configure:	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
configure:	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
configure:	    case `$CC -V` in
configure:	    *pgCC\ [1-5]* | *pgcpp\ [1-5]*)
configure:		rm -rf $tpldir~
configure:		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
configure:		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
configure:		rm -rf $tpldir~
configure:		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
configure:		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
configure:		rm -rf $tpldir~
configure:		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
configure:		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
configure:		rm -rf $tpldir~
configure:		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
configure:		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
configure:	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
configure:	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
configure:	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
configure:	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
configure:	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
configure:	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
configure:	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
configure:	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
configure:	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
configure:	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
configure:	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
configure:		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
configure:		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
configure:	    case `$CC -V 2>&1 | sed 5q` in
configure:	      no_undefined_flag_CXX=' -zdefs'
configure:	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
configure:	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
configure:	      hardcode_libdir_flag_spec_CXX='-R$libdir'
configure:	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
configure:	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
configure:	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
configure:	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
configure:        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
configure:	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
configure:	  hardcode_libdir_flag_spec_CXX='-R$libdir'
configure:	# Workaround some broken pre-1.5 toolchains
configure:	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
configure:	if test -f /usr/libexec/ld.so; then
configure:	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
configure:	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
configure:	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
configure:	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
configure:	    export_dynamic_flag_spec_CXX='${wl}-E'
configure:	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
configure:	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
configure:	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
configure:	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
configure:	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
configure:	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
configure:	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
configure:	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
configure:	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
configure:	        allow_undefined_flag_CXX=' -expect_unresolved \*'
configure:	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
configure:	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
configure:	          echo "-hidden">> $lib.exp~
configure:	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
configure:	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
configure:	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
configure:	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
configure:	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
configure:	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
configure:	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
configure:	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
configure:	    no_undefined_flag_CXX=' -zdefs'
configure:	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
configure:	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
configure:	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
configure:	    hardcode_libdir_flag_spec_CXX='-R$libdir'
configure:	      solaris2.[0-5] | solaris2.[0-5].*) ;;
configure:		# but understands `-z linker_flag'.
configure:		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
configure:	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
configure:	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
configure:	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
configure:	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
configure:	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
configure:	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
configure:	        archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
configure:	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
configure:		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
configure:	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
configure:	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
configure:	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
configure:	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
configure:		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
configure:	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
configure:	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
configure:		solaris2.[0-5] | solaris2.[0-5].*) ;;
configure:		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
configure:      no_undefined_flag_CXX='${wl}-z,text'
configure:	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	# Note: We can NOT use -z defs as we might desire, because we do not
configure:	# link with -lc, and that would cause any symbols used from libc to
configure:	# ever link correctly.  If we're not using GNU ld we use -z text
configure:	# though, which does catch some bad symbols but isn't as heavy-handed
configure:	# as -z defs.
configure:	no_undefined_flag_CXX='${wl}-z,text'
configure:	allow_undefined_flag_CXX='${wl}-z,nodefs'
configure:	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
configure:	export_dynamic_flag_spec_CXX='${wl}-Bexport'
configure:	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
configure:	    # NonStop-UX NCC 3.20
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
configure:if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:    -L* | -R* | -l*)
configure:       # Some compilers place space between "-{L,R}" and the path.
configure:       if test $p = "-L" ||
configure:          test $p = "-R"; then
configure:	 -L* | -R*)
configure:	   if test -z "$compiler_lib_search_path_CXX"; then
configure:	 # The "-l" case would never come before the object being
configure:	 if test -z "$postdeps_CXX"; then
configure:	 if test -z "$predep_objects_CXX"; then
configure:	 if test -z "$postdep_objects_CXX"; then
configure:  rm -f a.out a.exe
configure:$RM -f confest.$objext
configure:interix[3-9]*)
configure:  case `$CC -V 2>&1 | sed 5q` in
configure:    # The more standards-conforming stlport4 library is
configure:    # -library=stlport4 depends on it.
configure:    *" -library=stlport4 "*)
configure:      postdeps_CXX='-library=Cstd -library=Crun'
configure:    # The more standards-conforming stlport4 library is
configure:    # -library=stlport4 depends on it.
configure:    *" -library=stlport4 "*)
configure:    # Adding this requires a known-good setup of shared libraries for
configure:      postdeps_CXX='-library=Cstd -library=Crun'
configure:*" -lc "*) archive_cmds_need_lc_CXX=no ;;
configure:if test -n "${compiler_lib_search_path_CXX}"; then
configure: compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
configure:    lt_prog_compiler_wl_CXX='-Wl,'
configure:    lt_prog_compiler_static_CXX='-static'
configure:	lt_prog_compiler_static_CXX='-Bstatic'
configure:            lt_prog_compiler_pic_CXX='-fPIC'
configure:            # adding the `-m68020' flag to GCC prevents building anything better,
configure:            # like `-m68040'.
configure:            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
configure:      # Although the cygwin gcc ignores -fPIC, still need this for old-style
configure:      # (--disable-auto-import) libraries
configure:      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
configure:      lt_prog_compiler_pic_CXX='-fno-common'
configure:    interix[3-9]*)
configure:      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
configure:      if test -d /usr/nec; then
configure:	lt_prog_compiler_pic_CXX=-Kconform_pic
configure:      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
configure:      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
configure:	lt_prog_compiler_pic_CXX='-fPIC'
configure:      # QNX uses GNU C++, but need to define -shared option too, otherwise
configure:      lt_prog_compiler_pic_CXX='-fPIC -shared'
configure:      lt_prog_compiler_pic_CXX='-fPIC'
configure:      aix[4-9]*)
configure:	  lt_prog_compiler_static_CXX='-Bstatic'
configure:	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
configure:	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
configure:	    lt_prog_compiler_pic_CXX='-KPIC'
configure:	    lt_prog_compiler_pic_CXX='-pic'
configure:	    lt_prog_compiler_wl_CXX='-Wl,'
configure:	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
configure:	    lt_prog_compiler_wl_CXX='-Wl,'
configure:	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
configure:	    lt_prog_compiler_wl_CXX='-Wl,'
configure:	    lt_prog_compiler_static_CXX='-non_shared'
configure:	    # CC pic flag -KPIC is the default.
configure:      linux* | k*bsd*-gnu | kopensolaris*-gnu)
configure:	    lt_prog_compiler_wl_CXX='--backend -Wl,'
configure:	    lt_prog_compiler_pic_CXX='-fPIC'
configure:	    # old Intel C++ for x86_64 which still supported -KPIC.
configure:	    lt_prog_compiler_wl_CXX='-Wl,'
configure:	    lt_prog_compiler_pic_CXX='-KPIC'
configure:	    lt_prog_compiler_static_CXX='-static'
configure:	    # ICC 10 doesn't accept -KPIC any more.
configure:	    lt_prog_compiler_wl_CXX='-Wl,'
configure:	    lt_prog_compiler_pic_CXX='-fPIC'
configure:	    lt_prog_compiler_static_CXX='-static'
configure:	    lt_prog_compiler_wl_CXX='-Wl,'
configure:	    lt_prog_compiler_pic_CXX='-fpic'
configure:	    lt_prog_compiler_static_CXX='-Bstatic'
configure:	    lt_prog_compiler_static_CXX='-non_shared'
configure:	    lt_prog_compiler_wl_CXX='-Wl,'
configure:	    lt_prog_compiler_pic_CXX='-qpic'
configure:	    lt_prog_compiler_static_CXX='-qstaticlink'
configure:	    case `$CC -V 2>&1 | sed 5q` in
configure:	      lt_prog_compiler_pic_CXX='-KPIC'
configure:	      lt_prog_compiler_static_CXX='-Bstatic'
configure:	      lt_prog_compiler_wl_CXX='-Qoption ld '
configure:	    lt_prog_compiler_pic_CXX='-W c,exportall'
configure:      netbsd* | netbsdelf*-gnu)
configure:        # QNX uses GNU C++, but need to define -shared option too, otherwise
configure:        lt_prog_compiler_pic_CXX='-fPIC -shared'
configure:	    lt_prog_compiler_wl_CXX='--backend -Wl,'
configure:	    lt_prog_compiler_pic_CXX='-pic'
configure:	    lt_prog_compiler_wl_CXX='-Wl,'
configure:	    lt_prog_compiler_static_CXX='-non_shared'
configure:	    lt_prog_compiler_pic_CXX='-KPIC'
configure:	    lt_prog_compiler_static_CXX='-Bstatic'
configure:	    lt_prog_compiler_wl_CXX='-Qoption ld '
configure:	    lt_prog_compiler_pic_CXX='-PIC'
configure:	    lt_prog_compiler_pic_CXX='-pic'
configure:	    lt_prog_compiler_static_CXX='-Bstatic'
configure:	    lt_prog_compiler_pic_CXX='-pic'
configure:	    lt_prog_compiler_wl_CXX='-Wl,'
configure:	    lt_prog_compiler_pic_CXX='-KPIC'
configure:	    lt_prog_compiler_static_CXX='-Bstatic'
configure:	    # NonStop-UX NCC 3.20
configure:	    lt_prog_compiler_pic_CXX='-KPIC'
configure:  # For platforms which do not support PIC, -DPIC is meaningless:
configure:    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5
configure:if test -n "$lt_prog_compiler_pic_CXX"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
configure:   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
configure:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
configure:   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
configure:   -e 's:$: $lt_compiler_flag:'`
configure:   if (exit $ac_status) && test -s "$ac_outfile"; then
configure:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
configure:     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
configure:   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
configure:     if test -s conftest.err; then
configure:       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
configure:   $RM -r conftest*
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
configure:$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
configure:   $RM -r conftest 2>/dev/null
configure:   lt_compiler_flag="-o out/conftest2.$ac_objext"
configure:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
configure:   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
configure:   -e 's:$: $lt_compiler_flag:'`
configure:   if (exit $ac_status) && test -s out/conftest2.$ac_objext
configure:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
configure:     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
configure:   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
configure:   $RM -r conftest
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
configure:$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
configure:   $RM -r conftest 2>/dev/null
configure:   lt_compiler_flag="-o out/conftest2.$ac_objext"
configure:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
configure:   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
configure:   -e 's:$: $lt_compiler_flag:'`
configure:   if (exit $ac_status) && test -s out/conftest2.$ac_objext
configure:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
configure:     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
configure:   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
configure:   $RM -r conftest
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
configure:$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
configure:  aix[4-9]*)
configure:    # If we're using GNU nm, then we don't want the "-C" option.
configure:    # -C means demangle to AIX nm, but means don't demangle with GNU nm
configure:    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
configure:      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
configure:      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
configure:    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
configure:  linux* | k*bsd*-gnu)
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
configure:  # Assume -lc should be added
configure:      # FIXME: we may have to deal with multi-command sequences.
configure:      # Test whether the compiler implicitly links with -lc since on some
configure:      # systems, -lgcc has to come before -lc. If gcc already passes -lc
configure:      # to ld, don't add -lc before -lgcc.
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
configure:$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
configure:      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:        compiler_flags=-v
configure:        linker_flags=-v
configure:        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
configure:  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
configure:# when you set need_version to no, make sure it does not cause -set_version
configure:aix[4-9]*)
configure:	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
configure:    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
configure:    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
configure:  # libtool to hard-code these into programs
configure:      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
configure:      test -d \$dldir || mkdir -p \$dldir~
configure:      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
configure:    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
configure:      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
configure:      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
configure:      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
configure:      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
configure:        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
configure:        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
configure:      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
configure:    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
configure:  if test -x /usr/bin/objformat; then
configure:  version_type=freebsd-$objformat
configure:    freebsd-elf*)
configure:    freebsd-*)
configure:  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
configure:  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
configure:  # HP-UX runs *really* slowly unless shared libraries are mode 555.
configure:interix[3-9]*)
configure:    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
configure:      libsuff= shlibsuff= libmagic=32-bit;;
configure:    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
configure:    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
configure:      libsuff=64 shlibsuff=64 libmagic=64-bit;;
configure:    *) libsuff= shlibsuff= libmagic=never-match;;
configure:linux* | k*bsd*-gnu | kopensolaris*-gnu)
configure:  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
configure:rm -f core conftest.err conftest.$ac_objext \
configure:  if test -f /etc/ld.so.conf; then
configure:    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
configure:  # most powerpc-linux boxes support dynamic linking these days and
configure:  # people can always --disable-shared, the test was removed, and we
configure:netbsdelf*-gnu)
configure:  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
configure:    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
configure:  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
configure:  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
configure:  if test -d /usr/nec ;then
configure:  version_type=freebsd-elf
configure:  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
configure:if test -n "$hardcode_libdir_flag_spec_CXX" ||
configure:   test -n "$runpath_var_CXX" ||
configure:  # We can hardcode non-existent directories.
configure:     # when we should be linking with a yet-to-be-installed one
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
configure:  fi # test -n "$compiler"
configure:ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
configure:ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
configure:$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:     an arm of an if-expression whose if-part is not a constant
configure:  pcpcc = &g + (g ? g-g : 0);
configure:  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
configure:  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
configure:       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
configure:    struct s *b; b->j = 5;
configure:  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  /* Some versions of memcmp are not 8-bit clean.  */
configure:     or more and with at least one buffer not starting on a 4-byte boundary.
configure:	strcpy (a, "--------01111111");
configure:	strcpy (b, "--------10000000");
configure:rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  /* Next, check that the tail of a page is zero-filled.  File must have
configure:     non-zero length, otherwise we risk SIGBUS for entire page.  */
configure:rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
configure:rm -f conftest.mmap conftest.txt
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cbrt in -lm" >&5
configure:$as_echo_n "checking for cbrt in -lm... " >&6; }
configure:LIBS="-lm  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cbrt" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypot in -lm" >&5
configure:$as_echo_n "checking for hypot in -lm... " >&6; }
configure:LIBS="-lm  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_hypot" >&5
configure:	if test -n "$ac_tool_prefix"; then
configure:  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
configure:set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:if test -z "$ac_cv_path_PKG_CONFIG"; then
configure:  # Extract the first word of "pkg-config", so it can be a program name with args.
configure:set dummy pkg-config; ac_word=$2
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$ac_pt_PKG_CONFIG"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
configure:$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
configure:	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
configure:		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for REQUIRED" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$REQUIRED_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_REQUIRED_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$REQUIRED_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_REQUIRED_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        REQUIRED_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0"`
configure:	        REQUIRED_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0"`
configure:	as_fn_error "Package requirements (glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0) were not met:
configure:installed software in a non-standard prefix.
configure:and REQUIRED_LIBS to avoid the need to call pkg-config.
configure:See the pkg-config man page for more details.
configure:	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:as_fn_error "The pkg-config script could not be found or is too old.  Make sure it
configure:path to pkg-config.
configure:and REQUIRED_LIBS to avoid the need to call pkg-config.
configure:See the pkg-config man page for more details.
configure:To get pkg-config, see <http://pkg-config.freedesktop.org/>.
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:PACKAGES_USED="$PACKAGES_USED glib-2.0 gmodule-2.0 libxml-2.0 gobject-2.0"
configure:# Check whether --enable-links was given.
configure:  # tested by src/iofuncs/Makefile.am:install-exec-hook
configure:# Check whether --enable-threads was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$GTHREAD_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$GTHREAD_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gthread-2.0"`
configure:	        GTHREAD_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gthread-2.0"`
configure:	as_fn_error "Package requirements (gthread-2.0) were not met:
configure:installed software in a non-standard prefix.
configure:and GTHREAD_LIBS to avoid the need to call pkg-config.
configure:See the pkg-config man page for more details.
configure:	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
configure:as_fn_error "The pkg-config script could not be found or is too old.  Make sure it
configure:path to pkg-config.
configure:and GTHREAD_LIBS to avoid the need to call pkg-config.
configure:See the pkg-config man page for more details.
configure:To get pkg-config, see <http://pkg-config.freedesktop.org/>.
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:  PACKAGES_USED="$PACKAGES_USED gthread-2.0"
configure:# check for gtk-doc
configure:    # Extract the first word of "gtkdoc-check", so it can be a program name with args.
configure:set dummy gtkdoc-check; ac_word=$2
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$GTKDOC_CHECK"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  for ac_prog in gtkdoc-rebase
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$GTKDOC_REBASE"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:  test -n "$GTKDOC_REBASE" && break
configure:test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true"
configure:  # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args.
configure:set dummy gtkdoc-mkpdf; ac_word=$2
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$GTKDOC_MKPDF"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:# Check whether --with-html-dir was given.
configure:  with_html_dir='${datadir}/gtk-doc/html'
configure:    # Check whether --enable-gtk-doc was given.
configure:    if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.9\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.9") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  as_fn_error "You need to have gtk-doc >= 1.9 installed to build $PACKAGE_NAME" "$LINENO" 5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5
configure:$as_echo_n "checking whether to build gtk-doc documentation... " >&6; }
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5
configure:    # Check whether --enable-gtk-doc-html was given.
configure:    # Check whether --enable-gtk-doc-pdf was given.
configure:  if test -z "$GTKDOC_MKPDF"; then
configure:   if test -n "$LIBTOOL"; then
configure:   if test -n "$GTKDOC_REBASE"; then
configure:# that with pkg-config
configure:# Check whether --with-fftw3 was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFTW3" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$FFTW3_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "fftw3") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_FFTW3_CFLAGS=`$PKG_CONFIG --cflags "fftw3" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$FFTW3_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "fftw3") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_FFTW3_LIBS=`$PKG_CONFIG --libs "fftw3" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        FFTW3_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "fftw3"`
configure:	        FFTW3_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "fftw3"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: fftw3 not found; disabling fftw support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: fftw3 not found; disabling fftw support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:# --with-magickpackage=GraphicsMagick
configure:# Check whether --with-magick was given.
configure:# Check whether --with-magickpackage was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAGICK_WAND" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$MAGICK_WAND_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"MagickWand\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "MagickWand") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_MAGICK_WAND_CFLAGS=`$PKG_CONFIG --cflags "MagickWand" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$MAGICK_WAND_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"MagickWand\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "MagickWand") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_MAGICK_WAND_LIBS=`$PKG_CONFIG --libs "MagickWand" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        MAGICK_WAND_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "MagickWand"`
configure:	        MAGICK_WAND_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "MagickWand"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IMAGE_MAGICK" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$IMAGE_MAGICK_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "ImageMagick") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_IMAGE_MAGICK_CFLAGS=`$PKG_CONFIG --cflags "ImageMagick" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$IMAGE_MAGICK_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "ImageMagick") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_IMAGE_MAGICK_LIBS=`$PKG_CONFIG --libs "ImageMagick" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        IMAGE_MAGICK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ImageMagick"`
configure:	        IMAGE_MAGICK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ImageMagick"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IMAGE_MAGICK" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$IMAGE_MAGICK_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "ImageMagick") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_IMAGE_MAGICK_CFLAGS=`$PKG_CONFIG --cflags "ImageMagick" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$IMAGE_MAGICK_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "ImageMagick") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_IMAGE_MAGICK_LIBS=`$PKG_CONFIG --libs "ImageMagick" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        IMAGE_MAGICK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ImageMagick"`
configure:	        IMAGE_MAGICK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ImageMagick"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAGICK" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$MAGICK_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$with_magickpackage\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "$with_magickpackage") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_MAGICK_CFLAGS=`$PKG_CONFIG --cflags "$with_magickpackage" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$MAGICK_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$with_magickpackage\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "$with_magickpackage") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_MAGICK_LIBS=`$PKG_CONFIG --libs "$with_magickpackage" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        MAGICK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$with_magickpackage"`
configure:	        MAGICK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$with_magickpackage"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $with_magickpackage not found; disabling Magick support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $with_magickpackage not found; disabling Magick support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:# Check whether --with-liboil was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBOIL" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$LIBOIL_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liboil-0.3\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "liboil-0.3") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_LIBOIL_CFLAGS=`$PKG_CONFIG --cflags "liboil-0.3" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$LIBOIL_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liboil-0.3\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "liboil-0.3") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_LIBOIL_LIBS=`$PKG_CONFIG --libs "liboil-0.3" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        LIBOIL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "liboil-0.3"`
configure:	        LIBOIL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "liboil-0.3"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: liboil not found; disabling liboil support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: liboil not found; disabling liboil support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:     PACKAGES_USED="$PACKAGES_USED liboil-0.3"
configure:# Check whether --with-lcms was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LCMS" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$LCMS_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "lcms") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_LCMS_CFLAGS=`$PKG_CONFIG --cflags "lcms" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$LCMS_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "lcms") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_LCMS_LIBS=`$PKG_CONFIG --libs "lcms" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        LCMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "lcms"`
configure:	        LCMS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "lcms"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: lcms not found; disabling lcms support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: lcms not found; disabling lcms support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:# Check whether --with-OpenEXR was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENEXR" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$OPENEXR_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"OpenEXR >= 1.2.2\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "OpenEXR >= 1.2.2") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_OPENEXR_CFLAGS=`$PKG_CONFIG --cflags "OpenEXR >= 1.2.2" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$OPENEXR_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"OpenEXR >= 1.2.2\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "OpenEXR >= 1.2.2") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_OPENEXR_LIBS=`$PKG_CONFIG --libs "OpenEXR >= 1.2.2" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        OPENEXR_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "OpenEXR >= 1.2.2"`
configure:	        OPENEXR_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "OpenEXR >= 1.2.2"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenEXR not found; disabling OpenEXR support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenEXR not found; disabling OpenEXR support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:# Check whether --with-matio was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MATIO" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$MATIO_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"matio\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "matio") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_MATIO_CFLAGS=`$PKG_CONFIG --cflags "matio" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$MATIO_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"matio\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "matio") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_MATIO_LIBS=`$PKG_CONFIG --libs "matio" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        MATIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "matio"`
configure:	        MATIO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "matio"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: matio not found; disabling matio support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: matio not found; disabling matio support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:# Check whether --with-pangoft2 was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGOFT2" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$PANGOFT2_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangoft2\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "pangoft2") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_PANGOFT2_CFLAGS=`$PKG_CONFIG --cflags "pangoft2" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$PANGOFT2_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangoft2\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "pangoft2") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_PANGOFT2_LIBS=`$PKG_CONFIG --libs "pangoft2" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        PANGOFT2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "pangoft2"`
configure:	        PANGOFT2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangoft2"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pangoft2 not found; disabling pangoft2 support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pangoft2 not found; disabling pangoft2 support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
configure:# Check whether --with-x was given.
configure:rm -f -r conftest.dir
configure:  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
configure:      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
configure:      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
configure:	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
configure:	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
configure:	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
configure:  rm -f -r conftest.dir
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  if test -r "$ac_dir/X11/Xlib.h"; then
configure:rm -f conftest.err conftest.$ac_ext
configure:  LIBS="-lX11 $LIBS"
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    if test -r "$ac_dir/libX11.$ac_extension"; then
configure:rm -f core conftest.err conftest.$ac_objext \
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
configure:  if test -n "$x_includes"; then
configure:    X_CFLAGS="$X_CFLAGS -I$x_includes"
configure:  # It would also be nice to do this for all -L options, not just this one.
configure:  if test -n "$x_libraries"; then
configure:    X_LIBS="$X_LIBS -L$x_libraries"
configure:    # For Solaris; some versions of Sun CC require a space after -R and
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
configure:$as_echo_n "checking whether -R must be followed by a space... " >&6; }
configure:    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:       X_LIBS="$X_LIBS -R$x_libraries"
configure:  LIBS="$ac_xsave_LIBS -R $x_libraries"
configure:       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:	  X_LIBS="$X_LIBS -R $x_libraries"
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
configure:rm -f core conftest.err conftest.$ac_objext \
configure:rm -f core conftest.err conftest.$ac_objext \
configure:  # Check for system-dependent libraries X programs must link with.
configure:  # Do this before checking for the system-independent R6 libraries
configure:  # (-lICE), since we may need -lsocket or whatever for X linking.
configure:    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
configure:    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
configure:$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
configure:LIBS="-ldnet  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
configure:  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
configure:$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
configure:LIBS="-ldnet_stub  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
configure:  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
configure:rm -f core conftest.err conftest.$ac_objext \
configure:    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
configure:    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
configure:    # needs -lnsl.
configure:    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
configure:$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
configure:LIBS="-lnsl  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
configure:  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
configure:$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
configure:LIBS="-lbsd  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
configure:  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
configure:    # lieder@skyler.mavd.honeywell.com says without -lsocket,
configure:    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
configure:    # variants that don't use the name server (or something).  -lsocket
configure:    # must be given before -lnsl if both are needed.  We assume that
configure:    # if connect needs -lnsl, so does gethostbyname.
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
configure:$as_echo_n "checking for connect in -lsocket... " >&6; }
configure:LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
configure:  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
configure:    # Guillermo Gomez says -lposix is necessary on A/UX.
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
configure:$as_echo_n "checking for remove in -lposix... " >&6; }
configure:LIBS="-lposix  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
configure:  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
configure:    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
configure:$as_echo_n "checking for shmat in -lipc... " >&6; }
configure:LIBS="-lipc  $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
configure:  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
configure:  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
configure:  # check for ICE first), but we must link in the order -lSM -lICE or
configure:  # These have to be linked with before -lX11, unlike the other
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
configure:$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
configure:LIBS="-lICE $X_EXTRA_LIBS $LIBS"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
configure:  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
configure:# Check whether --with-tiff was given.
configure:# Treat --without-tiff like --without-tiff-includes --without-tiff-libraries.
configure:# Check whether --with-tiff-includes was given.
configure:  withval=$with_tiff_includes; TIFF_INCLUDES="-I$withval"
configure:# Check whether --with-tiff-libraries was given.
configure:  withval=$with_tiff_libraries; TIFF_LIBS="-L$withval -ltiff"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFF" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    INCLUDES="-I${prefix}/include $INCLUDES"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      TIFF_INCLUDES="-I${prefix}/include"
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  LIBS="-ltiff -lm $LIBS"
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    TIFF_LIBS="-ltiff"
configure:    LIBS="-L${prefix}/lib $LIBS"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      TIFF_LIBS="-L${prefix}/lib -ltiff"
configure:rm -f core conftest.err conftest.$ac_objext \
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $tiff_libraries_result, headers $tiff_includes_result" >&5
configure:# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libtiff not found; disabling TIFF support" >&5
configure:# Check whether --with-zip was given.
configure:# Treat --without-zip like --without-zip-includes --without-zip-libraries.
configure:# Check whether --with-zip-includes was given.
configure:  withval=$with_zip_includes; ZIP_INCLUDES="-I$withval"
configure:# Check whether --with-zip-libraries was given.
configure:  withval=$with_zip_libraries; ZIP_LIBS="-L$withval -lz"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZIP" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    INCLUDES="-I${prefix}/include $INCLUDES"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      ZIP_INCLUDES="-I${prefix}/include"
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  LIBS="-lz $LIBS"
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    ZIP_LIBS="-lz"
configure:    LIBS="-L${prefix}/lib $LIBS"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      ZIP_LIBS="-L${prefix}/lib -lz"
configure:rm -f core conftest.err conftest.$ac_objext \
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $zip_libraries_result, headers $zip_includes_result" >&5
configure:# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libz not found; disabling ZIP support" >&5
configure:# Check whether --with-jpeg was given.
configure:# Treat --without-jpeg like --without-jpeg-includes --without-jpeg-libraries.
configure:# Check whether --with-jpeg-includes was given.
configure:  withval=$with_jpeg_includes; JPEG_INCLUDES="-I$withval"
configure:# Check whether --with-jpeg-libraries was given.
configure:  withval=$with_jpeg_libraries; JPEG_LIBS="-L$withval -ljpeg"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JPEG" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    INCLUDES="-I${prefix}/include $INCLUDES"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      JPEG_INCLUDES="-I${prefix}/include"
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  LIBS="-ljpeg $LIBS"
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    JPEG_LIBS="-ljpeg"
configure:    LIBS="-L${prefix}/lib $LIBS"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      JPEG_LIBS="-L${prefix}/lib -ljpeg"
configure:rm -f core conftest.err conftest.$ac_objext \
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $jpeg_libraries_result, headers $jpeg_includes_result" >&5
configure:# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libjpeg not found; disabling JPEG support" >&5
configure:# look for PNG with pkg-config ... fall back to our tester
configure:# Check whether --with-png was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$PNG_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "libpng") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_PNG_CFLAGS=`$PKG_CONFIG --cflags "libpng" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$PNG_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "libpng") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_PNG_LIBS=`$PKG_CONFIG --libs "libpng" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        PNG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libpng"`
configure:	        PNG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libpng"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:# Check whether --with-png was given.
configure:# Treat --without-png like --without-png-includes --without-png-libraries.
configure:# Check whether --with-png-includes was given.
configure:  withval=$with_png_includes; PNG_INCLUDES="-I$withval"
configure:# Check whether --with-png-libraries was given.
configure:  withval=$with_png_libraries; PNG_LIBS="-L$withval -lpng"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpng" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    INCLUDES="-I${prefix}/include $INCLUDES"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      PNG_INCLUDES="-I${prefix}/include"
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  LIBS="-lpng $LIBS"
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    PNG_LIBS="-lpng"
configure:    LIBS="-L${prefix}/lib $LIBS"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      PNG_LIBS="-L${prefix}/lib -lpng"
configure:rm -f core conftest.err conftest.$ac_objext \
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $png_libraries_result, headers $png_includes_result" >&5
configure:# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libpng not found; disabling PNG support" >&5
configure:# Check whether --with-png was given.
configure:# Treat --without-png like --without-png-includes --without-png-libraries.
configure:# Check whether --with-png-includes was given.
configure:  withval=$with_png_includes; PNG_INCLUDES="-I$withval"
configure:# Check whether --with-png-libraries was given.
configure:  withval=$with_png_libraries; PNG_LIBS="-L$withval -lpng"
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpng" >&5
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    INCLUDES="-I${prefix}/include $INCLUDES"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      PNG_INCLUDES="-I${prefix}/include"
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  LIBS="-lpng $LIBS"
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:    PNG_LIBS="-lpng"
configure:    LIBS="-L${prefix}/lib $LIBS"
configure:    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:      PNG_LIBS="-L${prefix}/lib -lpng"
configure:rm -f core conftest.err conftest.$ac_objext \
configure:rm -f core conftest.err conftest.$ac_objext \
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $png_libraries_result, headers $png_includes_result" >&5
configure:# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libpng not found; disabling PNG support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:# Check whether --with-libexif was given.
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EXIF" >&5
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$EXIF_CFLAGS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexif >= 0.6\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "libexif >= 0.6") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_EXIF_CFLAGS=`$PKG_CONFIG --cflags "libexif >= 0.6" 2>/dev/null`
configure:if test -n "$PKG_CONFIG"; then
configure:    if test -n "$EXIF_LIBS"; then
configure:        if test -n "$PKG_CONFIG" && \
configure:    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexif >= 0.6\""; } >&5
configure:  ($PKG_CONFIG --exists --print-errors "libexif >= 0.6") 2>&5
configure:  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
configure:  pkg_cv_EXIF_LIBS=`$PKG_CONFIG --libs "libexif >= 0.6" 2>/dev/null`
configure:if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
configure:	        EXIF_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libexif >= 0.6"`
configure:	        EXIF_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libexif >= 0.6"`
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libexif >= 0.6 not found; disabling exif support" >&5
configure:	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libexif >= 0.6 not found; disabling exif support" >&5
configure:        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:  # cppflags not cflags because we want the preproc to see the -I as well
configure:  ac_fn_c_check_header_mongrel "$LINENO" "exif-data.h" "ac_cv_header_exif_data_h" "$ac_includes_default"
configure:# Check whether --with-v4l was given.
configure:  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: linux/videodev.h not functional; disabling Linux video support" >&5
configure:# Check whether --with-python was given.
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C++ is off, disabling Python binding" >&5
configure:        if test -n "$PYTHON"; then
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.2" >&5
configure:  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
configure:   ($PYTHON -c "$prog") >&5 2>&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.2" >&5
configure:  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
configure:   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
configure:  test -z "$as_dir" && as_dir=.
configure:  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
configure:if test -n "$PYTHON"; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
configure:       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python not found; disabling Python binding" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
configure:  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
configure:  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
configure:                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
configure:     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null ||
configure:     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
configure:	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
configure:            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
configure:     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null ||
configure:     echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
configure:	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for headers required to compile python extensions" >&5
configure:py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
configure:py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
configure:PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
configure:  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
configure:cat confdefs.h - <<_ACEOF >conftest.$ac_ext
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
configure:     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python headers not found" >&5
configure:rm -f conftest.err conftest.$ac_ext
configure:done | sort -ru`
configure:VIPS_LIBS="$MAGICK_LIBS $PNG_LIBS $TIFF_LIBS $ZIP_LIBS $JPEG_LIBS $GTHREAD_LIBS $REQUIRED_LIBS $PANGOFT2_LIBS $FFTW3_LIBS $FFTW_LIBS $LCMS_LIBS $LIBOIL_LIBS $OPENEXR_LIBS $MATIO_LIBS $EXIF_LIBS -lm"
configure:# need -lstdc++ for (eg.) the C++ format loaders
configure:VIPS_CXX_LIBS="-lstdc++"
configure:#	vips-$IM_MAJOR_VERSION.$IM_MINOR_VERSION.pc
configure:ac_config_files="$ac_config_files vips-7.22.pc vipsCC-7.22.pc Makefile libvips/include/vips/version.h libvips/include/Makefile libvips/include/vips/Makefile libvips/Makefile libvips/acquire/Makefile libvips/arithmetic/Makefile libvips/boolean/Makefile libvips/cimg/Makefile libvips/colour/Makefile libvips/conversion/Makefile libvips/convolution/Makefile libvips/deprecated/Makefile libvips/format/Makefile libvips/freq_filt/Makefile libvips/histograms_lut/Makefile libvips/inplace/Makefile libvips/iofuncs/Makefile libvips/mask/Makefile libvips/morphology/Makefile libvips/mosaicing/Makefile libvips/other/Makefile libvips/relational/Makefile libvips/resample/Makefile libvips/video/Makefile libvipsCC/include/Makefile libvipsCC/include/vips/Makefile libvipsCC/Makefile tools/Makefile tools/iofuncs/Makefile tools/mosaicing/Makefile tools/other/Makefile tools/scripts/Makefile tools/scripts/batch_crop tools/scripts/batch_image_convert tools/scripts/batch_rubber_sheet tools/scripts/light_correct tools/scripts/shrink_width swig/Makefile swig/vipsCC/Makefile swig/python/setup.py man/Makefile doc/Makefile doc/reference/Makefile doc/reference/libvips-docs.sgml po/Makefile.in"
configure:# scripts and configure runs, see configure's option --config-cache.
configure:# the --recheck option to rerun configure.
configure:  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
configure:      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
configure:      # `set' does not quote correctly, so add quotes: double-quote
configure:      sed -n \
configure:      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
configure:  if test -w "$cache_file"; then
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
configure:    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
configure:rm -f confcache
configure:DEFS=-DHAVE_CONFIG_H
configure: if test -n "$EXEEXT"; then
configure:if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then
configure:if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then
configure:if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
configure:if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
configure:if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
configure:if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
configure:if test -z "${ENABLE_CXX_TRUE}" && test -z "${ENABLE_CXX_FALSE}"; then
configure:if test -z "${ENABLE_CXX_TRUE}" && test -z "${ENABLE_CXX_FALSE}"; then
configure:if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
configure:if test -z "${ENABLE_LINKS_TRUE}" && test -z "${ENABLE_LINKS_FALSE}"; then
configure:if test -z "${ENABLE_LINKS_TRUE}" && test -z "${ENABLE_LINKS_FALSE}"; then
configure:if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then
configure:if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then
configure:if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then
configure:if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then
configure:if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then
configure:if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then
configure:if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
configure:SHELL=\${CONFIG_SHELL-$SHELL}
configure:## -------------------- ##
configure:## -------------------- ##
configure:if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
configure:  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
configure:  alias -g '${1+"$@"}'='"$@"'
configure:  case `(set -o) 2>/dev/null` in #(
configure:    set -o posix ;; #(
configure:if test -z "$BASH_VERSION$ZSH_VERSION" \
configure:    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
configure:  as_echo='print -r --'
configure:  as_echo_n='print -rn --'
configure:  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
configure:    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
configure:    as_echo_n='/usr/ucb/echo -n'
configure:      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
configure:    as_echo_n='sh -c $as_echo_n_body as_echo'
configure:  as_echo='sh -c $as_echo_body as_echo'
configure:  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
configure:    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
configure:# there to prevent editors from complaining about space-tab.
configure:  test -z "$as_dir" && as_dir=.
configure:    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
configure:if test ! -f "$as_myself"; then
configure:# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
configure:# ---------------------------------
configure:  as_status=$?; test $as_status -eq 0 && as_status=1
configure:    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
configure:    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
configure:# -----------------------
configure:# -----------------
configure:# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
configure:# ---------------
configure:# ----------------------
configure:# ------------------
configure:    as_val=`expr "$@" || test $? -eq 1`
configure:if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
configure:if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
configure:as_me=`$as_basename -- "$0" ||
configure:case `echo -n x` in #(((((
configure:-n*)
configure:  ECHO_N='-n';;
configure:rm -f conf$$ conf$$.exe conf$$.file
configure:if test -d conf$$.dir; then
configure:  rm -f conf$$.dir/conf$$.file
configure:  rm -f conf$$.dir
configure:  if ln -s conf$$.file conf$$ 2>/dev/null; then
configure:    as_ln_s='ln -s'
configure:    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
configure:    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
configure:    # In both cases, we have to default to `cp -p'.
configure:    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
configure:      as_ln_s='cp -p'
configure:    as_ln_s='cp -p'
configure:  as_ln_s='cp -p'
configure:rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
configure:# -------------
configure:  -*) as_dir=./$as_dir;;
configure:  test -d "$as_dir" || eval $as_mkdir_p || {
configure:      as_dir=`$as_dirname -- "$as_dir" ||
configure:      test -d "$as_dir" && break
configure:    test -z "$as_dirs" || eval "mkdir $as_dirs"
configure:  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
configure:if mkdir -p . 2>/dev/null; then
configure:  as_mkdir_p='mkdir -p "$as_dir"'
configure:  test -d ./-p && rmdir ./-p
configure:if test -x / >/dev/null 2>&1; then
configure:  as_test_x='test -x'
configure:  if ls -dL / >/dev/null 2>&1; then
configure:    eval sh -c '\''
configure:      if test -d "$1"; then
configure:	test -d "$1/.";
configure:	-*)set "./$1";;
configure:	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
configure:## ----------------------------------- ##
configure:## ----------------------------------- ##
configure:on `(hostname || uname -n) 2>/dev/null | sed 1q`
configure:  -h, --help       print this help, then exit
configure:  -V, --version    print version number and configuration settings, then exit
configure:      --config     print configuration, then exit
configure:  -q, --quiet, --silent
configure:  -d, --debug      don't remove temporary files
configure:      --recheck    update $as_me by reconfiguring in the same conditions
configure:      --file=FILE[:TEMPLATE]
configure:      --header=FILE[:TEMPLATE]
configure:test -n "\$AWK" || AWK=awk
configure:  --*=*)
configure:  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
configure:  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
configure:  --config | --confi | --conf | --con | --co | --c )
configure:  --debug | --debu | --deb | --de | --d | -d )
configure:  --file | --fil | --fi | --f )
configure:  --header | --heade | --head | --hea )
configure:  --he | --h)
configure:    # Conflict between --help and --header
configure:Try \`$0 --help' for more information.";;
configure:  --help | --hel | -h )
configure:  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
configure:  | -silent | --silent | --silen | --sile | --sil | --si | --s)
configure:  -*) as_fn_error "unrecognized option: \`$1'
configure:Try \`$0 --help' for more information." ;;
configure:  ac_configure_extra_args="$ac_configure_extra_args --silent"
configure:  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
configure:  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
configure:# INIT-COMMANDS
configure:# The HP-UX ksh and POSIX shell print the target directory to stdout
configure:AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`'
configure:DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`'
configure:OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
configure:macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
configure:macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
configure:enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
configure:enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
configure:pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
configure:enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
configure:host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
configure:host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
configure:host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
configure:build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
configure:build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
configure:build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
configure:SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
configure:Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
configure:GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
configure:EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
configure:FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
configure:LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
configure:NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
configure:LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
configure:max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
configure:ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
configure:exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
configure:reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
configure:reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
configure:file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
configure:AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
configure:AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
configure:STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
configure:RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
configure:old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
configure:CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
configure:compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
configure:GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
configure:objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
configure:SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
configure:ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
configure:MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
configure:need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
configure:DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
configure:NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
configure:LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
configure:OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
configure:OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
configure:libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
configure:shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
configure:enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
configure:export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
configure:whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
configure:compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
configure:old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
configure:allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
configure:no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
configure:inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
configure:link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
configure:fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
configure:always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
configure:export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
configure:include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
configure:prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
configure:variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
configure:need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
configure:need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
configure:version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
configure:runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
configure:shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
configure:shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
configure:libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
configure:library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
configure:soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
configure:postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
configure:finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
configure:sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
configure:sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
configure:enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
configure:enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
configure:enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
configure:old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
configure:striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
configure:compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`'
configure:predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`'
configure:postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`'
configure:predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`'
configure:postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`'
configure:compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`'
configure:LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
configure:      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
configure:# Double-quote double-evaled strings.
configure:      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
configure:# Fix-up fallback echo if it was mangled by the above quoting rules.
configure:*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
configure:if test -n "\${ZSH_VERSION+set}" ; then
configure:    "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
configure:    "vips-7.22.pc") CONFIG_FILES="$CONFIG_FILES vips-7.22.pc" ;;
configure:    "vipsCC-7.22.pc") CONFIG_FILES="$CONFIG_FILES vipsCC-7.22.pc" ;;
configure:    "doc/reference/libvips-docs.sgml") CONFIG_FILES="$CONFIG_FILES doc/reference/libvips-docs.sgml" ;;
configure:  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
configure:  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
configure:  test -n "$tmp" && test -d "$tmp"
configure:  tmp=./conf$$-$RANDOM
configure:if test -n "$CONFIG_FILES"; then
configure:ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
configure:  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
configure:rm -f conf$$subs.sh
configure:sed -n '
configure:rm -f conf$$subs.awk
configure:fi # test -n "$CONFIG_FILES"
configure:if test -n "$CONFIG_HEADERS"; then
configure:# here-document in config.status, that substitutes the proper values into
configure:  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
configure:  if test -z "$ac_t"; then
configure:sed -n '
configure:  prefix = substr(line, 1, index(line, defundef) - 1)
configure:fi # test -n "$CONFIG_HEADERS"
configure:  :[FH]-) ac_tag=-:-;;
configure:      -) ac_f="$tmp/stdin";;
configure:	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
configure:	 test -f "$ac_f" ||
configure:	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
configure:    if test x"$ac_file" != x-; then
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
configure:    *:-:* | *:-) cat >"$tmp/stdin" \
configure:  ac_dir=`$as_dirname -- "$ac_file" ||
configure:case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
configure:$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
configure:/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
configure:eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
configure:test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
configure:  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
configure:  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
configure:  rm -f "$tmp/stdin"
configure:  -) cat "$tmp/out" && rm -f "$tmp/out";;
configure:  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
configure:  if test x"$ac_file" != x-; then
configure:      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
configure:      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
configure:      rm -f "$ac_file"
configure:      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
configure:      || as_fn_error "could not create -" "$LINENO" 5
configure:echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
configure:	  s/.*/./; q'`/stamp-h$_am_stamp_count
configure:  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
configure:  # Autoconf 2.62 quotes --file arguments for eval, but not when files
configure:  # are listed without --file.  Let's play safe and only enable the eval
configure:    mf=`echo "$mf" | sed -e 's/:.*$//'`
configure:    # Grep'ing the first line is not enough: some people post-process
configure:    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
configure:      dirpart=`$as_dirname -- "$mf" ||
configure:    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
configure:    test -z "$DEPDIR" && continue
configure:    am__include=`sed -n 's/^am__include = //p' < "$mf"`
configure:    test -z "am__include" && continue
configure:    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
configure:    U=`sed -n 's/^U = //p' < "$mf"`
configure:    for file in `sed -n "
configure:	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
configure:      test -f "$dirpart/$file" && continue
configure:      fdir=`$as_dirname -- "$file" ||
configure:    "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*)
configure:        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
configure:    if test -n "${ZSH_VERSION+set}" ; then
configure:# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
configure:# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
configure:# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
configure:# Sed that helps us avoid accidentally triggering echo(1) options like -n.
configure:Xsed="\$SED -e 1s/^X//"
configure:# A BSD- or MS-compatible name lister.
configure:# Commands used to install an old-style archive.
configure:# ldd/readelf like tool for Mach-O binaries on Mac OS X.
configure:# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
configure:# Is shlibpath searched before the hard-coded library search path?
configure:# The last name is the one that the linker finds with -lNAME
configure:# Compile-time system search path for libraries.
configure:# Run-time system search path for libraries.
configure:# Commands used to build an old-style archive.
configure:# Does compiler simultaneously support -c and -o options?
configure:# Whether or not to add -lc for building shared libraries.
configure:# Create an old-style archive from a shared archive.
configure:# Create a temporary old-style archive to link instead of a shared archive.
configure:# Whether we need a single "-rpath" flag with a separated argument.
configure:# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
configure:  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
configure:    || (rm -f "$cfgfile"; exit 1)
configure:# func_xform libobj-or-source
configure:# func_arith arithmetic-term...
configure:  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
configure:  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
configure:           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
configure:           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
configure:my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
configure:my_sed_long_arg='1s/^-[^=]*=//'
configure:  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
configure:  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
configure:  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
configure:# func_xform libobj-or-source
configure:  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
configure:# func_arith arithmetic-term...
configure:  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
configure:    || (rm -f "$cfgfile"; exit 1)
configure:  mv -f "$cfgfile" "$ofile" ||
configure:    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
configure:# Commands used to build an old-style archive.
configure:# Does compiler simultaneously support -c and -o options?
configure:# Whether or not to add -lc for building shared libraries.
configure:# Create an old-style archive from a shared archive.
configure:# Create a temporary old-style archive to link instead of a shared archive.
configure:# Whether we need a single "-rpath" flag with a separated argument.
configure:# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
configure:    ac_config_status_args="$ac_config_status_args --quiet"
configure:if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
configure.in:# user-visible library versioning
configure.in:IM_VERSION_STRING=$IM_VERSION-`date`
configure.in:# libtool library versioning ... not user-visible (except as part of the
configure.in:  AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
configure.in:  VIPS_DEBUG_FLAGS="-DDEBUG_FATAL -DDEBUG_LEAK"
configure.in:  VIPS_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
configure.in:    VIPS_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
configure.in:  *-*-mingw*)
configure.in:  VIPS_CFLAGS="-mms-bitfields $VIPS_CFLAGS"
configure.in:  AC_DEFINE(BINARY_OPEN,1,[define to open non-text files in binary mode])
configure.in:  *-*-darwin*)
configure.in:  AS_HELP_STRING([--enable-cxx], [build C++ components (default: enabled)]))
configure.in:# set $expanded_value to the full-expanded value of the argument
configure.in:# the configure-time install prefix
configure.in:AC_DEFINE_UNQUOTED(IM_PREFIX,"$prefix",[configure-time install prefix])
configure.in:AC_DEFINE_UNQUOTED(IM_LIBDIR,"$IM_LIBDIR",[configure-time library directory])
configure.in:# build list of pkg-config packages we used here
configure.in:PKG_CHECK_MODULES(REQUIRED, glib-2.0 >= 2.6 gmodule-2.0 >= 2.4 libxml-2.0 gobject-2.0)
configure.in:PACKAGES_USED="$PACKAGES_USED glib-2.0 gmodule-2.0 libxml-2.0 gobject-2.0"
configure.in:  AS_HELP_STRING([--enable-links], [make links for operations (default: no)]))
configure.in:  # tested by src/iofuncs/Makefile.am:install-exec-hook
configure.in:  AS_HELP_STRING([--enable-threads], [evaluate with threads (default: yes)]))
configure.in:  PKG_CHECK_MODULES(GTHREAD, gthread-2.0)
configure.in:  PACKAGES_USED="$PACKAGES_USED gthread-2.0"
configure.in:# check for gtk-doc
configure.in:# that with pkg-config
configure.in:  AS_HELP_STRING([--without-fftw3], [build without fftw3 (default: test)]))
configure.in:# --with-magickpackage=GraphicsMagick
configure.in:  AS_HELP_STRING([--without-magick], [build without libMagic (default: test)]))
configure.in:  AS_HELP_STRING([--with-magickpackage], 
configure.in:  AS_HELP_STRING([--without-liboil], [build without liboil (default: test)]))
configure.in:  PKG_CHECK_MODULES(LIBOIL, liboil-0.3,
configure.in:    [AC_DEFINE(HAVE_LIBOIL,1,[define if you have liboil-0.3 installed.])
configure.in:     PACKAGES_USED="$PACKAGES_USED liboil-0.3"],
configure.in:  AS_HELP_STRING([--without-lcms], [build without lcms (default: test)]))
configure.in:  AS_HELP_STRING([--without-OpenEXR], [build without OpenEXR (default: test)]))
configure.in:  AS_HELP_STRING([--without-matio], [build without matio (default: test)]))
configure.in:  AS_HELP_STRING([--without-pangoft2], 
configure.in:# look for PNG with pkg-config ... fall back to our tester
configure.in:  AS_HELP_STRING([--without-png], [build without libpng (default: test)]))
configure.in:  AS_HELP_STRING([--without-libexif], [build without libexif (default: test)]))
configure.in:  # cppflags not cflags because we want the preproc to see the -I as well
configure.in:  AC_CHECK_HEADER(exif-data.h,
configure.in:  AS_HELP_STRING([--without-v4l], [build without video4linux (default: test)]))
configure.in:  AS_HELP_STRING([--without-python], 
configure.in:done | sort -ru`
configure.in:VIPS_LIBS="$MAGICK_LIBS $PNG_LIBS $TIFF_LIBS $ZIP_LIBS $JPEG_LIBS $GTHREAD_LIBS $REQUIRED_LIBS $PANGOFT2_LIBS $FFTW3_LIBS $FFTW_LIBS $LCMS_LIBS $LIBOIL_LIBS $OPENEXR_LIBS $MATIO_LIBS $EXIF_LIBS -lm"
configure.in:# need -lstdc++ for (eg.) the C++ format loaders
configure.in:VIPS_CXX_LIBS="-lstdc++"
configure.in:#	vips-$IM_MAJOR_VERSION.$IM_MINOR_VERSION.pc
configure.in:	vips-7.22.pc
configure.in:	vipsCC-7.22.pc
configure.in:	doc/reference/libvips-docs.sgml
COPYING:     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
COPYING:free software--to make sure the software is free for all its users.
COPYING:specially designated software packages--typically libraries--of the
COPYING:  We protect your rights with a two-step method: (1) we copyright the
COPYING:libraries into non-free programs.
COPYING:of an advantage over competing non-free programs.  These disadvantages
COPYING:a de-facto standard.  To achieve this, non-free programs must be
COPYING:library does the same job as widely used non-free libraries.  In this
COPYING:  In other cases, permission to use a particular library in non-free
COPYING:non-free programs enables many more people to use the whole GNU
COPYING:    a purpose that is entirely well-defined independent of the
COPYING:    application-supplied function or table used by this function must
COPYING:it with the complete corresponding machine-readable source code, which
COPYING:    machine-readable source code for the Library including whatever
COPYING:    with the Library, with the complete machine-readable "work that
COPYING:    interface-compatible with the version that the work was made with.
COPYING:Library side-by-side in a single library together with other library
COPYING:license would not permit royalty-free redistribution of the Library by
COPYING:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
depcomp:# depcomp - compile a program generating dependencies as side-effects
depcomp:scriptversion=2009-04-28.21; # UTC
depcomp:     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
depcomp:  -h | --h*)
depcomp:Usage: depcomp [--help] [--version] PROGRAM [ARGS]
depcomp:as side-effects.
depcomp:Report bugs to <bug-automake@gnu.org>.
depcomp:  -v | --v*)
depcomp:if test -z "$depmode" || test -z "$source" || test -z "$object"; then
depcomp:depfile=${depfile-`echo "$object" |
depcomp:  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
depcomp:tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
depcomp:rm -f "$tmpdepfile"
depcomp:  # HP compiler uses -M and no extra arg.
depcomp:  gccflag=-M
depcomp:   dashmflag=-xM
depcomp:cygpath_u="cygpath -u -f -"
depcomp:   # Just convert the backslash-escaped backslashes to single forward
depcomp:## it if -MD -MP comes after the -MF stuff.  Hmm.
depcomp:    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
depcomp:  if test $stat -eq 0; then :
depcomp:    rm -f "$tmpdepfile"
depcomp:## - Don't want to use -MD because we'd like the dependencies to end
depcomp:## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
depcomp:##   -MM, not -M (despite what the docs say).
depcomp:## - Using -M directly means running the compiler twice (even worse
depcomp:  if test -z "$gccflag"; then
depcomp:    gccflag=-MD,
depcomp:  "$@" -Wp,"$gccflag$tmpdepfile"
depcomp:  if test $stat -eq 0; then :
depcomp:    rm -f "$tmpdepfile"
depcomp:  rm -f "$depfile"
depcomp:## The second -e expression handles DOS-style file names with drive letters.
depcomp:  sed -e 's/^[^:]*: / /' \
depcomp:      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
depcomp:    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
depcomp:  rm -f "$tmpdepfile"
depcomp:    "$@" "-Wp,-MDupdate,$tmpdepfile"
depcomp:    "$@" -MDupdate "$tmpdepfile"
depcomp:  if test $stat -eq 0; then :
depcomp:    rm -f "$tmpdepfile"
depcomp:  rm -f "$depfile"
depcomp:  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
depcomp:    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
depcomp:   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
depcomp:  rm -f "$tmpdepfile"
depcomp:  # The C for AIX Compiler uses -M and outputs the dependencies
depcomp:  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
depcomp:  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
depcomp:    "$@" -Wc,-M
depcomp:    "$@" -M
depcomp:  if test $stat -eq 0; then :
depcomp:    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
depcomp:    test -f "$tmpdepfile" && break
depcomp:  if test -f "$tmpdepfile"; then
depcomp:    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
depcomp:    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
depcomp:  rm -f "$tmpdepfile"
depcomp:  # Intel's C compiler understands `-MD -MF file'.  However on
depcomp:  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
depcomp:  "$@" -MD -MF "$tmpdepfile"
depcomp:  if test $stat -eq 0; then :
depcomp:    rm -f "$tmpdepfile"
depcomp:  rm -f "$depfile"
depcomp:    sed -e 's/$/ :/' >> "$depfile"
depcomp:  rm -f "$tmpdepfile"
depcomp:  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
depcomp:  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
depcomp:    "$@" -Wc,+Maked
depcomp:  if test $stat -eq 0; then :
depcomp:     rm -f "$tmpdepfile1" "$tmpdepfile2"
depcomp:    test -f "$tmpdepfile" && break
depcomp:  if test -f "$tmpdepfile"; then
depcomp:    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
depcomp:    sed -ne '2,${
depcomp:  rm -f "$tmpdepfile" "$tmpdepfile2"
depcomp:   # The Tru64 compiler uses -MD to generate dependencies as a side
depcomp:   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
depcomp:   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
depcomp:   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
depcomp:   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
depcomp:      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
depcomp:      "$@" -Wc,-MD
depcomp:      "$@" -MD
depcomp:   if test $stat -eq 0; then :
depcomp:      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
depcomp:     test -f "$tmpdepfile" && break
depcomp:   if test -f "$tmpdepfile"; then
depcomp:      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
depcomp:      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
depcomp:   rm -f "$tmpdepfile"
depcomp:  # This comment above is used by automake to tell side-effect
depcomp:  # always write the preprocessed file to stdout, regardless of -o.
depcomp:    while test "X$1" != 'X--mode=compile'; do
depcomp:  # Remove `-o $object'.
depcomp:    -o)
depcomp:  test -z "$dashmflag" && dashmflag=-M
depcomp:  # in the target name.  This is to cope with DOS-style filenames:
depcomp:  rm -f "$depfile"
depcomp:    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
depcomp:  rm -f "$tmpdepfile"
depcomp:    while test "X$1" != 'X--mode=compile'; do
depcomp:    -D*|-I*)
depcomp:    -arch)
depcomp:    -*|$object)
depcomp:  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
depcomp:  rm -f "$depfile"
depcomp:    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
depcomp:  rm -f "$tmpdepfile" "$tmpdepfile".bak
depcomp:    while test "X$1" != 'X--mode=compile'; do
depcomp:  # Remove `-o $object'.
depcomp:    -o)
depcomp:  "$@" -E |
depcomp:    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
depcomp:       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
depcomp:  rm -f "$depfile"
depcomp:  rm -f "$tmpdepfile"
depcomp:    while test "X$1" != 'X--mode=compile'; do
depcomp:    -o)
depcomp:    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
depcomp:  "$@" -E 2>/dev/null |
depcomp:  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
depcomp:  rm -f "$depfile"
depcomp:  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
depcomp:  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
depcomp:  rm -f "$tmpdepfile"
depcomp:# mode: shell-script
depcomp:# sh-indentation: 2
depcomp:# eval: (add-hook 'write-file-hooks 'time-stamp)
depcomp:# time-stamp-start: "scriptversion="
depcomp:# time-stamp-format: "%:y-%02m-%02d.%02H"
depcomp:# time-stamp-time-zone: "UTC"
depcomp:# time-stamp-end: "; # UTC"
doc/src/vipsmanualse8.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse8.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse8.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse8.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse8.html:<!-- 3,html --> 
doc/src/vipsmanualse8.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse8.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse8.html:href="vipsmanualse7.html#tailvipsmanualse7.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse8.html: id="x14-370002.2"></a>Core C API</h3>
doc/src/vipsmanualse8.html:<!--l. 3--><p class="noindent" >VIPS is built on top of several other libraries, two of which,
doc/src/vipsmanualse8.html:<!--l. 6--><p class="indent" >  You can read up on glib at the GTK+ website:
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-51">
doc/src/vipsmanualse8.html:<!--l. 10--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 12--><p class="indent" >  There&#8217;s also an excellent book by Matthias Warkus, <span 
doc/src/vipsmanualse8.html:class="ptmri7t-">The</span>
doc/src/vipsmanualse8.html:class="ptmri7t-">Official GNOME 2 Developer&#8217;s Guide</span>, which covers the
doc/src/vipsmanualse8.html:<!--l. 16--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-380002.2.1"></a>Startup</h4>
doc/src/vipsmanualse8.html:<!--l. 18--><p class="noindent" >Before calling any VIPS function, you need to start VIPS
doc/src/vipsmanualse8.html:  <div class="verbatim" id="verbatim-52">
doc/src/vipsmanualse8.html:<!--l. 22--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 24--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">argv0</span></span></span> argument is the value of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">argv[0]</span></span></span> your
doc/src/vipsmanualse8.html:VIPS uses this with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_guess_prefix()</span></span></span> and
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_guess_libdir()</span></span></span> to try to find various VIPS data
doc/src/vipsmanualse8.html:<!--l. 29--><p class="indent" >  If you don&#8217;t call this function, VIPS will call it for you
doc/src/vipsmanualse8.html:to get the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">argv0</span></span></span> value for you, so it may not be able to find
doc/src/vipsmanualse8.html:<!--l. 33--><p class="indent" >  VIPS also offers the optional:
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-53">
doc/src/vipsmanualse8.html:<!--l. 37--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 39--><p class="indent" >  You can use this with GOption to parse your program&#8217;s
doc/src/vipsmanualse8.html:command-line arguments. It adds several useful VIPS flags,
doc/src/vipsmanualse8.html:including <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">--vips-concurrency</span></span></span>.
doc/src/vipsmanualse8.html:<!--l. 42--><p class="indent" >    Figure&#x00A0;<a 
doc/src/vipsmanualse8.html:href="#x14-380012">2.2<!--tex4ht:ref: fg:hello --></a> shows both these functions in use. Again, the
doc/src/vipsmanualse8.html:to your program. You do need the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_init_world()</span></span></span>
doc/src/vipsmanualse8.html:<!--l. 47--><p class="indent" >  <a 
doc/src/vipsmanualse8.html: id="x14-380012"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse8.html:<div class="verbatim" id="verbatim-54">
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;context&#x00A0;=&#x00A0;g_option_context_new(&#x00A0;"-&#x00A0;my&#x00A0;program"&#x00A0;);
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;fprintf(&#x00A0;stderr,&#x00A0;"%s\n",&#x00A0;error-&#x003E;message&#x00A0;);
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;error_exit(&#x00A0;"try&#x00A0;\"%s&#x00A0;--help\"",&#x00A0;g_get_prgname()&#x00A0;);
doc/src/vipsmanualse8.html:<!--l. 86--><p class="nopar" >
doc/src/vipsmanualse8.html:class="content">Hello World for VIPS</span></div><!--tex4ht:label?: x14-380012 -->
doc/src/vipsmanualse8.html: id="x14-390002.2.2"></a>Image descriptors</h4>
doc/src/vipsmanualse8.html:<!--l. 93--><p class="noindent" >The base level of the VIPS I/O system provides <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span>
doc/src/vipsmanualse8.html:href="#x14-390013">2.3<!--tex4ht:ref: fg:image --></a> shows the definition of the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span>
doc/src/vipsmanualse8.html:<!--l. 101--><p class="indent" >  <a 
doc/src/vipsmanualse8.html: id="x14-390013"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse8.html:<div class="verbatim" id="verbatim-55">
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;int&#x00A0;kill;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Set&#x00A0;to&#x00A0;non-zero&#x00A0;to&#x00A0;block&#x00A0;eval&#x00A0;&#x22C6;/
doc/src/vipsmanualse8.html:<!--l. 129--><p class="nopar" >
doc/src/vipsmanualse8.html:class="pcrr7t-">IMAGE </span>descriptor</span></div><!--tex4ht:label?: x14-390013 -->
doc/src/vipsmanualse8.html:<!--l. 134--><p class="indent" >  The first set of fields simply come from the image file
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="vipsmanualse2.html#x7-80001.2.1">1.2.1<!--tex4ht:ref: sec:header --></a> for a full description of all the fields. The
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">filename</span></span></span> is the name of the file that this image came
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">time</span></span></span> points to a set of timing statistics which can
doc/src/vipsmanualse8.html:be used by user-interfaces built on VIPS to provide
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="#x14-450002.2.8">2.2.8<!--tex4ht:ref: sec:eval --></a>.
doc/src/vipsmanualse8.html:Finally, if you set <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">kill</span></span></span> to non-zero, VIPS will block any
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="#x14-570002.2.12">2.2.12<!--tex4ht:ref: sec:block --></a>.
doc/src/vipsmanualse8.html:<!--l. 144--><p class="indent" >  The remaining fields are private and are used by VIPS for
doc/src/vipsmanualse8.html: id="x14-400002.2.3"></a>Header fields</h4>
doc/src/vipsmanualse8.html:<!--l. 149--><p class="noindent" >You can access header fields either directly (as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im-&#x003E;Xsize</span></span></span>,
doc/src/vipsmanualse8.html:for example) or programmatically with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_header_int()</span></span></span>
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-56">
doc/src/vipsmanualse8.html:<!--l. 157--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 159--><p class="indent" >  There&#8217;s also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_header_map()</span></span></span> to loop over header
doc/src/vipsmanualse8.html:fields, and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_header_get_type</span></span></span> to test the type of
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="#x14-430002.2.6">2.2.6<!--tex4ht:ref: sec:meta --></a>.
doc/src/vipsmanualse8.html:<!--l. 163--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-410002.2.4"></a>Opening and closing</h4>
doc/src/vipsmanualse8.html:<!--l. 166--><p class="noindent" >Descriptors are created with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span>. You can also
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="vipsmanualse11.html#x17-740002.5">2.5<!--tex4ht:ref: sec:format --></a>. The two
doc/src/vipsmanualse8.html:APIs are complimentary, though <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> is more
doc/src/vipsmanualse8.html:<!--l. 170--><p class="indent" >    At the command-line, try:
doc/src/vipsmanualse8.html:  <div class="verbatim" id="verbatim-57">
doc/src/vipsmanualse8.html:$&#x00A0;vips&#x00A0;--list&#x00A0;classes
doc/src/vipsmanualse8.html:<!--l. 174--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 176--><p class="indent" >  /noindent to see a list of all the supported file formats.
doc/src/vipsmanualse8.html:<!--l. 179--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> takes a file name and a string representing
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-58">
doc/src/vipsmanualse8.html:<!--l. 185--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 187--><p class="indent" >  The possible values for mode are:
doc/src/vipsmanualse8.html:class="pcrb7t-">"r"</span> </dt><dd 
doc/src/vipsmanualse8.html:class="description">The   file   is   opened   read-only.   If   you   open
doc/src/vipsmanualse8.html:        a  non-VIPS  image,  or  a  VIPS  image  written
doc/src/vipsmanualse8.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> will   automatically   convert   it   to
doc/src/vipsmanualse8.html:        <!--l. 198--><p class="noindent" >VIPS can read images in many file formats. You
doc/src/vipsmanualse8.html:    <div class="verbatim" id="verbatim-59">
doc/src/vipsmanualse8.html:    <!--l. 204--><p class="nopar" >
doc/src/vipsmanualse8.html:    <!--l. 206--><p class="noindent" >will read page 2 of a multi-page TIFF. See the man
doc/src/vipsmanualse8.html:class="pcrb7t-">"w"</span> </dt><dd 
doc/src/vipsmanualse8.html:class="description">An <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span> descriptor is created which, when written
doc/src/vipsmanualse8.html:    <!--l. 214--><p class="noindent" >VIPS looks at the filename suffix to determine the
doc/src/vipsmanualse8.html:    ends in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">".v"</span></span></span>, the image is written in VIPS native
doc/src/vipsmanualse8.html:    <!--l. 218--><p class="noindent" >If you want to control the details of the conversion to
doc/src/vipsmanualse8.html:                                                     <div class="verbatim" id="verbatim-60">
doc/src/vipsmanualse8.html:   <!--l. 225--><p class="nopar" >
doc/src/vipsmanualse8.html:   <!--l. 227--><p class="noindent" >writes to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">fred</span></span></span> will write a JPEG with Q 95. Again,
doc/src/vipsmanualse8.html:class="pcrb7t-">"t"</span> </dt><dd 
doc/src/vipsmanualse8.html:class="description">As the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> mode, but pels written to the descriptor
doc/src/vipsmanualse8.html:class="pcrb7t-">"p"</span> </dt><dd 
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="#x14-520002.2.12">2.2.12<!--tex4ht:ref: sec:joinup --></a>.
doc/src/vipsmanualse8.html:class="pcrb7t-">"rw"</span> </dt><dd 
doc/src/vipsmanualse8.html:class="description">As the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"r"</span></span></span> mode, but the image is mapped into the
doc/src/vipsmanualse8.html:        caller&#8217;s address space read-write. This mode is only
doc/src/vipsmanualse8.html:        provided for the use of paintbox-style applications
doc/src/vipsmanualse8.html:        programs should use the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> mode for image
doc/src/vipsmanualse8.html:<!--l. 247--><p class="indent" >    If an error occurs opening the image, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> calls
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span> with a string describing the cause of the
doc/src/vipsmanualse8.html:error and returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">NULL</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span> has type
doc/src/vipsmanualse8.html:  <div class="verbatim" id="verbatim-61">
doc/src/vipsmanualse8.html:<!--l. 254--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 256--><p class="noindent" >The first argument is a string giving the name of the thing
doc/src/vipsmanualse8.html:that raised the error (just <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"im_open"</span></span></span>, for example).
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">printf()</span></span></span>. It formats the message and appends the string
doc/src/vipsmanualse8.html:text with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_error_buffer()</span></span></span>.
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-62">
doc/src/vipsmanualse8.html:<!--l. 265--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 267--><p class="noindent" >Applications may display this string to give users feedback
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">error_exit()</span></span></span>, prints <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_error_buffer()</span></span></span> to
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">stderr</span></span></span> and terminates the program with an error code of
doc/src/vipsmanualse8.html:  <div class="verbatim" id="verbatim-63">
doc/src/vipsmanualse8.html:<!--l. 276--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 278--><p class="noindent" >There are other functions for handling errors: see the man
doc/src/vipsmanualse8.html:page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span>.
doc/src/vipsmanualse8.html:<!--l. 282--><p class="indent" >  Descriptors are closed with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_close()</span></span></span>. It has
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-64">
doc/src/vipsmanualse8.html:<!--l. 286--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 288--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_close()</span></span></span> returns 0 on success and non-zero on
doc/src/vipsmanualse8.html:<!--l. 290--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-420002.2.5"></a>Examples</h4>
doc/src/vipsmanualse8.html:<!--l. 293--><p class="noindent" >As an example, Figure&#x00A0;<a 
doc/src/vipsmanualse8.html:href="#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:widthheight --></a> will print the width and height
doc/src/vipsmanualse8.html:<!--l. 297--><p class="indent" >  <a 
doc/src/vipsmanualse8.html: id="x14-420014"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse8.html:<div class="verbatim" id="verbatim-65">
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;printf(&#x00A0;"width&#x00A0;=&#x00A0;%d,&#x00A0;height&#x00A0;=&#x00A0;%d\n",&#x00A0;im-&#x003E;Xsize,&#x00A0;im-&#x003E;Ysize&#x00A0;);
doc/src/vipsmanualse8.html:<!--l. 329--><p class="nopar" >
doc/src/vipsmanualse8.html:class="content">Print width and height of an image</span></div><!--tex4ht:label?: x14-420014 -->
doc/src/vipsmanualse8.html:<!--l. 334--><p class="indent" >  To compile this example, use:
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-66">
doc/src/vipsmanualse8.html:  cc&#x00A0;&#8216;pkg-config&#x00A0;vips-7.14&#x00A0;\
doc/src/vipsmanualse8.html: &#x00A0;<br />&#x00A0;&#x00A0;--cflags&#x00A0;--libs&#8216;&#x00A0;myfunc.c 
doc/src/vipsmanualse8.html:<!--l. 339--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 341--><p class="indent" >  As a slightly more complicated example, Figure&#x00A0;<a 
doc/src/vipsmanualse8.html:href="#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:negative --></a>
doc/src/vipsmanualse8.html:<!--l. 345--><p class="indent" >  <a 
doc/src/vipsmanualse8.html: id="x14-420025"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse8.html:<div class="verbatim" id="verbatim-67">
doc/src/vipsmanualse8.html:<!--l. 374--><p class="nopar" >
doc/src/vipsmanualse8.html:class="content">Find photographic negative</span></div><!--tex4ht:label?: x14-420025 -->
doc/src/vipsmanualse8.html: id="x14-430002.2.6"></a>Metadata</h4>
doc/src/vipsmanualse8.html:<!--l. 382--><p class="noindent" >VIPS lets you attach arbitrary metadata to an IMAGE. For
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="vipsmanualse2.html#x7-80001.2.1">1.2.1<!--tex4ht:ref: sec:header --></a>).
doc/src/vipsmanualse8.html:<!--l. 388--><p class="indent" >  A piece of metadata is a value and an identifying name. A
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-68">
doc/src/vipsmanualse8.html:<!--l. 397--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 399--><p class="indent" >  So you can do:
doc/src/vipsmanualse8.html:  <div class="verbatim" id="verbatim-69">
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse8.html:<!--l. 404--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 406--><p class="noindent" >to create an int called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"poop"</span></span></span>, then at some later point
doc/src/vipsmanualse8.html:from <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im</span></span></span>, you can use:
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-70">
doc/src/vipsmanualse8.html: &#x00A0;<br />&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;); 
doc/src/vipsmanualse8.html:<!--l. 415--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 417--><p class="noindent" >And get the value 42 back.
doc/src/vipsmanualse8.html:<!--l. 420--><p class="indent" >    You can use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_meta_set()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_meta_get()</span></span></span>
doc/src/vipsmanualse8.html:to attach arbitrary <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">GValue</span></span></span> to images. See the man page for
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_meta_set()</span></span></span> for full details.
doc/src/vipsmanualse8.html:<!--l. 424--><p class="indent" >    You can test for a field being present with
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_meta_get_type()</span></span></span> (you&#8217;ll get <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">G_TYPE_INT</span></span></span> back
doc/src/vipsmanualse8.html:for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"poop"</span></span></span>, for example, or 0 if it is not defined for this
doc/src/vipsmanualse8.html:<!--l. 428--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-440002.2.7"></a>History</h4>
doc/src/vipsmanualse8.html:<!--l. 431--><p class="noindent" >VIPS tracks the history of an image, that is, the sequence of
doc/src/vipsmanualse8.html:can view a VIPS image&#8217;s history with the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">header</span></span></span>
doc/src/vipsmanualse8.html:class="pcrr7t-">nip2</span>&#8217;s <span 
doc/src/vipsmanualse8.html:class="pcrr7t-">View Header </span>menu.
doc/src/vipsmanualse8.html:<!--l. 437--><p class="indent" >    The call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_updatehist()</span></span></span> in Figure&#x00A0;<a 
doc/src/vipsmanualse8.html:href="#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:negative --></a> adds a
doc/src/vipsmanualse8.html:was run. You may also find <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_histlin()</span></span></span> helpful. It has
doc/src/vipsmanualse8.html:  <div class="verbatim" id="verbatim-71">
doc/src/vipsmanualse8.html:<!--l. 445--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 447--><p class="noindent" >It formats its arguments as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">printf()</span></span></span> and appends the
doc/src/vipsmanualse8.html:<!--l. 451--><p class="indent" >  You read an image&#8217;s history with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_history_get()</span></span></span>.
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-72">
doc/src/vipsmanualse8.html:<!--l. 457--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 459--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-450002.2.8"></a>Eval callbacks</h4>
doc/src/vipsmanualse8.html:<!--l. 462--><p class="noindent" >VIPS lets you attach callbacks to image descriptors. These
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="vipsmanualse15.html#x22-980003.3.6">3.3.6<!--tex4ht:ref: sec:callback --></a> for more detail.
doc/src/vipsmanualse8.html:<!--l. 466--><p class="indent" >    Eval callbacks are called repeatedly during evaluation
doc/src/vipsmanualse8.html:and can be used by user-interface programs to give feedback
doc/src/vipsmanualse8.html:<!--l. 469--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-460002.2.9"></a>Detailed rules for descriptors</h4>
doc/src/vipsmanualse8.html:<!--l. 471--><p class="noindent" >These rules are intended to answer awkward questions.
doc/src/vipsmanualse8.html:<!--l. 473--><p class="indent" >
doc/src/vipsmanualse8.html:  class="enumerate" id="x14-46002x1">You can output to a descriptor only once.
doc/src/vipsmanualse8.html:  class="enumerate" id="x14-46004x2">You can use a descriptor as an input many times.
doc/src/vipsmanualse8.html:  class="enumerate" id="x14-46006x3">You can only output to a descriptor that was opened
doc/src/vipsmanualse8.html:        with modes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span>.
doc/src/vipsmanualse8.html:  class="enumerate" id="x14-46008x4">You  can  only  use  a  descriptor  as  input  if  it  was
doc/src/vipsmanualse8.html:        opened with modes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"r"</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"rw"</span></span></span>.
doc/src/vipsmanualse8.html:  class="enumerate" id="x14-46010x5">If  you  have  output  to  a  descriptor,  you  may
doc/src/vipsmanualse8.html:        subsequently use it as an input. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> descriptors are
doc/src/vipsmanualse8.html:        automatically changed to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"r"</span></span></span> descriptors.
doc/src/vipsmanualse8.html:        <!--l. 494--><p class="noindent" >If  the  function  you  are  passing  the  descriptor  to
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="#x14-580002.2.12">2.2.12<!--tex4ht:ref: sec:limit --></a>),  then  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptors
doc/src/vipsmanualse8.html:        become <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span>. If the function you are passing the
doc/src/vipsmanualse8.html:        descriptor  to  uses  PIO,  then  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptors  are
doc/src/vipsmanualse8.html:<!--l. 501--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-470002.2.10"></a>Automatic resource deallocation</h4>
doc/src/vipsmanualse8.html:<!--l. 503--><p class="noindent" >VIPS lets you allocate resources local to an image descriptor,
doc/src/vipsmanualse8.html:<!--l. 507--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-480002.2.10"></a>Local image descriptors</h5>
doc/src/vipsmanualse8.html:<!--l. 509--><p class="noindent" >VIPS provides a function which will open a new image
doc/src/vipsmanualse8.html:local to an existing image. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_open_local()</span></span></span> has
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-73">
doc/src/vipsmanualse8.html:<!--l. 516--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 518--><p class="indent" >  It behaves exactly as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span>, except that you do
doc/src/vipsmanualse8.html:closed automatically when its parent descriptor <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im</span></span></span> is
doc/src/vipsmanualse8.html:<!--l. 523--><p class="indent" >  <a 
doc/src/vipsmanualse8.html: id="x14-480016"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse8.html:<div class="verbatim" id="verbatim-74">
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;sum1(&#x00A0;t,&#x00A0;in&#x00A0;+&#x00A0;1,&#x00A0;nin&#x00A0;-&#x00A0;1,&#x00A0;out&#x00A0;)&#x00A0;);
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;sum1(&#x00A0;in[0],&#x00A0;in&#x00A0;+&#x00A0;1,&#x00A0;nin&#x00A0;-&#x00A0;1,&#x00A0;out&#x00A0;)&#x00A0;);
doc/src/vipsmanualse8.html:<!--l. 560--><p class="nopar" >
doc/src/vipsmanualse8.html:class="content">Sum an array of images</span></div><!--tex4ht:label?: x14-480016 -->
doc/src/vipsmanualse8.html:<!--l. 565--><p class="indent" >  Figure&#x00A0;<a 
doc/src/vipsmanualse8.html:href="#x14-480016">2.6<!--tex4ht:ref: fg:addemup --></a> is a function which will sum an array of
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">out</span></span></span>. VIPS lets local images themselves have local images
doc/src/vipsmanualse8.html:<!--l. 571--><p class="indent" >  It is very important that these intermediate images are
doc/src/vipsmanualse8.html:made local to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> rather than <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">in</span></span></span>, for reasons which should
doc/src/vipsmanualse8.html:<!--l. 575--><p class="indent" >  There&#8217;s also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_open_local_array()</span></span></span> for when
doc/src/vipsmanualse8.html: id="x14-490002.2.10"></a>Local memory allocation</h5>
doc/src/vipsmanualse8.html:<!--l. 581--><p class="noindent" >VIPS includes a set of functions for memory allocation
doc/src/vipsmanualse8.html:function is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_malloc()</span></span></span>. It has type:
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-75">
doc/src/vipsmanualse8.html:<!--l. 587--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 589--><p class="indent" >  It operates exactly as the standard <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">malloc()</span></span></span> C library
doc/src/vipsmanualse8.html:to an image. If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_malloc()</span></span></span> is unable to allocate
doc/src/vipsmanualse8.html:memory, it returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">NULL</span></span></span>. If you pass <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">NULL</span></span></span> instead of a
doc/src/vipsmanualse8.html:valid image descriptor, then <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_malloc()</span></span></span> allocates
doc/src/vipsmanualse8.html:<!--l. 596--><p class="indent" >    To free memory explicitly, use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_free()</span></span></span>:
doc/src/vipsmanualse8.html:  <div class="verbatim" id="verbatim-76">
doc/src/vipsmanualse8.html:<!--l. 600--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 602--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_free()</span></span></span> always returns 0, so you can use it as an
doc/src/vipsmanualse8.html:<!--l. 606--><p class="indent" >  Three macros make memory allocation even easier.
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">IM_NEW()</span></span></span> allocates a new object. You give it a descriptor
doc/src/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-77">
doc/src/vipsmanualse8.html:  type-name&#x00A0;&#x22C6;IM_NEW(&#x00A0;IMAGE&#x00A0;&#x22C6;,&#x00A0;type-name&#x00A0;) 
doc/src/vipsmanualse8.html:<!--l. 612--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 614--><p class="indent" >  The second macro, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">IM_ARRAY()</span></span></span>, is very similar, but
doc/src/vipsmanualse8.html:usual <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">calloc()</span></span></span> C library function, it does not initialise
doc/src/vipsmanualse8.html:  <div class="verbatim" id="verbatim-78">
doc/src/vipsmanualse8.html:type-name&#x00A0;&#x22C6;IM_ARRAY(&#x00A0;IMAGE&#x00A0;&#x22C6;,&#x00A0;int,&#x00A0;type-name&#x00A0;)
doc/src/vipsmanualse8.html:<!--l. 620--><p class="nopar" >
doc/src/vipsmanualse8.html:<!--l. 622--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">IM_NUMBER()</span></span></span> returns the number of elements
doc/src/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse8.html:href="vipsmanualse9.html#x15-600002.3.1">2.3.1<!--tex4ht:ref: sec:number --></a>.
doc/src/vipsmanualse8.html:<!--l. 626--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-500002.2.10"></a>Other local operations</h5>
doc/src/vipsmanualse8.html:<!--l. 628--><p class="noindent" >The above facilities are implemented with the VIPS core
doc/src/vipsmanualse8.html:function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_add_close_callback()</span></span></span>. You can use
doc/src/vipsmanualse8.html:<!--l. 633--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-510002.2.11"></a>Error handling</h4>
doc/src/vipsmanualse8.html:<!--l. 635--><p class="noindent" >All VIPS operations return 0 on success and non-zero on
doc/src/vipsmanualse8.html:error, setting <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span>. As a consequence, when a
doc/src/vipsmanualse8.html:must call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span> to let your caller know what the
doc/src/vipsmanualse8.html:<!--l. 642--><p class="indent" >  VIPS provides two more functions for error message
doc/src/vipsmanualse8.html:handling: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_warn()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_diag()</span></span></span>. These are
doc/src/vipsmanualse8.html:arguments to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">stderr</span></span></span>, optionally suppressed by the setting
doc/src/vipsmanualse8.html:<!--l. 650--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-520002.2.12"></a>Joining operations together</h4>
doc/src/vipsmanualse8.html:<!--l. 653--><p class="noindent" >VIPS lets you join image processing operations together so
doc/src/vipsmanualse8.html:href="#x14-520017">2.7<!--tex4ht:ref: fg:join --></a> shows the
doc/src/vipsmanualse8.html:definition of the function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span> from the VIPS
doc/src/vipsmanualse8.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanualse8.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanualse8.html:class="cmmi-10">L</span><span 
doc/src/vipsmanualse8.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse8.html:class="cmmi-10">a</span><span 
doc/src/vipsmanualse8.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse8.html:class="cmmi-10">b</span><span 
doc/src/vipsmanualse8.html:class="cmsy-7">*</span>
doc/src/vipsmanualse8.html: by the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_col_display</span></span></span> structure, see the man page for
doc/src/vipsmanualse8.html: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_col_XYZ2rgb()</span></span></span>.
doc/src/vipsmanualse8.html:<!--l. 661--><p class="indent" >  <a 
doc/src/vipsmanualse8.html: id="x14-520017"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse8.html:<div class="verbatim" id="verbatim-79">
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse8.html:<!--l. 674--><p class="nopar" >
doc/src/vipsmanualse8.html:class="content">Two image-processing operations joined together</span></div><!--tex4ht:label?: x14-520017 -->
doc/src/vipsmanualse8.html:<!--l. 679--><p class="indent" >  The special <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> mode (for partial) used to open
doc/src/vipsmanualse8.html:When you use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span>, the two operations
doc/src/vipsmanualse8.html:is necessary for the intermediate image (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">t1</span></span></span> in this
doc/src/vipsmanualse8.html:<!--l. 686--><p class="indent" >  As an added bonus, if you have more than one CPU in
doc/src/vipsmanualse8.html:parallelization with the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">IM_CONCURRENCY</span></span></span> environment
doc/src/vipsmanualse8.html:variable, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_concurrency_set()</span></span></span>, and with the
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">--vips-concurrency</span></span></span> command-line switch. See the
doc/src/vipsmanualse8.html:man page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_generate()</span></span></span>.
doc/src/vipsmanualse8.html: id="x14-530002.2.12"></a>How it works</h5>
doc/src/vipsmanualse8.html:<!--l. 694--><p class="noindent" >When a VIPS function is asked to output to a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> image
doc/src/vipsmanualse8.html:<!--l. 700--><p class="indent" >  When a VIPS function is asked to output to a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> or a
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> descriptor (a real disc file or a real memory buffer), it
doc/src/vipsmanualse8.html:evaluation of any earlier <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> images.
doc/src/vipsmanualse8.html:<!--l. 705--><p class="indent" >  In the example in Figure&#x00A0;<a 
doc/src/vipsmanualse8.html:href="#x14-520017">2.7<!--tex4ht:ref: fg:join --></a>, whether or not any pixels
doc/src/vipsmanualse8.html:are really processed when <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span> is called
doc/src/vipsmanualse8.html:depends upon the mode in which <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> was opened.
doc/src/vipsmanualse8.html:If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> is also a partial image, then no pixels will be
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">out</span></span></span>.
doc/src/vipsmanualse8.html:<!--l. 711--><p class="indent" >  Conversely, if <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> is a real image (that is, either <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> or
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span>), then the final VIPS operation in the function
doc/src/vipsmanualse8.html:(<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_XYZ2disp()</span></span></span>) will output the entire image to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">out</span></span></span>,
doc/src/vipsmanualse8.html:causing the earlier parts of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span> (and indeed
doc/src/vipsmanualse8.html:possibly some earlier pieces of program, if <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">in</span></span></span> was also a
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> image) to run.
doc/src/vipsmanualse8.html:<!--l. 717--><p class="indent" >  When a VIPS pipeline does finally evaluate, all of the
doc/src/vipsmanualse8.html:  <!--l. 722--><p class="indent" >    Since VIPS partial I/O is demand-driven rather than
doc/src/vipsmanualse8.html:  data-driven this works even if some of the operations
doc/src/vipsmanualse8.html:  include a call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_affine()</span></span></span>, which performs arbitrary
doc/src/vipsmanualse8.html:  <!--l. 727--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-540002.2.12"></a>Pitfalls with partials</h5>
doc/src/vipsmanualse8.html:  <!--l. 729--><p class="noindent" >To go with all of the benefits that partial image I/O brings,
doc/src/vipsmanualse8.html:  almost certain core-dump.
doc/src/vipsmanualse8.html:  <!--l. 736--><p class="indent" >    You can prevent this from happening with careful use of
doc/src/vipsmanualse8.html:  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_open_local()</span></span></span>. If you always open local to your
doc/src/vipsmanualse8.html:  with non-image arguments. VIPS functions which take
doc/src/vipsmanualse8.html:  extra non-image arguments (a matrix, perhaps) are
doc/src/vipsmanualse8.html:  <!--l. 744--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-550002.2.12"></a>Non-image output</h5>
doc/src/vipsmanualse8.html:  <!--l. 746--><p class="noindent" >Some VIPS functions consume images, but make no image
doc/src/vipsmanualse8.html:  output. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_stats()</span></span></span> for example, scans an image
doc/src/vipsmanualse8.html:  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_stats()</span></span></span>, it behaves as a data sink, sucking image
doc/src/vipsmanualse8.html:  <!--l. 751--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-560002.2.12"></a>Calculating twice</h5>
doc/src/vipsmanualse8.html:  <!--l. 753--><p class="noindent" >In some circumstances, the same image data can be
doc/src/vipsmanualse8.html:href="#x14-560018">2.8<!--tex4ht:ref: fg:thrmean --></a> is a function which finds the
doc/src/vipsmanualse8.html:<!--l. 759--><p class="indent" >  <a 
doc/src/vipsmanualse8.html: id="x14-560018"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse8.html:<div class="verbatim" id="verbatim-80">
doc/src/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse8.html:<!--l. 771--><p class="nopar" >
doc/src/vipsmanualse8.html:class="content">Threshold an image at the mean value</span></div><!--tex4ht:label?: x14-560018 -->
doc/src/vipsmanualse8.html:<!--l. 776--><p class="indent" >  This seems straightforward &#8212; but consider if image <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">in</span></span></span>
doc/src/vipsmanualse8.html:were a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span>, and represented the output of a large pipeline
doc/src/vipsmanualse8.html:of operations. The call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_avg()</span></span></span> would force the
doc/src/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_moreconst()</span></span></span> will cause the pipeline to be evaluated
doc/src/vipsmanualse8.html:<!--l. 782--><p class="indent" >  When designing a program, it is sensible to pay attention
doc/src/vipsmanualse8.html:a file before calling <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_avg()</span></span></span>, find the average of the disc
doc/src/vipsmanualse8.html:file, and then run <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_moreconst()</span></span></span> from that. There&#8217;s
doc/src/vipsmanualse8.html:also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_cache()</span></span></span> which can keep recent parts of a very
doc/src/vipsmanualse8.html: id="x14-570002.2.12"></a>Blocking computation</h5>
doc/src/vipsmanualse8.html:<!--l. 791--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span> descriptors have a flag called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">kill</span></span></span> which can be
doc/src/vipsmanualse8.html:used to block computation. If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im-&#x003E;kill</span></span></span> is set to a
doc/src/vipsmanualse8.html:non-zero value, then any VIPS pipelines which use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im</span></span></span> as
doc/src/vipsmanualse8.html:is useful for user-interface writers &#8212; suppose your
doc/src/vipsmanualse8.html:the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">kill</span></span></span> flag in all of the deleted image&#8217;s immediate
doc/src/vipsmanualse8.html:<!--l. 800--><p class="noindent" >
doc/src/vipsmanualse8.html: id="x14-580002.2.12"></a>Limitations</h5>
doc/src/vipsmanualse8.html:<!--l. 803--><p class="noindent" >Not all VIPS operations are partial-aware. These non-partial
doc/src/vipsmanualse8.html:operations use a pre-VIPS 7.0 I/O scheme in which the
doc/src/vipsmanualse8.html:output until it has seen all of the input. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">im_fwfft()</span></span></span> is
doc/src/vipsmanualse8.html:simply not got around to rewriting the old non-partial
doc/src/vipsmanualse8.html:<!--l. 811--><p class="indent" >  You can mix partial and non-partial VIPS operations
doc/src/vipsmanualse8.html:<!--l. 816--><p class="indent" >
doc/src/vipsmanualse8.html:  class="enumerate" id="x14-58002x1">When a non-partial operation is asked to output to
doc/src/vipsmanualse8.html:          a  partial  image  descriptor,  the  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptor  is
doc/src/vipsmanualse8.html:          magically transformed into a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> descriptor.
doc/src/vipsmanualse8.html:  class="enumerate" id="x14-58004x2">When a non-partial operation is asked to read from
doc/src/vipsmanualse8.html:          a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptor, the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptor is turned into
doc/src/vipsmanualse8.html:          a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> type, and any earlier stages in the pipeline
doc/src/vipsmanualse8.html:          <!--l. 828--><p class="noindent" >The non-partial operation then processes from the
doc/src/vipsmanualse8.html:  <!--l. 832--><p class="indent" >    These rules have the consequence that you may only
doc/src/vipsmanualse8.html:  If you use any non-partial operations, then parts of your
doc/src/vipsmanualse8.html:  pipelines will fall back to old whole-image I/O and you will
doc/src/vipsmanualse8.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse8.html:href="vipsmanualse7.html#tailvipsmanualse7.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse8.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanualse13.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse13.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse13.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse13.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse13.html:<!-- 3,html --> 
doc/src/vipsmanualse13.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse13.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse13.html: id="x20-850003.1"></a>Introduction</h3>
doc/src/vipsmanualse13.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:oper"></a>
doc/src/vipsmanualse13.html:<!--l. 4--><p class="indent" >  This chapter explains how to write image processing
doc/src/vipsmanualse13.html:operations using the VIPS image I/O (input-output) system.
doc/src/vipsmanualse13.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse13.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>.
doc/src/vipsmanualse13.html:information on any particular function, use the on-line
doc/src/vipsmanualse13.html:<!--l. 10--><p class="noindent" >
doc/src/vipsmanualse13.html: id="x20-860003.1.1"></a>Why use VIPS?</h4>
doc/src/vipsmanualse13.html:<!--l. 12--><p class="noindent" >If you use the VIPS image I/O system, you get a number of
doc/src/vipsmanualse13.html:class="ptmb7t-">Threading</span> </dt><dd 
doc/src/vipsmanualse13.html:    an approximately linear speed-up as you add more
doc/src/vipsmanualse13.html:class="ptmb7t-">Pipelining</span>  </dt><dd 
doc/src/vipsmanualse13.html:class="ptmb7t-">Composition</span>  </dt><dd 
doc/src/vipsmanualse13.html:          easy-to-understand pieces. VIPS already has a lot
doc/src/vipsmanualse13.html:class="ptmb7t-">Large files</span>  </dt><dd 
doc/src/vipsmanualse13.html:          plain 32-bit machine. VIPS operations only see 32
doc/src/vipsmanualse13.html:class="ptmb7t-">Abstraction</span>  </dt><dd 
doc/src/vipsmanualse13.html:class="ptmb7t-">Interfaces</span>  </dt><dd 
doc/src/vipsmanualse13.html:class="pcrr7t-">nip2</span>), a UNIX command-line interface (<span 
doc/src/vipsmanualse13.html:class="pcrr7t-">vips</span>)
doc/src/vipsmanualse13.html:class="ptmb7t-">Portability</span>  </dt><dd 
doc/src/vipsmanualse13.html:<!--l. 59--><p class="noindent" >
doc/src/vipsmanualse13.html: id="x20-870003.1.2"></a>I/O styles</h4>
doc/src/vipsmanualse13.html:<!--l. 61--><p class="noindent" >The I/O system supports three styles of input-output.
doc/src/vipsmanualse13.html:class="ptmb7t-">Whole-image I/O (WIO)</span> </dt><dd 
doc/src/vipsmanualse13.html:    left-over  from  VIPS  6.x.  WIO  image-processing
doc/src/vipsmanualse13.html:class="ptmb7t-">Partial-image I/O (PIO)</span> </dt><dd 
doc/src/vipsmanualse13.html:class="ptmb7t-">In-place</span> </dt><dd 
doc/src/vipsmanualse13.html:    is  used  by  the  VIPS  in-place  operations,  such
doc/src/vipsmanualse13.html:    as  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse13.html:class="pcrr7t-">im_fastline()</span></span></span>.  You  should  only  use  it
doc/src/vipsmanualse13.html:<!--l. 85--><p class="indent" >  WIO operations are easy to program, but slow and
doc/src/vipsmanualse13.html:<!--l. 89--><p class="indent" >  If you can face it, and if your algorithm can be expressed
doc/src/vipsmanualse13.html:<!--l. 93--><p class="indent" >  If your image processing operation performs no
doc/src/vipsmanualse13.html:can use the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse13.html:class="pcrr7t-">im_wrapone()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse13.html:class="pcrr7t-">im_wrapmany()</span></span></span>
doc/src/vipsmanualse13.html:operations. These take a simple buffer-processing operation
doc/src/vipsmanualse13.html:supplied by you and wrap it up as a full-blown PIO
doc/src/vipsmanualse13.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse13.html:href="vipsmanualse15.html#x22-930003.3.1">3.3.1<!--tex4ht:ref: sec:wrapone --></a>.
doc/src/vipsmanualse13.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse13.html:<!--l. 1--><p class="indent" >  <a 
doc/src/cppintro.tex:to \fref{fg:invert-c++}. \fref{fg:invert-py} is the same thing in Python.
doc/src/cppintro.tex:  `pkg-config vipsCC-7.18 \
doc/src/cppintro.tex:    --cflags --libs` 
doc/src/cppintro.tex:You just include \verb+<vips/vips>+ --- this then gets all of the
doc/src/cppintro.tex:The C++ API replaces all of the VIPS C types --- \verb+IMAGE+ becomes
doc/src/cppintro.tex:--- here, \verb+VImage( argv[1] )+ creates a new \verb+VImage+ object using
doc/src/cppintro.tex:The VIPS C++ API uses exceptions --- the \verb+VError+ class is covered
doc/src/cppintro.tex:\label{fg:invert-c++}
doc/src/cppintro.tex:\label{fg:invert-py}
doc/src/vipsmanual.tex:\fancyhead[LE,RO]{\leftmark}		% left-even, right-odd
doc/src/vipsmanual.tex:\fancyhead[RE,LO]{VIPS Manual}		% right-even, left-odd
doc/src/vipsmanual.tex:\fancyfoot[LE,RO]{\thepage}		% left-even, right-odd
doc/src/vipsmanualse7.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse7.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse7.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse7.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse7.html:<!-- 3,html --> 
doc/src/vipsmanualse7.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse7.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse7.html: id="x13-360002.1"></a>Introduction</h3>
doc/src/vipsmanualse7.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:appl"></a>
doc/src/vipsmanualse7.html:<!--l. 4--><p class="indent" >  This chapter explains how to call VIPS functions from C
doc/src/vipsmanualse7.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse7.html:href="vipsmanualse13.html#x20-850003.1">3.1<!--tex4ht:ref: sec:oper --></a>), only how to call the ones
doc/src/vipsmanualse7.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse7.html:href="vipsmanualse1.html#x6-50001.1">1.1<!--tex4ht:ref: sec:cpp --></a>.
doc/src/vipsmanualse7.html: <!--l. 10--><p class="indent" >    See <span 
doc/src/vipsmanualse7.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse7.html:href="vipsmanualse17.html#x25-1050004.1">4.1<!--tex4ht:ref: sec:ref --></a> for an introduction to the image processing
doc/src/vipsmanualse7.html:href="#x13-360011">2.1<!--tex4ht:ref: fg:architecture --></a> tries to show
doc/src/vipsmanualse7.html:<!--l. 15--><p class="indent" >  <a 
doc/src/vipsmanualse7.html: id="x13-360011"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse7.html:<!--l. 15--><p class="noindent" >
doc/src/vipsmanualse7.html:<!--l. 15--><p class="noindent" ><img 
doc/src/vipsmanualse7.html:class="content">VIPS software architecture</span></div><!--tex4ht:label?: x13-360011 -->
doc/src/vipsmanualse7.html:<!--l. 20--><p class="indent" >  VIPS includes a set of UNIX manual pages. Enter (for
doc/src/vipsmanualse7.html:                                                 <div class="verbatim" id="verbatim-49">
doc/src/vipsmanualse7.html:<!--l. 24--><p class="nopar" >
doc/src/vipsmanualse7.html:<!--l. 26--><p class="noindent" >to get an explanation of the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse7.html:class="pcrr7t-">im_extract()</span></span></span> function.
doc/src/vipsmanualse7.html:<!--l. 29--><p class="indent" >    All the command-line VIPS operations will print help
doc/src/vipsmanualse7.html:  <div class="verbatim" id="verbatim-50">
doc/src/vipsmanualse7.html:<!--l. 51--><p class="nopar" >
doc/src/vipsmanualse7.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse7.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanualli3.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualli3.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualli3.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualli3.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualli3.html:<!-- 3,html --> 
doc/src/vipsmanualli3.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualli3.html:  <!--l. 53--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualli3.html:href="vipsmanualli2.html#tailvipsmanualli2.html" >prev-tail</a>] [<a 
doc/src/vipsmanualli3.html: id="x4-3000"></a>List of Tables</h2>
doc/src/vipsmanualli3.html:href="vipsmanualse2.html#x7-80011">VIPS header</a></span><br /><span class="lotToc" >1.2&#x00A0;<a 
doc/src/vipsmanualli3.html:href="vipsmanualse2.html#x7-80022">Possible values for <span 
doc/src/vipsmanualli3.html:class="pcrr7t-">BandFmt</span></a></span><br /><span class="lotToc" >1.3&#x00A0;<a 
doc/src/vipsmanualli3.html:href="vipsmanualse2.html#x7-80033">Possible values for <span 
doc/src/vipsmanualli3.html:class="pcrr7t-">Coding</span></a></span><br /><span class="lotToc" >1.4&#x00A0;<a 
doc/src/vipsmanualli3.html:href="vipsmanualse2.html#x7-80044">Possible
doc/src/vipsmanualli3.html:class="pcrr7t-">Type</span></a></span><br /><span class="lotToc" >2.1&#x00A0;<a 
doc/src/vipsmanualli3.html:href="vipsmanualse9.html#x15-600011">Argument type macros</a></span><br /><span class="lotToc" >4.1&#x00A0;<a 
doc/src/vipsmanualli3.html:href="vipsmanualse17.html#x25-1050011">Miscellaneous programs</a></span><br />
doc/src/vipsmanualli3.html:  <!--l. 61--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualli3.html:href="vipsmanualli2.html#tailvipsmanualli2.html" >prev-tail</a>] [<a 
doc/src/vipsmanualli3.html:<!--l. 61--><p class="indent" >  <a 
doc/src/vipsmanual.4tc:\doTocEntry\toclikechapter{}{\csname a:TocLink\endcsname{2}{x2-1000}{QQ2-2-1}{Contents}}{3}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclikechapter{}{\csname a:TocLink\endcsname{3}{x3-2000}{QQ2-3-2}{List of Figures}}{7}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclikechapter{}{\csname a:TocLink\endcsname{4}{x4-3000}{QQ2-4-3}{List of Tables}}{11}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocchapter{1}{\csname a:TocLink\endcsname{5}{x5-40001}{QQ2-5-4}{VIPS from C++ and Python}}{3}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{1.1}{\csname a:TocLink\endcsname{6}{x6-50001.1}{QQ2-6-5}{Introduction}}{3}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.1.1}{\csname a:TocLink\endcsname{6}{x6-60001.1.1}{QQ2-6-6}{If you've used the C API}}{3}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{1.1}{\csname a:TocLink\endcsname{6}{x6-60011}{}{\ignorespaces \texttt  {invert} program in C++}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{1.2}{\csname a:TocLink\endcsname{6}{x6-60022}{}{\ignorespaces \texttt  {invert} program in Python}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{1.2}{\csname a:TocLink\endcsname{7}{x7-70001.2}{QQ2-7-9}{The VIPS file format}}{11}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.2.1}{\csname a:TocLink\endcsname{7}{x7-80001.2.1}{QQ2-7-10}{VIPS file header}}{11}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclot{1.1}{\csname a:TocLink\endcsname{7}{x7-80011}{}{\ignorespaces VIPS header}}{table}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclot{1.2}{\csname a:TocLink\endcsname{7}{x7-80022}{}{\ignorespaces Possible values for \texttt  {BandFmt}}}{table}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclot{1.3}{\csname a:TocLink\endcsname{7}{x7-80033}{}{\ignorespaces Possible values for \texttt  {Coding}}}{table}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclot{1.4}{\csname a:TocLink\endcsname{7}{x7-80044}{}{\ignorespaces Possible values for \texttt  {Type}}}{table}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.2.2}{\csname a:TocLink\endcsname{7}{x7-90001.2.2}{QQ2-7-15}{Computation formats}}{23}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.2.3}{\csname a:TocLink\endcsname{7}{x7-100001.2.3}{QQ2-7-16}{Storage formats}}{23}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{1.3}{\csname a:TocLink\endcsname{8}{x8-110001.3}{QQ2-8-17}{The \texttt  {VImage} class}}{24}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.3.1}{\csname a:TocLink\endcsname{8}{x8-120001.3.1}{QQ2-8-18}{Constructors}}{24}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.3.2}{\csname a:TocLink\endcsname{8}{x8-130001.3.2}{QQ2-8-19}{File conversion}}{27}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.3.3}{\csname a:TocLink\endcsname{8}{x8-140001.3.3}{QQ2-8-20}{Projection functions}}{28}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.3.4}{\csname a:TocLink\endcsname{8}{x8-150001.3.4}{QQ2-8-21}{Assignment}}{31}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.3.5}{\csname a:TocLink\endcsname{8}{x8-160001.3.5}{QQ2-8-22}{Computing with \texttt  {VImage}s}}{32}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.3.6}{\csname a:TocLink\endcsname{8}{x8-170001.3.6}{QQ2-8-23}{Writing results}}{33}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.3.7}{\csname a:TocLink\endcsname{8}{x8-180001.3.7}{QQ2-8-24}{Type conversions}}{34}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{1.4}{\csname a:TocLink\endcsname{9}{x9-190001.4}{QQ2-9-25}{The \texttt  {VMask} class}}{36}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.4.1}{\csname a:TocLink\endcsname{9}{x9-200001.4.1}{QQ2-9-26}{Constructors}}{36}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.4.2}{\csname a:TocLink\endcsname{9}{x9-210001.4.2}{QQ2-9-27}{Projection functions}}{37}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.4.3}{\csname a:TocLink\endcsname{9}{x9-220001.4.3}{QQ2-9-28}{Assignment}}{37}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.4.4}{\csname a:TocLink\endcsname{9}{x9-230001.4.4}{QQ2-9-29}{Computing with \texttt  {VMask}}}{38}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.4.5}{\csname a:TocLink\endcsname{9}{x9-240001.4.5}{QQ2-9-30}{\texttt  {VIMask} operations}}{39}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.4.6}{\csname a:TocLink\endcsname{9}{x9-250001.4.6}{QQ2-9-31}{\texttt  {VDMask} operations}}{40}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.4.7}{\csname a:TocLink\endcsname{9}{x9-260001.4.7}{QQ2-9-32}{Output of masks}}{40}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{1.5}{\csname a:TocLink\endcsname{10}{x10-270001.5}{QQ2-10-33}{The \texttt  {VDisplay} class}}{41}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.5.1}{\csname a:TocLink\endcsname{10}{x10-280001.5.1}{QQ2-10-34}{Constructors}}{41}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.5.2}{\csname a:TocLink\endcsname{10}{x10-290001.5.2}{QQ2-10-35}{Projection functions}}{42}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{1.6}{\csname a:TocLink\endcsname{11}{x11-300001.6}{QQ2-11-36}{The \texttt  {VError} class}}{44}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.6.1}{\csname a:TocLink\endcsname{11}{x11-310001.6.1}{QQ2-11-37}{Constructors}}{44}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.6.2}{\csname a:TocLink\endcsname{11}{x11-320001.6.2}{QQ2-11-38}{Projection functions}}{44}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.6.3}{\csname a:TocLink\endcsname{11}{x11-330001.6.3}{QQ2-11-39}{Computing with \texttt  {VError}}}{45}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{1.6.4}{\csname a:TocLink\endcsname{11}{x11-340001.6.4}{QQ2-11-40}{Convenience function}}{47}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocchapter{2}{\csname a:TocLink\endcsname{12}{x12-350002}{QQ2-12-41}{VIPS for C programmers}}{51}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{2.1}{\csname a:TocLink\endcsname{13}{x13-360002.1}{QQ2-13-42}{Introduction}}{51}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.1}{\csname a:TocLink\endcsname{13}{x13-360011}{}{\ignorespaces VIPS software architecture}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{2.2}{\csname a:TocLink\endcsname{14}{x14-370002.2}{QQ2-14-44}{Core C API}}{56}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.1}{\csname a:TocLink\endcsname{14}{x14-380002.2.1}{QQ2-14-45}{Startup}}{56}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.2}{\csname a:TocLink\endcsname{14}{x14-380012}{}{\ignorespaces Hello World for VIPS}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.2}{\csname a:TocLink\endcsname{14}{x14-390002.2.2}{QQ2-14-47}{Image descriptors}}{60}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.3}{\csname a:TocLink\endcsname{14}{x14-390013}{}{\ignorespaces The \texttt  {IMAGE} descriptor}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.3}{\csname a:TocLink\endcsname{14}{x14-400002.2.3}{QQ2-14-49}{Header fields}}{63}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.4}{\csname a:TocLink\endcsname{14}{x14-410002.2.4}{QQ2-14-50}{Opening and closing}}{63}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.5}{\csname a:TocLink\endcsname{14}{x14-420002.2.5}{QQ2-14-51}{Examples}}{67}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.4}{\csname a:TocLink\endcsname{14}{x14-420014}{}{\ignorespaces Print width and height of an image}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.5}{\csname a:TocLink\endcsname{14}{x14-420025}{}{\ignorespaces Find photographic negative}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.6}{\csname a:TocLink\endcsname{14}{x14-430002.2.6}{QQ2-14-54}{Metadata}}{73}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.7}{\csname a:TocLink\endcsname{14}{x14-440002.2.7}{QQ2-14-55}{History}}{74}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.8}{\csname a:TocLink\endcsname{14}{x14-450002.2.8}{QQ2-14-56}{Eval callbacks}}{75}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.9}{\csname a:TocLink\endcsname{14}{x14-460002.2.9}{QQ2-14-57}{Detailed rules for descriptors}}{75}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.10}{\csname a:TocLink\endcsname{14}{x14-470002.2.10}{QQ2-14-58}{Automatic resource deallocation}}{76}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-480002.2.10}{QQ2-14-59}{Local image descriptors}}{76}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.6}{\csname a:TocLink\endcsname{14}{x14-480016}{}{\ignorespaces Sum an array of images}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-490002.2.10}{QQ2-14-61}{Local memory allocation}}{79}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-500002.2.10}{QQ2-14-62}{Other local operations}}{81}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.11}{\csname a:TocLink\endcsname{14}{x14-510002.2.11}{QQ2-14-63}{Error handling}}{81}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.2.12}{\csname a:TocLink\endcsname{14}{x14-520002.2.12}{QQ2-14-64}{Joining operations together}}{81}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.7}{\csname a:TocLink\endcsname{14}{x14-520017}{}{\ignorespaces Two image-processing operations joined together}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-530002.2.12}{QQ2-14-66}{How it works}}{84}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-540002.2.12}{QQ2-14-67}{Pitfalls with partials}}{84}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-550002.2.12}{QQ2-14-68}{Non-image output}}{84}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-560002.2.12}{QQ2-14-69}{Calculating twice}}{84}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.8}{\csname a:TocLink\endcsname{14}{x14-560018}{}{\ignorespaces Threshold an image at the mean value}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-570002.2.12}{QQ2-14-71}{Blocking computation}}{87}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-580002.2.12}{QQ2-14-72}{Limitations}}{87}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{2.3}{\csname a:TocLink\endcsname{15}{x15-590002.3}{QQ2-15-73}{Function dispatch and plug-ins}}{88}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.3.1}{\csname a:TocLink\endcsname{15}{x15-600002.3.1}{QQ2-15-74}{Simple plugin example}}{88}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclot{2.1}{\csname a:TocLink\endcsname{15}{x15-600011}{}{\ignorespaces Argument type macros}}{table}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.3.2}{\csname a:TocLink\endcsname{15}{x15-610002.3.2}{QQ2-15-76}{A more complicated example}}{95}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.3.3}{\csname a:TocLink\endcsname{15}{x15-620002.3.3}{QQ2-15-77}{Adding new types}}{96}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.3.4}{\csname a:TocLink\endcsname{15}{x15-630002.3.4}{QQ2-15-78}{Using function dispatch in your application}}{101}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{15}{x15-640002.3.4}{QQ2-15-79}{Adding and removing functions}}{101}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{15}{x15-650002.3.4}{QQ2-15-80}{Searching the function database}}{102}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{15}{x15-660002.3.4}{QQ2-15-81}{Building argument structures and running commands}}{103}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{2.4}{\csname a:TocLink\endcsname{16}{x16-670002.4}{QQ2-16-82}{The VIPS base class: \texttt  {VipsObject}}}{106}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.4.1}{\csname a:TocLink\endcsname{16}{x16-680002.4.1}{QQ2-16-83}{Properties}}{106}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{16}{x16-690002.4.1}{QQ2-16-84}{Lookup}}{106}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{16}{x16-700002.4.1}{QQ2-16-85}{Create}}{107}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{16}{x16-710002.4.1}{QQ2-16-86}{Build}}{108}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{16}{x16-720002.4.1}{QQ2-16-87}{Use}}{108}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.4.2}{\csname a:TocLink\endcsname{16}{x16-730002.4.2}{QQ2-16-88}{Convenience functions}}{109}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{2.5}{\csname a:TocLink\endcsname{17}{x17-740002.5}{QQ2-17-89}{Image formats}}{111}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.5.1}{\csname a:TocLink\endcsname{17}{x17-750002.5.1}{QQ2-17-90}{How a format is represented}}{111}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.5.2}{\csname a:TocLink\endcsname{17}{x17-760002.5.2}{QQ2-17-91}{The format class}}{111}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.9}{\csname a:TocLink\endcsname{17}{x17-760019}{}{\ignorespaces Registering a format in a plugin}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.5.3}{\csname a:TocLink\endcsname{17}{x17-770002.5.3}{QQ2-17-93}{Finding a format}}{114}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.5.4}{\csname a:TocLink\endcsname{17}{x17-780002.5.4}{QQ2-17-94}{Convenience functions}}{114}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{2.6}{\csname a:TocLink\endcsname{18}{x18-790002.6}{QQ2-18-95}{Interpolators}}{115}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.6.1}{\csname a:TocLink\endcsname{18}{x18-800002.6.1}{QQ2-18-96}{How an interpolator is represented}}{115}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.6.2}{\csname a:TocLink\endcsname{18}{x18-810002.6.2}{QQ2-18-97}{A sample interpolator}}{115}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{2.10}{\csname a:TocLink\endcsname{18}{x18-8100110}{}{\ignorespaces Registering an interpolator in a plugin}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.6.3}{\csname a:TocLink\endcsname{18}{x18-820002.6.3}{QQ2-18-99}{Writing a VIPS operation that takes an interpolator as an argument}}{118}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{2.6.4}{\csname a:TocLink\endcsname{18}{x18-830002.6.4}{QQ2-18-100}{Passing an interpolator to a VIPS operation}}{119}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocchapter{3}{\csname a:TocLink\endcsname{19}{x19-840003}{QQ2-19-101}{Writing VIPS operations}}{125}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{3.1}{\csname a:TocLink\endcsname{20}{x20-850003.1}{QQ2-20-102}{Introduction}}{125}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.1.1}{\csname a:TocLink\endcsname{20}{x20-860003.1.1}{QQ2-20-103}{Why use VIPS?}}{125}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.1.2}{\csname a:TocLink\endcsname{20}{x20-870003.1.2}{QQ2-20-104}{I/O styles}}{126}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{3.2}{\csname a:TocLink\endcsname{21}{x21-880003.2}{QQ2-21-105}{Programming WIO operations}}{127}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.2.1}{\csname a:TocLink\endcsname{21}{x21-890003.2.1}{QQ2-21-106}{Input from an image}}{127}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.1}{\csname a:TocLink\endcsname{21}{x21-890011}{}{\ignorespaces Find average of image}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.2.2}{\csname a:TocLink\endcsname{21}{x21-900003.2.2}{QQ2-21-108}{Output to an image}}{131}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.2}{\csname a:TocLink\endcsname{21}{x21-900012}{}{\ignorespaces Invert an image}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.2.3}{\csname a:TocLink\endcsname{21}{x21-910003.2.3}{QQ2-21-110}{Polymorphism}}{137}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.3}{\csname a:TocLink\endcsname{21}{x21-910013}{}{\ignorespaces Calculate \texttt  {exp()} for an image}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.4}{\csname a:TocLink\endcsname{21}{x21-910024}{}{\ignorespaces Calculate \texttt  {exp()} for an image (cont)}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{3.3}{\csname a:TocLink\endcsname{22}{x22-920003.3}{QQ2-22-113}{Programming PIO functions}}{144}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.3.1}{\csname a:TocLink\endcsname{22}{x22-930003.3.1}{QQ2-22-114}{Easy PIO with \texttt  {im\_wrapone()} and \texttt  {im\_wrapmany()}}}{144}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.3.2}{\csname a:TocLink\endcsname{22}{x22-940003.3.2}{QQ2-22-115}{Region descriptors}}{150}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.3.3}{\csname a:TocLink\endcsname{22}{x22-950003.3.3}{QQ2-22-116}{Image input with regions}}{152}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.5}{\csname a:TocLink\endcsname{22}{x22-950015}{}{\ignorespaces First PIO average of image}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.6}{\csname a:TocLink\endcsname{22}{x22-950026}{}{\ignorespaces First PIO average of image (cont.)}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.3.4}{\csname a:TocLink\endcsname{22}{x22-960003.3.4}{QQ2-22-119}{Splitting into sequences}}{160}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.7}{\csname a:TocLink\endcsname{22}{x22-960017}{}{\ignorespaces Final PIO average of image}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.8}{\csname a:TocLink\endcsname{22}{x22-960028}{}{\ignorespaces Final PIO average of image (cont.)}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.9}{\csname a:TocLink\endcsname{22}{x22-960039}{}{\ignorespaces Final PIO average of image (cont.)}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.3.5}{\csname a:TocLink\endcsname{22}{x22-970003.3.5}{QQ2-22-123}{Output to regions}}{170}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.10}{\csname a:TocLink\endcsname{22}{x22-9700110}{}{\ignorespaces PIO invert}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{3.11}{\csname a:TocLink\endcsname{22}{x22-9700211}{}{\ignorespaces PIO invert (cont.)}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.3.6}{\csname a:TocLink\endcsname{22}{x22-980003.3.6}{QQ2-22-126}{Callbacks}}{177}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{22}{x22-990003.3.6}{QQ2-22-127}{Close callbacks}}{177}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{22}{x22-1000003.3.6}{QQ2-22-128}{Preclose callbacks}}{177}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{22}{x22-1010003.3.6}{QQ2-22-129}{Eval callbacks}}{177}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{3.3.7}{\csname a:TocLink\endcsname{22}{x22-1020003.3.7}{QQ2-22-130}{Memory allocation revisited}}{177}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{3.4}{\csname a:TocLink\endcsname{23}{x23-1030003.4}{QQ2-23-131}{Programming in-place functions}}{179}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocchapter{4}{\csname a:TocLink\endcsname{24}{x24-1040004}{QQ2-24-132}{VIPS reference}}{183}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{4.1}{\csname a:TocLink\endcsname{25}{x25-1050004.1}{QQ2-25-133}{Introduction}}{183}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclot{4.1}{\csname a:TocLink\endcsname{25}{x25-1050011}{}{\ignorespaces Miscellaneous programs}}{table}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsection{4.2}{\csname a:TocLink\endcsname{26}{x26-1060004.2}{QQ2-26-135}{VIPS packages}}{189}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.1}{\csname a:TocLink\endcsname{26}{x26-1070004.2.1}{QQ2-26-136}{Arithmetic}}{189}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.1}{\csname a:TocLink\endcsname{26}{x26-1070011}{}{\ignorespaces Arithmetic functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.2}{\csname a:TocLink\endcsname{26}{x26-1080004.2.2}{QQ2-26-138}{Relational}}{192}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.2}{\csname a:TocLink\endcsname{26}{x26-1080012}{}{\ignorespaces Relational functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.3}{\csname a:TocLink\endcsname{26}{x26-1090004.2.3}{QQ2-26-140}{Boolean}}{195}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.3}{\csname a:TocLink\endcsname{26}{x26-1090013}{}{\ignorespaces Boolean functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.4}{\csname a:TocLink\endcsname{26}{x26-1100004.2.4}{QQ2-26-142}{Colour}}{198}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.4}{\csname a:TocLink\endcsname{26}{x26-1100014}{}{\ignorespaces VIPS colour space conversion}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.5}{\csname a:TocLink\endcsname{26}{x26-1100025}{}{\ignorespaces Colour functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.5}{\csname a:TocLink\endcsname{26}{x26-1110004.2.5}{QQ2-26-145}{Conversion}}{204}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.6}{\csname a:TocLink\endcsname{26}{x26-1110016}{}{\ignorespaces Conversion functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.7}{\csname a:TocLink\endcsname{26}{x26-1110027}{}{\ignorespaces Conversion functions (cont.)}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.6}{\csname a:TocLink\endcsname{26}{x26-1120004.2.6}{QQ2-26-148}{Matricies}}{210}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.8}{\csname a:TocLink\endcsname{26}{x26-1120018}{}{\ignorespaces Matrix functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.7}{\csname a:TocLink\endcsname{26}{x26-1130004.2.7}{QQ2-26-150}{Convolution}}{214}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.9}{\csname a:TocLink\endcsname{26}{x26-1130019}{}{\ignorespaces Convolution functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.8}{\csname a:TocLink\endcsname{26}{x26-1140004.2.8}{QQ2-26-152}{In-place operations}}{217}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.10}{\csname a:TocLink\endcsname{26}{x26-11400110}{}{\ignorespaces In-place operations}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.9}{\csname a:TocLink\endcsname{26}{x26-1150004.2.9}{QQ2-26-154}{Frequency filtering}}{220}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.11}{\csname a:TocLink\endcsname{26}{x26-11500111}{}{\ignorespaces Fourier functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.10}{\csname a:TocLink\endcsname{26}{x26-1160004.2.10}{QQ2-26-156}{Histograms and LUTs}}{223}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.12}{\csname a:TocLink\endcsname{26}{x26-11600112}{}{\ignorespaces Histogram/LUT functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.11}{\csname a:TocLink\endcsname{26}{x26-1170004.2.11}{QQ2-26-158}{Morphology}}{226}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.13}{\csname a:TocLink\endcsname{26}{x26-11700113}{}{\ignorespaces Morphological functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.12}{\csname a:TocLink\endcsname{26}{x26-1180004.2.12}{QQ2-26-160}{Mosaicing}}{229}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.14}{\csname a:TocLink\endcsname{26}{x26-11800114}{}{\ignorespaces Mosaic functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.13}{\csname a:TocLink\endcsname{26}{x26-1190004.2.13}{QQ2-26-162}{CImg functions}}{232}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.15}{\csname a:TocLink\endcsname{26}{x26-11900115}{}{\ignorespaces CImg functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.14}{\csname a:TocLink\endcsname{26}{x26-1200004.2.14}{QQ2-26-164}{Other}}{235}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.16}{\csname a:TocLink\endcsname{26}{x26-12000116}{}{\ignorespaces Other functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.15}{\csname a:TocLink\endcsname{26}{x26-1210004.2.15}{QQ2-26-166}{IO functions}}{238}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.17}{\csname a:TocLink\endcsname{26}{x26-12100117}{}{\ignorespaces IO functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.16}{\csname a:TocLink\endcsname{26}{x26-1220004.2.16}{QQ2-26-168}{Format functions}}{241}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.18}{\csname a:TocLink\endcsname{26}{x26-12200118}{}{\ignorespaces Format functions}}{figure}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\tocsubsection{4.2.17}{\csname a:TocLink\endcsname{26}{x26-1230004.2.17}{QQ2-26-170}{Resample functions}}{244}\relax 
doc/src/vipsmanual.4tc:\doTocEntry\toclof{4.19}{\csname a:TocLink\endcsname{26}{x26-12300119}{}{\ignorespaces Resample functions}}{figure}\relax 
Coincidencia en el archivo binario doc/src/vipsmanual.dvi
doc/src/vimage.tex:The named image file is opened read-only. This is the default mode.
doc/src/vimage.tex:read-write. This mode is useful for paintbox-style
doc/src/vimage.tex:  width, height, bands, format) -> 
doc/src/vimage.tex:  width, height, bands, format) -> 
doc/src/vimage.tex:VImage.vips_from_PIL_mode (mode) -> 
doc/src/vimage.tex:lower-level API which lets you control more of the detail of reading and
doc/src/vimage.tex:VImage.PIL_mode_from_vips (vips-image) -> 
doc/src/vimage.tex:\verb+VImage+ defines copy and assignment, with reference-counted,
doc/src/vimage.tex:pointer-style semantics.  For example, if you write:
doc/src/vimage.tex:Internally, a \verb+VImage+ object is just a pointer to a reference-counting
doc/src/vimage.tex:VIPS is a demand-driven image processing system: when it computes expressions
doc/src/vimage.tex:projection functions on images --- \verb+result.BandFmt()+ for example).  When
doc/src/vimage.tex:database, so it should all be up-to-date.
doc/src/vipsmanualse17.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse17.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse17.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse17.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse17.html:<!-- 3,html --> 
doc/src/vipsmanualse17.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse17.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse17.html: id="x25-1050004.1"></a>Introduction</h3>
doc/src/vipsmanualse17.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:ref"></a>
doc/src/vipsmanualse17.html:<!--l. 4--><p class="indent" >  /bf VIPS reference documentation is in the process of
doc/src/vipsmanualse17.html:switching to gtkdoc. Half-done manuals are distributed
doc/src/vipsmanualse17.html:<!--l. 9--><p class="indent" >  In the meantime, this old and slightly outdated chapter
doc/src/vipsmanualse17.html:<!--l. 13--><p class="indent" >  This chapter introduces the functions available in the
doc/src/vipsmanualse17.html:particular functions, refer to the UNIX on-line manual
doc/src/vipsmanualse17.html:                                                 <div class="verbatim" id="verbatim-173">
doc/src/vipsmanualse17.html:<!--l. 19--><p class="nopar" >
doc/src/vipsmanualse17.html:<!--l. 21--><p class="indent" >  for information on the function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">im_abs()</span></span></span>.
doc/src/vipsmanualse17.html:<!--l. 23--><p class="indent" >    All the comand-line vips operations will print help text
doc/src/vipsmanualse17.html:  <div class="verbatim" id="verbatim-174">
doc/src/vipsmanualse17.html:<!--l. 45--><p class="nopar" >
doc/src/vipsmanualse17.html:<!--l. 47--><p class="indent" >  Once you have found a function you need to use, you can
doc/src/vipsmanualse17.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse17.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>), you can call it from C++
doc/src/vipsmanualse17.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse17.html:href="vipsmanualse1.html#x6-50001.1">1.1<!--tex4ht:ref: sec:cpp --></a>), you can call it from the <span 
doc/src/vipsmanualse17.html:class="pcrr7t-">nip2 </span>((see the
doc/src/vipsmanualse17.html:class="ptmri7t-">nip Manual</span>), or SIAM graphical user-interfaces, or you can
doc/src/vipsmanualse17.html:class="pcrr7t-">vips</span>
doc/src/vipsmanualse17.html:                                                 <div class="verbatim" id="verbatim-175">
doc/src/vipsmanualse17.html:<!--l. 60--><p class="nopar" >
doc/src/vipsmanualse17.html:<!--l. 62--><p class="indent" >  VIPS may have been set up at your site with a set of links
doc/src/vipsmanualse17.html:  <div class="verbatim" id="verbatim-176">
doc/src/vipsmanualse17.html:<!--l. 70--><p class="nopar" >
doc/src/vipsmanualse17.html:<!--l. 72--><p class="indent" >  There are a few VIPS programs which you cannot run
doc/src/vipsmanualse17.html:class="pcrr7t-">vips</span>, either because their arguments are a very
doc/src/vipsmanualse17.html:strange, or because they are complete mini-applications
doc/src/vipsmanualse17.html:(like <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">vips2dj</span></span></span>). These programs are listed in table&#x00A0;<a 
doc/src/vipsmanualse17.html:href="#x25-1050011">4.1<!--tex4ht:ref: tb:nondb --></a>, see
doc/src/vipsmanualse17.html:<!--l. 78--><p class="indent" >  <a 
doc/src/vipsmanualse17.html: id="x25-1050011"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse17.html:class="centerline"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-6" class="tabular" 
doc/src/vipsmanualse17.html:><colgroup id="TBL-6-1g"><col 
doc/src/vipsmanualse17.html:id="TBL-6-1"></colgroup><colgroup id="TBL-6-2g"><col 
doc/src/vipsmanualse17.html:id="TBL-6-2"></colgroup><tr 
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-1-1"  
doc/src/vipsmanualse17.html:class="td11">Name                                   </td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-1-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-2-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">binfile            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-2-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-3-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">debugim            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-3-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-4-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">edvips             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-4-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-5-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">header             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-5-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-6-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">printlines </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-6-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-7-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">vips               </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-7-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-8-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">vips-7.14          </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-8-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-9-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">find</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_mosaic        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-9-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-10-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">mergeup            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-10-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-11-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">cooc</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_features      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-11-2"  
doc/src/vipsmanualse17.html:class="td11">Calculate features of a co-occurence matrix                </td></tr><tr  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-12-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">cooc </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-12-2"  
doc/src/vipsmanualse17.html:class="td11">Calculate a co-occurence matrix</td>
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-13-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">glds</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_features      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-13-2"  
doc/src/vipsmanualse17.html:class="td11">Calculate features of a grey-level distribution matrix  </td>
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-14-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">glds               </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-14-2"  
doc/src/vipsmanualse17.html:class="td11">Calculate a grey-level distribution matrix                    </td>
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-15-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">simcontr           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-15-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-16-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">sines              </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-16-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-17-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">spatres            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-17-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-18-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">squares            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-18-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-19-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-19-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">batch</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_crop         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-19-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-20-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-20-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">batch</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_image</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_convert</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-20-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-21-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-21-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">batch</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_rubber</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_sheet </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-21-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-22-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-22-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">light</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_correct      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-22-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-23-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-23-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">mitsub             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-23-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-24-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-24-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">shrink</span><span 
doc/src/vipsmanualse17.html:class="pcrr7t-">_width       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-24-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-25-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-25-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">vdump              </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-25-2"  
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-26-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-26-1"  
doc/src/vipsmanualse17.html:class="pcrr7t-">vips2dj            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-26-2"  
doc/src/vipsmanualse17.html:class="td11">VIPS to high-quality colour Postscript                        </td>
doc/src/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-27-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-27-1"  
doc/src/vipsmanualse17.html:class="content">Miscellaneous programs</span></div><!--tex4ht:label?: x25-1050011 -->
doc/src/vipsmanualse17.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse17.html:<!--l. 1--><p class="indent" >  <a 
doc/src/applintro.tex:All the command-line VIPS operations will print help text too. For example:
doc/src/fred:This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
doc/src/fred: %&-line parsing enabled.
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/book.cls
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/bk10.clo))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/geometry/geometry.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty))
doc/src/fred:(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/pdftex-def/pdftex.def)))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/color.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/times.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty) (./mydefs.tex)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/ot1ptm.fd) [1{/var/lib/texmf/fonts/m
doc/src/fred:LaTeX Warning: Reference `fg:invert-c++' on page 1 undefined on input line 17.
doc/src/fred:LaTeX Warning: Reference `fg:invert-py' on page 1 undefined on input line 17.
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/ot1pcr.fd)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/omsptm.fd)
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 41--47
doc/src/fred:[]\OT1/ptm/m/n/10 Image pro-cess-ing op-er-a-tions are mem-ber
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 41--47
doc/src/fred:\OT1/ptm/m/n/10 func-tions of the []\OT1/pcr/m/n/10 VImage \OT1/ptm/m/n/10 clas
doc/src/fred:s --- here,
doc/src/fred:Underfull \hbox (badness 1418) in paragraph at lines 41--47
doc/src/fred:\OT1/ptm/m/n/10 ob-ject us-ing the first ar-gu-ment to ini-tialise it
doc/src/fred:Underfull \hbox (badness 1189) in paragraph at lines 41--47
doc/src/fred:\OT1/ptm/m/n/10 mem-ber func-tion []\OT1/pcr/m/n/10 write()\OT1/ptm/m/n/10 , wh
doc/src/fred:Underfull \hbox (badness 2662) in paragraph at lines 49--52
doc/src/fred:[]\OT1/ptm/m/n/10 The VIPS C++ API uses ex-cep-tions --- the
doc/src/fred:Overfull \hbox (13.8057pt too wide) in paragraph at lines 57--57
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 134--141
doc/src/fred:\OT1/ptm/m/n/10 This type of im-age has \OT1/pcr/m/n/10 Coding \OT1/ptm/m/n/10 
doc/src/fred:Underfull \hbox (badness 4454) in paragraph at lines 134--141
doc/src/fred:\OT1/pcr/m/n/10 IM[]CODING[]NONE\OT1/ptm/m/n/10 . The header is then fol-lowed
doc/src/fred:Underfull \hbox (badness 1009) in paragraph at lines 142--146
doc/src/fred:\OT1/ptm/m/n/10 first, as in SPARC and 680x0 ma-chines, or least-
doc/src/fred:Underfull \hbox (badness 7415) in paragraph at lines 158--162
doc/src/fred:[]\OT1/ptm/m/n/10 This for-mat is a lit-tle awk-ward to pro-cess.
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 158--162
doc/src/fred:\OT1/ptm/m/n/10 Some VIPS func-tions can work di-rectly on
doc/src/fred:Underfull \hbox (badness 1082) in paragraph at lines 158--162
doc/src/fred:\OT1/pcr/m/n/10 IM[]CODING[]LABQ \OT1/ptm/m/n/10 im-ages (\OT1/pcr/m/n/10 im[]e
doc/src/fred:Underfull \hbox (badness 1603) in paragraph at lines 169--173
doc/src/fred:\OT1/ptm/m/n/10 im-ages (\OT1/pcr/m/n/10 im[]extract[]area()\OT1/ptm/m/n/10 , f
doc/src/fred:or ex-am-ple), but
doc/src/fred:Underfull \hbox (badness 1215) in paragraph at lines 31--33
doc/src/fred:[]\OT1/ptm/m/n/10 As the []\OT1/pcr/m/n/10 "w" \OT1/ptm/m/n/10 mode, but pix-el
doc/src/fred:s writ-ten to the
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 154--158
doc/src/fred:Underfull \hbox (badness 1810) in paragraph at lines 154--158
doc/src/fred:Underfull \hbox (badness 1412) in paragraph at lines 167--170
doc/src/fred:[]\OT1/ptm/m/n/10 You can get and set ex-tra meta-data fields with
doc/src/fred:Overfull \hbox (77.80566pt too wide) in paragraph at lines 175--175
doc/src/fred:Overfull \hbox (107.80566pt too wide) in paragraph at lines 175--175
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 175--175
doc/src/fred:Overfull \hbox (35.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (65.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (113.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (47.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (65.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (95.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (59.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 213--217
doc/src/fred:[]\OT1/ptm/m/n/10 The Python in-ter-face adds []\OT1/pcr/m/n/10 tobuffer \OT1/p
doc/src/fred:Underfull \hbox (badness 3646) in paragraph at lines 213--217
doc/src/fred:[]\OT1/pcr/m/n/10 tostring\OT1/ptm/m/n/10 . These op-er-a-tions call []\OT1/pcr
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 229--229
doc/src/fred:[]\OT1/pcr/m/n/10 VImage.PIL_mode_from_vips (vips-image) ->[] 
doc/src/fred:Underfull \hbox (badness 6047) in paragraph at lines 310--312
doc/src/fred:T1/ptm/m/n/10 types be-come
doc/src/fred:Underfull \hbox (badness 7362) in paragraph at lines 314--318
doc/src/fred:[]\OT1/ptm/m/n/10 Several C API func-tions can map to the
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 314--318
doc/src/fred:\OT1/ptm/m/n/10 same C++ API mem-ber. For ex-am-ple,
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 314--318
doc/src/fred:Underfull \hbox (badness 2142) in paragraph at lines 364--366
doc/src/fred:\OT1/ptm/m/n/10 Two type con-ver-sions are de-fined: you can cast
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 97--97
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 107--107
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 136--136
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 136--136
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 163--163
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 163--163
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 51--51
doc/src/fred:Overfull \hbox (35.80566pt too wide) in paragraph at lines 76--76
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 23--23
doc/src/fred:Overfull \hbox (29.80566pt too wide) in paragraph at lines 38--38
doc/src/fred:Underfull \hbox (badness 2073) in paragraph at lines 43--46
doc/src/fred:\OT1/ptm/m/n/10 the GOp-tion stuff is op-tional and just lets VIPS
doc/src/fred:Underfull \hbox (badness 3977) in paragraph at lines 150--153
doc/src/fred:\OT1/ptm/m/n/10 You can ac-cess header fields ei-ther di-rectly (as
doc/src/fred:Underfull \hbox (badness 2057) in paragraph at lines 160--163
doc/src/fred:Underfull \hbox (badness 1824) in paragraph at lines 214--221
doc/src/fred:\OT1/ptm/m/n/10 the im-age is writ-ten with []\OT1/pcr/m/n/10 im_vips2jpg()\OT1
doc/src/fred:Underfull \hbox (badness 1527) in paragraph at lines 214--221
doc/src/fred:\OT1/ptm/m/n/10 If the file-name ends with []\OT1/pcr/m/n/10 ".pbm"\OT1/ptm/m/n
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 214--221
doc/src/fred:\OT1/ptm/m/n/10 or []\OT1/pcr/m/n/10 ".ppm"\OT1/ptm/m/n/10 , the im-age is writ
doc/src/fred:-ten us-ing
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 214--221
doc/src/fred:[]\OT1/pcr/m/n/10 im_vips2ppm()\OT1/ptm/m/n/10 . If the file-name ends
doc/src/fred:Underfull \hbox (badness 6428) in paragraph at lines 214--221
doc/src/fred:\OT1/ptm/m/n/10 with []\OT1/pcr/m/n/10 ".png"\OT1/ptm/m/n/10 , the im-age is wr
doc/src/fred:it-ten us-ing
doc/src/fred:Underfull \hbox (badness 1360) in paragraph at lines 271--276
doc/src/fred:\OT1/ptm/m/n/10 Applications may dis-play this string to give users
doc/src/fred:Underfull \hbox (badness 6348) in paragraph at lines 271--276
doc/src/fred:\OT1/ptm/m/n/10 feed-back about the cause of the er-ror. The
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 271--276
doc/src/fred:\OT1/ptm/m/n/10 VIPS exit func-tion, []\OT1/pcr/m/n/10 error_exit()\OT1/ptm/m/n
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 418--418
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 429--429
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 434--438
doc/src/fred:Underfull \hbox (badness 2460) in paragraph at lines 434--438
doc/src/fred:[]\OT1/pcr/m/n/10 im_meta_get() \OT1/ptm/m/n/10 to at-tach ar-bi-trary []\OT1/p
doc/src/fred:Underfull \hbox (badness 5460) in paragraph at lines 439--442
doc/src/fred:[]\OT1/ptm/m/n/10 You can test for a field be-ing present with
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 466--468
doc/src/fred:[]\OT1/ptm/m/n/10 You read an im-age's his-tory with
doc/src/fred:Underfull \hbox (badness 1642) in paragraph at lines 466--468
doc/src/fred:[]\OT1/pcr/m/n/10 im_history_get()\OT1/ptm/m/n/10 . It re-turns the en-tire his
doc/src/fred:-
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 590--592
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 627--627
doc/src/fred:[]\OT1/pcr/m/n/10 type-name *IM_NEW( IMAGE *, type-name )[] 
doc/src/fred:Overfull \hbox (53.80566pt too wide) in paragraph at lines 635--635
doc/src/fred:[]\OT1/pcr/m/n/10 type-name *IM_ARRAY( IMAGE *, int, type-name )[] 
doc/src/fred:Underfull \hbox (badness 2512) in paragraph at lines 53--55
doc/src/fred:[]\OT1/ptm/m/n/10 The func-tion should take a sin-gle ar-gu-ment:
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 53--55
doc/src/fred:\OT1/ptm/m/n/10 a pointer to a []\OT1/pcr/m/n/10 NULL\OT1/ptm/m/n/10 -terminate
doc/src/fred:d ar-ray of
doc/src/fred:Underfull \hbox (badness 3503) in paragraph at lines 76--79
doc/src/fred:\OT1/ptm/m/n/10 macros de-fined in []\OT1/pcr/m/n/10 <vips/dispatch.h> \OT1/ptm
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 517--517
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 639--639
doc/src/fred:Underfull \hbox (badness 1087) in paragraph at lines 641--641
doc/src/fred:[]\OT1/ptm/b/n/10 Building ar-gu-ment struc-tures and run-ning com-
doc/src/fred:Overfull \hbox (1.61133pt too wide) in paragraph at lines 118--118
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 135--138
doc/src/fred:[]\OT1/ptm/m/n/10 You find a for-mat to write a file with
doc/src/fred:Underfull \hbox (badness 2460) in paragraph at lines 135--138
doc/src/fred:[]\OT1/pcr/m/n/10 vips_format_for_name()\OT1/ptm/m/n/10 . This re-turns the
doc/src/fred:Underfull \hbox (badness 1097) in paragraph at lines 135--138
doc/src/fred:\OT1/ptm/m/n/10 first for-mat with a save func-tion whose suf-fix list
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 141--1
doc/src/fred:\OT1/ptm/m/n/10 A pair of con-ve-nience func-tions,
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 141--1
doc/src/fred:Underfull \hbox (badness 2368) in paragraph at lines 141--1
doc/src/fred:[]\OT1/pcr/m/n/10 vips_format_read()\OT1/ptm/m/n/10 , will copy an im-age to
doc/src/fred:Overfull \hbox (119.80566pt too wide) in paragraph at lines 14--14
doc/src/fred:Overfull \hbox (47.80566pt too wide) in paragraph at lines 14--14
doc/src/fred:Underfull \hbox (badness 3009) in paragraph at lines 26--29
doc/src/fred:\OT1/ptm/m/n/10 de-tails, but briefly, an in-ter-po-la-tor is a sub-class
doc/src/fred:Underfull \hbox (badness 1297) in paragraph at lines 35--39
doc/src/fred:[]\OT1/ptm/m/n/10 A func-tion []\OT1/pcr/m/n/10 get_window_size() \OT1/ptm/m/n/
doc/src/fred:10 which re-
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 102--102
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 35--35
doc/src/fred:Underfull \hbox (badness 6641) in paragraph at lines 37--42
doc/src/fred:\OT1/ptm/m/n/10 These macros cal-cu-late []\OT1/pcr/m/n/10 sizeof() \OT1/ptm/m/
doc/src/fred:n/10 a band el-
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 37--42
doc/src/fred:\OT1/ptm/m/n/10 e-ment, a pel and a hor-i-zon-tal line of pels.
doc/src/fred:Underfull \hbox (badness 3333) in paragraph at lines 37--42
doc/src/fred:[]\OT1/pcr/m/n/10 IM_IMAGE_N_ELEMENTS \OT1/ptm/m/n/10 re-turns the num-ber of
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 119--119
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 167--167
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 176--176
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 259--259
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 261--262
doc/src/fred:[]\OT1/ptm/m/n/10 See \OMS/cmsy/m/n/10 x[][] \OT1/ptm/m/n/10 for an ex-pla-na-t
doc/src/fred:Underfull \hbox (badness 6445) in paragraph at lines 266--271
doc/src/fred:\OT1/ptm/m/n/10 Most im-age pro-cess-ing op-er-a-tions in the VIPS
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 266--271
doc/src/fred:\OT1/ptm/m/n/10 li-brary can op-er-ate on im-ages of any type
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 361--361
doc/src/fred:Underfull \hbox (badness 1337) in paragraph at lines 10--13
doc/src/fred:\OT1/ptm/m/n/10 PIO is a very gen-eral im-age IO sys-tem, and be-
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 42--42
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 42--42
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 42--42
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 51--51
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:[]   \OT1/pcr/m/n/10 if( in->BandFmt != IM_BANDFMT_UCHAR ||[] 
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:[]      \OT1/pcr/m/n/10 in->Coding != IM_CODING_NONE ) {[] 
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 121--121
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:[]   \OT1/pcr/m/n/10 if( in->BandFmt != IM_BANDFMT_UCHAR ||[] 
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:[]      \OT1/pcr/m/n/10 in->Coding != IM_CODING_NONE ) {[] 
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:[]   \OT1/pcr/m/n/10 /* Process! The first user-parameter[] 
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 179--179
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 187--187
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:[]   \OT1/pcr/m/n/10 if( i1->BandFmt != IM_BANDFMT_UCHAR ||[] 
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:[]      \OT1/pcr/m/n/10 i2->BandFmt != IM_BANDFMT_UCHAR ||[] 
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:[]   \OT1/pcr/m/n/10 /* Process! The first user-parameter[] 
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:[]    \OT1/pcr/m/n/10 * invec is a NULL-terminated array of[] 
doc/src/fred:Underfull \hbox (badness 4859) in paragraph at lines 293--298
doc/src/fred:\OT1/ptm/m/n/10 A small li-brary of C func-tions are also avail-
doc/src/fred:Underfull \hbox (badness 1297) in paragraph at lines 293--298
doc/src/fred:\OT1/ptm/m/n/10 able for []\OT1/pcr/m/n/10 Rect \OT1/ptm/m/n/10 al-ge-bra, see 
doc/src/fred:the man-ual pages for
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 332--332
doc/src/fred:Underfull \hbox (badness 7203) in paragraph at lines 352--358
doc/src/fred:\OT1/ptm/m/n/10 to the right along the line of pels, pro-vided
doc/src/fred:Underfull \hbox (badness 7814) in paragraph at lines 352--358
doc/src/fred:\OT1/ptm/m/n/10 you stay strictly within []\OT1/pcr/m/n/10 reg->valid\OT1/ptm/m
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 365--365
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 365--365
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 488--488
doc/src/fred:Underfull \hbox (badness 1028) in paragraph at lines 493--495
doc/src/fred:\OT1/ptm/m/n/10 ages but pro-duce no im-age out-put, VIPS pro-vides
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 644--647
doc/src/fred:[]\OT1/ptm/m/n/10 There are a cou-ple of vari-a-tions on
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 644--647
doc/src/fred:\OT1/ptm/m/n/10 to force writ-ing to a par-tic-u-lar place, and
doc/src/fred:Underfull \hbox (badness 2772) in paragraph at lines 644--647
doc/src/fred:[]\OT1/pcr/m/n/10 im_prepare_thread() \OT1/ptm/m/n/10 to use threaded eval-u-
doc/src/fred:Underfull \hbox (badness 1173) in paragraph at lines 672--677
doc/src/fred:[]\OT1/ptm/m/n/10 Here is []\OT1/pcr/m/n/10 invert()\OT1/ptm/m/n/10 , rewrit-te
doc/src/fred:Underfull \hbox (badness 1817) in paragraph at lines 672--677
doc/src/fred:\OT1/ptm/m/n/10 and stop func-tions pro-vided by the VIPS li-brary:
doc/src/fred:Underfull \hbox (badness 1292) in paragraph at lines 697--700
doc/src/fred:\OT1/ptm/m/n/10 only one in-put im-age. See the man-ual page for
doc/src/fred:Overfull \hbox (41.80566pt too wide) in paragraph at lines 819--819
doc/src/fred:Underfull \hbox (badness 2261) in paragraph at lines 834--838
doc/src/fred:\OT1/ptm/m/n/10 cess to a struct con-tain-ing in-for-ma-tion about the
doc/src/fred:Underfull \hbox (badness 5077) in paragraph at lines 834--838
doc/src/fred:\OT1/ptm/m/n/10 progress of eval-u-a-tion, use-ful for user-interfaces
doc/src/fred:Underfull \hbox (badness 2521) in paragraph at lines 834--838
doc/src/fred:\OT1/ptm/m/n/10 built on top of VIPS. See the man-ual page for
doc/src/fred:Underfull \hbox (badness 4765) in paragraph at lines 1--1
doc/src/fred:[]\OT1/ptm/b/n/14.4 Programming in-place func-
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 56--56
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 56--56
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 51--51
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 51--51
doc/src/fred:Overfull \hbox (49.61133pt too wide) in paragraph at lines 73--73
doc/src/fred:[]\OT1/pcr/m/n/10 im_maxpos_avg        - position of maximum value of image, av
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 179--183
doc/src/fred:[]\OT1/ptm/m/n/10 This for-mat rep-re-sents co-or-di-nates
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 179--183
doc/src/fred:/n/10 space as a three- band
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 179--183
doc/src/fred:[]\OT1/pcr/m/n/10 IM_BANDFMT_SHORT \OT1/ptm/m/n/10 im-age, scaled to fit
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_Lab2XYZ_temp      - convert Lab to XYZ, with a specified c
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_XYZ2Lab_temp      - convert XYZ to Lab, with a specified c
doc/src/fred:Overfull \hbox (1.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_dECMC_fromdisp    - calculate delta-E CMC(1:1) for two dis
doc/src/fred:Overfull \hbox (67.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_export        - convert a float LAB to an 8-bit device
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_export_depth  - convert a float LAB to device space wi
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_import        - convert a device image to float LAB wi
doc/src/fred:Overfull \hbox (67.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_import_embedded - convert a device image to float LAB 
doc/src/fred:Overfull \hbox (49.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_transform     - convert between two device images with
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 291--293
doc/src/fred:[][]\OT1/pcr/m/n/10 gbandjoin \OT1/ptm/m/n/10 and the C func-tion
doc/src/fred:Underfull \hbox (badness 4291) in paragraph at lines 291--293
doc/src/fred:[]\OT1/pcr/m/n/10 im_gbandjoin() \OT1/ptm/m/n/10 will do a band-wise join of
doc/src/fred:Overfull \hbox (31.61133pt too wide) in paragraph at lines 341--341
doc/src/fred:[]\OT1/pcr/m/n/10 im_insert_noexpand   - insert sub-image into main image at po
doc/src/fred:Underfull \hbox (badness 2150) in paragraph at lines 371--374
doc/src/fred:\OT1/ptm/m/n/10 for con-vo-lu-tions, and for some colour-space con-
doc/src/fred:Underfull \hbox (badness 1997) in paragraph at lines 371--374
doc/src/fred:\OT1/ptm/m/n/10 ver-sions. There are two types of ma-trix: in-te-
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 452--456
doc/src/fred:[]\OT1/ptm/m/n/10 Next, are the build func-tions.
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 465--467
doc/src/fred:Overfull \hbox (1.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_convsub           - convolve uchar to uchar, sub-sampling 
doc/src/fred:Overfull \hbox (31.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_gaussnoise        - generate image of gaussian noise with 
doc/src/fred:Overfull \hbox (19.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_gradcor           - non-normalised correlation of gradient
doc/src/fred:Overfull \hbox (91.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_gradcor_raw       - non-normalised correlation of gradient
doc/src/fred:Overfull \hbox (19.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_phasecor_fft      - non-normalised correlation of gradient
doc/src/fred:Overfull \hbox (19.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_rank_raw          - rank filter nth element of xsize/ysize
doc/src/fred:Overfull \hbox (31.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_spcor_raw         - normalised correlation of in2 within i
doc/src/fred:Underfull \hbox (badness 2478) in paragraph at lines 550--557
doc/src/fred:\OT1/ptm/m/n/10 form and in-verse trans-form of an im-age. Also
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 725--733
doc/src/fred:Underfull \hbox (badness 1721) in paragraph at lines 725--733
doc/src/fred:[]\OT1/pcr/m/n/10 im_tbmosaic()\OT1/ptm/m/n/10 . These use the two low-level
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 734--737
doc/src/fred:[]\OT1/ptm/m/n/10 The func-tions []\OT1/pcr/m/n/10 im_lrmosaic1() \OT1/ptm/m/n/
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 734--737
doc/src/fred:[]\OT1/pcr/m/n/10 im_tbmosaic1() \OT1/ptm/m/n/10 are first-order ana-logues of
doc/src/fred:Underfull \hbox (badness 1681) in paragraph at lines 738--744
doc/src/fred:Underfull \hbox (badness 4765) in paragraph at lines 738--744
doc/src/fred:\OT1/ptm/m/n/10 to re-balance a mo-saic which has been as-sem-
doc/src/fred:Underfull \hbox (badness 2582) in paragraph at lines 738--744
doc/src/fred:\OT1/ptm/m/n/10 bled with these func-tions. It will gen-er-ally do
doc/src/fred:Underfull \hbox (badness 1275) in paragraph at lines 738--744
doc/src/fred:\OT1/ptm/m/n/10 a bet-ter job than the low-level bal-ancer built into
doc/src/fred:Overfull \hbox (25.61133pt too wide) in paragraph at lines 769--769
doc/src/fred:[]\OT1/pcr/m/n/10 im_global_balancef   - automatically rebuild mosaic with bala
doc/src/fred:Overfull \hbox (25.61133pt too wide) in paragraph at lines 769--769
doc/src/fred:[]\OT1/pcr/m/n/10 im_maxpos_subpel     - subpixel position of maximum of (phase
doc/src/fred:Overfull \hbox (25.61133pt too wide) in paragraph at lines 813--813
doc/src/fred:[]\OT1/pcr/m/n/10 im_eye             - generate IM_BANDFMT_UCHAR [0,255] freque
doc/src/fred:Overfull \hbox (19.61133pt too wide) in paragraph at lines 813--813
doc/src/fred:[]\OT1/pcr/m/n/10 im_feye            - generate IM_BANDFMT_FLOAT [-1,1] frequen
doc/src/fred:LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
doc/src/fred:(see the transcript file for additional information){/usr/share/texmf-texlive/f
doc/src/fred:onts/enc/dvips/base/8r.enc}</usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmm
doc/src/fred:i10.pfb></usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmr10.pfb></usr/share/
doc/src/fred:texmf-texlive/fonts/type1/bluesky/cm/cmr7.pfb></usr/share/texmf-texlive/fonts/t
doc/src/fred:ype1/bluesky/cm/cmsy10.pfb></usr/share/texmf-texlive/fonts/type1/bluesky/cm/cms
doc/src/fred:y7.pfb></usr/share/texmf-texlive/fonts/type1/urw/courier/ucrb8a.pfb></usr/share
doc/src/fred:/texmf-texlive/fonts/type1/urw/courier/ucrr8a.pfb></usr/share/texmf-texlive/fon
doc/src/fred:ts/type1/urw/courier/ucrro8a.pfb></usr/share/texmf-texlive/fonts/type1/urw/time
doc/src/fred:s/utmb8a.pfb></usr/share/texmf-texlive/fonts/type1/urw/times/utmr8a.pfb></usr/s
doc/src/fred:hare/texmf-texlive/fonts/type1/urw/times/utmr8a.pfb></usr/share/texmf-texlive/f
doc/src/fred:This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
doc/src/fred: %&-line parsing enabled.
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/book.cls
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/bk10.clo))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/geometry/geometry.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty))
doc/src/fred:(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/pdftex-def/pdftex.def)))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/color.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/times.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty) (./mydefs.tex)
doc/src/fred:(./vipsmanual.aux) (/usr/share/texmf-texlive/tex/latex/psnfss/ot1ptm.fd)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/ot1pcr.fd) [3] [4]) [5] [6]
doc/src/fred:(./cppintro.tex (/usr/share/texmf-texlive/tex/latex/psnfss/omsptm.fd)
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 41--47
doc/src/fred:[]\OT1/ptm/m/n/10 Image pro-cess-ing op-er-a-tions are mem-ber
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 41--47
doc/src/fred:\OT1/ptm/m/n/10 func-tions of the []\OT1/pcr/m/n/10 VImage \OT1/ptm/m/n/10 clas
doc/src/fred:s --- here,
doc/src/fred:Underfull \hbox (badness 1418) in paragraph at lines 41--47
doc/src/fred:\OT1/ptm/m/n/10 ob-ject us-ing the first ar-gu-ment to ini-tialise it
doc/src/fred:Underfull \hbox (badness 1189) in paragraph at lines 41--47
doc/src/fred:\OT1/ptm/m/n/10 mem-ber func-tion []\OT1/pcr/m/n/10 write()\OT1/ptm/m/n/10 , wh
doc/src/fred:Underfull \hbox (badness 2662) in paragraph at lines 49--52
doc/src/fred:[]\OT1/ptm/m/n/10 The VIPS C++ API uses ex-cep-tions --- the
doc/src/fred:Overfull \hbox (13.8057pt too wide) in paragraph at lines 57--57
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 134--141
doc/src/fred:\OT1/ptm/m/n/10 This type of im-age has \OT1/pcr/m/n/10 Coding \OT1/ptm/m/n/10 
doc/src/fred:Underfull \hbox (badness 4454) in paragraph at lines 134--141
doc/src/fred:\OT1/pcr/m/n/10 IM[]CODING[]NONE\OT1/ptm/m/n/10 . The header is then fol-lowed
doc/src/fred:Underfull \hbox (badness 1009) in paragraph at lines 142--146
doc/src/fred:\OT1/ptm/m/n/10 first, as in SPARC and 680x0 ma-chines, or least-
doc/src/fred:Underfull \hbox (badness 7415) in paragraph at lines 158--162
doc/src/fred:[]\OT1/ptm/m/n/10 This for-mat is a lit-tle awk-ward to pro-cess.
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 158--162
doc/src/fred:\OT1/ptm/m/n/10 Some VIPS func-tions can work di-rectly on
doc/src/fred:Underfull \hbox (badness 1082) in paragraph at lines 158--162
doc/src/fred:\OT1/pcr/m/n/10 IM[]CODING[]LABQ \OT1/ptm/m/n/10 im-ages (\OT1/pcr/m/n/10 im[]e
doc/src/fred:Underfull \hbox (badness 1603) in paragraph at lines 169--173
doc/src/fred:\OT1/ptm/m/n/10 im-ages (\OT1/pcr/m/n/10 im[]extract[]area()\OT1/ptm/m/n/10 , f
doc/src/fred:or ex-am-ple), but
doc/src/fred:Underfull \hbox (badness 1215) in paragraph at lines 31--33
doc/src/fred:[]\OT1/ptm/m/n/10 As the []\OT1/pcr/m/n/10 "w" \OT1/ptm/m/n/10 mode, but pix-el
doc/src/fred:s writ-ten to the
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 154--158
doc/src/fred:Underfull \hbox (badness 1810) in paragraph at lines 154--158
doc/src/fred:Underfull \hbox (badness 1412) in paragraph at lines 167--170
doc/src/fred:[]\OT1/ptm/m/n/10 You can get and set ex-tra meta-data fields with
doc/src/fred:Overfull \hbox (77.80566pt too wide) in paragraph at lines 175--175
doc/src/fred:Overfull \hbox (107.80566pt too wide) in paragraph at lines 175--175
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 175--175
doc/src/fred:Overfull \hbox (35.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (65.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (113.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (47.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (65.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (95.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Overfull \hbox (59.80566pt too wide) in paragraph at lines 194--194
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 213--217
doc/src/fred:[]\OT1/ptm/m/n/10 The Python in-ter-face adds []\OT1/pcr/m/n/10 tobuffer \OT1/p
doc/src/fred:Underfull \hbox (badness 3646) in paragraph at lines 213--217
doc/src/fred:[]\OT1/pcr/m/n/10 tostring\OT1/ptm/m/n/10 . These op-er-a-tions call []\OT1/pcr
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 229--229
doc/src/fred:[]\OT1/pcr/m/n/10 VImage.PIL_mode_from_vips (vips-image) ->[] 
doc/src/fred:Underfull \hbox (badness 6047) in paragraph at lines 310--312
doc/src/fred:T1/ptm/m/n/10 types be-come
doc/src/fred:Underfull \hbox (badness 7362) in paragraph at lines 314--318
doc/src/fred:[]\OT1/ptm/m/n/10 Several C API func-tions can map to the
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 314--318
doc/src/fred:\OT1/ptm/m/n/10 same C++ API mem-ber. For ex-am-ple,
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 314--318
doc/src/fred:Underfull \hbox (badness 2142) in paragraph at lines 364--366
doc/src/fred:\OT1/ptm/m/n/10 Two type con-ver-sions are de-fined: you can cast
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 97--97
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 107--107
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 136--136
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 136--136
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 163--163
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 163--163
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 51--51
doc/src/fred:Overfull \hbox (35.80566pt too wide) in paragraph at lines 76--76
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 23--23
doc/src/fred:Overfull \hbox (29.80566pt too wide) in paragraph at lines 38--38
doc/src/fred:Underfull \hbox (badness 3977) in paragraph at lines 150--153
doc/src/fred:\OT1/ptm/m/n/10 You can ac-cess header fields ei-ther di-rectly (as
doc/src/fred:Underfull \hbox (badness 2057) in paragraph at lines 160--163
doc/src/fred:Underfull \hbox (badness 1824) in paragraph at lines 214--221
doc/src/fred:\OT1/ptm/m/n/10 the im-age is writ-ten with []\OT1/pcr/m/n/10 im_vips2jpg()\OT1
doc/src/fred:Underfull \hbox (badness 1527) in paragraph at lines 214--221
doc/src/fred:\OT1/ptm/m/n/10 If the file-name ends with []\OT1/pcr/m/n/10 ".pbm"\OT1/ptm/m/n
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 214--221
doc/src/fred:\OT1/ptm/m/n/10 or []\OT1/pcr/m/n/10 ".ppm"\OT1/ptm/m/n/10 , the im-age is writ
doc/src/fred:-ten us-ing
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 214--221
doc/src/fred:[]\OT1/pcr/m/n/10 im_vips2ppm()\OT1/ptm/m/n/10 . If the file-name ends
doc/src/fred:Underfull \hbox (badness 6428) in paragraph at lines 214--221
doc/src/fred:\OT1/ptm/m/n/10 with []\OT1/pcr/m/n/10 ".png"\OT1/ptm/m/n/10 , the im-age is wr
doc/src/fred:it-ten us-ing
doc/src/fred:Underfull \hbox (badness 1360) in paragraph at lines 271--276
doc/src/fred:\OT1/ptm/m/n/10 Applications may dis-play this string to give users
doc/src/fred:Underfull \hbox (badness 6348) in paragraph at lines 271--276
doc/src/fred:\OT1/ptm/m/n/10 feed-back about the cause of the er-ror. The
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 271--276
doc/src/fred:\OT1/ptm/m/n/10 VIPS exit func-tion, []\OT1/pcr/m/n/10 error_exit()\OT1/ptm/m/n
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 418--418
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 429--429
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 434--438
doc/src/fred:Underfull \hbox (badness 2460) in paragraph at lines 434--438
doc/src/fred:[]\OT1/pcr/m/n/10 im_meta_get() \OT1/ptm/m/n/10 to at-tach ar-bi-trary []\OT1/p
doc/src/fred:Underfull \hbox (badness 5460) in paragraph at lines 439--442
doc/src/fred:[]\OT1/ptm/m/n/10 You can test for a field be-ing present with
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 466--468
doc/src/fred:[]\OT1/ptm/m/n/10 You read an im-age's his-tory with
doc/src/fred:Underfull \hbox (badness 1642) in paragraph at lines 466--468
doc/src/fred:[]\OT1/pcr/m/n/10 im_history_get()\OT1/ptm/m/n/10 . It re-turns the en-tire his
doc/src/fred:-
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 590--592
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 627--627
doc/src/fred:[]\OT1/pcr/m/n/10 type-name *IM_NEW( IMAGE *, type-name )[] 
doc/src/fred:Overfull \hbox (53.80566pt too wide) in paragraph at lines 635--635
doc/src/fred:[]\OT1/pcr/m/n/10 type-name *IM_ARRAY( IMAGE *, int, type-name )[] 
doc/src/fred:Underfull \hbox (badness 2512) in paragraph at lines 53--55
doc/src/fred:[]\OT1/ptm/m/n/10 The func-tion should take a sin-gle ar-gu-ment:
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 53--55
doc/src/fred:\OT1/ptm/m/n/10 a pointer to a []\OT1/pcr/m/n/10 NULL\OT1/ptm/m/n/10 -terminate
doc/src/fred:d ar-ray of
doc/src/fred:Underfull \hbox (badness 3503) in paragraph at lines 76--79
doc/src/fred:\OT1/ptm/m/n/10 macros de-fined in []\OT1/pcr/m/n/10 <vips/dispatch.h> \OT1/ptm
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 517--517
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 639--639
doc/src/fred:Underfull \hbox (badness 1087) in paragraph at lines 641--641
doc/src/fred:[]\OT1/ptm/b/n/10 Building ar-gu-ment struc-tures and run-ning com-
doc/src/fred:Overfull \hbox (1.61133pt too wide) in paragraph at lines 118--118
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 135--138
doc/src/fred:[]\OT1/ptm/m/n/10 You find a for-mat to write a file with
doc/src/fred:Underfull \hbox (badness 2460) in paragraph at lines 135--138
doc/src/fred:[]\OT1/pcr/m/n/10 vips_format_for_name()\OT1/ptm/m/n/10 . This re-turns the
doc/src/fred:Underfull \hbox (badness 1097) in paragraph at lines 135--138
doc/src/fred:\OT1/ptm/m/n/10 first for-mat with a save func-tion whose suf-fix list
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 141--1
doc/src/fred:\OT1/ptm/m/n/10 A pair of con-ve-nience func-tions,
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 141--1
doc/src/fred:Underfull \hbox (badness 2368) in paragraph at lines 141--1
doc/src/fred:[]\OT1/pcr/m/n/10 vips_format_read()\OT1/ptm/m/n/10 , will copy an im-age to
doc/src/fred:Overfull \hbox (119.80566pt too wide) in paragraph at lines 14--14
doc/src/fred:Overfull \hbox (47.80566pt too wide) in paragraph at lines 14--14
doc/src/fred:Underfull \hbox (badness 3009) in paragraph at lines 26--29
doc/src/fred:\OT1/ptm/m/n/10 de-tails, but briefly, an in-ter-po-la-tor is a sub-class
doc/src/fred:Underfull \hbox (badness 1297) in paragraph at lines 35--39
doc/src/fred:[]\OT1/ptm/m/n/10 A func-tion []\OT1/pcr/m/n/10 get_window_size() \OT1/ptm/m/n/
doc/src/fred:10 which re-
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 102--102
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 35--35
doc/src/fred:Underfull \hbox (badness 6641) in paragraph at lines 37--42
doc/src/fred:\OT1/ptm/m/n/10 These macros cal-cu-late []\OT1/pcr/m/n/10 sizeof() \OT1/ptm/m/
doc/src/fred:n/10 a band el-
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 37--42
doc/src/fred:\OT1/ptm/m/n/10 e-ment, a pel and a hor-i-zon-tal line of pels.
doc/src/fred:Underfull \hbox (badness 3333) in paragraph at lines 37--42
doc/src/fred:[]\OT1/pcr/m/n/10 IM_IMAGE_N_ELEMENTS \OT1/ptm/m/n/10 re-turns the num-ber of
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 119--119
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 167--167
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 176--176
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 259--259
doc/src/fred:Underfull \hbox (badness 6445) in paragraph at lines 266--271
doc/src/fred:\OT1/ptm/m/n/10 Most im-age pro-cess-ing op-er-a-tions in the VIPS
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 266--271
doc/src/fred:\OT1/ptm/m/n/10 li-brary can op-er-ate on im-ages of any type
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 361--361
doc/src/fred:Underfull \hbox (badness 1337) in paragraph at lines 10--13
doc/src/fred:\OT1/ptm/m/n/10 PIO is a very gen-eral im-age IO sys-tem, and be-
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 42--42
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 42--42
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 42--42
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 51--51
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:[]   \OT1/pcr/m/n/10 if( in->BandFmt != IM_BANDFMT_UCHAR ||[] 
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:[]      \OT1/pcr/m/n/10 in->Coding != IM_CODING_NONE ) {[] 
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 96--96
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 121--121
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:[]   \OT1/pcr/m/n/10 if( in->BandFmt != IM_BANDFMT_UCHAR ||[] 
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:[]      \OT1/pcr/m/n/10 in->Coding != IM_CODING_NONE ) {[] 
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:[]   \OT1/pcr/m/n/10 /* Process! The first user-parameter[] 
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 152--152
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 179--179
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 187--187
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:[]   \OT1/pcr/m/n/10 if( i1->BandFmt != IM_BANDFMT_UCHAR ||[] 
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:[]      \OT1/pcr/m/n/10 i2->BandFmt != IM_BANDFMT_UCHAR ||[] 
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:[]   \OT1/pcr/m/n/10 /* Process! The first user-parameter[] 
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 256--256
doc/src/fred:[]    \OT1/pcr/m/n/10 * invec is a NULL-terminated array of[] 
doc/src/fred:Underfull \hbox (badness 4859) in paragraph at lines 293--298
doc/src/fred:\OT1/ptm/m/n/10 A small li-brary of C func-tions are also avail-
doc/src/fred:Underfull \hbox (badness 1297) in paragraph at lines 293--298
doc/src/fred:\OT1/ptm/m/n/10 able for []\OT1/pcr/m/n/10 Rect \OT1/ptm/m/n/10 al-ge-bra, see 
doc/src/fred:the man-ual pages for
doc/src/fred:Overfull \hbox (5.80566pt too wide) in paragraph at lines 332--332
doc/src/fred:Underfull \hbox (badness 7203) in paragraph at lines 352--358
doc/src/fred:\OT1/ptm/m/n/10 to the right along the line of pels, pro-vided
doc/src/fred:Underfull \hbox (badness 7814) in paragraph at lines 352--358
doc/src/fred:\OT1/ptm/m/n/10 you stay strictly within []\OT1/pcr/m/n/10 reg->valid\OT1/ptm/m
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 365--365
doc/src/fred:Overfull \hbox (17.80566pt too wide) in paragraph at lines 365--365
doc/src/fred:Underfull \hbox (badness 1365) in paragraph at lines 372--380
doc/src/fred:\OT1/ptm/m/n/10 first, we should re-ally be us-ing []\OT1/pcr/m/n/10 im_iterate
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 488--488
doc/src/fred:Underfull \hbox (badness 1028) in paragraph at lines 493--495
doc/src/fred:\OT1/ptm/m/n/10 ages but pro-duce no im-age out-put, VIPS pro-vides
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 644--647
doc/src/fred:[]\OT1/ptm/m/n/10 There are a cou-ple of vari-a-tions on
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 644--647
doc/src/fred:\OT1/ptm/m/n/10 to force writ-ing to a par-tic-u-lar place, and
doc/src/fred:Underfull \hbox (badness 2772) in paragraph at lines 644--647
doc/src/fred:[]\OT1/pcr/m/n/10 im_prepare_thread() \OT1/ptm/m/n/10 to use threaded eval-u-
doc/src/fred:Underfull \hbox (badness 1173) in paragraph at lines 672--677
doc/src/fred:[]\OT1/ptm/m/n/10 Here is []\OT1/pcr/m/n/10 invert()\OT1/ptm/m/n/10 , rewrit-te
doc/src/fred:Underfull \hbox (badness 1817) in paragraph at lines 672--677
doc/src/fred:\OT1/ptm/m/n/10 and stop func-tions pro-vided by the VIPS li-brary:
doc/src/fred:Underfull \hbox (badness 1292) in paragraph at lines 697--700
doc/src/fred:\OT1/ptm/m/n/10 only one in-put im-age. See the man-ual page for
doc/src/fred:Overfull \hbox (41.80566pt too wide) in paragraph at lines 819--819
doc/src/fred:Underfull \hbox (badness 2261) in paragraph at lines 834--838
doc/src/fred:\OT1/ptm/m/n/10 cess to a struct con-tain-ing in-for-ma-tion about the
doc/src/fred:Underfull \hbox (badness 5077) in paragraph at lines 834--838
doc/src/fred:\OT1/ptm/m/n/10 progress of eval-u-a-tion, use-ful for user-interfaces
doc/src/fred:Underfull \hbox (badness 2521) in paragraph at lines 834--838
doc/src/fred:\OT1/ptm/m/n/10 built on top of VIPS. See the man-ual page for
doc/src/fred:Underfull \hbox (badness 4765) in paragraph at lines 1--1
doc/src/fred:[]\OT1/ptm/b/n/14.4 Programming in-place func-
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 56--56
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 56--56
doc/src/fred:Overfull \hbox (23.80566pt too wide) in paragraph at lines 51--51
doc/src/fred:Overfull \hbox (11.80566pt too wide) in paragraph at lines 51--51
doc/src/fred:Overfull \hbox (49.61133pt too wide) in paragraph at lines 73--73
doc/src/fred:[]\OT1/pcr/m/n/10 im_maxpos_avg        - position of maximum value of image, av
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 179--183
doc/src/fred:[]\OT1/ptm/m/n/10 This for-mat rep-re-sents co-or-di-nates
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 179--183
doc/src/fred:/n/10 space as a three- band
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 179--183
doc/src/fred:[]\OT1/pcr/m/n/10 IM_BANDFMT_SHORT \OT1/ptm/m/n/10 im-age, scaled to fit
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_Lab2XYZ_temp      - convert Lab to XYZ, with a specified c
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_XYZ2Lab_temp      - convert XYZ to Lab, with a specified c
doc/src/fred:Overfull \hbox (1.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_dECMC_fromdisp    - calculate delta-E CMC(1:1) for two dis
doc/src/fred:Overfull \hbox (67.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_export        - convert a float LAB to an 8-bit device
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_export_depth  - convert a float LAB to device space wi
doc/src/fred:Overfull \hbox (13.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_import        - convert a device image to float LAB wi
doc/src/fred:Overfull \hbox (67.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_import_embedded - convert a device image to float LAB 
doc/src/fred:Overfull \hbox (49.61133pt too wide) in paragraph at lines 274--274
doc/src/fred:[]\OT1/pcr/m/n/10 im_icc_transform     - convert between two device images with
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 291--293
doc/src/fred:[][]\OT1/pcr/m/n/10 gbandjoin \OT1/ptm/m/n/10 and the C func-tion
doc/src/fred:Underfull \hbox (badness 4291) in paragraph at lines 291--293
doc/src/fred:[]\OT1/pcr/m/n/10 im_gbandjoin() \OT1/ptm/m/n/10 will do a band-wise join of
doc/src/fred:Overfull \hbox (31.61133pt too wide) in paragraph at lines 341--341
doc/src/fred:[]\OT1/pcr/m/n/10 im_insert_noexpand   - insert sub-image into main image at po
doc/src/fred:Underfull \hbox (badness 2150) in paragraph at lines 371--374
doc/src/fred:\OT1/ptm/m/n/10 for con-vo-lu-tions, and for some colour-space con-
doc/src/fred:Underfull \hbox (badness 1997) in paragraph at lines 371--374
doc/src/fred:\OT1/ptm/m/n/10 ver-sions. There are two types of ma-trix: in-te-
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 452--456
doc/src/fred:[]\OT1/ptm/m/n/10 Next, are the build func-tions.
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 465--467
doc/src/fred:Overfull \hbox (1.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_convsub           - convolve uchar to uchar, sub-sampling 
doc/src/fred:Overfull \hbox (31.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_gaussnoise        - generate image of gaussian noise with 
doc/src/fred:Overfull \hbox (19.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_gradcor           - non-normalised correlation of gradient
doc/src/fred:Overfull \hbox (91.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_gradcor_raw       - non-normalised correlation of gradient
doc/src/fred:Overfull \hbox (19.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_phasecor_fft      - non-normalised correlation of gradient
doc/src/fred:Overfull \hbox (19.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_rank_raw          - rank filter nth element of xsize/ysize
doc/src/fred:Overfull \hbox (31.61133pt too wide) in paragraph at lines 520--520
doc/src/fred:[]\OT1/pcr/m/n/10 im_spcor_raw         - normalised correlation of in2 within i
doc/src/fred:Underfull \hbox (badness 2478) in paragraph at lines 550--557
doc/src/fred:\OT1/ptm/m/n/10 form and in-verse trans-form of an im-age. Also
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 725--733
doc/src/fred:Underfull \hbox (badness 1721) in paragraph at lines 725--733
doc/src/fred:[]\OT1/pcr/m/n/10 im_tbmosaic()\OT1/ptm/m/n/10 . These use the two low-level
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 734--737
doc/src/fred:[]\OT1/ptm/m/n/10 The func-tions []\OT1/pcr/m/n/10 im_lrmosaic1() \OT1/ptm/m/n/
doc/src/fred:Underfull \hbox (badness 10000) in paragraph at lines 734--737
doc/src/fred:[]\OT1/pcr/m/n/10 im_tbmosaic1() \OT1/ptm/m/n/10 are first-order ana-logues of
doc/src/fred:Underfull \hbox (badness 1681) in paragraph at lines 738--744
doc/src/fred:Underfull \hbox (badness 4765) in paragraph at lines 738--744
doc/src/fred:\OT1/ptm/m/n/10 to re-balance a mo-saic which has been as-sem-
doc/src/fred:Underfull \hbox (badness 2582) in paragraph at lines 738--744
doc/src/fred:\OT1/ptm/m/n/10 bled with these func-tions. It will gen-er-ally do
doc/src/fred:Underfull \hbox (badness 1275) in paragraph at lines 738--744
doc/src/fred:\OT1/ptm/m/n/10 a bet-ter job than the low-level bal-ancer built into
doc/src/fred:Overfull \hbox (25.61133pt too wide) in paragraph at lines 769--769
doc/src/fred:[]\OT1/pcr/m/n/10 im_global_balancef   - automatically rebuild mosaic with bala
doc/src/fred:Overfull \hbox (25.61133pt too wide) in paragraph at lines 769--769
doc/src/fred:[]\OT1/pcr/m/n/10 im_maxpos_subpel     - subpixel position of maximum of (phase
doc/src/fred:Overfull \hbox (25.61133pt too wide) in paragraph at lines 813--813
doc/src/fred:[]\OT1/pcr/m/n/10 im_eye             - generate IM_BANDFMT_UCHAR [0,255] freque
doc/src/fred:Overfull \hbox (19.61133pt too wide) in paragraph at lines 813--813
doc/src/fred:[]\OT1/pcr/m/n/10 im_feye            - generate IM_BANDFMT_FLOAT [-1,1] frequen
doc/src/fred:LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
doc/src/fred:(see the transcript file for additional information){/usr/share/texmf-texlive/f
doc/src/fred:onts/enc/dvips/base/8r.enc}</usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmm
doc/src/fred:i10.pfb></usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmr10.pfb></usr/share/
doc/src/fred:texmf-texlive/fonts/type1/bluesky/cm/cmr7.pfb></usr/share/texmf-texlive/fonts/t
doc/src/fred:ype1/bluesky/cm/cmsy10.pfb></usr/share/texmf-texlive/fonts/type1/bluesky/cm/cms
doc/src/fred:y7.pfb></usr/share/texmf-texlive/fonts/type1/urw/courier/ucrb8a.pfb></usr/share
doc/src/fred:/texmf-texlive/fonts/type1/urw/courier/ucrr8a.pfb></usr/share/texmf-texlive/fon
doc/src/fred:ts/type1/urw/courier/ucrro8a.pfb></usr/share/texmf-texlive/fonts/type1/urw/time
doc/src/fred:s/utmb8a.pfb></usr/share/texmf-texlive/fonts/type1/urw/times/utmr8a.pfb></usr/s
doc/src/fred:hare/texmf-texlive/fonts/type1/urw/times/utmr8a.pfb></usr/share/texmf-texlive/f
doc/src/fred:rm -rf vipsmanual 
doc/src/fred:htlatex vipsmanual.tex html.cfg,3 "" -dvipsmanual/
doc/src/fred:This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
doc/src/fred: %&-line parsing enabled.
doc/src/fred:(./vipsmanual.tex (/usr/share/texmf-texlive/tex/latex/base/book.cls
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/bk10.clo))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/geometry/geometry.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty))
doc/src/fred:(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvips.def)))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/color.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/times.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty) (./mydefs.tex) (./html.cfg
doc/src/fred:--- needs --- tex4ht vipsmanual ---
doc/src/fred:l.1437 --- TeX4ht warning --- No file vipsmanual.xref ---
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)) (./vipsmanual.aux)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/ot1ptm.fd)) [1] [2] [3] [1] [2]
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/ot1pcr.fd)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/omsptm.fd) [3] [4] [5] [6] [7]
doc/src/fred:l.15 --- TeX4ht warning --- Cannot determine size of graphic in figs/arch.png (
doc/src/fred:no BoundingBox) ---
doc/src/fred:l.163 --- TeX4ht warning --- Cannot determine size of graphic in figs/interconv
doc/src/fred:ert.png (no BoundingBox) ---
doc/src/fred:LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
doc/src/fred:This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
doc/src/fred: %&-line parsing enabled.
doc/src/fred:(./vipsmanual.tex (/usr/share/texmf-texlive/tex/latex/base/book.cls
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/bk10.clo))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/geometry/geometry.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty))
doc/src/fred:(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvips.def)))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/color.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/times.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty) (./mydefs.tex) (./html.cfg
doc/src/fred:--- needs --- tex4ht vipsmanual ---
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)) (./vipsmanual.aux)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/ot1ptm.fd)) [1] [2] [3] [1] [2]
doc/src/fred:(./vipsmanual.4ct (/usr/share/texmf-texlive/tex/latex/psnfss/ot1pcr.fd))
doc/src/fred:l.45 --- TeX4ht warning --- \Link{tailvipsmanualli1.html}? ---
doc/src/fred:l.45 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.49 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.49 --- TeX4ht warning --- \Link{tailvipsmanualli2.html}? ---
doc/src/fred:l.49 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.8 --- TeX4ht warning --- \Link{x6-60011}? ---
doc/src/fred:l.9 --- TeX4ht warning --- \Link{x6-60022}? ---
doc/src/fred:l.44 --- TeX4ht warning --- \Link{x13-360011}? ---
doc/src/fred:l.47 --- TeX4ht warning --- \Link{x14-380012}? ---
doc/src/fred:l.49 --- TeX4ht warning --- \Link{x14-390013}? ---
doc/src/fred:l.53 --- TeX4ht warning --- \Link{x14-420014}? ---
doc/src/fred:l.54 --- TeX4ht warning --- \Link{x14-420025}? ---
doc/src/fred:l.61 --- TeX4ht warning --- \Link{x14-480016}? ---
doc/src/fred:l.66 --- TeX4ht warning --- \Link{x14-520017}? ---
doc/src/fred:l.71 --- TeX4ht warning --- \Link{x14-560018}? ---
doc/src/fred:l.86 --- TeX4ht warning --- \Link{x16-690019}? ---
doc/src/fred:l.92 --- TeX4ht warning --- \Link{x17-7400110}? ---
doc/src/fred:l.102 --- TeX4ht warning --- \Link{x20-830011}? ---
doc/src/fred:l.104 --- TeX4ht warning --- \Link{x20-840012}? ---
doc/src/fred:l.106 --- TeX4ht warning --- \Link{x20-850013}? ---
doc/src/fred:l.107 --- TeX4ht warning --- \Link{x20-850024}? ---
doc/src/fred:l.112 --- TeX4ht warning --- \Link{x21-890015}? ---
doc/src/fred:l.113 --- TeX4ht warning --- \Link{x21-890026}? ---
doc/src/fred:l.115 --- TeX4ht warning --- \Link{x21-900017}? ---
doc/src/fred:l.116 --- TeX4ht warning --- \Link{x21-900028}? ---
doc/src/fred:l.117 --- TeX4ht warning --- \Link{x21-900039}? ---
doc/src/fred:l.119 --- TeX4ht warning --- \Link{x21-9100110}? ---
doc/src/fred:l.120 --- TeX4ht warning --- \Link{x21-9100211}? ---
doc/src/fred:l.132 --- TeX4ht warning --- \Link{x25-1010011}? ---
doc/src/fred:l.134 --- TeX4ht warning --- \Link{x25-1020012}? ---
doc/src/fred:l.136 --- TeX4ht warning --- \Link{x25-1030013}? ---
doc/src/fred:l.138 --- TeX4ht warning --- \Link{x25-1040014}? ---
doc/src/fred:l.139 --- TeX4ht warning --- \Link{x25-1040025}? ---
doc/src/fred:l.141 --- TeX4ht warning --- \Link{x25-1050016}? ---
doc/src/fred:l.142 --- TeX4ht warning --- \Link{x25-1050027}? ---
doc/src/fred:l.144 --- TeX4ht warning --- \Link{x25-1060018}? ---
doc/src/fred:l.146 --- TeX4ht warning --- \Link{x25-1070019}? ---
doc/src/fred:l.148 --- TeX4ht warning --- \Link{x25-10800110}? ---
doc/src/fred:l.150 --- TeX4ht warning --- \Link{x25-10900111}? ---
doc/src/fred:l.152 --- TeX4ht warning --- \Link{x25-11000112}? ---
doc/src/fred:l.154 --- TeX4ht warning --- \Link{x25-11100113}? ---
doc/src/fred:l.156 --- TeX4ht warning --- \Link{x25-11200114}? ---
doc/src/fred:l.158 --- TeX4ht warning --- \Link{x25-11300115}? ---
doc/src/fred:l.160 --- TeX4ht warning --- \Link{x25-11400116}? ---
doc/src/fred:l.162 --- TeX4ht warning --- \Link{x25-11500117}? ---
doc/src/fred:l.164 --- TeX4ht warning --- \Link{x25-11600118}? ---
doc/src/fred:l.53 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.53 --- TeX4ht warning --- \Link{tailvipsmanualli3.html}? ---
doc/src/fred:l.53 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.129 --- TeX4ht warning --- \Link{x24-990011}? ---
doc/src/fred:l.61 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.61 --- TeX4ht warning --- \Link{tailvipsmanualch1.html}? ---
doc/src/fred:l.61 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse1.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.17 --- TeX4ht warning --- \Link{x6-60011}? ---
doc/src/fred:l.17 --- TeX4ht warning --- \Link{x6-60022}? ---
doc/src/fred:[3] (/usr/share/texmf-texlive/tex/latex/psnfss/omsptm.fd) [4] [5] [6] [7]
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse2.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse3.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse4.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse5.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse6.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.70 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.70 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.70 --- TeX4ht warning --- \Link{tailvipsmanualch2.html}? ---
doc/src/fred:l.70 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse7.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.11 --- TeX4ht warning --- \Link{x13-360011}? ---
doc/src/fred:l.15 --- TeX4ht warning --- Cannot determine size of graphic in figs/arch.png (
doc/src/fred:no BoundingBox) ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse8.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.43 --- TeX4ht warning --- \Link{x14-380012}? ---
doc/src/fred:l.98 --- TeX4ht warning --- \Link{x14-390013}? ---
doc/src/fred:l.580 --- TeX4ht warning --- \Link{x14-480016}? ---
doc/src/fred:l.669 --- TeX4ht warning --- \Link{x14-520017}? ---
doc/src/fred:l.719 --- TeX4ht warning --- \Link{x14-520017}? ---
doc/src/fred:l.768 --- TeX4ht warning --- \Link{x14-560018}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse9.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse10.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.63 --- TeX4ht warning --- \Link{x16-690019}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse11.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.58 --- TeX4ht warning --- \Link{x17-7400110}? ---
doc/src/fred:l.78 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.78 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.78 --- TeX4ht warning --- \Link{tailvipsmanualch3.html}? ---
doc/src/fred:l.78 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse12.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse13.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.93 --- TeX4ht warning --- \Link{x20-830011}? ---
doc/src/fred:l.235 --- TeX4ht warning --- \Link{x20-840012}? ---
doc/src/fred:l.272 --- TeX4ht warning --- \Link{x20-850013}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse14.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.19 --- TeX4ht warning --- \Link{x20-840012}? ---
doc/src/fred:l.372 --- TeX4ht warning --- \Link{x21-890015}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse15.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.85 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.85 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.85 --- TeX4ht warning --- \Link{tailvipsmanualch4.html}? ---
doc/src/fred:l.85 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse16.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.66 --- TeX4ht warning --- \Link{x24-990011}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{tailvipsmanualse17.html}? ---
doc/src/fred:l.1 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.6 --- TeX4ht warning --- \Link{x25-1010011}? ---
doc/src/fred:l.80 --- TeX4ht warning --- \Link{x25-1020012}? ---
doc/src/fred:l.123 --- TeX4ht warning --- \Link{x25-1030013}? ---
doc/src/fred:l.152 --- TeX4ht warning --- \Link{x25-1040025}? ---
doc/src/fred:l.159 --- TeX4ht warning --- \Link{x25-1040014}? ---
doc/src/fred:l.163 --- TeX4ht warning --- Cannot determine size of graphic in figs/interconv
doc/src/fred:ert.png (no BoundingBox) ---
doc/src/fred:l.281 --- TeX4ht warning --- \Link{x25-1050016}? ---
doc/src/fred:l.369 --- TeX4ht warning --- \Link{x25-1060018}? ---
doc/src/fred:l.436 --- TeX4ht warning --- \Link{x25-1070019}? ---
doc/src/fred:l.528 --- TeX4ht warning --- \Link{x25-10800110}? ---
doc/src/fred:l.548 --- TeX4ht warning --- \Link{x25-10900111}? ---
doc/src/fred:l.591 --- TeX4ht warning --- \Link{x25-11000112}? ---
doc/src/fred:l.648 --- TeX4ht warning --- \Link{x25-11100113}? ---
doc/src/fred:l.709 --- TeX4ht warning --- \Link{x25-11200114}? ---
doc/src/fred:l.776 --- TeX4ht warning --- \Link{x25-11300115}? ---
doc/src/fred:l.793 --- TeX4ht warning --- \Link{x25-11400116}? ---
doc/src/fred:l.820 --- TeX4ht warning --- \Link{x25-11500117}? ---
doc/src/fred:l.844 --- TeX4ht warning --- \Link{x25-11600118}? ---
doc/src/fred:l.90 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:l.90 --- TeX4ht warning --- \Link{ }? ---
doc/src/fred:This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
doc/src/fred: %&-line parsing enabled.
doc/src/fred:(./vipsmanual.tex (/usr/share/texmf-texlive/tex/latex/base/book.cls
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/bk10.clo))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/geometry/geometry.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty))
doc/src/fred:(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvips.def)))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/color.sty
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/times.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty) (./mydefs.tex) (./html.cfg
doc/src/fred:--- needs --- tex4ht vipsmanual ---
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def)
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
doc/src/fred:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht)) (./vipsmanual.aux)
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/ot1ptm.fd)) [1] [2] [3] [1] [2]
doc/src/fred:(./vipsmanual.4ct (/usr/share/texmf-texlive/tex/latex/psnfss/ot1pcr.fd))
doc/src/fred:(/usr/share/texmf-texlive/tex/latex/psnfss/omsptm.fd) [4] [5] [6] [7] [8]
doc/src/fred:l.15 --- TeX4ht warning --- Cannot determine size of graphic in figs/arch.png (
doc/src/fred:no BoundingBox) ---
doc/src/fred:l.163 --- TeX4ht warning --- Cannot determine size of graphic in figs/interconv
doc/src/fred:ert.png (no BoundingBox) ---
doc/src/fred:----------------------------
doc/src/fred:tex4ht.c (2007-11-07-16:08 kpathsea)
doc/src/fred:tex4ht -f/vipsmanual.tex 
doc/src/fred:  -i/usr/share/texmf/tex4ht/ht-fonts/ 
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/iso8859/1/charset/unicode.4hf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/adobe/courier/pcrb7t.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrb7t.htf)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/adobe/courier/pcrr7t.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/adobe/times/ptmb7t.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/alias/adobe/times/ptmb7t.htf)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/adobe/palatino/pplri9t.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/adobe/times/ptmri7t.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/adobe/times/ptmri7t.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/adobe/courier/pcrr7t.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/adobe/courier/pcrr7t.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/adobe/times/ptmr7t.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/alias/times/ptmr7t.htf)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/adobe/palatino/pplri9t.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/adobe/times/ptmr7t.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/alias/times/ptmr7t.htf)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/adobe/palatino/pplri9t.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/adobe/times/ptmr7t.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/alias/times/ptmr7t.htf)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/adobe/palatino/pplri9t.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/public/cm/cmsy10.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/cm/cmsy.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/public/cm/cmsy7.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/cm/cmsy.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/public/cm/cmmi10.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/cm/cmmi.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/public/cm/cmr10.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/alias/lm/lm-rep-cmrm/cmr.htf)
doc/src/fred:Searching `lm-rep-cmrm.htf' for `cmr10.htf'
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/lm/lm-rep-cmrm.htf)
doc/src/fred:(/usr/share/texmf-texlive/fonts/tfm/public/cm/cmr7.tfm)
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/alias/lm/lm-rep-cmrm/cmr.htf)
doc/src/fred:Searching `lm-rep-cmrm.htf' for `cmr7.htf'
doc/src/fred:(/usr/share/texmf/tex4ht/ht-fonts/unicode/lm/lm-rep-cmrm.htf)
doc/src/fred:----------------------------
doc/src/fred:t4ht.c (2008-02-25-18:56 kpathsea)
doc/src/fred:t4ht -f/vipsmanual.tex 
doc/src/fred:  -dvipsmanual/ 
doc/src/fred:System call: dvipng -T tight -x 1400 -D 72 -bg Transparent -pp 2:2 vipsmanual.idv -o vipsmanual0x.png
doc/src/fred:--- Warning --- System return: 32512
doc/src/fred:cp -r figs vipsmanual
doc/src/vipsmanualse11.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse11.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse11.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse11.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse11.html:<!-- 3,html --> 
doc/src/vipsmanualse11.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse11.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse11.html:href="vipsmanualse10.html#tailvipsmanualse10.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse11.html: id="x17-740002.5"></a>Image formats</h3>
doc/src/vipsmanualse11.html:<!--l. 4--><p class="noindent" >VIPS has a simple system for adding support for new
doc/src/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">IMAGE</span></span></span>, or an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">IMAGE</span></span></span> to a file. New formats may be
doc/src/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span>.
doc/src/vipsmanualse11.html:<!--l. 10--><p class="indent" >  This is a parallel API to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">im_open()</span></span></span>, see <span 
doc/src/vipsmanualse11.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse11.html:href="vipsmanualse8.html#x14-410002.2.4">2.2.4<!--tex4ht:ref: sec:open --></a>. The
doc/src/vipsmanualse11.html:image is held. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">im_open()</span></span></span> is useful for images in
doc/src/vipsmanualse11.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse11.html:href="vipsmanualse18.html#x26-1140004.2.8">4.2.8<!--tex4ht:ref: sec:inplace --></a>), for
doc/src/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">im_open()</span></span></span>.
doc/src/vipsmanualse11.html:<!--l. 19--><p class="noindent" >
doc/src/vipsmanualse11.html: id="x17-750002.5.1"></a>How a format is represented</h4>
doc/src/vipsmanualse11.html:<!--l. 21--><p class="noindent" >See the man page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span> for full details,
doc/src/vipsmanualse11.html:    and a list of possible filename suffixes (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">.tif</span></span></span>, for
doc/src/vipsmanualse11.html:    <li class="itemize">A function which will write an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">IMAGE</span></span></span> to a file in
doc/src/vipsmanualse11.html:  <!--l. 45--><p class="noindent" >
doc/src/vipsmanualse11.html: id="x17-760002.5.2"></a>The format class</h4>
doc/src/vipsmanualse11.html:  <!--l. 47--><p class="noindent" >The interface to the format system is defined by the abstract
doc/src/vipsmanualse11.html:  base class <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span>. Formats subclass this and
doc/src/vipsmanualse11.html:  <!--l. 53--><p class="indent" >    As an example, Figure&#x00A0;<a 
doc/src/vipsmanualse11.html:href="#x17-760019">2.9<!--tex4ht:ref: fg:newformat --></a> shows how to register a new
doc/src/vipsmanualse11.html:<!--l. 57--><p class="indent" >  <a 
doc/src/vipsmanualse11.html: id="x17-760019"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse11.html:<div class="verbatim" id="verbatim-118">
doc/src/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;nickname&#x00A0;=&#x00A0;"myformat";
doc/src/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;description&#x00A0;=&#x00A0;_(&#x00A0;"My&#x00A0;format"&#x00A0;);
doc/src/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;is_a&#x00A0;=&#x00A0;is_myformat;
doc/src/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;header&#x00A0;=&#x00A0;my_header;
doc/src/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;load&#x00A0;=&#x00A0;my_read;
doc/src/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;save&#x00A0;=&#x00A0;my_write;
doc/src/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;get_flags&#x00A0;=&#x00A0;my_get_flags;
doc/src/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;priority&#x00A0;=&#x00A0;100;
doc/src/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;suffs&#x00A0;=&#x00A0;my_suffs;
doc/src/vipsmanualse11.html:<!--l. 108--><p class="nopar" >
doc/src/vipsmanualse11.html:class="content">Registering a format in a plugin</span></div><!--tex4ht:label?: x17-760019 -->
doc/src/vipsmanualse11.html: id="x17-770002.5.3"></a>Finding a format</h4>
doc/src/vipsmanualse11.html:<!--l. 115--><p class="noindent" >You can loop over the subclasses of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span> in order
doc/src/vipsmanualse11.html:of priority with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">vips_format_map()</span></span></span>. Like all the map
doc/src/vipsmanualse11.html:non-zero or until the table ends.
doc/src/vipsmanualse11.html:<!--l. 120--><p class="indent" >  You find an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">VipsFormatClass</span></span></span> to use to open a file
doc/src/vipsmanualse11.html:with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">vips_format_for_file()</span></span></span>. This finds the first
doc/src/vipsmanualse11.html:format whose <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">is_a()</span></span></span> function returns true or whose
doc/src/vipsmanualse11.html:<!--l. 125--><p class="indent" >  You find a format to write a file with
doc/src/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">vips_format_for_name()</span></span></span>. This returns the first
doc/src/vipsmanualse11.html:<!--l. 129--><p class="noindent" >
doc/src/vipsmanualse11.html: id="x17-780002.5.4"></a>Convenience functions</h4>
doc/src/vipsmanualse11.html:<!--l. 131--><p class="noindent" >A pair of convenience functions, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">vips_format_write()</span></span></span>
doc/src/vipsmanualse11.html:and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse11.html:class="pcrr7t-">vips_format_read()</span></span></span>, will copy an image to and
doc/src/vipsmanualse11.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse11.html:href="vipsmanualse10.html#tailvipsmanualse10.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse11.html:<!--l. 1--><p class="indent" >  <a 
doc/src/figs/interconvert.svg:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
doc/src/figs/interconvert.svg:<!-- Created with Inkscape (http://www.inkscape.org/) -->
doc/src/figs/interconvert.svg:   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
doc/src/figs/interconvert.svg:   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
doc/src/figs/interconvert.svg:   sodipodi:docbase="/home/john/CVS_DEVEL/vips-7.11/doc/src/figs"
doc/src/figs/interconvert.svg:   inkscape:export-filename="/home/john/CVS_DEVEL/vips-7.11/doc/src/figs/interconvert.png"
doc/src/figs/interconvert.svg:   inkscape:export-xdpi="90"
doc/src/figs/interconvert.svg:   inkscape:export-ydpi="90">
doc/src/figs/interconvert.svg:         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
doc/src/figs/interconvert.svg:         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
doc/src/figs/interconvert.svg:         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
doc/src/figs/interconvert.svg:         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
doc/src/figs/interconvert.svg:         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
doc/src/figs/interconvert.svg:         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
doc/src/figs/interconvert.svg:         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
doc/src/figs/interconvert.svg:         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
doc/src/figs/interconvert.svg:         style="stop-color:blue;stop-opacity:1;"
doc/src/figs/interconvert.svg:         style="stop-color:blue;stop-opacity:0;"
doc/src/figs/interconvert.svg:     inkscape:document-units="px"
doc/src/figs/interconvert.svg:     inkscape:current-layer="layer1"
doc/src/figs/interconvert.svg:     inkscape:window-width="917"
doc/src/figs/interconvert.svg:     inkscape:window-height="766"
doc/src/figs/interconvert.svg:     inkscape:window-x="721"
doc/src/figs/interconvert.svg:     inkscape:window-y="190" />
doc/src/figs/interconvert.svg:       transform="translate(-145.6376,-17.86691)">
doc/src/figs/interconvert.svg:         style="fill:url(#linearGradient1473);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/src/figs/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">Lab</tspan></text>
doc/src/figs/interconvert.svg:       transform="translate(-61.37789,49.49029)"
doc/src/figs/interconvert.svg:         style="fill:url(#linearGradient1599);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/src/figs/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none"
doc/src/figs/interconvert.svg:       transform="translate(-61.37789,-85.22411)">
doc/src/figs/interconvert.svg:         style="fill:url(#linearGradient1601);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/src/figs/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">LCh</tspan></text>
doc/src/figs/interconvert.svg:         style="fill:url(#linearGradient1533);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/src/figs/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none"
doc/src/figs/interconvert.svg:         style="fill:url(#linearGradient1543);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/src/figs/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">Yxy</tspan></text>
doc/src/figs/interconvert.svg:       transform="translate(22.88186,-85.22411)"
doc/src/figs/interconvert.svg:         style="fill:url(#linearGradient1553);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/src/figs/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none"
doc/src/figs/interconvert.svg:         style="fill:url(#linearGradient2757);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/src/figs/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">LabQ</tspan></text>
doc/src/figs/interconvert.svg:       transform="translate(-231.0163,-17.86691)"
doc/src/figs/interconvert.svg:         style="fill:url(#linearGradient1619);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/src/figs/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none"
doc/src/figs/interconvert.svg:       transform="translate(-231.0163,65.63058)">
doc/src/figs/interconvert.svg:         style="fill:url(#linearGradient1635);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/src/figs/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">ICC</tspan></text>
doc/src/figs/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/src/figs/interconvert.svg:       inkscape:connector-type="polyline"
doc/src/figs/interconvert.svg:       inkscape:connection-start="#g1495"
doc/src/figs/interconvert.svg:       inkscape:connection-end="#g1468" />
doc/src/figs/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-mid:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/src/figs/interconvert.svg:       inkscape:connector-type="polyline"
doc/src/figs/interconvert.svg:       inkscape:connection-start="#g1468"
doc/src/figs/interconvert.svg:       inkscape:connection-end="#g1555" />
doc/src/figs/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/src/figs/interconvert.svg:       inkscape:connector-type="polyline"
doc/src/figs/interconvert.svg:       inkscape:connection-start="#g1468" />
doc/src/figs/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/src/figs/interconvert.svg:       inkscape:connector-type="polyline"
doc/src/figs/interconvert.svg:       inkscape:connection-start="#g1468"
doc/src/figs/interconvert.svg:       inkscape:connection-end="#g1475" />
doc/src/figs/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/src/figs/interconvert.svg:       inkscape:connector-type="polyline"
doc/src/figs/interconvert.svg:       inkscape:connection-start="#g1468"
doc/src/figs/interconvert.svg:       inkscape:connection-end="#g1505" />
doc/src/figs/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-mid:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/src/figs/interconvert.svg:       inkscape:connector-type="polyline"
doc/src/figs/interconvert.svg:       inkscape:connection-start="#g1505"
doc/src/figs/interconvert.svg:       inkscape:connection-end="#g1545" />
doc/src/figs/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/src/figs/interconvert.svg:       inkscape:connector-type="polyline"
doc/src/figs/interconvert.svg:       inkscape:connection-start="#g1475"
doc/src/figs/interconvert.svg:       inkscape:connection-end="#g1525" />
doc/src/figs/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none"
doc/src/figs/interconvert.svg:       inkscape:connector-type="polyline"
doc/src/figs/interconvert.svg:       inkscape:connection-start="#g1475"
doc/src/figs/interconvert.svg:       inkscape:connection-end="#g1535" />
doc/src/figs/interconvert.svg:       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/interconvert.svg:       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
Coincidencia en el archivo binario doc/src/figs/interconvert.png
Coincidencia en el archivo binario doc/src/figs/arch.png
doc/src/figs/arch.svg:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
doc/src/figs/arch.svg:<!-- Created with Inkscape (http://www.inkscape.org/) -->
doc/src/figs/arch.svg:   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
doc/src/figs/arch.svg:   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
doc/src/figs/arch.svg:   sodipodi:docbase="/home/john/CVS_DEVEL/vips-7.11/doc/src/figs"
doc/src/figs/arch.svg:   inkscape:export-filename="/home/john/CVS_DEVEL/vips-7.11/doc/src/figs/arch.png"
doc/src/figs/arch.svg:   inkscape:export-xdpi="90"
doc/src/figs/arch.svg:   inkscape:export-ydpi="90">
doc/src/figs/arch.svg:         style="stop-color:blue;stop-opacity:1;"
doc/src/figs/arch.svg:         style="stop-color:blue;stop-opacity:0;"
doc/src/figs/arch.svg:       gradientTransform="matrix(0.849266,0,0,0.598685,-15.86361,-14.13077)" />
doc/src/figs/arch.svg:       gradientTransform="matrix(-0.849266,0,0,1.338534,561.8794,272.4737)"
doc/src/figs/arch.svg:       gradientTransform="matrix(1.84935,0,0,0.598685,-29.41424,440.032)"
doc/src/figs/arch.svg:       gradientTransform="matrix(-0.849266,0,0,1.338534,561.8794,272.4737)"
doc/src/figs/arch.svg:     inkscape:document-units="px"
doc/src/figs/arch.svg:     inkscape:current-layer="layer1"
doc/src/figs/arch.svg:     inkscape:window-width="1670"
doc/src/figs/arch.svg:     inkscape:window-height="1011"
doc/src/figs/arch.svg:     inkscape:window-x="0"
doc/src/figs/arch.svg:     inkscape:window-y="6"
doc/src/figs/arch.svg:     inkscape:guide-bbox="true" />
doc/src/figs/arch.svg:       style="fill:url(#linearGradient5172);fill-opacity:1;stroke:black;stroke-width:2.30000257;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/src/figs/arch.svg:       style="fill:url(#linearGradient5163);fill-opacity:1;stroke:black;stroke-width:2.30000257;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/src/figs/arch.svg:       style="fill:url(#linearGradient4889);fill-opacity:1;stroke:black;stroke-width:2.3000021;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/src/figs/arch.svg:         transform="translate(-102.3224,-83.2251)"
doc/src/figs/arch.svg:           style="opacity:1;fill:url(#linearGradient4953);fill-opacity:1;stroke:black;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/src/figs/arch.svg:           style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/arch.svg:             style="fill:white;fill-opacity:1;stroke:none">Python binding</tspan></text>
doc/src/figs/arch.svg:         transform="translate(-102.3224,-19.75669)"
doc/src/figs/arch.svg:           style="opacity:1;fill:url(#linearGradient4955);fill-opacity:1;stroke:black;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/src/figs/arch.svg:           style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/arch.svg:             style="fill:white;fill-opacity:1;stroke:none"
doc/src/figs/arch.svg:       style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:white;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/arch.svg:         style="fill:white;fill-opacity:1;stroke:none">VIPS image</tspan><tspan
doc/src/figs/arch.svg:         style="fill:white;fill-opacity:1;stroke:none"
doc/src/figs/arch.svg:         style="fill:white;fill-opacity:1;stroke:none"
doc/src/figs/arch.svg:       style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:white;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/arch.svg:         style="fill:white;fill-opacity:1;stroke:none"
doc/src/figs/arch.svg:         style="fill:white;fill-opacity:1;stroke:none"
doc/src/figs/arch.svg:         style="fill:white;fill-opacity:1;stroke:none"
doc/src/figs/arch.svg:       style="fill:url(#linearGradient4960);fill-opacity:1;stroke:black;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/src/figs/arch.svg:       style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:white;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/arch.svg:         style="fill:white;fill-opacity:1;stroke:none"
doc/src/figs/arch.svg:       style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:white;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/arch.svg:         style="fill:white;fill-opacity:1;stroke:none"
doc/src/figs/arch.svg:       transform="translate(49.48783,-19.7567)"
doc/src/figs/arch.svg:           style="opacity:1;fill:url(#linearGradient4939);fill-opacity:1;stroke:black;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/src/figs/arch.svg:           style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/src/figs/arch.svg:             style="fill:white;fill-opacity:1;stroke:none">Command-line</tspan><tspan
doc/src/figs/arch.svg:             style="fill:white;fill-opacity:1;stroke:none">interface</tspan></text>
doc/src/vipsmanualse9.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse9.html:<head><title>Function dispatch and plug-ins</title> 
doc/src/vipsmanualse9.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse9.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse9.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse9.html:<!-- 3,html --> 
doc/src/vipsmanualse9.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse9.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse9.html:href="vipsmanualse8.html#tailvipsmanualse8.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse9.html: id="x15-590002.3"></a>Function dispatch and plug-ins</h3>
doc/src/vipsmanualse9.html:<!--l. 3--><p class="noindent" >(This chapter is on the verge of being deprecated. We have
doc/src/vipsmanualse9.html:started building a replacement based on <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">GObject</span></span></span>, see
doc/src/vipsmanualse9.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse9.html:href="vipsmanualse10.html#x16-670002.4">2.4<!--tex4ht:ref: sec:object --></a>.)
doc/src/vipsmanualse9.html:<!--l. 6--><p class="indent" >  As image processing libraries increase in size it becomes
doc/src/vipsmanualse9.html:<!--l. 11--><p class="indent" >  To address this problem VIPS includes a simple database
doc/src/vipsmanualse9.html:<!--l. 16--><p class="indent" >  The operation database is extensible. You can define new
doc/src/vipsmanualse9.html:<!--l. 22--><p class="noindent" >
doc/src/vipsmanualse9.html: id="x15-600002.3.1"></a>Simple plugin example</h4>
doc/src/vipsmanualse9.html:<!--l. 24--><p class="noindent" >As an example, consider this function:
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-81">
doc/src/vipsmanualse9.html:<!--l. 40--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 42--><p class="noindent" >The source for all the example code in this section is in the
doc/src/vipsmanualse9.html:vips-examples package.
doc/src/vipsmanualse9.html:<!--l. 46--><p class="indent" >    The first step is to make a layer over this function which
doc/src/vipsmanualse9.html:        <li class="itemize">The  function  should  be  int-valued,  and  return  0
doc/src/vipsmanualse9.html:        for  success  and  non-zero  for  error.  It  should  set
doc/src/vipsmanualse9.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_error()</span></span></span>.
doc/src/vipsmanualse9.html:        argument: a pointer to a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span>-terminated array of
doc/src/vipsmanualse9.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_objects</span></span></span>.
doc/src/vipsmanualse9.html:        <li class="itemize">Each  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_object</span></span></span> represents  one  argument  to
doc/src/vipsmanualse9.html:<!--l. 66--><p class="indent" >    The argument descriptor is an array of structures,
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-82">
doc/src/vipsmanualse9.html:<!--l. 77--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 79--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">IM_INPUT_INT()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">IM_OUTPUT_INT()</span></span></span> are
doc/src/vipsmanualse9.html:macros defined in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">&#x003C;vips/dispatch.h&#x003E;</span></span></span> which make
doc/src/vipsmanualse9.html:href="#x15-600011">2.1<!--tex4ht:ref: tab:type --></a>.
doc/src/vipsmanualse9.html:<!--l. 84--><p class="indent" >  <a 
doc/src/vipsmanualse9.html: id="x15-600011"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse9.html:<!--l. 84--><p class="noindent" >
doc/src/vipsmanualse9.html:<div class="tabular"> <table id="TBL-5" class="tabular" 
doc/src/vipsmanualse9.html:><colgroup id="TBL-5-1g"><col 
doc/src/vipsmanualse9.html:id="TBL-5-1"></colgroup><colgroup id="TBL-5-2g"><col 
doc/src/vipsmanualse9.html:id="TBL-5-2"></colgroup><colgroup id="TBL-5-3g"><col 
doc/src/vipsmanualse9.html:id="TBL-5-3"></colgroup><tr 
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-1-1"  
doc/src/vipsmanualse9.html:class="td11">Macro                                       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-1-2"  
doc/src/vipsmanualse9.html:class="td11">Meaning                                 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-1-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_object </span>has type          </td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-2-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INT         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-2-2"  
doc/src/vipsmanualse9.html:class="td11">Input int                                  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-2-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">int &#x22C6;              </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-3-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INTVEC      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-3-2"  
doc/src/vipsmanualse9.html:class="td11">Input vector of int                   </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-3-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_intvec</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6; </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-4-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_IMASK       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-4-2"  
doc/src/vipsmanualse9.html:class="td11">Input int array                         </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-4-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-5-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INT        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-5-2"  
doc/src/vipsmanualse9.html:class="td11">Output int                               </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-5-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">int &#x22C6;              </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-6-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INTVEC      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-6-2"  
doc/src/vipsmanualse9.html:class="td11">Output vector of int                </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-6-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_intvec</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6; </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-7-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_IMASK      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-7-2"  
doc/src/vipsmanualse9.html:class="td11">Output int array to file            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-7-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-8-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_DOUBLE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-8-2"  
doc/src/vipsmanualse9.html:class="td11">Input double                           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-8-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">double &#x22C6;           </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-9-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_DOUBLEVEC   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-9-2"  
doc/src/vipsmanualse9.html:class="td11">Input vector of double            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-9-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_realvec</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;</span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-10-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_DMASK       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-10-2"  
doc/src/vipsmanualse9.html:class="td11">Input double array                  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-10-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-11-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_DOUBLE     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-11-2"  
doc/src/vipsmanualse9.html:class="td11">Output double                         </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-11-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">double &#x22C6;           </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-12-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_DOUBLEVEC  </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-12-2"  
doc/src/vipsmanualse9.html:class="td11">Output vector of double         </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-12-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_realvec</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;</span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-13-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_DMASK      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-13-2"  
doc/src/vipsmanualse9.html:class="td11">Output double array to file     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-13-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-14-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_DMASK</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_STATS</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-14-2"  
doc/src/vipsmanualse9.html:class="td11">Output double array to screen</td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-14-3"  
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-15-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_COMPLEX    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-15-2"  
doc/src/vipsmanualse9.html:class="td11">Output complex                      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-15-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">double &#x22C6;           </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-16-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_STRING      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-16-2"  
doc/src/vipsmanualse9.html:class="td11">Input string                             </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-16-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">char &#x22C6;             </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-17-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_STRING     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-17-2"  
doc/src/vipsmanualse9.html:class="td11">Output string                          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-17-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">char &#x22C6;             </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-18-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_IMAGE       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-18-2"  
doc/src/vipsmanualse9.html:class="td11">Input image                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-18-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;            </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-19-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-19-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_IMAGEVEC    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-19-2"  
doc/src/vipsmanualse9.html:class="td11">Vector of input images           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-19-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;&#x22C6;           </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-20-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-20-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_IMAGE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-20-2"  
doc/src/vipsmanualse9.html:class="td11">Output image                          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-20-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;            </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-21-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-21-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_RW</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_IMAGE          </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-21-2"  
doc/src/vipsmanualse9.html:class="td11">Read-write image                   </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-21-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;            </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-22-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-22-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_DISPLAY     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-22-2"  
doc/src/vipsmanualse9.html:class="td11">Input display                           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-22-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_col</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_display &#x22C6;   </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-23-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-23-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_DISPLAY    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-23-2"  
doc/src/vipsmanualse9.html:class="td11">Output display                        </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-23-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_col</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_display &#x22C6;   </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-24-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-24-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_GVALUE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-24-2"  
doc/src/vipsmanualse9.html:class="td11">Input GValue                          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-24-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">GValue &#x22C6;           </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-25-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-25-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_GVALUE     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-25-2"  
doc/src/vipsmanualse9.html:class="td11">Output GValue                       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-25-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">GValue &#x22C6;           </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-26-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-26-1"  
doc/src/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">_INTERPOLATE </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-26-2"  
doc/src/vipsmanualse9.html:class="td11">Input VipsInterpolate             </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-26-3"  
doc/src/vipsmanualse9.html:class="pcrr7t-">VipsInterpolate &#x22C6;  </span></td>
doc/src/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-27-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-27-1"  
doc/src/vipsmanualse9.html:class="content">Argument type macros</span></div><!--tex4ht:label?: x15-600011 -->
doc/src/vipsmanualse9.html:<!--l. 156--><p class="indent" >  The argument to the type macro is the name of the
doc/src/vipsmanualse9.html:argument. These names are used by user-interface programs
doc/src/vipsmanualse9.html:user-interfaces will present them to the user. You should use
doc/src/vipsmanualse9.html:    <li class="itemize">Names   should   be   entirely   in   lower-case   and
doc/src/vipsmanualse9.html:    0-9 and the underscore character &#8216;_&#8217;.
doc/src/vipsmanualse9.html:    argument.   For   example,   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_add()</span></span></span> has   the
doc/src/vipsmanualse9.html:                                                     <div class="verbatim" id="verbatim-83">
doc/src/vipsmanualse9.html:          example%&#x00A0;vips&#x00A0;-help&#x00A0;im_add
doc/src/vipsmanualse9.html:    &#x00A0;<br />&#x00A0;&#x00A0;(point-to-point&#x00A0;operation) 
doc/src/vipsmanualse9.html:   <!--l. 185--><p class="nopar" >
doc/src/vipsmanualse9.html:        options. For example, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_extract()</span></span></span> has the
doc/src/vipsmanualse9.html:    <div class="verbatim" id="verbatim-84">
doc/src/vipsmanualse9.html:    example%&#x00A0;vips&#x00A0;-help&#x00A0;im_extract
doc/src/vipsmanualse9.html:    &#x00A0;<br />&#x00A0;&#x00A0;(point-to-point&#x00A0;operation)
doc/src/vipsmanualse9.html:    <!--l. 210--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 214--><p class="indent" >  This function sits over <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">double_integer()</span></span></span>, providing
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-85">
doc/src/vipsmanualse9.html:<!--l. 233--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 235--><p class="indent" >  Finally, these two pieces of information (the argument
doc/src/vipsmanualse9.html:description and the VIPS-style function wrapper) can be
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-86">
doc/src/vipsmanualse9.html:<!--l. 250--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 253--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">IM_NUMBER()</span></span></span> is a macro which returns the number of
doc/src/vipsmanualse9.html:elements in a static array. The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">flags</span></span></span> field contains hints
doc/src/vipsmanualse9.html:which user-interfaces can use for various optimisations. At
doc/src/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/src/vipsmanualse9.html:class="pcrb7t-">_PIO</span> </dt><dd 
doc/src/vipsmanualse9.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse9.html:href="vipsmanualse15.html#x22-920003.3">3.3<!--tex4ht:ref: sec:pio --></a>).
doc/src/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/src/vipsmanualse9.html:class="pcrb7t-">_TRANSFORM</span> </dt><dd 
doc/src/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/src/vipsmanualse9.html:class="pcrb7t-">_PTOP</span> </dt><dd 
doc/src/vipsmanualse9.html:class="description">This is a point-to-point operation, that
doc/src/vipsmanualse9.html:    is, it can be replaced with a look-up table.
doc/src/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/src/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/src/vipsmanualse9.html:class="pcrb7t-">_NOCACHE</span> </dt><dd 
doc/src/vipsmanualse9.html:<!--l. 275--><p class="indent" >  This function description now needs to be added to the
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-87">
doc/src/vipsmanualse9.html:<!--l. 297--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 299--><p class="indent" >  The package has to be named <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">package_table</span></span></span>, and
doc/src/vipsmanualse9.html:<!--l. 303--><p class="indent" >    This file needs to be made into a dynamically loadable
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-88">
doc/src/vipsmanualse9.html:example%&#x00A0;gcc&#x00A0;-fPIC&#x00A0;-DPIC&#x00A0;-c
doc/src/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;&#8216;pkg-config&#x00A0;vips-7.12&#x00A0;--cflags&#8216;
doc/src/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;plug.c&#x00A0;-o&#x00A0;plug.o
doc/src/vipsmanualse9.html:&#x00A0;<br />example%&#x00A0;gcc&#x00A0;-shared&#x00A0;plug.o
doc/src/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;-o&#x00A0;double.plg
doc/src/vipsmanualse9.html:<!--l. 312--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 314--><p class="indent" >  You can now use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">double.plg</span></span></span> with any of the
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-89">
doc/src/vipsmanualse9.html:  example%&#x00A0;vips&#x00A0;-plugin&#x00A0;double.plg&#x00A0;\
doc/src/vipsmanualse9.html:<!--l. 322--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 324--><p class="indent" >  When VIPS starts up, it looks for a directory in the
doc/src/vipsmanualse9.html:library directory called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">vips-</span></span></span>, with the vips major and
doc/src/vipsmanualse9.html:there with the suffix <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">.plg</span></span></span>. So for example, on my machine,
doc/src/vipsmanualse9.html:the plugin directory is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">/usr/lib/vips-7.16</span></span></span> and any
doc/src/vipsmanualse9.html: id="x15-610002.3.2"></a>A more complicated example</h4>
doc/src/vipsmanualse9.html:<!--l. 332--><p class="noindent" >This section lists the source for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_extract()</span></span></span>&#8217;s function
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-90">
doc/src/vipsmanualse9.html:<!--l. 379--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 381--><p class="noindent" >                                              <h4 class="subsectionHead"><span class="titlemark">2.3.3    </span> <a 
doc/src/vipsmanualse9.html: id="x15-620002.3.3"></a>Adding new types</h4>
doc/src/vipsmanualse9.html:  <!--l. 383--><p class="noindent" >The VIPS type mechanism is extensible. User plug-ins can
doc/src/vipsmanualse9.html:  add new types and user-interfaces can (to a certain extent)
doc/src/vipsmanualse9.html:  provide interfaces to these user-defined types.
doc/src/vipsmanualse9.html:  <!--l. 387--><p class="indent" >    Here is the definition of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_arg_desc</span></span></span>:
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-91">
doc/src/vipsmanualse9.html:<!--l. 397--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 399--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">name</span></span></span> field is the argument name above. The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">desc</span></span></span>
doc/src/vipsmanualse9.html:the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">print</span></span></span> field is an (optionally <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span>) pointer to a
doc/src/vipsmanualse9.html:the terminal, or to copy results into a user-interface
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-92">
doc/src/vipsmanualse9.html:<!--l. 415--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 417--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_type_desc</span></span></span> is defined as:
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-93">
doc/src/vipsmanualse9.html:<!--l. 429--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 431--><p class="indent" >  Where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_arg_type</span></span></span> is defined as
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-94">
doc/src/vipsmanualse9.html: &#x00A0;<br />&#x00A0;&#x22C6;&#x00A0;then&#x00A0;you&#x00A0;should&#x00A0;use&#x00A0;the&#x00A0;built-in
doc/src/vipsmanualse9.html:<!--l. 452--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 454--><p class="indent" >  In other words, it&#8217;s just a string. When you add a new
doc/src/vipsmanualse9.html:parts of VIPS, and so needs to be &#8220;human-readable&#8221;. The
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-95">
doc/src/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x22C6;&#x00A0;an&#x00A0;im_object&#x00A0;---&#x00A0;with&#x00A0;and&#x00A0;without
doc/src/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x22C6;&#x00A0;a&#x00A0;command-line&#x00A0;string&#x00A0;to&#x00A0;help&#x00A0;you
doc/src/vipsmanualse9.html:<!--l. 483--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 485--><p class="indent" >  And the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">init</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">destroy</span></span></span> functions are:
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-96">
doc/src/vipsmanualse9.html:<!--l. 497--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 499--><p class="indent" >  As an example, here is the definition for a new type of
doc/src/vipsmanualse9.html:unsigned integers. First, we need to define the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">init</span></span></span> and
doc/src/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">print</span></span></span> functions. These transform objects of the type to
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-97">
doc/src/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse9.html:<!--l. 536--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 538--><p class="indent" >  Now we can define the type itself. We make two of
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-98">
doc/src/vipsmanualse9.html:<!--l. 565--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 567--><p class="indent" >  Finally, we can define two macros to make structures of
doc/src/vipsmanualse9.html:type <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_arg_desc</span></span></span> for us.
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-99">
doc/src/vipsmanualse9.html:<!--l. 575--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 577--><p class="indent" >  For more examples, see the definitions for the built-in
doc/src/vipsmanualse9.html:<!--l. 579--><p class="noindent" >
doc/src/vipsmanualse9.html: id="x15-630002.3.4"></a>Using function dispatch in your application</h4>
doc/src/vipsmanualse9.html:<!--l. 581--><p class="noindent" >VIPS provides a set of functions for adding new image
doc/src/vipsmanualse9.html:<!--l. 585--><p class="noindent" >
doc/src/vipsmanualse9.html: id="x15-640002.3.4"></a>Adding and removing functions</h5>
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-100">
doc/src/vipsmanualse9.html:<!--l. 590--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 592--><p class="indent" >  This function opens the named file, searches it for a
doc/src/vipsmanualse9.html:symbol named <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">package_table</span></span></span>, and adds any functions
doc/src/vipsmanualse9.html:for a function, any plug-ins are searched first, so you
doc/src/vipsmanualse9.html:<!--l. 597--><p class="indent" >    The function returns a pointer to the package it added, or
doc/src/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> on error.
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-101">
doc/src/vipsmanualse9.html:<!--l. 602--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 604--><p class="indent" >  This function closes all plug-ins, removing then from the
doc/src/vipsmanualse9.html:VIPS function database. It returns non-zero on error.
doc/src/vipsmanualse9.html:<!--l. 607--><p class="noindent" >
doc/src/vipsmanualse9.html: id="x15-650002.3.4"></a>Searching the function database</h5>
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-102">
doc/src/vipsmanualse9.html:<!--l. 612--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 614--><p class="indent" >  This function applies the argument function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">fn</span></span></span> to
doc/src/vipsmanualse9.html:recently added package. As with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_list_map()</span></span></span>, the
doc/src/vipsmanualse9.html:argument function should return <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> to continue
doc/src/vipsmanualse9.html:searching, or non-<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> to terminate the search early.
doc/src/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_map_packages()</span></span></span> returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> if <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">fn</span></span></span> returned
doc/src/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> for all arguments. The extra argument <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">a</span></span></span> is carried
doc/src/vipsmanualse9.html:<!--l. 622--><p class="indent" >    For example, this fragment of code prints the names of all
doc/src/vipsmanualse9.html:loaded packages to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">fd</span></span></span>:
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-103">
doc/src/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;pack-&#x003E;name&#x00A0;);
doc/src/vipsmanualse9.html:<!--l. 646--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 648--><p class="indent" >  VIPS defines three convenience functions based on
doc/src/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_map_packages()</span></span></span> which simplify searching for
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-104">
doc/src/vipsmanualse9.html:<!--l. 658--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 660--><p class="noindent" >
doc/src/vipsmanualse9.html: id="x15-660002.3.4"></a>Building argument structures and running commands</h5>
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-105">
doc/src/vipsmanualse9.html:<!--l. 668--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 670--><p class="indent" >  These two functions allocate space for and free VIPS
doc/src/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_malloc()</span></span></span> to allocate any store that the types require
doc/src/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">im_free()</span></span></span> for any storage that was allocated.
doc/src/vipsmanualse9.html:<!--l. 675--><p class="indent" >  Note that neither of these functions calls the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">init</span></span></span>,
doc/src/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">dest</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse9.html:class="pcrr7t-">print</span></span></span> functions for the types &#8212; that&#8217;s up to
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-106">
doc/src/vipsmanualse9.html:<!--l. 681--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 683--><p class="indent" >  This function does everything. In effect,
doc/src/vipsmanualse9.html:  <div class="verbatim" id="verbatim-107">
doc/src/vipsmanualse9.html:<!--l. 688--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 690--><p class="indent" >  is exactly equivalent to
doc/src/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-108">
doc/src/vipsmanualse9.html:<!--l. 695--><p class="nopar" >
doc/src/vipsmanualse9.html:<!--l. 697--><p class="indent" >  but no process is forked.
doc/src/vipsmanualse9.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse9.html:href="vipsmanualse8.html#tailvipsmanualse8.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse9.html:<!--l. 1--><p class="indent" >  <a 
doc/src/Makefile:	-rm -rf ${destdir}/pdf/*.pdf
doc/src/Makefile:	-rm -rf ${destdir}/html/vips*
doc/src/Makefile:	-rm -rf ${destdir}/html/figs
doc/src/Makefile:	-cp $(PDF) ${destdir}/pdf
doc/src/Makefile:	-cp -r vipsmanual/* ${destdir}/html
doc/src/Makefile:	-rm -rf vipsmanual 
doc/src/Makefile:	htlatex vipsmanual.tex html.cfg,3 "" -dvipsmanual/
doc/src/Makefile:	cp -r figs vipsmanual
doc/src/Makefile:	-rm vipsmanual/figs/*.svg
doc/src/Makefile:	-rm vipsmanual/*.png
doc/src/Makefile:	-rm -f *.4ct
doc/src/Makefile:	-rm -f *.4tc
doc/src/Makefile:	-rm -f *.log
doc/src/Makefile:	-rm -f *.xref
doc/src/Makefile:	-rm -f *.tmp
doc/src/Makefile:	-rm -f *.html
doc/src/Makefile:	-rm -f *.css
doc/src/Makefile:	-rm -f *.lg
doc/src/Makefile:	-rm -f *.idv
doc/src/Makefile:	-rm -f *.aux
doc/src/Makefile:	-rm -f *.dvi
doc/src/Makefile:	-rm -f *.lof
doc/src/Makefile:	-rm -f *.lot
doc/src/Makefile:	-rm -f *.toc
doc/src/Makefile:	-rm -f *.pdf
doc/src/Makefile:	-rm -rf vipsmanual
doc/src/wio.tex:If it succeeds, it returns 0, if it fails, it returns non-zero and
doc/src/wio.tex:user-accessible fields in the descriptor contain valid data, and that all
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:  if( im->BandFmt != IM_BANDFMT_UCHAR || 
doc/src/wio.tex:    im->Coding != IM_CODING_NONE ) {
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:  for( y = 0; y < im->Ysize; y++ ) {
doc/src/wio.tex:    (IM_IMAGE_N_ELEMENTS( im ) * im->Ysize));
doc/src/wio.tex:(0,0) is in the top-left-hand corner of the image), a descriptor and a
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:  if( in->BandFmt != IM_BANDFMT_UCHAR || in->Coding != IM_CODING_NONE ) {
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:  for( y = 0; y < in->Ysize; y++ ) {
doc/src/wio.tex:      buffer[x] = 255 - p[x];
doc/src/wio.tex:      return( -1 );
doc/src/wio.tex:output. If it is any other non-complex type, we write \verb+float+. If it
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:  if( in->Coding != IM_CODING_NONE || im_iscomplex( in ) ) {
doc/src/wio.tex:    im_error( "exptra", "uncoded non-complex only" );
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:  if( in->BandFmt != IM_BANDFMT_DOUBLE )
doc/src/wio.tex:    out->BandFmt = IM_BANDFMT_FLOAT;
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:    return( -1 );
doc/src/wio.tex:  for( y = 0; y < in->Ysize; y++ ) { \
doc/src/wio.tex:      return( -1 ); \
doc/src/wio.tex:  switch( in->BandFmt ) {
doc/src/wio.tex:      return( -1 );
doc/src/vipsmanual.aux:\newlabel{sec:cpp}{{\rEfLiNK{x6-50001.1}{1.1}}{\rEfLiNK{x6-50001.1}{3}}}
doc/src/vipsmanual.aux:\newlabel{fg:invert-c++}{{\rEfLiNK{x6-60011}{1.1}}{\rEfLiNK{x6-60011}{6}}}
doc/src/vipsmanual.aux:\newlabel{fg:invert-py}{{\rEfLiNK{x6-60022}{1.2}}{\rEfLiNK{x6-60022}{9}}}
doc/src/vipsmanual.aux:\newlabel{sec:header}{{\rEfLiNK{x7-80001.2.1}{1.2.1}}{\rEfLiNK{x7-80001.2.1}{11}}}
doc/src/vipsmanual.aux:\newlabel{fg:header}{{\rEfLiNK{x7-80011}{1.1}}{\rEfLiNK{x7-80011}{13}}}
doc/src/vipsmanual.aux:\newlabel{fg:bandfmt}{{\rEfLiNK{x7-80022}{1.2}}{\rEfLiNK{x7-80022}{16}}}
doc/src/vipsmanual.aux:\newlabel{fg:coding}{{\rEfLiNK{x7-80033}{1.3}}{\rEfLiNK{x7-80033}{19}}}
doc/src/vipsmanual.aux:\newlabel{fg:type}{{\rEfLiNK{x7-80044}{1.4}}{\rEfLiNK{x7-80044}{22}}}
doc/src/vipsmanual.aux:\newlabel{sec:compute}{{\rEfLiNK{x8-160001.3.5}{1.3.5}}{\rEfLiNK{x8-160001.3.5}{32}}}
doc/src/vipsmanual.aux:\newlabel{sec:appl}{{\rEfLiNK{x13-360002.1}{2.1}}{\rEfLiNK{x13-360002.1}{51}}}
doc/src/vipsmanual.aux:\newlabel{fg:architecture}{{\rEfLiNK{x13-360011}{2.1}}{\rEfLiNK{x13-360011}{53}}}
doc/src/vipsmanual.aux:\newlabel{fg:hello}{{\rEfLiNK{x14-380012}{2.2}}{\rEfLiNK{x14-380012}{59}}}
doc/src/vipsmanual.aux:\newlabel{fg:image}{{\rEfLiNK{x14-390013}{2.3}}{\rEfLiNK{x14-390013}{62}}}
doc/src/vipsmanual.aux:\newlabel{sec:fields}{{\rEfLiNK{x14-400002.2.3}{2.2.3}}{\rEfLiNK{x14-400002.2.3}{63}}}
doc/src/vipsmanual.aux:\newlabel{sec:open}{{\rEfLiNK{x14-410002.2.4}{2.2.4}}{\rEfLiNK{x14-410002.2.4}{63}}}
doc/src/vipsmanual.aux:\newlabel{sec:examples}{{\rEfLiNK{x14-420002.2.5}{2.2.5}}{\rEfLiNK{x14-420002.2.5}{67}}}
doc/src/vipsmanual.aux:\newlabel{fg:widthheight}{{\rEfLiNK{x14-420002.2.5}{2.2.5}}{\rEfLiNK{x14-420002.2.5}{69}}}
doc/src/vipsmanual.aux:\newlabel{fg:negative}{{\rEfLiNK{x14-420002.2.5}{2.2.5}}{\rEfLiNK{x14-420002.2.5}{72}}}
doc/src/vipsmanual.aux:\newlabel{sec:meta}{{\rEfLiNK{x14-430002.2.6}{2.2.6}}{\rEfLiNK{x14-430002.2.6}{73}}}
doc/src/vipsmanual.aux:\newlabel{sec:history}{{\rEfLiNK{x14-440002.2.7}{2.2.7}}{\rEfLiNK{x14-440002.2.7}{74}}}
doc/src/vipsmanual.aux:\newlabel{sec:eval}{{\rEfLiNK{x14-450002.2.8}{2.2.8}}{\rEfLiNK{x14-450002.2.8}{75}}}
doc/src/vipsmanual.aux:\newlabel{fg:addemup}{{\rEfLiNK{x14-480016}{2.6}}{\rEfLiNK{x14-480016}{78}}}
doc/src/vipsmanual.aux:\newlabel{sec:malloc}{{\rEfLiNK{x14-490002.2.10}{2.2.10}}{\rEfLiNK{x14-490002.2.10}{79}}}
doc/src/vipsmanual.aux:\newlabel{sec:joinup}{{\rEfLiNK{x14-520002.2.12}{2.2.12}}{\rEfLiNK{x14-520002.2.12}{81}}}
doc/src/vipsmanual.aux:\newlabel{fg:join}{{\rEfLiNK{x14-520017}{2.7}}{\rEfLiNK{x14-520017}{83}}}
doc/src/vipsmanual.aux:\newlabel{fg:thrmean}{{\rEfLiNK{x14-560018}{2.8}}{\rEfLiNK{x14-560018}{86}}}
doc/src/vipsmanual.aux:\newlabel{sec:block}{{\rEfLiNK{x14-570002.2.12}{2.2.12}}{\rEfLiNK{x14-570002.2.12}{87}}}
doc/src/vipsmanual.aux:\newlabel{sec:limit}{{\rEfLiNK{x14-580002.2.12}{2.2.12}}{\rEfLiNK{x14-580002.2.12}{87}}}
doc/src/vipsmanual.aux:\newlabel{tab:type}{{\rEfLiNK{x15-600011}{2.1}}{\rEfLiNK{x15-600011}{91}}}
doc/src/vipsmanual.aux:\newlabel{sec:number}{{\rEfLiNK{x15-600002.3.1}{2.3.1}}{\rEfLiNK{x15-600002.3.1}{94}}}
doc/src/vipsmanual.aux:\newlabel{sec:object}{{\rEfLiNK{x16-670002.4}{2.4}}{\rEfLiNK{x16-670002.4}{106}}}
doc/src/vipsmanual.aux:\newlabel{sec:format}{{\rEfLiNK{x17-740002.5}{2.5}}{\rEfLiNK{x17-740002.5}{111}}}
doc/src/vipsmanual.aux:\newlabel{fg:newformat}{{\rEfLiNK{x17-760019}{2.9}}{\rEfLiNK{x17-760019}{113}}}
doc/src/vipsmanual.aux:\newlabel{sec:interpolate}{{\rEfLiNK{x18-790002.6}{2.6}}{\rEfLiNK{x18-790002.6}{115}}}
doc/src/vipsmanual.aux:\newlabel{fg:newinterpolator}{{\rEfLiNK{x18-8100110}{2.10}}{\rEfLiNK{x18-8100110}{117}}}
doc/src/vipsmanual.aux:\newlabel{sec:oper}{{\rEfLiNK{x20-850003.1}{3.1}}{\rEfLiNK{x20-850003.1}{125}}}
doc/src/vipsmanual.aux:\newlabel{fg:average}{{\rEfLiNK{x21-890011}{3.1}}{\rEfLiNK{x21-890011}{130}}}
doc/src/vipsmanual.aux:\newlabel{fg:invert}{{\rEfLiNK{x21-900012}{3.2}}{\rEfLiNK{x21-900012}{136}}}
doc/src/vipsmanual.aux:\newlabel{sec:poly}{{\rEfLiNK{x21-910003.2.3}{3.2.3}}{\rEfLiNK{x21-910003.2.3}{137}}}
doc/src/vipsmanual.aux:\newlabel{fg:exp}{{\rEfLiNK{x21-910013}{3.3}}{\rEfLiNK{x21-910013}{139}}}
doc/src/vipsmanual.aux:\newlabel{sec:pio}{{\rEfLiNK{x22-920003.3}{3.3}}{\rEfLiNK{x22-920003.3}{144}}}
doc/src/vipsmanual.aux:\newlabel{sec:wrapone}{{\rEfLiNK{x22-930003.3.1}{3.3.1}}{\rEfLiNK{x22-930003.3.1}{144}}}
doc/src/vipsmanual.aux:\newlabel{fg:paverage}{{\rEfLiNK{x22-950015}{3.5}}{\rEfLiNK{x22-950015}{156}}}
doc/src/vipsmanual.aux:\newlabel{sec:sequence}{{\rEfLiNK{x22-960003.3.4}{3.3.4}}{\rEfLiNK{x22-960003.3.4}{160}}}
doc/src/vipsmanual.aux:\newlabel{fg:p2average}{{\rEfLiNK{x22-960017}{3.7}}{\rEfLiNK{x22-960017}{163}}}
doc/src/vipsmanual.aux:\newlabel{sec:generate}{{\rEfLiNK{x22-970003.3.5}{3.3.5}}{\rEfLiNK{x22-970003.3.5}{170}}}
doc/src/vipsmanual.aux:\newlabel{fg:p2invert}{{\rEfLiNK{x22-9700110}{3.10}}{\rEfLiNK{x22-9700110}{173}}}
doc/src/vipsmanual.aux:\newlabel{sec:callback}{{\rEfLiNK{x22-980003.3.6}{3.3.6}}{\rEfLiNK{x22-980003.3.6}{177}}}
doc/src/vipsmanual.aux:\newlabel{sec:ref}{{\rEfLiNK{x25-1050004.1}{4.1}}{\rEfLiNK{x25-1050004.1}{183}}}
doc/src/vipsmanual.aux:\newlabel{tb:nondb}{{\rEfLiNK{x25-1050011}{4.1}}{\rEfLiNK{x25-1050011}{187}}}
doc/src/vipsmanual.aux:\newlabel{sec:packages}{{\rEfLiNK{x26-1060004.2}{4.2}}{\rEfLiNK{x26-1060004.2}{189}}}
doc/src/vipsmanual.aux:\newlabel{fg:arithmetic}{{\rEfLiNK{x26-1070011}{4.1}}{\rEfLiNK{x26-1070011}{191}}}
doc/src/vipsmanual.aux:\newlabel{fg:relational}{{\rEfLiNK{x26-1080012}{4.2}}{\rEfLiNK{x26-1080012}{194}}}
doc/src/vipsmanual.aux:\newlabel{fg:boolean}{{\rEfLiNK{x26-1090013}{4.3}}{\rEfLiNK{x26-1090013}{197}}}
doc/src/vipsmanual.aux:\newlabel{sec:colour}{{\rEfLiNK{x26-1100004.2.4}{4.2.4}}{\rEfLiNK{x26-1100004.2.4}{198}}}
doc/src/vipsmanual.aux:\newlabel{fg:convert}{{\rEfLiNK{x26-1100014}{4.4}}{\rEfLiNK{x26-1100014}{200}}}
doc/src/vipsmanual.aux:\newlabel{fg:colour}{{\rEfLiNK{x26-1100025}{4.5}}{\rEfLiNK{x26-1100025}{203}}}
doc/src/vipsmanual.aux:\newlabel{fg:conversion}{{\rEfLiNK{x26-1110016}{4.6}}{\rEfLiNK{x26-1110016}{206}}}
doc/src/vipsmanual.aux:\newlabel{fg:matricies}{{\rEfLiNK{x26-1120018}{4.8}}{\rEfLiNK{x26-1120018}{213}}}
doc/src/vipsmanual.aux:\newlabel{fg:convolution}{{\rEfLiNK{x26-1130019}{4.9}}{\rEfLiNK{x26-1130019}{216}}}
doc/src/vipsmanual.aux:\newlabel{sec:inplace}{{\rEfLiNK{x26-1140004.2.8}{4.2.8}}{\rEfLiNK{x26-1140004.2.8}{217}}}
doc/src/vipsmanual.aux:\newlabel{fg:inplace}{{\rEfLiNK{x26-11400110}{4.10}}{\rEfLiNK{x26-11400110}{219}}}
doc/src/vipsmanual.aux:\newlabel{fg:freq}{{\rEfLiNK{x26-11500111}{4.11}}{\rEfLiNK{x26-11500111}{222}}}
doc/src/vipsmanual.aux:\newlabel{fg:hist}{{\rEfLiNK{x26-11600112}{4.12}}{\rEfLiNK{x26-11600112}{225}}}
doc/src/vipsmanual.aux:\newlabel{fg:morph}{{\rEfLiNK{x26-11700113}{4.13}}{\rEfLiNK{x26-11700113}{228}}}
doc/src/vipsmanual.aux:\newlabel{fg:mosaicing}{{\rEfLiNK{x26-11800114}{4.14}}{\rEfLiNK{x26-11800114}{231}}}
doc/src/vipsmanual.aux:\newlabel{fg:cimg}{{\rEfLiNK{x26-11900115}{4.15}}{\rEfLiNK{x26-11900115}{234}}}
doc/src/vipsmanual.aux:\newlabel{fg:other}{{\rEfLiNK{x26-12000116}{4.16}}{\rEfLiNK{x26-12000116}{237}}}
doc/src/vipsmanual.aux:\newlabel{fg:io}{{\rEfLiNK{x26-12100117}{4.17}}{\rEfLiNK{x26-12100117}{240}}}
doc/src/vipsmanual.aux:\newlabel{fg:format}{{\rEfLiNK{x26-12200118}{4.18}}{\rEfLiNK{x26-12200118}{243}}}
doc/src/vipsmanual.aux:\newlabel{fg:resample}{{\rEfLiNK{x26-12300119}{4.19}}{\rEfLiNK{x26-12300119}{246}}}
doc/src/vipsmanualli1.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualli1.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualli1.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualli1.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualli1.html:<!-- 3,html --> 
doc/src/vipsmanualli1.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualli1.html:  <!--l. 45--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualli1.html: id="x2-1000"></a>Contents</h2>
doc/src/vipsmanualli1.html:href="vipsmanualch1.html#x5-40001">VIPS from C++ and Python</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse1.html#x6-50001.1">Introduction</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse1.html#x6-60001.1.1" id="QQ2-6-6">If you&#8217;ve used the C API</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse2.html#x7-70001.2">The VIPS file format</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse2.html#x7-80001.2.1" id="QQ2-7-10">VIPS file header</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse2.html#x7-90001.2.2" id="QQ2-7-15">Computation formats</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse2.html#x7-100001.2.3" id="QQ2-7-16">Storage formats</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse3.html#x8-110001.3">The <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VImage </span>class</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse3.html#x8-120001.3.1" id="QQ2-8-18">Constructors</a></span>                           <br />    &#x00A0;&#x00A0;<span class="subsectionToc" >1.3.2 <a 
doc/src/vipsmanualli1.html:href="vipsmanualse3.html#x8-130001.3.2" id="QQ2-8-19">File conversion</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse3.html#x8-140001.3.3" id="QQ2-8-20">Projection functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse3.html#x8-150001.3.4" id="QQ2-8-21">Assignment</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse3.html#x8-160001.3.5" id="QQ2-8-22">Computing with <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VImage</span>s</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse3.html#x8-170001.3.6" id="QQ2-8-23">Writing results</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse3.html#x8-180001.3.7" id="QQ2-8-24">Type conversions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse4.html#x9-190001.4">The <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VMask </span>class</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse4.html#x9-200001.4.1" id="QQ2-9-26">Constructors</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse4.html#x9-210001.4.2" id="QQ2-9-27">Projection functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse4.html#x9-220001.4.3" id="QQ2-9-28">Assignment</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse4.html#x9-230001.4.4" id="QQ2-9-29">Computing with <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VMask</span></a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse4.html#x9-240001.4.5" id="QQ2-9-30"><span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VIMask </span>operations</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse4.html#x9-250001.4.6" id="QQ2-9-31"><span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VDMask </span>operations</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse4.html#x9-260001.4.7" id="QQ2-9-32">Output of masks</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse5.html#x10-270001.5">The <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VDisplay </span>class</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse5.html#x10-280001.5.1" id="QQ2-10-34">Constructors</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse5.html#x10-290001.5.2" id="QQ2-10-35">Projection functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse6.html#x11-300001.6">The <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VError </span>class</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse6.html#x11-310001.6.1" id="QQ2-11-37">Constructors</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse6.html#x11-320001.6.2" id="QQ2-11-38">Projection functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse6.html#x11-330001.6.3" id="QQ2-11-39">Computing with <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VError</span></a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse6.html#x11-340001.6.4" id="QQ2-11-40">Convenience function</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualch2.html#x12-350002">VIPS for C programmers</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse7.html#x13-360002.1">Introduction</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-370002.2">Core C API</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-380002.2.1" id="QQ2-14-45">Startup</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-390002.2.2" id="QQ2-14-47">Image descriptors</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-400002.2.3" id="QQ2-14-49">Header fields</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-410002.2.4" id="QQ2-14-50">Opening and closing</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-420002.2.5" id="QQ2-14-51">Examples</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-430002.2.6" id="QQ2-14-54">Metadata</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-440002.2.7" id="QQ2-14-55">History</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-450002.2.8" id="QQ2-14-56">Eval callbacks</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-460002.2.9" id="QQ2-14-57">Detailed rules for descriptors</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-470002.2.10" id="QQ2-14-58">Automatic resource deallocation</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-510002.2.11" id="QQ2-14-63">Error handling</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse8.html#x14-520002.2.12" id="QQ2-14-64">Joining operations together</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse9.html#x15-590002.3">Function dispatch and plug-ins</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse9.html#x15-600002.3.1" id="QQ2-15-74">Simple plugin example</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse9.html#x15-610002.3.2" id="QQ2-15-76">A more complicated example</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse9.html#x15-620002.3.3" id="QQ2-15-77">Adding new types</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse9.html#x15-630002.3.4" id="QQ2-15-78">Using function dispatch in your application</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse10.html#x16-670002.4">The VIPS base class: <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">VipsObject</span></a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse10.html#x16-680002.4.1" id="QQ2-16-83">Properties</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse10.html#x16-730002.4.2" id="QQ2-16-88">Convenience functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse11.html#x17-740002.5">Image formats</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse11.html#x17-750002.5.1" id="QQ2-17-90">How a format is represented</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse11.html#x17-760002.5.2" id="QQ2-17-91">The format class</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse11.html#x17-770002.5.3" id="QQ2-17-93">Finding a format</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse11.html#x17-780002.5.4" id="QQ2-17-94">Convenience functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse12.html#x18-790002.6">Interpolators</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse12.html#x18-800002.6.1" id="QQ2-18-96">How an interpolator is represented</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse12.html#x18-810002.6.2" id="QQ2-18-97">A sample interpolator</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse12.html#x18-820002.6.3" id="QQ2-18-99">Writing a VIPS operation that takes an interpolator as an argument</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse12.html#x18-830002.6.4" id="QQ2-18-100">Passing an interpolator to a VIPS operation</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualch3.html#x19-840003">Writing VIPS operations</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse13.html#x20-850003.1">Introduction</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse13.html#x20-860003.1.1" id="QQ2-20-103">Why use VIPS?</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse13.html#x20-870003.1.2" id="QQ2-20-104">I/O styles</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse14.html#x21-880003.2">Programming WIO operations</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse14.html#x21-890003.2.1" id="QQ2-21-106">Input from an image</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse14.html#x21-900003.2.2" id="QQ2-21-108">Output to an image</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse14.html#x21-910003.2.3" id="QQ2-21-110">Polymorphism</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse15.html#x22-920003.3">Programming PIO functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse15.html#x22-930003.3.1" id="QQ2-22-114">Easy PIO with <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualli1.html:class="pcrr7t-">_wrapone() </span>and <span 
doc/src/vipsmanualli1.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualli1.html:class="pcrr7t-">_wrapmany()</span></a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse15.html#x22-940003.3.2" id="QQ2-22-115">Region descriptors</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse15.html#x22-950003.3.3" id="QQ2-22-116">Image input with regions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse15.html#x22-960003.3.4" id="QQ2-22-119">Splitting into sequences</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse15.html#x22-970003.3.5" id="QQ2-22-123">Output to regions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse15.html#x22-980003.3.6" id="QQ2-22-126">Callbacks</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse15.html#x22-1020003.3.7" id="QQ2-22-130">Memory allocation revisited</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse16.html#x23-1030003.4">Programming in-place functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualch4.html#x24-1040004">VIPS reference</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse17.html#x25-1050004.1">Introduction</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1060004.2">VIPS packages</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1070004.2.1" id="QQ2-26-136">Arithmetic</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1080004.2.2" id="QQ2-26-138">Relational</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1090004.2.3" id="QQ2-26-140">Boolean</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1100004.2.4" id="QQ2-26-142">Colour</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1110004.2.5" id="QQ2-26-145">Conversion</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1120004.2.6" id="QQ2-26-148">Matricies</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1130004.2.7" id="QQ2-26-150">Convolution</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1140004.2.8" id="QQ2-26-152">In-place operations</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1150004.2.9" id="QQ2-26-154">Frequency filtering</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1160004.2.10" id="QQ2-26-156">Histograms and LUTs</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1170004.2.11" id="QQ2-26-158">Morphology</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1180004.2.12" id="QQ2-26-160">Mosaicing</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1190004.2.13" id="QQ2-26-162">CImg functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1200004.2.14" id="QQ2-26-164">Other</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1210004.2.15" id="QQ2-26-166">IO functions</a></span>                           <br />    &#x00A0;&#x00A0;<span class="subsectionToc" >4.2.16 <a 
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1220004.2.16" id="QQ2-26-168">Format functions</a></span>
doc/src/vipsmanualli1.html:href="vipsmanualse18.html#x26-1230004.2.17" id="QQ2-26-170">Resample functions</a></span>
doc/src/vipsmanualli1.html:  <!--l. 49--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualli1.html:<!--l. 49--><p class="indent" >  <a 
doc/src/vipsmanualli2.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualli2.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualli2.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualli2.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualli2.html:<!-- 3,html --> 
doc/src/vipsmanualli2.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualli2.html:  <!--l. 49--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualli2.html:href="vipsmanualli1.html#tailvipsmanualli1.html" >prev-tail</a>] [<a 
doc/src/vipsmanualli2.html: id="x3-2000"></a>List of Figures</h2>
doc/src/vipsmanualli2.html:href="vipsmanualse1.html#x6-60011"><span 
doc/src/vipsmanualli2.html:class="pcrr7t-">invert </span>program in C++</a></span><br /><span class="lofToc" >1.2&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse1.html#x6-60022"><span 
doc/src/vipsmanualli2.html:class="pcrr7t-">invert </span>program in Python</a></span><br /><span class="lofToc" >2.1&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse7.html#x13-360011">VIPS software
doc/src/vipsmanualli2.html:href="vipsmanualse8.html#x14-380012">Hello World for VIPS</a></span><br /><span class="lofToc" >2.3&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse8.html#x14-390013">The <span 
doc/src/vipsmanualli2.html:class="pcrr7t-">IMAGE </span>descriptor</a></span><br /><span class="lofToc" >2.4&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse8.html#x14-420014">Print width and height of
doc/src/vipsmanualli2.html:href="vipsmanualse8.html#x14-420025">Find photographic negative</a></span><br /><span class="lofToc" >2.6&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse8.html#x14-480016">Sum an array of images</a></span><br /><span class="lofToc" >2.7&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse8.html#x14-520017">Two image-processing
doc/src/vipsmanualli2.html:href="vipsmanualse8.html#x14-560018">Threshold an image at the mean value</a></span><br /><span class="lofToc" >2.9&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse11.html#x17-760019">Registering a format
doc/src/vipsmanualli2.html:href="vipsmanualse12.html#x18-8100110">Registering an interpolator in a plugin</a></span><br /><span class="lofToc" >3.1&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse14.html#x21-890011">Find average of image</a></span><br /><span class="lofToc" >3.2&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse14.html#x21-900012">Invert an
doc/src/vipsmanualli2.html:href="vipsmanualse14.html#x21-910013">Calculate <span 
doc/src/vipsmanualli2.html:class="pcrr7t-">exp() </span>for an image</a></span><br /><span class="lofToc" >3.4&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse14.html#x21-910024">Calculate <span 
doc/src/vipsmanualli2.html:class="pcrr7t-">exp() </span>for an image (cont)</a></span><br /><span class="lofToc" >3.5&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse15.html#x22-950015">First PIO
doc/src/vipsmanualli2.html:href="vipsmanualse15.html#x22-950026">First PIO average of image (cont.)</a></span><br /><span class="lofToc" >3.7&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse15.html#x22-960017">Final PIO average of image</a></span><br /><span class="lofToc" >3.8&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse15.html#x22-960028">Final
doc/src/vipsmanualli2.html:href="vipsmanualse15.html#x22-960039">Final PIO average of image (cont.)</a></span><br /><span class="lofToc" >3.10&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse15.html#x22-9700110">PIO invert</a></span><br /><span class="lofToc" >3.11&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse15.html#x22-9700211">PIO
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-1070011">Arithmetic functions</a></span><br /><span class="lofToc" >4.2&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-1080012">Relational functions</a></span><br /><span class="lofToc" >4.3&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-1090013">Boolean functions</a></span><br /><span class="lofToc" >4.4&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-1100014">VIPS
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-1100025">Colour functions</a></span><br /><span class="lofToc" >4.6&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-1110016">Conversion functions</a></span><br /><span class="lofToc" >4.7&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-1110027">Conversion functions
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-1120018">Matrix functions</a></span><br /><span class="lofToc" >4.9&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-1130019">Convolution functions</a></span><br /><span class="lofToc" >4.10&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-11400110">In-place operations</a></span><br /><span class="lofToc" >4.11&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-11500111">Fourier
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-11600112">Histogram/LUT functions</a></span><br /><span class="lofToc" >4.13&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-11700113">Morphological functions</a></span><br /><span class="lofToc" >4.14&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-11800114">Mosaic
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-11900115">CImg functions</a></span><br /><span class="lofToc" >4.16&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-12000116">Other functions</a></span><br /><span class="lofToc" >4.17&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-12100117">IO functions</a></span><br /><span class="lofToc" >4.18&#x00A0;<a 
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-12200118">Format
doc/src/vipsmanualli2.html:href="vipsmanualse18.html#x26-12300119">Resample functions</a></span><br />
doc/src/vipsmanualli2.html:  <!--l. 53--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualli2.html:href="vipsmanualli1.html#tailvipsmanualli1.html" >prev-tail</a>] [<a 
doc/src/vipsmanualli2.html:<!--l. 53--><p class="indent" >  <a 
doc/src/vipsmanualse1.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse1.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse1.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse1.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse1.html:<!-- 3,html --> 
doc/src/vipsmanualse1.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse1.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse1.html: id="x6-50001.1"></a>Introduction</h3>
doc/src/vipsmanualse1.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:cpp"></a>
doc/src/vipsmanualse1.html:<!--l. 4--><p class="indent" >  This chapter describes the C++ API for the VIPS image
doc/src/vipsmanualse1.html:for you automatically.                             <!--l. 9--><p class="indent" >    The Python interface is a very simple wrapping of
doc/src/vipsmanualse1.html:  <!--l. 14--><p class="noindent" >
doc/src/vipsmanualse1.html: id="x6-60001.1.1"></a>If you&#8217;ve used the C API</h4>
doc/src/vipsmanualse1.html:  <!--l. 16--><p class="noindent" >To show how much easier the VIPS C++ API is to use,
doc/src/vipsmanualse1.html:href="vipsmanualse8.html#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:negative --></a> to Figure&#x00A0;<a 
doc/src/vipsmanualse1.html:href="#x6-60011">1.1<!--tex4ht:ref: fg:invert-c++ --></a>. Figure&#x00A0;<a 
doc/src/vipsmanualse1.html:href="#x6-60022">1.2<!--tex4ht:ref: fg:invert-py --></a> is the same
doc/src/vipsmanualse1.html:  <!--l. 19--><p class="indent" >    A typical build line for the C++ program might be:
doc/src/vipsmanualse1.html:  <div class="verbatim" id="verbatim-1">
doc/src/vipsmanualse1.html:&#x00A0;<br />&#x00A0;&#x00A0;&#8216;pkg-config&#x00A0;vipsCC-7.18&#x00A0;\
doc/src/vipsmanualse1.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;--cflags&#x00A0;--libs&#8216;
doc/src/vipsmanualse1.html:<!--l. 25--><p class="nopar" >
doc/src/vipsmanualse1.html:<!--l. 27--><p class="indent" >  The key points are:
doc/src/vipsmanualse1.html:    <li class="itemize">You just include <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">&#x003C;vips/vips&#x003E;</span></span></span> &#8212; this then gets
doc/src/vipsmanualse1.html:    the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">vips</span></span></span> namespace.
doc/src/vipsmanualse1.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">IMAGE</span></span></span> becomes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span> and so on. The C++ API
doc/src/vipsmanualse1.html:    also includes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VDisplay</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VError</span></span></span>.
doc/src/vipsmanualse1.html:    of                             the                             <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span>
doc/src/vipsmanualse1.html:    class  &#8212;  here,  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VImage(</span><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">&#x00A0;argv[1]</span><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">&#x00A0;)</span></span></span> creates  a
doc/src/vipsmanualse1.html:    new  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span> object  using  the  first  argument  to
doc/src/vipsmanualse1.html:    member  function  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">invert()</span></span></span>,  which  inverts  the
doc/src/vipsmanualse1.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span> and  returns  a  new  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span>.  Finally  it
doc/src/vipsmanualse1.html:    calls the member function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">write()</span></span></span>, which writes
doc/src/vipsmanualse1.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse1.html:class="pcrr7t-">VError</span></span></span> class  is  covered  later.  If  you  run  this
doc/src/vipsmanualse1.html:                                                     <div class="verbatim" id="verbatim-2">
doc/src/vipsmanualse1.html:   <!--l. 57--><p class="nopar" >
doc/src/vipsmanualse1.html:<!--l. 62--><p class="indent" >  <a 
doc/src/vipsmanualse1.html: id="x6-60011"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse1.html:<div class="verbatim" id="verbatim-3">
doc/src/vipsmanualse1.html:<!--l. 88--><p class="nopar" >
doc/src/vipsmanualse1.html:class="pcrr7t-">invert </span>program in C++</span></div><!--tex4ht:label?: x6-60011 -->
doc/src/vipsmanualse1.html:<!--l. 94--><p class="indent" >  <a 
doc/src/vipsmanualse1.html: id="x6-60022"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse1.html:<div class="verbatim" id="verbatim-4">
doc/src/vipsmanualse1.html:<!--l. 105--><p class="nopar" >
doc/src/vipsmanualse1.html:class="pcrr7t-">invert </span>program in Python</span></div><!--tex4ht:label?: x6-60022 -->
doc/src/vipsmanualse1.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse1.html:<!--l. 1--><p class="indent" >  <a 
doc/src/format.tex:  object_class->nickname = "myformat";
doc/src/format.tex:  object_class->description = _( "My format" );
doc/src/format.tex:  format_class->is_a = is_myformat;
doc/src/format.tex:  format_class->header = my_header;
doc/src/format.tex:  format_class->load = my_read;
doc/src/format.tex:  format_class->save = my_write;
doc/src/format.tex:  format_class->get_flags = my_get_flags;
doc/src/format.tex:  format_class->priority = 100;
doc/src/format.tex:  format_class->suffs = my_suffs;
doc/src/format.tex:returns non-zero or until the table ends.
doc/src/vipsmanualse18.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse18.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse18.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse18.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse18.html:<!-- 3,html --> 
doc/src/vipsmanualse18.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse18.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse18.html:href="vipsmanualse17.html#tailvipsmanualse17.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse18.html: id="x26-1060004.2"></a>VIPS packages</h3>
doc/src/vipsmanualse18.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:packages"></a>
doc/src/vipsmanualse18.html:<!--l. 4--><p class="noindent" >
doc/src/vipsmanualse18.html: id="x26-1070004.2.1"></a>Arithmetic</h4>
doc/src/vipsmanualse18.html:<!--l. 6--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-1070011">4.1<!--tex4ht:ref: fg:arithmetic --></a>.
doc/src/vipsmanualse18.html:<!--l. 8--><p class="indent" >  Arithmetic functions work on images as if each band
doc/src/vipsmanualse18.html:point-to-point &#8212; each output element depends exactly upon
doc/src/vipsmanualse18.html:<!--l. 14--><p class="indent" >  Arithmetic operations try to preserve precision by
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> images together, for example,
doc/src/vipsmanualse18.html:produces a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_USHORT</span></span></span> image, and taking the
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_costra()</span></span></span> of a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_USHORT</span></span></span> image
doc/src/vipsmanualse18.html:produces a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span> image. The details of
doc/src/vipsmanualse18.html:<!--l. 23--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-1070011"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-177">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;arithmetic
doc/src/vipsmanualse18.html:&#x00A0;<br />im_abs&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;absolute&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_acostra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;acos&#x00A0;of&#x00A0;image&#x00A0;(result&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanualse18.html:&#x00A0;<br />im_add&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;add&#x00A0;two&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_asintra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;asin&#x00A0;of&#x00A0;image&#x00A0;(result&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanualse18.html:&#x00A0;<br />im_atantra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;atan&#x00A0;of&#x00A0;image&#x00A0;(result&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanualse18.html:&#x00A0;<br />im_avg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;average&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_point_bilinear&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;interpolate&#x00A0;value&#x00A0;at&#x00A0;single&#x00A0;point,&#x00A0;linearly
doc/src/vipsmanualse18.html:&#x00A0;<br />im_bandmean&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;average&#x00A0;image&#x00A0;bands
doc/src/vipsmanualse18.html:&#x00A0;<br />im_ceil&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;round&#x00A0;to&#x00A0;smallest&#x00A0;integal&#x00A0;value&#x00A0;not&#x00A0;less&#x00A0;than
doc/src/vipsmanualse18.html:&#x00A0;<br />im_cmulnorm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;multiply&#x00A0;two&#x00A0;complex&#x00A0;images,&#x00A0;normalising&#x00A0;output
doc/src/vipsmanualse18.html:&#x00A0;<br />im_costra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;cos&#x00A0;of&#x00A0;image&#x00A0;(angles&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanualse18.html:&#x00A0;<br />im_cross_phase&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;phase&#x00A0;of&#x00A0;cross&#x00A0;power&#x00A0;spectrum&#x00A0;of&#x00A0;two&#x00A0;complex&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_deviate&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;standard&#x00A0;deviation&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_divide&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;divide&#x00A0;two&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_exp10tra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;10^pel&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_expntra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;x^pel&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_expntra_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;[x,y,z]^pel&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_exptra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;e^pel&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_fav4&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;average&#x00A0;of&#x00A0;4&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_floor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;round&#x00A0;to&#x00A0;largest&#x00A0;integal&#x00A0;value&#x00A0;not&#x00A0;greater&#x00A0;than
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gadd&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;a&#x22C6;in1&#x00A0;+&#x00A0;b&#x22C6;in2&#x00A0;+&#x00A0;c&#x00A0;=&#x00A0;outfile
doc/src/vipsmanualse18.html:&#x00A0;<br />im_invert&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;photographic&#x00A0;negative
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lintra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;a&#x22C6;in&#x00A0;+&#x00A0;b&#x00A0;=&#x00A0;outfile
doc/src/vipsmanualse18.html:&#x00A0;<br />im_linreg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;pixelwise&#x00A0;linear&#x00A0;regression
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lintra_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;a&#x22C6;in&#x00A0;+&#x00A0;b&#x00A0;-&#x003E;&#x00A0;out,&#x00A0;a&#x00A0;and&#x00A0;b&#x00A0;vectors
doc/src/vipsmanualse18.html:&#x00A0;<br />im_litecor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;max(white)&#x22C6;factor&#x22C6;(in/white),&#x00A0;if&#x00A0;clip&#x00A0;==&#x00A0;1
doc/src/vipsmanualse18.html:&#x00A0;<br />im_log10tra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;log10&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_logtra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;ln&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_max&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;maximum&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_maxpos&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;of&#x00A0;maximum&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_maxpos_avg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;of&#x00A0;maximum&#x00A0;value&#x00A0;of&#x00A0;image,&#x00A0;averaging&#x00A0;in&#x00A0;case&#x00A0;of&#x00A0;draw
doc/src/vipsmanualse18.html:&#x00A0;<br />im_maxpos_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;and&#x00A0;value&#x00A0;of&#x00A0;n&#x00A0;maxima&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_measure&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;measure&#x00A0;averages&#x00A0;of&#x00A0;a&#x00A0;grid&#x00A0;of&#x00A0;patches
doc/src/vipsmanualse18.html:&#x00A0;<br />im_min&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;minimum&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_minpos&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;of&#x00A0;minimum&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_minpos_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;and&#x00A0;value&#x00A0;of&#x00A0;n&#x00A0;minima&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_multiply&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;multiply&#x00A0;two&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_powtra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;pel^x&#x00A0;ofbuildimage
doc/src/vipsmanualse18.html:&#x00A0;<br />im_powtra_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;pel^[x,y,z]&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_remainder&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;remainder&#x00A0;after&#x00A0;integer&#x00A0;division
doc/src/vipsmanualse18.html:&#x00A0;<br />im_remainderconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;remainder&#x00A0;after&#x00A0;integer&#x00A0;division&#x00A0;by&#x00A0;a&#x00A0;constant
doc/src/vipsmanualse18.html:&#x00A0;<br />im_remainderconst_vec&#x00A0;-&#x00A0;remainder&#x00A0;after&#x00A0;integer&#x00A0;division&#x00A0;by&#x00A0;a&#x00A0;vector&#x00A0;of&#x00A0;constants
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rint&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;round&#x00A0;to&#x00A0;nearest&#x00A0;integal&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_sign&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;unit&#x00A0;vector&#x00A0;in&#x00A0;direction&#x00A0;of&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_sintra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;sin&#x00A0;of&#x00A0;image&#x00A0;(angles&#x00A0;in&#x00A0;degrees)&#x00A0;<br />im_stats&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;many&#x00A0;image&#x00A0;statistics&#x00A0;in&#x00A0;one&#x00A0;pass
doc/src/vipsmanualse18.html: &#x00A0;<br />im_subtract&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;subtract&#x00A0;two&#x00A0;images
doc/src/vipsmanualse18.html: &#x00A0;<br />im_tantra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;tan&#x00A0;of&#x00A0;image&#x00A0;(angles&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanualse18.html:<!--l. 73--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Arithmetic functions</span></div><!--tex4ht:label?: x26-1070011 -->
doc/src/vipsmanualse18.html: id="x26-1080004.2.2"></a>Relational</h4>
doc/src/vipsmanualse18.html:<!--l. 80--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-1080012">4.2<!--tex4ht:ref: fg:relational --></a>.
doc/src/vipsmanualse18.html:<!--l. 82--><p class="indent" >  Relational functions compare images to other images or
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> image with the same number of
doc/src/vipsmanualse18.html:<!--l. 89--><p class="indent" >  They may be combined with the boolean functions to
doc/src/vipsmanualse18.html:form complex relational conditions. Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_max()</span></span></span> (or
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_min()</span></span></span>) to find out if a condition is true (or false) for a
doc/src/vipsmanualse18.html:<!--l. 94--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-1080012"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-178">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;relational
doc/src/vipsmanualse18.html:&#x00A0;<br />im_blend&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;use&#x00A0;cond&#x00A0;image&#x00A0;to&#x00A0;blend&#x00A0;between&#x00A0;images&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanualse18.html:&#x00A0;<br />im_equal&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;two&#x00A0;images&#x00A0;equal&#x00A0;in&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_equal_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;equals&#x00A0;doublevec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_equalconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;equals&#x00A0;const
doc/src/vipsmanualse18.html:&#x00A0;<br />im_ifthenelse&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;use&#x00A0;cond&#x00A0;image&#x00A0;to&#x00A0;choose&#x00A0;pels&#x00A0;from&#x00A0;image&#x00A0;in1&#x00A0;or&#x00A0;in2
doc/src/vipsmanualse18.html:&#x00A0;<br />im_less&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;less&#x00A0;than&#x00A0;in2&#x00A0;in&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_less_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;doublevec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lessconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;const
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lesseq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;less&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;in2&#x00A0;in&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lesseq_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;doublevec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lesseqconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;const
doc/src/vipsmanualse18.html:&#x00A0;<br />im_more&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;more&#x00A0;than&#x00A0;in2&#x00A0;in&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_more_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;doublevec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_moreconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;const
doc/src/vipsmanualse18.html:&#x00A0;<br />im_moreeq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;more&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;in2&#x00A0;in&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_moreeq_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;doublevec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_moreeqconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;const
doc/src/vipsmanualse18.html:&#x00A0;<br />im_notequal&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;two&#x00A0;images&#x00A0;not&#x00A0;equal&#x00A0;in&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_notequal_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;does&#x00A0;not&#x00A0;equal&#x00A0;doublevec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_notequalconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;does&#x00A0;not&#x00A0;equal&#x00A0;const
doc/src/vipsmanualse18.html:<!--l. 116--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Relational functions</span></div><!--tex4ht:label?: x26-1080012 -->
doc/src/vipsmanualse18.html: id="x26-1090004.2.3"></a>Boolean</h4>
doc/src/vipsmanualse18.html:<!--l. 123--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-1090013">4.3<!--tex4ht:ref: fg:boolean --></a>.
doc/src/vipsmanualse18.html:<!--l. 125--><p class="indent" >  The boolean functions perform boolean arithmetic on
doc/src/vipsmanualse18.html:pairs of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> images. They are useful for
doc/src/vipsmanualse18.html:functions. You can use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_eorconst()</span></span></span> with 255 as
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_not()</span></span></span>.
doc/src/vipsmanualse18.html:<!--l. 131--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-1090013"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-179">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;boolean
doc/src/vipsmanualse18.html:&#x00A0;<br />im_andimage&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;and&#x00A0;of&#x00A0;two&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_andimageconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;and&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;constant
doc/src/vipsmanualse18.html:&#x00A0;<br />im_andimage_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;and&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;vector&#x00A0;constant
doc/src/vipsmanualse18.html:&#x00A0;<br />im_orimage&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;or&#x00A0;of&#x00A0;two&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_orimageconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;or&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;constant
doc/src/vipsmanualse18.html:&#x00A0;<br />im_orimage_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;or&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;vector&#x00A0;constant
doc/src/vipsmanualse18.html:&#x00A0;<br />im_eorimage&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;eor&#x00A0;of&#x00A0;two&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_eorimageconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;eor&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;constant
doc/src/vipsmanualse18.html:&#x00A0;<br />im_eorimage_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;eor&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;vector&#x00A0;constant
doc/src/vipsmanualse18.html:&#x00A0;<br />im_shiftleft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shift&#x00A0;integer&#x00A0;image&#x00A0;n&#x00A0;bits&#x00A0;to&#x00A0;left
doc/src/vipsmanualse18.html:&#x00A0;<br />im_shiftright&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shift&#x00A0;integer&#x00A0;image&#x00A0;n&#x00A0;bits&#x00A0;to&#x00A0;right
doc/src/vipsmanualse18.html:<!--l. 144--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Boolean functions</span></div><!--tex4ht:label?: x26-1090013 -->
doc/src/vipsmanualse18.html: id="x26-1100004.2.4"></a>Colour</h4>
doc/src/vipsmanualse18.html:<!--l. 152--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-1100025">4.5<!--tex4ht:ref: fg:colour --></a>.
doc/src/vipsmanualse18.html:<!--l. 154--><p class="indent" >  The colour functions can be divided into two main types.
doc/src/vipsmanualse18.html:colour spaces supported by VIPS: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">RGB</span></span></span> (also referred to as
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">disp</span></span></span>), <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">sRGB</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">XYZ</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">Yxy</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">LabQ</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">LabS</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">LCh</span></span></span> and
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">UCS</span></span></span>), and second, functions for calculating colour
doc/src/vipsmanualse18.html:href="#x26-1100014">4.4<!--tex4ht:ref: fg:convert --></a> shows how the VIPS colour
doc/src/vipsmanualse18.html:<!--l. 163--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-1100014"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<!--l. 163--><p class="noindent" >
doc/src/vipsmanualse18.html:<!--l. 163--><p class="noindent" ><img 
doc/src/vipsmanualse18.html:class="content">VIPS colour space conversion</span></div><!--tex4ht:label?: x26-1100014 -->
doc/src/vipsmanualse18.html:<!--l. 168--><p class="indent" >  The colour spaces supported by VIPS are:
doc/src/vipsmanualse18.html:class="pcrb7t-">LabQ</span> </dt><dd 
doc/src/vipsmanualse18.html:    format. See the man page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_LabQ2Lab()</span></span></span>
doc/src/vipsmanualse18.html:    calculations on <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">LabQ</span></span></span> images. They are for storage
doc/src/vipsmanualse18.html:    only. Also refered to as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">LABPACK</span></span></span>.
doc/src/vipsmanualse18.html:class="pcrb7t-">LabS</span> </dt><dd 
doc/src/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span> space as a
doc/src/vipsmanualse18.html:    three- band <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_SHORT</span></span></span> image, scaled
doc/src/vipsmanualse18.html:class="pcrb7t-">Lab</span> </dt><dd 
doc/src/vipsmanualse18.html:class="description"><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span> colourspace  represents  <span 
doc/src/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span> colour
doc/src/vipsmanualse18.html:    values  with  a  three-band  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span>
doc/src/vipsmanualse18.html:class="pcrb7t-">XYZ</span> </dt><dd 
doc/src/vipsmanualse18.html:class="ptmri7t-">CIE XYZ </span>colour space represented as a three-band
doc/src/vipsmanualse18.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span> image.
doc/src/vipsmanualse18.html:class="pcrb7t-">XYZ</span> </dt><dd 
doc/src/vipsmanualse18.html:class="ptmri7t-">CIE Yxy </span>colour space represented as a three-band
doc/src/vipsmanualse18.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span> image.
doc/src/vipsmanualse18.html:class="pcrb7t-">RGB</span> </dt><dd 
doc/src/vipsmanualse18.html:class="description">(also   refered   to   as   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">disp</span></span></span>)   This   format   is
doc/src/vipsmanualse18.html:    colorimetric  image  to  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">RGB</span></span></span>,  then  turn  it  to  TIFF
doc/src/vipsmanualse18.html:    with  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_vips2tiff()</span></span></span>.  You  need  to  supply  a
doc/src/vipsmanualse18.html:    manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_col_XYZ2rgb()</span></span></span> for hints
doc/src/vipsmanualse18.html:    <!--l. 205--><p class="noindent" >VIPS   also   supports   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">sRGB</span></span></span>.   This   is   a   version
doc/src/vipsmanualse18.html:                                                     <div class="verbatim" id="verbatim-180">
doc/src/vipsmanualse18.html:   <!--l. 210--><p class="nopar" >
doc/src/vipsmanualse18.html:class="pcrb7t-">LCh</span> </dt><dd 
doc/src/vipsmanualse18.html:class="description">Like <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span>, but rectangular <span 
doc/src/vipsmanualse18.html:class="cmmi-10">ab </span>coordinates are replaced
doc/src/vipsmanualse18.html:class="cmmi-10">Ch </span>(Chroma and hue) coordinates. Hue
doc/src/vipsmanualse18.html:class="pcrb7t-">UCS</span> </dt><dd 
doc/src/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span> for
doc/src/vipsmanualse18.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">UCS</span></span></span> are extremely slow.
doc/src/vipsmanualse18.html:<!--l. 223--><p class="indent" >    All VIPS colourspaces assume a D65 illuminant.
doc/src/vipsmanualse18.html:<!--l. 225--><p class="indent" >    The colour-difference functions calculate either <span 
doc/src/vipsmanualse18.html:class="cmr-10">&#x0394;</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">E</span>
doc/src/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/src/vipsmanualse18.html:class="cmsy-7">*</span> (1976 or 2000) or <span 
doc/src/vipsmanualse18.html:class="cmr-10">&#x0394;</span><span 
doc/src/vipsmanualse18.html:class="cmmi-10">E </span>CMC(1:1) on two
doc/src/vipsmanualse18.html:images in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">XYZ</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">disp</span></span></span> colour space.
doc/src/vipsmanualse18.html:<!--l. 230--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-1100025"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-181">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;colour
doc/src/vipsmanualse18.html:&#x00A0;<br />im_LCh2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LCh&#x00A0;to&#x00A0;Lab
doc/src/vipsmanualse18.html:&#x00A0;<br />im_LCh2UCS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LCh&#x00A0;to&#x00A0;UCS
doc/src/vipsmanualse18.html:&#x00A0;<br />im_Lab2LCh&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;LCh
doc/src/vipsmanualse18.html:&#x00A0;<br />im_Lab2LabQ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;LabQ
doc/src/vipsmanualse18.html:&#x00A0;<br />im_Lab2LabS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;LabS
doc/src/vipsmanualse18.html:&#x00A0;<br />im_Lab2UCS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;UCS
doc/src/vipsmanualse18.html:&#x00A0;<br />im_Lab2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;D65&#x00A0;Lab&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanualse18.html:&#x00A0;<br />im_Lab2XYZ_temp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;XYZ,&#x00A0;with&#x00A0;a&#x00A0;specified&#x00A0;colour&#x00A0;temperature
doc/src/vipsmanualse18.html:&#x00A0;<br />im_Lab2disp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;displayable
doc/src/vipsmanualse18.html:&#x00A0;<br />im_LabQ2LabS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;LabS
doc/src/vipsmanualse18.html:&#x00A0;<br />im_LabQ2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;Lab
doc/src/vipsmanualse18.html:&#x00A0;<br />im_LabQ2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanualse18.html:&#x00A0;<br />im_LabQ2disp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;displayable
doc/src/vipsmanualse18.html:&#x00A0;<br />im_LabS2LabQ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabS&#x00A0;to&#x00A0;LabQ
doc/src/vipsmanualse18.html:&#x00A0;<br />im_LabS2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabS&#x00A0;to&#x00A0;Lab
doc/src/vipsmanualse18.html:&#x00A0;<br />im_UCS2LCh&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;UCS&#x00A0;to&#x00A0;LCh
doc/src/vipsmanualse18.html:&#x00A0;<br />im_UCS2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;UCS&#x00A0;to&#x00A0;Lab
doc/src/vipsmanualse18.html:&#x00A0;<br />im_UCS2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;UCS&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanualse18.html:&#x00A0;<br />im_XYZ2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;D65&#x00A0;XYZ&#x00A0;to&#x00A0;Lab
doc/src/vipsmanualse18.html:&#x00A0;<br />im_XYZ2Lab_temp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;Lab,&#x00A0;with&#x00A0;a&#x00A0;specified&#x00A0;colour&#x00A0;temperature
doc/src/vipsmanualse18.html:&#x00A0;<br />im_XYZ2UCS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;UCS
doc/src/vipsmanualse18.html:&#x00A0;<br />im_XYZ2Yxy&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;Yxy
doc/src/vipsmanualse18.html:&#x00A0;<br />im_XYZ2disp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;displayble
doc/src/vipsmanualse18.html:&#x00A0;<br />im_XYZ2sRGB&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;sRGB
doc/src/vipsmanualse18.html:&#x00A0;<br />im_Yxy2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Yxy&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dE00_fromLab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;CIE2000&#x00A0;for&#x00A0;two&#x00A0;Lab&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dECMC_fromLab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;CMC(1:1)&#x00A0;for&#x00A0;two&#x00A0;Lab&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dECMC_fromdisp&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;CMC(1:1)&#x00A0;for&#x00A0;two&#x00A0;displayable&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dE_fromLab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;for&#x00A0;two&#x00A0;Lab&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dE_fromXYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;for&#x00A0;two&#x00A0;XYZ&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dE_fromdisp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;for&#x00A0;two&#x00A0;displayable&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_disp2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;displayable&#x00A0;to&#x00A0;Lab
doc/src/vipsmanualse18.html:&#x00A0;<br />im_disp2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;displayable&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanualse18.html:&#x00A0;<br />im_float2rad&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;float&#x00A0;to&#x00A0;Radiance&#x00A0;packed
doc/src/vipsmanualse18.html:&#x00A0;<br />im_icc_ac2rc&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LAB&#x00A0;from&#x00A0;AC&#x00A0;to&#x00A0;RC&#x00A0;using&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/src/vipsmanualse18.html:&#x00A0;<br />im_icc_export&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;float&#x00A0;LAB&#x00A0;to&#x00A0;an&#x00A0;8-bit&#x00A0;device&#x00A0;image&#x00A0;with&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/src/vipsmanualse18.html:&#x00A0;<br />im_icc_export_depth&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;float&#x00A0;LAB&#x00A0;to&#x00A0;device&#x00A0;space&#x00A0;with&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/src/vipsmanualse18.html:&#x00A0;<br />im_icc_import&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;device&#x00A0;image&#x00A0;to&#x00A0;float&#x00A0;LAB&#x00A0;with&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/src/vipsmanualse18.html:&#x00A0;<br />im_icc_import_embedded&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;device&#x00A0;image&#x00A0;to&#x00A0;float&#x00A0;LAB&#x00A0;using&#x00A0;the&#x00A0;embedded&#x00A0;profile
doc/src/vipsmanualse18.html:&#x00A0;<br />im_icc_present&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;test&#x00A0;for&#x00A0;presence&#x00A0;of&#x00A0;ICC&#x00A0;library
doc/src/vipsmanualse18.html:&#x00A0;<br />im_icc_transform&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;between&#x00A0;two&#x00A0;device&#x00A0;images&#x00A0;with&#x00A0;a&#x00A0;pair&#x00A0;of&#x00A0;ICC&#x00A0;profiles
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lab_morph&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;morph&#x00A0;colourspace&#x00A0;of&#x00A0;a&#x00A0;LAB&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rad2float&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Radiance&#x00A0;packed&#x00A0;to&#x00A0;float
doc/src/vipsmanualse18.html:&#x00A0;<br />im_sRGB2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;sRGB&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanualse18.html:</div>                                            <!--l. 276--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Colour functions</span></div><!--tex4ht:label?: x26-1100025 -->
doc/src/vipsmanualse18.html: id="x26-1110004.2.5"></a>Conversion</h4>
doc/src/vipsmanualse18.html:<!--l. 283--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-1110016">4.6<!--tex4ht:ref: fg:conversion --></a>.
doc/src/vipsmanualse18.html:<!--l. 285--><p class="indent" >  These functions may be split into three broad groups:
doc/src/vipsmanualse18.html:(<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_clip2fmt()</span></span></span>, for example, converts an image of
doc/src/vipsmanualse18.html:any type to the specified <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT</span></span></span>), functions
doc/src/vipsmanualse18.html:supporting complex arithmetic (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_c2amph()</span></span></span>, for
doc/src/vipsmanualse18.html:simple geometric conversion (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_extract()</span></span></span> forms a
doc/src/vipsmanualse18.html:sub-image).
doc/src/vipsmanualse18.html:<!--l. 293--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">gbandjoin</span></span></span> and the C function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_gbandjoin()</span></span></span>
doc/src/vipsmanualse18.html:<!--l. 297--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-1110016"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-182">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;conversion
doc/src/vipsmanualse18.html:&#x00A0;<br />im_bandjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bandwise&#x00A0;join&#x00A0;of&#x00A0;two&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_bernd&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;from&#x00A0;pyramid&#x00A0;as&#x00A0;jpeg
doc/src/vipsmanualse18.html:&#x00A0;<br />im_black&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;black&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_c2amph&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;real&#x00A0;and&#x00A0;imaginary&#x00A0;to&#x00A0;phase&#x00A0;and&#x00A0;amplitude
doc/src/vipsmanualse18.html:&#x00A0;<br />im_c2imag&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;imaginary&#x00A0;part&#x00A0;of&#x00A0;complex&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_c2ps&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;power&#x00A0;spectrum&#x00A0;of&#x00A0;complex&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_c2real&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;real&#x00A0;part&#x00A0;of&#x00A0;complex&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_c2rect&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;phase&#x00A0;and&#x00A0;amplitude&#x00A0;to&#x00A0;real&#x00A0;and&#x00A0;imaginary
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2c&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;signed&#x00A0;8-bit&#x00A0;integer
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2cm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;complex
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2d&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;double-precision&#x00A0;float
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2dcm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;double&#x00A0;complex
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2f&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;single-precision&#x00A0;float
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2fmt&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;image&#x00A0;format&#x00A0;to&#x00A0;ofmt
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2i&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;signed&#x00A0;32-bit&#x00A0;integer
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2s&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;signed&#x00A0;16-bit&#x00A0;integer
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2ui&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;unsigned&#x00A0;32-bit&#x00A0;integer
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip2us&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;unsigned&#x00A0;16-bit&#x00A0;integer
doc/src/vipsmanualse18.html:&#x00A0;<br />im_clip&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;unsigned&#x00A0;8-bit&#x00A0;integer
doc/src/vipsmanualse18.html:&#x00A0;<br />im_copy&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_copy_morph&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;setting&#x00A0;pixel&#x00A0;layout
doc/src/vipsmanualse18.html:&#x00A0;<br />im_copy_swap&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;swapping&#x00A0;byte&#x00A0;order
doc/src/vipsmanualse18.html:&#x00A0;<br />im_copy_set&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;setting&#x00A0;informational&#x00A0;fields
doc/src/vipsmanualse18.html:&#x00A0;<br />im_copy_set_meta&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;setting&#x00A0;a&#x00A0;meta&#x00A0;field
doc/src/vipsmanualse18.html:&#x00A0;<br />im_extract_area&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;area
doc/src/vipsmanualse18.html:&#x00A0;<br />im_extract_areabands&#x00A0;-&#x00A0;extract&#x00A0;area&#x00A0;and&#x00A0;bands
doc/src/vipsmanualse18.html:&#x00A0;<br />im_extract_band&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;band
doc/src/vipsmanualse18.html:&#x00A0;<br />im_extract_bands&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;several&#x00A0;bands
doc/src/vipsmanualse18.html:&#x00A0;<br />im_extract&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;area/band
doc/src/vipsmanualse18.html:&#x00A0;<br />im_falsecolour&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;turn&#x00A0;luminance&#x00A0;changes&#x00A0;into&#x00A0;chrominance&#x00A0;changes
doc/src/vipsmanualse18.html:&#x00A0;<br />im_fliphor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;flip&#x00A0;image&#x00A0;left-right
doc/src/vipsmanualse18.html:&#x00A0;<br />im_flipver&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;flip&#x00A0;image&#x00A0;top-bottom
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gbandjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bandwise&#x00A0;join&#x00A0;of&#x00A0;many&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_grid&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;chop&#x00A0;a&#x00A0;tall&#x00A0;thin&#x00A0;image&#x00A0;into&#x00A0;a&#x00A0;grid&#x00A0;of&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_insert&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;insert&#x00A0;sub-image&#x00A0;into&#x00A0;main&#x00A0;image&#x00A0;at&#x00A0;position
doc/src/vipsmanualse18.html:&#x00A0;<br />im_insert_noexpand&#x00A0;&#x00A0;&#x00A0;-&#x00A0;insert&#x00A0;sub-image&#x00A0;into&#x00A0;main&#x00A0;image&#x00A0;at&#x00A0;position,&#x00A0;no&#x00A0;expansion
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lrjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;join&#x00A0;two&#x00A0;images&#x00A0;left-right
doc/src/vipsmanualse18.html:&#x00A0;<br />im_mask2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;DOUBLEMASK&#x00A0;to&#x00A0;VIPS&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_msb&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;uchar&#x00A0;by&#x00A0;discarding&#x00A0;bits
doc/src/vipsmanualse18.html:&#x00A0;<br />im_msb_band&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;single&#x00A0;band&#x00A0;uchar&#x00A0;by&#x00A0;discarding&#x00A0;bits
doc/src/vipsmanualse18.html:&#x00A0;<br />im_print&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;print&#x00A0;string&#x00A0;to&#x00A0;stdout
doc/src/vipsmanualse18.html:&#x00A0;<br />im_recomb&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;linear&#x00A0;recombination&#x00A0;with&#x00A0;mask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_replicate&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;replicate&#x00A0;an&#x00A0;image&#x00A0;horizontally&#x00A0;and&#x00A0;vertically
doc/src/vipsmanualse18.html:&#x00A0;<br />im_ri2c&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;join&#x00A0;two&#x00A0;non-complex&#x00A0;images&#x00A0;to&#x00A0;form&#x00A0;complex
doc/src/vipsmanualse18.html:</div>                                            <!--l. 343--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Conversion functions</span></div><!--tex4ht:label?: x26-1110016 -->
doc/src/vipsmanualse18.html:<!--l. 349--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-1110027"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-183">
doc/src/vipsmanualse18.html:im_rot180&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;180&#x00A0;degrees
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rot270&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;270&#x00A0;degrees&#x00A0;clockwise
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rot90&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;90&#x00A0;degrees&#x00A0;clockwise
doc/src/vipsmanualse18.html:&#x00A0;<br />im_scale&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;scale&#x00A0;image&#x00A0;linearly&#x00A0;to&#x00A0;fit&#x00A0;range&#x00A0;0-255
doc/src/vipsmanualse18.html:&#x00A0;<br />im_scaleps&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;logarithmic&#x00A0;scale&#x00A0;of&#x00A0;image&#x00A0;to&#x00A0;fit&#x00A0;range&#x00A0;0-255
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rightshift_size&#x00A0;&#x00A0;&#x00A0;-&#x00A0;decrease&#x00A0;size&#x00A0;by&#x00A0;a&#x00A0;power-of-two&#x00A0;factor
doc/src/vipsmanualse18.html:&#x00A0;<br />im_slice&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;slice&#x00A0;an&#x00A0;image&#x00A0;using&#x00A0;two&#x00A0;thresholds
doc/src/vipsmanualse18.html:&#x00A0;<br />im_subsample&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;subsample&#x00A0;image&#x00A0;by&#x00A0;integer&#x00A0;factors
doc/src/vipsmanualse18.html:&#x00A0;<br />im_system&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;run&#x00A0;command&#x00A0;on&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tbjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;join&#x00A0;two&#x00A0;images&#x00A0;top-bottom
doc/src/vipsmanualse18.html:&#x00A0;<br />im_text&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;text&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_thresh&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;slice&#x00A0;an&#x00A0;image&#x00A0;at&#x00A0;a&#x00A0;threshold
doc/src/vipsmanualse18.html:&#x00A0;<br />im_vips2mask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;VIPS&#x00A0;image&#x00A0;to&#x00A0;DOUBLEMASK
doc/src/vipsmanualse18.html:&#x00A0;<br />im_wrap&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shift&#x00A0;image&#x00A0;origin,&#x00A0;wrapping&#x00A0;at&#x00A0;sides
doc/src/vipsmanualse18.html:&#x00A0;<br />im_zoom&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;simple&#x00A0;zoom&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;by&#x00A0;integer&#x00A0;factors
doc/src/vipsmanualse18.html:<!--l. 365--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Conversion functions (cont.)</span></div><!--tex4ht:label?: x26-1110027 -->
doc/src/vipsmanualse18.html: id="x26-1120004.2.6"></a>Matricies</h4>
doc/src/vipsmanualse18.html:<!--l. 371--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-1120018">4.8<!--tex4ht:ref: fg:matricies --></a>.
doc/src/vipsmanualse18.html:<!--l. 373--><p class="indent" >  VIPS uses matricies for morphological operations, for
doc/src/vipsmanualse18.html:convolutions, and for some colour-space conversions. There
doc/src/vipsmanualse18.html:are two types of matrix: integer (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">INTMASK</span></span></span>) and double
doc/src/vipsmanualse18.html:precision floating point (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span>).
doc/src/vipsmanualse18.html:<!--l. 377--><p class="indent" >  For convenience, both types are stored in files as ASCII.
doc/src/vipsmanualse18.html:non-integer values in convolution masks &#8212; in other
doc/src/vipsmanualse18.html:  <center class="par-math-display" >
doc/src/vipsmanualse18.html:result =-scale + of fset
doc/src/vipsmanualse18.html:" class="par-math-display" ></center>
doc/src/vipsmanualse18.html:<!--l. 387--><p class="nopar" >
doc/src/vipsmanualse18.html:<!--l. 389--><p class="indent" >  If the scale and offset are missing, they default to 1.0 and
doc/src/vipsmanualse18.html:                                                 <div class="verbatim" id="verbatim-184">
doc/src/vipsmanualse18.html:<!--l. 399--><p class="nopar" >
doc/src/vipsmanualse18.html:<!--l. 401--><p class="indent" >  And a 3 by 3 mask for block averaging with convolution
doc/src/vipsmanualse18.html:  <div class="verbatim" id="verbatim-185">
doc/src/vipsmanualse18.html:<!--l. 408--><p class="nopar" >
doc/src/vipsmanualse18.html:<!--l. 410--><p class="noindent" >(in other words, sum all the pels in every 3 by 3 area, and
doc/src/vipsmanualse18.html:<!--l. 413--><p class="indent" >  This matrix contains only integer elements and so could
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">INTMASK</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span> matricies. However, masks
doc/src/vipsmanualse18.html:containing floating-point values (such as the output of
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_matinv()</span></span></span>) can only be used as arguments to
doc/src/vipsmanualse18.html:functions expecting <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span>s.
doc/src/vipsmanualse18.html:<!--l. 419--><p class="indent" >  A set of functions for mask input and output are also
doc/src/vipsmanualse18.html:available for C-programmers &#8212; see the manual pages for
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_read_dmask()</span></span></span>. For other matrix functions,
doc/src/vipsmanualse18.html:<!--l. 425--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-1120018"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-186">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;matrix
doc/src/vipsmanualse18.html:&#x00A0;<br />im_matcat&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;append&#x00A0;matrix&#x00A0;in2&#x00A0;to&#x00A0;the&#x00A0;end&#x00A0;of&#x00A0;matrix&#x00A0;in1
doc/src/vipsmanualse18.html:&#x00A0;<br />im_matinv&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;invert&#x00A0;matrix
doc/src/vipsmanualse18.html:&#x00A0;<br />im_matmul&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;multiply&#x00A0;matrix&#x00A0;in1&#x00A0;by&#x00A0;matrix&#x00A0;in2
doc/src/vipsmanualse18.html:&#x00A0;<br />im_mattrn&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;transpose&#x00A0;matrix
doc/src/vipsmanualse18.html:<!--l. 431--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Matrix functions</span></div><!--tex4ht:label?: x26-1120018 -->
doc/src/vipsmanualse18.html: id="x26-1130004.2.7"></a>Convolution</h4>
doc/src/vipsmanualse18.html:<!--l. 438--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-1130019">4.9<!--tex4ht:ref: fg:convolution --></a>.
doc/src/vipsmanualse18.html:<!--l. 440--><p class="indent" >  The functions available in the convolution package can be
doc/src/vipsmanualse18.html:<!--l. 443--><p class="indent" >  First, are the convolution functions. The most useful
doc/src/vipsmanualse18.html:function is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_conv()</span></span></span> which will convolve any
doc/src/vipsmanualse18.html:non-complex type with an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">INTMASK</span></span></span> matrix. The output
doc/src/vipsmanualse18.html:the input image. Of the other <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_conv()</span></span></span> functions,
doc/src/vipsmanualse18.html:functions whose name ends in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">_raw</span></span></span> do not add a black
doc/src/vipsmanualse18.html:border around the output image, functions ending in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">f</span></span></span> use
doc/src/vipsmanualse18.html:a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span> matrix and write float (or double)
doc/src/vipsmanualse18.html:output, and functions containing <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">sep</span></span></span> are for seperable
doc/src/vipsmanualse18.html:convolutions. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_compass()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_lindetect()</span></span></span>
doc/src/vipsmanualse18.html:and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_gradient()</span></span></span> convolve with rotating masks.
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_embed()</span></span></span> is used by the convolution functions to add
doc/src/vipsmanualse18.html:<!--l. 454--><p class="indent" >  Next, are the build functions. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_gauss_&#x22C6;mask()</span></span></span> and
doc/src/vipsmanualse18.html:its ilk generate gaussian masks, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_log_&#x22C6;mask()</span></span></span>
doc/src/vipsmanualse18.html:generate logs of Laplacians. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_addgnoise()</span></span></span> and
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_gaussnoise()</span></span></span> create or add gaussian noise to an
doc/src/vipsmanualse18.html:<!--l. 459--><p class="indent" >  Two functions do correlation: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_fastcor()</span></span></span> does a
doc/src/vipsmanualse18.html:quick and dirty correlation, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_spcor()</span></span></span> calculates true
doc/src/vipsmanualse18.html:<!--l. 463--><p class="indent" >  Some functions are provided for analysing images:
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_zerox()</span></span></span> counts zero-crossing points in an image,
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_mpercent()</span></span></span> finds a threshold that will isolate a
doc/src/vipsmanualse18.html:<!--l. 467--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_resize_linear()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_shrink()</span></span></span>
doc/src/vipsmanualse18.html:<!--l. 471--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-1130019"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-187">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;convolution
doc/src/vipsmanualse18.html:&#x00A0;<br />im_addgnoise&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;add&#x00A0;gaussian&#x00A0;noise&#x00A0;with&#x00A0;mean&#x00A0;0&#x00A0;and&#x00A0;std.&#x00A0;dev.&#x00A0;sigma
doc/src/vipsmanualse18.html:&#x00A0;<br />im_compass&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;with&#x00A0;8-way&#x00A0;rotating&#x00A0;integer&#x00A0;mask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_contrast_surface&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;high-contrast&#x00A0;points&#x00A0;in&#x00A0;an&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_contrast_surface_raw&#x00A0;-&#x00A0;find&#x00A0;high-contrast&#x00A0;points&#x00A0;in&#x00A0;an&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_conv&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve
doc/src/vipsmanualse18.html:&#x00A0;<br />im_conv_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve,&#x00A0;no&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_convf&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve,&#x00A0;with&#x00A0;DOUBLEMASK
doc/src/vipsmanualse18.html:&#x00A0;<br />im_convf_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve,&#x00A0;with&#x00A0;DOUBLEMASK,&#x00A0;no&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_convsep&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution
doc/src/vipsmanualse18.html:&#x00A0;<br />im_convsep_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution,&#x00A0;no&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_convsepf&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution,&#x00A0;with&#x00A0;DOUBLEMASK
doc/src/vipsmanualse18.html:&#x00A0;<br />im_convsepf_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution,&#x00A0;with&#x00A0;DOUBLEMASK,&#x00A0;no&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_convsub&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;uchar&#x00A0;to&#x00A0;uchar,&#x00A0;sub-sampling&#x00A0;by&#x00A0;xskip,&#x00A0;yskip
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dmask_xsize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;horizontal&#x00A0;size&#x00A0;of&#x00A0;a&#x00A0;doublemask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dmask_ysize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;vertical&#x00A0;size&#x00A0;of&#x00A0;a&#x00A0;doublemask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_embed&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;embed&#x00A0;in&#x00A0;within&#x00A0;a&#x00A0;set&#x00A0;of&#x00A0;borders
doc/src/vipsmanualse18.html:&#x00A0;<br />im_fastcor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;fast&#x00A0;correlate&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/src/vipsmanualse18.html:&#x00A0;<br />im_fastcor_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;fast&#x00A0;correlate&#x00A0;in2&#x00A0;within&#x00A0;in1,&#x00A0;no&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gauss_dmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;gaussian&#x00A0;DOUBLEMASK
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gauss_imask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;gaussian&#x00A0;INTMASK
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gauss_imask_sep&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;separable&#x00A0;gaussian&#x00A0;INTMASK
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gaussnoise&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;image&#x00A0;of&#x00A0;gaussian&#x00A0;noise&#x00A0;with&#x00A0;specified&#x00A0;statistics
doc/src/vipsmanualse18.html:&#x00A0;<br />im_grad_x&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;horizontal&#x00A0;difference&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_grad_y&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;vertical&#x00A0;difference&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gradcor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;non-normalised&#x00A0;correlation&#x00A0;of&#x00A0;gradient&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gradcor_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;non-normalised&#x00A0;correlation&#x00A0;of&#x00A0;gradient&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1,&#x00A0;no&#x00A0;padding
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gradient&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;with&#x00A0;2-way&#x00A0;rotating&#x00A0;mask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_imask_xsize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;horizontal&#x00A0;size&#x00A0;of&#x00A0;an&#x00A0;intmask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_imask_ysize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;vertical&#x00A0;size&#x00A0;of&#x00A0;an&#x00A0;intmask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rank_image&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;point-wise&#x00A0;pixel&#x00A0;rank
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lindetect&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;with&#x00A0;4-way&#x00A0;rotating&#x00A0;mask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_log_dmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;laplacian&#x00A0;of&#x00A0;gaussian&#x00A0;DOUBLEMASK
doc/src/vipsmanualse18.html:&#x00A0;<br />im_log_imask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;laplacian&#x00A0;of&#x00A0;gaussian&#x00A0;INTMASK
doc/src/vipsmanualse18.html:&#x00A0;<br />im_maxvalue&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;point-wise&#x00A0;maximum&#x00A0;value
doc/src/vipsmanualse18.html:&#x00A0;<br />im_mpercent&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;threshold&#x00A0;above&#x00A0;which&#x00A0;there&#x00A0;are&#x00A0;percent&#x00A0;values
doc/src/vipsmanualse18.html:&#x00A0;<br />im_phasecor_fft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;non-normalised&#x00A0;correlation&#x00A0;of&#x00A0;gradient&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rank&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rank&#x00A0;filter&#x00A0;nth&#x00A0;element&#x00A0;of&#x00A0;xsize/ysize&#x00A0;window
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rank_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rank&#x00A0;filter&#x00A0;nth&#x00A0;element&#x00A0;of&#x00A0;xsize/ysize&#x00A0;window,&#x00A0;no&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_read_dmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;matrix&#x00A0;of&#x00A0;double&#x00A0;from&#x00A0;file
doc/src/vipsmanualse18.html:&#x00A0;<br />im_resize_linear&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;resize&#x00A0;to&#x00A0;X&#x00A0;by&#x00A0;Y&#x00A0;pixels&#x00A0;with&#x00A0;linear&#x00A0;interpolation
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rotate_dmask45&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;DOUBLEMASK&#x00A0;clockwise&#x00A0;by&#x00A0;45&#x00A0;degrees
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rotate_dmask90&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;DOUBLEMASK&#x00A0;clockwise&#x00A0;by&#x00A0;90&#x00A0;degrees
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rotate_imask45&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;INTMASK&#x00A0;clockwise&#x00A0;by&#x00A0;45&#x00A0;degrees
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rotate_imask90&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;INTMASK&#x00A0;clockwise&#x00A0;by&#x00A0;90&#x00A0;degrees
doc/src/vipsmanualse18.html:&#x00A0;<br />im_sharpen&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;sharpen&#x00A0;high&#x00A0;frequencies&#x00A0;of&#x00A0;L&#x00A0;channel&#x00A0;of&#x00A0;LabQ&#x00A0;<br />im_shrink&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shrink&#x00A0;image&#x00A0;by&#x00A0;xfac,&#x00A0;yfac&#x00A0;times
doc/src/vipsmanualse18.html: &#x00A0;<br />im_spcor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;normalised&#x00A0;correlation&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/src/vipsmanualse18.html: &#x00A0;<br />im_spcor_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;normalised&#x00A0;correlation&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1,&#x00A0;no&#x00A0;black&#x00A0;padding
doc/src/vipsmanualse18.html: &#x00A0;<br />im_stretch3&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;stretch&#x00A0;3%,&#x00A0;sub-pixel&#x00A0;displace&#x00A0;by&#x00A0;xdisp/ydisp
doc/src/vipsmanualse18.html: &#x00A0;<br />im_zerox&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;+ve&#x00A0;or&#x00A0;-ve&#x00A0;zero&#x00A0;crossings&#x00A0;in&#x00A0;image
doc/src/vipsmanualse18.html:<!--l. 523--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Convolution functions</span></div><!--tex4ht:label?: x26-1130019 -->
doc/src/vipsmanualse18.html: id="x26-1140004.2.8"></a>In-place operations</h4>
doc/src/vipsmanualse18.html:<!--l. 531--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-11400110">4.10<!--tex4ht:ref: fg:inplace --></a>.
doc/src/vipsmanualse18.html:<!--l. 533--><p class="indent" >  A few of the in-place operations are available from the
doc/src/vipsmanualse18.html:command-line. Most are not.
doc/src/vipsmanualse18.html:<!--l. 537--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-11400110"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-188">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;inplace
doc/src/vipsmanualse18.html:&#x00A0;<br />im_circle&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;plot&#x00A0;circle&#x00A0;on&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_flood_blob_copy&#x00A0;-&#x00A0;flood&#x00A0;while&#x00A0;pixel&#x00A0;==&#x00A0;start&#x00A0;pixel
doc/src/vipsmanualse18.html:&#x00A0;<br />im_insertplace&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;draw&#x00A0;image&#x00A0;sub&#x00A0;inside&#x00A0;image&#x00A0;main&#x00A0;at&#x00A0;position&#x00A0;(x,y)
doc/src/vipsmanualse18.html:&#x00A0;<br />im_line&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;draw&#x00A0;line&#x00A0;between&#x00A0;points&#x00A0;(x1,y1)&#x00A0;and&#x00A0;(x2,y2)
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lineset&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;draw&#x00A0;line&#x00A0;between&#x00A0;points&#x00A0;(x1,y1)&#x00A0;and&#x00A0;(x2,y2)
doc/src/vipsmanualse18.html:<!--l. 544--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">In-place operations</span></div><!--tex4ht:label?: x26-11400110 -->
doc/src/vipsmanualse18.html: id="x26-1150004.2.9"></a>Frequency filtering</h4>
doc/src/vipsmanualse18.html:<!--l. 551--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-11500111">4.11<!--tex4ht:ref: fg:freq --></a>.
doc/src/vipsmanualse18.html:<!--l. 553--><p class="indent" >  The basic Fourier functions are <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_fwfft()</span></span></span> and
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_invfft()</span></span></span>, which calculate the fast-fourier transform
doc/src/vipsmanualse18.html:and inverse transform of an image. Also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_invfftr()</span></span></span>,
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_rotquad()</span></span></span> to move the origin to the centre of the
doc/src/vipsmanualse18.html:<!--l. 561--><p class="indent" >  Once an image is in the frequency domain, it can be
doc/src/vipsmanualse18.html:mask generator is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_create_fmask()</span></span></span> see the manual
doc/src/vipsmanualse18.html:<!--l. 567--><p class="indent" >  The other functions in the package build on these base
doc/src/vipsmanualse18.html:facilities. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_freqflt()</span></span></span> transforms an input image
doc/src/vipsmanualse18.html:transforms it back again. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_flt_image_freq()</span></span></span> will
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_freqflt()</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_disp_ps()</span></span></span> will call the right
doc/src/vipsmanualse18.html:<!--l. 576--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-11500111"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-189">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;freq_filt
doc/src/vipsmanualse18.html:&#x00A0;<br />im_create_fmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;create&#x00A0;frequency&#x00A0;domain&#x00A0;filter&#x00A0;mask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_disp_ps&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;make&#x00A0;displayable&#x00A0;power&#x00A0;spectrum
doc/src/vipsmanualse18.html:&#x00A0;<br />im_flt_image_freq&#x00A0;&#x00A0;-&#x00A0;frequency&#x00A0;domain&#x00A0;filter&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_fractsurf&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;a&#x00A0;fractal&#x00A0;surface&#x00A0;of&#x00A0;given&#x00A0;dimension
doc/src/vipsmanualse18.html:&#x00A0;<br />im_freqflt&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;frequency-domain&#x00A0;filter&#x00A0;of&#x00A0;in&#x00A0;with&#x00A0;mask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_fwfft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;forward&#x00A0;fast-fourier&#x00A0;transform
doc/src/vipsmanualse18.html:&#x00A0;<br />im_rotquad&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;quadrants&#x00A0;to&#x00A0;move&#x00A0;origin&#x00A0;to&#x00A0;centre
doc/src/vipsmanualse18.html:&#x00A0;<br />im_invfft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;inverse&#x00A0;fast-fourier&#x00A0;transform
doc/src/vipsmanualse18.html:&#x00A0;<br />im_invfftr&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;real&#x00A0;part&#x00A0;of&#x00A0;inverse&#x00A0;fast-fourier&#x00A0;transform
doc/src/vipsmanualse18.html:<!--l. 587--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Fourier functions</span></div><!--tex4ht:label?: x26-11500111 -->
doc/src/vipsmanualse18.html: id="x26-1160004.2.10"></a>Histograms and LUTs</h4>
doc/src/vipsmanualse18.html:<!--l. 594--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-11600112">4.12<!--tex4ht:ref: fg:hist --></a>.
doc/src/vipsmanualse18.html:<!--l. 596--><p class="indent" >  VIPS represents histograms and look-up tables in the
doc/src/vipsmanualse18.html:<!--l. 598--><p class="indent" >  They should have either <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">Xsize</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">Ysize</span></span></span> set to 1, and
doc/src/vipsmanualse18.html:<!--l. 602--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_histgr()</span></span></span> to find the histogram of an
doc/src/vipsmanualse18.html:image. Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_histnD()</span></span></span> to find the n-dimensional
doc/src/vipsmanualse18.html:histogram of an n-band image. Perform operations on
doc/src/vipsmanualse18.html:histograms with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_histcum()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_histnorm()</span></span></span>,
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_histspec()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_invertlut()</span></span></span>. Visualise
doc/src/vipsmanualse18.html:histograms with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_histplot()</span></span></span>. Use a histogram (or
doc/src/vipsmanualse18.html:LUT) to transform an image with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_maplut()</span></span></span>. Build a
doc/src/vipsmanualse18.html:histogram from scratch with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_identity()</span></span></span> or
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_identity_ushort()</span></span></span>.
doc/src/vipsmanualse18.html:<!--l. 610--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_lhist&#x22C6;()</span></span></span> for local histogram equalisation,
doc/src/vipsmanualse18.html:and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_stdif&#x22C6;()</span></span></span> for statisticaol differencing. The
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_tone_&#x22C6;()</span></span></span> functions are for operations on the L
doc/src/vipsmanualse18.html:<!--l. 616--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-11600112"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-190">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;histograms_lut
doc/src/vipsmanualse18.html:&#x00A0;<br />im_gammacorrect&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;gamma-correct&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_heq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;histogram-equalise&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_hist&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;and&#x00A0;graph&#x00A0;histogram&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_histcum&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;turn&#x00A0;histogram&#x00A0;to&#x00A0;cumulative&#x00A0;histogram
doc/src/vipsmanualse18.html:&#x00A0;<br />im_histeq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;form&#x00A0;histogram&#x00A0;equalistion&#x00A0;LUT
doc/src/vipsmanualse18.html:&#x00A0;<br />im_histgr&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;histogram&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_histnD&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;1D,&#x00A0;2D&#x00A0;or&#x00A0;3D&#x00A0;histogram&#x00A0;of&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_histnorm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;form&#x00A0;normalised&#x00A0;histogram
doc/src/vipsmanualse18.html:&#x00A0;<br />im_histplot&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;plot&#x00A0;graph&#x00A0;of&#x00A0;histogram
doc/src/vipsmanualse18.html:&#x00A0;<br />im_histspec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;histogram&#x00A0;which&#x00A0;will&#x00A0;make&#x00A0;pdf&#x00A0;of&#x00A0;in&#x00A0;match&#x00A0;ref
doc/src/vipsmanualse18.html:&#x00A0;<br />im_hsp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;match&#x00A0;stats&#x00A0;of&#x00A0;in&#x00A0;to&#x00A0;stats&#x00A0;of&#x00A0;ref
doc/src/vipsmanualse18.html:&#x00A0;<br />im_identity&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;identity&#x00A0;histogram
doc/src/vipsmanualse18.html:&#x00A0;<br />im_identity_ushort&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;ushort&#x00A0;identity&#x00A0;histogram
doc/src/vipsmanualse18.html:&#x00A0;<br />im_ismonotonic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;test&#x00A0;LUT&#x00A0;for&#x00A0;monotonicity
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lhisteq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;local&#x00A0;histogram&#x00A0;equalisation
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lhisteq_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;local&#x00A0;histogram&#x00A0;equalisation,&#x00A0;no&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_invertlut&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;correction&#x00A0;table&#x00A0;from&#x00A0;set&#x00A0;of&#x00A0;measures
doc/src/vipsmanualse18.html:&#x00A0;<br />im_buildlut&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;LUT&#x00A0;table&#x00A0;from&#x00A0;set&#x00A0;of&#x00A0;x/y&#x00A0;positions
doc/src/vipsmanualse18.html:&#x00A0;<br />im_maplut&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;map&#x00A0;image&#x00A0;through&#x00A0;LUT
doc/src/vipsmanualse18.html:&#x00A0;<br />im_project&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;horizontal&#x00A0;and&#x00A0;vertical&#x00A0;projections&#x00A0;of&#x00A0;an&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_stdif&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;statistical&#x00A0;differencing
doc/src/vipsmanualse18.html:&#x00A0;<br />im_stdif_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;statistical&#x00A0;differencing,&#x00A0;no&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tone_analyse&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;analyse&#x00A0;in&#x00A0;and&#x00A0;create&#x00A0;LUT&#x00A0;for&#x00A0;tone&#x00A0;adjustment
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tone_build&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;create&#x00A0;LUT&#x00A0;for&#x00A0;tone&#x00A0;adjustment&#x00A0;of&#x00A0;LabS&#x00A0;images
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tone_build_range&#x00A0;&#x00A0;-&#x00A0;create&#x00A0;LUT&#x00A0;for&#x00A0;tone&#x00A0;adjustment
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tone_map&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;map&#x00A0;L&#x00A0;channel&#x00A0;of&#x00A0;LabS&#x00A0;or&#x00A0;LabQ&#x00A0;image&#x00A0;through&#x00A0;LUT
doc/src/vipsmanualse18.html:<!--l. 644--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Histogram/LUT functions</span></div><!--tex4ht:label?: x26-11600112 -->
doc/src/vipsmanualse18.html: id="x26-1170004.2.11"></a>Morphology</h4>
doc/src/vipsmanualse18.html:<!--l. 651--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-11700113">4.13<!--tex4ht:ref: fg:morph --></a>.
doc/src/vipsmanualse18.html:<!--l. 653--><p class="indent" >  The morphological functions are used on one-band
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> binary images (images containing
doc/src/vipsmanualse18.html:only zero and not-zero). They search images for particular
doc/src/vipsmanualse18.html:<!--l. 661--><p class="indent" >  If you combine the morphological operators with
doc/src/vipsmanualse18.html:the mask rotators (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_rotate_imask45()</span></span></span>, for
doc/src/vipsmanualse18.html:384-388, Prentice-Hall, 1989 for more ideas.
doc/src/vipsmanualse18.html:<!--l. 667--><p class="indent" >  Beware that VIPS reverses the usual image processing
doc/src/vipsmanualse18.html:<!--l. 670--><p class="indent" >  The mask you give to the morphological functions should
doc/src/vipsmanualse18.html:                                                 <div class="verbatim" id="verbatim-191">
doc/src/vipsmanualse18.html:<!--l. 680--><p class="nopar" >
doc/src/vipsmanualse18.html:<!--l. 682--><p class="noindent" >applied to an image with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_erode()</span></span></span>, will find all black
doc/src/vipsmanualse18.html:pixels 4-way connected with white pixels. Essentially,
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_dilate()</span></span></span> sets pixels in the output if any part of the
doc/src/vipsmanualse18.html:mask matches, whereas <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_erode()</span></span></span> sets pixels only if all
doc/src/vipsmanualse18.html:<!--l. 688--><p class="indent" >    The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">_raw()</span></span></span> version of the functions do not add a
doc/src/vipsmanualse18.html:black border to the output. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_cntlines()</span></span></span> and
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_profile</span></span></span> are occasionally useful for analysing
doc/src/vipsmanualse18.html:<!--l. 692--><p class="indent" >    See the boolean operations <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_and()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_or()</span></span></span> and
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_eor()</span></span></span> for analogues of the usual set difference and set
doc/src/vipsmanualse18.html:<!--l. 697--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-11700113"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-192">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;morphology
doc/src/vipsmanualse18.html:&#x00A0;<br />im_cntlines&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;count&#x00A0;horizontal&#x00A0;or&#x00A0;vertical&#x00A0;lines
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dilate&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;dilate&#x00A0;image&#x00A0;with&#x00A0;mask,&#x00A0;adding&#x00A0;a&#x00A0;black&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_dilate_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;dilate&#x00A0;image&#x00A0;with&#x00A0;mask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_erode&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;erode&#x00A0;image&#x00A0;with&#x00A0;mask,&#x00A0;adding&#x00A0;a&#x00A0;black&#x00A0;border
doc/src/vipsmanualse18.html:&#x00A0;<br />im_erode_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;erode&#x00A0;image&#x00A0;with&#x00A0;mask
doc/src/vipsmanualse18.html:&#x00A0;<br />im_profile&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;first&#x00A0;horizontal/vertical&#x00A0;edge
doc/src/vipsmanualse18.html:<!--l. 705--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Morphological functions</span></div><!--tex4ht:label?: x26-11700113 -->
doc/src/vipsmanualse18.html: id="x26-1180004.2.12"></a>Mosaicing</h4>
doc/src/vipsmanualse18.html:<!--l. 712--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-11800114">4.14<!--tex4ht:ref: fg:mosaicing --></a>.
doc/src/vipsmanualse18.html:<!--l. 714--><p class="indent" >  These functions are useful for joining many small images
doc/src/vipsmanualse18.html:unstable contrast, and arbitary sub-image layout, but will
doc/src/vipsmanualse18.html:<!--l. 719--><p class="indent" >  The lowest level functions are <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_correl()</span></span></span>. and
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_affine()</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_correl()</span></span></span> searches a large image
doc/src/vipsmanualse18.html:for a small sub-image, returning the position of the best
doc/src/vipsmanualse18.html:sub-image match. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_affine()</span></span></span> performs a general
doc/src/vipsmanualse18.html:<!--l. 725--><p class="indent" >  Next, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_lrmerge()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_tbmerge()</span></span></span> blend two
doc/src/vipsmanualse18.html:images together left-right or up-down.
doc/src/vipsmanualse18.html:<!--l. 728--><p class="indent" >  Next up are <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic()</span></span></span>.
doc/src/vipsmanualse18.html:These use the two low-level merge operations to join two
doc/src/vipsmanualse18.html:from photographic sources), <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic()</span></span></span> and
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic()</span></span></span> will adjust the contrast of the left image
doc/src/vipsmanualse18.html:<!--l. 737--><p class="indent" >  The functions <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic1()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic1()</span></span></span>
doc/src/vipsmanualse18.html:are first-order analogues of the basic mosaic functions:
doc/src/vipsmanualse18.html:they take two tie-points and use them to rotate and
doc/src/vipsmanualse18.html:scale the right-hand or bottom image before starting to
doc/src/vipsmanualse18.html:<!--l. 741--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_global_balance()</span></span></span> can be used to
doc/src/vipsmanualse18.html:re-balance a mosaic which has been assembled with
doc/src/vipsmanualse18.html:low-level balancer built into <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic()</span></span></span> and
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic()</span></span></span>. See the man page. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_remosaic()</span></span></span>
doc/src/vipsmanualse18.html:<!--l. 749--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-11800114"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-193">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;mosaicing
doc/src/vipsmanualse18.html:&#x00A0;<br />im_align_bands&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;align&#x00A0;the&#x00A0;bands&#x00A0;of&#x00A0;an&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_correl&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;search&#x00A0;area&#x00A0;around&#x00A0;sec&#x00A0;for&#x00A0;match&#x00A0;for&#x00A0;area&#x00A0;around&#x00A0;ref
doc/src/vipsmanualse18.html:&#x00A0;<br />im__find_lroverlap&#x00A0;&#x00A0;&#x00A0;-&#x00A0;search&#x00A0;for&#x00A0;left-right&#x00A0;overlap&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanualse18.html:&#x00A0;<br />im__find_tboverlap&#x00A0;&#x00A0;&#x00A0;-&#x00A0;search&#x00A0;for&#x00A0;top-bottom&#x00A0;overlap&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_global_balance&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;automatically&#x00A0;rebuild&#x00A0;mosaic&#x00A0;with&#x00A0;balancing
doc/src/vipsmanualse18.html:&#x00A0;<br />im_global_balancef&#x00A0;&#x00A0;&#x00A0;-&#x00A0;automatically&#x00A0;rebuild&#x00A0;mosaic&#x00A0;with&#x00A0;balancing,&#x00A0;float&#x00A0;output
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lrmerge&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;left-right&#x00A0;merge&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lrmerge1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;left-right&#x00A0;merge&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lrmosaic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;left-right&#x00A0;mosaic&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_lrmosaic1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;left-right&#x00A0;mosaic&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanualse18.html:&#x00A0;<br />im_match_linear&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;resample&#x00A0;ref&#x00A0;so&#x00A0;that&#x00A0;tie-points&#x00A0;match
doc/src/vipsmanualse18.html:&#x00A0;<br />im_match_linear_search&#x00A0;-&#x00A0;search&#x00A0;sec,&#x00A0;then&#x00A0;resample&#x00A0;so&#x00A0;that&#x00A0;tie-points&#x00A0;match
doc/src/vipsmanualse18.html:&#x00A0;<br />im_maxpos_subpel&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;subpixel&#x00A0;position&#x00A0;of&#x00A0;maximum&#x00A0;of&#x00A0;(phase&#x00A0;correlation)&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_remosaic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;automatically&#x00A0;rebuild&#x00A0;mosaic&#x00A0;with&#x00A0;new&#x00A0;files
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tbmerge&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;top-bottom&#x00A0;merge&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tbmerge1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;top-bottom&#x00A0;merge&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tbmosaic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;top-bottom&#x00A0;mosaic&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tbmosaic1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;top-bottom&#x00A0;mosaic&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanualse18.html:<!--l. 769--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Mosaic functions</span></div><!--tex4ht:label?: x26-11800114 -->
doc/src/vipsmanualse18.html: id="x26-1190004.2.13"></a>CImg functions</h4>
doc/src/vipsmanualse18.html:<!--l. 776--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-11900115">4.15<!--tex4ht:ref: fg:cimg --></a>.
doc/src/vipsmanualse18.html:<!--l. 778--><p class="indent" >  These operations wrap the anisotropic blur function from
doc/src/vipsmanualse18.html:<!--l. 782--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-11900115"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-194">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;cimg
doc/src/vipsmanualse18.html:&#x00A0;<br />im_greyc&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;noise-removing&#x00A0;filter
doc/src/vipsmanualse18.html:&#x00A0;<br />im_greyc_mask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;noise-removing&#x00A0;filter,&#x00A0;with&#x00A0;a&#x00A0;mask
doc/src/vipsmanualse18.html:<!--l. 786--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">CImg functions</span></div><!--tex4ht:label?: x26-11900115 -->
doc/src/vipsmanualse18.html: id="x26-1200004.2.14"></a>Other</h4>
doc/src/vipsmanualse18.html:<!--l. 793--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-12000116">4.16<!--tex4ht:ref: fg:other --></a>.
doc/src/vipsmanualse18.html:<!--l. 795--><p class="indent" >  These functions generate various test images. You can
doc/src/vipsmanualse18.html:<!--l. 798--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">im_benchmark&#x22C6;()</span></span></span> operations are for testing the
doc/src/vipsmanualse18.html:<!--l. 801--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-12000116"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-195">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;other
doc/src/vipsmanualse18.html:&#x00A0;<br />im_benchmark&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;do&#x00A0;something&#x00A0;complicated&#x00A0;for&#x00A0;testing
doc/src/vipsmanualse18.html:&#x00A0;<br />im_benchmark2&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;do&#x00A0;something&#x00A0;complicated&#x00A0;for&#x00A0;testing
doc/src/vipsmanualse18.html:&#x00A0;<br />im_benchmarkn&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;do&#x00A0;something&#x00A0;complicated&#x00A0;for&#x00A0;testing
doc/src/vipsmanualse18.html:&#x00A0;<br />im_eye&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_UCHAR&#x00A0;[0,255]&#x00A0;frequency/amplitude&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_grey&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_UCHAR&#x00A0;[0,255]&#x00A0;grey&#x00A0;scale&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_feye&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_FLOAT&#x00A0;[-1,1]&#x00A0;frequency/amplitude&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_fgrey&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_FLOAT&#x00A0;[0,1]&#x00A0;grey&#x00A0;scale&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_fzone&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_FLOAT&#x00A0;[-1,1]&#x00A0;zone&#x00A0;plate&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_make_xy&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;image&#x00A0;with&#x00A0;pixel&#x00A0;value&#x00A0;equal&#x00A0;to&#x00A0;coordinate
doc/src/vipsmanualse18.html:&#x00A0;<br />im_zone&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_UCHAR&#x00A0;[0,255]&#x00A0;zone&#x00A0;plate&#x00A0;image
doc/src/vipsmanualse18.html:<!--l. 813--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Other functions</span></div><!--tex4ht:label?: x26-12000116 -->
doc/src/vipsmanualse18.html: id="x26-1210004.2.15"></a>IO functions</h4>
doc/src/vipsmanualse18.html:<!--l. 820--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-12100117">4.17<!--tex4ht:ref: fg:io --></a>.
doc/src/vipsmanualse18.html:<!--l. 822--><p class="indent" >  These functions are related to the image IO system.
doc/src/vipsmanualse18.html:<!--l. 825--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-12100117"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-196">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;iofuncs
doc/src/vipsmanualse18.html:&#x00A0;<br />im_binfile&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;open&#x00A0;a&#x00A0;headerless&#x00A0;binary&#x00A0;file
doc/src/vipsmanualse18.html:&#x00A0;<br />im_cache&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;cache&#x00A0;results&#x00A0;of&#x00A0;an&#x00A0;operation
doc/src/vipsmanualse18.html:&#x00A0;<br />im_guess_prefix&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;guess&#x00A0;install&#x00A0;area
doc/src/vipsmanualse18.html:&#x00A0;<br />im_guess_libdir&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;guess&#x00A0;library&#x00A0;area
doc/src/vipsmanualse18.html:&#x00A0;<br />im_header_get_type&#x00A0;-&#x00A0;return&#x00A0;field&#x00A0;type
doc/src/vipsmanualse18.html:&#x00A0;<br />im_header_int&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;int&#x00A0;fields&#x00A0;from&#x00A0;header
doc/src/vipsmanualse18.html:&#x00A0;<br />im_header_double&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;double&#x00A0;fields&#x00A0;from&#x00A0;header
doc/src/vipsmanualse18.html:&#x00A0;<br />im_header_string&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;string&#x00A0;fields&#x00A0;from&#x00A0;header
doc/src/vipsmanualse18.html:&#x00A0;<br />im_version&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;VIPS&#x00A0;version&#x00A0;number
doc/src/vipsmanualse18.html:&#x00A0;<br />im_version_string&#x00A0;&#x00A0;-&#x00A0;VIPS&#x00A0;version&#x00A0;string
doc/src/vipsmanualse18.html:<!--l. 837--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">IO functions</span></div><!--tex4ht:label?: x26-12100117 -->
doc/src/vipsmanualse18.html: id="x26-1220004.2.16"></a>Format functions</h4>
doc/src/vipsmanualse18.html:<!--l. 844--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-12200118">4.18<!--tex4ht:ref: fg:format --></a>.
doc/src/vipsmanualse18.html:<!--l. 846--><p class="indent" >  These functions convert to and from various image
doc/src/vipsmanualse18.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse18.html:href="vipsmanualse11.html#x17-740002.5">2.5<!--tex4ht:ref: sec:format --></a> for a nice API over these. VIPS can
doc/src/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse18.html:class="pcrr7t-">VipsFormat</span></span></span>.
doc/src/vipsmanualse18.html:<!--l. 851--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-12200118"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-197">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;format
doc/src/vipsmanualse18.html:&#x00A0;<br />im_csv2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;csv&#x00A0;format
doc/src/vipsmanualse18.html:&#x00A0;<br />im_jpeg2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;from&#x00A0;jpeg
doc/src/vipsmanualse18.html:&#x00A0;<br />im_magick2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;load&#x00A0;file&#x00A0;with&#x00A0;libMagick
doc/src/vipsmanualse18.html:&#x00A0;<br />im_png2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;PNG&#x00A0;file&#x00A0;to&#x00A0;VIPS&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_exr2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;an&#x00A0;OpenEXR&#x00A0;file&#x00A0;to&#x00A0;VIPS
doc/src/vipsmanualse18.html:&#x00A0;<br />im_ppm2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;pbm/pgm/ppm&#x00A0;format
doc/src/vipsmanualse18.html:&#x00A0;<br />im_analyze2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;analyze&#x00A0;format
doc/src/vipsmanualse18.html:&#x00A0;<br />im_tiff2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;TIFF&#x00A0;file&#x00A0;to&#x00A0;VIPS&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_vips2csv&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;write&#x00A0;an&#x00A0;image&#x00A0;in&#x00A0;csv&#x00A0;format
doc/src/vipsmanualse18.html:&#x00A0;<br />im_vips2jpeg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;jpeg
doc/src/vipsmanualse18.html:&#x00A0;<br />im_vips2mimejpeg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;jpeg&#x00A0;as&#x00A0;mime&#x00A0;type&#x00A0;on&#x00A0;stdout
doc/src/vipsmanualse18.html:&#x00A0;<br />im_vips2png&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;VIPS&#x00A0;image&#x00A0;to&#x00A0;PNG&#x00A0;file
doc/src/vipsmanualse18.html:&#x00A0;<br />im_vips2ppm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;write&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;pbm/pgm/ppm&#x00A0;format
doc/src/vipsmanualse18.html:&#x00A0;<br />im_vips2tiff&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;VIPS&#x00A0;image&#x00A0;to&#x00A0;TIFF&#x00A0;file
doc/src/vipsmanualse18.html:<!--l. 867--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Format functions</span></div><!--tex4ht:label?: x26-12200118 -->
doc/src/vipsmanualse18.html: id="x26-1230004.2.17"></a>Resample functions</h4>
doc/src/vipsmanualse18.html:<!--l. 874--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanualse18.html:href="#x26-12300119">4.19<!--tex4ht:ref: fg:resample --></a>.
doc/src/vipsmanualse18.html:<!--l. 876--><p class="indent" >  These functions resample images with various
doc/src/vipsmanualse18.html:<!--l. 879--><p class="indent" >  <a 
doc/src/vipsmanualse18.html: id="x26-12300119"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse18.html:<div class="verbatim" id="verbatim-198">
doc/src/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;resample
doc/src/vipsmanualse18.html:&#x00A0;<br />im_affine&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;affine&#x00A0;transform
doc/src/vipsmanualse18.html:&#x00A0;<br />im_affinei&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;affine&#x00A0;transform
doc/src/vipsmanualse18.html:&#x00A0;<br />im_affinei_all&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;affine&#x00A0;transform&#x00A0;of&#x00A0;whole&#x00A0;image
doc/src/vipsmanualse18.html:&#x00A0;<br />im_similarity_area&#x00A0;&#x00A0;&#x00A0;-&#x00A0;output&#x00A0;area&#x00A0;xywh&#x00A0;of&#x00A0;similarity&#x00A0;transformation
doc/src/vipsmanualse18.html:&#x00A0;<br />im_similarity&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;similarity&#x00A0;transformation
doc/src/vipsmanualse18.html:<!--l. 886--><p class="nopar" >
doc/src/vipsmanualse18.html:class="content">Resample functions</span></div><!--tex4ht:label?: x26-12300119 -->
doc/src/vipsmanualse18.html:  <!--l. 91--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse18.html:href="vipsmanualse17.html#tailvipsmanualse17.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse18.html:<!--l. 91--><p class="indent" >  <a 
doc/src/vipsmanualch3.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualch3.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualch3.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualch3.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualch3.html:<!-- 3,html --> 
doc/src/vipsmanualch3.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualch3.html:  <!--l. 79--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualch3.html:href="vipsmanualch2.html#tailvipsmanualch2.html" >prev-tail</a>] [<a 
doc/src/vipsmanualch3.html: id="x19-840003"></a>Writing VIPS operations</h2>
doc/src/vipsmanualch3.html:href="vipsmanualse13.html#x20-850003.1">Introduction</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse13.html#x20-860003.1.1">Why use VIPS?</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse13.html#x20-870003.1.2">I/O styles</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse14.html#x21-880003.2">Programming WIO operations</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse14.html#x21-890003.2.1">Input from an image</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse14.html#x21-900003.2.2">Output to an image</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse14.html#x21-910003.2.3">Polymorphism</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse15.html#x22-920003.3">Programming PIO functions</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse15.html#x22-930003.3.1">Easy PIO with <span 
doc/src/vipsmanualch3.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualch3.html:class="pcrr7t-">_wrapone() </span>and <span 
doc/src/vipsmanualch3.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualch3.html:class="pcrr7t-">_wrapmany()</span></a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse15.html#x22-940003.3.2">Region descriptors</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse15.html#x22-950003.3.3">Image input with regions</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse15.html#x22-960003.3.4">Splitting into sequences</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse15.html#x22-970003.3.5">Output to regions</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse15.html#x22-980003.3.6">Callbacks</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse15.html#x22-1020003.3.7">Memory allocation revisited</a></span>
doc/src/vipsmanualch3.html:href="vipsmanualse16.html#x23-1030003.4">Programming in-place functions</a></span>
doc/src/vipsmanualch3.html:  <!--l. 86--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualch3.html:href="vipsmanualch2.html#tailvipsmanualch2.html" >prev-tail</a>] [<a 
doc/src/vipsmanualch3.html:<!--l. 86--><p class="indent" >  <a 
doc/src/mydefs.tex:% make a 2-column figure ... define our own so we can easily override in html
doc/src/mydefs.tex:% same for 2-col tables
doc/src/mydefs.tex:~~~ & ~ & ~~~ & ~ & ~~~ & ~ & ~~~ & ~ & ~~~ & ~ & ~~~ & ~ & ~~~ & ~ & ~~~ & \\[-1.3em]
doc/src/mydefs.tex:% causes problems for htlatex :-( 
doc/src/mydefs.tex:\addtolength{\oddsidemargin}{-0.25in}
doc/src/mydefs.tex:\addtolength{\evensidemargin}{-0.25in}
doc/src/mydefs.tex:%\addtolength{\oddsidemargin}{-0.2in}
doc/src/mydefs.tex:\addtolength{\topmargin}{-0.5em}
doc/src/object.tex:starts the object working. It returns non-zero on error, setting
doc/src/object.tex:parse command-line arguments. The syntax is:
doc/src/object.tex:nickname [ ( required-arg1, 
doc/src/object.tex:  required-argn,
doc/src/object.tex:  optional-arg-name = value,
doc/src/object.tex:  optional-argm-name = value ) ]
doc/src/object.tex:A switch to the \verb+vips+ command-line program is handy for listing subtypes
doc/src/object.tex:$ vips --list classes
doc/src/vipsmanualse12.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse12.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse12.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse12.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse12.html:<!-- 3,html --> 
doc/src/vipsmanualse12.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse12.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse12.html:href="vipsmanualse11.html#tailvipsmanualse11.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse12.html: id="x18-790002.6"></a>Interpolators</h3>
doc/src/vipsmanualse12.html:<!--l. 4--><p class="noindent" >VIPS has a general system for representing pixel interpolators.
doc/src/vipsmanualse12.html:operations, such as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">im_affinei()</span></span></span>, you can add new
doc/src/vipsmanualse12.html:<!--l. 9--><p class="indent" >  An interpolator is a function of the form:
doc/src/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-119">
doc/src/vipsmanualse12.html:<!--l. 14--><p class="nopar" >
doc/src/vipsmanualse12.html:<!--l. 16--><p class="noindent" >given the set of input pixels <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">in</span></span></span>, it has to calculate a value
doc/src/vipsmanualse12.html:class="cmr-10">(</span><span 
doc/src/vipsmanualse12.html:class="cmmi-10">x,y</span><span 
doc/src/vipsmanualse12.html:class="cmr-10">) </span>and write this value to the
doc/src/vipsmanualse12.html:memory pointed to by <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">out</span></span></span>.
doc/src/vipsmanualse12.html:<!--l. 21--><p class="indent" >    VIPS uses corner convention, so the value of pixel <span 
doc/src/vipsmanualse12.html:class="cmr-10">(0</span><span 
doc/src/vipsmanualse12.html:class="cmmi-10">,</span><span 
doc/src/vipsmanualse12.html:class="cmr-10">0)</span>
doc/src/vipsmanualse12.html:class="cmr-10">(0</span><span 
doc/src/vipsmanualse12.html:class="cmmi-10">.</span><span 
doc/src/vipsmanualse12.html:class="cmr-10">0</span><span 
doc/src/vipsmanualse12.html:class="cmmi-10">,</span><span 
doc/src/vipsmanualse12.html:class="cmr-10">0</span><span 
doc/src/vipsmanualse12.html:class="cmmi-10">.</span><span 
doc/src/vipsmanualse12.html:class="cmr-10">0)</span>.
doc/src/vipsmanualse12.html:<!--l. 24--><p class="noindent" >
doc/src/vipsmanualse12.html: id="x18-800002.6.1"></a>How an interpolator is represented</h4>
doc/src/vipsmanualse12.html:<!--l. 26--><p class="noindent" >See the man page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> for full
doc/src/vipsmanualse12.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> implementing the following
doc/src/vipsmanualse12.html:        <li class="itemize">A            function            <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">get_window_size()</span></span></span>
doc/src/vipsmanualse12.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">get_window_size()</span></span></span> NULL  and  just  set  the
doc/src/vipsmanualse12.html:        int value <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">window_size</span></span></span>.
doc/src/vipsmanualse12.html:<!--l. 46--><p class="noindent" >
doc/src/vipsmanualse12.html: id="x18-810002.6.2"></a>A sample interpolator</h4>
doc/src/vipsmanualse12.html:<!--l. 48--><p class="noindent" >As an example, Figure&#x00A0;<a 
doc/src/vipsmanualse12.html:href="#x18-8100110">2.10<!--tex4ht:ref: fg:newinterpolator --></a> shows how to register a new
doc/src/vipsmanualse12.html:<!--l. 52--><p class="indent" >  <a 
doc/src/vipsmanualse12.html: id="x18-8100110"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse12.html:<div class="verbatim" id="verbatim-120">
doc/src/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Nearest-neighbor.
doc/src/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;IM_IMAGE_SIZEOF_PEL(&#x00A0;in-&#x003E;im&#x00A0;)&#x00A0;);
doc/src/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;nickname&#x00A0;=&#x00A0;"myinterpolator";
doc/src/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;description&#x00A0;=&#x00A0;_(&#x00A0;"My&#x00A0;interpolator"&#x00A0;);
doc/src/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;interpolate_class-&#x003E;interpolate&#x00A0;=&#x00A0;myinterpolator_interpolate;
doc/src/vipsmanualse12.html:<!--l. 96--><p class="nopar" >
doc/src/vipsmanualse12.html:class="content">Registering an interpolator in a plugin</span></div><!--tex4ht:label?: x18-8100110 -->    
doc/src/vipsmanualse12.html: id="x18-820002.6.3"></a>Writing a VIPS operation that takes an interpolator
doc/src/vipsmanualse12.html:<!--l. 103--><p class="noindent" >Operations just take a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> as an
doc/src/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-121">
doc/src/vipsmanualse12.html:<!--l. 110--><p class="nopar" >
doc/src/vipsmanualse12.html:<!--l. 112--><p class="indent" >  To use the interpolator, use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">vips_interpolate()</span></span></span>:
doc/src/vipsmanualse12.html:  <div class="verbatim" id="verbatim-122">
doc/src/vipsmanualse12.html:<!--l. 117--><p class="nopar" >
doc/src/vipsmanualse12.html:<!--l. 119--><p class="noindent" >This looks up the interpolate method for the object and calls
doc/src/vipsmanualse12.html:<!--l. 122--><p class="indent" >  You can save the cost of the lookup in an inner loop with
doc/src/vipsmanualse12.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">vips_interpolate_get_method()</span></span></span>:
doc/src/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-123">
doc/src/vipsmanualse12.html:<!--l. 129--><p class="nopar" >
doc/src/vipsmanualse12.html:<!--l. 131--><p class="noindent" >
doc/src/vipsmanualse12.html: id="x18-830002.6.4"></a>Passing an interpolator to a VIPS operation</h4>
doc/src/vipsmanualse12.html:<!--l. 133--><p class="noindent" >You can build an instance of a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">VipsInterpolator</span></span></span>
doc/src/vipsmanualse12.html:with the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">vips_object_&#x22C6;()</span></span></span> family of functions, see
doc/src/vipsmanualse12.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse12.html:href="vipsmanualse10.html#x16-670002.4">2.4<!--tex4ht:ref: sec:object --></a>.
doc/src/vipsmanualse12.html:<!--l. 136--><p class="indent" >    Convenience functions return a static instance of one of
doc/src/vipsmanualse12.html:  <div class="verbatim" id="verbatim-124">
doc/src/vipsmanualse12.html:<!--l. 143--><p class="nopar" >
doc/src/vipsmanualse12.html:<!--l. 145--><p class="noindent" >Don&#8217;t free the result.
doc/src/vipsmanualse12.html:<!--l. 148--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">vips_interpolate_new()</span></span></span> makes a
doc/src/vipsmanualse12.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> from a nickname:
doc/src/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-125">
doc/src/vipsmanualse12.html:<!--l. 153--><p class="nopar" >
doc/src/vipsmanualse12.html:<!--l. 155--><p class="indent" >  For example:
doc/src/vipsmanualse12.html:  <div class="verbatim" id="verbatim-126">
doc/src/vipsmanualse12.html:<!--l. 159--><p class="nopar" >
doc/src/vipsmanualse12.html:<!--l. 161--><p class="noindent" >You must drop your ref after you&#8217;re done with the object
doc/src/vipsmanualse12.html:with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse12.html:class="pcrr7t-">g_object_unref()</span></span></span>.
doc/src/vipsmanualse12.html:  <!--l. 79--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse12.html:href="vipsmanualse11.html#tailvipsmanualse11.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse12.html:<!--l. 79--><p class="indent" >  <a 
doc/src/vdisplay.tex:VDisplay jim( "ultra2-20/2/98" );
doc/src/func.tex:\section{Function dispatch and plug-ins}
doc/src/func.tex:needs to be adapted --- a job which can rapidly become unmanageable.
doc/src/func.tex:The source for all the example code in this section is in the vips-examples
doc/src/func.tex:The function should be int-valued, and return 0 for success and non-zero
doc/src/func.tex:\verb+NULL+-terminated array of \verb+im_objects+.
doc/src/func.tex:\texttt{IM\_RW\_IMAGE} 		& Read-write image		& 
doc/src/func.tex:are used by user-interface programs to provide feedback, and sometimes as
doc/src/func.tex:which user-interfaces will present them to the user. You should use the
doc/src/func.tex:Names should be entirely in lower-case and contain no special characters,
doc/src/func.tex:apart from the digits 0-9 and the underscore character  `\_'.
doc/src/func.tex:example% vips -help im_add
doc/src/func.tex:  (point-to-point operation) 
doc/src/func.tex:example% vips -help im_extract
doc/src/func.tex:  (point-to-point operation) 
doc/src/func.tex:the VIPS-style function wrapper) can be gathered together into a function
doc/src/func.tex:static array. The \verb+flags+ field contains hints which user-interfaces
doc/src/func.tex:This is a point-to-point operation, that is, it can be replaced with a
doc/src/func.tex:look-up table.
doc/src/func.tex:example% gcc -fPIC -DPIC -c 
doc/src/func.tex:  `pkg-config vips-7.12 --cflags` 
doc/src/func.tex:  plug.c -o plug.o
doc/src/func.tex:example% gcc -shared plug.o 
doc/src/func.tex:  -o double.plg
doc/src/func.tex:example% vips -plugin double.plg \
doc/src/func.tex:\verb+vips-+, with the vips major and minor versions numbers as extensions,
doc/src/func.tex:my machine, the plugin directory is \verb+/usr/lib/vips-7.16+ and any plugins
doc/src/func.tex:description. Almost all functions in the VIPS library have descriptors ---
doc/src/func.tex:The VIPS type mechanism is extensible. User plug-ins can add new types
doc/src/func.tex:and user-interfaces can (to a certain extent) provide interfaces to these
doc/src/func.tex:user-defined types.
doc/src/func.tex:or to copy results into a user-interface layer.
doc/src/func.tex: * then you should use the built-in 
doc/src/func.tex:to the user by various parts of VIPS, and so needs to be ``human-readable''.
doc/src/func.tex: * an im_object --- with and without
doc/src/func.tex: * a command-line string to help you 
doc/src/func.tex:    return( -1 );
doc/src/func.tex:Now we can define the type itself. We make two of these --- one for unsigned
doc/src/func.tex:For more examples, see the definitions for the built-in VIPS types.
doc/src/func.tex:database. When you search for a function, any plug-ins are searched first,
doc/src/func.tex:This function closes all plug-ins, removing then from the VIPS function
doc/src/func.tex:database. It returns non-zero on error.
doc/src/func.tex:to continue searching, or non-\verb+NULL+ to terminate the search
doc/src/func.tex:    pack->name );
doc/src/func.tex:or \verb+print+ functions for the types --- that's up to you.
doc/src/vipsmanualse4.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse4.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse4.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse4.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse4.html:<!-- 3,html --> 
doc/src/vipsmanualse4.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse4.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse4.html:href="vipsmanualse3.html#tailvipsmanualse3.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse4.html: id="x9-190001.4"></a>The <span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask </span>class</h3>
doc/src/vipsmanualse4.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> class is an abstraction over the VIPS
doc/src/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">DOUBLEMASK</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">INTMASK</span></span></span> types which gives convenient
doc/src/vipsmanualse4.html:<!--l. 7--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> has two sub-classes, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>.
doc/src/vipsmanualse4.html:<!--l. 10--><p class="noindent" >
doc/src/vipsmanualse4.html: id="x9-200001.4.1"></a>Constructors</h4>
doc/src/vipsmanualse4.html:<!--l. 12--><p class="noindent" >There are four constructors for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>:
doc/src/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-27">
doc/src/vipsmanualse4.html:<!--l. 31--><p class="nopar" >
doc/src/vipsmanualse4.html:<!--l. 33--><p class="indent" >  The first form creates an empty matrix, with the specified
doc/src/vipsmanualse4.html:<!--l. 38--><p class="indent" >    The varargs constructors are not wrapped in Python &#8212;
doc/src/vipsmanualse4.html:  <div class="verbatim" id="verbatim-28">
doc/src/vipsmanualse4.html:&#x00A0;<br />&#x00A0;&#x00A0;[-1,&#x00A0;-1,&#x00A0;-1,
doc/src/vipsmanualse4.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;-1,&#x00A0;&#x00A0;8,&#x00A0;-1,
doc/src/vipsmanualse4.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;-1,&#x00A0;-1,&#x00A0;-1])
doc/src/vipsmanualse4.html:<!--l. 46--><p class="nopar" >
doc/src/vipsmanualse4.html:<!--l. 48--><p class="noindent" >
doc/src/vipsmanualse4.html: id="x9-210001.4.2"></a>Projection functions</h4>
doc/src/vipsmanualse4.html:<!--l. 50--><p class="noindent" >A set of member functions of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> provide access to the
doc/src/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-29">
doc/src/vipsmanualse4.html:<!--l. 59--><p class="nopar" >
doc/src/vipsmanualse4.html:<!--l. 61--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span> is the same, except that the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">scale()</span></span></span> and
doc/src/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">offset()</span></span></span> members return <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">double</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> allows all
doc/src/vipsmanualse4.html:operations that are common to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>.
doc/src/vipsmanualse4.html:<!--l. 65--><p class="noindent" >
doc/src/vipsmanualse4.html: id="x9-220001.4.3"></a>Assignment</h4>
doc/src/vipsmanualse4.html:<!--l. 67--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> defines copy and assignment with pointer-style
doc/src/vipsmanualse4.html:  <div class="verbatim" id="verbatim-30">
doc/src/vipsmanualse4.html:<!--l. 75--><p class="nopar" >
doc/src/vipsmanualse4.html:<!--l. 77--><p class="indent" >  This reads the file <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">mask</span></span></span>, noting a pointer to the
doc/src/vipsmanualse4.html:mask in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">fred</span></span></span>. It then makes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">jim</span></span></span> also point to it, so
doc/src/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">jim</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">fred</span></span></span> are sharing the same underlying matrix
doc/src/vipsmanualse4.html:<!--l. 81--><p class="indent" >  Internally, a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> object is just a pointer to a
doc/src/vipsmanualse4.html:reference-counting block, which in turn holds a pointer to
doc/src/vipsmanualse4.html:the underlying VIPS <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">MASK</span></span></span> type. You can therefore
doc/src/vipsmanualse4.html:efficiently pass <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> objects to functions by value, and
doc/src/vipsmanualse4.html:return <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> objects as function results.
doc/src/vipsmanualse4.html:<!--l. 86--><p class="noindent" >
doc/src/vipsmanualse4.html: id="x9-230001.4.4"></a>Computing with <span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask</span></h4>
doc/src/vipsmanualse4.html:<!--l. 88--><p class="noindent" >You can use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">[]</span></span></span> to get at matrix elements, numbered
doc/src/vipsmanualse4.html:left-to-right, top-to-bottom. Alternatively, use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">()</span></span></span> to address
doc/src/vipsmanualse4.html:class="cmmi-10">x,y </span>position. For example:
doc/src/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-31">
doc/src/vipsmanualse4.html:<!--l. 97--><p class="nopar" >
doc/src/vipsmanualse4.html:<!--l. 99--><p class="noindent" >will set the first line of the matrix to 12, and:
doc/src/vipsmanualse4.html:  <div class="verbatim" id="verbatim-32">
doc/src/vipsmanualse4.html:<!--l. 107--><p class="nopar" >
doc/src/vipsmanualse4.html:<!--l. 109--><p class="noindent" >will set the leading diagonal to 12.
doc/src/vipsmanualse4.html:<!--l. 112--><p class="indent" >  These don&#8217;t work well in Python, so there&#8217;s an extra
doc/src/vipsmanualse4.html:member, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">get()</span></span></span>, which will get an element by <span 
doc/src/vipsmanualse4.html:class="cmmi-10">x,y</span>
doc/src/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-33">
doc/src/vipsmanualse4.html:<!--l. 117--><p class="nopar" >
doc/src/vipsmanualse4.html:<!--l. 119--><p class="indent" >  See the member functions below for other operations on
doc/src/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span>.
doc/src/vipsmanualse4.html:<!--l. 121--><p class="noindent" >
doc/src/vipsmanualse4.html: id="x9-240001.4.5"></a><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VIMask </span>operations</h4>
doc/src/vipsmanualse4.html:<!--l. 123--><p class="noindent" >The following operations are defined for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span>:
doc/src/vipsmanualse4.html:  <div class="verbatim" id="verbatim-34">
doc/src/vipsmanualse4.html:<!--l. 144--><p class="nopar" >
doc/src/vipsmanualse4.html:<!--l. 146--><p class="noindent" >
doc/src/vipsmanualse4.html: id="x9-250001.4.6"></a><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VDMask </span>operations</h4>
doc/src/vipsmanualse4.html:<!--l. 148--><p class="noindent" >The following operations are defined for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>:
doc/src/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-35">
doc/src/vipsmanualse4.html:<!--l. 171--><p class="nopar" >
doc/src/vipsmanualse4.html:<!--l. 173--><p class="noindent" >
doc/src/vipsmanualse4.html: id="x9-260001.4.7"></a>Output of masks</h4>
doc/src/vipsmanualse4.html:<!--l. 175--><p class="noindent" >You can output masks with the usual <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse4.html:class="pcrr7t-">&#x003C;&#x003C;</span></span></span> operator.
doc/src/vipsmanualse4.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse4.html:href="vipsmanualse3.html#tailvipsmanualse3.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse4.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanualse14.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse14.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse14.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse14.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse14.html:<!-- 3,html --> 
doc/src/vipsmanualse14.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse14.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse14.html:href="vipsmanualse13.html#tailvipsmanualse13.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse14.html: id="x21-880003.2"></a>Programming WIO operations</h3>
doc/src/vipsmanualse14.html:<!--l. 3--><p class="noindent" >WIO is the style for you if you want ease of programming,
doc/src/vipsmanualse14.html:<!--l. 8--><p class="noindent" >
doc/src/vipsmanualse14.html: id="x21-890003.2.1"></a>Input from an image</h4>
doc/src/vipsmanualse14.html:<!--l. 10--><p class="noindent" >In WIO input, the whole of the image data is made available
doc/src/vipsmanualse14.html:to the program via the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">data</span></span></span> field of the descriptor. To make
doc/src/vipsmanualse14.html:call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_incheck()</span></span></span>:
doc/src/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-127">
doc/src/vipsmanualse14.html:<!--l. 16--><p class="nopar" >
doc/src/vipsmanualse14.html:<!--l. 18--><p class="noindent" >If it succeeds, it returns 0, if it fails, it returns non-zero and
doc/src/vipsmanualse14.html:sets <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_error()</span></span></span>. On success, VIPS guarantees that all of
doc/src/vipsmanualse14.html:the user-accessible fields in the descriptor contain valid
doc/src/vipsmanualse14.html:reading from the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">data</span></span></span> field (see below for an example).
doc/src/vipsmanualse14.html:<!--l. 26--><p class="indent" >    VIPS has some simple macros to help address calculations
doc/src/vipsmanualse14.html:  <div class="verbatim" id="verbatim-128">
doc/src/vipsmanualse14.html:<!--l. 35--><p class="nopar" >
doc/src/vipsmanualse14.html:<!--l. 37--><p class="noindent" >These macros calculate <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">sizeof()</span></span></span> a band element, a pel
doc/src/vipsmanualse14.html:and a horizontal line of pels. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">IM_IMAGE_N_ELEMENTS</span></span></span>
doc/src/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">IM_IMAGE_ADDR</span></span></span> calculates the address of a pixel in an
doc/src/vipsmanualse14.html:image. If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">DEBUG</span></span></span> is defined, it does bounds checking
doc/src/vipsmanualse14.html:<!--l. 44--><p class="indent" >  <a 
doc/src/vipsmanualse14.html: id="x21-890011"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse14.html:<div class="verbatim" id="verbatim-129">
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;im-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;im-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;0;&#x00A0;y&#x00A0;&#x003C;&#x00A0;im-&#x003E;Ysize;&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;(IM_IMAGE_N_ELEMENTS(&#x00A0;im&#x00A0;)&#x00A0;&#x22C6;&#x00A0;im-&#x003E;Ysize));
doc/src/vipsmanualse14.html:<!--l. 88--><p class="nopar" >
doc/src/vipsmanualse14.html:class="content">Find average of image</span></div><!--tex4ht:label?: x21-890011 -->                
doc/src/vipsmanualse14.html:<!--l. 93--><p class="indent" >  Figure&#x00A0;<a 
doc/src/vipsmanualse14.html:href="#x21-890011">3.1<!--tex4ht:ref: fg:average --></a> is a simple WIO operation which calculates
doc/src/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse14.html:href="#x21-910003.2.3">3.2.3<!--tex4ht:ref: sec:poly --></a> for
doc/src/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-130">
doc/src/vipsmanualse14.html:<!--l. 119--><p class="nopar" >
doc/src/vipsmanualse14.html:<!--l. 121--><p class="noindent" >When you write an image processing operation, you can test
doc/src/vipsmanualse14.html:class="pcrr7t-">vips </span>universal main program, or from the <span 
doc/src/vipsmanualse14.html:class="pcrr7t-">nip2</span>
doc/src/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse14.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>.
doc/src/vipsmanualse14.html: id="x21-900003.2.2"></a>Output to an image</h4>
doc/src/vipsmanualse14.html:<!--l. 128--><p class="noindent" >Before attempting WIO output, programs should call
doc/src/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span>. It has type:
doc/src/vipsmanualse14.html:  <div class="verbatim" id="verbatim-131">
doc/src/vipsmanualse14.html:<!--l. 133--><p class="nopar" >
doc/src/vipsmanualse14.html:<!--l. 135--><p class="noindent" >If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span> succeeds, VIPS guarantees that WIO
doc/src/vipsmanualse14.html:<!--l. 138--><p class="indent" >  Programs should then set fields in the output descriptor to
doc/src/vipsmanualse14.html:type, and so on) and call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_setupout()</span></span></span>. It has
doc/src/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-132">
doc/src/vipsmanualse14.html:<!--l. 144--><p class="nopar" >
doc/src/vipsmanualse14.html:<!--l. 146--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_setupout()</span></span></span> creates the output file or memory buffer,
doc/src/vipsmanualse14.html:program between the calls to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span> and
doc/src/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_setupout()</span></span></span>, and gets it ready for writing.
doc/src/vipsmanualse14.html:<!--l. 151--><p class="indent" >    Pels are written with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_writeline()</span></span></span>. This takes a y
doc/src/vipsmanualse14.html:position (pel (0,0) is in the top-left-hand corner of the
doc/src/vipsmanualse14.html:  <div class="verbatim" id="verbatim-133">
doc/src/vipsmanualse14.html:<!--l. 158--><p class="nopar" >
doc/src/vipsmanualse14.html:<!--l. 160--><p class="indent" >  Two convenience functions are available to make this
doc/src/vipsmanualse14.html:process slightly easier. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_iocheck()</span></span></span> is useful for
doc/src/vipsmanualse14.html:image output. It simply calls <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_incheck()</span></span></span> and
doc/src/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span>. It has type:
doc/src/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-134">
doc/src/vipsmanualse14.html:<!--l. 167--><p class="nopar" >
doc/src/vipsmanualse14.html:<!--l. 169--><p class="indent" >  The second convenience function copies the fields
doc/src/vipsmanualse14.html:  <div class="verbatim" id="verbatim-135">
doc/src/vipsmanualse14.html:<!--l. 176--><p class="nopar" >
doc/src/vipsmanualse14.html:<!--l. 178--><p class="noindent" >There&#8217;s also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_cp_descv()</span></span></span>, see the man page.
doc/src/vipsmanualse14.html:<!--l. 182--><p class="indent" >  <a 
doc/src/vipsmanualse14.html: id="x21-900012"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse14.html:<div class="verbatim" id="verbatim-136">
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;0;&#x00A0;y&#x00A0;&#x003C;&#x00A0;in-&#x003E;Ysize;&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;buffer[x]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[x];
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:<!--l. 230--><p class="nopar" >
doc/src/vipsmanualse14.html:class="content">Invert an image</span></div><!--tex4ht:label?: x21-900012 -->
doc/src/vipsmanualse14.html:<!--l. 235--><p class="indent" >  Figure&#x00A0;<a 
doc/src/vipsmanualse14.html:href="#x21-900012">3.2<!--tex4ht:ref: fg:invert --></a> is a WIO VIPS operation which finds the
doc/src/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse14.html:href="vipsmanualse8.html#x14-490002.2.10">2.2.10<!--tex4ht:ref: sec:malloc --></a> for an explanation of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">IM_ARRAY</span></span></span>. This operation
doc/src/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-137">
doc/src/vipsmanualse14.html:<!--l. 259--><p class="nopar" >
doc/src/vipsmanualse14.html:<!--l. 261--><p class="indent" >  See <span 
doc/src/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse14.html:href="vipsmanualse8.html#x14-440002.2.7">2.2.7<!--tex4ht:ref: sec:history --></a> for an explanation of the call to
doc/src/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_updatehist()</span></span></span>.
doc/src/vipsmanualse14.html: id="x21-910003.2.3"></a>Polymorphism</h4>
doc/src/vipsmanualse14.html:<!--l. 266--><p class="noindent" >Most image processing operations in the VIPS library can
doc/src/vipsmanualse14.html:operate on images of any type (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span>, as
doc/src/vipsmanualse14.html:in our examples above, also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">IM_BANDFMT_UINT</span></span></span> etc.).
doc/src/vipsmanualse14.html:<!--l. 272--><p class="indent" >    As an example, figure&#x00A0;<a 
doc/src/vipsmanualse14.html:href="#x21-910013">3.3<!--tex4ht:ref: fg:exp --></a> calculates <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">exp()</span></span></span> for every
doc/src/vipsmanualse14.html:pel in an image. If the input image is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">double</span></span></span>, we write
doc/src/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">double</span></span></span> output. If it is any other non-complex type, we
doc/src/vipsmanualse14.html:write <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">float</span></span></span>. If it is complex, we flag an error (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">exp()</span></span></span> of
doc/src/vipsmanualse14.html:image type predicate, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse14.html:class="pcrr7t-">im_iscomplex()</span></span></span>. There are a
doc/src/vipsmanualse14.html:<!--l. 280--><p class="indent" >  <a 
doc/src/vipsmanualse14.html: id="x21-910013"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse14.html:<div class="verbatim" id="verbatim-138">
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;||&#x00A0;im_iscomplex(&#x00A0;in&#x00A0;)&#x00A0;)&#x00A0;{
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;im_error(&#x00A0;"exptra",&#x00A0;"uncoded&#x00A0;non-complex&#x00A0;only"&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_DOUBLE&#x00A0;)
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;out-&#x003E;BandFmt&#x00A0;=&#x00A0;IM_BANDFMT_FLOAT;
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:<!--l. 313--><p class="nopar" >
doc/src/vipsmanualse14.html:class="pcrr7t-">exp() </span>for an image</span></div><!--tex4ht:label?: x21-910013 -->
doc/src/vipsmanualse14.html:<!--l. 319--><p class="indent" >  <a 
doc/src/vipsmanualse14.html: id="x21-910024"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse14.html:<div class="verbatim" id="verbatim-139">
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;0;&#x00A0;y&#x00A0;&#x003C;&#x00A0;in-&#x003E;Ysize;&#x00A0;y++&#x00A0;)&#x00A0;{&#x00A0;\
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);&#x00A0;\
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;switch(&#x00A0;in-&#x003E;BandFmt&#x00A0;)&#x00A0;{
doc/src/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse14.html:<!--l. 361--><p class="nopar" >
doc/src/vipsmanualse14.html:class="pcrr7t-">exp() </span>for an image (cont)</span></div><!--tex4ht:label?: x21-910024 -->
doc/src/vipsmanualse14.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse14.html:href="vipsmanualse13.html#tailvipsmanualse13.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse14.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual.html:<!-- 3,html --> 
doc/src/vipsmanual.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual.html:<!--l. 25--><p class="indent" >
doc/src/vipsmanual.html:                                             <!--l. 25--><p class="indent" >
doc/src/vipsmanual.html:<!--l. 27--><p class="noindent" >
doc/src/vipsmanual.html:<!--l. 29--><p class="noindent" ><span 
doc/src/vipsmanual.html:class="ptmr7t-x-x-207">VIPS Manual</span><br />
doc/src/vipsmanual.html:class="ptmr7t-x-x-120">Version 7.20</span><br />
doc/src/vipsmanual.html:class="ptmr7t-x-x-120">John Cupitt, Kirk Martinez</span><br />
doc/src/vipsmanual.html:<!--l. 40--><p class="indent" >  This manual formatted June 9, 2010
doc/src/vipsmanual.html:href="vipsmanualli1.html#x2-1000" id="QQ2-2-1">Contents</a></span>
doc/src/vipsmanual.html:href="vipsmanualli2.html#x3-2000" id="QQ2-3-2">List of Figures</a></span>
doc/src/vipsmanual.html:href="vipsmanualli3.html#x4-3000" id="QQ2-4-3">List of Tables</a></span>
doc/src/vipsmanual.html:href="vipsmanualch1.html#x5-40001" id="QQ2-5-4">VIPS from C++ and Python</a></span>
doc/src/vipsmanual.html:href="vipsmanualse1.html#x6-50001.1" id="QQ2-6-5">Introduction</a></span>
doc/src/vipsmanual.html:href="vipsmanualse2.html#x7-70001.2" id="QQ2-7-9">The VIPS file format</a></span>
doc/src/vipsmanual.html:href="vipsmanualse3.html#x8-110001.3" id="QQ2-8-17">The <span 
doc/src/vipsmanual.html:class="pcrr7t-">VImage </span>class</a></span>
doc/src/vipsmanual.html:href="vipsmanualse4.html#x9-190001.4" id="QQ2-9-25">The <span 
doc/src/vipsmanual.html:class="pcrr7t-">VMask </span>class</a></span>
doc/src/vipsmanual.html:href="vipsmanualse5.html#x10-270001.5" id="QQ2-10-33">The <span 
doc/src/vipsmanual.html:class="pcrr7t-">VDisplay </span>class</a></span>
doc/src/vipsmanual.html:href="vipsmanualse6.html#x11-300001.6" id="QQ2-11-36">The <span 
doc/src/vipsmanual.html:class="pcrr7t-">VError </span>class</a></span>
doc/src/vipsmanual.html:href="vipsmanualch2.html#x12-350002" id="QQ2-12-41">VIPS for C programmers</a></span>
doc/src/vipsmanual.html:href="vipsmanualse7.html#x13-360002.1" id="QQ2-13-42">Introduction</a></span>
doc/src/vipsmanual.html:href="vipsmanualse8.html#x14-370002.2" id="QQ2-14-44">Core C API</a></span>
doc/src/vipsmanual.html:href="vipsmanualse9.html#x15-590002.3" id="QQ2-15-73">Function dispatch and plug-ins</a></span>
doc/src/vipsmanual.html:href="vipsmanualse10.html#x16-670002.4" id="QQ2-16-82">The VIPS base class: <span 
doc/src/vipsmanual.html:class="pcrr7t-">VipsObject</span></a></span>
doc/src/vipsmanual.html:href="vipsmanualse11.html#x17-740002.5" id="QQ2-17-89">Image formats</a></span>
doc/src/vipsmanual.html:href="vipsmanualse12.html#x18-790002.6" id="QQ2-18-95">Interpolators</a></span>
doc/src/vipsmanual.html:href="vipsmanualch3.html#x19-840003" id="QQ2-19-101">Writing VIPS operations</a></span>
doc/src/vipsmanual.html:href="vipsmanualse13.html#x20-850003.1" id="QQ2-20-102">Introduction</a></span>
doc/src/vipsmanual.html:href="vipsmanualse14.html#x21-880003.2" id="QQ2-21-105">Programming WIO operations</a></span>
doc/src/vipsmanual.html:href="vipsmanualse15.html#x22-920003.3" id="QQ2-22-113">Programming PIO functions</a></span>
doc/src/vipsmanual.html:href="vipsmanualse16.html#x23-1030003.4" id="QQ2-23-131">Programming in-place functions</a></span>
doc/src/vipsmanual.html:href="vipsmanualch4.html#x24-1040004" id="QQ2-24-132">VIPS reference</a></span>
doc/src/vipsmanual.html:href="vipsmanualse17.html#x25-1050004.1" id="QQ2-25-133">Introduction</a></span>
doc/src/vipsmanual.html:href="vipsmanualse18.html#x26-1060004.2" id="QQ2-26-135">VIPS packages</a></span>
doc/src/vipsmanual.html:                                             <!--l. 79--><p class="indent" >
doc/src/vipsmanual.toc:\contentsline {subsubsection}{Non-image output}{22}
doc/src/vipsmanual.toc:\contentsline {section}{\numberline {2.3}Function dispatch and plug-ins}{23}
doc/src/vipsmanual.toc:\contentsline {section}{\numberline {3.4}Programming in-place functions}{56}
doc/src/vipsmanual.toc:\contentsline {subsection}{\numberline {4.2.8}In-place operations}{65}
doc/src/vipsmanual.lof:\contentsline {figure}{\numberline {2.7}{\ignorespaces Two image-processing operations joined together}}{22}
doc/src/vipsmanual.lof:\contentsline {figure}{\numberline {4.10}{\ignorespaces In-place operations}}{68}
doc/src/vipsmanualse6.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse6.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse6.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse6.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse6.html:<!-- 3,html --> 
doc/src/vipsmanualse6.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse6.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse6.html:href="vipsmanualse5.html#tailvipsmanualse5.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse6.html: id="x11-300001.6"></a>The <span 
doc/src/vipsmanualse6.html:class="pcrr7t-">VError </span>class</h3>
doc/src/vipsmanualse6.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span> class is the class thrown by the VIPS
doc/src/vipsmanualse6.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">std::exception</span></span></span> in the usual way.
doc/src/vipsmanualse6.html:<!--l. 6--><p class="noindent" >
doc/src/vipsmanualse6.html: id="x11-310001.6.1"></a>Constructors</h4>
doc/src/vipsmanualse6.html:<!--l. 8--><p class="noindent" >There are two constructors for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span>:
doc/src/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-41">
doc/src/vipsmanualse6.html:<!--l. 13--><p class="nopar" >
doc/src/vipsmanualse6.html:<!--l. 15--><p class="indent" >  The first form creates an error object initialised with the
doc/src/vipsmanualse6.html:<!--l. 18--><p class="noindent" >
doc/src/vipsmanualse6.html: id="x11-320001.6.2"></a>Projection functions</h4>
doc/src/vipsmanualse6.html:<!--l. 20--><p class="noindent" >A function gives access to the string held by <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span>:
doc/src/vipsmanualse6.html:  <div class="verbatim" id="verbatim-42">
doc/src/vipsmanualse6.html:<!--l. 24--><p class="nopar" >
doc/src/vipsmanualse6.html:<!--l. 26--><p class="indent" >  You can also send to an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">ostream</span></span></span>.
doc/src/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-43">
doc/src/vipsmanualse6.html:<!--l. 31--><p class="nopar" >
doc/src/vipsmanualse6.html:<!--l. 33--><p class="noindent" >
doc/src/vipsmanualse6.html: id="x11-330001.6.3"></a>Computing with <span 
doc/src/vipsmanualse6.html:class="pcrr7t-">VError</span></h4>
doc/src/vipsmanualse6.html:<!--l. 35--><p class="noindent" >Two member functions let you append elements to an
doc/src/vipsmanualse6.html:  <div class="verbatim" id="verbatim-44">
doc/src/vipsmanualse6.html:<!--l. 40--><p class="nopar" >
doc/src/vipsmanualse6.html:<!--l. 42--><p class="indent" >  For example:
doc/src/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-45">
doc/src/vipsmanualse6.html:<!--l. 51--><p class="nopar" >
doc/src/vipsmanualse6.html:<!--l. 53--><p class="noindent" >will throw a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span> with a diagnostic of:
doc/src/vipsmanualse6.html:  <div class="verbatim" id="verbatim-46">
doc/src/vipsmanualse6.html:<!--l. 58--><p class="nopar" >
doc/src/vipsmanualse6.html:<!--l. 60--><p class="indent" >  The member function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">perror()</span></span></span> prints the error
doc/src/vipsmanualse6.html:message to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">stdout</span></span></span> and exits with a code of 1.
doc/src/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-47">
doc/src/vipsmanualse6.html:<!--l. 66--><p class="nopar" >
doc/src/vipsmanualse6.html:<!--l. 68--><p class="noindent" >
doc/src/vipsmanualse6.html: id="x11-340001.6.4"></a>Convenience function</h4>
doc/src/vipsmanualse6.html:<!--l. 70--><p class="noindent" >The convenience function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">verror</span></span></span> creates an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span>
doc/src/vipsmanualse6.html:with the specified error string, and throws it. If you pass <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse6.html:class="pcrr7t-">""</span></span></span>
doc/src/vipsmanualse6.html:  <div class="verbatim" id="verbatim-48">
doc/src/vipsmanualse6.html:<!--l. 76--><p class="nopar" >
doc/src/vipsmanualse6.html:  <!--l. 70--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse6.html:href="vipsmanualse5.html#tailvipsmanualse5.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse6.html:<!--l. 70--><p class="indent" >  <a 
doc/src/iosys.tex:You can use this with GOption to parse your program's command-line arguments.
doc/src/iosys.tex:It adds several useful VIPS flags, including \verb+--vips-concurrency+.
doc/src/iosys.tex:  context = g_option_context_new( "- my program" );
doc/src/iosys.tex:      fprintf( stderr, "%s\n", error->message );
doc/src/iosys.tex:    error_exit( "try \"%s --help\"", g_get_prgname() );
doc/src/iosys.tex:    int kill;              /* Set to non-zero to block eval */
doc/src/iosys.tex:which can be used by user-interfaces built on VIPS to provide feedback
doc/src/iosys.tex:about the progress of evaluation --- see \pref{sec:eval}. Finally, if you
doc/src/iosys.tex:set \verb+kill+ to non-zero, VIPS will block any pipelines which use this
doc/src/iosys.tex:You can access header fields either directly (as \verb+im->Xsize+, for
doc/src/iosys.tex:At the command-line, try:
doc/src/iosys.tex:$ vips --list classes
doc/src/iosys.tex:The file is opened read-only.
doc/src/iosys.tex:If you open a non-VIPS image, or a VIPS image written on a machine with a
doc/src/iosys.tex:will read page 2 of a multi-page TIFF. See the man pages for details.
doc/src/iosys.tex:space read-write. This mode is only provided for the use of paintbox-style
doc/src/iosys.tex:\verb+im_close()+ returns 0 on success and non-zero on error.  
doc/src/iosys.tex:  printf( "width = %d, height = %d\n", im->Xsize, im->Ysize );
doc/src/iosys.tex:cc `pkg-config vips-7.14 \
doc/src/iosys.tex:  --cflags --libs` myfunc.c 
doc/src/iosys.tex:  return( -1 );
doc/src/iosys.tex:  return( -1 );
doc/src/iosys.tex:user-interface programs to give feedback about the progress of evaluation.
doc/src/iosys.tex:        sum1( t, in + 1, nin - 1, out ) );
doc/src/iosys.tex:        return( -1 );
doc/src/iosys.tex:    return( sum1( in[0], in + 1, nin - 1, out ) );
doc/src/iosys.tex:type-name *IM_NEW( IMAGE *, type-name )
doc/src/iosys.tex:type-name *IM_ARRAY( IMAGE *, int, type-name )
doc/src/iosys.tex:local resource allocators for other types of object --- see the manual page
doc/src/iosys.tex:All VIPS operations return 0 on success and non-zero on error, setting
doc/src/iosys.tex:need to generate an error message --- you can simply propagate the error back
doc/src/iosys.tex:        return( -1 );
doc/src/iosys.tex:\caption{Two image-processing operations joined together}
doc/src/iosys.tex:\verb+im_concurrency_set()+, and with the \verb+--vips-concurrency+
doc/src/iosys.tex:command-line switch. See the man page for \verb+im_generate()+.
doc/src/iosys.tex:no pixels will be calculated --- instead, a pipeline of VIPS operations
doc/src/iosys.tex:Since VIPS partial I/O is demand-driven rather than data-driven this works
doc/src/iosys.tex:certain core-dump.
doc/src/iosys.tex:non-image arguments. VIPS functions which take extra non-image arguments
doc/src/iosys.tex:\subsubsection{Non-image output}
doc/src/iosys.tex:        return( -1 );
doc/src/iosys.tex:This seems straightforward --- but consider if image \verb+in+ were a
doc/src/iosys.tex:to block computation.  If \verb+im->kill+ is set to a non-zero value,
doc/src/iosys.tex:with an error message.  This is useful for user-interface writers ---
doc/src/iosys.tex:Not all VIPS operations are partial-aware. These non-partial operations
doc/src/iosys.tex:use a pre-VIPS 7.0 I/O scheme in which the whole of the input image has to
doc/src/iosys.tex:simply makes no sense --- for example, a Fourier Transform can produce no
doc/src/iosys.tex:rewriting the old non-partial operation in the newer partial style.
doc/src/iosys.tex:You can mix partial and non-partial VIPS operations freely, without worrying
doc/src/iosys.tex:When a non-partial operation is asked to output to a partial image descriptor,
doc/src/iosys.tex:When a non-partial operation is asked to read from a \verb+"p"+ descriptor,
doc/src/iosys.tex:The non-partial operation then processes from the memory buffer.
doc/src/iosys.tex:if you only use partial operations. If you use any non-partial operations,
doc/src/iosys.tex:then parts of your pipelines will fall back to old whole-image I/O and you
doc/src/vipsmanualse2.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse2.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse2.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse2.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse2.html:<!-- 3,html --> 
doc/src/vipsmanualse2.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse2.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse2.html:href="vipsmanualse1.html#tailvipsmanualse1.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse2.html: id="x7-70001.2"></a>The VIPS file format</h3>
doc/src/vipsmanualse2.html:<!--l. 3--><p class="noindent" >VIPS has its own very simple file format. It is used inside
doc/src/vipsmanualse2.html:<!--l. 8--><p class="indent" >  If you intend to keep an image, it&#8217;s much better to save it
doc/src/vipsmanualse2.html:<!--l. 12--><p class="noindent" >
doc/src/vipsmanualse2.html: id="x7-80001.2.1"></a>VIPS file header</h4>
doc/src/vipsmanualse2.html:<!--l. 15--><p class="noindent" >All VIPS image files start with a 64-byte header giving
doc/src/vipsmanualse2.html:href="#x7-80011">1.1<!--tex4ht:ref: fg:header --></a>. This is followed by the image data. This is
doc/src/vipsmanualse2.html:left-to-right and top-to-bottom. After the image data comes
doc/src/vipsmanualse2.html:command-line program <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">header</span></span></span> to extract the XML
doc/src/vipsmanualse2.html:from an image and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">edvips</span></span></span> to replace it, see the man
doc/src/vipsmanualse2.html:<!--l. 24--><p class="indent" >  The <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">Type </span>field, the <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">Xres</span>/<span 
doc/src/vipsmanualse2.html:class="pcrr7t-">Yres </span>fields, and the
doc/src/vipsmanualse2.html:class="pcrr7t-">Xoffset</span>/<span 
doc/src/vipsmanualse2.html:class="pcrr7t-">Yoffset </span>fields are advisory. VIPS maintains
doc/src/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span>
doc/src/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_XYZ2Lab()</span>, for example, VIPS
doc/src/vipsmanualse2.html:class="pcrr7t-">Type </span>to be <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LAB</span>), but never uses
doc/src/vipsmanualse2.html:<!--l. 33--><p class="indent" >  The <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">BandFmt</span>, <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">Coding </span>and <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">Type </span>fields can take the
doc/src/vipsmanualse2.html:href="#x7-80022">1.2<!--tex4ht:ref: fg:bandfmt --></a>, <a 
doc/src/vipsmanualse2.html:href="#x7-80033">1.3<!--tex4ht:ref: fg:coding --></a> and <a 
doc/src/vipsmanualse2.html:href="#x7-80044">1.4<!--tex4ht:ref: fg:type --></a>. The C++ and
doc/src/vipsmanualse2.html:<!--l. 39--><p class="indent" >  <a 
doc/src/vipsmanualse2.html: id="x7-80011"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse2.html:<!--l. 39--><p class="noindent" >
doc/src/vipsmanualse2.html:<div class="tabular"> <table id="TBL-1" class="tabular" 
doc/src/vipsmanualse2.html:><colgroup id="TBL-1-1g"><col 
doc/src/vipsmanualse2.html:id="TBL-1-1"></colgroup><colgroup id="TBL-1-2g"><col 
doc/src/vipsmanualse2.html:id="TBL-1-2"></colgroup><colgroup id="TBL-1-3g"><col 
doc/src/vipsmanualse2.html:id="TBL-1-3"></colgroup><tr 
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-1-1"  
doc/src/vipsmanualse2.html:class="td11">Bytes</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-1-2"  
doc/src/vipsmanualse2.html:class="td11">Represent                                                      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-1-3"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-2-1"  
doc/src/vipsmanualse2.html:class="td11">0&#8211;3    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-2-2"  
doc/src/vipsmanualse2.html:class="td11">VIPS magic number (in hex, 08 f2 f6 b6)    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-2-3"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-3-1"  
doc/src/vipsmanualse2.html:class="td11">4&#8211;7    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-3-2"  
doc/src/vipsmanualse2.html:class="td11">Number of pels per horizontal line (integer)</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-3-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Xsize      </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-4-1"  
doc/src/vipsmanualse2.html:class="td11">8&#8211;11  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-4-2"  
doc/src/vipsmanualse2.html:class="td11">Number of horizontal lines (integer)            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-4-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Ysize      </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-5-1"  
doc/src/vipsmanualse2.html:class="td11">12&#8211;15</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-5-2"  
doc/src/vipsmanualse2.html:class="td11">Number of bands (integer)                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-5-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Bands      </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-6-1"  
doc/src/vipsmanualse2.html:class="td11">16&#8211;19</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-6-2"  
doc/src/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-6-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Bbits      </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-7-1"  
doc/src/vipsmanualse2.html:class="td11">20&#8211;23</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-7-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_USHORT</span>)</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-7-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">BandFmt    </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-8-1"  
doc/src/vipsmanualse2.html:class="td11">24&#8211;27</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-8-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_NONE</span>)        </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-8-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Coding     </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-9-1"  
doc/src/vipsmanualse2.html:class="td11">28&#8211;31</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-9-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LAB</span>)                           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-9-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Type       </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-10-1"  
doc/src/vipsmanualse2.html:class="td11">32&#8211;35</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-10-2"  
doc/src/vipsmanualse2.html:class="cmsy-7">-</span><span 
doc/src/vipsmanualse2.html:class="cmr-7">1</span></sup>)  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-10-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Xres       </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-11-1"  
doc/src/vipsmanualse2.html:class="td11">36&#8211;39</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-11-2"  
doc/src/vipsmanualse2.html:class="cmsy-7">-</span><span 
doc/src/vipsmanualse2.html:class="cmr-7">1</span></sup>)       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-11-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Yres       </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-12-1"  
doc/src/vipsmanualse2.html:class="td11">40&#8211;43</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-12-2"  
doc/src/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-12-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Length     </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-13-1"  
doc/src/vipsmanualse2.html:class="td11">44&#8211;45</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-13-2"  
doc/src/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-13-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Compression</span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-14-1"  
doc/src/vipsmanualse2.html:class="td11">46&#8211;47</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-14-2"  
doc/src/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-14-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Level      </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-15-1"  
doc/src/vipsmanualse2.html:class="td11">48&#8211;51</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-15-2"  
doc/src/vipsmanualse2.html:class="td11">Horizontal offset of origin                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-15-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Xoffset    </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-16-1"  
doc/src/vipsmanualse2.html:class="td11">52&#8211;55</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-16-2"  
doc/src/vipsmanualse2.html:class="td11">Vertical offset of origin                                 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-16-3"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Yoffset    </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-17-1"  
doc/src/vipsmanualse2.html:class="td11">56&#8211;63</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-17-2"  
doc/src/vipsmanualse2.html:class="td11">For future expansion (all zeros for now)       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-17-3"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-18-1"  
doc/src/vipsmanualse2.html:class="content">VIPS header</span></div><!--tex4ht:label?: x7-80011 -->
doc/src/vipsmanualse2.html:<!--l. 67--><p class="indent" >  <a 
doc/src/vipsmanualse2.html: id="x7-80022"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse2.html:<!--l. 67--><p class="noindent" >
doc/src/vipsmanualse2.html:<div class="tabular"> <table id="TBL-2" class="tabular" 
doc/src/vipsmanualse2.html:><colgroup id="TBL-2-1g"><col 
doc/src/vipsmanualse2.html:id="TBL-2-1"></colgroup><colgroup id="TBL-2-2g"><col 
doc/src/vipsmanualse2.html:id="TBL-2-2"></colgroup><colgroup id="TBL-2-3g"><col 
doc/src/vipsmanualse2.html:id="TBL-2-3"></colgroup><colgroup id="TBL-2-4g"><col 
doc/src/vipsmanualse2.html:id="TBL-2-4"></colgroup><tr 
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">BandFmt             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-2"  
doc/src/vipsmanualse2.html:class="td11">C++ and Python name</td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-3"  
doc/src/vipsmanualse2.html:class="td11">Value</td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_NOTSET   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTNOTSET      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-3"  
doc/src/vipsmanualse2.html:class="td11">-1      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_UCHAR </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTUCHAR </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-3"  
doc/src/vipsmanualse2.html:class="td11">0 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-4"  
doc/src/vipsmanualse2.html:class="td11">Unsigned 8-bit int</td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CHAR     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTCHAR        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-3"  
doc/src/vipsmanualse2.html:class="td11">1       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-4"  
doc/src/vipsmanualse2.html:class="td11">Signed 8-bit int         </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_USHORT   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTUSHORT      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-3"  
doc/src/vipsmanualse2.html:class="td11">2       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-4"  
doc/src/vipsmanualse2.html:class="td11">Unsigned 16-bit int   </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_SHORT    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTSHORT       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-3"  
doc/src/vipsmanualse2.html:class="td11">3       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-4"  
doc/src/vipsmanualse2.html:class="td11">Signed 16-bit int       </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_UINT     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTUINT        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-3"  
doc/src/vipsmanualse2.html:class="td11">4       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-4"  
doc/src/vipsmanualse2.html:class="td11">Unsigned 32-bit int   </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_INT      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTINT         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-3"  
doc/src/vipsmanualse2.html:class="td11">5       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-4"  
doc/src/vipsmanualse2.html:class="td11">Signed 32-bit int       </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_FLOAT    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTFLOAT       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-3"  
doc/src/vipsmanualse2.html:class="td11">6       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-4"  
doc/src/vipsmanualse2.html:class="td11">32-bit IEEE float      </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_COMPLEX  </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTCOMPLEX     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-3"  
doc/src/vipsmanualse2.html:class="td11">7       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_DOUBLE   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTDOUBLE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-3"  
doc/src/vipsmanualse2.html:class="td11">8       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-4"  
doc/src/vipsmanualse2.html:class="td11">64-bit IEEE double   </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_DPCOMPLEX</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FMTDPCOMPLEX   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-3"  
doc/src/vipsmanualse2.html:class="td11">9       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-13-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">BandFmt</span></span></div><!--tex4ht:label?: x7-80022 -->
doc/src/vipsmanualse2.html:<!--l. 90--><p class="indent" >  <a 
doc/src/vipsmanualse2.html: id="x7-80033"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse2.html:<!--l. 90--><p class="noindent" >
doc/src/vipsmanualse2.html:<div class="tabular"><table id="TBL-3" class="tabular" 
doc/src/vipsmanualse2.html:><colgroup id="TBL-3-1g"><col 
doc/src/vipsmanualse2.html:id="TBL-3-1"></colgroup><colgroup id="TBL-3-2g"><col 
doc/src/vipsmanualse2.html:id="TBL-3-2"></colgroup><colgroup id="TBL-3-3g"><col 
doc/src/vipsmanualse2.html:id="TBL-3-3"></colgroup><colgroup id="TBL-3-4g"><col 
doc/src/vipsmanualse2.html:id="TBL-3-4"></colgroup><tr 
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Coding        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-2"  
doc/src/vipsmanualse2.html:class="td11">C++ and Python name</td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-3"  
doc/src/vipsmanualse2.html:class="td11">Value</td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_NONE</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">NOCODING       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-3"  
doc/src/vipsmanualse2.html:class="td11">0       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LABQ</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">LABQ           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-3"  
doc/src/vipsmanualse2.html:class="td11">2       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_RAD </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">RAD            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-3"  
doc/src/vipsmanualse2.html:class="td11">6       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-5-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Coding</span></span></div><!--tex4ht:label?: x7-80033 -->
doc/src/vipsmanualse2.html:<!--l. 105--><p class="indent" >  <a 
doc/src/vipsmanualse2.html: id="x7-80044"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse2.html:<!--l. 105--><p class="noindent" >
doc/src/vipsmanualse2.html:<div class="tabular"><table id="TBL-4" class="tabular" 
doc/src/vipsmanualse2.html:><colgroup id="TBL-4-1g"><col 
doc/src/vipsmanualse2.html:id="TBL-4-1"></colgroup><colgroup id="TBL-4-2g"><col 
doc/src/vipsmanualse2.html:id="TBL-4-2"></colgroup><colgroup id="TBL-4-3g"><col 
doc/src/vipsmanualse2.html:id="TBL-4-3"></colgroup><colgroup id="TBL-4-4g"><col 
doc/src/vipsmanualse2.html:id="TBL-4-4"></colgroup><tr 
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Type             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-2"  
doc/src/vipsmanualse2.html:class="td11">C++ and Python name</td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-3"  
doc/src/vipsmanualse2.html:class="td11">Value</td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_MULTIBAND</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">MULTIBAND      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-3"  
doc/src/vipsmanualse2.html:class="td11">0       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_B</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_W      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">B</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_W            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-3"  
doc/src/vipsmanualse2.html:class="td11">1       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_HISTOGRAM</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">HISTOGRAM      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-3"  
doc/src/vipsmanualse2.html:class="td11">10     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_FOURIER  </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">FOURIER        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-3"  
doc/src/vipsmanualse2.html:class="td11">24     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_XYZ      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">XYZ            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-3"  
doc/src/vipsmanualse2.html:class="td11">12     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-4"  
doc/src/vipsmanualse2.html:class="ptmri7t-">CIE XYZ </span>colour space      </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LAB      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">LAB            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-3"  
doc/src/vipsmanualse2.html:class="td11">13     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-4"  
doc/src/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span> colour space</td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CMYK     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">CMYK           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-3"  
doc/src/vipsmanualse2.html:class="td11">15     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-4"  
doc/src/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_icc</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_export()  </span></td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LABQ     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">LABQ           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-3"  
doc/src/vipsmanualse2.html:class="td11">16     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-4"  
doc/src/vipsmanualse2.html:class="td11">32-bit <span 
doc/src/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span>    </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_RGB      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">RGB            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-3"  
doc/src/vipsmanualse2.html:class="td11">17     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_UCS      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">UCS            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-3"  
doc/src/vipsmanualse2.html:class="td11">18     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-4"  
doc/src/vipsmanualse2.html:class="ptmri7t-">UCS(1:1) </span>colour space     </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LCH      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">LCH            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-3"  
doc/src/vipsmanualse2.html:class="td11">19     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-4"  
doc/src/vipsmanualse2.html:class="ptmri7t-">CIE LCh </span>colour space      </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LABS     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">LABS           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-3"  
doc/src/vipsmanualse2.html:class="td11">21     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-4"  
doc/src/vipsmanualse2.html:class="td11">48-bit <span 
doc/src/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span>    </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_sRGB     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">sRGB           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-3"  
doc/src/vipsmanualse2.html:class="td11">22     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-4"  
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_YXY      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">YXY            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-3"  
doc/src/vipsmanualse2.html:class="td11">23     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-4"  
doc/src/vipsmanualse2.html:class="ptmri7t-">CIE Yxy </span>colour space       </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_RGB16    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">RGB16          </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-3"  
doc/src/vipsmanualse2.html:class="td11">25     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-4"  
doc/src/vipsmanualse2.html:class="td11">16-bit RGB                       </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_GREY16   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-2"  
doc/src/vipsmanualse2.html:class="pcrr7t-">GREY16         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-3"  
doc/src/vipsmanualse2.html:class="td11">26     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-4"  
doc/src/vipsmanualse2.html:class="td11">16-bit monochrome          </td>
doc/src/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-18-1"  
doc/src/vipsmanualse2.html:class="pcrr7t-">Type</span></span></div><!--tex4ht:label?: x7-80044 -->
doc/src/vipsmanualse2.html: id="x7-90001.2.2"></a>Computation formats</h4>
doc/src/vipsmanualse2.html:<!--l. 134--><p class="noindent" >This type of image has <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">Coding </span>set to <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_NONE</span>.
doc/src/vipsmanualse2.html:out left-to-right, top-to-bottom. Each pixel contains the
doc/src/vipsmanualse2.html:band format, which may be an 8-, 16- or 32-bit integer
doc/src/vipsmanualse2.html:<!--l. 142--><p class="indent" >  All values are stored in the host-machine&#8217;s native number
doc/src/vipsmanualse2.html:representation (that is, either most-significant first, as in
doc/src/vipsmanualse2.html:SPARC and 680x0 machines, or least-significant first,
doc/src/vipsmanualse2.html:library will automatically byte-swap for you during
doc/src/vipsmanualse2.html:<!--l. 147--><p class="noindent" >
doc/src/vipsmanualse2.html: id="x7-100001.2.3"></a>Storage formats</h4>
doc/src/vipsmanualse2.html:<!--l. 149--><p class="noindent" >All storage formats have other values for the <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">Coding</span>
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LABQ </span>and
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_RAD</span>.
doc/src/vipsmanualse2.html:<!--l. 152--><p class="indent" >  <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LABQ </span>stores <span 
doc/src/vipsmanualse2.html:class="cmmi-10">L</span><sup><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span></sup>, <span 
doc/src/vipsmanualse2.html:class="cmmi-10">a</span><sup><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span></sup> and <span 
doc/src/vipsmanualse2.html:class="cmmi-10">b</span><sup><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span></sup> for each
doc/src/vipsmanualse2.html:class="cmmi-10">L</span><sup><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span></sup> and 11 bits for each of <span 
doc/src/vipsmanualse2.html:class="cmmi-10">a</span><sup><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span></sup>
doc/src/vipsmanualse2.html:class="cmmi-10">b</span><sup><span 
doc/src/vipsmanualse2.html:class="cmsy-7">*</span></sup>. These 32 bits are packed into 4 bytes, with
doc/src/vipsmanualse2.html:bytes, and the left-over bits packed into the final byte as
doc/src/vipsmanualse2.html:<!--l. 158--><p class="indent" >  This format is a little awkward to process. Some VIPS
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LABQ</span>
doc/src/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_extract</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_area()</span>, for example), but
doc/src/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_LabQ2Lab()</span>)
doc/src/vipsmanualse2.html:<!--l. 163--><p class="indent" >  <span 
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_RAD </span>stores <span 
doc/src/vipsmanualse2.html:class="cmmi-10">RGB </span>or <span 
doc/src/vipsmanualse2.html:class="cmmi-10">XY Z </span>float images
doc/src/vipsmanualse2.html:<!--l. 169--><p class="indent" >  This format is a little awkward to process. Some VIPS
doc/src/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_RAD</span>
doc/src/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_extract</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_area()</span>, for example), but
doc/src/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse2.html:class="pcrr7t-">_rad2float()</span>
doc/src/vipsmanualse2.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse2.html:href="vipsmanualse1.html#tailvipsmanualse1.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse2.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vmask.tex:\verb+VMask+ has two sub-classes, \verb+VIMask+ and \verb+VDMask+. These
doc/src/vmask.tex:The varargs constructors are not wrapped in Python --- use the vector
doc/src/vmask.tex:		  [-1, -1, -1,
doc/src/vmask.tex:		   -1,  8, -1,
doc/src/vmask.tex:		   -1, -1, -1])
doc/src/vmask.tex:\verb+VMask+ defines copy and assignment with pointer-style
doc/src/vmask.tex:Internally, a \verb+VMask+ object is just a pointer to a reference-counting
doc/src/vmask.tex:You can use \verb+[]+ to get at matrix elements, numbered left-to-right,
doc/src/vmask.tex:top-to-bottom. Alternatively, use \verb+()+ to address elements by $x,y$
doc/src/vipsmanualse10.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse10.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse10.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse10.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse10.html:<!-- 3,html --> 
doc/src/vipsmanualse10.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse10.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse10.html:href="vipsmanualse9.html#tailvipsmanualse9.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse10.html: id="x16-670002.4"></a>The VIPS base class: <span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></h3>
doc/src/vipsmanualse10.html:<!--l. 4--><p class="noindent" >VIPS is in the process of moving to an object system based
doc/src/vipsmanualse10.html:on <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">GObject</span></span></span>. You can read about the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">GObjec</span></span></span> library at
doc/src/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-109">
doc/src/vipsmanualse10.html:<!--l. 9--><p class="nopar" >
doc/src/vipsmanualse10.html:<!--l. 11--><p class="indent" >  We&#8217;ve implemented two new subsystems (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsFormat</span></span></span>
doc/src/vipsmanualse10.html:and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsInterpolate</span></span></span>) on top of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> but
doc/src/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> is still developing and is likely to change in
doc/src/vipsmanualse10.html:<!--l. 16--><p class="indent" >    This section quickly summarises enough of the
doc/src/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> system to let you use the two derived APIs
doc/src/vipsmanualse10.html:<!--l. 20--><p class="noindent" >
doc/src/vipsmanualse10.html: id="x16-680002.4.1"></a>Properties</h4>
doc/src/vipsmanualse10.html:<!--l. 22--><p class="noindent" >Like the rest of VIPS, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> is a functional type.
doc/src/vipsmanualse10.html:<!--l. 26--><p class="indent" >    To enforce these rules, VIPS extends the standard
doc/src/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">GObject</span></span></span> property system and adds a new phase to
doc/src/vipsmanualse10.html:<!--l. 30--><p class="noindent" >
doc/src/vipsmanualse10.html: id="x16-690002.4.1"></a>Lookup</h5>
doc/src/vipsmanualse10.html:<!--l. 32--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">vips_type_find()</span></span></span> is a convenience function that looks
doc/src/vipsmanualse10.html:  <div class="verbatim" id="verbatim-110">
doc/src/vipsmanualse10.html:<!--l. 38--><p class="nopar" >
doc/src/vipsmanualse10.html:<!--l. 40--><p class="noindent" >finds a subclass of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsInterpolate</span></span></span> nicknamed &#8216;bilinear&#8217;.
doc/src/vipsmanualse10.html:can be rather unwieldy (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsInterpolateBilinear</span></span></span>
doc/src/vipsmanualse10.html:<!--l. 45--><p class="noindent" >
doc/src/vipsmanualse10.html: id="x16-700002.4.1"></a>Create</h5>
doc/src/vipsmanualse10.html:<!--l. 47--><p class="noindent" >Build an instance with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">g_object_new()</span></span></span>. For example:
doc/src/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-111">
doc/src/vipsmanualse10.html:<!--l. 54--><p class="nopar" >
doc/src/vipsmanualse10.html:<!--l. 56--><p class="indent" >  You can set any of the object&#8217;s properties in the constructor.
doc/src/vipsmanualse10.html:  <div class="verbatim" id="verbatim-112">
doc/src/vipsmanualse10.html:<!--l. 63--><p class="nopar" >
doc/src/vipsmanualse10.html:<!--l. 65--><p class="indent" >  You can loop over an object&#8217;s required and optional
doc/src/vipsmanualse10.html:parameters with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">vips_argument_map()</span></span></span>.
doc/src/vipsmanualse10.html:<!--l. 68--><p class="noindent" >
doc/src/vipsmanualse10.html: id="x16-710002.4.1"></a>Build</h5>
doc/src/vipsmanualse10.html:<!--l. 70--><p class="noindent" >Once all of the required any any of the optional object
doc/src/vipsmanualse10.html:parameters have been set, call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">vips_object_build()</span></span></span>:
doc/src/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-113">
doc/src/vipsmanualse10.html:<!--l. 75--><p class="nopar" >
doc/src/vipsmanualse10.html:<!--l. 77--><p class="indent" >  This function checks that all the parameters have been set
doc/src/vipsmanualse10.html:correctly and starts the object working. It returns non-zero
doc/src/vipsmanualse10.html:on error, setting <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">im_error_string()</span></span></span>.
doc/src/vipsmanualse10.html:<!--l. 81--><p class="noindent" >
doc/src/vipsmanualse10.html: id="x16-720002.4.1"></a>Use</h5>
doc/src/vipsmanualse10.html:<!--l. 83--><p class="noindent" >The object is now fully working. You can read results from
doc/src/vipsmanualse10.html:  <div class="verbatim" id="verbatim-114">
doc/src/vipsmanualse10.html:<!--l. 89--><p class="nopar" >
doc/src/vipsmanualse10.html:<!--l. 91--><p class="noindent" >
doc/src/vipsmanualse10.html: id="x16-730002.4.2"></a>Convenience functions</h4>
doc/src/vipsmanualse10.html:<!--l. 93--><p class="noindent" >Two functions simplify building and printing objects.
doc/src/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">vips_object_new_from_string()</span></span></span> makes a new
doc/src/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-115">
doc/src/vipsmanualse10.html:<!--l. 101--><p class="nopar" >
doc/src/vipsmanualse10.html:<!--l. 103--><p class="indent" >  This is the function used by <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">IM_INPUT_INTERPOLATE()</span></span></span>,
doc/src/vipsmanualse10.html:for example, to parse command-line arguments. The syntax
doc/src/vipsmanualse10.html:  <div class="verbatim" id="verbatim-116">
doc/src/vipsmanualse10.html:nickname&#x00A0;[&#x00A0;(&#x00A0;required-arg1,
doc/src/vipsmanualse10.html:&#x00A0;<br />&#x00A0;&#x00A0;required-argn,
doc/src/vipsmanualse10.html:&#x00A0;<br />&#x00A0;&#x00A0;optional-arg-name&#x00A0;=&#x00A0;value,
doc/src/vipsmanualse10.html:&#x00A0;<br />&#x00A0;&#x00A0;optional-argm-name&#x00A0;=&#x00A0;value&#x00A0;)&#x00A0;]
doc/src/vipsmanualse10.html:<!--l. 113--><p class="nopar" >
doc/src/vipsmanualse10.html:<!--l. 115--><p class="indent" >  So values for all the required arguments, in the correct
doc/src/vipsmanualse10.html:<!--l. 119--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">vips_object_to_string()</span></span></span> is the exact opposite:
doc/src/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span>.
doc/src/vipsmanualse10.html:<!--l. 123--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">vips_object_new()</span></span></span> wraps up the business of
doc/src/vipsmanualse10.html:<!--l. 128--><p class="indent" >  A switch to the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">vips</span></span></span> command-line program is handy
doc/src/vipsmanualse10.html:for listing subtypes of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span>. Try:
doc/src/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-117">
doc/src/vipsmanualse10.html:  $&#x00A0;vips&#x00A0;--list&#x00A0;classes 
doc/src/vipsmanualse10.html:<!--l. 133--><p class="nopar" >
doc/src/vipsmanualse10.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse10.html:href="vipsmanualse9.html#tailvipsmanualse9.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse10.html:<!--l. 1--><p class="indent" >  <a 
doc/src/operintro.tex:VIPS image I/O (input-output) system. For background, you should probably
doc/src/operintro.tex:need detailed information on any particular function, use the on-line UNIX
doc/src/operintro.tex:use PIO, see below). You should get an approximately linear speed-up as
doc/src/operintro.tex:implement your new operation in small, reusable, easy-to-understand
doc/src/operintro.tex:than can be addressed with 32 bits on a plain 32-bit machine. VIPS operations
doc/src/operintro.tex:UNIX command-line interface (\vips{}) and a C++ and Python API.
doc/src/operintro.tex:The I/O system supports three styles of input-output. 
doc/src/operintro.tex:\item[Whole-image I/O (WIO)]
doc/src/operintro.tex:This style is a largely a left-over from VIPS 6.x. WIO image-processing
doc/src/operintro.tex:\item[Partial-image I/O (PIO)]
doc/src/operintro.tex:\item[In-place]
doc/src/operintro.tex:the image at any time, and is used by the VIPS in-place operations, such
doc/src/operintro.tex:and \verb+im_wrapmany()+ operations. These take a simple buffer-processing
doc/src/operintro.tex:operation supplied by you and wrap it up as a full-blown PIO operation. 
doc/src/vipsmanual.css:.cmr-7{font-size:70%;}
doc/src/vipsmanual.css:.cmmi-10{font-style: italic;}
doc/src/vipsmanual.css:.cmsy-7{font-size:70%;}
doc/src/vipsmanual.css:.ptmr7t-{font-family: monospace;}
doc/src/vipsmanual.css:.ptmr7t-{font-family: monospace;}
doc/src/vipsmanual.css:.ptmr7t-{font-family: monospace;}
doc/src/vipsmanual.css:.ptmr7t-x-x-207{font-size:207%;font-family: monospace;}
doc/src/vipsmanual.css:.ptmr7t-x-x-207{font-family: monospace;}
doc/src/vipsmanual.css:.ptmr7t-x-x-207{font-family: monospace;}
doc/src/vipsmanual.css:.ptmr7t-x-x-120{font-size:120%;font-family: monospace;}
doc/src/vipsmanual.css:.ptmr7t-x-x-120{font-family: monospace;}
doc/src/vipsmanual.css:.ptmr7t-x-x-120{font-family: monospace;}
doc/src/vipsmanual.css:.pcrr7t-{font-family: monospace;}
doc/src/vipsmanual.css:.ptmri7t-{font-style: italic;}
doc/src/vipsmanual.css:.ptmb7t-{ font-weight: bold;}
doc/src/vipsmanual.css:.pcrb7t-{ font-family: monospace; font-weight: bold;}
doc/src/vipsmanual.css:p.noindent { text-indent: 0em }
doc/src/vipsmanual.css:td p.noindent { text-indent: 0em; margin-top:0em; }
doc/src/vipsmanual.css:p.nopar { text-indent: 0em; }
doc/src/vipsmanual.css:p.indent{ text-indent: 1.5em }
doc/src/vipsmanual.css:a img { border-top: 0; border-left: 0; border-right: 0; }
doc/src/vipsmanual.css:center { margin-top:1em; margin-bottom:1em; }
doc/src/vipsmanual.css:td center { margin-top:0em; margin-bottom:0em; }
doc/src/vipsmanual.css:img.math{vertical-align:middle;}
doc/src/vipsmanual.css:li p.indent { text-indent: 0em }
doc/src/vipsmanual.css:li p:first-child{ margin-top:0em; }
doc/src/vipsmanual.css:li p:last-child, li div:last-child { margin-bottom:0.5em; }
doc/src/vipsmanual.css:li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
doc/src/vipsmanual.css:.enumerate1 {list-style-type:decimal;}
doc/src/vipsmanual.css:.enumerate2 {list-style-type:lower-alpha;}
doc/src/vipsmanual.css:.enumerate3 {list-style-type:lower-roman;}
doc/src/vipsmanual.css:.enumerate4 {list-style-type:upper-alpha;}
doc/src/vipsmanual.css:div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
doc/src/vipsmanual.css:.obeylines-h,.obeylines-v {white-space: nowrap; }
doc/src/vipsmanual.css:div.obeylines-v p { margin-top:0; margin-bottom:0; }
doc/src/vipsmanual.css:.overline{ text-decoration:overline; }
doc/src/vipsmanual.css:.overline img{ border-top: 1px solid black; }
doc/src/vipsmanual.css:td.displaylines {text-align:center; white-space:nowrap;}
doc/src/vipsmanual.css:.centerline {text-align:center;}
doc/src/vipsmanual.css:.rightline {text-align:right;}
doc/src/vipsmanual.css:div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
doc/src/vipsmanual.css:.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/src/vipsmanual.css:div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/src/vipsmanual.css:div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
doc/src/vipsmanual.css:div.center div {text-align: left;}
doc/src/vipsmanual.css:div.flushright, div.flushright div.flushright {text-align: right;}
doc/src/vipsmanual.css:div.flushright div {text-align: left;}
doc/src/vipsmanual.css:div.flushleft {text-align: left;}
doc/src/vipsmanual.css:.underline{ text-decoration:underline; }
doc/src/vipsmanual.css:.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
doc/src/vipsmanual.css:.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/src/vipsmanual.css:.framebox-c {text-align:center;}
doc/src/vipsmanual.css:.framebox-l {text-align:left;}
doc/src/vipsmanual.css:.framebox-r {text-align:right;}
doc/src/vipsmanual.css:span.thank-mark{ vertical-align: super }
doc/src/vipsmanual.css:span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
doc/src/vipsmanual.css:div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
doc/src/vipsmanual.css:table.tabular td p{margin-top:0em;}
doc/src/vipsmanual.css:table.tabular {margin-left: auto; margin-right: auto;}
doc/src/vipsmanual.css:td p:first-child{ margin-top:0em; }
doc/src/vipsmanual.css:td p:last-child{ margin-bottom:0em; }
doc/src/vipsmanual.css:div.td00{ margin-left:0pt; margin-right:0pt; }
doc/src/vipsmanual.css:div.td01{ margin-left:0pt; margin-right:5pt; }
doc/src/vipsmanual.css:div.td10{ margin-left:5pt; margin-right:0pt; }
doc/src/vipsmanual.css:div.td11{ margin-left:5pt; margin-right:5pt; }
doc/src/vipsmanual.css:table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
doc/src/vipsmanual.css:td.td00{ padding-left:0pt; padding-right:0pt; }
doc/src/vipsmanual.css:td.td01{ padding-left:0pt; padding-right:5pt; }
doc/src/vipsmanual.css:td.td10{ padding-left:5pt; padding-right:0pt; }
doc/src/vipsmanual.css:td.td11{ padding-left:5pt; padding-right:5pt; }
doc/src/vipsmanual.css:table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
doc/src/vipsmanual.css:.tabbing-right {text-align:right;}
doc/src/vipsmanual.css:span.TEX {letter-spacing: -0.125em; }
doc/src/vipsmanual.css:span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
doc/src/vipsmanual.css:a span.TEX span.E {text-decoration: none; }
doc/src/vipsmanual.css:span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
doc/src/vipsmanual.css:span.LATEX span.TEX{ position:relative; left: -0.4em; }
doc/src/vipsmanual.css:div.float, div.figure {margin-left: auto; margin-right: auto;}
doc/src/vipsmanual.css:div.float img {text-align:center;}
doc/src/vipsmanual.css:div.figure img {text-align:center;}
doc/src/vipsmanual.css:.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
doc/src/vipsmanual.css:.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
doc/src/vipsmanual.css:.equation td{text-align:center; }
doc/src/vipsmanual.css:td.equation { margin-top:1em; margin-bottom:1em; } 
doc/src/vipsmanual.css:td.equation-label { width:5%; text-align:center; }
doc/src/vipsmanual.css:td.eqnarray4 { width:5%; white-space: normal; }
doc/src/vipsmanual.css:table.eqnarray-star, table.eqnarray {width:100%;}
doc/src/vipsmanual.css:div.eqnarray{text-align:center;}
doc/src/vipsmanual.css:div.array {text-align:center;}
doc/src/vipsmanual.css:div.pmatrix {text-align:center;}
doc/src/vipsmanual.css:span.pmatrix img{vertical-align:middle;}
doc/src/vipsmanual.css:div.pmatrix {text-align:center;}
doc/src/vipsmanual.css:span.bar-css {text-decoration:overline;}
doc/src/vipsmanual.css:img.cdots{vertical-align:middle;}
doc/src/vipsmanual.css:.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
doc/src/vipsmanual.css:.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
doc/src/vipsmanual.css:.index-item, .index-subitem, .index-subsubitem {display:block}
doc/src/vipsmanual.css:div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
doc/src/vipsmanual.css:div.caption span.id{font-weight: bold; white-space: nowrap; }
doc/src/vipsmanual.css:h1.partHead{text-align: center}
doc/src/vipsmanual.css:p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
doc/src/vipsmanual.css:p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
doc/src/vipsmanual.css:.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
doc/src/vipsmanual.css:.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
doc/src/vipsmanual.css:.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
doc/src/vipsmanual.css:.verse{white-space:nowrap; margin-left:2em}
doc/src/vipsmanual.css:div.maketitle {text-align:center;}
doc/src/vipsmanual.css:h2.titleHead{text-align:center;}
doc/src/vipsmanual.css:div.maketitle{ margin-bottom: 2em; }
doc/src/vipsmanual.css:div.author, div.date {text-align:center;}
doc/src/vipsmanual.css:div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
doc/src/vipsmanual.css:div.author{white-space: nowrap;}
doc/src/vipsmanual.css:.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
doc/src/vipsmanual.css:h1.partHead{text-align: center}
doc/src/vipsmanual.css: .chapterToc, .likechapterToc {margin-left:0em;}
doc/src/vipsmanual.css: .chapterToc ~ .likesectionToc, .chapterToc ~ .sectionToc, .likechapterToc ~ .likesectionToc, .likechapterToc ~ .sectionToc {margin-left:2em;}
doc/src/vipsmanual.css: .chapterToc ~ .likesectionToc ~ .likesubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc, .likechapterToc ~ .sectionToc ~ .subsectionToc {margin-left:4em;}
doc/src/vipsmanual.css:.chapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc ~ .subsubsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likechapterToc ~ .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc .likechapterToc ~ .sectionToc ~ .subsectionToc ~ .subsubsectionToc {margin-left:6em;}
doc/src/vipsmanual.css: .likesectionToc , .sectionToc {margin-left:0em;}
doc/src/vipsmanual.css: .likesectionToc ~ .likesubsectionToc, .likesectionToc ~ .subsectionToc, .sectionToc ~ .likesubsectionToc, .sectionToc ~ .subsectionToc {margin-left:2em;}
doc/src/vipsmanual.css:.likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .sectionToc ~ .subsectionToc ~ .subsubsectionToc {margin-left:4em;}
doc/src/vipsmanual.css: .likesubsectionToc, .subsectionToc {margin-left:0em;}
doc/src/vipsmanual.css: .likesubsectionToc ~ .subsubsectionToc, .subsectionToc ~ .subsubsectionToc, {margin-left:2em;}
doc/src/vipsmanual.css:.figure img.graphics {margin-left:10%;}
doc/src/vipsmanualch1.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualch1.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualch1.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualch1.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualch1.html:<!-- 3,html --> 
doc/src/vipsmanualch1.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualch1.html:  <!--l. 61--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualch1.html:href="vipsmanualli3.html#tailvipsmanualli3.html" >prev-tail</a>] [<a 
doc/src/vipsmanualch1.html: id="x5-40001"></a>VIPS from C++ and Python</h2>
doc/src/vipsmanualch1.html:href="vipsmanualse1.html#x6-50001.1">Introduction</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse1.html#x6-60001.1.1">If you&#8217;ve used the C API</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse2.html#x7-70001.2">The VIPS file format</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse2.html#x7-80001.2.1">VIPS file header</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse2.html#x7-90001.2.2">Computation formats</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse2.html#x7-100001.2.3">Storage formats</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse3.html#x8-110001.3">The <span 
doc/src/vipsmanualch1.html:class="pcrr7t-">VImage </span>class</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse3.html#x8-120001.3.1">Constructors</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse3.html#x8-130001.3.2">File conversion</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse3.html#x8-140001.3.3">Projection functions</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse3.html#x8-150001.3.4">Assignment</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse3.html#x8-160001.3.5">Computing with <span 
doc/src/vipsmanualch1.html:class="pcrr7t-">VImage</span>s</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse3.html#x8-170001.3.6">Writing results</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse3.html#x8-180001.3.7">Type conversions</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse4.html#x9-190001.4">The <span 
doc/src/vipsmanualch1.html:class="pcrr7t-">VMask </span>class</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse4.html#x9-200001.4.1">Constructors</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse4.html#x9-210001.4.2">Projection functions</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse4.html#x9-220001.4.3">Assignment</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse4.html#x9-230001.4.4">Computing with <span 
doc/src/vipsmanualch1.html:class="pcrr7t-">VMask</span></a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse4.html#x9-240001.4.5"><span 
doc/src/vipsmanualch1.html:class="pcrr7t-">VIMask </span>operations</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse4.html#x9-250001.4.6"><span 
doc/src/vipsmanualch1.html:class="pcrr7t-">VDMask </span>operations</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse4.html#x9-260001.4.7">Output of masks</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse5.html#x10-270001.5">The <span 
doc/src/vipsmanualch1.html:class="pcrr7t-">VDisplay </span>class</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse5.html#x10-280001.5.1">Constructors</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse5.html#x10-290001.5.2">Projection functions</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse6.html#x11-300001.6">The <span 
doc/src/vipsmanualch1.html:class="pcrr7t-">VError </span>class</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse6.html#x11-310001.6.1">Constructors</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse6.html#x11-320001.6.2">Projection functions</a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse6.html#x11-330001.6.3">Computing with <span 
doc/src/vipsmanualch1.html:class="pcrr7t-">VError</span></a></span>
doc/src/vipsmanualch1.html:href="vipsmanualse6.html#x11-340001.6.4">Convenience function</a></span>
doc/src/vipsmanualch1.html:  <!--l. 70--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualch1.html:href="vipsmanualli3.html#tailvipsmanualli3.html" >prev-tail</a>] [<a 
doc/src/vipsmanualch1.html:<!--l. 70--><p class="indent" >  <a 
Coincidencia en el archivo binario doc/src/vipsmanual.pdf
doc/src/packages.tex:number. All operations are point-to-point --- each output element depends
doc/src/packages.tex:conventions for type promotion --- so multiplying two \verb+IM_BANDFMT_UCHAR+
doc/src/packages.tex:$ vips --list arithmetic
doc/src/packages.tex:im_abs               - absolute value
doc/src/packages.tex:im_acostra           - acos of image (result in degrees)
doc/src/packages.tex:im_add               - add two images
doc/src/packages.tex:im_asintra           - asin of image (result in degrees)
doc/src/packages.tex:im_atantra           - atan of image (result in degrees)
doc/src/packages.tex:im_avg               - average value of image
doc/src/packages.tex:im_point_bilinear    - interpolate value at single point, linearly
doc/src/packages.tex:im_bandmean          - average image bands
doc/src/packages.tex:im_ceil              - round to smallest integal value not less than
doc/src/packages.tex:im_cmulnorm          - multiply two complex images, normalising output
doc/src/packages.tex:im_costra            - cos of image (angles in degrees)
doc/src/packages.tex:im_cross_phase       - phase of cross power spectrum of two complex images
doc/src/packages.tex:im_deviate           - standard deviation of image
doc/src/packages.tex:im_divide            - divide two images
doc/src/packages.tex:im_exp10tra          - 10^pel of image
doc/src/packages.tex:im_expntra           - x^pel of image
doc/src/packages.tex:im_expntra_vec       - [x,y,z]^pel of image
doc/src/packages.tex:im_exptra            - e^pel of image
doc/src/packages.tex:im_fav4              - average of 4 images
doc/src/packages.tex:im_floor             - round to largest integal value not greater than
doc/src/packages.tex:im_gadd              - calculate a*in1 + b*in2 + c = outfile
doc/src/packages.tex:im_invert            - photographic negative
doc/src/packages.tex:im_lintra            - calculate a*in + b = outfile
doc/src/packages.tex:im_linreg            - pixelwise linear regression
doc/src/packages.tex:im_lintra_vec        - calculate a*in + b -> out, a and b vectors
doc/src/packages.tex:im_litecor           - calculate max(white)*factor*(in/white), if clip == 1
doc/src/packages.tex:im_log10tra          - log10 of image
doc/src/packages.tex:im_logtra            - ln of image
doc/src/packages.tex:im_max               - maximum value of image
doc/src/packages.tex:im_maxpos            - position of maximum value of image
doc/src/packages.tex:im_maxpos_avg        - position of maximum value of image, averaging in case of draw
doc/src/packages.tex:im_maxpos_vec        - position and value of n maxima of image
doc/src/packages.tex:im_measure           - measure averages of a grid of patches
doc/src/packages.tex:im_min               - minimum value of image
doc/src/packages.tex:im_minpos            - position of minimum value of image
doc/src/packages.tex:im_minpos_vec        - position and value of n minima of image
doc/src/packages.tex:im_multiply          - multiply two images
doc/src/packages.tex:im_powtra            - pel^x ofbuildimage
doc/src/packages.tex:im_powtra_vec        - pel^[x,y,z] of image
doc/src/packages.tex:im_remainder         - remainder after integer division
doc/src/packages.tex:im_remainderconst    - remainder after integer division by a constant
doc/src/packages.tex:im_remainderconst_vec - remainder after integer division by a vector of constants
doc/src/packages.tex:im_rint              - round to nearest integal value
doc/src/packages.tex:im_sign              - unit vector in direction of value
doc/src/packages.tex:im_sintra            - sin of image (angles in degrees)
doc/src/packages.tex:im_stats             - many image statistics in one pass
doc/src/packages.tex:im_subtract          - subtract two images
doc/src/packages.tex:im_tantra            - tan of image (angles in degrees)
doc/src/packages.tex:have the same number of bands --- their types may differ) and produce a
doc/src/packages.tex:$ vips --list relational
doc/src/packages.tex:im_blend             - use cond image to blend between images in1 and in2
doc/src/packages.tex:im_equal             - two images equal in value
doc/src/packages.tex:im_equal_vec         - image equals doublevec
doc/src/packages.tex:im_equalconst        - image equals const
doc/src/packages.tex:im_ifthenelse        - use cond image to choose pels from image in1 or in2
doc/src/packages.tex:im_less              - in1 less than in2 in value
doc/src/packages.tex:im_less_vec          - in less than doublevec
doc/src/packages.tex:im_lessconst         - in less than const
doc/src/packages.tex:im_lesseq            - in1 less than or equal to in2 in value
doc/src/packages.tex:im_lesseq_vec        - in less than or equal to doublevec
doc/src/packages.tex:im_lesseqconst       - in less than or equal to const
doc/src/packages.tex:im_more              - in1 more than in2 in value
doc/src/packages.tex:im_more_vec          - in more than doublevec
doc/src/packages.tex:im_moreconst         - in more than const
doc/src/packages.tex:im_moreeq            - in1 more than or equal to in2 in value
doc/src/packages.tex:im_moreeq_vec        - in more than or equal to doublevec
doc/src/packages.tex:im_moreeqconst       - in more than or equal to const
doc/src/packages.tex:im_notequal          - two images not equal in value
doc/src/packages.tex:im_notequal_vec      - image does not equal doublevec
doc/src/packages.tex:im_notequalconst     - image does not equal const
doc/src/packages.tex:$ vips --list boolean
doc/src/packages.tex:im_andimage          - bitwise and of two images
doc/src/packages.tex:im_andimageconst     - bitwise and of an image with a constant
doc/src/packages.tex:im_andimage_vec      - bitwise and of an image with a vector constant
doc/src/packages.tex:im_orimage           - bitwise or of two images
doc/src/packages.tex:im_orimageconst      - bitwise or of an image with a constant
doc/src/packages.tex:im_orimage_vec       - bitwise or of an image with a vector constant
doc/src/packages.tex:im_eorimage          - bitwise eor of two images
doc/src/packages.tex:im_eorimageconst     - bitwise eor of an image with a constant
doc/src/packages.tex:im_eorimage_vec      - bitwise eor of an image with a vector constant
doc/src/packages.tex:im_shiftleft         - shift integer image n bits to left
doc/src/packages.tex:im_shiftright        - shift integer image n bits to right
doc/src/packages.tex:This format represents coordinates in \cielab{} space as a three-
doc/src/packages.tex:\verb+Lab+ colourspace represents \cielab{} colour values with a three-band
doc/src/packages.tex:\ciexyz{} colour space represented as a three-band \verb+IM_BANDFMT_FLOAT+
doc/src/packages.tex:\cieyxy{} colour space represented as a three-band \verb+IM_BANDFMT_FLOAT+
doc/src/packages.tex:The colour-difference functions calculate either $\Delta{}E$ \cielab{} (1976
doc/src/packages.tex:$ vips --list colour
doc/src/packages.tex:im_LCh2Lab           - convert LCh to Lab
doc/src/packages.tex:im_LCh2UCS           - convert LCh to UCS
doc/src/packages.tex:im_Lab2LCh           - convert Lab to LCh
doc/src/packages.tex:im_Lab2LabQ          - convert Lab to LabQ
doc/src/packages.tex:im_Lab2LabS          - convert Lab to LabS
doc/src/packages.tex:im_Lab2UCS           - convert Lab to UCS
doc/src/packages.tex:im_Lab2XYZ           - convert D65 Lab to XYZ
doc/src/packages.tex:im_Lab2XYZ_temp      - convert Lab to XYZ, with a specified colour temperature
doc/src/packages.tex:im_Lab2disp          - convert Lab to displayable
doc/src/packages.tex:im_LabQ2LabS         - convert LabQ to LabS
doc/src/packages.tex:im_LabQ2Lab          - convert LabQ to Lab
doc/src/packages.tex:im_LabQ2XYZ          - convert LabQ to XYZ
doc/src/packages.tex:im_LabQ2disp         - convert LabQ to displayable
doc/src/packages.tex:im_LabS2LabQ         - convert LabS to LabQ
doc/src/packages.tex:im_LabS2Lab          - convert LabS to Lab
doc/src/packages.tex:im_UCS2LCh           - convert UCS to LCh
doc/src/packages.tex:im_UCS2Lab           - convert UCS to Lab
doc/src/packages.tex:im_UCS2XYZ           - convert UCS to XYZ
doc/src/packages.tex:im_XYZ2Lab           - convert D65 XYZ to Lab
doc/src/packages.tex:im_XYZ2Lab_temp      - convert XYZ to Lab, with a specified colour temperature
doc/src/packages.tex:im_XYZ2UCS           - convert XYZ to UCS
doc/src/packages.tex:im_XYZ2Yxy           - convert XYZ to Yxy
doc/src/packages.tex:im_XYZ2disp          - convert XYZ to displayble
doc/src/packages.tex:im_XYZ2sRGB          - convert XYZ to sRGB
doc/src/packages.tex:im_Yxy2XYZ           - convert Yxy to XYZ
doc/src/packages.tex:im_dE00_fromLab      - calculate delta-E CIE2000 for two Lab images
doc/src/packages.tex:im_dECMC_fromLab     - calculate delta-E CMC(1:1) for two Lab images
doc/src/packages.tex:im_dECMC_fromdisp    - calculate delta-E CMC(1:1) for two displayable images
doc/src/packages.tex:im_dE_fromLab        - calculate delta-E for two Lab images
doc/src/packages.tex:im_dE_fromXYZ        - calculate delta-E for two XYZ images
doc/src/packages.tex:im_dE_fromdisp       - calculate delta-E for two displayable images
doc/src/packages.tex:im_disp2Lab          - convert displayable to Lab
doc/src/packages.tex:im_disp2XYZ          - convert displayable to XYZ
doc/src/packages.tex:im_float2rad         - convert float to Radiance packed
doc/src/packages.tex:im_icc_ac2rc         - convert LAB from AC to RC using an ICC profile
doc/src/packages.tex:im_icc_export        - convert a float LAB to an 8-bit device image with an ICC profile
doc/src/packages.tex:im_icc_export_depth  - convert a float LAB to device space with an ICC profile
doc/src/packages.tex:im_icc_import        - convert a device image to float LAB with an ICC profile
doc/src/packages.tex:im_icc_import_embedded - convert a device image to float LAB using the embedded profile
doc/src/packages.tex:im_icc_present       - test for presence of ICC library
doc/src/packages.tex:im_icc_transform     - convert between two device images with a pair of ICC profiles
doc/src/packages.tex:im_lab_morph         - morph colourspace of a LAB image
doc/src/packages.tex:im_rad2float         - convert Radiance packed to float
doc/src/packages.tex:im_sRGB2XYZ          - convert sRGB to XYZ
doc/src/packages.tex:a sub-image).
doc/src/packages.tex:$ vips --list conversion
doc/src/packages.tex:im_bandjoin          - bandwise join of two images
doc/src/packages.tex:im_bernd             - extract from pyramid as jpeg
doc/src/packages.tex:im_black             - generate black image
doc/src/packages.tex:im_c2amph            - convert real and imaginary to phase and amplitude
doc/src/packages.tex:im_c2imag            - extract imaginary part of complex image
doc/src/packages.tex:im_c2ps              - find power spectrum of complex image
doc/src/packages.tex:im_c2real            - extract real part of complex image
doc/src/packages.tex:im_c2rect            - convert phase and amplitude to real and imaginary
doc/src/packages.tex:im_clip2c            - convert to signed 8-bit integer
doc/src/packages.tex:im_clip2cm           - convert to complex
doc/src/packages.tex:im_clip2d            - convert to double-precision float
doc/src/packages.tex:im_clip2dcm          - convert to double complex
doc/src/packages.tex:im_clip2f            - convert to single-precision float
doc/src/packages.tex:im_clip2fmt          - convert image format to ofmt
doc/src/packages.tex:im_clip2i            - convert to signed 32-bit integer
doc/src/packages.tex:im_clip2s            - convert to signed 16-bit integer
doc/src/packages.tex:im_clip2ui           - convert to unsigned 32-bit integer
doc/src/packages.tex:im_clip2us           - convert to unsigned 16-bit integer
doc/src/packages.tex:im_clip              - convert to unsigned 8-bit integer
doc/src/packages.tex:im_copy              - copy image
doc/src/packages.tex:im_copy_morph        - copy image, setting pixel layout
doc/src/packages.tex:im_copy_swap         - copy image, swapping byte order
doc/src/packages.tex:im_copy_set          - copy image, setting informational fields
doc/src/packages.tex:im_copy_set_meta     - copy image, setting a meta field
doc/src/packages.tex:im_extract_area      - extract area
doc/src/packages.tex:im_extract_areabands - extract area and bands
doc/src/packages.tex:im_extract_band      - extract band
doc/src/packages.tex:im_extract_bands     - extract several bands
doc/src/packages.tex:im_extract           - extract area/band
doc/src/packages.tex:im_falsecolour       - turn luminance changes into chrominance changes
doc/src/packages.tex:im_fliphor           - flip image left-right
doc/src/packages.tex:im_flipver           - flip image top-bottom
doc/src/packages.tex:im_gbandjoin         - bandwise join of many images
doc/src/packages.tex:im_grid              - chop a tall thin image into a grid of images
doc/src/packages.tex:im_insert            - insert sub-image into main image at position
doc/src/packages.tex:im_insert_noexpand   - insert sub-image into main image at position, no expansion
doc/src/packages.tex:im_lrjoin            - join two images left-right
doc/src/packages.tex:im_mask2vips         - convert DOUBLEMASK to VIPS image
doc/src/packages.tex:im_msb               - convert to uchar by discarding bits
doc/src/packages.tex:im_msb_band          - convert to single band uchar by discarding bits
doc/src/packages.tex:im_print             - print string to stdout
doc/src/packages.tex:im_recomb            - linear recombination with mask
doc/src/packages.tex:im_replicate         - replicate an image horizontally and vertically
doc/src/packages.tex:im_ri2c              - join two non-complex images to form complex
doc/src/packages.tex:im_rot180            - rotate image 180 degrees
doc/src/packages.tex:im_rot270            - rotate image 270 degrees clockwise
doc/src/packages.tex:im_rot90             - rotate image 90 degrees clockwise
doc/src/packages.tex:im_scale             - scale image linearly to fit range 0-255
doc/src/packages.tex:im_scaleps           - logarithmic scale of image to fit range 0-255
doc/src/packages.tex:im_rightshift_size   - decrease size by a power-of-two factor
doc/src/packages.tex:im_slice             - slice an image using two thresholds
doc/src/packages.tex:im_subsample         - subsample image by integer factors
doc/src/packages.tex:im_system            - run command on image
doc/src/packages.tex:im_tbjoin            - join two images top-bottom
doc/src/packages.tex:im_text              - generate text image
doc/src/packages.tex:im_thresh            - slice an image at a threshold
doc/src/packages.tex:im_vips2mask         - convert VIPS image to DOUBLEMASK
doc/src/packages.tex:im_wrap              - shift image origin, wrapping at sides
doc/src/packages.tex:im_zoom              - simple zoom of an image by integer factors
doc/src/packages.tex:for some colour-space conversions. There are two types of matrix: integer
doc/src/packages.tex:offset are the conventional ones used to represent non-integer values in
doc/src/packages.tex:convolution masks --- in other words:
doc/src/packages.tex:matricies. However, masks containing floating-point values (such as the
doc/src/packages.tex:C-programmers --- see the manual pages for \verb+im_read_dmask()+. For
doc/src/packages.tex:$ vips --list matrix
doc/src/packages.tex:im_matcat          - append matrix in2 to the end of matrix in1
doc/src/packages.tex:im_matinv          - invert matrix
doc/src/packages.tex:im_matmul          - multiply matrix in1 by matrix in2
doc/src/packages.tex:im_mattrn          - transpose matrix
doc/src/packages.tex:\verb+im_conv()+ which will convolve any non-complex type with an
doc/src/packages.tex:zero-crossing points in an image, \verb+im_mpercent()+ finds a threshold
doc/src/packages.tex:$ vips --list convolution
doc/src/packages.tex:im_addgnoise         - add gaussian noise with mean 0 and std. dev. sigma
doc/src/packages.tex:im_compass           - convolve with 8-way rotating integer mask
doc/src/packages.tex:im_contrast_surface  - find high-contrast points in an image
doc/src/packages.tex:im_contrast_surface_raw - find high-contrast points in an image
doc/src/packages.tex:im_conv              - convolve
doc/src/packages.tex:im_conv_raw          - convolve, no border
doc/src/packages.tex:im_convf             - convolve, with DOUBLEMASK
doc/src/packages.tex:im_convf_raw         - convolve, with DOUBLEMASK, no border
doc/src/packages.tex:im_convsep           - seperable convolution
doc/src/packages.tex:im_convsep_raw       - seperable convolution, no border
doc/src/packages.tex:im_convsepf          - seperable convolution, with DOUBLEMASK
doc/src/packages.tex:im_convsepf_raw      - seperable convolution, with DOUBLEMASK, no border
doc/src/packages.tex:im_convsub           - convolve uchar to uchar, sub-sampling by xskip, yskip
doc/src/packages.tex:im_dmask_xsize       - horizontal size of a doublemask
doc/src/packages.tex:im_dmask_ysize       - vertical size of a doublemask
doc/src/packages.tex:im_embed             - embed in within a set of borders
doc/src/packages.tex:im_fastcor           - fast correlate in2 within in1
doc/src/packages.tex:im_fastcor_raw       - fast correlate in2 within in1, no border
doc/src/packages.tex:im_gauss_dmask       - generate gaussian DOUBLEMASK
doc/src/packages.tex:im_gauss_imask       - generate gaussian INTMASK
doc/src/packages.tex:im_gauss_imask_sep   - generate separable gaussian INTMASK
doc/src/packages.tex:im_gaussnoise        - generate image of gaussian noise with specified statistics
doc/src/packages.tex:im_grad_x            - horizontal difference image
doc/src/packages.tex:im_grad_y            - vertical difference image
doc/src/packages.tex:im_gradcor           - non-normalised correlation of gradient of in2 within in1
doc/src/packages.tex:im_gradcor_raw       - non-normalised correlation of gradient of in2 within in1, no padding
doc/src/packages.tex:im_gradient          - convolve with 2-way rotating mask
doc/src/packages.tex:im_imask_xsize       - horizontal size of an intmask
doc/src/packages.tex:im_imask_ysize       - vertical size of an intmask
doc/src/packages.tex:im_rank_image        - point-wise pixel rank
doc/src/packages.tex:im_lindetect         - convolve with 4-way rotating mask
doc/src/packages.tex:im_log_dmask         - generate laplacian of gaussian DOUBLEMASK
doc/src/packages.tex:im_log_imask         - generate laplacian of gaussian INTMASK
doc/src/packages.tex:im_maxvalue          - point-wise maximum value
doc/src/packages.tex:im_mpercent          - find threshold above which there are percent values
doc/src/packages.tex:im_phasecor_fft      - non-normalised correlation of gradient of in2 within in1
doc/src/packages.tex:im_rank              - rank filter nth element of xsize/ysize window
doc/src/packages.tex:im_rank_raw          - rank filter nth element of xsize/ysize window, no border
doc/src/packages.tex:im_read_dmask        - read matrix of double from file
doc/src/packages.tex:im_resize_linear     - resize to X by Y pixels with linear interpolation
doc/src/packages.tex:im_rotate_dmask45    - rotate DOUBLEMASK clockwise by 45 degrees
doc/src/packages.tex:im_rotate_dmask90    - rotate DOUBLEMASK clockwise by 90 degrees
doc/src/packages.tex:im_rotate_imask45    - rotate INTMASK clockwise by 45 degrees
doc/src/packages.tex:im_rotate_imask90    - rotate INTMASK clockwise by 90 degrees
doc/src/packages.tex:im_sharpen           - sharpen high frequencies of L channel of LabQ
doc/src/packages.tex:im_shrink            - shrink image by xfac, yfac times
doc/src/packages.tex:im_spcor             - normalised correlation of in2 within in1
doc/src/packages.tex:im_spcor_raw         - normalised correlation of in2 within in1, no black padding
doc/src/packages.tex:im_stretch3          - stretch 3%, sub-pixel displace by xdisp/ydisp
doc/src/packages.tex:im_zerox             - find +ve or -ve zero crossings in image
doc/src/packages.tex:\subsection{In-place operations}
doc/src/packages.tex:A few of the in-place operations are available from the command-line. Most are
doc/src/packages.tex:$ vips --list inplace
doc/src/packages.tex:im_circle          - plot circle on image
doc/src/packages.tex:im_flood_blob_copy - flood while pixel == start pixel
doc/src/packages.tex:im_insertplace     - draw image sub inside image main at position (x,y)
doc/src/packages.tex:im_line            - draw line between points (x1,y1) and (x2,y2)
doc/src/packages.tex:im_lineset         - draw line between points (x1,y1) and (x2,y2)
doc/src/packages.tex:\caption{In-place operations}
doc/src/packages.tex:\verb+im_invfft()+, which calculate the fast-fourier transform and inverse
doc/src/packages.tex:The Fourier image has its origin at pel (0,0) ---
doc/src/packages.tex:$ vips --list freq_filt    
doc/src/packages.tex:im_create_fmask    - create frequency domain filter mask
doc/src/packages.tex:im_disp_ps         - make displayable power spectrum
doc/src/packages.tex:im_flt_image_freq  - frequency domain filter image
doc/src/packages.tex:im_fractsurf       - generate a fractal surface of given dimension
doc/src/packages.tex:im_freqflt         - frequency-domain filter of in with mask
doc/src/packages.tex:im_fwfft           - forward fast-fourier transform
doc/src/packages.tex:im_rotquad         - rotate image quadrants to move origin to centre
doc/src/packages.tex:im_invfft          - inverse fast-fourier transform
doc/src/packages.tex:im_invfftr         - real part of inverse fast-fourier transform
doc/src/packages.tex:VIPS represents histograms and look-up tables in the same way --- as images.
doc/src/packages.tex:\verb+im_histnD()+ to find the n-dimensional histogram of an n-band
doc/src/packages.tex:$ vips --list histograms_lut
doc/src/packages.tex:im_gammacorrect      - gamma-correct image
doc/src/packages.tex:im_heq               - histogram-equalise image
doc/src/packages.tex:im_hist              - find and graph histogram of image
doc/src/packages.tex:im_histcum           - turn histogram to cumulative histogram
doc/src/packages.tex:im_histeq            - form histogram equalistion LUT
doc/src/packages.tex:im_histgr            - find histogram of image
doc/src/packages.tex:im_histnD            - find 1D, 2D or 3D histogram of image
doc/src/packages.tex:im_histnorm          - form normalised histogram
doc/src/packages.tex:im_histplot          - plot graph of histogram
doc/src/packages.tex:im_histspec          - find histogram which will make pdf of in match ref
doc/src/packages.tex:im_hsp               - match stats of in to stats of ref
doc/src/packages.tex:im_identity          - generate identity histogram
doc/src/packages.tex:im_identity_ushort   - generate ushort identity histogram
doc/src/packages.tex:im_ismonotonic       - test LUT for monotonicity
doc/src/packages.tex:im_lhisteq           - local histogram equalisation
doc/src/packages.tex:im_lhisteq_raw       - local histogram equalisation, no border
doc/src/packages.tex:im_invertlut         - generate correction table from set of measures
doc/src/packages.tex:im_buildlut          - generate LUT table from set of x/y positions
doc/src/packages.tex:im_maplut            - map image through LUT
doc/src/packages.tex:im_project           - find horizontal and vertical projections of an image
doc/src/packages.tex:im_stdif             - statistical differencing
doc/src/packages.tex:im_stdif_raw         - statistical differencing, no border
doc/src/packages.tex:im_tone_analyse      - analyse in and create LUT for tone adjustment
doc/src/packages.tex:im_tone_build        - create LUT for tone adjustment of LabS images
doc/src/packages.tex:im_tone_build_range  - create LUT for tone adjustment
doc/src/packages.tex:im_tone_map          - map L channel of LabS or LabQ image through LUT
doc/src/packages.tex:The morphological functions are used on one-band \verb+IM_BANDFMT_UCHAR+ binary
doc/src/packages.tex:images (images containing only zero and not-zero). They search images
doc/src/packages.tex:for cleaning up images --- for example, you might threshold an image, and
doc/src/packages.tex:Image Processing' by A.  Jain, pp 384-388, Prentice-Hall, 1989 for more ideas.
doc/src/packages.tex:mask must have odd length sides --- the origin of the mask is taken to be
doc/src/packages.tex:4-way connected with white pixels. Essentially, \verb+im_dilate()+
doc/src/packages.tex:$ vips --list morphology
doc/src/packages.tex:im_cntlines        - count horizontal or vertical lines
doc/src/packages.tex:im_dilate          - dilate image with mask, adding a black border
doc/src/packages.tex:im_dilate_raw      - dilate image with mask
doc/src/packages.tex:im_erode           - erode image with mask, adding a black border
doc/src/packages.tex:im_erode_raw       - erode image with mask
doc/src/packages.tex:im_profile         - find first horizontal/vertical edge
doc/src/packages.tex:large image. They can cope with unstable contrast, and arbitary sub-image
doc/src/packages.tex:\verb+im_correl()+  searches a large image for a small sub-image, returning
doc/src/packages.tex:the position of the best sub-image match.  \verb+im_affine()+ performs
doc/src/packages.tex:left-right or up-down.
doc/src/packages.tex:two low-level merge operations to join two images given just an approximate
doc/src/packages.tex:The functions \verb+im_lrmosaic1()+ and \verb+im_tbmosaic1()+ are first-order
doc/src/packages.tex:analogues of the basic mosaic functions: they take two tie-points and use
doc/src/packages.tex:them to rotate and scale the right-hand or bottom image before starting to join.
doc/src/packages.tex:Finally, \verb+im_global_balance()+ can be used to re-balance a mosaic
doc/src/packages.tex:better job than the low-level balancer built into \verb+im_lrmosaic()+
doc/src/packages.tex:$ vips --list mosaicing
doc/src/packages.tex:im_align_bands       - align the bands of an image
doc/src/packages.tex:im_correl            - search area around sec for match for area around ref
doc/src/packages.tex:im__find_lroverlap   - search for left-right overlap of ref and sec
doc/src/packages.tex:im__find_tboverlap   - search for top-bottom overlap of ref and sec
doc/src/packages.tex:im_global_balance    - automatically rebuild mosaic with balancing
doc/src/packages.tex:im_global_balancef   - automatically rebuild mosaic with balancing, float output
doc/src/packages.tex:im_lrmerge           - left-right merge of in1 and in2
doc/src/packages.tex:im_lrmerge1          - first-order left-right merge of ref and sec
doc/src/packages.tex:im_lrmosaic          - left-right mosaic of ref and sec
doc/src/packages.tex:im_lrmosaic1         - first-order left-right mosaic of ref and sec
doc/src/packages.tex:im_match_linear      - resample ref so that tie-points match
doc/src/packages.tex:im_match_linear_search - search sec, then resample so that tie-points match
doc/src/packages.tex:im_maxpos_subpel     - subpixel position of maximum of (phase correlation) image
doc/src/packages.tex:im_remosaic          - automatically rebuild mosaic with new files
doc/src/packages.tex:im_tbmerge           - top-bottom merge of in1 and in2
doc/src/packages.tex:im_tbmerge1          - first-order top-bottom merge of in1 and in2
doc/src/packages.tex:im_tbmosaic          - top-bottom mosaic of in1 and in2
doc/src/packages.tex:im_tbmosaic1         - first-order top-bottom mosaic of ref and sec
doc/src/packages.tex:$ vips --list cimg
doc/src/packages.tex:im_greyc           - noise-removing filter
doc/src/packages.tex:im_greyc_mask      - noise-removing filter, with a mask
doc/src/packages.tex:$ vips --list other
doc/src/packages.tex:im_benchmark       - do something complicated for testing
doc/src/packages.tex:im_benchmark2      - do something complicated for testing
doc/src/packages.tex:im_benchmarkn      - do something complicated for testing
doc/src/packages.tex:im_eye             - generate IM_BANDFMT_UCHAR [0,255] frequency/amplitude image
doc/src/packages.tex:im_grey            - generate IM_BANDFMT_UCHAR [0,255] grey scale image
doc/src/packages.tex:im_feye            - generate IM_BANDFMT_FLOAT [-1,1] frequency/amplitude image
doc/src/packages.tex:im_fgrey           - generate IM_BANDFMT_FLOAT [0,1] grey scale image
doc/src/packages.tex:im_fzone           - generate IM_BANDFMT_FLOAT [-1,1] zone plate image
doc/src/packages.tex:im_make_xy         - generate image with pixel value equal to coordinate
doc/src/packages.tex:im_zone            - generate IM_BANDFMT_UCHAR [0,255] zone plate image
doc/src/packages.tex:$ vips --list iofuncs
doc/src/packages.tex:im_binfile         - open a headerless binary file
doc/src/packages.tex:im_cache           - cache results of an operation
doc/src/packages.tex:im_guess_prefix    - guess install area
doc/src/packages.tex:im_guess_libdir    - guess library area
doc/src/packages.tex:im_header_get_type - return field type
doc/src/packages.tex:im_header_int      - extract int fields from header
doc/src/packages.tex:im_header_double   - extract double fields from header
doc/src/packages.tex:im_header_string   - extract string fields from header
doc/src/packages.tex:im_version         - VIPS version number
doc/src/packages.tex:im_version_string  - VIPS version string
doc/src/packages.tex:$ vips --list format
doc/src/packages.tex:im_csv2vips          - read a file in csv format
doc/src/packages.tex:im_jpeg2vips         - convert from jpeg
doc/src/packages.tex:im_magick2vips       - load file with libMagick
doc/src/packages.tex:im_png2vips          - convert PNG file to VIPS image
doc/src/packages.tex:im_exr2vips          - convert an OpenEXR file to VIPS
doc/src/packages.tex:im_ppm2vips          - read a file in pbm/pgm/ppm format
doc/src/packages.tex:im_analyze2vips      - read a file in analyze format
doc/src/packages.tex:im_tiff2vips         - convert TIFF file to VIPS image
doc/src/packages.tex:im_vips2csv          - write an image in csv format
doc/src/packages.tex:im_vips2jpeg         - convert to jpeg
doc/src/packages.tex:im_vips2mimejpeg     - convert to jpeg as mime type on stdout
doc/src/packages.tex:im_vips2png          - convert VIPS image to PNG file
doc/src/packages.tex:im_vips2ppm          - write a file in pbm/pgm/ppm format
doc/src/packages.tex:im_vips2tiff         - convert VIPS image to TIFF file
doc/src/packages.tex:$ vips --list resample
doc/src/packages.tex:im_affine            - affine transform
doc/src/packages.tex:im_affinei           - affine transform
doc/src/packages.tex:im_affinei_all       - affine transform of whole image
doc/src/packages.tex:im_similarity_area   - output area xywh of similarity transformation
doc/src/packages.tex:im_similarity        - similarity transformation
doc/src/interpolate.tex:  /* Nearest-neighbor.
doc/src/interpolate.tex:    IM_IMAGE_SIZEOF_PEL( in->im ) );
doc/src/interpolate.tex:  object_class->nickname = "myinterpolator";
doc/src/interpolate.tex:  object_class->description = _( "My interpolator" );
doc/src/interpolate.tex:  interpolate_class->interpolate = myinterpolator_interpolate;
doc/src/fileformat.tex:All VIPS image files start with a 64-byte header giving basic information
doc/src/fileformat.tex:byte order used by the machine that wrote the file) laid out left-to-right and
doc/src/fileformat.tex:top-to-bottom. After the image data comes a block of optional XML which holds
doc/src/fileformat.tex:You can use the command-line program \verb+header+ to extract the XML from an
doc/src/fileformat.tex:0--3   & VIPS magic number (in hex, 08 f2 f6 b6) 	 & \\
doc/src/fileformat.tex:4--7   & Number of pels per horizontal line (integer) 	 & \ct{Xsize} \\
doc/src/fileformat.tex:8--11  & Number of horizontal lines (integer) 		 & \ct{Ysize} \\
doc/src/fileformat.tex:12--15 & Number of bands (integer) 			 & \ct{Bands} \\
doc/src/fileformat.tex:16--19 & Unused (legacy) 				 & \ct{Bbits} \\
doc/src/fileformat.tex:20--23 & Band format (eg. \ct{IM\_BANDFMT\_USHORT})	 & \ct{BandFmt} \\
doc/src/fileformat.tex:24--27 & Coding type (eg. \ct{IM\_CODING\_NONE})	 & \ct{Coding} \\
doc/src/fileformat.tex:28--31 & Type (eg. \ct{IM\_TYPE\_LAB})			 & \ct{Type} \\
doc/src/fileformat.tex:32--35 & Horizontal resolution (float, pixels mm$^{-1}$) & \ct{Xres} \\
doc/src/fileformat.tex:36--39 & Vertical resolution (float, pixels mm$^{-1}$)	 & \ct{Yres} \\
doc/src/fileformat.tex:40--43 & Unused (legacy)				 & \ct{Length} \\
doc/src/fileformat.tex:44--45 & Unused (legacy)				 & \ct{Compression} \\
doc/src/fileformat.tex:46--47 & Unused (legacy)				 & \ct{Level} \\
doc/src/fileformat.tex:48--51 & Horizontal offset of origin			 & \ct{Xoffset} \\
doc/src/fileformat.tex:52--55 & Vertical offset of origin			 & \ct{Yoffset} \\
doc/src/fileformat.tex:56--63 & For future expansion (all zeros for now)	 & \\
doc/src/fileformat.tex:\ct{IM\_BANDFMT\_NOTSET}    & \ct{FMTNOTSET}    & -1 & \\
doc/src/fileformat.tex:\ct{IM\_BANDFMT\_UCHAR}     & \ct{FMTUCHAR}     & 0  & Unsigned 8-bit int \\
doc/src/fileformat.tex:\ct{IM\_BANDFMT\_CHAR} 	    & \ct{FMTCHAR}      & 1  & Signed 8-bit int \\
doc/src/fileformat.tex:\ct{IM\_BANDFMT\_USHORT}    & \ct{FMTUSHORT}    & 2  & Unsigned 16-bit int \\
doc/src/fileformat.tex:\ct{IM\_BANDFMT\_SHORT}     & \ct{FMTSHORT}     & 3  & Signed 16-bit int \\
doc/src/fileformat.tex:\ct{IM\_BANDFMT\_UINT} 	    & \ct{FMTUINT}      & 4  & Unsigned 32-bit int \\
doc/src/fileformat.tex:\ct{IM\_BANDFMT\_INT} 	    & \ct{FMTINT}       & 5  & Signed 32-bit int \\
doc/src/fileformat.tex:\ct{IM\_BANDFMT\_FLOAT}     & \ct{FMTFLOAT}     & 6  & 32-bit IEEE float \\
doc/src/fileformat.tex:\ct{IM\_BANDFMT\_DOUBLE}    & \ct{FMTDOUBLE}    & 8  & 64-bit IEEE double \\
doc/src/fileformat.tex:\ct{IM\_TYPE\_LABQ} 	 & \ct{LABQ}      & 16 & 32-bit \cielab{} \\
doc/src/fileformat.tex:\ct{IM\_TYPE\_LABS} 	 & \ct{LABS}      & 21 & 48-bit \cielab{} \\
doc/src/fileformat.tex:\ct{IM\_TYPE\_RGB16} 	 & \ct{RGB16}     & 25 & 16-bit RGB \\
doc/src/fileformat.tex:\ct{IM\_TYPE\_GREY16} 	 & \ct{GREY16}    & 26 & 16-bit monochrome \\
doc/src/fileformat.tex:header is then followed by a large array of pixels, laid out left-to-right,
doc/src/fileformat.tex:top-to-bottom.  Each pixel contains the specified number of bands. Each band
doc/src/fileformat.tex:has the specified band format, which may be an 8-, 16- or 32-bit integer
doc/src/fileformat.tex:All values are stored in the host-machine's native number representation (that
doc/src/fileformat.tex:is, either most-significant first, as in SPARC and 680x0 machines, or
doc/src/fileformat.tex:least-significant first, for Intel and DEC machines). If necessary, the VIPS 
doc/src/fileformat.tex:library will automatically byte-swap for you during read.
doc/src/fileformat.tex:value in the first 3 bytes, and the left-over bits packed into the final
doc/src/vipsmanualse3.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse3.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse3.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse3.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse3.html:<!-- 3,html --> 
doc/src/vipsmanualse3.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse3.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse3.html:href="vipsmanualse2.html#tailvipsmanualse2.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse3.html: id="x8-110001.3"></a>The <span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage </span>class</h3>
doc/src/vipsmanualse3.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> class is a layer over the VIPS <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span>
doc/src/vipsmanualse3.html:<!--l. 8--><p class="noindent" >
doc/src/vipsmanualse3.html: id="x8-120001.3.1"></a>Constructors</h4>
doc/src/vipsmanualse3.html:<!--l. 10--><p class="noindent" >There are two principal constructors for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span>:
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-5">
doc/src/vipsmanualse3.html:<!--l. 16--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 18--><p class="indent" >  The first form creates a new <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span>, linking it to the
doc/src/vipsmanualse3.html:named file. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">mode</span></span></span> sets the mode for the file: it can take the
doc/src/vipsmanualse3.html:class="pcrb7t-">"r"</span> </dt><dd 
doc/src/vipsmanualse3.html:class="description">The named image file is opened read-only. This is
doc/src/vipsmanualse3.html:class="pcrb7t-">"w"</span> </dt><dd 
doc/src/vipsmanualse3.html:class="description">A  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> is  created  which,  when  written  to,
doc/src/vipsmanualse3.html:class="pcrb7t-">"t"</span> </dt><dd 
doc/src/vipsmanualse3.html:class="description">As  the  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">"w"</span></span></span> mode,  but  pixels  written  to  the
doc/src/vipsmanualse3.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> will  be  saved  in  a  temporary  memory
doc/src/vipsmanualse3.html:class="pcrb7t-">"p"</span> </dt><dd 
doc/src/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse3.html:href="#x8-160001.3.5">1.3.5<!--tex4ht:ref: sec:compute --></a>.
doc/src/vipsmanualse3.html:class="pcrb7t-">"rw"</span> </dt><dd 
doc/src/vipsmanualse3.html:class="description">As  the  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">"r"</span></span></span> mode,  but  the  image  is  mapped
doc/src/vipsmanualse3.html:        into your address space read-write. This mode is
doc/src/vipsmanualse3.html:        useful for paintbox-style applications which need
doc/src/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse3.html:href="vipsmanualse18.html#x26-1140004.2.8">4.2.8<!--tex4ht:ref: sec:inplace --></a>.
doc/src/vipsmanualse3.html:<!--l. 46--><p class="indent" >    The second form of constructor is shorthand for:
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-6">
doc/src/vipsmanualse3.html:<!--l. 50--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 52--><p class="noindent" >It is used for representing intermediate results of
doc/src/vipsmanualse3.html:<!--l. 55--><p class="indent" >  Two further constructors are handy for wrapping
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> around existing images.
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-7">
doc/src/vipsmanualse3.html:<!--l. 63--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 65--><p class="noindent" >The first constructor makes a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> from an area
doc/src/vipsmanualse3.html:system), and the second makes a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> from an
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span>.
doc/src/vipsmanualse3.html:<!--l. 70--><p class="indent" >    In both these two cases, the VIPS C++ API does not
doc/src/vipsmanualse3.html:<!--l. 73--><p class="indent" >    The Python interface adds the usual <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">frombuffer</span></span></span> and
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fromstring</span></span></span> methods.
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-8">
doc/src/vipsmanualse3.html:&#x00A0;<br />&#x00A0;&#x00A0;width,&#x00A0;height,&#x00A0;bands,&#x00A0;format)&#x00A0;-&#x003E;
doc/src/vipsmanualse3.html:<!--l. 80--><p class="nopar" >
doc/src/vipsmanualse3.html:                                              <div class="verbatim" id="verbatim-9">
doc/src/vipsmanualse3.html: &#x00A0;<br />&#x00A0;&#x00A0;width,&#x00A0;height,&#x00A0;bands,&#x00A0;format)&#x00A0;-&#x003E;
doc/src/vipsmanualse3.html:<!--l. 86--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 88--><p class="noindent" >Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fromstring</span></span></span> to avoid worries about object lifetime,
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">frombuffer</span></span></span> for speed, but you have to manage object
doc/src/vipsmanualse3.html:<!--l. 93--><p class="indent" >    They are useful for moving images into VIPS from other
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">vips_from_PIL_mode</span></span></span>, which turns a PIL mode into a
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-10">
doc/src/vipsmanualse3.html:VImage.vips_from_PIL_mode&#x00A0;(mode)&#x00A0;-&#x003E;
doc/src/vipsmanualse3.html:<!--l. 100--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 102--><p class="indent" >  See also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">tobuffer</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">tostring</span></span></span> below.
doc/src/vipsmanualse3.html:<!--l. 104--><p class="noindent" >
doc/src/vipsmanualse3.html: id="x8-130001.3.2"></a>File conversion</h4>
doc/src/vipsmanualse3.html:<!--l. 106--><p class="noindent" >VIPS can read and write a number of different file formats.
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-11">
doc/src/vipsmanualse3.html:<!--l. 111--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 113--><p class="noindent" >This will decompress the file <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fred.jpg</span></span></span> to a memory
doc/src/vipsmanualse3.html:reference to it called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">jim</span></span></span>.
doc/src/vipsmanualse3.html:<!--l. 117--><p class="indent" >    Options are passed to the file format converters embedded
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-12">
doc/src/vipsmanualse3.html:<!--l. 122--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 124--><p class="noindent" >Writing to the descriptor <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">out</span></span></span> will cause a TIFF image to be
doc/src/vipsmanualse3.html:<!--l. 128--><p class="indent" >  See the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_open(3)</span></span></span> for details of all
doc/src/vipsmanualse3.html:for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VipsFormat(3)</span></span></span> for a lower-level API which lets you
doc/src/vipsmanualse3.html:<!--l. 133--><p class="noindent" >
doc/src/vipsmanualse3.html: id="x8-140001.3.3"></a>Projection functions</h4>
doc/src/vipsmanualse3.html:<!--l. 135--><p class="noindent" >A set of member functions of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> provide access to the
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-13">
doc/src/vipsmanualse3.html:<!--l. 152--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 154--><p class="noindent" >Where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">TBandFmt</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">TCoding</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">TType</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">TCompression</span></span></span>
doc/src/vipsmanualse3.html:are <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">enum</span></span></span>s for the types in the VIPS file header. See
doc/src/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse3.html:href="vipsmanualse2.html#x7-80001.2.1">1.2.1<!--tex4ht:ref: sec:header --></a> for an explanation of all of these fields.
doc/src/vipsmanualse3.html:<!--l. 159--><p class="indent" >    Two functions give access to the filename and history
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-14">
doc/src/vipsmanualse3.html:<!--l. 165--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 167--><p class="indent" >  You can get and set extra metadata fields with
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">meta_get()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">meta_set()</span></span></span>. They read and write
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">GValue</span></span></span> objects, see <span 
doc/src/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse3.html:href="vipsmanualse8.html#x14-430002.2.6">2.2.6<!--tex4ht:ref: sec:meta --></a>.
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-15">
doc/src/vipsmanualse3.html:<!--l. 175--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 177--><p class="indent" >  A set of convenience functions build on these two to
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-16">
doc/src/vipsmanualse3.html:<!--l. 194--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 196--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">image()</span></span></span> member function provides access to the
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span> descriptor underlying the C++ API. See the <span 
doc/src/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse3.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a> for
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-17">
doc/src/vipsmanualse3.html:<!--l. 201--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 203--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">data()</span></span></span> member function returns a pointer to an
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-18">
doc/src/vipsmanualse3.html:<!--l. 208--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 210--><p class="noindent" >This can be very slow and use huge amounts of RAM.
doc/src/vipsmanualse3.html:<!--l. 213--><p class="indent" >  The Python interface adds <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">tobuffer</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">tostring</span></span></span>.
doc/src/vipsmanualse3.html:These operations call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">data()</span></span></span> to generate the image pixels
doc/src/vipsmanualse3.html:<!--l. 218--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">tostring</span></span></span> to avoid worries about object lifetime,
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">tobuffer</span></span></span> for speed, but you have to manage object
doc/src/vipsmanualse3.html:<!--l. 222--><p class="indent" >  They are useful for moving images from VIPS into other
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">PIL_mode_from_vips</span></span></span>, which makes a PIL mode from
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-19">
doc/src/vipsmanualse3.html:  VImage.PIL_mode_from_vips&#x00A0;(vips-image)&#x00A0;-&#x003E;
doc/src/vipsmanualse3.html:<!--l. 229--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 231--><p class="indent" >  See also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">frombuffer</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fromstring</span></span></span> above.
doc/src/vipsmanualse3.html:<!--l. 233--><p class="noindent" >
doc/src/vipsmanualse3.html: id="x8-150001.3.4"></a>Assignment</h4>
doc/src/vipsmanualse3.html:<!--l. 235--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> defines copy and assignment, with reference-counted,
doc/src/vipsmanualse3.html:pointer-style semantics. For example, if you write:
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-20">
doc/src/vipsmanualse3.html:<!--l. 243--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 245--><p class="indent" >  This will automatically close the file <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>, and make
doc/src/vipsmanualse3.html:the variable <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fred</span></span></span> point to the image <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">jim.v</span></span></span> instead. Both
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">jim</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fred</span></span></span> now point to the same underlying image
doc/src/vipsmanualse3.html:<!--l. 249--><p class="indent" >  Internally, a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> object is just a pointer to a
doc/src/vipsmanualse3.html:reference-counting block, which in turn holds a pointer to
doc/src/vipsmanualse3.html:the underlying VIPS <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span> type. You can therefore
doc/src/vipsmanualse3.html:efficiently pass <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> objects to functions by value, and
doc/src/vipsmanualse3.html:return <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> objects as function results.
doc/src/vipsmanualse3.html:<!--l. 254--><p class="noindent" >
doc/src/vipsmanualse3.html: id="x8-160001.3.5"></a>Computing with <span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span>s</h4>
doc/src/vipsmanualse3.html:<!--l. 257--><p class="noindent" >All VIPS image processing operations are member
doc/src/vipsmanualse3.html:functions of the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> class. For example:
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-21">
doc/src/vipsmanualse3.html:<!--l. 265--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 267--><p class="indent" >  Will apply <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_costra()</span></span></span> to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>, making an
doc/src/vipsmanualse3.html:pixel in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>; then add that image to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">jim.v</span></span></span>. Finally,
doc/src/vipsmanualse3.html:the result will be held in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">result</span></span></span>.
doc/src/vipsmanualse3.html:<!--l. 271--><p class="indent" >    VIPS is a demand-driven image processing system:
doc/src/vipsmanualse3.html:functions on images &#8212; <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">result.BandFmt()</span></span></span> for
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">min()</span></span></span>, find minimum value), VIPS evaluates all of the
doc/src/vipsmanualse3.html:<!--l. 280--><p class="indent" >    <span 
doc/src/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse3.html:href="vipsmanualse18.html#x26-1060004.2">4.2<!--tex4ht:ref: sec:packages --></a> lists all of the VIPS packages. These general rules
doc/src/vipsmanualse3.html:        function  names  by  dropping  the  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_</span></span></span> prefix,  and
doc/src/vipsmanualse3.html:        if present, the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">tra</span></span></span> postfix, the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">const</span></span></span> postfix and
doc/src/vipsmanualse3.html:        the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">_vec</span></span></span> postfix. For example, the VIPS operation
doc/src/vipsmanualse3.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_extract()</span></span></span> becomes   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">extract()</span></span></span>,   and
doc/src/vipsmanualse3.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_costra()</span></span></span> becomes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">cos()</span></span></span>.
doc/src/vipsmanualse3.html:        <li class="itemize">The   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> object   to   which   you   apply   the
doc/src/vipsmanualse3.html:        no image input, the member is declared <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">static</span></span></span>.
doc/src/vipsmanualse3.html:        <!--l. 297--><p class="noindent" >For   example,   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_project(3)</span></span></span> returns   two
doc/src/vipsmanualse3.html:    <div class="verbatim" id="verbatim-22">
doc/src/vipsmanualse3.html:    <!--l. 303--><p class="nopar" >
doc/src/vipsmanualse3.html:    <!--l. 305--><p class="noindent" >In other words, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">.project()</span></span></span> writes the second result
doc/src/vipsmanualse3.html:    to the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> you pass as an argument.
doc/src/vipsmanualse3.html:    <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">INTMASK</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">DOUBLEMASK</span></span></span> types become <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VMask</span></span></span>
doc/src/vipsmanualse3.html:    objects, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_col_display</span></span></span> types become <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VDisplay</span></span></span>
doc/src/vipsmanualse3.html:    C++ API member. For example, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_andimage</span></span></span>,
doc/src/vipsmanualse3.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_andimage_vec</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">im_andimageconst</span></span></span> all
doc/src/vipsmanualse3.html:    map to the member <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">andimage</span></span></span>. The API relies on
doc/src/vipsmanualse3.html:<!--l. 321--><p class="indent" >  This part of the C++ API is generated automatically
doc/src/vipsmanualse3.html:up-to-date.
doc/src/vipsmanualse3.html:<!--l. 324--><p class="indent" >  There are a set of arithmetic operators defined for your
doc/src/vipsmanualse3.html:expression and include <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> in there.
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-23">
doc/src/vipsmanualse3.html:<!--l. 332--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 334--><p class="noindent" >
doc/src/vipsmanualse3.html: id="x8-170001.3.6"></a>Writing results</h4>
doc/src/vipsmanualse3.html:<!--l. 336--><p class="noindent" >Once you have computed some result, you can write it to a
doc/src/vipsmanualse3.html:file with the member <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">write()</span></span></span>. It takes the following
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-24">
doc/src/vipsmanualse3.html:<!--l. 343--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 345--><p class="indent" >  The first form simply writes the image to the named file.
doc/src/vipsmanualse3.html:The second form writes the image to the specified <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span>
doc/src/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-25">
doc/src/vipsmanualse3.html:<!--l. 353--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 355--><p class="noindent" >This creates a temporary memory buffer called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">jim</span></span></span>, and
doc/src/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>.
doc/src/vipsmanualse3.html:<!--l. 359--><p class="indent" >    The final form of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">write()</span></span></span> writes the image to a
doc/src/vipsmanualse3.html:<!--l. 362--><p class="noindent" >
doc/src/vipsmanualse3.html: id="x8-180001.3.7"></a>Type conversions</h4>
doc/src/vipsmanualse3.html:<!--l. 364--><p class="noindent" >Two type conversions are defined: you can cast <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> to
doc/src/vipsmanualse3.html:a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VDMask</span></span></span> and to a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse3.html:class="pcrr7t-">VIMask</span></span></span>.
doc/src/vipsmanualse3.html:  <div class="verbatim" id="verbatim-26">
doc/src/vipsmanualse3.html:<!--l. 370--><p class="nopar" >
doc/src/vipsmanualse3.html:<!--l. 372--><p class="indent" >  These operations are slow and need a lot of memory!
doc/src/vipsmanualse3.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse3.html:href="vipsmanualse2.html#tailvipsmanualse2.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse3.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual.lg:htfcss: pcrb7t  font-family: monospace; font-weight: bold;
doc/src/vipsmanual.lg:htfcss: pcrr7t font-family: monospace;
doc/src/vipsmanual.lg:htfcss: pcrr7tn font-family: monospace;
doc/src/vipsmanual.lg:htfcss: ptmb7t  font-weight: bold;
doc/src/vipsmanual.lg:htfcss: ptmri7t font-style: italic;
doc/src/vipsmanual.lg:htfcss: ptmr7t font-family: monospace;
doc/src/vipsmanual.lg:htfcss: ptmr7t font-family: monospace;
doc/src/vipsmanual.lg:htfcss: ptmr7t font-family: monospace;
doc/src/vipsmanual.lg:htfcss: cmmi font-style: italic;
doc/src/vipsmanual.lg:htfcss: cmmib font-style: italic; font-weight: bold;
doc/src/vipsmanual.lg:Css: p.noindent { text-indent: 0em }
doc/src/vipsmanual.lg:Css: td p.noindent { text-indent: 0em; margin-top:0em; }
doc/src/vipsmanual.lg:Css: p.nopar { text-indent: 0em; }
doc/src/vipsmanual.lg:Css: p.indent{ text-indent: 1.5em }
doc/src/vipsmanual.lg:Css: a img { border-top: 0; border-left: 0; border-right: 0; }
doc/src/vipsmanual.lg:Font_Css("4"): .small-caps{font-variant: small-caps; }
doc/src/vipsmanual.lg:Font_Css("10"): .htf-cmbx {font-weight: bold; font-style:normal;}
doc/src/vipsmanual.lg:Font_Css("12"): .htf-calligraphy {font-family:cursive}
doc/src/vipsmanual.lg:Font_Css("14"): .htf-italic {font-style: italic;}
doc/src/vipsmanual.lg:Font_Css("16"): .htf-bold {font-weight: bold;}
doc/src/vipsmanual.lg:Font_Css("12"): .htf-calligraphy-bold {font-family:cursive ; font-weight: bold; }
doc/src/vipsmanual.lg:Css: center { margin-top:1em; margin-bottom:1em; }
doc/src/vipsmanual.lg:Css: td center { margin-top:0em; margin-bottom:0em; }
doc/src/vipsmanual.lg:Css: img.math{vertical-align:middle;}
doc/src/vipsmanual.lg:Css: li p.indent { text-indent: 0em }
doc/src/vipsmanual.lg:Css: li p:first-child{ margin-top:0em; }
doc/src/vipsmanual.lg:Css: li p:last-child, li div:last-child { margin-bottom:0.5em; }
doc/src/vipsmanual.lg:Css: li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
doc/src/vipsmanual.lg:Css: .enumerate1 {list-style-type:decimal;}
doc/src/vipsmanual.lg:Css: .enumerate2 {list-style-type:lower-alpha;}
doc/src/vipsmanual.lg:Css: .enumerate3 {list-style-type:lower-roman;}
doc/src/vipsmanual.lg:Css: .enumerate4 {list-style-type:upper-alpha;}
doc/src/vipsmanual.lg:Css: div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
doc/src/vipsmanual.lg:Css: .obeylines-h,.obeylines-v {white-space: nowrap; }
doc/src/vipsmanual.lg:Css: div.obeylines-v p { margin-top:0; margin-bottom:0; }
doc/src/vipsmanual.lg:Css: .overline{ text-decoration:overline; }
doc/src/vipsmanual.lg:Css: .overline img{ border-top: 1px solid black; }
doc/src/vipsmanual.lg:Css: td.displaylines {text-align:center; white-space:nowrap;}
doc/src/vipsmanual.lg:Css: .centerline {text-align:center;}
doc/src/vipsmanual.lg:Css: .rightline {text-align:right;}
doc/src/vipsmanual.lg:Css: div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
doc/src/vipsmanual.lg:Css: .fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/src/vipsmanual.lg:Css: div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/src/vipsmanual.lg:Css: div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
doc/src/vipsmanual.lg:Css: div.center div {text-align: left;}
doc/src/vipsmanual.lg:Css: div.flushright, div.flushright div.flushright {text-align: right;}
doc/src/vipsmanual.lg:Css: div.flushright div {text-align: left;}
doc/src/vipsmanual.lg:Css: div.flushleft {text-align: left;}
doc/src/vipsmanual.lg:Css: .underline{ text-decoration:underline; }
doc/src/vipsmanual.lg:Css: .underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
doc/src/vipsmanual.lg:Css: .framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/src/vipsmanual.lg:Css: .framebox-c {text-align:center;}
doc/src/vipsmanual.lg:Css: .framebox-l {text-align:left;}
doc/src/vipsmanual.lg:Css: .framebox-r {text-align:right;}
doc/src/vipsmanual.lg:Css: span.thank-mark{ vertical-align: super }
doc/src/vipsmanual.lg:Css: span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
doc/src/vipsmanual.lg:Css: div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
doc/src/vipsmanual.lg:Css: table.tabular td p{margin-top:0em;}
doc/src/vipsmanual.lg:Css: table.tabular {margin-left: auto; margin-right: auto;}
doc/src/vipsmanual.lg:Css: td p:first-child{ margin-top:0em; }
doc/src/vipsmanual.lg:Css: td p:last-child{ margin-bottom:0em; }
doc/src/vipsmanual.lg:Css: div.td00{ margin-left:0pt; margin-right:0pt; }
doc/src/vipsmanual.lg:Css: div.td01{ margin-left:0pt; margin-right:5pt; }
doc/src/vipsmanual.lg:Css: div.td10{ margin-left:5pt; margin-right:0pt; }
doc/src/vipsmanual.lg:Css: div.td11{ margin-left:5pt; margin-right:5pt; }
doc/src/vipsmanual.lg:Css: table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
doc/src/vipsmanual.lg:Css: td.td00{ padding-left:0pt; padding-right:0pt; }
doc/src/vipsmanual.lg:Css: td.td01{ padding-left:0pt; padding-right:5pt; }
doc/src/vipsmanual.lg:Css: td.td10{ padding-left:5pt; padding-right:0pt; }
doc/src/vipsmanual.lg:Css: td.td11{ padding-left:5pt; padding-right:5pt; }
doc/src/vipsmanual.lg:Css: table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
doc/src/vipsmanual.lg:Css: .tabbing-right {text-align:right;}
doc/src/vipsmanual.lg:Css: span.TEX {letter-spacing: -0.125em; }
doc/src/vipsmanual.lg:Css: span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
doc/src/vipsmanual.lg:Css: a span.TEX span.E {text-decoration: none; }
doc/src/vipsmanual.lg:Css: span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
doc/src/vipsmanual.lg:Css: span.LATEX span.TEX{ position:relative; left: -0.4em; }
doc/src/vipsmanual.lg:Css: div.float, div.figure {margin-left: auto; margin-right: auto;}
doc/src/vipsmanual.lg:Css: div.float img {text-align:center;}
doc/src/vipsmanual.lg:Css: div.figure img {text-align:center;}
doc/src/vipsmanual.lg:Css: .marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
doc/src/vipsmanual.lg:Css: .marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
doc/src/vipsmanual.lg:Css: .equation td{text-align:center; }
doc/src/vipsmanual.lg:Css: td.equation { margin-top:1em; margin-bottom:1em; } 
doc/src/vipsmanual.lg:Css: td.equation-label { width:5%; text-align:center; }
doc/src/vipsmanual.lg:Css: td.eqnarray4 { width:5%; white-space: normal; }
doc/src/vipsmanual.lg:Css: table.eqnarray-star, table.eqnarray {width:100%;}
doc/src/vipsmanual.lg:Css: div.eqnarray{text-align:center;}
doc/src/vipsmanual.lg:Css: div.array {text-align:center;}
doc/src/vipsmanual.lg:Css: div.pmatrix {text-align:center;}
doc/src/vipsmanual.lg:Css: span.pmatrix img{vertical-align:middle;}
doc/src/vipsmanual.lg:Css: div.pmatrix {text-align:center;}
doc/src/vipsmanual.lg:Css: span.bar-css {text-decoration:overline;}
doc/src/vipsmanual.lg:Css: img.cdots{vertical-align:middle;}
doc/src/vipsmanual.lg:Css: .partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
doc/src/vipsmanual.lg:Css: .chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
doc/src/vipsmanual.lg:Css: .index-item, .index-subitem, .index-subsubitem {display:block}
doc/src/vipsmanual.lg:Css: div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
doc/src/vipsmanual.lg:Css: div.caption span.id{font-weight: bold; white-space: nowrap; }
doc/src/vipsmanual.lg:Css: h1.partHead{text-align: center}
doc/src/vipsmanual.lg:Css: p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
doc/src/vipsmanual.lg:Css: p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
doc/src/vipsmanual.lg:Css: .paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
doc/src/vipsmanual.lg:Css: .subparagraphHead, .likesubparagraphHead { font-weight: bold;}
doc/src/vipsmanual.lg:Css: .quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
doc/src/vipsmanual.lg:Css: .verse{white-space:nowrap; margin-left:2em}
doc/src/vipsmanual.lg:Css: div.maketitle {text-align:center;}
doc/src/vipsmanual.lg:Css: h2.titleHead{text-align:center;}
doc/src/vipsmanual.lg:Css: div.maketitle{ margin-bottom: 2em; }
doc/src/vipsmanual.lg:Css: div.author, div.date {text-align:center;}
doc/src/vipsmanual.lg:Css: div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
doc/src/vipsmanual.lg:Css: div.author{white-space: nowrap;}
doc/src/vipsmanual.lg:Css: .quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
doc/src/vipsmanual.lg:Css: h1.partHead{text-align: center}
doc/src/vipsmanual.lg:Css:  .chapterToc, .likechapterToc {margin-left:0em;}
doc/src/vipsmanual.lg:Css:  .chapterToc ~ .likesectionToc, .chapterToc ~ .sectionToc, .likechapterToc ~ .likesectionToc, .likechapterToc ~ .sectionToc {margin-left:2em;}
doc/src/vipsmanual.lg:Css:  .chapterToc ~ .likesectionToc ~ .likesubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc, .likechapterToc ~ .sectionToc ~ .subsectionToc {margin-left:4em;}
doc/src/vipsmanual.lg:Css: .chapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc ~ .subsubsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likechapterToc ~ .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc .likechapterToc ~ .sectionToc ~ .subsectionToc ~ .subsubsectionToc {margin-left:6em;}
doc/src/vipsmanual.lg:Css:  .likesectionToc , .sectionToc {margin-left:0em;}
doc/src/vipsmanual.lg:Css:  .likesectionToc ~ .likesubsectionToc, .likesectionToc ~ .subsectionToc, .sectionToc ~ .likesubsectionToc, .sectionToc ~ .subsectionToc {margin-left:2em;}
doc/src/vipsmanual.lg:Css: .likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .sectionToc ~ .subsectionToc ~ .subsubsectionToc {margin-left:4em;}
doc/src/vipsmanual.lg:Css:  .likesubsectionToc, .subsectionToc {margin-left:0em;}
doc/src/vipsmanual.lg:Css:  .likesubsectionToc ~ .subsubsectionToc, .subsectionToc ~ .subsubsectionToc, {margin-left:2em;}
doc/src/vipsmanual.lg:Css: .figure img.graphics {margin-left:10%;}
doc/src/vipsmanual.lg:--- needs --- vipsmanual.idv[2] ==> vipsmanual0x.png ---
doc/src/vipsmanual.lg:--- characters ---
doc/src/vipsmanualse5.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse5.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse5.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse5.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse5.html:<!-- 3,html --> 
doc/src/vipsmanualse5.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse5.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse5.html:href="vipsmanualse4.html#tailvipsmanualse4.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse5.html: id="x10-270001.5"></a>The <span 
doc/src/vipsmanualse5.html:class="pcrr7t-">VDisplay </span>class</h3>
doc/src/vipsmanualse5.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">VDisplay</span></span></span> class is an abstraction over the VIPS
doc/src/vipsmanualse5.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">im_col_display</span></span></span> type which gives convenient and safe
doc/src/vipsmanualse5.html:<!--l. 6--><p class="indent" >  VIPS display profiles are now mostly obsolete. You&#8217;re
doc/src/vipsmanualse5.html:better off using the ICC colour management <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">VImage</span></span></span>
doc/src/vipsmanualse5.html:member functions <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">ICC_export()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">ICC_import()</span></span></span>.
doc/src/vipsmanualse5.html:<!--l. 10--><p class="noindent" >
doc/src/vipsmanualse5.html: id="x10-280001.5.1"></a>Constructors</h4>
doc/src/vipsmanualse5.html:<!--l. 12--><p class="noindent" >There are two constructors for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">VDisplay</span></span></span>:
doc/src/vipsmanualse5.html:                                                 <div class="verbatim" id="verbatim-36">
doc/src/vipsmanualse5.html:<!--l. 17--><p class="nopar" >
doc/src/vipsmanualse5.html:<!--l. 19--><p class="indent" >  The first form initialises the display from one of the
doc/src/vipsmanualse5.html:  <div class="verbatim" id="verbatim-37">
doc/src/vipsmanualse5.html:&#x00A0;<br />VDisplay&#x00A0;jim(&#x00A0;"ultra2-20/2/98"&#x00A0;);
doc/src/vipsmanualse5.html:<!--l. 25--><p class="nopar" >
doc/src/vipsmanualse5.html:<!--l. 27--><p class="indent" >  Makes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">fred</span></span></span> a profile for making images in sRGB
doc/src/vipsmanualse5.html:format, and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">jim</span></span></span> a profile representing my workstation
doc/src/vipsmanualse5.html:<!--l. 31--><p class="noindent" >
doc/src/vipsmanualse5.html: id="x10-290001.5.2"></a>Projection functions</h4>
doc/src/vipsmanualse5.html:<!--l. 33--><p class="noindent" >A set of member functions of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">VDisplay</span></span></span> provide read and
doc/src/vipsmanualse5.html:                                                 <div class="verbatim" id="verbatim-38">
doc/src/vipsmanualse5.html:<!--l. 57--><p class="nopar" >
doc/src/vipsmanualse5.html:<!--l. 59--><p class="indent" >  Where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">VDisplayType</span></span></span> is defined as:
doc/src/vipsmanualse5.html:  <div class="verbatim" id="verbatim-39">
doc/src/vipsmanualse5.html:<!--l. 66--><p class="nopar" >
doc/src/vipsmanualse5.html:<!--l. 68--><p class="indent" >  And <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">matrix</span></span></span> is defined as:
doc/src/vipsmanualse5.html:                                                 <div class="verbatim" id="verbatim-40">
doc/src/vipsmanualse5.html:<!--l. 72--><p class="nopar" >
doc/src/vipsmanualse5.html:<!--l. 74--><p class="indent" >  For a description of all the fields in a VIPS display
doc/src/vipsmanualse5.html:profile, see the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse5.html:class="pcrr7t-">im_XYZ2RGB()</span></span></span>.
doc/src/vipsmanualse5.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse5.html:href="vipsmanualse4.html#tailvipsmanualse4.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse5.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanualch2.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualch2.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualch2.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualch2.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualch2.html:<!-- 3,html --> 
doc/src/vipsmanualch2.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualch2.html:  <!--l. 70--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualch2.html:href="vipsmanualch1.html#tailvipsmanualch1.html" >prev-tail</a>] [<a 
doc/src/vipsmanualch2.html: id="x12-350002"></a>VIPS for C programmers</h2>
doc/src/vipsmanualch2.html:href="vipsmanualse7.html#x13-360002.1">Introduction</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-370002.2">Core C API</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-380002.2.1">Startup</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-390002.2.2">Image descriptors</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-400002.2.3">Header fields</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-410002.2.4">Opening and closing</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-420002.2.5">Examples</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-430002.2.6">Metadata</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-440002.2.7">History</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-450002.2.8">Eval callbacks</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-460002.2.9">Detailed rules for descriptors</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-470002.2.10">Automatic resource deallocation</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-510002.2.11">Error handling</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse8.html#x14-520002.2.12">Joining operations together</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse9.html#x15-590002.3">Function dispatch and plug-ins</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse9.html#x15-600002.3.1">Simple plugin example</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse9.html#x15-610002.3.2">A more complicated example</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse9.html#x15-620002.3.3">Adding new types</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse9.html#x15-630002.3.4">Using function dispatch in your application</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse10.html#x16-670002.4">The VIPS base class: <span 
doc/src/vipsmanualch2.html:class="pcrr7t-">VipsObject</span></a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse10.html#x16-680002.4.1">Properties</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse10.html#x16-730002.4.2">Convenience functions</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse11.html#x17-740002.5">Image formats</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse11.html#x17-750002.5.1">How a format is represented</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse11.html#x17-760002.5.2">The format class</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse11.html#x17-770002.5.3">Finding a format</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse11.html#x17-780002.5.4">Convenience functions</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse12.html#x18-790002.6">Interpolators</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse12.html#x18-800002.6.1">How an interpolator is represented</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse12.html#x18-810002.6.2">A sample interpolator</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse12.html#x18-820002.6.3">Writing a VIPS operation that takes an interpolator as an argument</a></span>
doc/src/vipsmanualch2.html:href="vipsmanualse12.html#x18-830002.6.4">Passing an interpolator to a VIPS operation</a></span>
doc/src/vipsmanualch2.html:  <!--l. 79--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualch2.html:href="vipsmanualch1.html#tailvipsmanualch1.html" >prev-tail</a>] [<a 
doc/src/vipsmanualch2.html:<!--l. 79--><p class="indent" >  <a 
doc/src/vipsmanualse15.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse15.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse15.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse15.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse15.html:<!-- 3,html --> 
doc/src/vipsmanualse15.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse15.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse15.html:href="vipsmanualse14.html#tailvipsmanualse14.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse15.html: id="x22-920003.3"></a>Programming PIO functions</h3>
doc/src/vipsmanualse15.html:<!--l. 4--><p class="noindent" >The VIPS PIO system has a number of advantages over
doc/src/vipsmanualse15.html:<!--l. 7--><p class="noindent" >
doc/src/vipsmanualse15.html: id="x22-930003.3.1"></a>Easy PIO with <span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">_wrapone() </span>and
doc/src/vipsmanualse15.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">_wrapmany()</span></h4>
doc/src/vipsmanualse15.html:<!--l. 10--><p class="noindent" >PIO is a very general image IO system, and because of this
doc/src/vipsmanualse15.html:VIPS offers an easy-to-use layer over PIO with the funtions
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span>.
doc/src/vipsmanualse15.html:<!--l. 14--><p class="indent" >  If your image processing function is uninterested in
doc/src/vipsmanualse15.html:<!--l. 19--><p class="indent" >  Consider the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> function of figure&#x00A0;<a 
doc/src/vipsmanualse15.html:href="vipsmanualse14.html#x21-900012">3.2<!--tex4ht:ref: fg:invert --></a>. First, we
doc/src/vipsmanualse15.html:have to write the core of this as a buffer-processing
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-140">
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;q[i]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[i];
doc/src/vipsmanualse15.html:<!--l. 42--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 44--><p class="indent" >  Now we have to wrap up this very primitive expression
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span> to do this. It has type:
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-141">
doc/src/vipsmanualse15.html:<!--l. 51--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 53--><p class="noindent" >where:
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-142">
doc/src/vipsmanualse15.html:<!--l. 60--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 62--><p class="noindent" >almost the same type as our buffer-processing function
doc/src/vipsmanualse15.html:above. The values <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">a</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">b</span></span></span> are carried around by VIPS for
doc/src/vipsmanualse15.html:whatever use you fancy. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> can now be written
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-143">
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in-&#x003E;Bands&#x00A0;!=&#x00A0;1&#x00A0;||
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:<!--l. 96--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 98--><p class="indent" >  And that&#8217;s all there is to it. This function will have all of
doc/src/vipsmanualse15.html:easy to program as the WIO <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> earlier in this
doc/src/vipsmanualse15.html:<!--l. 102--><p class="indent" >  This version of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> is not very general: it will
doc/src/vipsmanualse15.html:only accept one-band unsigned char images. It is easy to
doc/src/vipsmanualse15.html:modify for n-band images:
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-144">
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;int&#x00A0;sz&#x00A0;=&#x00A0;n&#x00A0;&#x22C6;&#x00A0;in-&#x003E;Bands;
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;q[i]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[i];
doc/src/vipsmanualse15.html:<!--l. 121--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 123--><p class="indent" >  We must also modify <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span>:
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-145">
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Process!&#x00A0;The&#x00A0;first&#x00A0;user-parameter
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:<!--l. 152--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 154--><p class="indent" >  There are two significant hidden traps here. First,
doc/src/vipsmanualse15.html:read the contents of the user parameters <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">a</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">b</span></span></span>, you
doc/src/vipsmanualse15.html:may not write to them. This is because on a multi-CPU
doc/src/vipsmanualse15.html:machine, several copies of your buffer-processing functions
doc/src/vipsmanualse15.html:overflows), you can&#8217;t use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span>, you&#8217;ll
doc/src/vipsmanualse15.html:<!--l. 163--><p class="indent" >  Secondly, your buffer processing function may not be
doc/src/vipsmanualse15.html:your operation until long after the call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> has
doc/src/vipsmanualse15.html:read anything in your buffer-processing function that may
doc/src/vipsmanualse15.html:local resource allocators, such as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_open_local()</span></span></span> and<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_malloc()</span></span></span>. This issue is discussed at length in the
doc/src/vipsmanualse15.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse15.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>.
doc/src/vipsmanualse15.html: <!--l. 171--><p class="indent" >    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span> is for operations which take exactly
doc/src/vipsmanualse15.html: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span>, which works for any number of input
doc/src/vipsmanualse15.html: images. The type of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span> is slightly
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-146">
doc/src/vipsmanualse15.html:<!--l. 179--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 181--><p class="noindent" >
doc/src/vipsmanualse15.html:                                              <div class="verbatim" id="verbatim-147">
doc/src/vipsmanualse15.html:<!--l. 187--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 189--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span> takes a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">NULL</span></span></span>-terminated array of
doc/src/vipsmanualse15.html:input images, and creates a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">NULL</span></span></span>-terminated array of
doc/src/vipsmanualse15.html:function to add two <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> images to
doc/src/vipsmanualse15.html:make a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> image might be written
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-148">
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;int&#x00A0;sz&#x00A0;=&#x00A0;n&#x00A0;&#x22C6;&#x00A0;in-&#x003E;Bands;
doc/src/vipsmanualse15.html:<!--l. 209--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 211--><p class="indent" >  This can be made into a PIO function with:
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-149">
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;i1-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i1-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;||
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i2-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i2-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;||
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i1-&#x003E;Bands&#x00A0;!=&#x00A0;i2-&#x003E;Bands&#x00A0;)&#x00A0;{
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;out-&#x003E;BandFmt&#x00A0;=&#x00A0;IM_BANDFMT_USHORT;
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;out-&#x003E;Bbits&#x00A0;=&#x00A0;IM_BBITS_SHORT;
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Process!&#x00A0;The&#x00A0;first&#x00A0;user-parameter
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x22C6;&#x00A0;invec&#x00A0;is&#x00A0;a&#x00A0;NULL-terminated&#x00A0;array&#x00A0;of
doc/src/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:<!--l. 256--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 258--><p class="noindent" >
doc/src/vipsmanualse15.html: id="x22-940003.3.2"></a>Region descriptors</h4>
doc/src/vipsmanualse15.html:<!--l. 260--><p class="noindent" >Regions are the next layer of abstraction above image
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-150">
doc/src/vipsmanualse15.html:<!--l. 272--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 274--><p class="noindent" >where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">valid</span></span></span> holds the sub-area of image <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im</span></span></span> that this
doc/src/vipsmanualse15.html:region represents, and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">Rect</span></span></span> is defined as:
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-151">
doc/src/vipsmanualse15.html:<!--l. 283--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 285--><p class="noindent" >two macros are available for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">Rect</span></span></span> calculations:
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-152">
doc/src/vipsmanualse15.html:<!--l. 291--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 293--><p class="noindent" >where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_RECT_RIGHT()</span></span></span> returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">left</span></span></span> + <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">width</span></span></span>, and
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_RECT_BOTTOM()</span></span></span> returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">top</span></span></span> + <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">height</span></span></span>. A small
doc/src/vipsmanualse15.html:library of C functions are also available for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">Rect</span></span></span> algebra, see
doc/src/vipsmanualse15.html:the manual pages for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_rect_intersectrect()</span></span></span>.
doc/src/vipsmanualse15.html:<!--l. 299--><p class="indent" >    Regions are created with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_region_create()</span></span></span>.
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-153">
doc/src/vipsmanualse15.html:<!--l. 303--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 305--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_region_create()</span></span></span> returns a pointer to a new
doc/src/vipsmanualse15.html:region structure, or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">NULL</span></span></span> on error. Regions returned by
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_region_create()</span></span></span> are blank &#8212; they contain no
doc/src/vipsmanualse15.html:<!--l. 311--><p class="indent" >  Regions are destroyed with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_region_free()</span></span></span>. It
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-154">
doc/src/vipsmanualse15.html:<!--l. 315--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 317--><p class="noindent" >And, as usual, returns 0 on success and non-zero on
doc/src/vipsmanualse15.html:error, setting <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_error()</span></span></span>. You must free all regions
doc/src/vipsmanualse15.html:<!--l. 325--><p class="noindent" >
doc/src/vipsmanualse15.html: id="x22-950003.3.3"></a>Image input with regions</h4>
doc/src/vipsmanualse15.html:<!--l. 327--><p class="noindent" >Before you can read from a region, you need to call
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span> to fill the region with image data. It has
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-155">
doc/src/vipsmanualse15.html:<!--l. 332--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 334--><p class="indent" >  Area <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">r</span></span></span> of the image on which <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">reg</span></span></span> has been created is
doc/src/vipsmanualse15.html:<!--l. 337--><p class="indent" >  Exactly what this preparation involves depends upon
doc/src/vipsmanualse15.html:functions. If it returns successfully, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span>
doc/src/vipsmanualse15.html:guarantees that all pixels within <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">reg-&#x003E;valid</span></span></span> may be
doc/src/vipsmanualse15.html:accessed. Note that this may be smaller or larger than <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">r</span></span></span>,
doc/src/vipsmanualse15.html:since <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span> clips <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">r</span></span></span> against the size of the
doc/src/vipsmanualse15.html:<!--l. 344--><p class="indent" >  Programs can access image data in the region by calling
doc/src/vipsmanualse15.html:the macro <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span>. It has type
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-156">
doc/src/vipsmanualse15.html:<!--l. 350--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 352--><p class="indent" >  Provided that point (x,y) lies inside <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">reg-&#x003E;valid</span></span></span>,
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> returns a pointer to pel <span 
doc/src/vipsmanualse15.html:class="cmr-10">(</span><span 
doc/src/vipsmanualse15.html:class="cmmi-10">x,y</span><span 
doc/src/vipsmanualse15.html:class="cmr-10">)</span>.
doc/src/vipsmanualse15.html:Adding to the result of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> moves to
doc/src/vipsmanualse15.html:within <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">reg-&#x003E;valid</span></span></span>. Add <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_REGION_LSKIP()</span></span></span> to
doc/src/vipsmanualse15.html:move down a line, see below. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> has
doc/src/vipsmanualse15.html:<!--l. 359--><p class="indent" >    Other macros are available to ease address calculation:
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-157">
doc/src/vipsmanualse15.html:<!--l. 365--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 367--><p class="noindent" >These find the number of bytes to add to the result of
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> to move down a line, the number of
doc/src/vipsmanualse15.html:<!--l. 372--><p class="indent" >  Figure&#x00A0;<a 
doc/src/vipsmanualse15.html:href="#x22-950015">3.5<!--tex4ht:ref: fg:paverage --></a> is a version of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> which uses
doc/src/vipsmanualse15.html:should really be using <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>, see <span 
doc/src/vipsmanualse15.html:class="cmsy-10"></span><a 
doc/src/vipsmanualse15.html:href="#x22-960003.3.4">3.3.4<!--tex4ht:ref: sec:sequence --></a>, to do
doc/src/vipsmanualse15.html:call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_pincheck()</span></span></span> rather than <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_incheck()</span></span></span>.
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_pincheck()</span></span></span> signals to the IO system that you are a
doc/src/vipsmanualse15.html:PIO-aware function, giving <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span> much more
doc/src/vipsmanualse15.html:see the manual pages for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_poutcheck()</span></span></span> and
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_piocheck()</span></span></span>.
doc/src/vipsmanualse15.html:<!--l. 382--><p class="indent" >  <a 
doc/src/vipsmanualse15.html: id="x22-950015"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse15.html:<div class="verbatim" id="verbatim-158">
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;im-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||&#x00A0;im-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:<!--l. 408--><p class="nopar" >
doc/src/vipsmanualse15.html:class="content">First PIO average of image</span></div><!--tex4ht:label?: x22-950015 -->
doc/src/vipsmanualse15.html:<!--l. 414--><p class="indent" >  <a 
doc/src/vipsmanualse15.html: id="x22-950026"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse15.html:<div class="verbatim" id="verbatim-159">
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;r&#x00A0;=&#x00A0;&amp;reg-&#x003E;valid;
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;area.top&#x00A0;=&#x00A0;0;&#x00A0;area.top&#x00A0;&#x003C;&#x00A0;im-&#x003E;Ysize;&#x00A0;area.top&#x00A0;+=&#x00A0;100&#x00A0;)
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;area.left&#x00A0;=&#x00A0;0;&#x00A0;area.left&#x00A0;&#x003C;&#x00A0;im-&#x003E;Xsize;
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;r-&#x003E;top;&#x00A0;y&#x00A0;&#x003C;&#x00A0;IM_RECT_BOTTOM(&#x00A0;r&#x00A0;);&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;p&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;reg,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x22C6;out&#x00A0;=&#x00A0;(double)&#x00A0;total&#x00A0;/&#x00A0;(IM_IMAGE_N_ELEMENTS(&#x00A0;im&#x00A0;)&#x00A0;&#x22C6;&#x00A0;im-&#x003E;Ysize);
doc/src/vipsmanualse15.html:<!--l. 454--><p class="nopar" >
doc/src/vipsmanualse15.html:class="content">First PIO average of image (cont.)</span></div><!--tex4ht:label?: x22-950026 -->
doc/src/vipsmanualse15.html:<!--l. 458--><p class="indent" >  This version of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> can be called in exactly the
doc/src/vipsmanualse15.html:<!--l. 462--><p class="indent" >  We can do one better than this &#8212; if the image is being
doc/src/vipsmanualse15.html: id="x22-960003.3.4"></a>Splitting into sequences</h4>
doc/src/vipsmanualse15.html:<!--l. 470--><p class="noindent" >A sequence comes in three parts: a start function, a
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-160">
doc/src/vipsmanualse15.html:<!--l. 488--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 490--><p class="noindent" >The values <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">a</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">b</span></span></span> are carried around by VIPS for your
doc/src/vipsmanualse15.html:<!--l. 493--><p class="indent" >    For functions like <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> which consume
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>. This has type:
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-161">
doc/src/vipsmanualse15.html:<!--l. 502--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 504--><p class="indent" >  VIPS starts one or more sequences, runs one or more
doc/src/vipsmanualse15.html:processing functions over image <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">in</span></span></span> until all of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">in</span></span></span> has
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">process_fn()</span></span></span> is given will be complete and disjoint,
doc/src/vipsmanualse15.html:<!--l. 513--><p class="indent" >  An example should make this clearer. This version of
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> is very similar to the average function in the
doc/src/vipsmanualse15.html:<!--l. 518--><p class="indent" >  <a 
doc/src/vipsmanualse15.html: id="x22-960017"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse15.html:<div class="verbatim" id="verbatim-162">
doc/src/vipsmanualse15.html:<!--l. 557--><p class="nopar" >
doc/src/vipsmanualse15.html:class="content">Final PIO average of image</span></div><!--tex4ht:label?: x22-960017 -->
doc/src/vipsmanualse15.html:<!--l. 563--><p class="indent" >  <a 
doc/src/vipsmanualse15.html: id="x22-960028"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse15.html:<div class="verbatim" id="verbatim-163">
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;Rect&#x00A0;&#x22C6;r&#x00A0;=&#x00A0;&amp;reg-&#x003E;valid;
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;r-&#x003E;top;&#x00A0;y&#x00A0;&#x003C;&#x00A0;IM_RECT_BOTTOM(&#x00A0;r&#x00A0;);&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;p&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;reg,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/src/vipsmanualse15.html:<!--l. 594--><p class="nopar" >
doc/src/vipsmanualse15.html:class="content">Final PIO average of image (cont.)</span></div><!--tex4ht:label?: x22-960028 -->
doc/src/vipsmanualse15.html:<!--l. 599--><p class="indent" >  <a 
doc/src/vipsmanualse15.html: id="x22-960039"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse15.html:<div class="verbatim" id="verbatim-164">
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;im-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;im-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x22C6;out&#x00A0;=&#x00A0;(double)&#x00A0;gtotal&#x00A0;/&#x00A0;(IM_IMAGE_N_ELEMENTS(&#x00A0;im&#x00A0;)&#x00A0;&#x22C6;&#x00A0;im-&#x003E;Ysize);
doc/src/vipsmanualse15.html:<!--l. 635--><p class="nopar" >
doc/src/vipsmanualse15.html:class="content">Final PIO average of image (cont.)</span></div><!--tex4ht:label?: x22-960039 -->
doc/src/vipsmanualse15.html:<!--l. 639--><p class="indent" >  There are a couple of variations on <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span>:
doc/src/vipsmanualse15.html:you can use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_prepare_to()</span></span></span> to force writing to a
doc/src/vipsmanualse15.html:particular place, and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_prepare_thread()</span></span></span> to use
doc/src/vipsmanualse15.html: id="x22-970003.3.5"></a>Output to regions</h4>
doc/src/vipsmanualse15.html:<!--l. 646--><p class="noindent" >Regions are written to in just the same way they are
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> macro.
doc/src/vipsmanualse15.html:<!--l. 649--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span> does input &#8212; <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span> does
doc/src/vipsmanualse15.html:output. It has the same type as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>:
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-165">
doc/src/vipsmanualse15.html:<!--l. 659--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 661--><p class="indent" >  The region given to the process function is ready for
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>, the areas the process function is asked to
doc/src/vipsmanualse15.html:<!--l. 667--><p class="indent" >    Here is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span>, rewritten to use PIO. This piece of
doc/src/vipsmanualse15.html:provided by the VIPS library: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_start_one()</span></span></span> and
doc/src/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_stop_one()</span></span></span>. They assume that the first of the two
doc/src/vipsmanualse15.html:user arguments to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span> is the input image.
doc/src/vipsmanualse15.html:  <div class="verbatim" id="verbatim-166">
doc/src/vipsmanualse15.html:<!--l. 679--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 681--><p class="noindent" >and:
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-167">
doc/src/vipsmanualse15.html:<!--l. 690--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 692--><p class="indent" >  They are useful for simple functions which expect only one
doc/src/vipsmanualse15.html:input image. See the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_start_many()</span></span></span>
doc/src/vipsmanualse15.html:for many-input functions.
doc/src/vipsmanualse15.html:<!--l. 697--><p class="indent" >  <a 
doc/src/vipsmanualse15.html: id="x22-9700110"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse15.html:<div class="verbatim" id="verbatim-168">
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;Rect&#x00A0;&#x22C6;r&#x00A0;=&#x00A0;&amp;or-&#x003E;valid;
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;r-&#x003E;top;&#x00A0;y&#x00A0;&#x003C;&#x00A0;IM_RECT_BOTTOM(&#x00A0;r&#x00A0;);&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;p&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;ir,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;q&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;or,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;q[i]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[i];
doc/src/vipsmanualse15.html:<!--l. 732--><p class="nopar" >
doc/src/vipsmanualse15.html:class="content">PIO invert</span></div><!--tex4ht:label?: x22-9700110 -->
doc/src/vipsmanualse15.html:<!--l. 738--><p class="indent" >  <a 
doc/src/vipsmanualse15.html: id="x22-9700211"></a><hr class="float"><div class="float" 
doc/src/vipsmanualse15.html:<div class="verbatim" id="verbatim-169">
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse15.html:<!--l. 775--><p class="nopar" >
doc/src/vipsmanualse15.html:class="content">PIO invert (cont.)</span></div><!--tex4ht:label?: x22-9700211 -->
doc/src/vipsmanualse15.html:<!--l. 779--><p class="indent" >  Functions have some choice about the way they write
doc/src/vipsmanualse15.html:they were given by <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span>. They can, if they
doc/src/vipsmanualse15.html:the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_region_region()</span></span></span>. See also
doc/src/vipsmanualse15.html:the source for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_copy()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_extract()</span></span></span> for
doc/src/vipsmanualse15.html:<!--l. 785--><p class="indent" >  Note also the call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_demand_hint()</span></span></span>. This
doc/src/vipsmanualse15.html: id="x22-980003.3.6"></a>Callbacks</h4>
doc/src/vipsmanualse15.html:<!--l. 794--><p class="noindent" >VIPS lets you attach callbacks to image descriptors. These
doc/src/vipsmanualse15.html:<!--l. 798--><p class="noindent" >
doc/src/vipsmanualse15.html: id="x22-990003.3.6"></a>Close callbacks</h5>
doc/src/vipsmanualse15.html:<!--l. 800--><p class="noindent" >These callbacks are invoked just before an image is
doc/src/vipsmanualse15.html:<!--l. 807--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_add_close_callback()</span></span></span> to add a close
doc/src/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-170">
doc/src/vipsmanualse15.html:<!--l. 814--><p class="nopar" >
doc/src/vipsmanualse15.html:<!--l. 816--><p class="indent" >  As with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span>, the two <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">void</span><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">&#x00A0;&#x22C6;</span></span></span> pointers
doc/src/vipsmanualse15.html:<!--l. 820--><p class="noindent" >
doc/src/vipsmanualse15.html: id="x22-1000003.3.6"></a>Preclose callbacks</h5>
doc/src/vipsmanualse15.html:<!--l. 822--><p class="noindent" >Preclose callbacks are called before any shutdown has
doc/src/vipsmanualse15.html:page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_add_preclose_callback()</span></span></span> for full
doc/src/vipsmanualse15.html:<!--l. 827--><p class="noindent" >
doc/src/vipsmanualse15.html: id="x22-1010003.3.6"></a>Eval callbacks</h5>
doc/src/vipsmanualse15.html:<!--l. 829--><p class="noindent" >These are callbacks which are invoked periodically by VIPS
doc/src/vipsmanualse15.html:useful for user-interfaces built on top of VIPS. See the
doc/src/vipsmanualse15.html:manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse15.html:class="pcrr7t-">im_add_eval_callback()</span></span></span> for full
doc/src/vipsmanualse15.html:<!--l. 834--><p class="noindent" >
doc/src/vipsmanualse15.html: id="x22-1020003.3.7"></a>Memory allocation revisited</h4>
doc/src/vipsmanualse15.html:<!--l. 836--><p class="noindent" >When you are using PIO, memory allocation becomes
doc/src/vipsmanualse15.html:<!--l. 844--><p class="indent" >    The first type, memory local to this function instance,
doc/src/vipsmanualse15.html:image processing function, and links to any read-only tables
doc/src/vipsmanualse15.html:<!--l. 849--><p class="indent" >  The second type of memory, memory local to a sequence,
doc/src/vipsmanualse15.html:stop functions are guaranteed to be single-threaded, so
doc/src/vipsmanualse15.html:you may write to the function-local memory within
doc/src/vipsmanualse15.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse15.html:href="vipsmanualse14.html#tailvipsmanualse14.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse15.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual.4ct:\doTocEntry\toclikechapter{}{\csname a:TocLink\endcsname{2}{x2-1000}{QQ2-2-1}{Contents}}{3}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclikechapter{}{\csname a:TocLink\endcsname{3}{x3-2000}{QQ2-3-2}{List of Figures}}{7}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclikechapter{}{\csname a:TocLink\endcsname{4}{x4-3000}{QQ2-4-3}{List of Tables}}{11}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocchapter{1}{\csname a:TocLink\endcsname{5}{x5-40001}{QQ2-5-4}{VIPS from C++ and Python}}{3}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{1.1}{\csname a:TocLink\endcsname{6}{x6-50001.1}{QQ2-6-5}{Introduction}}{3}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.1.1}{\csname a:TocLink\endcsname{6}{x6-60001.1.1}{QQ2-6-6}{If you've used the C API}}{3}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{1.1}{\csname a:TocLink\endcsname{6}{x6-60011}{}{\ignorespaces \texttt  {invert} program in C++}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{1.2}{\csname a:TocLink\endcsname{6}{x6-60022}{}{\ignorespaces \texttt  {invert} program in Python}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{1.2}{\csname a:TocLink\endcsname{7}{x7-70001.2}{QQ2-7-9}{The VIPS file format}}{11}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.2.1}{\csname a:TocLink\endcsname{7}{x7-80001.2.1}{QQ2-7-10}{VIPS file header}}{11}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclot{1.1}{\csname a:TocLink\endcsname{7}{x7-80011}{}{\ignorespaces VIPS header}}{table}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclot{1.2}{\csname a:TocLink\endcsname{7}{x7-80022}{}{\ignorespaces Possible values for \texttt  {BandFmt}}}{table}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclot{1.3}{\csname a:TocLink\endcsname{7}{x7-80033}{}{\ignorespaces Possible values for \texttt  {Coding}}}{table}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclot{1.4}{\csname a:TocLink\endcsname{7}{x7-80044}{}{\ignorespaces Possible values for \texttt  {Type}}}{table}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.2.2}{\csname a:TocLink\endcsname{7}{x7-90001.2.2}{QQ2-7-15}{Computation formats}}{23}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.2.3}{\csname a:TocLink\endcsname{7}{x7-100001.2.3}{QQ2-7-16}{Storage formats}}{23}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{1.3}{\csname a:TocLink\endcsname{8}{x8-110001.3}{QQ2-8-17}{The \texttt  {VImage} class}}{24}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.3.1}{\csname a:TocLink\endcsname{8}{x8-120001.3.1}{QQ2-8-18}{Constructors}}{24}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.3.2}{\csname a:TocLink\endcsname{8}{x8-130001.3.2}{QQ2-8-19}{File conversion}}{27}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.3.3}{\csname a:TocLink\endcsname{8}{x8-140001.3.3}{QQ2-8-20}{Projection functions}}{28}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.3.4}{\csname a:TocLink\endcsname{8}{x8-150001.3.4}{QQ2-8-21}{Assignment}}{31}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.3.5}{\csname a:TocLink\endcsname{8}{x8-160001.3.5}{QQ2-8-22}{Computing with \texttt  {VImage}s}}{32}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.3.6}{\csname a:TocLink\endcsname{8}{x8-170001.3.6}{QQ2-8-23}{Writing results}}{33}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.3.7}{\csname a:TocLink\endcsname{8}{x8-180001.3.7}{QQ2-8-24}{Type conversions}}{34}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{1.4}{\csname a:TocLink\endcsname{9}{x9-190001.4}{QQ2-9-25}{The \texttt  {VMask} class}}{36}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.4.1}{\csname a:TocLink\endcsname{9}{x9-200001.4.1}{QQ2-9-26}{Constructors}}{36}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.4.2}{\csname a:TocLink\endcsname{9}{x9-210001.4.2}{QQ2-9-27}{Projection functions}}{37}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.4.3}{\csname a:TocLink\endcsname{9}{x9-220001.4.3}{QQ2-9-28}{Assignment}}{37}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.4.4}{\csname a:TocLink\endcsname{9}{x9-230001.4.4}{QQ2-9-29}{Computing with \texttt  {VMask}}}{38}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.4.5}{\csname a:TocLink\endcsname{9}{x9-240001.4.5}{QQ2-9-30}{\texttt  {VIMask} operations}}{39}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.4.6}{\csname a:TocLink\endcsname{9}{x9-250001.4.6}{QQ2-9-31}{\texttt  {VDMask} operations}}{40}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.4.7}{\csname a:TocLink\endcsname{9}{x9-260001.4.7}{QQ2-9-32}{Output of masks}}{40}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{1.5}{\csname a:TocLink\endcsname{10}{x10-270001.5}{QQ2-10-33}{The \texttt  {VDisplay} class}}{41}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.5.1}{\csname a:TocLink\endcsname{10}{x10-280001.5.1}{QQ2-10-34}{Constructors}}{41}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.5.2}{\csname a:TocLink\endcsname{10}{x10-290001.5.2}{QQ2-10-35}{Projection functions}}{42}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{1.6}{\csname a:TocLink\endcsname{11}{x11-300001.6}{QQ2-11-36}{The \texttt  {VError} class}}{44}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.6.1}{\csname a:TocLink\endcsname{11}{x11-310001.6.1}{QQ2-11-37}{Constructors}}{44}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.6.2}{\csname a:TocLink\endcsname{11}{x11-320001.6.2}{QQ2-11-38}{Projection functions}}{44}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.6.3}{\csname a:TocLink\endcsname{11}{x11-330001.6.3}{QQ2-11-39}{Computing with \texttt  {VError}}}{45}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{1.6.4}{\csname a:TocLink\endcsname{11}{x11-340001.6.4}{QQ2-11-40}{Convenience function}}{47}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocchapter{2}{\csname a:TocLink\endcsname{12}{x12-350002}{QQ2-12-41}{VIPS for C programmers}}{51}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{2.1}{\csname a:TocLink\endcsname{13}{x13-360002.1}{QQ2-13-42}{Introduction}}{51}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.1}{\csname a:TocLink\endcsname{13}{x13-360011}{}{\ignorespaces VIPS software architecture}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{2.2}{\csname a:TocLink\endcsname{14}{x14-370002.2}{QQ2-14-44}{Core C API}}{56}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.1}{\csname a:TocLink\endcsname{14}{x14-380002.2.1}{QQ2-14-45}{Startup}}{56}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.2}{\csname a:TocLink\endcsname{14}{x14-380012}{}{\ignorespaces Hello World for VIPS}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.2}{\csname a:TocLink\endcsname{14}{x14-390002.2.2}{QQ2-14-47}{Image descriptors}}{60}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.3}{\csname a:TocLink\endcsname{14}{x14-390013}{}{\ignorespaces The \texttt  {IMAGE} descriptor}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.3}{\csname a:TocLink\endcsname{14}{x14-400002.2.3}{QQ2-14-49}{Header fields}}{63}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.4}{\csname a:TocLink\endcsname{14}{x14-410002.2.4}{QQ2-14-50}{Opening and closing}}{63}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.5}{\csname a:TocLink\endcsname{14}{x14-420002.2.5}{QQ2-14-51}{Examples}}{67}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.4}{\csname a:TocLink\endcsname{14}{x14-420014}{}{\ignorespaces Print width and height of an image}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.5}{\csname a:TocLink\endcsname{14}{x14-420025}{}{\ignorespaces Find photographic negative}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.6}{\csname a:TocLink\endcsname{14}{x14-430002.2.6}{QQ2-14-54}{Metadata}}{73}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.7}{\csname a:TocLink\endcsname{14}{x14-440002.2.7}{QQ2-14-55}{History}}{74}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.8}{\csname a:TocLink\endcsname{14}{x14-450002.2.8}{QQ2-14-56}{Eval callbacks}}{75}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.9}{\csname a:TocLink\endcsname{14}{x14-460002.2.9}{QQ2-14-57}{Detailed rules for descriptors}}{75}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.10}{\csname a:TocLink\endcsname{14}{x14-470002.2.10}{QQ2-14-58}{Automatic resource deallocation}}{76}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-480002.2.10}{QQ2-14-59}{Local image descriptors}}{76}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.6}{\csname a:TocLink\endcsname{14}{x14-480016}{}{\ignorespaces Sum an array of images}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-490002.2.10}{QQ2-14-61}{Local memory allocation}}{79}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-500002.2.10}{QQ2-14-62}{Other local operations}}{81}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.11}{\csname a:TocLink\endcsname{14}{x14-510002.2.11}{QQ2-14-63}{Error handling}}{81}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.2.12}{\csname a:TocLink\endcsname{14}{x14-520002.2.12}{QQ2-14-64}{Joining operations together}}{81}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.7}{\csname a:TocLink\endcsname{14}{x14-520017}{}{\ignorespaces Two image-processing operations joined together}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-530002.2.12}{QQ2-14-66}{How it works}}{84}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-540002.2.12}{QQ2-14-67}{Pitfalls with partials}}{84}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-550002.2.12}{QQ2-14-68}{Non-image output}}{84}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-560002.2.12}{QQ2-14-69}{Calculating twice}}{84}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.8}{\csname a:TocLink\endcsname{14}{x14-560018}{}{\ignorespaces Threshold an image at the mean value}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-570002.2.12}{QQ2-14-71}{Blocking computation}}{87}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{14}{x14-580002.2.12}{QQ2-14-72}{Limitations}}{87}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{2.3}{\csname a:TocLink\endcsname{15}{x15-590002.3}{QQ2-15-73}{Function dispatch and plug-ins}}{88}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.3.1}{\csname a:TocLink\endcsname{15}{x15-600002.3.1}{QQ2-15-74}{Simple plugin example}}{88}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclot{2.1}{\csname a:TocLink\endcsname{15}{x15-600011}{}{\ignorespaces Argument type macros}}{table}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.3.2}{\csname a:TocLink\endcsname{15}{x15-610002.3.2}{QQ2-15-76}{A more complicated example}}{95}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.3.3}{\csname a:TocLink\endcsname{15}{x15-620002.3.3}{QQ2-15-77}{Adding new types}}{96}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.3.4}{\csname a:TocLink\endcsname{15}{x15-630002.3.4}{QQ2-15-78}{Using function dispatch in your application}}{101}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{15}{x15-640002.3.4}{QQ2-15-79}{Adding and removing functions}}{101}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{15}{x15-650002.3.4}{QQ2-15-80}{Searching the function database}}{102}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{15}{x15-660002.3.4}{QQ2-15-81}{Building argument structures and running commands}}{103}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{2.4}{\csname a:TocLink\endcsname{16}{x16-670002.4}{QQ2-16-82}{The VIPS base class: \texttt  {VipsObject}}}{106}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.4.1}{\csname a:TocLink\endcsname{16}{x16-680002.4.1}{QQ2-16-83}{Properties}}{106}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{16}{x16-690002.4.1}{QQ2-16-84}{Lookup}}{106}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{16}{x16-700002.4.1}{QQ2-16-85}{Create}}{107}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{16}{x16-710002.4.1}{QQ2-16-86}{Build}}{108}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{16}{x16-720002.4.1}{QQ2-16-87}{Use}}{108}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.4.2}{\csname a:TocLink\endcsname{16}{x16-730002.4.2}{QQ2-16-88}{Convenience functions}}{109}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{2.5}{\csname a:TocLink\endcsname{17}{x17-740002.5}{QQ2-17-89}{Image formats}}{111}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.5.1}{\csname a:TocLink\endcsname{17}{x17-750002.5.1}{QQ2-17-90}{How a format is represented}}{111}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.5.2}{\csname a:TocLink\endcsname{17}{x17-760002.5.2}{QQ2-17-91}{The format class}}{111}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.9}{\csname a:TocLink\endcsname{17}{x17-760019}{}{\ignorespaces Registering a format in a plugin}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.5.3}{\csname a:TocLink\endcsname{17}{x17-770002.5.3}{QQ2-17-93}{Finding a format}}{114}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.5.4}{\csname a:TocLink\endcsname{17}{x17-780002.5.4}{QQ2-17-94}{Convenience functions}}{114}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{2.6}{\csname a:TocLink\endcsname{18}{x18-790002.6}{QQ2-18-95}{Interpolators}}{115}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.6.1}{\csname a:TocLink\endcsname{18}{x18-800002.6.1}{QQ2-18-96}{How an interpolator is represented}}{115}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.6.2}{\csname a:TocLink\endcsname{18}{x18-810002.6.2}{QQ2-18-97}{A sample interpolator}}{115}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{2.10}{\csname a:TocLink\endcsname{18}{x18-8100110}{}{\ignorespaces Registering an interpolator in a plugin}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.6.3}{\csname a:TocLink\endcsname{18}{x18-820002.6.3}{QQ2-18-99}{Writing a VIPS operation that takes an interpolator as an argument}}{118}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{2.6.4}{\csname a:TocLink\endcsname{18}{x18-830002.6.4}{QQ2-18-100}{Passing an interpolator to a VIPS operation}}{119}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocchapter{3}{\csname a:TocLink\endcsname{19}{x19-840003}{QQ2-19-101}{Writing VIPS operations}}{125}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{3.1}{\csname a:TocLink\endcsname{20}{x20-850003.1}{QQ2-20-102}{Introduction}}{125}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.1.1}{\csname a:TocLink\endcsname{20}{x20-860003.1.1}{QQ2-20-103}{Why use VIPS?}}{125}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.1.2}{\csname a:TocLink\endcsname{20}{x20-870003.1.2}{QQ2-20-104}{I/O styles}}{126}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{3.2}{\csname a:TocLink\endcsname{21}{x21-880003.2}{QQ2-21-105}{Programming WIO operations}}{127}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.2.1}{\csname a:TocLink\endcsname{21}{x21-890003.2.1}{QQ2-21-106}{Input from an image}}{127}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.1}{\csname a:TocLink\endcsname{21}{x21-890011}{}{\ignorespaces Find average of image}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.2.2}{\csname a:TocLink\endcsname{21}{x21-900003.2.2}{QQ2-21-108}{Output to an image}}{131}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.2}{\csname a:TocLink\endcsname{21}{x21-900012}{}{\ignorespaces Invert an image}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.2.3}{\csname a:TocLink\endcsname{21}{x21-910003.2.3}{QQ2-21-110}{Polymorphism}}{137}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.3}{\csname a:TocLink\endcsname{21}{x21-910013}{}{\ignorespaces Calculate \texttt  {exp()} for an image}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.4}{\csname a:TocLink\endcsname{21}{x21-910024}{}{\ignorespaces Calculate \texttt  {exp()} for an image (cont)}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{3.3}{\csname a:TocLink\endcsname{22}{x22-920003.3}{QQ2-22-113}{Programming PIO functions}}{144}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.3.1}{\csname a:TocLink\endcsname{22}{x22-930003.3.1}{QQ2-22-114}{Easy PIO with \texttt  {im\_wrapone()} and \texttt  {im\_wrapmany()}}}{144}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.3.2}{\csname a:TocLink\endcsname{22}{x22-940003.3.2}{QQ2-22-115}{Region descriptors}}{150}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.3.3}{\csname a:TocLink\endcsname{22}{x22-950003.3.3}{QQ2-22-116}{Image input with regions}}{152}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.5}{\csname a:TocLink\endcsname{22}{x22-950015}{}{\ignorespaces First PIO average of image}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.6}{\csname a:TocLink\endcsname{22}{x22-950026}{}{\ignorespaces First PIO average of image (cont.)}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.3.4}{\csname a:TocLink\endcsname{22}{x22-960003.3.4}{QQ2-22-119}{Splitting into sequences}}{160}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.7}{\csname a:TocLink\endcsname{22}{x22-960017}{}{\ignorespaces Final PIO average of image}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.8}{\csname a:TocLink\endcsname{22}{x22-960028}{}{\ignorespaces Final PIO average of image (cont.)}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.9}{\csname a:TocLink\endcsname{22}{x22-960039}{}{\ignorespaces Final PIO average of image (cont.)}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.3.5}{\csname a:TocLink\endcsname{22}{x22-970003.3.5}{QQ2-22-123}{Output to regions}}{170}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.10}{\csname a:TocLink\endcsname{22}{x22-9700110}{}{\ignorespaces PIO invert}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{3.11}{\csname a:TocLink\endcsname{22}{x22-9700211}{}{\ignorespaces PIO invert (cont.)}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.3.6}{\csname a:TocLink\endcsname{22}{x22-980003.3.6}{QQ2-22-126}{Callbacks}}{177}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{22}{x22-990003.3.6}{QQ2-22-127}{Close callbacks}}{177}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{22}{x22-1000003.3.6}{QQ2-22-128}{Preclose callbacks}}{177}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsubsection{}{\csname a:TocLink\endcsname{22}{x22-1010003.3.6}{QQ2-22-129}{Eval callbacks}}{177}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{3.3.7}{\csname a:TocLink\endcsname{22}{x22-1020003.3.7}{QQ2-22-130}{Memory allocation revisited}}{177}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{3.4}{\csname a:TocLink\endcsname{23}{x23-1030003.4}{QQ2-23-131}{Programming in-place functions}}{179}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocchapter{4}{\csname a:TocLink\endcsname{24}{x24-1040004}{QQ2-24-132}{VIPS reference}}{183}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{4.1}{\csname a:TocLink\endcsname{25}{x25-1050004.1}{QQ2-25-133}{Introduction}}{183}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclot{4.1}{\csname a:TocLink\endcsname{25}{x25-1050011}{}{\ignorespaces Miscellaneous programs}}{table}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsection{4.2}{\csname a:TocLink\endcsname{26}{x26-1060004.2}{QQ2-26-135}{VIPS packages}}{189}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.1}{\csname a:TocLink\endcsname{26}{x26-1070004.2.1}{QQ2-26-136}{Arithmetic}}{189}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.1}{\csname a:TocLink\endcsname{26}{x26-1070011}{}{\ignorespaces Arithmetic functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.2}{\csname a:TocLink\endcsname{26}{x26-1080004.2.2}{QQ2-26-138}{Relational}}{192}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.2}{\csname a:TocLink\endcsname{26}{x26-1080012}{}{\ignorespaces Relational functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.3}{\csname a:TocLink\endcsname{26}{x26-1090004.2.3}{QQ2-26-140}{Boolean}}{195}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.3}{\csname a:TocLink\endcsname{26}{x26-1090013}{}{\ignorespaces Boolean functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.4}{\csname a:TocLink\endcsname{26}{x26-1100004.2.4}{QQ2-26-142}{Colour}}{198}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.4}{\csname a:TocLink\endcsname{26}{x26-1100014}{}{\ignorespaces VIPS colour space conversion}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.5}{\csname a:TocLink\endcsname{26}{x26-1100025}{}{\ignorespaces Colour functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.5}{\csname a:TocLink\endcsname{26}{x26-1110004.2.5}{QQ2-26-145}{Conversion}}{204}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.6}{\csname a:TocLink\endcsname{26}{x26-1110016}{}{\ignorespaces Conversion functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.7}{\csname a:TocLink\endcsname{26}{x26-1110027}{}{\ignorespaces Conversion functions (cont.)}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.6}{\csname a:TocLink\endcsname{26}{x26-1120004.2.6}{QQ2-26-148}{Matricies}}{210}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.8}{\csname a:TocLink\endcsname{26}{x26-1120018}{}{\ignorespaces Matrix functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.7}{\csname a:TocLink\endcsname{26}{x26-1130004.2.7}{QQ2-26-150}{Convolution}}{214}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.9}{\csname a:TocLink\endcsname{26}{x26-1130019}{}{\ignorespaces Convolution functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.8}{\csname a:TocLink\endcsname{26}{x26-1140004.2.8}{QQ2-26-152}{In-place operations}}{217}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.10}{\csname a:TocLink\endcsname{26}{x26-11400110}{}{\ignorespaces In-place operations}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.9}{\csname a:TocLink\endcsname{26}{x26-1150004.2.9}{QQ2-26-154}{Frequency filtering}}{220}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.11}{\csname a:TocLink\endcsname{26}{x26-11500111}{}{\ignorespaces Fourier functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.10}{\csname a:TocLink\endcsname{26}{x26-1160004.2.10}{QQ2-26-156}{Histograms and LUTs}}{223}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.12}{\csname a:TocLink\endcsname{26}{x26-11600112}{}{\ignorespaces Histogram/LUT functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.11}{\csname a:TocLink\endcsname{26}{x26-1170004.2.11}{QQ2-26-158}{Morphology}}{226}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.13}{\csname a:TocLink\endcsname{26}{x26-11700113}{}{\ignorespaces Morphological functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.12}{\csname a:TocLink\endcsname{26}{x26-1180004.2.12}{QQ2-26-160}{Mosaicing}}{229}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.14}{\csname a:TocLink\endcsname{26}{x26-11800114}{}{\ignorespaces Mosaic functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.13}{\csname a:TocLink\endcsname{26}{x26-1190004.2.13}{QQ2-26-162}{CImg functions}}{232}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.15}{\csname a:TocLink\endcsname{26}{x26-11900115}{}{\ignorespaces CImg functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.14}{\csname a:TocLink\endcsname{26}{x26-1200004.2.14}{QQ2-26-164}{Other}}{235}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.16}{\csname a:TocLink\endcsname{26}{x26-12000116}{}{\ignorespaces Other functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.15}{\csname a:TocLink\endcsname{26}{x26-1210004.2.15}{QQ2-26-166}{IO functions}}{238}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.17}{\csname a:TocLink\endcsname{26}{x26-12100117}{}{\ignorespaces IO functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.16}{\csname a:TocLink\endcsname{26}{x26-1220004.2.16}{QQ2-26-168}{Format functions}}{241}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.18}{\csname a:TocLink\endcsname{26}{x26-12200118}{}{\ignorespaces Format functions}}{figure}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\tocsubsection{4.2.17}{\csname a:TocLink\endcsname{26}{x26-1230004.2.17}{QQ2-26-170}{Resample functions}}{244}\relax 
doc/src/vipsmanual.4ct:\doTocEntry\toclof{4.19}{\csname a:TocLink\endcsname{26}{x26-12300119}{}{\ignorespaces Resample functions}}{figure}\relax 
doc/src/ipio.tex:\section{Programming in-place functions}
doc/src/ipio.tex:VIPS includes a little support for in-place functions --- functions
doc/src/ipio.tex:for in-place writing. For example, a function which cleared an image to
doc/src/ipio.tex:      return( -1 );
doc/src/ipio.tex:   memset( im->data, 0, 
doc/src/ipio.tex:      im->Ysize );
doc/src/vipsmanual/vipsmanualse8.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse8.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse8.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse8.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse8.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse8.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse8.html:href="vipsmanualse7.html#tailvipsmanualse7.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse8.html: id="x14-370002.2"></a>Core C API</h3>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 3--><p class="noindent" >VIPS is built on top of several other libraries, two of which,
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 6--><p class="indent" >  You can read up on glib at the GTK+ website:
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-51">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 10--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 12--><p class="indent" >  There&#8217;s also an excellent book by Matthias Warkus, <span 
doc/src/vipsmanual/vipsmanualse8.html:class="ptmri7t-">The</span>
doc/src/vipsmanual/vipsmanualse8.html:class="ptmri7t-">Official GNOME 2 Developer&#8217;s Guide</span>, which covers the
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 16--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-380002.2.1"></a>Startup</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 18--><p class="noindent" >Before calling any VIPS function, you need to start VIPS
doc/src/vipsmanual/vipsmanualse8.html:  <div class="verbatim" id="verbatim-52">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 22--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 24--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">argv0</span></span></span> argument is the value of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">argv[0]</span></span></span> your
doc/src/vipsmanual/vipsmanualse8.html:VIPS uses this with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_guess_prefix()</span></span></span> and
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_guess_libdir()</span></span></span> to try to find various VIPS data
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 29--><p class="indent" >  If you don&#8217;t call this function, VIPS will call it for you
doc/src/vipsmanual/vipsmanualse8.html:to get the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">argv0</span></span></span> value for you, so it may not be able to find
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 33--><p class="indent" >  VIPS also offers the optional:
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-53">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 37--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 39--><p class="indent" >  You can use this with GOption to parse your program&#8217;s
doc/src/vipsmanual/vipsmanualse8.html:command-line arguments. It adds several useful VIPS flags,
doc/src/vipsmanual/vipsmanualse8.html:including <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">--vips-concurrency</span></span></span>.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 42--><p class="indent" >    Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-380012">2.2<!--tex4ht:ref: fg:hello --></a> shows both these functions in use. Again, the
doc/src/vipsmanual/vipsmanualse8.html:to your program. You do need the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_init_world()</span></span></span>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 47--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse8.html: id="x14-380012"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse8.html:<div class="verbatim" id="verbatim-54">
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;context&#x00A0;=&#x00A0;g_option_context_new(&#x00A0;"-&#x00A0;my&#x00A0;program"&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;fprintf(&#x00A0;stderr,&#x00A0;"%s\n",&#x00A0;error-&#x003E;message&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;error_exit(&#x00A0;"try&#x00A0;\"%s&#x00A0;--help\"",&#x00A0;g_get_prgname()&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 86--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:class="content">Hello World for VIPS</span></div><!--tex4ht:label?: x14-380012 -->
doc/src/vipsmanual/vipsmanualse8.html: id="x14-390002.2.2"></a>Image descriptors</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 93--><p class="noindent" >The base level of the VIPS I/O system provides <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span>
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-390013">2.3<!--tex4ht:ref: fg:image --></a> shows the definition of the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 101--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse8.html: id="x14-390013"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse8.html:<div class="verbatim" id="verbatim-55">
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;int&#x00A0;kill;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Set&#x00A0;to&#x00A0;non-zero&#x00A0;to&#x00A0;block&#x00A0;eval&#x00A0;&#x22C6;/
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 129--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">IMAGE </span>descriptor</span></div><!--tex4ht:label?: x14-390013 -->
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 134--><p class="indent" >  The first set of fields simply come from the image file
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="vipsmanualse2.html#x7-80001.2.1">1.2.1<!--tex4ht:ref: sec:header --></a> for a full description of all the fields. The
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">filename</span></span></span> is the name of the file that this image came
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">time</span></span></span> points to a set of timing statistics which can
doc/src/vipsmanual/vipsmanualse8.html:be used by user-interfaces built on VIPS to provide
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-450002.2.8">2.2.8<!--tex4ht:ref: sec:eval --></a>.
doc/src/vipsmanual/vipsmanualse8.html:Finally, if you set <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">kill</span></span></span> to non-zero, VIPS will block any
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-570002.2.12">2.2.12<!--tex4ht:ref: sec:block --></a>.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 144--><p class="indent" >  The remaining fields are private and are used by VIPS for
doc/src/vipsmanual/vipsmanualse8.html: id="x14-400002.2.3"></a>Header fields</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 149--><p class="noindent" >You can access header fields either directly (as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im-&#x003E;Xsize</span></span></span>,
doc/src/vipsmanual/vipsmanualse8.html:for example) or programmatically with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_header_int()</span></span></span>
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-56">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 157--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 159--><p class="indent" >  There&#8217;s also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_header_map()</span></span></span> to loop over header
doc/src/vipsmanual/vipsmanualse8.html:fields, and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_header_get_type</span></span></span> to test the type of
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-430002.2.6">2.2.6<!--tex4ht:ref: sec:meta --></a>.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 163--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-410002.2.4"></a>Opening and closing</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 166--><p class="noindent" >Descriptors are created with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span>. You can also
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="vipsmanualse11.html#x17-740002.5">2.5<!--tex4ht:ref: sec:format --></a>. The two
doc/src/vipsmanual/vipsmanualse8.html:APIs are complimentary, though <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> is more
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 170--><p class="indent" >    At the command-line, try:
doc/src/vipsmanual/vipsmanualse8.html:  <div class="verbatim" id="verbatim-57">
doc/src/vipsmanual/vipsmanualse8.html:$&#x00A0;vips&#x00A0;--list&#x00A0;classes
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 174--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 176--><p class="indent" >  /noindent to see a list of all the supported file formats.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 179--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> takes a file name and a string representing
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-58">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 185--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 187--><p class="indent" >  The possible values for mode are:
doc/src/vipsmanual/vipsmanualse8.html:class="pcrb7t-">"r"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse8.html:class="description">The   file   is   opened   read-only.   If   you   open
doc/src/vipsmanual/vipsmanualse8.html:        a  non-VIPS  image,  or  a  VIPS  image  written
doc/src/vipsmanual/vipsmanualse8.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> will   automatically   convert   it   to
doc/src/vipsmanual/vipsmanualse8.html:        <!--l. 198--><p class="noindent" >VIPS can read images in many file formats. You
doc/src/vipsmanual/vipsmanualse8.html:    <div class="verbatim" id="verbatim-59">
doc/src/vipsmanual/vipsmanualse8.html:    <!--l. 204--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:    <!--l. 206--><p class="noindent" >will read page 2 of a multi-page TIFF. See the man
doc/src/vipsmanual/vipsmanualse8.html:class="pcrb7t-">"w"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse8.html:class="description">An <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span> descriptor is created which, when written
doc/src/vipsmanual/vipsmanualse8.html:    <!--l. 214--><p class="noindent" >VIPS looks at the filename suffix to determine the
doc/src/vipsmanual/vipsmanualse8.html:    ends in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">".v"</span></span></span>, the image is written in VIPS native
doc/src/vipsmanual/vipsmanualse8.html:    <!--l. 218--><p class="noindent" >If you want to control the details of the conversion to
doc/src/vipsmanual/vipsmanualse8.html:                                                     <div class="verbatim" id="verbatim-60">
doc/src/vipsmanual/vipsmanualse8.html:   <!--l. 225--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:   <!--l. 227--><p class="noindent" >writes to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">fred</span></span></span> will write a JPEG with Q 95. Again,
doc/src/vipsmanual/vipsmanualse8.html:class="pcrb7t-">"t"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse8.html:class="description">As the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> mode, but pels written to the descriptor
doc/src/vipsmanual/vipsmanualse8.html:class="pcrb7t-">"p"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-520002.2.12">2.2.12<!--tex4ht:ref: sec:joinup --></a>.
doc/src/vipsmanual/vipsmanualse8.html:class="pcrb7t-">"rw"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse8.html:class="description">As the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"r"</span></span></span> mode, but the image is mapped into the
doc/src/vipsmanual/vipsmanualse8.html:        caller&#8217;s address space read-write. This mode is only
doc/src/vipsmanual/vipsmanualse8.html:        provided for the use of paintbox-style applications
doc/src/vipsmanual/vipsmanualse8.html:        programs should use the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> mode for image
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 247--><p class="indent" >    If an error occurs opening the image, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> calls
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span> with a string describing the cause of the
doc/src/vipsmanual/vipsmanualse8.html:error and returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">NULL</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span> has type
doc/src/vipsmanual/vipsmanualse8.html:  <div class="verbatim" id="verbatim-61">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 254--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 256--><p class="noindent" >The first argument is a string giving the name of the thing
doc/src/vipsmanual/vipsmanualse8.html:that raised the error (just <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"im_open"</span></span></span>, for example).
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">printf()</span></span></span>. It formats the message and appends the string
doc/src/vipsmanual/vipsmanualse8.html:text with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_error_buffer()</span></span></span>.
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-62">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 265--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 267--><p class="noindent" >Applications may display this string to give users feedback
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">error_exit()</span></span></span>, prints <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_error_buffer()</span></span></span> to
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">stderr</span></span></span> and terminates the program with an error code of
doc/src/vipsmanual/vipsmanualse8.html:  <div class="verbatim" id="verbatim-63">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 276--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 278--><p class="noindent" >There are other functions for handling errors: see the man
doc/src/vipsmanual/vipsmanualse8.html:page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span>.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 282--><p class="indent" >  Descriptors are closed with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_close()</span></span></span>. It has
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-64">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 286--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 288--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_close()</span></span></span> returns 0 on success and non-zero on
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 290--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-420002.2.5"></a>Examples</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 293--><p class="noindent" >As an example, Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:widthheight --></a> will print the width and height
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 297--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse8.html: id="x14-420014"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse8.html:<div class="verbatim" id="verbatim-65">
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;printf(&#x00A0;"width&#x00A0;=&#x00A0;%d,&#x00A0;height&#x00A0;=&#x00A0;%d\n",&#x00A0;im-&#x003E;Xsize,&#x00A0;im-&#x003E;Ysize&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 329--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:class="content">Print width and height of an image</span></div><!--tex4ht:label?: x14-420014 -->
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 334--><p class="indent" >  To compile this example, use:
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-66">
doc/src/vipsmanual/vipsmanualse8.html:  cc&#x00A0;&#8216;pkg-config&#x00A0;vips-7.14&#x00A0;\
doc/src/vipsmanual/vipsmanualse8.html: &#x00A0;<br />&#x00A0;&#x00A0;--cflags&#x00A0;--libs&#8216;&#x00A0;myfunc.c 
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 339--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 341--><p class="indent" >  As a slightly more complicated example, Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:negative --></a>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 345--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse8.html: id="x14-420025"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse8.html:<div class="verbatim" id="verbatim-67">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 374--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:class="content">Find photographic negative</span></div><!--tex4ht:label?: x14-420025 -->
doc/src/vipsmanual/vipsmanualse8.html: id="x14-430002.2.6"></a>Metadata</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 382--><p class="noindent" >VIPS lets you attach arbitrary metadata to an IMAGE. For
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="vipsmanualse2.html#x7-80001.2.1">1.2.1<!--tex4ht:ref: sec:header --></a>).
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 388--><p class="indent" >  A piece of metadata is a value and an identifying name. A
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-68">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 397--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 399--><p class="indent" >  So you can do:
doc/src/vipsmanual/vipsmanualse8.html:  <div class="verbatim" id="verbatim-69">
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 404--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 406--><p class="noindent" >to create an int called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"poop"</span></span></span>, then at some later point
doc/src/vipsmanual/vipsmanualse8.html:from <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im</span></span></span>, you can use:
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-70">
doc/src/vipsmanual/vipsmanualse8.html: &#x00A0;<br />&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;); 
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 415--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 417--><p class="noindent" >And get the value 42 back.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 420--><p class="indent" >    You can use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_meta_set()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_meta_get()</span></span></span>
doc/src/vipsmanual/vipsmanualse8.html:to attach arbitrary <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">GValue</span></span></span> to images. See the man page for
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_meta_set()</span></span></span> for full details.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 424--><p class="indent" >    You can test for a field being present with
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_meta_get_type()</span></span></span> (you&#8217;ll get <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">G_TYPE_INT</span></span></span> back
doc/src/vipsmanual/vipsmanualse8.html:for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"poop"</span></span></span>, for example, or 0 if it is not defined for this
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 428--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-440002.2.7"></a>History</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 431--><p class="noindent" >VIPS tracks the history of an image, that is, the sequence of
doc/src/vipsmanual/vipsmanualse8.html:can view a VIPS image&#8217;s history with the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">header</span></span></span>
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">nip2</span>&#8217;s <span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">View Header </span>menu.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 437--><p class="indent" >    The call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_updatehist()</span></span></span> in Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:negative --></a> adds a
doc/src/vipsmanual/vipsmanualse8.html:was run. You may also find <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_histlin()</span></span></span> helpful. It has
doc/src/vipsmanual/vipsmanualse8.html:  <div class="verbatim" id="verbatim-71">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 445--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 447--><p class="noindent" >It formats its arguments as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">printf()</span></span></span> and appends the
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 451--><p class="indent" >  You read an image&#8217;s history with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_history_get()</span></span></span>.
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-72">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 457--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 459--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-450002.2.8"></a>Eval callbacks</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 462--><p class="noindent" >VIPS lets you attach callbacks to image descriptors. These
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="vipsmanualse15.html#x22-980003.3.6">3.3.6<!--tex4ht:ref: sec:callback --></a> for more detail.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 466--><p class="indent" >    Eval callbacks are called repeatedly during evaluation
doc/src/vipsmanual/vipsmanualse8.html:and can be used by user-interface programs to give feedback
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 469--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-460002.2.9"></a>Detailed rules for descriptors</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 471--><p class="noindent" >These rules are intended to answer awkward questions.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 473--><p class="indent" >
doc/src/vipsmanual/vipsmanualse8.html:  class="enumerate" id="x14-46002x1">You can output to a descriptor only once.
doc/src/vipsmanual/vipsmanualse8.html:  class="enumerate" id="x14-46004x2">You can use a descriptor as an input many times.
doc/src/vipsmanual/vipsmanualse8.html:  class="enumerate" id="x14-46006x3">You can only output to a descriptor that was opened
doc/src/vipsmanual/vipsmanualse8.html:        with modes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span>.
doc/src/vipsmanual/vipsmanualse8.html:  class="enumerate" id="x14-46008x4">You  can  only  use  a  descriptor  as  input  if  it  was
doc/src/vipsmanual/vipsmanualse8.html:        opened with modes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"r"</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"rw"</span></span></span>.
doc/src/vipsmanual/vipsmanualse8.html:  class="enumerate" id="x14-46010x5">If  you  have  output  to  a  descriptor,  you  may
doc/src/vipsmanual/vipsmanualse8.html:        subsequently use it as an input. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> descriptors are
doc/src/vipsmanual/vipsmanualse8.html:        automatically changed to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"r"</span></span></span> descriptors.
doc/src/vipsmanual/vipsmanualse8.html:        <!--l. 494--><p class="noindent" >If  the  function  you  are  passing  the  descriptor  to
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-580002.2.12">2.2.12<!--tex4ht:ref: sec:limit --></a>),  then  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptors
doc/src/vipsmanual/vipsmanualse8.html:        become <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span>. If the function you are passing the
doc/src/vipsmanual/vipsmanualse8.html:        descriptor  to  uses  PIO,  then  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptors  are
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 501--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-470002.2.10"></a>Automatic resource deallocation</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 503--><p class="noindent" >VIPS lets you allocate resources local to an image descriptor,
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 507--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-480002.2.10"></a>Local image descriptors</h5>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 509--><p class="noindent" >VIPS provides a function which will open a new image
doc/src/vipsmanual/vipsmanualse8.html:local to an existing image. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_open_local()</span></span></span> has
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-73">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 516--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 518--><p class="indent" >  It behaves exactly as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span>, except that you do
doc/src/vipsmanual/vipsmanualse8.html:closed automatically when its parent descriptor <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im</span></span></span> is
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 523--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse8.html: id="x14-480016"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse8.html:<div class="verbatim" id="verbatim-74">
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;sum1(&#x00A0;t,&#x00A0;in&#x00A0;+&#x00A0;1,&#x00A0;nin&#x00A0;-&#x00A0;1,&#x00A0;out&#x00A0;)&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;sum1(&#x00A0;in[0],&#x00A0;in&#x00A0;+&#x00A0;1,&#x00A0;nin&#x00A0;-&#x00A0;1,&#x00A0;out&#x00A0;)&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 560--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:class="content">Sum an array of images</span></div><!--tex4ht:label?: x14-480016 -->
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 565--><p class="indent" >  Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-480016">2.6<!--tex4ht:ref: fg:addemup --></a> is a function which will sum an array of
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">out</span></span></span>. VIPS lets local images themselves have local images
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 571--><p class="indent" >  It is very important that these intermediate images are
doc/src/vipsmanual/vipsmanualse8.html:made local to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> rather than <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">in</span></span></span>, for reasons which should
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 575--><p class="indent" >  There&#8217;s also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_open_local_array()</span></span></span> for when
doc/src/vipsmanual/vipsmanualse8.html: id="x14-490002.2.10"></a>Local memory allocation</h5>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 581--><p class="noindent" >VIPS includes a set of functions for memory allocation
doc/src/vipsmanual/vipsmanualse8.html:function is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_malloc()</span></span></span>. It has type:
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-75">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 587--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 589--><p class="indent" >  It operates exactly as the standard <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">malloc()</span></span></span> C library
doc/src/vipsmanual/vipsmanualse8.html:to an image. If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_malloc()</span></span></span> is unable to allocate
doc/src/vipsmanual/vipsmanualse8.html:memory, it returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">NULL</span></span></span>. If you pass <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">NULL</span></span></span> instead of a
doc/src/vipsmanual/vipsmanualse8.html:valid image descriptor, then <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_malloc()</span></span></span> allocates
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 596--><p class="indent" >    To free memory explicitly, use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_free()</span></span></span>:
doc/src/vipsmanual/vipsmanualse8.html:  <div class="verbatim" id="verbatim-76">
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 600--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 602--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_free()</span></span></span> always returns 0, so you can use it as an
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 606--><p class="indent" >  Three macros make memory allocation even easier.
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">IM_NEW()</span></span></span> allocates a new object. You give it a descriptor
doc/src/vipsmanual/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-77">
doc/src/vipsmanual/vipsmanualse8.html:  type-name&#x00A0;&#x22C6;IM_NEW(&#x00A0;IMAGE&#x00A0;&#x22C6;,&#x00A0;type-name&#x00A0;) 
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 612--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 614--><p class="indent" >  The second macro, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">IM_ARRAY()</span></span></span>, is very similar, but
doc/src/vipsmanual/vipsmanualse8.html:usual <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">calloc()</span></span></span> C library function, it does not initialise
doc/src/vipsmanual/vipsmanualse8.html:  <div class="verbatim" id="verbatim-78">
doc/src/vipsmanual/vipsmanualse8.html:type-name&#x00A0;&#x22C6;IM_ARRAY(&#x00A0;IMAGE&#x00A0;&#x22C6;,&#x00A0;int,&#x00A0;type-name&#x00A0;)
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 620--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 622--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">IM_NUMBER()</span></span></span> returns the number of elements
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse8.html:href="vipsmanualse9.html#x15-600002.3.1">2.3.1<!--tex4ht:ref: sec:number --></a>.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 626--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-500002.2.10"></a>Other local operations</h5>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 628--><p class="noindent" >The above facilities are implemented with the VIPS core
doc/src/vipsmanual/vipsmanualse8.html:function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_add_close_callback()</span></span></span>. You can use
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 633--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-510002.2.11"></a>Error handling</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 635--><p class="noindent" >All VIPS operations return 0 on success and non-zero on
doc/src/vipsmanual/vipsmanualse8.html:error, setting <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span>. As a consequence, when a
doc/src/vipsmanual/vipsmanualse8.html:must call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span> to let your caller know what the
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 642--><p class="indent" >  VIPS provides two more functions for error message
doc/src/vipsmanual/vipsmanualse8.html:handling: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_warn()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_diag()</span></span></span>. These are
doc/src/vipsmanual/vipsmanualse8.html:arguments to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">stderr</span></span></span>, optionally suppressed by the setting
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 650--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-520002.2.12"></a>Joining operations together</h4>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 653--><p class="noindent" >VIPS lets you join image processing operations together so
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-520017">2.7<!--tex4ht:ref: fg:join --></a> shows the
doc/src/vipsmanual/vipsmanualse8.html:definition of the function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span> from the VIPS
doc/src/vipsmanual/vipsmanualse8.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanual/vipsmanualse8.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanual/vipsmanualse8.html:class="cmmi-10">L</span><span 
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse8.html:class="cmmi-10">a</span><span 
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse8.html:class="cmmi-10">b</span><span 
doc/src/vipsmanual/vipsmanualse8.html:class="cmsy-7">*</span>
doc/src/vipsmanual/vipsmanualse8.html: by the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_col_display</span></span></span> structure, see the man page for
doc/src/vipsmanual/vipsmanualse8.html: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_col_XYZ2rgb()</span></span></span>.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 661--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse8.html: id="x14-520017"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse8.html:<div class="verbatim" id="verbatim-79">
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 674--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:class="content">Two image-processing operations joined together</span></div><!--tex4ht:label?: x14-520017 -->
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 679--><p class="indent" >  The special <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> mode (for partial) used to open
doc/src/vipsmanual/vipsmanualse8.html:When you use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span>, the two operations
doc/src/vipsmanual/vipsmanualse8.html:is necessary for the intermediate image (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">t1</span></span></span> in this
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 686--><p class="indent" >  As an added bonus, if you have more than one CPU in
doc/src/vipsmanual/vipsmanualse8.html:parallelization with the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">IM_CONCURRENCY</span></span></span> environment
doc/src/vipsmanual/vipsmanualse8.html:variable, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_concurrency_set()</span></span></span>, and with the
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">--vips-concurrency</span></span></span> command-line switch. See the
doc/src/vipsmanual/vipsmanualse8.html:man page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_generate()</span></span></span>.
doc/src/vipsmanual/vipsmanualse8.html: id="x14-530002.2.12"></a>How it works</h5>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 694--><p class="noindent" >When a VIPS function is asked to output to a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> image
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 700--><p class="indent" >  When a VIPS function is asked to output to a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> or a
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> descriptor (a real disc file or a real memory buffer), it
doc/src/vipsmanual/vipsmanualse8.html:evaluation of any earlier <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> images.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 705--><p class="indent" >  In the example in Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-520017">2.7<!--tex4ht:ref: fg:join --></a>, whether or not any pixels
doc/src/vipsmanual/vipsmanualse8.html:are really processed when <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span> is called
doc/src/vipsmanual/vipsmanualse8.html:depends upon the mode in which <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> was opened.
doc/src/vipsmanual/vipsmanualse8.html:If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> is also a partial image, then no pixels will be
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">out</span></span></span>.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 711--><p class="indent" >  Conversely, if <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> is a real image (that is, either <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> or
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span>), then the final VIPS operation in the function
doc/src/vipsmanual/vipsmanualse8.html:(<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_XYZ2disp()</span></span></span>) will output the entire image to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">out</span></span></span>,
doc/src/vipsmanual/vipsmanualse8.html:causing the earlier parts of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span> (and indeed
doc/src/vipsmanual/vipsmanualse8.html:possibly some earlier pieces of program, if <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">in</span></span></span> was also a
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> image) to run.
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 717--><p class="indent" >  When a VIPS pipeline does finally evaluate, all of the
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 722--><p class="indent" >    Since VIPS partial I/O is demand-driven rather than
doc/src/vipsmanual/vipsmanualse8.html:  data-driven this works even if some of the operations
doc/src/vipsmanual/vipsmanualse8.html:  include a call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_affine()</span></span></span>, which performs arbitrary
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 727--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-540002.2.12"></a>Pitfalls with partials</h5>
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 729--><p class="noindent" >To go with all of the benefits that partial image I/O brings,
doc/src/vipsmanual/vipsmanualse8.html:  almost certain core-dump.
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 736--><p class="indent" >    You can prevent this from happening with careful use of
doc/src/vipsmanual/vipsmanualse8.html:  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_open_local()</span></span></span>. If you always open local to your
doc/src/vipsmanual/vipsmanualse8.html:  with non-image arguments. VIPS functions which take
doc/src/vipsmanual/vipsmanualse8.html:  extra non-image arguments (a matrix, perhaps) are
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 744--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-550002.2.12"></a>Non-image output</h5>
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 746--><p class="noindent" >Some VIPS functions consume images, but make no image
doc/src/vipsmanual/vipsmanualse8.html:  output. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_stats()</span></span></span> for example, scans an image
doc/src/vipsmanual/vipsmanualse8.html:  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_stats()</span></span></span>, it behaves as a data sink, sucking image
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 751--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-560002.2.12"></a>Calculating twice</h5>
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 753--><p class="noindent" >In some circumstances, the same image data can be
doc/src/vipsmanual/vipsmanualse8.html:href="#x14-560018">2.8<!--tex4ht:ref: fg:thrmean --></a> is a function which finds the
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 759--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse8.html: id="x14-560018"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse8.html:<div class="verbatim" id="verbatim-80">
doc/src/vipsmanual/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 771--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse8.html:class="content">Threshold an image at the mean value</span></div><!--tex4ht:label?: x14-560018 -->
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 776--><p class="indent" >  This seems straightforward &#8212; but consider if image <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">in</span></span></span>
doc/src/vipsmanual/vipsmanualse8.html:were a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span>, and represented the output of a large pipeline
doc/src/vipsmanual/vipsmanualse8.html:of operations. The call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_avg()</span></span></span> would force the
doc/src/vipsmanual/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_moreconst()</span></span></span> will cause the pipeline to be evaluated
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 782--><p class="indent" >  When designing a program, it is sensible to pay attention
doc/src/vipsmanual/vipsmanualse8.html:a file before calling <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_avg()</span></span></span>, find the average of the disc
doc/src/vipsmanual/vipsmanualse8.html:file, and then run <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_moreconst()</span></span></span> from that. There&#8217;s
doc/src/vipsmanual/vipsmanualse8.html:also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_cache()</span></span></span> which can keep recent parts of a very
doc/src/vipsmanual/vipsmanualse8.html: id="x14-570002.2.12"></a>Blocking computation</h5>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 791--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span> descriptors have a flag called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">kill</span></span></span> which can be
doc/src/vipsmanual/vipsmanualse8.html:used to block computation. If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im-&#x003E;kill</span></span></span> is set to a
doc/src/vipsmanual/vipsmanualse8.html:non-zero value, then any VIPS pipelines which use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im</span></span></span> as
doc/src/vipsmanual/vipsmanualse8.html:is useful for user-interface writers &#8212; suppose your
doc/src/vipsmanual/vipsmanualse8.html:the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">kill</span></span></span> flag in all of the deleted image&#8217;s immediate
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 800--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse8.html: id="x14-580002.2.12"></a>Limitations</h5>
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 803--><p class="noindent" >Not all VIPS operations are partial-aware. These non-partial
doc/src/vipsmanual/vipsmanualse8.html:operations use a pre-VIPS 7.0 I/O scheme in which the
doc/src/vipsmanual/vipsmanualse8.html:output until it has seen all of the input. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">im_fwfft()</span></span></span> is
doc/src/vipsmanual/vipsmanualse8.html:simply not got around to rewriting the old non-partial
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 811--><p class="indent" >  You can mix partial and non-partial VIPS operations
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 816--><p class="indent" >
doc/src/vipsmanual/vipsmanualse8.html:  class="enumerate" id="x14-58002x1">When a non-partial operation is asked to output to
doc/src/vipsmanual/vipsmanualse8.html:          a  partial  image  descriptor,  the  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptor  is
doc/src/vipsmanual/vipsmanualse8.html:          magically transformed into a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> descriptor.
doc/src/vipsmanual/vipsmanualse8.html:  class="enumerate" id="x14-58004x2">When a non-partial operation is asked to read from
doc/src/vipsmanual/vipsmanualse8.html:          a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptor, the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptor is turned into
doc/src/vipsmanual/vipsmanualse8.html:          a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> type, and any earlier stages in the pipeline
doc/src/vipsmanual/vipsmanualse8.html:          <!--l. 828--><p class="noindent" >The non-partial operation then processes from the
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 832--><p class="indent" >    These rules have the consequence that you may only
doc/src/vipsmanual/vipsmanualse8.html:  If you use any non-partial operations, then parts of your
doc/src/vipsmanual/vipsmanualse8.html:  pipelines will fall back to old whole-image I/O and you will
doc/src/vipsmanual/vipsmanualse8.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse8.html:href="vipsmanualse7.html#tailvipsmanualse7.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse8.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse13.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse13.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse13.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse13.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse13.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse13.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse13.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse13.html: id="x20-850003.1"></a>Introduction</h3>
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:oper"></a>
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 4--><p class="indent" >  This chapter explains how to write image processing
doc/src/vipsmanual/vipsmanualse13.html:operations using the VIPS image I/O (input-output) system.
doc/src/vipsmanual/vipsmanualse13.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse13.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>.
doc/src/vipsmanual/vipsmanualse13.html:information on any particular function, use the on-line
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 10--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse13.html: id="x20-860003.1.1"></a>Why use VIPS?</h4>
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 12--><p class="noindent" >If you use the VIPS image I/O system, you get a number of
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">Threading</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:    an approximately linear speed-up as you add more
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">Pipelining</span>  </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">Composition</span>  </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:          easy-to-understand pieces. VIPS already has a lot
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">Large files</span>  </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:          plain 32-bit machine. VIPS operations only see 32
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">Abstraction</span>  </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">Interfaces</span>  </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:class="pcrr7t-">nip2</span>), a UNIX command-line interface (<span 
doc/src/vipsmanual/vipsmanualse13.html:class="pcrr7t-">vips</span>)
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">Portability</span>  </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 59--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse13.html: id="x20-870003.1.2"></a>I/O styles</h4>
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 61--><p class="noindent" >The I/O system supports three styles of input-output.
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">Whole-image I/O (WIO)</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:    left-over  from  VIPS  6.x.  WIO  image-processing
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">Partial-image I/O (PIO)</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:class="ptmb7t-">In-place</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse13.html:    is  used  by  the  VIPS  in-place  operations,  such
doc/src/vipsmanual/vipsmanualse13.html:    as  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse13.html:class="pcrr7t-">im_fastline()</span></span></span>.  You  should  only  use  it
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 85--><p class="indent" >  WIO operations are easy to program, but slow and
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 89--><p class="indent" >  If you can face it, and if your algorithm can be expressed
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 93--><p class="indent" >  If your image processing operation performs no
doc/src/vipsmanual/vipsmanualse13.html:can use the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse13.html:class="pcrr7t-">im_wrapone()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse13.html:class="pcrr7t-">im_wrapmany()</span></span></span>
doc/src/vipsmanual/vipsmanualse13.html:operations. These take a simple buffer-processing operation
doc/src/vipsmanual/vipsmanualse13.html:supplied by you and wrap it up as a full-blown PIO
doc/src/vipsmanual/vipsmanualse13.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse13.html:href="vipsmanualse15.html#x22-930003.3.1">3.3.1<!--tex4ht:ref: sec:wrapone --></a>.
doc/src/vipsmanual/vipsmanualse13.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse13.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse7.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse7.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse7.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse7.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse7.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse7.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse7.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse7.html: id="x13-360002.1"></a>Introduction</h3>
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:appl"></a>
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 4--><p class="indent" >  This chapter explains how to call VIPS functions from C
doc/src/vipsmanual/vipsmanualse7.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse7.html:href="vipsmanualse13.html#x20-850003.1">3.1<!--tex4ht:ref: sec:oper --></a>), only how to call the ones
doc/src/vipsmanual/vipsmanualse7.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse7.html:href="vipsmanualse1.html#x6-50001.1">1.1<!--tex4ht:ref: sec:cpp --></a>.
doc/src/vipsmanual/vipsmanualse7.html: <!--l. 10--><p class="indent" >    See <span 
doc/src/vipsmanual/vipsmanualse7.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse7.html:href="vipsmanualse17.html#x25-1050004.1">4.1<!--tex4ht:ref: sec:ref --></a> for an introduction to the image processing
doc/src/vipsmanual/vipsmanualse7.html:href="#x13-360011">2.1<!--tex4ht:ref: fg:architecture --></a> tries to show
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 15--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse7.html: id="x13-360011"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 15--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 15--><p class="noindent" ><img 
doc/src/vipsmanual/vipsmanualse7.html:class="content">VIPS software architecture</span></div><!--tex4ht:label?: x13-360011 -->
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 20--><p class="indent" >  VIPS includes a set of UNIX manual pages. Enter (for
doc/src/vipsmanual/vipsmanualse7.html:                                                 <div class="verbatim" id="verbatim-49">
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 24--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 26--><p class="noindent" >to get an explanation of the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse7.html:class="pcrr7t-">im_extract()</span></span></span> function.
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 29--><p class="indent" >    All the command-line VIPS operations will print help
doc/src/vipsmanual/vipsmanualse7.html:  <div class="verbatim" id="verbatim-50">
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 51--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse7.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse7.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualli3.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualli3.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualli3.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualli3.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualli3.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualli3.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualli3.html:  <!--l. 53--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualli3.html:href="vipsmanualli2.html#tailvipsmanualli2.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualli3.html: id="x4-3000"></a>List of Tables</h2>
doc/src/vipsmanual/vipsmanualli3.html:href="vipsmanualse2.html#x7-80011">VIPS header</a></span><br /><span class="lotToc" >1.2&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli3.html:href="vipsmanualse2.html#x7-80022">Possible values for <span 
doc/src/vipsmanual/vipsmanualli3.html:class="pcrr7t-">BandFmt</span></a></span><br /><span class="lotToc" >1.3&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli3.html:href="vipsmanualse2.html#x7-80033">Possible values for <span 
doc/src/vipsmanual/vipsmanualli3.html:class="pcrr7t-">Coding</span></a></span><br /><span class="lotToc" >1.4&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli3.html:href="vipsmanualse2.html#x7-80044">Possible
doc/src/vipsmanual/vipsmanualli3.html:class="pcrr7t-">Type</span></a></span><br /><span class="lotToc" >2.1&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli3.html:href="vipsmanualse9.html#x15-600011">Argument type macros</a></span><br /><span class="lotToc" >4.1&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli3.html:href="vipsmanualse17.html#x25-1050011">Miscellaneous programs</a></span><br />
doc/src/vipsmanual/vipsmanualli3.html:  <!--l. 61--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualli3.html:href="vipsmanualli2.html#tailvipsmanualli2.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualli3.html:<!--l. 61--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse17.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse17.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse17.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse17.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse17.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse17.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse17.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse17.html: id="x25-1050004.1"></a>Introduction</h3>
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:ref"></a>
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 4--><p class="indent" >  /bf VIPS reference documentation is in the process of
doc/src/vipsmanual/vipsmanualse17.html:switching to gtkdoc. Half-done manuals are distributed
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 9--><p class="indent" >  In the meantime, this old and slightly outdated chapter
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 13--><p class="indent" >  This chapter introduces the functions available in the
doc/src/vipsmanual/vipsmanualse17.html:particular functions, refer to the UNIX on-line manual
doc/src/vipsmanual/vipsmanualse17.html:                                                 <div class="verbatim" id="verbatim-173">
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 19--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 21--><p class="indent" >  for information on the function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">im_abs()</span></span></span>.
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 23--><p class="indent" >    All the comand-line vips operations will print help text
doc/src/vipsmanual/vipsmanualse17.html:  <div class="verbatim" id="verbatim-174">
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 45--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 47--><p class="indent" >  Once you have found a function you need to use, you can
doc/src/vipsmanual/vipsmanualse17.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse17.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>), you can call it from C++
doc/src/vipsmanual/vipsmanualse17.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse17.html:href="vipsmanualse1.html#x6-50001.1">1.1<!--tex4ht:ref: sec:cpp --></a>), you can call it from the <span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">nip2 </span>((see the
doc/src/vipsmanual/vipsmanualse17.html:class="ptmri7t-">nip Manual</span>), or SIAM graphical user-interfaces, or you can
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">vips</span>
doc/src/vipsmanual/vipsmanualse17.html:                                                 <div class="verbatim" id="verbatim-175">
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 60--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 62--><p class="indent" >  VIPS may have been set up at your site with a set of links
doc/src/vipsmanual/vipsmanualse17.html:  <div class="verbatim" id="verbatim-176">
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 70--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 72--><p class="indent" >  There are a few VIPS programs which you cannot run
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">vips</span>, either because their arguments are a very
doc/src/vipsmanual/vipsmanualse17.html:strange, or because they are complete mini-applications
doc/src/vipsmanual/vipsmanualse17.html:(like <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">vips2dj</span></span></span>). These programs are listed in table&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse17.html:href="#x25-1050011">4.1<!--tex4ht:ref: tb:nondb --></a>, see
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 78--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse17.html: id="x25-1050011"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse17.html:class="centerline"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-6" class="tabular" 
doc/src/vipsmanual/vipsmanualse17.html:><colgroup id="TBL-6-1g"><col 
doc/src/vipsmanual/vipsmanualse17.html:id="TBL-6-1"></colgroup><colgroup id="TBL-6-2g"><col 
doc/src/vipsmanual/vipsmanualse17.html:id="TBL-6-2"></colgroup><tr 
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-1-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="td11">Name                                   </td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-1-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-2-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">binfile            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-2-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-3-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">debugim            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-3-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-4-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">edvips             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-4-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-5-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">header             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-5-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-6-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">printlines </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-6-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-7-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">vips               </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-7-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-8-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">vips-7.14          </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-8-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-9-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">find</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_mosaic        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-9-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-10-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">mergeup            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-10-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-11-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">cooc</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_features      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-11-2"  
doc/src/vipsmanual/vipsmanualse17.html:class="td11">Calculate features of a co-occurence matrix                </td></tr><tr  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-12-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">cooc </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-12-2"  
doc/src/vipsmanual/vipsmanualse17.html:class="td11">Calculate a co-occurence matrix</td>
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-13-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">glds</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_features      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-13-2"  
doc/src/vipsmanual/vipsmanualse17.html:class="td11">Calculate features of a grey-level distribution matrix  </td>
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-14-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">glds               </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-14-2"  
doc/src/vipsmanual/vipsmanualse17.html:class="td11">Calculate a grey-level distribution matrix                    </td>
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-15-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">simcontr           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-15-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-16-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">sines              </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-16-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-17-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">spatres            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-17-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-18-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">squares            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-18-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-19-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-19-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">batch</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_crop         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-19-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-20-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-20-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">batch</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_image</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_convert</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-20-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-21-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-21-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">batch</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_rubber</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_sheet </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-21-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-22-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-22-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">light</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_correct      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-22-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-23-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-23-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">mitsub             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-23-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-24-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-24-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">shrink</span><span 
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">_width       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-24-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-25-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-25-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">vdump              </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-25-2"  
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-26-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-26-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="pcrr7t-">vips2dj            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-26-2"  
doc/src/vipsmanual/vipsmanualse17.html:class="td11">VIPS to high-quality colour Postscript                        </td>
doc/src/vipsmanual/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-27-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-27-1"  
doc/src/vipsmanual/vipsmanualse17.html:class="content">Miscellaneous programs</span></div><!--tex4ht:label?: x25-1050011 -->
doc/src/vipsmanual/vipsmanualse17.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse17.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse11.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse11.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse11.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse11.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse11.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse11.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse11.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse11.html:href="vipsmanualse10.html#tailvipsmanualse10.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse11.html: id="x17-740002.5"></a>Image formats</h3>
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 4--><p class="noindent" >VIPS has a simple system for adding support for new
doc/src/vipsmanual/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">IMAGE</span></span></span>, or an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">IMAGE</span></span></span> to a file. New formats may be
doc/src/vipsmanual/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span>.
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 10--><p class="indent" >  This is a parallel API to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">im_open()</span></span></span>, see <span 
doc/src/vipsmanual/vipsmanualse11.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse11.html:href="vipsmanualse8.html#x14-410002.2.4">2.2.4<!--tex4ht:ref: sec:open --></a>. The
doc/src/vipsmanual/vipsmanualse11.html:image is held. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">im_open()</span></span></span> is useful for images in
doc/src/vipsmanual/vipsmanualse11.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse11.html:href="vipsmanualse18.html#x26-1140004.2.8">4.2.8<!--tex4ht:ref: sec:inplace --></a>), for
doc/src/vipsmanual/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">im_open()</span></span></span>.
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 19--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse11.html: id="x17-750002.5.1"></a>How a format is represented</h4>
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 21--><p class="noindent" >See the man page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span> for full details,
doc/src/vipsmanual/vipsmanualse11.html:    and a list of possible filename suffixes (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">.tif</span></span></span>, for
doc/src/vipsmanual/vipsmanualse11.html:    <li class="itemize">A function which will write an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">IMAGE</span></span></span> to a file in
doc/src/vipsmanual/vipsmanualse11.html:  <!--l. 45--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse11.html: id="x17-760002.5.2"></a>The format class</h4>
doc/src/vipsmanual/vipsmanualse11.html:  <!--l. 47--><p class="noindent" >The interface to the format system is defined by the abstract
doc/src/vipsmanual/vipsmanualse11.html:  base class <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span>. Formats subclass this and
doc/src/vipsmanual/vipsmanualse11.html:  <!--l. 53--><p class="indent" >    As an example, Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse11.html:href="#x17-760019">2.9<!--tex4ht:ref: fg:newformat --></a> shows how to register a new
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 57--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse11.html: id="x17-760019"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse11.html:<div class="verbatim" id="verbatim-118">
doc/src/vipsmanual/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;nickname&#x00A0;=&#x00A0;"myformat";
doc/src/vipsmanual/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;description&#x00A0;=&#x00A0;_(&#x00A0;"My&#x00A0;format"&#x00A0;);
doc/src/vipsmanual/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;is_a&#x00A0;=&#x00A0;is_myformat;
doc/src/vipsmanual/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;header&#x00A0;=&#x00A0;my_header;
doc/src/vipsmanual/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;load&#x00A0;=&#x00A0;my_read;
doc/src/vipsmanual/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;save&#x00A0;=&#x00A0;my_write;
doc/src/vipsmanual/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;get_flags&#x00A0;=&#x00A0;my_get_flags;
doc/src/vipsmanual/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;priority&#x00A0;=&#x00A0;100;
doc/src/vipsmanual/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;suffs&#x00A0;=&#x00A0;my_suffs;
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 108--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse11.html:class="content">Registering a format in a plugin</span></div><!--tex4ht:label?: x17-760019 -->
doc/src/vipsmanual/vipsmanualse11.html: id="x17-770002.5.3"></a>Finding a format</h4>
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 115--><p class="noindent" >You can loop over the subclasses of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span> in order
doc/src/vipsmanual/vipsmanualse11.html:of priority with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">vips_format_map()</span></span></span>. Like all the map
doc/src/vipsmanual/vipsmanualse11.html:non-zero or until the table ends.
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 120--><p class="indent" >  You find an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">VipsFormatClass</span></span></span> to use to open a file
doc/src/vipsmanual/vipsmanualse11.html:with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">vips_format_for_file()</span></span></span>. This finds the first
doc/src/vipsmanual/vipsmanualse11.html:format whose <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">is_a()</span></span></span> function returns true or whose
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 125--><p class="indent" >  You find a format to write a file with
doc/src/vipsmanual/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">vips_format_for_name()</span></span></span>. This returns the first
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 129--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse11.html: id="x17-780002.5.4"></a>Convenience functions</h4>
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 131--><p class="noindent" >A pair of convenience functions, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">vips_format_write()</span></span></span>
doc/src/vipsmanual/vipsmanualse11.html:and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse11.html:class="pcrr7t-">vips_format_read()</span></span></span>, will copy an image to and
doc/src/vipsmanual/vipsmanualse11.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse11.html:href="vipsmanualse10.html#tailvipsmanualse10.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse11.html:<!--l. 1--><p class="indent" >  <a 
Coincidencia en el archivo binario doc/src/vipsmanual/figs/interconvert.png
Coincidencia en el archivo binario doc/src/vipsmanual/figs/arch.png
doc/src/vipsmanual/vipsmanualse9.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse9.html:<head><title>Function dispatch and plug-ins</title> 
doc/src/vipsmanual/vipsmanualse9.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse9.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse9.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse9.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse9.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse9.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse9.html:href="vipsmanualse8.html#tailvipsmanualse8.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse9.html: id="x15-590002.3"></a>Function dispatch and plug-ins</h3>
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 3--><p class="noindent" >(This chapter is on the verge of being deprecated. We have
doc/src/vipsmanual/vipsmanualse9.html:started building a replacement based on <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">GObject</span></span></span>, see
doc/src/vipsmanual/vipsmanualse9.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse9.html:href="vipsmanualse10.html#x16-670002.4">2.4<!--tex4ht:ref: sec:object --></a>.)
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 6--><p class="indent" >  As image processing libraries increase in size it becomes
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 11--><p class="indent" >  To address this problem VIPS includes a simple database
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 16--><p class="indent" >  The operation database is extensible. You can define new
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 22--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse9.html: id="x15-600002.3.1"></a>Simple plugin example</h4>
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 24--><p class="noindent" >As an example, consider this function:
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-81">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 40--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 42--><p class="noindent" >The source for all the example code in this section is in the
doc/src/vipsmanual/vipsmanualse9.html:vips-examples package.
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 46--><p class="indent" >    The first step is to make a layer over this function which
doc/src/vipsmanual/vipsmanualse9.html:        <li class="itemize">The  function  should  be  int-valued,  and  return  0
doc/src/vipsmanual/vipsmanualse9.html:        for  success  and  non-zero  for  error.  It  should  set
doc/src/vipsmanual/vipsmanualse9.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_error()</span></span></span>.
doc/src/vipsmanual/vipsmanualse9.html:        argument: a pointer to a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span>-terminated array of
doc/src/vipsmanual/vipsmanualse9.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_objects</span></span></span>.
doc/src/vipsmanual/vipsmanualse9.html:        <li class="itemize">Each  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_object</span></span></span> represents  one  argument  to
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 66--><p class="indent" >    The argument descriptor is an array of structures,
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-82">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 77--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 79--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM_INPUT_INT()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM_OUTPUT_INT()</span></span></span> are
doc/src/vipsmanual/vipsmanualse9.html:macros defined in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">&#x003C;vips/dispatch.h&#x003E;</span></span></span> which make
doc/src/vipsmanual/vipsmanualse9.html:href="#x15-600011">2.1<!--tex4ht:ref: tab:type --></a>.
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 84--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse9.html: id="x15-600011"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 84--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse9.html:<div class="tabular"> <table id="TBL-5" class="tabular" 
doc/src/vipsmanual/vipsmanualse9.html:><colgroup id="TBL-5-1g"><col 
doc/src/vipsmanual/vipsmanualse9.html:id="TBL-5-1"></colgroup><colgroup id="TBL-5-2g"><col 
doc/src/vipsmanual/vipsmanualse9.html:id="TBL-5-2"></colgroup><colgroup id="TBL-5-3g"><col 
doc/src/vipsmanual/vipsmanualse9.html:id="TBL-5-3"></colgroup><tr 
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-1-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Macro                                       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-1-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Meaning                                 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-1-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_object </span>has type          </td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-2-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INT         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-2-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input int                                  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-2-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">int &#x22C6;              </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-3-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INTVEC      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-3-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input vector of int                   </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-3-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_intvec</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6; </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-4-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_IMASK       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-4-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input int array                         </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-4-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-5-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INT        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-5-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output int                               </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-5-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">int &#x22C6;              </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-6-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INTVEC      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-6-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output vector of int                </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-6-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_intvec</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6; </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-7-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_IMASK      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-7-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output int array to file            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-7-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-8-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_DOUBLE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-8-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input double                           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-8-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">double &#x22C6;           </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-9-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_DOUBLEVEC   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-9-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input vector of double            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-9-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_realvec</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;</span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-10-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_DMASK       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-10-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input double array                  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-10-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-11-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_DOUBLE     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-11-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output double                         </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-11-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">double &#x22C6;           </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-12-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_DOUBLEVEC  </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-12-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output vector of double         </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-12-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_realvec</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;</span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-13-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_DMASK      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-13-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output double array to file     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-13-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-14-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_DMASK</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_STATS</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-14-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output double array to screen</td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-14-3"  
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-15-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_COMPLEX    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-15-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output complex                      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-15-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">double &#x22C6;           </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-16-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_STRING      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-16-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input string                             </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-16-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">char &#x22C6;             </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-17-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_STRING     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-17-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output string                          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-17-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">char &#x22C6;             </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-18-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_IMAGE       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-18-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input image                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-18-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;            </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-19-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-19-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_IMAGEVEC    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-19-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Vector of input images           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-19-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;&#x22C6;           </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-20-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-20-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_IMAGE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-20-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output image                          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-20-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;            </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-21-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-21-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_RW</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_IMAGE          </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-21-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Read-write image                   </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-21-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;            </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-22-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-22-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_DISPLAY     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-22-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input display                           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-22-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_col</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_display &#x22C6;   </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-23-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-23-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_DISPLAY    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-23-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output display                        </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-23-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_col</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_display &#x22C6;   </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-24-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-24-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_GVALUE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-24-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input GValue                          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-24-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">GValue &#x22C6;           </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-25-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-25-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_GVALUE     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-25-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Output GValue                       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-25-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">GValue &#x22C6;           </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-26-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-26-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">_INTERPOLATE </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-26-2"  
doc/src/vipsmanual/vipsmanualse9.html:class="td11">Input VipsInterpolate             </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-26-3"  
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">VipsInterpolate &#x22C6;  </span></td>
doc/src/vipsmanual/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-27-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-27-1"  
doc/src/vipsmanual/vipsmanualse9.html:class="content">Argument type macros</span></div><!--tex4ht:label?: x15-600011 -->
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 156--><p class="indent" >  The argument to the type macro is the name of the
doc/src/vipsmanual/vipsmanualse9.html:argument. These names are used by user-interface programs
doc/src/vipsmanual/vipsmanualse9.html:user-interfaces will present them to the user. You should use
doc/src/vipsmanual/vipsmanualse9.html:    <li class="itemize">Names   should   be   entirely   in   lower-case   and
doc/src/vipsmanual/vipsmanualse9.html:    0-9 and the underscore character &#8216;_&#8217;.
doc/src/vipsmanual/vipsmanualse9.html:    argument.   For   example,   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_add()</span></span></span> has   the
doc/src/vipsmanual/vipsmanualse9.html:                                                     <div class="verbatim" id="verbatim-83">
doc/src/vipsmanual/vipsmanualse9.html:          example%&#x00A0;vips&#x00A0;-help&#x00A0;im_add
doc/src/vipsmanual/vipsmanualse9.html:    &#x00A0;<br />&#x00A0;&#x00A0;(point-to-point&#x00A0;operation) 
doc/src/vipsmanual/vipsmanualse9.html:   <!--l. 185--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:        options. For example, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_extract()</span></span></span> has the
doc/src/vipsmanual/vipsmanualse9.html:    <div class="verbatim" id="verbatim-84">
doc/src/vipsmanual/vipsmanualse9.html:    example%&#x00A0;vips&#x00A0;-help&#x00A0;im_extract
doc/src/vipsmanual/vipsmanualse9.html:    &#x00A0;<br />&#x00A0;&#x00A0;(point-to-point&#x00A0;operation)
doc/src/vipsmanual/vipsmanualse9.html:    <!--l. 210--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 214--><p class="indent" >  This function sits over <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">double_integer()</span></span></span>, providing
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-85">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 233--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 235--><p class="indent" >  Finally, these two pieces of information (the argument
doc/src/vipsmanual/vipsmanualse9.html:description and the VIPS-style function wrapper) can be
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-86">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 250--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 253--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">IM_NUMBER()</span></span></span> is a macro which returns the number of
doc/src/vipsmanual/vipsmanualse9.html:elements in a static array. The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">flags</span></span></span> field contains hints
doc/src/vipsmanual/vipsmanualse9.html:which user-interfaces can use for various optimisations. At
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">_PIO</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse9.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse9.html:href="vipsmanualse15.html#x22-920003.3">3.3<!--tex4ht:ref: sec:pio --></a>).
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">_TRANSFORM</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">_PTOP</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse9.html:class="description">This is a point-to-point operation, that
doc/src/vipsmanual/vipsmanualse9.html:    is, it can be replaced with a look-up table.
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrb7t-">_NOCACHE</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 275--><p class="indent" >  This function description now needs to be added to the
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-87">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 297--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 299--><p class="indent" >  The package has to be named <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">package_table</span></span></span>, and
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 303--><p class="indent" >    This file needs to be made into a dynamically loadable
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-88">
doc/src/vipsmanual/vipsmanualse9.html:example%&#x00A0;gcc&#x00A0;-fPIC&#x00A0;-DPIC&#x00A0;-c
doc/src/vipsmanual/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;&#8216;pkg-config&#x00A0;vips-7.12&#x00A0;--cflags&#8216;
doc/src/vipsmanual/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;plug.c&#x00A0;-o&#x00A0;plug.o
doc/src/vipsmanual/vipsmanualse9.html:&#x00A0;<br />example%&#x00A0;gcc&#x00A0;-shared&#x00A0;plug.o
doc/src/vipsmanual/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;-o&#x00A0;double.plg
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 312--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 314--><p class="indent" >  You can now use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">double.plg</span></span></span> with any of the
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-89">
doc/src/vipsmanual/vipsmanualse9.html:  example%&#x00A0;vips&#x00A0;-plugin&#x00A0;double.plg&#x00A0;\
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 322--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 324--><p class="indent" >  When VIPS starts up, it looks for a directory in the
doc/src/vipsmanual/vipsmanualse9.html:library directory called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">vips-</span></span></span>, with the vips major and
doc/src/vipsmanual/vipsmanualse9.html:there with the suffix <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">.plg</span></span></span>. So for example, on my machine,
doc/src/vipsmanual/vipsmanualse9.html:the plugin directory is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">/usr/lib/vips-7.16</span></span></span> and any
doc/src/vipsmanual/vipsmanualse9.html: id="x15-610002.3.2"></a>A more complicated example</h4>
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 332--><p class="noindent" >This section lists the source for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_extract()</span></span></span>&#8217;s function
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-90">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 379--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 381--><p class="noindent" >                                              <h4 class="subsectionHead"><span class="titlemark">2.3.3    </span> <a 
doc/src/vipsmanual/vipsmanualse9.html: id="x15-620002.3.3"></a>Adding new types</h4>
doc/src/vipsmanual/vipsmanualse9.html:  <!--l. 383--><p class="noindent" >The VIPS type mechanism is extensible. User plug-ins can
doc/src/vipsmanual/vipsmanualse9.html:  add new types and user-interfaces can (to a certain extent)
doc/src/vipsmanual/vipsmanualse9.html:  provide interfaces to these user-defined types.
doc/src/vipsmanual/vipsmanualse9.html:  <!--l. 387--><p class="indent" >    Here is the definition of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_arg_desc</span></span></span>:
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-91">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 397--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 399--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">name</span></span></span> field is the argument name above. The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">desc</span></span></span>
doc/src/vipsmanual/vipsmanualse9.html:the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">print</span></span></span> field is an (optionally <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span>) pointer to a
doc/src/vipsmanual/vipsmanualse9.html:the terminal, or to copy results into a user-interface
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-92">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 415--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 417--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_type_desc</span></span></span> is defined as:
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-93">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 429--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 431--><p class="indent" >  Where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_arg_type</span></span></span> is defined as
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-94">
doc/src/vipsmanual/vipsmanualse9.html: &#x00A0;<br />&#x00A0;&#x22C6;&#x00A0;then&#x00A0;you&#x00A0;should&#x00A0;use&#x00A0;the&#x00A0;built-in
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 452--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 454--><p class="indent" >  In other words, it&#8217;s just a string. When you add a new
doc/src/vipsmanual/vipsmanualse9.html:parts of VIPS, and so needs to be &#8220;human-readable&#8221;. The
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-95">
doc/src/vipsmanual/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x22C6;&#x00A0;an&#x00A0;im_object&#x00A0;---&#x00A0;with&#x00A0;and&#x00A0;without
doc/src/vipsmanual/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x22C6;&#x00A0;a&#x00A0;command-line&#x00A0;string&#x00A0;to&#x00A0;help&#x00A0;you
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 483--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 485--><p class="indent" >  And the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">init</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">destroy</span></span></span> functions are:
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-96">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 497--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 499--><p class="indent" >  As an example, here is the definition for a new type of
doc/src/vipsmanual/vipsmanualse9.html:unsigned integers. First, we need to define the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">init</span></span></span> and
doc/src/vipsmanual/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">print</span></span></span> functions. These transform objects of the type to
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-97">
doc/src/vipsmanual/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 536--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 538--><p class="indent" >  Now we can define the type itself. We make two of
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-98">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 565--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 567--><p class="indent" >  Finally, we can define two macros to make structures of
doc/src/vipsmanual/vipsmanualse9.html:type <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_arg_desc</span></span></span> for us.
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-99">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 575--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 577--><p class="indent" >  For more examples, see the definitions for the built-in
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 579--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse9.html: id="x15-630002.3.4"></a>Using function dispatch in your application</h4>
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 581--><p class="noindent" >VIPS provides a set of functions for adding new image
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 585--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse9.html: id="x15-640002.3.4"></a>Adding and removing functions</h5>
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-100">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 590--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 592--><p class="indent" >  This function opens the named file, searches it for a
doc/src/vipsmanual/vipsmanualse9.html:symbol named <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">package_table</span></span></span>, and adds any functions
doc/src/vipsmanual/vipsmanualse9.html:for a function, any plug-ins are searched first, so you
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 597--><p class="indent" >    The function returns a pointer to the package it added, or
doc/src/vipsmanual/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> on error.
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-101">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 602--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 604--><p class="indent" >  This function closes all plug-ins, removing then from the
doc/src/vipsmanual/vipsmanualse9.html:VIPS function database. It returns non-zero on error.
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 607--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse9.html: id="x15-650002.3.4"></a>Searching the function database</h5>
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-102">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 612--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 614--><p class="indent" >  This function applies the argument function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">fn</span></span></span> to
doc/src/vipsmanual/vipsmanualse9.html:recently added package. As with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_list_map()</span></span></span>, the
doc/src/vipsmanual/vipsmanualse9.html:argument function should return <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> to continue
doc/src/vipsmanual/vipsmanualse9.html:searching, or non-<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> to terminate the search early.
doc/src/vipsmanual/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_map_packages()</span></span></span> returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> if <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">fn</span></span></span> returned
doc/src/vipsmanual/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> for all arguments. The extra argument <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">a</span></span></span> is carried
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 622--><p class="indent" >    For example, this fragment of code prints the names of all
doc/src/vipsmanual/vipsmanualse9.html:loaded packages to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">fd</span></span></span>:
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-103">
doc/src/vipsmanual/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;pack-&#x003E;name&#x00A0;);
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 646--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 648--><p class="indent" >  VIPS defines three convenience functions based on
doc/src/vipsmanual/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_map_packages()</span></span></span> which simplify searching for
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-104">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 658--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 660--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse9.html: id="x15-660002.3.4"></a>Building argument structures and running commands</h5>
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-105">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 668--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 670--><p class="indent" >  These two functions allocate space for and free VIPS
doc/src/vipsmanual/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_malloc()</span></span></span> to allocate any store that the types require
doc/src/vipsmanual/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">im_free()</span></span></span> for any storage that was allocated.
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 675--><p class="indent" >  Note that neither of these functions calls the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">init</span></span></span>,
doc/src/vipsmanual/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">dest</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse9.html:class="pcrr7t-">print</span></span></span> functions for the types &#8212; that&#8217;s up to
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-106">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 681--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 683--><p class="indent" >  This function does everything. In effect,
doc/src/vipsmanual/vipsmanualse9.html:  <div class="verbatim" id="verbatim-107">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 688--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 690--><p class="indent" >  is exactly equivalent to
doc/src/vipsmanual/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-108">
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 695--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 697--><p class="indent" >  but no process is forked.
doc/src/vipsmanual/vipsmanualse9.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse9.html:href="vipsmanualse8.html#tailvipsmanualse8.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse9.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualli1.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualli1.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualli1.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualli1.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualli1.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualli1.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualli1.html:  <!--l. 45--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualli1.html: id="x2-1000"></a>Contents</h2>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualch1.html#x5-40001">VIPS from C++ and Python</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse1.html#x6-50001.1">Introduction</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse1.html#x6-60001.1.1" id="QQ2-6-6">If you&#8217;ve used the C API</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse2.html#x7-70001.2">The VIPS file format</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse2.html#x7-80001.2.1" id="QQ2-7-10">VIPS file header</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse2.html#x7-90001.2.2" id="QQ2-7-15">Computation formats</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse2.html#x7-100001.2.3" id="QQ2-7-16">Storage formats</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse3.html#x8-110001.3">The <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VImage </span>class</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse3.html#x8-120001.3.1" id="QQ2-8-18">Constructors</a></span>                           <br />    &#x00A0;&#x00A0;<span class="subsectionToc" >1.3.2 <a 
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse3.html#x8-130001.3.2" id="QQ2-8-19">File conversion</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse3.html#x8-140001.3.3" id="QQ2-8-20">Projection functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse3.html#x8-150001.3.4" id="QQ2-8-21">Assignment</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse3.html#x8-160001.3.5" id="QQ2-8-22">Computing with <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VImage</span>s</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse3.html#x8-170001.3.6" id="QQ2-8-23">Writing results</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse3.html#x8-180001.3.7" id="QQ2-8-24">Type conversions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse4.html#x9-190001.4">The <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VMask </span>class</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse4.html#x9-200001.4.1" id="QQ2-9-26">Constructors</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse4.html#x9-210001.4.2" id="QQ2-9-27">Projection functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse4.html#x9-220001.4.3" id="QQ2-9-28">Assignment</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse4.html#x9-230001.4.4" id="QQ2-9-29">Computing with <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VMask</span></a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse4.html#x9-240001.4.5" id="QQ2-9-30"><span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VIMask </span>operations</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse4.html#x9-250001.4.6" id="QQ2-9-31"><span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VDMask </span>operations</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse4.html#x9-260001.4.7" id="QQ2-9-32">Output of masks</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse5.html#x10-270001.5">The <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VDisplay </span>class</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse5.html#x10-280001.5.1" id="QQ2-10-34">Constructors</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse5.html#x10-290001.5.2" id="QQ2-10-35">Projection functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse6.html#x11-300001.6">The <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VError </span>class</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse6.html#x11-310001.6.1" id="QQ2-11-37">Constructors</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse6.html#x11-320001.6.2" id="QQ2-11-38">Projection functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse6.html#x11-330001.6.3" id="QQ2-11-39">Computing with <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VError</span></a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse6.html#x11-340001.6.4" id="QQ2-11-40">Convenience function</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualch2.html#x12-350002">VIPS for C programmers</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse7.html#x13-360002.1">Introduction</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-370002.2">Core C API</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-380002.2.1" id="QQ2-14-45">Startup</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-390002.2.2" id="QQ2-14-47">Image descriptors</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-400002.2.3" id="QQ2-14-49">Header fields</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-410002.2.4" id="QQ2-14-50">Opening and closing</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-420002.2.5" id="QQ2-14-51">Examples</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-430002.2.6" id="QQ2-14-54">Metadata</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-440002.2.7" id="QQ2-14-55">History</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-450002.2.8" id="QQ2-14-56">Eval callbacks</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-460002.2.9" id="QQ2-14-57">Detailed rules for descriptors</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-470002.2.10" id="QQ2-14-58">Automatic resource deallocation</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-510002.2.11" id="QQ2-14-63">Error handling</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse8.html#x14-520002.2.12" id="QQ2-14-64">Joining operations together</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse9.html#x15-590002.3">Function dispatch and plug-ins</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse9.html#x15-600002.3.1" id="QQ2-15-74">Simple plugin example</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse9.html#x15-610002.3.2" id="QQ2-15-76">A more complicated example</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse9.html#x15-620002.3.3" id="QQ2-15-77">Adding new types</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse9.html#x15-630002.3.4" id="QQ2-15-78">Using function dispatch in your application</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse10.html#x16-670002.4">The VIPS base class: <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">VipsObject</span></a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse10.html#x16-680002.4.1" id="QQ2-16-83">Properties</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse10.html#x16-730002.4.2" id="QQ2-16-88">Convenience functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse11.html#x17-740002.5">Image formats</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse11.html#x17-750002.5.1" id="QQ2-17-90">How a format is represented</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse11.html#x17-760002.5.2" id="QQ2-17-91">The format class</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse11.html#x17-770002.5.3" id="QQ2-17-93">Finding a format</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse11.html#x17-780002.5.4" id="QQ2-17-94">Convenience functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse12.html#x18-790002.6">Interpolators</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse12.html#x18-800002.6.1" id="QQ2-18-96">How an interpolator is represented</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse12.html#x18-810002.6.2" id="QQ2-18-97">A sample interpolator</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse12.html#x18-820002.6.3" id="QQ2-18-99">Writing a VIPS operation that takes an interpolator as an argument</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse12.html#x18-830002.6.4" id="QQ2-18-100">Passing an interpolator to a VIPS operation</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualch3.html#x19-840003">Writing VIPS operations</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse13.html#x20-850003.1">Introduction</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse13.html#x20-860003.1.1" id="QQ2-20-103">Why use VIPS?</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse13.html#x20-870003.1.2" id="QQ2-20-104">I/O styles</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse14.html#x21-880003.2">Programming WIO operations</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse14.html#x21-890003.2.1" id="QQ2-21-106">Input from an image</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse14.html#x21-900003.2.2" id="QQ2-21-108">Output to an image</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse14.html#x21-910003.2.3" id="QQ2-21-110">Polymorphism</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse15.html#x22-920003.3">Programming PIO functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse15.html#x22-930003.3.1" id="QQ2-22-114">Easy PIO with <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">_wrapone() </span>and <span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualli1.html:class="pcrr7t-">_wrapmany()</span></a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse15.html#x22-940003.3.2" id="QQ2-22-115">Region descriptors</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse15.html#x22-950003.3.3" id="QQ2-22-116">Image input with regions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse15.html#x22-960003.3.4" id="QQ2-22-119">Splitting into sequences</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse15.html#x22-970003.3.5" id="QQ2-22-123">Output to regions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse15.html#x22-980003.3.6" id="QQ2-22-126">Callbacks</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse15.html#x22-1020003.3.7" id="QQ2-22-130">Memory allocation revisited</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse16.html#x23-1030003.4">Programming in-place functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualch4.html#x24-1040004">VIPS reference</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse17.html#x25-1050004.1">Introduction</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1060004.2">VIPS packages</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1070004.2.1" id="QQ2-26-136">Arithmetic</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1080004.2.2" id="QQ2-26-138">Relational</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1090004.2.3" id="QQ2-26-140">Boolean</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1100004.2.4" id="QQ2-26-142">Colour</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1110004.2.5" id="QQ2-26-145">Conversion</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1120004.2.6" id="QQ2-26-148">Matricies</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1130004.2.7" id="QQ2-26-150">Convolution</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1140004.2.8" id="QQ2-26-152">In-place operations</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1150004.2.9" id="QQ2-26-154">Frequency filtering</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1160004.2.10" id="QQ2-26-156">Histograms and LUTs</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1170004.2.11" id="QQ2-26-158">Morphology</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1180004.2.12" id="QQ2-26-160">Mosaicing</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1190004.2.13" id="QQ2-26-162">CImg functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1200004.2.14" id="QQ2-26-164">Other</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1210004.2.15" id="QQ2-26-166">IO functions</a></span>                           <br />    &#x00A0;&#x00A0;<span class="subsectionToc" >4.2.16 <a 
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1220004.2.16" id="QQ2-26-168">Format functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:href="vipsmanualse18.html#x26-1230004.2.17" id="QQ2-26-170">Resample functions</a></span>
doc/src/vipsmanual/vipsmanualli1.html:  <!--l. 49--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualli1.html:<!--l. 49--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualli2.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualli2.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualli2.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualli2.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualli2.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualli2.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualli2.html:  <!--l. 49--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualli1.html#tailvipsmanualli1.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualli2.html: id="x3-2000"></a>List of Figures</h2>
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse1.html#x6-60011"><span 
doc/src/vipsmanual/vipsmanualli2.html:class="pcrr7t-">invert </span>program in C++</a></span><br /><span class="lofToc" >1.2&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse1.html#x6-60022"><span 
doc/src/vipsmanual/vipsmanualli2.html:class="pcrr7t-">invert </span>program in Python</a></span><br /><span class="lofToc" >2.1&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse7.html#x13-360011">VIPS software
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse8.html#x14-380012">Hello World for VIPS</a></span><br /><span class="lofToc" >2.3&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse8.html#x14-390013">The <span 
doc/src/vipsmanual/vipsmanualli2.html:class="pcrr7t-">IMAGE </span>descriptor</a></span><br /><span class="lofToc" >2.4&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse8.html#x14-420014">Print width and height of
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse8.html#x14-420025">Find photographic negative</a></span><br /><span class="lofToc" >2.6&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse8.html#x14-480016">Sum an array of images</a></span><br /><span class="lofToc" >2.7&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse8.html#x14-520017">Two image-processing
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse8.html#x14-560018">Threshold an image at the mean value</a></span><br /><span class="lofToc" >2.9&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse11.html#x17-760019">Registering a format
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse12.html#x18-8100110">Registering an interpolator in a plugin</a></span><br /><span class="lofToc" >3.1&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse14.html#x21-890011">Find average of image</a></span><br /><span class="lofToc" >3.2&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse14.html#x21-900012">Invert an
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse14.html#x21-910013">Calculate <span 
doc/src/vipsmanual/vipsmanualli2.html:class="pcrr7t-">exp() </span>for an image</a></span><br /><span class="lofToc" >3.4&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse14.html#x21-910024">Calculate <span 
doc/src/vipsmanual/vipsmanualli2.html:class="pcrr7t-">exp() </span>for an image (cont)</a></span><br /><span class="lofToc" >3.5&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse15.html#x22-950015">First PIO
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse15.html#x22-950026">First PIO average of image (cont.)</a></span><br /><span class="lofToc" >3.7&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse15.html#x22-960017">Final PIO average of image</a></span><br /><span class="lofToc" >3.8&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse15.html#x22-960028">Final
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse15.html#x22-960039">Final PIO average of image (cont.)</a></span><br /><span class="lofToc" >3.10&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse15.html#x22-9700110">PIO invert</a></span><br /><span class="lofToc" >3.11&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse15.html#x22-9700211">PIO
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-1070011">Arithmetic functions</a></span><br /><span class="lofToc" >4.2&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-1080012">Relational functions</a></span><br /><span class="lofToc" >4.3&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-1090013">Boolean functions</a></span><br /><span class="lofToc" >4.4&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-1100014">VIPS
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-1100025">Colour functions</a></span><br /><span class="lofToc" >4.6&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-1110016">Conversion functions</a></span><br /><span class="lofToc" >4.7&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-1110027">Conversion functions
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-1120018">Matrix functions</a></span><br /><span class="lofToc" >4.9&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-1130019">Convolution functions</a></span><br /><span class="lofToc" >4.10&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-11400110">In-place operations</a></span><br /><span class="lofToc" >4.11&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-11500111">Fourier
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-11600112">Histogram/LUT functions</a></span><br /><span class="lofToc" >4.13&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-11700113">Morphological functions</a></span><br /><span class="lofToc" >4.14&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-11800114">Mosaic
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-11900115">CImg functions</a></span><br /><span class="lofToc" >4.16&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-12000116">Other functions</a></span><br /><span class="lofToc" >4.17&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-12100117">IO functions</a></span><br /><span class="lofToc" >4.18&#x00A0;<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-12200118">Format
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualse18.html#x26-12300119">Resample functions</a></span><br />
doc/src/vipsmanual/vipsmanualli2.html:  <!--l. 53--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualli2.html:href="vipsmanualli1.html#tailvipsmanualli1.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualli2.html:<!--l. 53--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse1.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse1.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse1.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse1.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse1.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse1.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse1.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse1.html: id="x6-50001.1"></a>Introduction</h3>
doc/src/vipsmanual/vipsmanualse1.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:cpp"></a>
doc/src/vipsmanual/vipsmanualse1.html:<!--l. 4--><p class="indent" >  This chapter describes the C++ API for the VIPS image
doc/src/vipsmanual/vipsmanualse1.html:for you automatically.                             <!--l. 9--><p class="indent" >    The Python interface is a very simple wrapping of
doc/src/vipsmanual/vipsmanualse1.html:  <!--l. 14--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse1.html: id="x6-60001.1.1"></a>If you&#8217;ve used the C API</h4>
doc/src/vipsmanual/vipsmanualse1.html:  <!--l. 16--><p class="noindent" >To show how much easier the VIPS C++ API is to use,
doc/src/vipsmanual/vipsmanualse1.html:href="vipsmanualse8.html#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:negative --></a> to Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse1.html:href="#x6-60011">1.1<!--tex4ht:ref: fg:invert-c++ --></a>. Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse1.html:href="#x6-60022">1.2<!--tex4ht:ref: fg:invert-py --></a> is the same
doc/src/vipsmanual/vipsmanualse1.html:  <!--l. 19--><p class="indent" >    A typical build line for the C++ program might be:
doc/src/vipsmanual/vipsmanualse1.html:  <div class="verbatim" id="verbatim-1">
doc/src/vipsmanual/vipsmanualse1.html:&#x00A0;<br />&#x00A0;&#x00A0;&#8216;pkg-config&#x00A0;vipsCC-7.18&#x00A0;\
doc/src/vipsmanual/vipsmanualse1.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;--cflags&#x00A0;--libs&#8216;
doc/src/vipsmanual/vipsmanualse1.html:<!--l. 25--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse1.html:<!--l. 27--><p class="indent" >  The key points are:
doc/src/vipsmanual/vipsmanualse1.html:    <li class="itemize">You just include <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">&#x003C;vips/vips&#x003E;</span></span></span> &#8212; this then gets
doc/src/vipsmanual/vipsmanualse1.html:    the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">vips</span></span></span> namespace.
doc/src/vipsmanual/vipsmanualse1.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">IMAGE</span></span></span> becomes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span> and so on. The C++ API
doc/src/vipsmanual/vipsmanualse1.html:    also includes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VDisplay</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VError</span></span></span>.
doc/src/vipsmanual/vipsmanualse1.html:    of                             the                             <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span>
doc/src/vipsmanual/vipsmanualse1.html:    class  &#8212;  here,  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VImage(</span><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">&#x00A0;argv[1]</span><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">&#x00A0;)</span></span></span> creates  a
doc/src/vipsmanual/vipsmanualse1.html:    new  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span> object  using  the  first  argument  to
doc/src/vipsmanual/vipsmanualse1.html:    member  function  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">invert()</span></span></span>,  which  inverts  the
doc/src/vipsmanual/vipsmanualse1.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span> and  returns  a  new  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span>.  Finally  it
doc/src/vipsmanual/vipsmanualse1.html:    calls the member function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">write()</span></span></span>, which writes
doc/src/vipsmanual/vipsmanualse1.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">VError</span></span></span> class  is  covered  later.  If  you  run  this
doc/src/vipsmanual/vipsmanualse1.html:                                                     <div class="verbatim" id="verbatim-2">
doc/src/vipsmanual/vipsmanualse1.html:   <!--l. 57--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse1.html:<!--l. 62--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse1.html: id="x6-60011"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse1.html:<div class="verbatim" id="verbatim-3">
doc/src/vipsmanual/vipsmanualse1.html:<!--l. 88--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">invert </span>program in C++</span></div><!--tex4ht:label?: x6-60011 -->
doc/src/vipsmanual/vipsmanualse1.html:<!--l. 94--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse1.html: id="x6-60022"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse1.html:<div class="verbatim" id="verbatim-4">
doc/src/vipsmanual/vipsmanualse1.html:<!--l. 105--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse1.html:class="pcrr7t-">invert </span>program in Python</span></div><!--tex4ht:label?: x6-60022 -->
doc/src/vipsmanual/vipsmanualse1.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse1.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse18.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse18.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse18.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse18.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse18.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse18.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse18.html:href="vipsmanualse17.html#tailvipsmanualse17.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1060004.2"></a>VIPS packages</h3>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:packages"></a>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 4--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1070004.2.1"></a>Arithmetic</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 6--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-1070011">4.1<!--tex4ht:ref: fg:arithmetic --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 8--><p class="indent" >  Arithmetic functions work on images as if each band
doc/src/vipsmanual/vipsmanualse18.html:point-to-point &#8212; each output element depends exactly upon
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 14--><p class="indent" >  Arithmetic operations try to preserve precision by
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> images together, for example,
doc/src/vipsmanual/vipsmanualse18.html:produces a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_USHORT</span></span></span> image, and taking the
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_costra()</span></span></span> of a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_USHORT</span></span></span> image
doc/src/vipsmanual/vipsmanualse18.html:produces a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span> image. The details of
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 23--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1070011"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-177">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;arithmetic
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_abs&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;absolute&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_acostra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;acos&#x00A0;of&#x00A0;image&#x00A0;(result&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_add&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;add&#x00A0;two&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_asintra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;asin&#x00A0;of&#x00A0;image&#x00A0;(result&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_atantra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;atan&#x00A0;of&#x00A0;image&#x00A0;(result&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_avg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;average&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_point_bilinear&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;interpolate&#x00A0;value&#x00A0;at&#x00A0;single&#x00A0;point,&#x00A0;linearly
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_bandmean&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;average&#x00A0;image&#x00A0;bands
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_ceil&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;round&#x00A0;to&#x00A0;smallest&#x00A0;integal&#x00A0;value&#x00A0;not&#x00A0;less&#x00A0;than
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_cmulnorm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;multiply&#x00A0;two&#x00A0;complex&#x00A0;images,&#x00A0;normalising&#x00A0;output
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_costra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;cos&#x00A0;of&#x00A0;image&#x00A0;(angles&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_cross_phase&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;phase&#x00A0;of&#x00A0;cross&#x00A0;power&#x00A0;spectrum&#x00A0;of&#x00A0;two&#x00A0;complex&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_deviate&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;standard&#x00A0;deviation&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_divide&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;divide&#x00A0;two&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_exp10tra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;10^pel&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_expntra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;x^pel&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_expntra_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;[x,y,z]^pel&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_exptra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;e^pel&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_fav4&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;average&#x00A0;of&#x00A0;4&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_floor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;round&#x00A0;to&#x00A0;largest&#x00A0;integal&#x00A0;value&#x00A0;not&#x00A0;greater&#x00A0;than
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gadd&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;a&#x22C6;in1&#x00A0;+&#x00A0;b&#x22C6;in2&#x00A0;+&#x00A0;c&#x00A0;=&#x00A0;outfile
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_invert&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;photographic&#x00A0;negative
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lintra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;a&#x22C6;in&#x00A0;+&#x00A0;b&#x00A0;=&#x00A0;outfile
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_linreg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;pixelwise&#x00A0;linear&#x00A0;regression
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lintra_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;a&#x22C6;in&#x00A0;+&#x00A0;b&#x00A0;-&#x003E;&#x00A0;out,&#x00A0;a&#x00A0;and&#x00A0;b&#x00A0;vectors
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_litecor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;max(white)&#x22C6;factor&#x22C6;(in/white),&#x00A0;if&#x00A0;clip&#x00A0;==&#x00A0;1
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_log10tra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;log10&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_logtra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;ln&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_max&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;maximum&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_maxpos&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;of&#x00A0;maximum&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_maxpos_avg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;of&#x00A0;maximum&#x00A0;value&#x00A0;of&#x00A0;image,&#x00A0;averaging&#x00A0;in&#x00A0;case&#x00A0;of&#x00A0;draw
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_maxpos_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;and&#x00A0;value&#x00A0;of&#x00A0;n&#x00A0;maxima&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_measure&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;measure&#x00A0;averages&#x00A0;of&#x00A0;a&#x00A0;grid&#x00A0;of&#x00A0;patches
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_min&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;minimum&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_minpos&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;of&#x00A0;minimum&#x00A0;value&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_minpos_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;and&#x00A0;value&#x00A0;of&#x00A0;n&#x00A0;minima&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_multiply&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;multiply&#x00A0;two&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_powtra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;pel^x&#x00A0;ofbuildimage
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_powtra_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;pel^[x,y,z]&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_remainder&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;remainder&#x00A0;after&#x00A0;integer&#x00A0;division
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_remainderconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;remainder&#x00A0;after&#x00A0;integer&#x00A0;division&#x00A0;by&#x00A0;a&#x00A0;constant
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_remainderconst_vec&#x00A0;-&#x00A0;remainder&#x00A0;after&#x00A0;integer&#x00A0;division&#x00A0;by&#x00A0;a&#x00A0;vector&#x00A0;of&#x00A0;constants
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rint&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;round&#x00A0;to&#x00A0;nearest&#x00A0;integal&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_sign&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;unit&#x00A0;vector&#x00A0;in&#x00A0;direction&#x00A0;of&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_sintra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;sin&#x00A0;of&#x00A0;image&#x00A0;(angles&#x00A0;in&#x00A0;degrees)&#x00A0;<br />im_stats&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;many&#x00A0;image&#x00A0;statistics&#x00A0;in&#x00A0;one&#x00A0;pass
doc/src/vipsmanual/vipsmanualse18.html: &#x00A0;<br />im_subtract&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;subtract&#x00A0;two&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html: &#x00A0;<br />im_tantra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;tan&#x00A0;of&#x00A0;image&#x00A0;(angles&#x00A0;in&#x00A0;degrees)
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 73--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Arithmetic functions</span></div><!--tex4ht:label?: x26-1070011 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1080004.2.2"></a>Relational</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 80--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-1080012">4.2<!--tex4ht:ref: fg:relational --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 82--><p class="indent" >  Relational functions compare images to other images or
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> image with the same number of
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 89--><p class="indent" >  They may be combined with the boolean functions to
doc/src/vipsmanual/vipsmanualse18.html:form complex relational conditions. Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_max()</span></span></span> (or
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_min()</span></span></span>) to find out if a condition is true (or false) for a
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 94--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1080012"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-178">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;relational
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_blend&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;use&#x00A0;cond&#x00A0;image&#x00A0;to&#x00A0;blend&#x00A0;between&#x00A0;images&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_equal&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;two&#x00A0;images&#x00A0;equal&#x00A0;in&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_equal_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;equals&#x00A0;doublevec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_equalconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;equals&#x00A0;const
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_ifthenelse&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;use&#x00A0;cond&#x00A0;image&#x00A0;to&#x00A0;choose&#x00A0;pels&#x00A0;from&#x00A0;image&#x00A0;in1&#x00A0;or&#x00A0;in2
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_less&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;less&#x00A0;than&#x00A0;in2&#x00A0;in&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_less_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;doublevec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lessconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;const
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lesseq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;less&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;in2&#x00A0;in&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lesseq_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;doublevec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lesseqconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;const
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_more&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;more&#x00A0;than&#x00A0;in2&#x00A0;in&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_more_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;doublevec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_moreconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;const
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_moreeq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;more&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;in2&#x00A0;in&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_moreeq_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;doublevec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_moreeqconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;const
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_notequal&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;two&#x00A0;images&#x00A0;not&#x00A0;equal&#x00A0;in&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_notequal_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;does&#x00A0;not&#x00A0;equal&#x00A0;doublevec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_notequalconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;does&#x00A0;not&#x00A0;equal&#x00A0;const
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 116--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Relational functions</span></div><!--tex4ht:label?: x26-1080012 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1090004.2.3"></a>Boolean</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 123--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-1090013">4.3<!--tex4ht:ref: fg:boolean --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 125--><p class="indent" >  The boolean functions perform boolean arithmetic on
doc/src/vipsmanual/vipsmanualse18.html:pairs of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> images. They are useful for
doc/src/vipsmanual/vipsmanualse18.html:functions. You can use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_eorconst()</span></span></span> with 255 as
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_not()</span></span></span>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 131--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1090013"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-179">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;boolean
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_andimage&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;and&#x00A0;of&#x00A0;two&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_andimageconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;and&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;constant
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_andimage_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;and&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;vector&#x00A0;constant
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_orimage&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;or&#x00A0;of&#x00A0;two&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_orimageconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;or&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;constant
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_orimage_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;or&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;vector&#x00A0;constant
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_eorimage&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;eor&#x00A0;of&#x00A0;two&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_eorimageconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;eor&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;constant
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_eorimage_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;eor&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;vector&#x00A0;constant
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_shiftleft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shift&#x00A0;integer&#x00A0;image&#x00A0;n&#x00A0;bits&#x00A0;to&#x00A0;left
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_shiftright&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shift&#x00A0;integer&#x00A0;image&#x00A0;n&#x00A0;bits&#x00A0;to&#x00A0;right
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 144--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Boolean functions</span></div><!--tex4ht:label?: x26-1090013 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1100004.2.4"></a>Colour</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 152--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-1100025">4.5<!--tex4ht:ref: fg:colour --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 154--><p class="indent" >  The colour functions can be divided into two main types.
doc/src/vipsmanual/vipsmanualse18.html:colour spaces supported by VIPS: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">RGB</span></span></span> (also referred to as
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">disp</span></span></span>), <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">sRGB</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">XYZ</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">Yxy</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">LabQ</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">LabS</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">LCh</span></span></span> and
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">UCS</span></span></span>), and second, functions for calculating colour
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-1100014">4.4<!--tex4ht:ref: fg:convert --></a> shows how the VIPS colour
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 163--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1100014"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 163--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 163--><p class="noindent" ><img 
doc/src/vipsmanual/vipsmanualse18.html:class="content">VIPS colour space conversion</span></div><!--tex4ht:label?: x26-1100014 -->
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 168--><p class="indent" >  The colour spaces supported by VIPS are:
doc/src/vipsmanual/vipsmanualse18.html:class="pcrb7t-">LabQ</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse18.html:    format. See the man page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_LabQ2Lab()</span></span></span>
doc/src/vipsmanual/vipsmanualse18.html:    calculations on <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">LabQ</span></span></span> images. They are for storage
doc/src/vipsmanual/vipsmanualse18.html:    only. Also refered to as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">LABPACK</span></span></span>.
doc/src/vipsmanual/vipsmanualse18.html:class="pcrb7t-">LabS</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span> space as a
doc/src/vipsmanual/vipsmanualse18.html:    three- band <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_SHORT</span></span></span> image, scaled
doc/src/vipsmanual/vipsmanualse18.html:class="pcrb7t-">Lab</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse18.html:class="description"><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span> colourspace  represents  <span 
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span> colour
doc/src/vipsmanual/vipsmanualse18.html:    values  with  a  three-band  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span>
doc/src/vipsmanual/vipsmanualse18.html:class="pcrb7t-">XYZ</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">CIE XYZ </span>colour space represented as a three-band
doc/src/vipsmanual/vipsmanualse18.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span> image.
doc/src/vipsmanual/vipsmanualse18.html:class="pcrb7t-">XYZ</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">CIE Yxy </span>colour space represented as a three-band
doc/src/vipsmanual/vipsmanualse18.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span> image.
doc/src/vipsmanual/vipsmanualse18.html:class="pcrb7t-">RGB</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse18.html:class="description">(also   refered   to   as   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">disp</span></span></span>)   This   format   is
doc/src/vipsmanual/vipsmanualse18.html:    colorimetric  image  to  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">RGB</span></span></span>,  then  turn  it  to  TIFF
doc/src/vipsmanual/vipsmanualse18.html:    with  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_vips2tiff()</span></span></span>.  You  need  to  supply  a
doc/src/vipsmanual/vipsmanualse18.html:    manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_col_XYZ2rgb()</span></span></span> for hints
doc/src/vipsmanual/vipsmanualse18.html:    <!--l. 205--><p class="noindent" >VIPS   also   supports   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">sRGB</span></span></span>.   This   is   a   version
doc/src/vipsmanual/vipsmanualse18.html:                                                     <div class="verbatim" id="verbatim-180">
doc/src/vipsmanual/vipsmanualse18.html:   <!--l. 210--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="pcrb7t-">LCh</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse18.html:class="description">Like <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span>, but rectangular <span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">ab </span>coordinates are replaced
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">Ch </span>(Chroma and hue) coordinates. Hue
doc/src/vipsmanual/vipsmanualse18.html:class="pcrb7t-">UCS</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span> for
doc/src/vipsmanual/vipsmanualse18.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">UCS</span></span></span> are extremely slow.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 223--><p class="indent" >    All VIPS colourspaces assume a D65 illuminant.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 225--><p class="indent" >    The colour-difference functions calculate either <span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmr-10">&#x0394;</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">E</span>
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-7">*</span> (1976 or 2000) or <span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmr-10">&#x0394;</span><span 
doc/src/vipsmanual/vipsmanualse18.html:class="cmmi-10">E </span>CMC(1:1) on two
doc/src/vipsmanual/vipsmanualse18.html:images in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">XYZ</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">disp</span></span></span> colour space.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 230--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1100025"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-181">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;colour
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_LCh2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LCh&#x00A0;to&#x00A0;Lab
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_LCh2UCS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LCh&#x00A0;to&#x00A0;UCS
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_Lab2LCh&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;LCh
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_Lab2LabQ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;LabQ
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_Lab2LabS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;LabS
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_Lab2UCS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;UCS
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_Lab2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;D65&#x00A0;Lab&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_Lab2XYZ_temp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;XYZ,&#x00A0;with&#x00A0;a&#x00A0;specified&#x00A0;colour&#x00A0;temperature
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_Lab2disp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;displayable
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_LabQ2LabS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;LabS
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_LabQ2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;Lab
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_LabQ2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_LabQ2disp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;displayable
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_LabS2LabQ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabS&#x00A0;to&#x00A0;LabQ
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_LabS2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabS&#x00A0;to&#x00A0;Lab
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_UCS2LCh&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;UCS&#x00A0;to&#x00A0;LCh
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_UCS2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;UCS&#x00A0;to&#x00A0;Lab
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_UCS2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;UCS&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_XYZ2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;D65&#x00A0;XYZ&#x00A0;to&#x00A0;Lab
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_XYZ2Lab_temp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;Lab,&#x00A0;with&#x00A0;a&#x00A0;specified&#x00A0;colour&#x00A0;temperature
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_XYZ2UCS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;UCS
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_XYZ2Yxy&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;Yxy
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_XYZ2disp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;displayble
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_XYZ2sRGB&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;sRGB
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_Yxy2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Yxy&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dE00_fromLab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;CIE2000&#x00A0;for&#x00A0;two&#x00A0;Lab&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dECMC_fromLab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;CMC(1:1)&#x00A0;for&#x00A0;two&#x00A0;Lab&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dECMC_fromdisp&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;CMC(1:1)&#x00A0;for&#x00A0;two&#x00A0;displayable&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dE_fromLab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;for&#x00A0;two&#x00A0;Lab&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dE_fromXYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;for&#x00A0;two&#x00A0;XYZ&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dE_fromdisp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;for&#x00A0;two&#x00A0;displayable&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_disp2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;displayable&#x00A0;to&#x00A0;Lab
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_disp2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;displayable&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_float2rad&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;float&#x00A0;to&#x00A0;Radiance&#x00A0;packed
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_icc_ac2rc&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LAB&#x00A0;from&#x00A0;AC&#x00A0;to&#x00A0;RC&#x00A0;using&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_icc_export&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;float&#x00A0;LAB&#x00A0;to&#x00A0;an&#x00A0;8-bit&#x00A0;device&#x00A0;image&#x00A0;with&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_icc_export_depth&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;float&#x00A0;LAB&#x00A0;to&#x00A0;device&#x00A0;space&#x00A0;with&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_icc_import&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;device&#x00A0;image&#x00A0;to&#x00A0;float&#x00A0;LAB&#x00A0;with&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_icc_import_embedded&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;device&#x00A0;image&#x00A0;to&#x00A0;float&#x00A0;LAB&#x00A0;using&#x00A0;the&#x00A0;embedded&#x00A0;profile
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_icc_present&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;test&#x00A0;for&#x00A0;presence&#x00A0;of&#x00A0;ICC&#x00A0;library
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_icc_transform&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;between&#x00A0;two&#x00A0;device&#x00A0;images&#x00A0;with&#x00A0;a&#x00A0;pair&#x00A0;of&#x00A0;ICC&#x00A0;profiles
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lab_morph&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;morph&#x00A0;colourspace&#x00A0;of&#x00A0;a&#x00A0;LAB&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rad2float&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Radiance&#x00A0;packed&#x00A0;to&#x00A0;float
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_sRGB2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;sRGB&#x00A0;to&#x00A0;XYZ
doc/src/vipsmanual/vipsmanualse18.html:</div>                                            <!--l. 276--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Colour functions</span></div><!--tex4ht:label?: x26-1100025 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1110004.2.5"></a>Conversion</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 283--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-1110016">4.6<!--tex4ht:ref: fg:conversion --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 285--><p class="indent" >  These functions may be split into three broad groups:
doc/src/vipsmanual/vipsmanualse18.html:(<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_clip2fmt()</span></span></span>, for example, converts an image of
doc/src/vipsmanual/vipsmanualse18.html:any type to the specified <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT</span></span></span>), functions
doc/src/vipsmanual/vipsmanualse18.html:supporting complex arithmetic (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_c2amph()</span></span></span>, for
doc/src/vipsmanual/vipsmanualse18.html:simple geometric conversion (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_extract()</span></span></span> forms a
doc/src/vipsmanual/vipsmanualse18.html:sub-image).
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 293--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">gbandjoin</span></span></span> and the C function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_gbandjoin()</span></span></span>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 297--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1110016"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-182">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;conversion
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_bandjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bandwise&#x00A0;join&#x00A0;of&#x00A0;two&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_bernd&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;from&#x00A0;pyramid&#x00A0;as&#x00A0;jpeg
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_black&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;black&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_c2amph&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;real&#x00A0;and&#x00A0;imaginary&#x00A0;to&#x00A0;phase&#x00A0;and&#x00A0;amplitude
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_c2imag&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;imaginary&#x00A0;part&#x00A0;of&#x00A0;complex&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_c2ps&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;power&#x00A0;spectrum&#x00A0;of&#x00A0;complex&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_c2real&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;real&#x00A0;part&#x00A0;of&#x00A0;complex&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_c2rect&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;phase&#x00A0;and&#x00A0;amplitude&#x00A0;to&#x00A0;real&#x00A0;and&#x00A0;imaginary
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2c&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;signed&#x00A0;8-bit&#x00A0;integer
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2cm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;complex
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2d&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;double-precision&#x00A0;float
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2dcm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;double&#x00A0;complex
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2f&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;single-precision&#x00A0;float
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2fmt&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;image&#x00A0;format&#x00A0;to&#x00A0;ofmt
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2i&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;signed&#x00A0;32-bit&#x00A0;integer
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2s&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;signed&#x00A0;16-bit&#x00A0;integer
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2ui&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;unsigned&#x00A0;32-bit&#x00A0;integer
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip2us&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;unsigned&#x00A0;16-bit&#x00A0;integer
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_clip&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;unsigned&#x00A0;8-bit&#x00A0;integer
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_copy&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_copy_morph&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;setting&#x00A0;pixel&#x00A0;layout
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_copy_swap&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;swapping&#x00A0;byte&#x00A0;order
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_copy_set&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;setting&#x00A0;informational&#x00A0;fields
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_copy_set_meta&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;setting&#x00A0;a&#x00A0;meta&#x00A0;field
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_extract_area&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;area
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_extract_areabands&#x00A0;-&#x00A0;extract&#x00A0;area&#x00A0;and&#x00A0;bands
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_extract_band&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;band
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_extract_bands&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;several&#x00A0;bands
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_extract&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;area/band
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_falsecolour&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;turn&#x00A0;luminance&#x00A0;changes&#x00A0;into&#x00A0;chrominance&#x00A0;changes
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_fliphor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;flip&#x00A0;image&#x00A0;left-right
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_flipver&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;flip&#x00A0;image&#x00A0;top-bottom
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gbandjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bandwise&#x00A0;join&#x00A0;of&#x00A0;many&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_grid&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;chop&#x00A0;a&#x00A0;tall&#x00A0;thin&#x00A0;image&#x00A0;into&#x00A0;a&#x00A0;grid&#x00A0;of&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_insert&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;insert&#x00A0;sub-image&#x00A0;into&#x00A0;main&#x00A0;image&#x00A0;at&#x00A0;position
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_insert_noexpand&#x00A0;&#x00A0;&#x00A0;-&#x00A0;insert&#x00A0;sub-image&#x00A0;into&#x00A0;main&#x00A0;image&#x00A0;at&#x00A0;position,&#x00A0;no&#x00A0;expansion
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lrjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;join&#x00A0;two&#x00A0;images&#x00A0;left-right
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_mask2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;DOUBLEMASK&#x00A0;to&#x00A0;VIPS&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_msb&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;uchar&#x00A0;by&#x00A0;discarding&#x00A0;bits
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_msb_band&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;single&#x00A0;band&#x00A0;uchar&#x00A0;by&#x00A0;discarding&#x00A0;bits
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_print&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;print&#x00A0;string&#x00A0;to&#x00A0;stdout
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_recomb&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;linear&#x00A0;recombination&#x00A0;with&#x00A0;mask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_replicate&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;replicate&#x00A0;an&#x00A0;image&#x00A0;horizontally&#x00A0;and&#x00A0;vertically
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_ri2c&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;join&#x00A0;two&#x00A0;non-complex&#x00A0;images&#x00A0;to&#x00A0;form&#x00A0;complex
doc/src/vipsmanual/vipsmanualse18.html:</div>                                            <!--l. 343--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Conversion functions</span></div><!--tex4ht:label?: x26-1110016 -->
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 349--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1110027"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-183">
doc/src/vipsmanual/vipsmanualse18.html:im_rot180&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;180&#x00A0;degrees
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rot270&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;270&#x00A0;degrees&#x00A0;clockwise
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rot90&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;90&#x00A0;degrees&#x00A0;clockwise
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_scale&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;scale&#x00A0;image&#x00A0;linearly&#x00A0;to&#x00A0;fit&#x00A0;range&#x00A0;0-255
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_scaleps&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;logarithmic&#x00A0;scale&#x00A0;of&#x00A0;image&#x00A0;to&#x00A0;fit&#x00A0;range&#x00A0;0-255
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rightshift_size&#x00A0;&#x00A0;&#x00A0;-&#x00A0;decrease&#x00A0;size&#x00A0;by&#x00A0;a&#x00A0;power-of-two&#x00A0;factor
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_slice&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;slice&#x00A0;an&#x00A0;image&#x00A0;using&#x00A0;two&#x00A0;thresholds
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_subsample&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;subsample&#x00A0;image&#x00A0;by&#x00A0;integer&#x00A0;factors
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_system&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;run&#x00A0;command&#x00A0;on&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tbjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;join&#x00A0;two&#x00A0;images&#x00A0;top-bottom
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_text&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;text&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_thresh&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;slice&#x00A0;an&#x00A0;image&#x00A0;at&#x00A0;a&#x00A0;threshold
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_vips2mask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;VIPS&#x00A0;image&#x00A0;to&#x00A0;DOUBLEMASK
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_wrap&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shift&#x00A0;image&#x00A0;origin,&#x00A0;wrapping&#x00A0;at&#x00A0;sides
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_zoom&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;simple&#x00A0;zoom&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;by&#x00A0;integer&#x00A0;factors
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 365--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Conversion functions (cont.)</span></div><!--tex4ht:label?: x26-1110027 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1120004.2.6"></a>Matricies</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 371--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-1120018">4.8<!--tex4ht:ref: fg:matricies --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 373--><p class="indent" >  VIPS uses matricies for morphological operations, for
doc/src/vipsmanual/vipsmanualse18.html:convolutions, and for some colour-space conversions. There
doc/src/vipsmanual/vipsmanualse18.html:are two types of matrix: integer (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">INTMASK</span></span></span>) and double
doc/src/vipsmanual/vipsmanualse18.html:precision floating point (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span>).
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 377--><p class="indent" >  For convenience, both types are stored in files as ASCII.
doc/src/vipsmanual/vipsmanualse18.html:non-integer values in convolution masks &#8212; in other
doc/src/vipsmanual/vipsmanualse18.html:  <center class="par-math-display" >
doc/src/vipsmanual/vipsmanualse18.html:result =-scale + of fset
doc/src/vipsmanual/vipsmanualse18.html:" class="par-math-display" ></center>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 387--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 389--><p class="indent" >  If the scale and offset are missing, they default to 1.0 and
doc/src/vipsmanual/vipsmanualse18.html:                                                 <div class="verbatim" id="verbatim-184">
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 399--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 401--><p class="indent" >  And a 3 by 3 mask for block averaging with convolution
doc/src/vipsmanual/vipsmanualse18.html:  <div class="verbatim" id="verbatim-185">
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 408--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 410--><p class="noindent" >(in other words, sum all the pels in every 3 by 3 area, and
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 413--><p class="indent" >  This matrix contains only integer elements and so could
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">INTMASK</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span> matricies. However, masks
doc/src/vipsmanual/vipsmanualse18.html:containing floating-point values (such as the output of
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_matinv()</span></span></span>) can only be used as arguments to
doc/src/vipsmanual/vipsmanualse18.html:functions expecting <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span>s.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 419--><p class="indent" >  A set of functions for mask input and output are also
doc/src/vipsmanual/vipsmanualse18.html:available for C-programmers &#8212; see the manual pages for
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_read_dmask()</span></span></span>. For other matrix functions,
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 425--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1120018"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-186">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;matrix
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_matcat&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;append&#x00A0;matrix&#x00A0;in2&#x00A0;to&#x00A0;the&#x00A0;end&#x00A0;of&#x00A0;matrix&#x00A0;in1
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_matinv&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;invert&#x00A0;matrix
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_matmul&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;multiply&#x00A0;matrix&#x00A0;in1&#x00A0;by&#x00A0;matrix&#x00A0;in2
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_mattrn&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;transpose&#x00A0;matrix
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 431--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Matrix functions</span></div><!--tex4ht:label?: x26-1120018 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1130004.2.7"></a>Convolution</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 438--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-1130019">4.9<!--tex4ht:ref: fg:convolution --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 440--><p class="indent" >  The functions available in the convolution package can be
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 443--><p class="indent" >  First, are the convolution functions. The most useful
doc/src/vipsmanual/vipsmanualse18.html:function is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_conv()</span></span></span> which will convolve any
doc/src/vipsmanual/vipsmanualse18.html:non-complex type with an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">INTMASK</span></span></span> matrix. The output
doc/src/vipsmanual/vipsmanualse18.html:the input image. Of the other <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_conv()</span></span></span> functions,
doc/src/vipsmanual/vipsmanualse18.html:functions whose name ends in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">_raw</span></span></span> do not add a black
doc/src/vipsmanual/vipsmanualse18.html:border around the output image, functions ending in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">f</span></span></span> use
doc/src/vipsmanual/vipsmanualse18.html:a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span> matrix and write float (or double)
doc/src/vipsmanual/vipsmanualse18.html:output, and functions containing <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">sep</span></span></span> are for seperable
doc/src/vipsmanual/vipsmanualse18.html:convolutions. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_compass()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_lindetect()</span></span></span>
doc/src/vipsmanual/vipsmanualse18.html:and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_gradient()</span></span></span> convolve with rotating masks.
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_embed()</span></span></span> is used by the convolution functions to add
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 454--><p class="indent" >  Next, are the build functions. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_gauss_&#x22C6;mask()</span></span></span> and
doc/src/vipsmanual/vipsmanualse18.html:its ilk generate gaussian masks, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_log_&#x22C6;mask()</span></span></span>
doc/src/vipsmanual/vipsmanualse18.html:generate logs of Laplacians. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_addgnoise()</span></span></span> and
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_gaussnoise()</span></span></span> create or add gaussian noise to an
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 459--><p class="indent" >  Two functions do correlation: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_fastcor()</span></span></span> does a
doc/src/vipsmanual/vipsmanualse18.html:quick and dirty correlation, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_spcor()</span></span></span> calculates true
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 463--><p class="indent" >  Some functions are provided for analysing images:
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_zerox()</span></span></span> counts zero-crossing points in an image,
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_mpercent()</span></span></span> finds a threshold that will isolate a
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 467--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_resize_linear()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_shrink()</span></span></span>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 471--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1130019"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-187">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;convolution
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_addgnoise&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;add&#x00A0;gaussian&#x00A0;noise&#x00A0;with&#x00A0;mean&#x00A0;0&#x00A0;and&#x00A0;std.&#x00A0;dev.&#x00A0;sigma
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_compass&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;with&#x00A0;8-way&#x00A0;rotating&#x00A0;integer&#x00A0;mask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_contrast_surface&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;high-contrast&#x00A0;points&#x00A0;in&#x00A0;an&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_contrast_surface_raw&#x00A0;-&#x00A0;find&#x00A0;high-contrast&#x00A0;points&#x00A0;in&#x00A0;an&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_conv&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_conv_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve,&#x00A0;no&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_convf&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve,&#x00A0;with&#x00A0;DOUBLEMASK
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_convf_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve,&#x00A0;with&#x00A0;DOUBLEMASK,&#x00A0;no&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_convsep&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_convsep_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution,&#x00A0;no&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_convsepf&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution,&#x00A0;with&#x00A0;DOUBLEMASK
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_convsepf_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution,&#x00A0;with&#x00A0;DOUBLEMASK,&#x00A0;no&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_convsub&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;uchar&#x00A0;to&#x00A0;uchar,&#x00A0;sub-sampling&#x00A0;by&#x00A0;xskip,&#x00A0;yskip
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dmask_xsize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;horizontal&#x00A0;size&#x00A0;of&#x00A0;a&#x00A0;doublemask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dmask_ysize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;vertical&#x00A0;size&#x00A0;of&#x00A0;a&#x00A0;doublemask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_embed&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;embed&#x00A0;in&#x00A0;within&#x00A0;a&#x00A0;set&#x00A0;of&#x00A0;borders
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_fastcor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;fast&#x00A0;correlate&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_fastcor_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;fast&#x00A0;correlate&#x00A0;in2&#x00A0;within&#x00A0;in1,&#x00A0;no&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gauss_dmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;gaussian&#x00A0;DOUBLEMASK
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gauss_imask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;gaussian&#x00A0;INTMASK
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gauss_imask_sep&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;separable&#x00A0;gaussian&#x00A0;INTMASK
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gaussnoise&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;image&#x00A0;of&#x00A0;gaussian&#x00A0;noise&#x00A0;with&#x00A0;specified&#x00A0;statistics
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_grad_x&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;horizontal&#x00A0;difference&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_grad_y&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;vertical&#x00A0;difference&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gradcor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;non-normalised&#x00A0;correlation&#x00A0;of&#x00A0;gradient&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gradcor_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;non-normalised&#x00A0;correlation&#x00A0;of&#x00A0;gradient&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1,&#x00A0;no&#x00A0;padding
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gradient&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;with&#x00A0;2-way&#x00A0;rotating&#x00A0;mask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_imask_xsize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;horizontal&#x00A0;size&#x00A0;of&#x00A0;an&#x00A0;intmask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_imask_ysize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;vertical&#x00A0;size&#x00A0;of&#x00A0;an&#x00A0;intmask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rank_image&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;point-wise&#x00A0;pixel&#x00A0;rank
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lindetect&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;with&#x00A0;4-way&#x00A0;rotating&#x00A0;mask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_log_dmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;laplacian&#x00A0;of&#x00A0;gaussian&#x00A0;DOUBLEMASK
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_log_imask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;laplacian&#x00A0;of&#x00A0;gaussian&#x00A0;INTMASK
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_maxvalue&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;point-wise&#x00A0;maximum&#x00A0;value
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_mpercent&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;threshold&#x00A0;above&#x00A0;which&#x00A0;there&#x00A0;are&#x00A0;percent&#x00A0;values
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_phasecor_fft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;non-normalised&#x00A0;correlation&#x00A0;of&#x00A0;gradient&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rank&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rank&#x00A0;filter&#x00A0;nth&#x00A0;element&#x00A0;of&#x00A0;xsize/ysize&#x00A0;window
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rank_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rank&#x00A0;filter&#x00A0;nth&#x00A0;element&#x00A0;of&#x00A0;xsize/ysize&#x00A0;window,&#x00A0;no&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_read_dmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;matrix&#x00A0;of&#x00A0;double&#x00A0;from&#x00A0;file
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_resize_linear&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;resize&#x00A0;to&#x00A0;X&#x00A0;by&#x00A0;Y&#x00A0;pixels&#x00A0;with&#x00A0;linear&#x00A0;interpolation
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rotate_dmask45&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;DOUBLEMASK&#x00A0;clockwise&#x00A0;by&#x00A0;45&#x00A0;degrees
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rotate_dmask90&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;DOUBLEMASK&#x00A0;clockwise&#x00A0;by&#x00A0;90&#x00A0;degrees
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rotate_imask45&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;INTMASK&#x00A0;clockwise&#x00A0;by&#x00A0;45&#x00A0;degrees
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rotate_imask90&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;INTMASK&#x00A0;clockwise&#x00A0;by&#x00A0;90&#x00A0;degrees
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_sharpen&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;sharpen&#x00A0;high&#x00A0;frequencies&#x00A0;of&#x00A0;L&#x00A0;channel&#x00A0;of&#x00A0;LabQ&#x00A0;<br />im_shrink&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shrink&#x00A0;image&#x00A0;by&#x00A0;xfac,&#x00A0;yfac&#x00A0;times
doc/src/vipsmanual/vipsmanualse18.html: &#x00A0;<br />im_spcor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;normalised&#x00A0;correlation&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/src/vipsmanual/vipsmanualse18.html: &#x00A0;<br />im_spcor_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;normalised&#x00A0;correlation&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1,&#x00A0;no&#x00A0;black&#x00A0;padding
doc/src/vipsmanual/vipsmanualse18.html: &#x00A0;<br />im_stretch3&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;stretch&#x00A0;3%,&#x00A0;sub-pixel&#x00A0;displace&#x00A0;by&#x00A0;xdisp/ydisp
doc/src/vipsmanual/vipsmanualse18.html: &#x00A0;<br />im_zerox&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;+ve&#x00A0;or&#x00A0;-ve&#x00A0;zero&#x00A0;crossings&#x00A0;in&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 523--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Convolution functions</span></div><!--tex4ht:label?: x26-1130019 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1140004.2.8"></a>In-place operations</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 531--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-11400110">4.10<!--tex4ht:ref: fg:inplace --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 533--><p class="indent" >  A few of the in-place operations are available from the
doc/src/vipsmanual/vipsmanualse18.html:command-line. Most are not.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 537--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-11400110"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-188">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;inplace
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_circle&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;plot&#x00A0;circle&#x00A0;on&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_flood_blob_copy&#x00A0;-&#x00A0;flood&#x00A0;while&#x00A0;pixel&#x00A0;==&#x00A0;start&#x00A0;pixel
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_insertplace&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;draw&#x00A0;image&#x00A0;sub&#x00A0;inside&#x00A0;image&#x00A0;main&#x00A0;at&#x00A0;position&#x00A0;(x,y)
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_line&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;draw&#x00A0;line&#x00A0;between&#x00A0;points&#x00A0;(x1,y1)&#x00A0;and&#x00A0;(x2,y2)
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lineset&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;draw&#x00A0;line&#x00A0;between&#x00A0;points&#x00A0;(x1,y1)&#x00A0;and&#x00A0;(x2,y2)
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 544--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">In-place operations</span></div><!--tex4ht:label?: x26-11400110 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1150004.2.9"></a>Frequency filtering</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 551--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-11500111">4.11<!--tex4ht:ref: fg:freq --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 553--><p class="indent" >  The basic Fourier functions are <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_fwfft()</span></span></span> and
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_invfft()</span></span></span>, which calculate the fast-fourier transform
doc/src/vipsmanual/vipsmanualse18.html:and inverse transform of an image. Also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_invfftr()</span></span></span>,
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_rotquad()</span></span></span> to move the origin to the centre of the
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 561--><p class="indent" >  Once an image is in the frequency domain, it can be
doc/src/vipsmanual/vipsmanualse18.html:mask generator is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_create_fmask()</span></span></span> see the manual
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 567--><p class="indent" >  The other functions in the package build on these base
doc/src/vipsmanual/vipsmanualse18.html:facilities. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_freqflt()</span></span></span> transforms an input image
doc/src/vipsmanual/vipsmanualse18.html:transforms it back again. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_flt_image_freq()</span></span></span> will
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_freqflt()</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_disp_ps()</span></span></span> will call the right
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 576--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-11500111"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-189">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;freq_filt
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_create_fmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;create&#x00A0;frequency&#x00A0;domain&#x00A0;filter&#x00A0;mask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_disp_ps&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;make&#x00A0;displayable&#x00A0;power&#x00A0;spectrum
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_flt_image_freq&#x00A0;&#x00A0;-&#x00A0;frequency&#x00A0;domain&#x00A0;filter&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_fractsurf&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;a&#x00A0;fractal&#x00A0;surface&#x00A0;of&#x00A0;given&#x00A0;dimension
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_freqflt&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;frequency-domain&#x00A0;filter&#x00A0;of&#x00A0;in&#x00A0;with&#x00A0;mask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_fwfft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;forward&#x00A0;fast-fourier&#x00A0;transform
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_rotquad&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;quadrants&#x00A0;to&#x00A0;move&#x00A0;origin&#x00A0;to&#x00A0;centre
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_invfft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;inverse&#x00A0;fast-fourier&#x00A0;transform
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_invfftr&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;real&#x00A0;part&#x00A0;of&#x00A0;inverse&#x00A0;fast-fourier&#x00A0;transform
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 587--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Fourier functions</span></div><!--tex4ht:label?: x26-11500111 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1160004.2.10"></a>Histograms and LUTs</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 594--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-11600112">4.12<!--tex4ht:ref: fg:hist --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 596--><p class="indent" >  VIPS represents histograms and look-up tables in the
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 598--><p class="indent" >  They should have either <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">Xsize</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">Ysize</span></span></span> set to 1, and
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 602--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_histgr()</span></span></span> to find the histogram of an
doc/src/vipsmanual/vipsmanualse18.html:image. Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_histnD()</span></span></span> to find the n-dimensional
doc/src/vipsmanual/vipsmanualse18.html:histogram of an n-band image. Perform operations on
doc/src/vipsmanual/vipsmanualse18.html:histograms with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_histcum()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_histnorm()</span></span></span>,
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_histspec()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_invertlut()</span></span></span>. Visualise
doc/src/vipsmanual/vipsmanualse18.html:histograms with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_histplot()</span></span></span>. Use a histogram (or
doc/src/vipsmanual/vipsmanualse18.html:LUT) to transform an image with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_maplut()</span></span></span>. Build a
doc/src/vipsmanual/vipsmanualse18.html:histogram from scratch with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_identity()</span></span></span> or
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_identity_ushort()</span></span></span>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 610--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_lhist&#x22C6;()</span></span></span> for local histogram equalisation,
doc/src/vipsmanual/vipsmanualse18.html:and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_stdif&#x22C6;()</span></span></span> for statisticaol differencing. The
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_tone_&#x22C6;()</span></span></span> functions are for operations on the L
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 616--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-11600112"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-190">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;histograms_lut
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_gammacorrect&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;gamma-correct&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_heq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;histogram-equalise&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_hist&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;and&#x00A0;graph&#x00A0;histogram&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_histcum&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;turn&#x00A0;histogram&#x00A0;to&#x00A0;cumulative&#x00A0;histogram
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_histeq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;form&#x00A0;histogram&#x00A0;equalistion&#x00A0;LUT
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_histgr&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;histogram&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_histnD&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;1D,&#x00A0;2D&#x00A0;or&#x00A0;3D&#x00A0;histogram&#x00A0;of&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_histnorm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;form&#x00A0;normalised&#x00A0;histogram
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_histplot&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;plot&#x00A0;graph&#x00A0;of&#x00A0;histogram
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_histspec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;histogram&#x00A0;which&#x00A0;will&#x00A0;make&#x00A0;pdf&#x00A0;of&#x00A0;in&#x00A0;match&#x00A0;ref
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_hsp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;match&#x00A0;stats&#x00A0;of&#x00A0;in&#x00A0;to&#x00A0;stats&#x00A0;of&#x00A0;ref
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_identity&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;identity&#x00A0;histogram
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_identity_ushort&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;ushort&#x00A0;identity&#x00A0;histogram
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_ismonotonic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;test&#x00A0;LUT&#x00A0;for&#x00A0;monotonicity
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lhisteq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;local&#x00A0;histogram&#x00A0;equalisation
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lhisteq_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;local&#x00A0;histogram&#x00A0;equalisation,&#x00A0;no&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_invertlut&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;correction&#x00A0;table&#x00A0;from&#x00A0;set&#x00A0;of&#x00A0;measures
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_buildlut&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;LUT&#x00A0;table&#x00A0;from&#x00A0;set&#x00A0;of&#x00A0;x/y&#x00A0;positions
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_maplut&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;map&#x00A0;image&#x00A0;through&#x00A0;LUT
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_project&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;horizontal&#x00A0;and&#x00A0;vertical&#x00A0;projections&#x00A0;of&#x00A0;an&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_stdif&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;statistical&#x00A0;differencing
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_stdif_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;statistical&#x00A0;differencing,&#x00A0;no&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tone_analyse&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;analyse&#x00A0;in&#x00A0;and&#x00A0;create&#x00A0;LUT&#x00A0;for&#x00A0;tone&#x00A0;adjustment
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tone_build&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;create&#x00A0;LUT&#x00A0;for&#x00A0;tone&#x00A0;adjustment&#x00A0;of&#x00A0;LabS&#x00A0;images
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tone_build_range&#x00A0;&#x00A0;-&#x00A0;create&#x00A0;LUT&#x00A0;for&#x00A0;tone&#x00A0;adjustment
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tone_map&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;map&#x00A0;L&#x00A0;channel&#x00A0;of&#x00A0;LabS&#x00A0;or&#x00A0;LabQ&#x00A0;image&#x00A0;through&#x00A0;LUT
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 644--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Histogram/LUT functions</span></div><!--tex4ht:label?: x26-11600112 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1170004.2.11"></a>Morphology</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 651--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-11700113">4.13<!--tex4ht:ref: fg:morph --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 653--><p class="indent" >  The morphological functions are used on one-band
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> binary images (images containing
doc/src/vipsmanual/vipsmanualse18.html:only zero and not-zero). They search images for particular
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 661--><p class="indent" >  If you combine the morphological operators with
doc/src/vipsmanual/vipsmanualse18.html:the mask rotators (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_rotate_imask45()</span></span></span>, for
doc/src/vipsmanual/vipsmanualse18.html:384-388, Prentice-Hall, 1989 for more ideas.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 667--><p class="indent" >  Beware that VIPS reverses the usual image processing
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 670--><p class="indent" >  The mask you give to the morphological functions should
doc/src/vipsmanual/vipsmanualse18.html:                                                 <div class="verbatim" id="verbatim-191">
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 680--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 682--><p class="noindent" >applied to an image with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_erode()</span></span></span>, will find all black
doc/src/vipsmanual/vipsmanualse18.html:pixels 4-way connected with white pixels. Essentially,
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_dilate()</span></span></span> sets pixels in the output if any part of the
doc/src/vipsmanual/vipsmanualse18.html:mask matches, whereas <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_erode()</span></span></span> sets pixels only if all
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 688--><p class="indent" >    The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">_raw()</span></span></span> version of the functions do not add a
doc/src/vipsmanual/vipsmanualse18.html:black border to the output. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_cntlines()</span></span></span> and
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_profile</span></span></span> are occasionally useful for analysing
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 692--><p class="indent" >    See the boolean operations <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_and()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_or()</span></span></span> and
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_eor()</span></span></span> for analogues of the usual set difference and set
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 697--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-11700113"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-192">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;morphology
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_cntlines&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;count&#x00A0;horizontal&#x00A0;or&#x00A0;vertical&#x00A0;lines
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dilate&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;dilate&#x00A0;image&#x00A0;with&#x00A0;mask,&#x00A0;adding&#x00A0;a&#x00A0;black&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_dilate_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;dilate&#x00A0;image&#x00A0;with&#x00A0;mask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_erode&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;erode&#x00A0;image&#x00A0;with&#x00A0;mask,&#x00A0;adding&#x00A0;a&#x00A0;black&#x00A0;border
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_erode_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;erode&#x00A0;image&#x00A0;with&#x00A0;mask
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_profile&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;first&#x00A0;horizontal/vertical&#x00A0;edge
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 705--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Morphological functions</span></div><!--tex4ht:label?: x26-11700113 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1180004.2.12"></a>Mosaicing</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 712--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-11800114">4.14<!--tex4ht:ref: fg:mosaicing --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 714--><p class="indent" >  These functions are useful for joining many small images
doc/src/vipsmanual/vipsmanualse18.html:unstable contrast, and arbitary sub-image layout, but will
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 719--><p class="indent" >  The lowest level functions are <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_correl()</span></span></span>. and
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_affine()</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_correl()</span></span></span> searches a large image
doc/src/vipsmanual/vipsmanualse18.html:for a small sub-image, returning the position of the best
doc/src/vipsmanual/vipsmanualse18.html:sub-image match. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_affine()</span></span></span> performs a general
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 725--><p class="indent" >  Next, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_lrmerge()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_tbmerge()</span></span></span> blend two
doc/src/vipsmanual/vipsmanualse18.html:images together left-right or up-down.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 728--><p class="indent" >  Next up are <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic()</span></span></span>.
doc/src/vipsmanual/vipsmanualse18.html:These use the two low-level merge operations to join two
doc/src/vipsmanual/vipsmanualse18.html:from photographic sources), <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic()</span></span></span> and
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic()</span></span></span> will adjust the contrast of the left image
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 737--><p class="indent" >  The functions <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic1()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic1()</span></span></span>
doc/src/vipsmanual/vipsmanualse18.html:are first-order analogues of the basic mosaic functions:
doc/src/vipsmanual/vipsmanualse18.html:they take two tie-points and use them to rotate and
doc/src/vipsmanual/vipsmanualse18.html:scale the right-hand or bottom image before starting to
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 741--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_global_balance()</span></span></span> can be used to
doc/src/vipsmanual/vipsmanualse18.html:re-balance a mosaic which has been assembled with
doc/src/vipsmanual/vipsmanualse18.html:low-level balancer built into <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic()</span></span></span> and
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic()</span></span></span>. See the man page. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_remosaic()</span></span></span>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 749--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-11800114"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-193">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;mosaicing
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_align_bands&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;align&#x00A0;the&#x00A0;bands&#x00A0;of&#x00A0;an&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_correl&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;search&#x00A0;area&#x00A0;around&#x00A0;sec&#x00A0;for&#x00A0;match&#x00A0;for&#x00A0;area&#x00A0;around&#x00A0;ref
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im__find_lroverlap&#x00A0;&#x00A0;&#x00A0;-&#x00A0;search&#x00A0;for&#x00A0;left-right&#x00A0;overlap&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im__find_tboverlap&#x00A0;&#x00A0;&#x00A0;-&#x00A0;search&#x00A0;for&#x00A0;top-bottom&#x00A0;overlap&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_global_balance&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;automatically&#x00A0;rebuild&#x00A0;mosaic&#x00A0;with&#x00A0;balancing
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_global_balancef&#x00A0;&#x00A0;&#x00A0;-&#x00A0;automatically&#x00A0;rebuild&#x00A0;mosaic&#x00A0;with&#x00A0;balancing,&#x00A0;float&#x00A0;output
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lrmerge&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;left-right&#x00A0;merge&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lrmerge1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;left-right&#x00A0;merge&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lrmosaic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;left-right&#x00A0;mosaic&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_lrmosaic1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;left-right&#x00A0;mosaic&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_match_linear&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;resample&#x00A0;ref&#x00A0;so&#x00A0;that&#x00A0;tie-points&#x00A0;match
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_match_linear_search&#x00A0;-&#x00A0;search&#x00A0;sec,&#x00A0;then&#x00A0;resample&#x00A0;so&#x00A0;that&#x00A0;tie-points&#x00A0;match
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_maxpos_subpel&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;subpixel&#x00A0;position&#x00A0;of&#x00A0;maximum&#x00A0;of&#x00A0;(phase&#x00A0;correlation)&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_remosaic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;automatically&#x00A0;rebuild&#x00A0;mosaic&#x00A0;with&#x00A0;new&#x00A0;files
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tbmerge&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;top-bottom&#x00A0;merge&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tbmerge1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;top-bottom&#x00A0;merge&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tbmosaic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;top-bottom&#x00A0;mosaic&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tbmosaic1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;top-bottom&#x00A0;mosaic&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 769--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Mosaic functions</span></div><!--tex4ht:label?: x26-11800114 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1190004.2.13"></a>CImg functions</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 776--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-11900115">4.15<!--tex4ht:ref: fg:cimg --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 778--><p class="indent" >  These operations wrap the anisotropic blur function from
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 782--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-11900115"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-194">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;cimg
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_greyc&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;noise-removing&#x00A0;filter
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_greyc_mask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;noise-removing&#x00A0;filter,&#x00A0;with&#x00A0;a&#x00A0;mask
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 786--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">CImg functions</span></div><!--tex4ht:label?: x26-11900115 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1200004.2.14"></a>Other</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 793--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-12000116">4.16<!--tex4ht:ref: fg:other --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 795--><p class="indent" >  These functions generate various test images. You can
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 798--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">im_benchmark&#x22C6;()</span></span></span> operations are for testing the
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 801--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-12000116"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-195">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;other
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_benchmark&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;do&#x00A0;something&#x00A0;complicated&#x00A0;for&#x00A0;testing
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_benchmark2&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;do&#x00A0;something&#x00A0;complicated&#x00A0;for&#x00A0;testing
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_benchmarkn&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;do&#x00A0;something&#x00A0;complicated&#x00A0;for&#x00A0;testing
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_eye&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_UCHAR&#x00A0;[0,255]&#x00A0;frequency/amplitude&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_grey&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_UCHAR&#x00A0;[0,255]&#x00A0;grey&#x00A0;scale&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_feye&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_FLOAT&#x00A0;[-1,1]&#x00A0;frequency/amplitude&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_fgrey&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_FLOAT&#x00A0;[0,1]&#x00A0;grey&#x00A0;scale&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_fzone&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_FLOAT&#x00A0;[-1,1]&#x00A0;zone&#x00A0;plate&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_make_xy&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;image&#x00A0;with&#x00A0;pixel&#x00A0;value&#x00A0;equal&#x00A0;to&#x00A0;coordinate
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_zone&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_UCHAR&#x00A0;[0,255]&#x00A0;zone&#x00A0;plate&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 813--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Other functions</span></div><!--tex4ht:label?: x26-12000116 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1210004.2.15"></a>IO functions</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 820--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-12100117">4.17<!--tex4ht:ref: fg:io --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 822--><p class="indent" >  These functions are related to the image IO system.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 825--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-12100117"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-196">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;iofuncs
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_binfile&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;open&#x00A0;a&#x00A0;headerless&#x00A0;binary&#x00A0;file
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_cache&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;cache&#x00A0;results&#x00A0;of&#x00A0;an&#x00A0;operation
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_guess_prefix&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;guess&#x00A0;install&#x00A0;area
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_guess_libdir&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;guess&#x00A0;library&#x00A0;area
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_header_get_type&#x00A0;-&#x00A0;return&#x00A0;field&#x00A0;type
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_header_int&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;int&#x00A0;fields&#x00A0;from&#x00A0;header
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_header_double&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;double&#x00A0;fields&#x00A0;from&#x00A0;header
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_header_string&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;string&#x00A0;fields&#x00A0;from&#x00A0;header
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_version&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;VIPS&#x00A0;version&#x00A0;number
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_version_string&#x00A0;&#x00A0;-&#x00A0;VIPS&#x00A0;version&#x00A0;string
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 837--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">IO functions</span></div><!--tex4ht:label?: x26-12100117 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1220004.2.16"></a>Format functions</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 844--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-12200118">4.18<!--tex4ht:ref: fg:format --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 846--><p class="indent" >  These functions convert to and from various image
doc/src/vipsmanual/vipsmanualse18.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse18.html:href="vipsmanualse11.html#x17-740002.5">2.5<!--tex4ht:ref: sec:format --></a> for a nice API over these. VIPS can
doc/src/vipsmanual/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse18.html:class="pcrr7t-">VipsFormat</span></span></span>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 851--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-12200118"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-197">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;format
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_csv2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;csv&#x00A0;format
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_jpeg2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;from&#x00A0;jpeg
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_magick2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;load&#x00A0;file&#x00A0;with&#x00A0;libMagick
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_png2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;PNG&#x00A0;file&#x00A0;to&#x00A0;VIPS&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_exr2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;an&#x00A0;OpenEXR&#x00A0;file&#x00A0;to&#x00A0;VIPS
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_ppm2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;pbm/pgm/ppm&#x00A0;format
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_analyze2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;analyze&#x00A0;format
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_tiff2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;TIFF&#x00A0;file&#x00A0;to&#x00A0;VIPS&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_vips2csv&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;write&#x00A0;an&#x00A0;image&#x00A0;in&#x00A0;csv&#x00A0;format
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_vips2jpeg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;jpeg
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_vips2mimejpeg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;jpeg&#x00A0;as&#x00A0;mime&#x00A0;type&#x00A0;on&#x00A0;stdout
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_vips2png&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;VIPS&#x00A0;image&#x00A0;to&#x00A0;PNG&#x00A0;file
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_vips2ppm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;write&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;pbm/pgm/ppm&#x00A0;format
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_vips2tiff&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;VIPS&#x00A0;image&#x00A0;to&#x00A0;TIFF&#x00A0;file
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 867--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Format functions</span></div><!--tex4ht:label?: x26-12200118 -->
doc/src/vipsmanual/vipsmanualse18.html: id="x26-1230004.2.17"></a>Resample functions</h4>
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 874--><p class="noindent" >See Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse18.html:href="#x26-12300119">4.19<!--tex4ht:ref: fg:resample --></a>.
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 876--><p class="indent" >  These functions resample images with various
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 879--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse18.html: id="x26-12300119"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse18.html:<div class="verbatim" id="verbatim-198">
doc/src/vipsmanual/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;resample
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_affine&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;affine&#x00A0;transform
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_affinei&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;affine&#x00A0;transform
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_affinei_all&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;affine&#x00A0;transform&#x00A0;of&#x00A0;whole&#x00A0;image
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_similarity_area&#x00A0;&#x00A0;&#x00A0;-&#x00A0;output&#x00A0;area&#x00A0;xywh&#x00A0;of&#x00A0;similarity&#x00A0;transformation
doc/src/vipsmanual/vipsmanualse18.html:&#x00A0;<br />im_similarity&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;similarity&#x00A0;transformation
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 886--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse18.html:class="content">Resample functions</span></div><!--tex4ht:label?: x26-12300119 -->
doc/src/vipsmanual/vipsmanualse18.html:  <!--l. 91--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse18.html:href="vipsmanualse17.html#tailvipsmanualse17.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse18.html:<!--l. 91--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualch3.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualch3.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualch3.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualch3.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualch3.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualch3.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualch3.html:  <!--l. 79--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualch2.html#tailvipsmanualch2.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualch3.html: id="x19-840003"></a>Writing VIPS operations</h2>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse13.html#x20-850003.1">Introduction</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse13.html#x20-860003.1.1">Why use VIPS?</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse13.html#x20-870003.1.2">I/O styles</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse14.html#x21-880003.2">Programming WIO operations</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse14.html#x21-890003.2.1">Input from an image</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse14.html#x21-900003.2.2">Output to an image</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse14.html#x21-910003.2.3">Polymorphism</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse15.html#x22-920003.3">Programming PIO functions</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse15.html#x22-930003.3.1">Easy PIO with <span 
doc/src/vipsmanual/vipsmanualch3.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualch3.html:class="pcrr7t-">_wrapone() </span>and <span 
doc/src/vipsmanual/vipsmanualch3.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualch3.html:class="pcrr7t-">_wrapmany()</span></a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse15.html#x22-940003.3.2">Region descriptors</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse15.html#x22-950003.3.3">Image input with regions</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse15.html#x22-960003.3.4">Splitting into sequences</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse15.html#x22-970003.3.5">Output to regions</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse15.html#x22-980003.3.6">Callbacks</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse15.html#x22-1020003.3.7">Memory allocation revisited</a></span>
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualse16.html#x23-1030003.4">Programming in-place functions</a></span>
doc/src/vipsmanual/vipsmanualch3.html:  <!--l. 86--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualch3.html:href="vipsmanualch2.html#tailvipsmanualch2.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualch3.html:<!--l. 86--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse12.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse12.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse12.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse12.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse12.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse12.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse12.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse12.html:href="vipsmanualse11.html#tailvipsmanualse11.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse12.html: id="x18-790002.6"></a>Interpolators</h3>
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 4--><p class="noindent" >VIPS has a general system for representing pixel interpolators.
doc/src/vipsmanual/vipsmanualse12.html:operations, such as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">im_affinei()</span></span></span>, you can add new
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 9--><p class="indent" >  An interpolator is a function of the form:
doc/src/vipsmanual/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-119">
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 14--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 16--><p class="noindent" >given the set of input pixels <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">in</span></span></span>, it has to calculate a value
doc/src/vipsmanual/vipsmanualse12.html:class="cmr-10">(</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmmi-10">x,y</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmr-10">) </span>and write this value to the
doc/src/vipsmanual/vipsmanualse12.html:memory pointed to by <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">out</span></span></span>.
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 21--><p class="indent" >    VIPS uses corner convention, so the value of pixel <span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmr-10">(0</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmmi-10">,</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmr-10">0)</span>
doc/src/vipsmanual/vipsmanualse12.html:class="cmr-10">(0</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmmi-10">.</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmr-10">0</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmmi-10">,</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmr-10">0</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmmi-10">.</span><span 
doc/src/vipsmanual/vipsmanualse12.html:class="cmr-10">0)</span>.
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 24--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse12.html: id="x18-800002.6.1"></a>How an interpolator is represented</h4>
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 26--><p class="noindent" >See the man page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> for full
doc/src/vipsmanual/vipsmanualse12.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> implementing the following
doc/src/vipsmanual/vipsmanualse12.html:        <li class="itemize">A            function            <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">get_window_size()</span></span></span>
doc/src/vipsmanual/vipsmanualse12.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">get_window_size()</span></span></span> NULL  and  just  set  the
doc/src/vipsmanual/vipsmanualse12.html:        int value <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">window_size</span></span></span>.
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 46--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse12.html: id="x18-810002.6.2"></a>A sample interpolator</h4>
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 48--><p class="noindent" >As an example, Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse12.html:href="#x18-8100110">2.10<!--tex4ht:ref: fg:newinterpolator --></a> shows how to register a new
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 52--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse12.html: id="x18-8100110"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse12.html:<div class="verbatim" id="verbatim-120">
doc/src/vipsmanual/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Nearest-neighbor.
doc/src/vipsmanual/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;IM_IMAGE_SIZEOF_PEL(&#x00A0;in-&#x003E;im&#x00A0;)&#x00A0;);
doc/src/vipsmanual/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;nickname&#x00A0;=&#x00A0;"myinterpolator";
doc/src/vipsmanual/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;description&#x00A0;=&#x00A0;_(&#x00A0;"My&#x00A0;interpolator"&#x00A0;);
doc/src/vipsmanual/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;interpolate_class-&#x003E;interpolate&#x00A0;=&#x00A0;myinterpolator_interpolate;
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 96--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse12.html:class="content">Registering an interpolator in a plugin</span></div><!--tex4ht:label?: x18-8100110 -->    
doc/src/vipsmanual/vipsmanualse12.html: id="x18-820002.6.3"></a>Writing a VIPS operation that takes an interpolator
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 103--><p class="noindent" >Operations just take a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> as an
doc/src/vipsmanual/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-121">
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 110--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 112--><p class="indent" >  To use the interpolator, use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">vips_interpolate()</span></span></span>:
doc/src/vipsmanual/vipsmanualse12.html:  <div class="verbatim" id="verbatim-122">
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 117--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 119--><p class="noindent" >This looks up the interpolate method for the object and calls
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 122--><p class="indent" >  You can save the cost of the lookup in an inner loop with
doc/src/vipsmanual/vipsmanualse12.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">vips_interpolate_get_method()</span></span></span>:
doc/src/vipsmanual/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-123">
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 129--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 131--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse12.html: id="x18-830002.6.4"></a>Passing an interpolator to a VIPS operation</h4>
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 133--><p class="noindent" >You can build an instance of a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">VipsInterpolator</span></span></span>
doc/src/vipsmanual/vipsmanualse12.html:with the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">vips_object_&#x22C6;()</span></span></span> family of functions, see
doc/src/vipsmanual/vipsmanualse12.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse12.html:href="vipsmanualse10.html#x16-670002.4">2.4<!--tex4ht:ref: sec:object --></a>.
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 136--><p class="indent" >    Convenience functions return a static instance of one of
doc/src/vipsmanual/vipsmanualse12.html:  <div class="verbatim" id="verbatim-124">
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 143--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 145--><p class="noindent" >Don&#8217;t free the result.
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 148--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">vips_interpolate_new()</span></span></span> makes a
doc/src/vipsmanual/vipsmanualse12.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> from a nickname:
doc/src/vipsmanual/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-125">
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 153--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 155--><p class="indent" >  For example:
doc/src/vipsmanual/vipsmanualse12.html:  <div class="verbatim" id="verbatim-126">
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 159--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 161--><p class="noindent" >You must drop your ref after you&#8217;re done with the object
doc/src/vipsmanual/vipsmanualse12.html:with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse12.html:class="pcrr7t-">g_object_unref()</span></span></span>.
doc/src/vipsmanual/vipsmanualse12.html:  <!--l. 79--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse12.html:href="vipsmanualse11.html#tailvipsmanualse11.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse12.html:<!--l. 79--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse4.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse4.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse4.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse4.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse4.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse4.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse4.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse4.html:href="vipsmanualse3.html#tailvipsmanualse3.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse4.html: id="x9-190001.4"></a>The <span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask </span>class</h3>
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> class is an abstraction over the VIPS
doc/src/vipsmanual/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">DOUBLEMASK</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">INTMASK</span></span></span> types which gives convenient
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 7--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> has two sub-classes, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>.
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 10--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse4.html: id="x9-200001.4.1"></a>Constructors</h4>
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 12--><p class="noindent" >There are four constructors for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>:
doc/src/vipsmanual/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-27">
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 31--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 33--><p class="indent" >  The first form creates an empty matrix, with the specified
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 38--><p class="indent" >    The varargs constructors are not wrapped in Python &#8212;
doc/src/vipsmanual/vipsmanualse4.html:  <div class="verbatim" id="verbatim-28">
doc/src/vipsmanual/vipsmanualse4.html:&#x00A0;<br />&#x00A0;&#x00A0;[-1,&#x00A0;-1,&#x00A0;-1,
doc/src/vipsmanual/vipsmanualse4.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;-1,&#x00A0;&#x00A0;8,&#x00A0;-1,
doc/src/vipsmanual/vipsmanualse4.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;-1,&#x00A0;-1,&#x00A0;-1])
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 46--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 48--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse4.html: id="x9-210001.4.2"></a>Projection functions</h4>
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 50--><p class="noindent" >A set of member functions of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> provide access to the
doc/src/vipsmanual/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-29">
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 59--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 61--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span> is the same, except that the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">scale()</span></span></span> and
doc/src/vipsmanual/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">offset()</span></span></span> members return <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">double</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> allows all
doc/src/vipsmanual/vipsmanualse4.html:operations that are common to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>.
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 65--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse4.html: id="x9-220001.4.3"></a>Assignment</h4>
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 67--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> defines copy and assignment with pointer-style
doc/src/vipsmanual/vipsmanualse4.html:  <div class="verbatim" id="verbatim-30">
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 75--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 77--><p class="indent" >  This reads the file <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">mask</span></span></span>, noting a pointer to the
doc/src/vipsmanual/vipsmanualse4.html:mask in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">fred</span></span></span>. It then makes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">jim</span></span></span> also point to it, so
doc/src/vipsmanual/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">jim</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">fred</span></span></span> are sharing the same underlying matrix
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 81--><p class="indent" >  Internally, a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> object is just a pointer to a
doc/src/vipsmanual/vipsmanualse4.html:reference-counting block, which in turn holds a pointer to
doc/src/vipsmanual/vipsmanualse4.html:the underlying VIPS <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">MASK</span></span></span> type. You can therefore
doc/src/vipsmanual/vipsmanualse4.html:efficiently pass <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> objects to functions by value, and
doc/src/vipsmanual/vipsmanualse4.html:return <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> objects as function results.
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 86--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse4.html: id="x9-230001.4.4"></a>Computing with <span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask</span></h4>
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 88--><p class="noindent" >You can use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">[]</span></span></span> to get at matrix elements, numbered
doc/src/vipsmanual/vipsmanualse4.html:left-to-right, top-to-bottom. Alternatively, use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">()</span></span></span> to address
doc/src/vipsmanual/vipsmanualse4.html:class="cmmi-10">x,y </span>position. For example:
doc/src/vipsmanual/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-31">
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 97--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 99--><p class="noindent" >will set the first line of the matrix to 12, and:
doc/src/vipsmanual/vipsmanualse4.html:  <div class="verbatim" id="verbatim-32">
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 107--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 109--><p class="noindent" >will set the leading diagonal to 12.
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 112--><p class="indent" >  These don&#8217;t work well in Python, so there&#8217;s an extra
doc/src/vipsmanual/vipsmanualse4.html:member, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">get()</span></span></span>, which will get an element by <span 
doc/src/vipsmanual/vipsmanualse4.html:class="cmmi-10">x,y</span>
doc/src/vipsmanual/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-33">
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 117--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 119--><p class="indent" >  See the member functions below for other operations on
doc/src/vipsmanual/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span>.
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 121--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse4.html: id="x9-240001.4.5"></a><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VIMask </span>operations</h4>
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 123--><p class="noindent" >The following operations are defined for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span>:
doc/src/vipsmanual/vipsmanualse4.html:  <div class="verbatim" id="verbatim-34">
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 144--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 146--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse4.html: id="x9-250001.4.6"></a><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VDMask </span>operations</h4>
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 148--><p class="noindent" >The following operations are defined for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>:
doc/src/vipsmanual/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-35">
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 171--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 173--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse4.html: id="x9-260001.4.7"></a>Output of masks</h4>
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 175--><p class="noindent" >You can output masks with the usual <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse4.html:class="pcrr7t-">&#x003C;&#x003C;</span></span></span> operator.
doc/src/vipsmanual/vipsmanualse4.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse4.html:href="vipsmanualse3.html#tailvipsmanualse3.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse4.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse14.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse14.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse14.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse14.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse14.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse14.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse14.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse14.html:href="vipsmanualse13.html#tailvipsmanualse13.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse14.html: id="x21-880003.2"></a>Programming WIO operations</h3>
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 3--><p class="noindent" >WIO is the style for you if you want ease of programming,
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 8--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse14.html: id="x21-890003.2.1"></a>Input from an image</h4>
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 10--><p class="noindent" >In WIO input, the whole of the image data is made available
doc/src/vipsmanual/vipsmanualse14.html:to the program via the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">data</span></span></span> field of the descriptor. To make
doc/src/vipsmanual/vipsmanualse14.html:call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_incheck()</span></span></span>:
doc/src/vipsmanual/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-127">
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 16--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 18--><p class="noindent" >If it succeeds, it returns 0, if it fails, it returns non-zero and
doc/src/vipsmanual/vipsmanualse14.html:sets <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_error()</span></span></span>. On success, VIPS guarantees that all of
doc/src/vipsmanual/vipsmanualse14.html:the user-accessible fields in the descriptor contain valid
doc/src/vipsmanual/vipsmanualse14.html:reading from the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">data</span></span></span> field (see below for an example).
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 26--><p class="indent" >    VIPS has some simple macros to help address calculations
doc/src/vipsmanual/vipsmanualse14.html:  <div class="verbatim" id="verbatim-128">
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 35--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 37--><p class="noindent" >These macros calculate <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">sizeof()</span></span></span> a band element, a pel
doc/src/vipsmanual/vipsmanualse14.html:and a horizontal line of pels. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">IM_IMAGE_N_ELEMENTS</span></span></span>
doc/src/vipsmanual/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">IM_IMAGE_ADDR</span></span></span> calculates the address of a pixel in an
doc/src/vipsmanual/vipsmanualse14.html:image. If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">DEBUG</span></span></span> is defined, it does bounds checking
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 44--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse14.html: id="x21-890011"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse14.html:<div class="verbatim" id="verbatim-129">
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;im-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;im-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;0;&#x00A0;y&#x00A0;&#x003C;&#x00A0;im-&#x003E;Ysize;&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;(IM_IMAGE_N_ELEMENTS(&#x00A0;im&#x00A0;)&#x00A0;&#x22C6;&#x00A0;im-&#x003E;Ysize));
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 88--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:class="content">Find average of image</span></div><!--tex4ht:label?: x21-890011 -->                
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 93--><p class="indent" >  Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse14.html:href="#x21-890011">3.1<!--tex4ht:ref: fg:average --></a> is a simple WIO operation which calculates
doc/src/vipsmanual/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse14.html:href="#x21-910003.2.3">3.2.3<!--tex4ht:ref: sec:poly --></a> for
doc/src/vipsmanual/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-130">
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 119--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 121--><p class="noindent" >When you write an image processing operation, you can test
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">vips </span>universal main program, or from the <span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">nip2</span>
doc/src/vipsmanual/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse14.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>.
doc/src/vipsmanual/vipsmanualse14.html: id="x21-900003.2.2"></a>Output to an image</h4>
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 128--><p class="noindent" >Before attempting WIO output, programs should call
doc/src/vipsmanual/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span>. It has type:
doc/src/vipsmanual/vipsmanualse14.html:  <div class="verbatim" id="verbatim-131">
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 133--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 135--><p class="noindent" >If <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span> succeeds, VIPS guarantees that WIO
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 138--><p class="indent" >  Programs should then set fields in the output descriptor to
doc/src/vipsmanual/vipsmanualse14.html:type, and so on) and call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_setupout()</span></span></span>. It has
doc/src/vipsmanual/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-132">
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 144--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 146--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_setupout()</span></span></span> creates the output file or memory buffer,
doc/src/vipsmanual/vipsmanualse14.html:program between the calls to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span> and
doc/src/vipsmanual/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_setupout()</span></span></span>, and gets it ready for writing.
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 151--><p class="indent" >    Pels are written with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_writeline()</span></span></span>. This takes a y
doc/src/vipsmanual/vipsmanualse14.html:position (pel (0,0) is in the top-left-hand corner of the
doc/src/vipsmanual/vipsmanualse14.html:  <div class="verbatim" id="verbatim-133">
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 158--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 160--><p class="indent" >  Two convenience functions are available to make this
doc/src/vipsmanual/vipsmanualse14.html:process slightly easier. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_iocheck()</span></span></span> is useful for
doc/src/vipsmanual/vipsmanualse14.html:image output. It simply calls <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_incheck()</span></span></span> and
doc/src/vipsmanual/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span>. It has type:
doc/src/vipsmanual/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-134">
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 167--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 169--><p class="indent" >  The second convenience function copies the fields
doc/src/vipsmanual/vipsmanualse14.html:  <div class="verbatim" id="verbatim-135">
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 176--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 178--><p class="noindent" >There&#8217;s also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_cp_descv()</span></span></span>, see the man page.
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 182--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse14.html: id="x21-900012"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse14.html:<div class="verbatim" id="verbatim-136">
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;0;&#x00A0;y&#x00A0;&#x003C;&#x00A0;in-&#x003E;Ysize;&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;buffer[x]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[x];
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 230--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:class="content">Invert an image</span></div><!--tex4ht:label?: x21-900012 -->
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 235--><p class="indent" >  Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse14.html:href="#x21-900012">3.2<!--tex4ht:ref: fg:invert --></a> is a WIO VIPS operation which finds the
doc/src/vipsmanual/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse14.html:href="vipsmanualse8.html#x14-490002.2.10">2.2.10<!--tex4ht:ref: sec:malloc --></a> for an explanation of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">IM_ARRAY</span></span></span>. This operation
doc/src/vipsmanual/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-137">
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 259--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 261--><p class="indent" >  See <span 
doc/src/vipsmanual/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse14.html:href="vipsmanualse8.html#x14-440002.2.7">2.2.7<!--tex4ht:ref: sec:history --></a> for an explanation of the call to
doc/src/vipsmanual/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_updatehist()</span></span></span>.
doc/src/vipsmanual/vipsmanualse14.html: id="x21-910003.2.3"></a>Polymorphism</h4>
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 266--><p class="noindent" >Most image processing operations in the VIPS library can
doc/src/vipsmanual/vipsmanualse14.html:operate on images of any type (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span>, as
doc/src/vipsmanual/vipsmanualse14.html:in our examples above, also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">IM_BANDFMT_UINT</span></span></span> etc.).
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 272--><p class="indent" >    As an example, figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse14.html:href="#x21-910013">3.3<!--tex4ht:ref: fg:exp --></a> calculates <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">exp()</span></span></span> for every
doc/src/vipsmanual/vipsmanualse14.html:pel in an image. If the input image is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">double</span></span></span>, we write
doc/src/vipsmanual/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">double</span></span></span> output. If it is any other non-complex type, we
doc/src/vipsmanual/vipsmanualse14.html:write <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">float</span></span></span>. If it is complex, we flag an error (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">exp()</span></span></span> of
doc/src/vipsmanual/vipsmanualse14.html:image type predicate, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">im_iscomplex()</span></span></span>. There are a
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 280--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse14.html: id="x21-910013"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse14.html:<div class="verbatim" id="verbatim-138">
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;||&#x00A0;im_iscomplex(&#x00A0;in&#x00A0;)&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;im_error(&#x00A0;"exptra",&#x00A0;"uncoded&#x00A0;non-complex&#x00A0;only"&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_DOUBLE&#x00A0;)
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;out-&#x003E;BandFmt&#x00A0;=&#x00A0;IM_BANDFMT_FLOAT;
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 313--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">exp() </span>for an image</span></div><!--tex4ht:label?: x21-910013 -->
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 319--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse14.html: id="x21-910024"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse14.html:<div class="verbatim" id="verbatim-139">
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;0;&#x00A0;y&#x00A0;&#x003C;&#x00A0;in-&#x003E;Ysize;&#x00A0;y++&#x00A0;)&#x00A0;{&#x00A0;\
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);&#x00A0;\
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;switch(&#x00A0;in-&#x003E;BandFmt&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 361--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse14.html:class="pcrr7t-">exp() </span>for an image (cont)</span></div><!--tex4ht:label?: x21-910024 -->
doc/src/vipsmanual/vipsmanualse14.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse14.html:href="vipsmanualse13.html#tailvipsmanualse13.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse14.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanual.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanual.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanual.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanual.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanual.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanual.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanual.html:<!--l. 25--><p class="indent" >
doc/src/vipsmanual/vipsmanual.html:                                             <!--l. 25--><p class="indent" >
doc/src/vipsmanual/vipsmanual.html:<!--l. 27--><p class="noindent" >
doc/src/vipsmanual/vipsmanual.html:<!--l. 29--><p class="noindent" ><span 
doc/src/vipsmanual/vipsmanual.html:class="ptmr7t-x-x-207">VIPS Manual</span><br />
doc/src/vipsmanual/vipsmanual.html:class="ptmr7t-x-x-120">Version 7.20</span><br />
doc/src/vipsmanual/vipsmanual.html:class="ptmr7t-x-x-120">John Cupitt, Kirk Martinez</span><br />
doc/src/vipsmanual/vipsmanual.html:<!--l. 40--><p class="indent" >  This manual formatted June 9, 2010
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualli1.html#x2-1000" id="QQ2-2-1">Contents</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualli2.html#x3-2000" id="QQ2-3-2">List of Figures</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualli3.html#x4-3000" id="QQ2-4-3">List of Tables</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualch1.html#x5-40001" id="QQ2-5-4">VIPS from C++ and Python</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse1.html#x6-50001.1" id="QQ2-6-5">Introduction</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse2.html#x7-70001.2" id="QQ2-7-9">The VIPS file format</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse3.html#x8-110001.3" id="QQ2-8-17">The <span 
doc/src/vipsmanual/vipsmanual.html:class="pcrr7t-">VImage </span>class</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse4.html#x9-190001.4" id="QQ2-9-25">The <span 
doc/src/vipsmanual/vipsmanual.html:class="pcrr7t-">VMask </span>class</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse5.html#x10-270001.5" id="QQ2-10-33">The <span 
doc/src/vipsmanual/vipsmanual.html:class="pcrr7t-">VDisplay </span>class</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse6.html#x11-300001.6" id="QQ2-11-36">The <span 
doc/src/vipsmanual/vipsmanual.html:class="pcrr7t-">VError </span>class</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualch2.html#x12-350002" id="QQ2-12-41">VIPS for C programmers</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse7.html#x13-360002.1" id="QQ2-13-42">Introduction</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse8.html#x14-370002.2" id="QQ2-14-44">Core C API</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse9.html#x15-590002.3" id="QQ2-15-73">Function dispatch and plug-ins</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse10.html#x16-670002.4" id="QQ2-16-82">The VIPS base class: <span 
doc/src/vipsmanual/vipsmanual.html:class="pcrr7t-">VipsObject</span></a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse11.html#x17-740002.5" id="QQ2-17-89">Image formats</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse12.html#x18-790002.6" id="QQ2-18-95">Interpolators</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualch3.html#x19-840003" id="QQ2-19-101">Writing VIPS operations</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse13.html#x20-850003.1" id="QQ2-20-102">Introduction</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse14.html#x21-880003.2" id="QQ2-21-105">Programming WIO operations</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse15.html#x22-920003.3" id="QQ2-22-113">Programming PIO functions</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse16.html#x23-1030003.4" id="QQ2-23-131">Programming in-place functions</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualch4.html#x24-1040004" id="QQ2-24-132">VIPS reference</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse17.html#x25-1050004.1" id="QQ2-25-133">Introduction</a></span>
doc/src/vipsmanual/vipsmanual.html:href="vipsmanualse18.html#x26-1060004.2" id="QQ2-26-135">VIPS packages</a></span>
doc/src/vipsmanual/vipsmanual.html:                                             <!--l. 79--><p class="indent" >
doc/src/vipsmanual/vipsmanualse6.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse6.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse6.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse6.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse6.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse6.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse6.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse6.html:href="vipsmanualse5.html#tailvipsmanualse5.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse6.html: id="x11-300001.6"></a>The <span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">VError </span>class</h3>
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span> class is the class thrown by the VIPS
doc/src/vipsmanual/vipsmanualse6.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">std::exception</span></span></span> in the usual way.
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 6--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse6.html: id="x11-310001.6.1"></a>Constructors</h4>
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 8--><p class="noindent" >There are two constructors for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span>:
doc/src/vipsmanual/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-41">
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 13--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 15--><p class="indent" >  The first form creates an error object initialised with the
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 18--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse6.html: id="x11-320001.6.2"></a>Projection functions</h4>
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 20--><p class="noindent" >A function gives access to the string held by <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span>:
doc/src/vipsmanual/vipsmanualse6.html:  <div class="verbatim" id="verbatim-42">
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 24--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 26--><p class="indent" >  You can also send to an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">ostream</span></span></span>.
doc/src/vipsmanual/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-43">
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 31--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 33--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse6.html: id="x11-330001.6.3"></a>Computing with <span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">VError</span></h4>
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 35--><p class="noindent" >Two member functions let you append elements to an
doc/src/vipsmanual/vipsmanualse6.html:  <div class="verbatim" id="verbatim-44">
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 40--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 42--><p class="indent" >  For example:
doc/src/vipsmanual/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-45">
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 51--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 53--><p class="noindent" >will throw a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span> with a diagnostic of:
doc/src/vipsmanual/vipsmanualse6.html:  <div class="verbatim" id="verbatim-46">
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 58--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 60--><p class="indent" >  The member function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">perror()</span></span></span> prints the error
doc/src/vipsmanual/vipsmanualse6.html:message to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">stdout</span></span></span> and exits with a code of 1.
doc/src/vipsmanual/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-47">
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 66--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 68--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse6.html: id="x11-340001.6.4"></a>Convenience function</h4>
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 70--><p class="noindent" >The convenience function <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">verror</span></span></span> creates an <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span>
doc/src/vipsmanual/vipsmanualse6.html:with the specified error string, and throws it. If you pass <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse6.html:class="pcrr7t-">""</span></span></span>
doc/src/vipsmanual/vipsmanualse6.html:  <div class="verbatim" id="verbatim-48">
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 76--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse6.html:  <!--l. 70--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse6.html:href="vipsmanualse5.html#tailvipsmanualse5.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse6.html:<!--l. 70--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse2.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse2.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse2.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse2.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse2.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse2.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse2.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse2.html:href="vipsmanualse1.html#tailvipsmanualse1.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse2.html: id="x7-70001.2"></a>The VIPS file format</h3>
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 3--><p class="noindent" >VIPS has its own very simple file format. It is used inside
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 8--><p class="indent" >  If you intend to keep an image, it&#8217;s much better to save it
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 12--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse2.html: id="x7-80001.2.1"></a>VIPS file header</h4>
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 15--><p class="noindent" >All VIPS image files start with a 64-byte header giving
doc/src/vipsmanual/vipsmanualse2.html:href="#x7-80011">1.1<!--tex4ht:ref: fg:header --></a>. This is followed by the image data. This is
doc/src/vipsmanual/vipsmanualse2.html:left-to-right and top-to-bottom. After the image data comes
doc/src/vipsmanual/vipsmanualse2.html:command-line program <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">header</span></span></span> to extract the XML
doc/src/vipsmanual/vipsmanualse2.html:from an image and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">edvips</span></span></span> to replace it, see the man
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 24--><p class="indent" >  The <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Type </span>field, the <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Xres</span>/<span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Yres </span>fields, and the
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Xoffset</span>/<span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Yoffset </span>fields are advisory. VIPS maintains
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span>
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_XYZ2Lab()</span>, for example, VIPS
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Type </span>to be <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LAB</span>), but never uses
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 33--><p class="indent" >  The <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">BandFmt</span>, <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Coding </span>and <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Type </span>fields can take the
doc/src/vipsmanual/vipsmanualse2.html:href="#x7-80022">1.2<!--tex4ht:ref: fg:bandfmt --></a>, <a 
doc/src/vipsmanual/vipsmanualse2.html:href="#x7-80033">1.3<!--tex4ht:ref: fg:coding --></a> and <a 
doc/src/vipsmanual/vipsmanualse2.html:href="#x7-80044">1.4<!--tex4ht:ref: fg:type --></a>. The C++ and
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 39--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse2.html: id="x7-80011"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 39--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse2.html:<div class="tabular"> <table id="TBL-1" class="tabular" 
doc/src/vipsmanual/vipsmanualse2.html:><colgroup id="TBL-1-1g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-1-1"></colgroup><colgroup id="TBL-1-2g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-1-2"></colgroup><colgroup id="TBL-1-3g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-1-3"></colgroup><tr 
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-1-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Bytes</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-1-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Represent                                                      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-1-3"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-2-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">0&#8211;3    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-2-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">VIPS magic number (in hex, 08 f2 f6 b6)    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-2-3"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-3-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">4&#8211;7    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-3-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Number of pels per horizontal line (integer)</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-3-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Xsize      </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-4-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">8&#8211;11  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-4-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Number of horizontal lines (integer)            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-4-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Ysize      </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-5-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">12&#8211;15</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-5-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Number of bands (integer)                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-5-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Bands      </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-6-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">16&#8211;19</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-6-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-6-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Bbits      </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-7-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">20&#8211;23</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-7-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_USHORT</span>)</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-7-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">BandFmt    </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-8-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">24&#8211;27</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-8-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_NONE</span>)        </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-8-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Coding     </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-9-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">28&#8211;31</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-9-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LAB</span>)                           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-9-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Type       </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-10-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">32&#8211;35</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-10-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">-</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmr-7">1</span></sup>)  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-10-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Xres       </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-11-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">36&#8211;39</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-11-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">-</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmr-7">1</span></sup>)       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-11-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Yres       </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-12-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">40&#8211;43</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-12-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-12-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Length     </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-13-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">44&#8211;45</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-13-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-13-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Compression</span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-14-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">46&#8211;47</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-14-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-14-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Level      </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-15-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">48&#8211;51</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-15-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Horizontal offset of origin                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-15-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Xoffset    </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-16-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">52&#8211;55</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-16-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Vertical offset of origin                                 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-16-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Yoffset    </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-17-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">56&#8211;63</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-17-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">For future expansion (all zeros for now)       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-17-3"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-18-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="content">VIPS header</span></div><!--tex4ht:label?: x7-80011 -->
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 67--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse2.html: id="x7-80022"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 67--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse2.html:<div class="tabular"> <table id="TBL-2" class="tabular" 
doc/src/vipsmanual/vipsmanualse2.html:><colgroup id="TBL-2-1g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-2-1"></colgroup><colgroup id="TBL-2-2g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-2-2"></colgroup><colgroup id="TBL-2-3g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-2-3"></colgroup><colgroup id="TBL-2-4g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-2-4"></colgroup><tr 
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">BandFmt             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">C++ and Python name</td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Value</td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_NOTSET   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTNOTSET      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">-1      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_UCHAR </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTUCHAR </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">0 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Unsigned 8-bit int</td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CHAR     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTCHAR        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">1       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Signed 8-bit int         </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_USHORT   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTUSHORT      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">2       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Unsigned 16-bit int   </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_SHORT    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTSHORT       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">3       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Signed 16-bit int       </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_UINT     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTUINT        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">4       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Unsigned 32-bit int   </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_INT      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTINT         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">5       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Signed 32-bit int       </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_FLOAT    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTFLOAT       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">6       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">32-bit IEEE float      </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_COMPLEX  </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTCOMPLEX     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">7       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_DOUBLE   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTDOUBLE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">8       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">64-bit IEEE double   </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_DPCOMPLEX</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FMTDPCOMPLEX   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">9       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-13-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">BandFmt</span></span></div><!--tex4ht:label?: x7-80022 -->
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 90--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse2.html: id="x7-80033"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 90--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse2.html:<div class="tabular"><table id="TBL-3" class="tabular" 
doc/src/vipsmanual/vipsmanualse2.html:><colgroup id="TBL-3-1g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-3-1"></colgroup><colgroup id="TBL-3-2g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-3-2"></colgroup><colgroup id="TBL-3-3g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-3-3"></colgroup><colgroup id="TBL-3-4g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-3-4"></colgroup><tr 
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Coding        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">C++ and Python name</td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Value</td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_NONE</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">NOCODING       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">0       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LABQ</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">LABQ           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">2       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_RAD </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">RAD            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">6       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-5-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Coding</span></span></div><!--tex4ht:label?: x7-80033 -->
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 105--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse2.html: id="x7-80044"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 105--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse2.html:<div class="tabular"><table id="TBL-4" class="tabular" 
doc/src/vipsmanual/vipsmanualse2.html:><colgroup id="TBL-4-1g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-4-1"></colgroup><colgroup id="TBL-4-2g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-4-2"></colgroup><colgroup id="TBL-4-3g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-4-3"></colgroup><colgroup id="TBL-4-4g"><col 
doc/src/vipsmanual/vipsmanualse2.html:id="TBL-4-4"></colgroup><tr 
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Type             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">C++ and Python name</td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">Value</td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_MULTIBAND</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">MULTIBAND      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">0       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_B</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_W      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">B</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_W            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">1       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_HISTOGRAM</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">HISTOGRAM      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">10     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_FOURIER  </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">FOURIER        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">24     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_XYZ      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">XYZ            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">12     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">CIE XYZ </span>colour space      </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LAB      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">LAB            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">13     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span> colour space</td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CMYK     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">CMYK           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">15     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_icc</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_export()  </span></td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LABQ     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">LABQ           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">16     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">32-bit <span 
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span>    </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_RGB      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">RGB            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">17     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_UCS      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">UCS            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">18     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">UCS(1:1) </span>colour space     </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LCH      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">LCH            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">19     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">CIE LCh </span>colour space      </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LABS     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">LABS           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">21     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">48-bit <span 
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span>    </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_sRGB     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">sRGB           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">22     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-4"  
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_YXY      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">YXY            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">23     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="ptmri7t-">CIE Yxy </span>colour space       </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_RGB16    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">RGB16          </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">25     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">16-bit RGB                       </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_GREY16   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-2"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">GREY16         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-3"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">26     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-4"  
doc/src/vipsmanual/vipsmanualse2.html:class="td11">16-bit monochrome          </td>
doc/src/vipsmanual/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-18-1"  
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Type</span></span></div><!--tex4ht:label?: x7-80044 -->
doc/src/vipsmanual/vipsmanualse2.html: id="x7-90001.2.2"></a>Computation formats</h4>
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 134--><p class="noindent" >This type of image has <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Coding </span>set to <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_NONE</span>.
doc/src/vipsmanual/vipsmanualse2.html:out left-to-right, top-to-bottom. Each pixel contains the
doc/src/vipsmanual/vipsmanualse2.html:band format, which may be an 8-, 16- or 32-bit integer
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 142--><p class="indent" >  All values are stored in the host-machine&#8217;s native number
doc/src/vipsmanual/vipsmanualse2.html:representation (that is, either most-significant first, as in
doc/src/vipsmanual/vipsmanualse2.html:SPARC and 680x0 machines, or least-significant first,
doc/src/vipsmanual/vipsmanualse2.html:library will automatically byte-swap for you during
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 147--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse2.html: id="x7-100001.2.3"></a>Storage formats</h4>
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 149--><p class="noindent" >All storage formats have other values for the <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">Coding</span>
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LABQ </span>and
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_RAD</span>.
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 152--><p class="indent" >  <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LABQ </span>stores <span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">L</span><sup><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span></sup>, <span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">a</span><sup><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span></sup> and <span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">b</span><sup><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span></sup> for each
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">L</span><sup><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span></sup> and 11 bits for each of <span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">a</span><sup><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span></sup>
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">b</span><sup><span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmsy-7">*</span></sup>. These 32 bits are packed into 4 bytes, with
doc/src/vipsmanual/vipsmanualse2.html:bytes, and the left-over bits packed into the final byte as
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 158--><p class="indent" >  This format is a little awkward to process. Some VIPS
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LABQ</span>
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_extract</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_area()</span>, for example), but
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_LabQ2Lab()</span>)
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 163--><p class="indent" >  <span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_RAD </span>stores <span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">RGB </span>or <span 
doc/src/vipsmanual/vipsmanualse2.html:class="cmmi-10">XY Z </span>float images
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 169--><p class="indent" >  This format is a little awkward to process. Some VIPS
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_RAD</span>
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_extract</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_area()</span>, for example), but
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse2.html:class="pcrr7t-">_rad2float()</span>
doc/src/vipsmanual/vipsmanualse2.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse2.html:href="vipsmanualse1.html#tailvipsmanualse1.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse2.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse10.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse10.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse10.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse10.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse10.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse10.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse10.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse10.html:href="vipsmanualse9.html#tailvipsmanualse9.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse10.html: id="x16-670002.4"></a>The VIPS base class: <span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></h3>
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 4--><p class="noindent" >VIPS is in the process of moving to an object system based
doc/src/vipsmanual/vipsmanualse10.html:on <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">GObject</span></span></span>. You can read about the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">GObjec</span></span></span> library at
doc/src/vipsmanual/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-109">
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 9--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 11--><p class="indent" >  We&#8217;ve implemented two new subsystems (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsFormat</span></span></span>
doc/src/vipsmanual/vipsmanualse10.html:and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsInterpolate</span></span></span>) on top of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> but
doc/src/vipsmanual/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> is still developing and is likely to change in
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 16--><p class="indent" >    This section quickly summarises enough of the
doc/src/vipsmanual/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> system to let you use the two derived APIs
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 20--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse10.html: id="x16-680002.4.1"></a>Properties</h4>
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 22--><p class="noindent" >Like the rest of VIPS, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> is a functional type.
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 26--><p class="indent" >    To enforce these rules, VIPS extends the standard
doc/src/vipsmanual/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">GObject</span></span></span> property system and adds a new phase to
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 30--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse10.html: id="x16-690002.4.1"></a>Lookup</h5>
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 32--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">vips_type_find()</span></span></span> is a convenience function that looks
doc/src/vipsmanual/vipsmanualse10.html:  <div class="verbatim" id="verbatim-110">
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 38--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 40--><p class="noindent" >finds a subclass of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsInterpolate</span></span></span> nicknamed &#8216;bilinear&#8217;.
doc/src/vipsmanual/vipsmanualse10.html:can be rather unwieldy (<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsInterpolateBilinear</span></span></span>
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 45--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse10.html: id="x16-700002.4.1"></a>Create</h5>
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 47--><p class="noindent" >Build an instance with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">g_object_new()</span></span></span>. For example:
doc/src/vipsmanual/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-111">
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 54--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 56--><p class="indent" >  You can set any of the object&#8217;s properties in the constructor.
doc/src/vipsmanual/vipsmanualse10.html:  <div class="verbatim" id="verbatim-112">
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 63--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 65--><p class="indent" >  You can loop over an object&#8217;s required and optional
doc/src/vipsmanual/vipsmanualse10.html:parameters with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">vips_argument_map()</span></span></span>.
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 68--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse10.html: id="x16-710002.4.1"></a>Build</h5>
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 70--><p class="noindent" >Once all of the required any any of the optional object
doc/src/vipsmanual/vipsmanualse10.html:parameters have been set, call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">vips_object_build()</span></span></span>:
doc/src/vipsmanual/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-113">
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 75--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 77--><p class="indent" >  This function checks that all the parameters have been set
doc/src/vipsmanual/vipsmanualse10.html:correctly and starts the object working. It returns non-zero
doc/src/vipsmanual/vipsmanualse10.html:on error, setting <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">im_error_string()</span></span></span>.
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 81--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse10.html: id="x16-720002.4.1"></a>Use</h5>
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 83--><p class="noindent" >The object is now fully working. You can read results from
doc/src/vipsmanual/vipsmanualse10.html:  <div class="verbatim" id="verbatim-114">
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 89--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 91--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse10.html: id="x16-730002.4.2"></a>Convenience functions</h4>
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 93--><p class="noindent" >Two functions simplify building and printing objects.
doc/src/vipsmanual/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">vips_object_new_from_string()</span></span></span> makes a new
doc/src/vipsmanual/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-115">
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 101--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 103--><p class="indent" >  This is the function used by <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">IM_INPUT_INTERPOLATE()</span></span></span>,
doc/src/vipsmanual/vipsmanualse10.html:for example, to parse command-line arguments. The syntax
doc/src/vipsmanual/vipsmanualse10.html:  <div class="verbatim" id="verbatim-116">
doc/src/vipsmanual/vipsmanualse10.html:nickname&#x00A0;[&#x00A0;(&#x00A0;required-arg1,
doc/src/vipsmanual/vipsmanualse10.html:&#x00A0;<br />&#x00A0;&#x00A0;required-argn,
doc/src/vipsmanual/vipsmanualse10.html:&#x00A0;<br />&#x00A0;&#x00A0;optional-arg-name&#x00A0;=&#x00A0;value,
doc/src/vipsmanual/vipsmanualse10.html:&#x00A0;<br />&#x00A0;&#x00A0;optional-argm-name&#x00A0;=&#x00A0;value&#x00A0;)&#x00A0;]
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 113--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 115--><p class="indent" >  So values for all the required arguments, in the correct
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 119--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">vips_object_to_string()</span></span></span> is the exact opposite:
doc/src/vipsmanual/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span>.
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 123--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">vips_object_new()</span></span></span> wraps up the business of
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 128--><p class="indent" >  A switch to the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">vips</span></span></span> command-line program is handy
doc/src/vipsmanual/vipsmanualse10.html:for listing subtypes of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span>. Try:
doc/src/vipsmanual/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-117">
doc/src/vipsmanual/vipsmanualse10.html:  $&#x00A0;vips&#x00A0;--list&#x00A0;classes 
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 133--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse10.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse10.html:href="vipsmanualse9.html#tailvipsmanualse9.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse10.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanual.css:.cmr-7{font-size:70%;}
doc/src/vipsmanual/vipsmanual.css:.cmmi-10{font-style: italic;}
doc/src/vipsmanual/vipsmanual.css:.cmsy-7{font-size:70%;}
doc/src/vipsmanual/vipsmanual.css:.ptmr7t-{font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.ptmr7t-{font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.ptmr7t-{font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.ptmr7t-x-x-207{font-size:207%;font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.ptmr7t-x-x-207{font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.ptmr7t-x-x-207{font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.ptmr7t-x-x-120{font-size:120%;font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.ptmr7t-x-x-120{font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.ptmr7t-x-x-120{font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.pcrr7t-{font-family: monospace;}
doc/src/vipsmanual/vipsmanual.css:.ptmri7t-{font-style: italic;}
doc/src/vipsmanual/vipsmanual.css:.ptmb7t-{ font-weight: bold;}
doc/src/vipsmanual/vipsmanual.css:.pcrb7t-{ font-family: monospace; font-weight: bold;}
doc/src/vipsmanual/vipsmanual.css:p.noindent { text-indent: 0em }
doc/src/vipsmanual/vipsmanual.css:td p.noindent { text-indent: 0em; margin-top:0em; }
doc/src/vipsmanual/vipsmanual.css:p.nopar { text-indent: 0em; }
doc/src/vipsmanual/vipsmanual.css:p.indent{ text-indent: 1.5em }
doc/src/vipsmanual/vipsmanual.css:a img { border-top: 0; border-left: 0; border-right: 0; }
doc/src/vipsmanual/vipsmanual.css:center { margin-top:1em; margin-bottom:1em; }
doc/src/vipsmanual/vipsmanual.css:td center { margin-top:0em; margin-bottom:0em; }
doc/src/vipsmanual/vipsmanual.css:img.math{vertical-align:middle;}
doc/src/vipsmanual/vipsmanual.css:li p.indent { text-indent: 0em }
doc/src/vipsmanual/vipsmanual.css:li p:first-child{ margin-top:0em; }
doc/src/vipsmanual/vipsmanual.css:li p:last-child, li div:last-child { margin-bottom:0.5em; }
doc/src/vipsmanual/vipsmanual.css:li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
doc/src/vipsmanual/vipsmanual.css:.enumerate1 {list-style-type:decimal;}
doc/src/vipsmanual/vipsmanual.css:.enumerate2 {list-style-type:lower-alpha;}
doc/src/vipsmanual/vipsmanual.css:.enumerate3 {list-style-type:lower-roman;}
doc/src/vipsmanual/vipsmanual.css:.enumerate4 {list-style-type:upper-alpha;}
doc/src/vipsmanual/vipsmanual.css:div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
doc/src/vipsmanual/vipsmanual.css:.obeylines-h,.obeylines-v {white-space: nowrap; }
doc/src/vipsmanual/vipsmanual.css:div.obeylines-v p { margin-top:0; margin-bottom:0; }
doc/src/vipsmanual/vipsmanual.css:.overline{ text-decoration:overline; }
doc/src/vipsmanual/vipsmanual.css:.overline img{ border-top: 1px solid black; }
doc/src/vipsmanual/vipsmanual.css:td.displaylines {text-align:center; white-space:nowrap;}
doc/src/vipsmanual/vipsmanual.css:.centerline {text-align:center;}
doc/src/vipsmanual/vipsmanual.css:.rightline {text-align:right;}
doc/src/vipsmanual/vipsmanual.css:div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
doc/src/vipsmanual/vipsmanual.css:.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/src/vipsmanual/vipsmanual.css:div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/src/vipsmanual/vipsmanual.css:div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
doc/src/vipsmanual/vipsmanual.css:div.center div {text-align: left;}
doc/src/vipsmanual/vipsmanual.css:div.flushright, div.flushright div.flushright {text-align: right;}
doc/src/vipsmanual/vipsmanual.css:div.flushright div {text-align: left;}
doc/src/vipsmanual/vipsmanual.css:div.flushleft {text-align: left;}
doc/src/vipsmanual/vipsmanual.css:.underline{ text-decoration:underline; }
doc/src/vipsmanual/vipsmanual.css:.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
doc/src/vipsmanual/vipsmanual.css:.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/src/vipsmanual/vipsmanual.css:.framebox-c {text-align:center;}
doc/src/vipsmanual/vipsmanual.css:.framebox-l {text-align:left;}
doc/src/vipsmanual/vipsmanual.css:.framebox-r {text-align:right;}
doc/src/vipsmanual/vipsmanual.css:span.thank-mark{ vertical-align: super }
doc/src/vipsmanual/vipsmanual.css:span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
doc/src/vipsmanual/vipsmanual.css:div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
doc/src/vipsmanual/vipsmanual.css:table.tabular td p{margin-top:0em;}
doc/src/vipsmanual/vipsmanual.css:table.tabular {margin-left: auto; margin-right: auto;}
doc/src/vipsmanual/vipsmanual.css:td p:first-child{ margin-top:0em; }
doc/src/vipsmanual/vipsmanual.css:td p:last-child{ margin-bottom:0em; }
doc/src/vipsmanual/vipsmanual.css:div.td00{ margin-left:0pt; margin-right:0pt; }
doc/src/vipsmanual/vipsmanual.css:div.td01{ margin-left:0pt; margin-right:5pt; }
doc/src/vipsmanual/vipsmanual.css:div.td10{ margin-left:5pt; margin-right:0pt; }
doc/src/vipsmanual/vipsmanual.css:div.td11{ margin-left:5pt; margin-right:5pt; }
doc/src/vipsmanual/vipsmanual.css:table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
doc/src/vipsmanual/vipsmanual.css:td.td00{ padding-left:0pt; padding-right:0pt; }
doc/src/vipsmanual/vipsmanual.css:td.td01{ padding-left:0pt; padding-right:5pt; }
doc/src/vipsmanual/vipsmanual.css:td.td10{ padding-left:5pt; padding-right:0pt; }
doc/src/vipsmanual/vipsmanual.css:td.td11{ padding-left:5pt; padding-right:5pt; }
doc/src/vipsmanual/vipsmanual.css:table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
doc/src/vipsmanual/vipsmanual.css:.tabbing-right {text-align:right;}
doc/src/vipsmanual/vipsmanual.css:span.TEX {letter-spacing: -0.125em; }
doc/src/vipsmanual/vipsmanual.css:span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
doc/src/vipsmanual/vipsmanual.css:a span.TEX span.E {text-decoration: none; }
doc/src/vipsmanual/vipsmanual.css:span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
doc/src/vipsmanual/vipsmanual.css:span.LATEX span.TEX{ position:relative; left: -0.4em; }
doc/src/vipsmanual/vipsmanual.css:div.float, div.figure {margin-left: auto; margin-right: auto;}
doc/src/vipsmanual/vipsmanual.css:div.float img {text-align:center;}
doc/src/vipsmanual/vipsmanual.css:div.figure img {text-align:center;}
doc/src/vipsmanual/vipsmanual.css:.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
doc/src/vipsmanual/vipsmanual.css:.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
doc/src/vipsmanual/vipsmanual.css:.equation td{text-align:center; }
doc/src/vipsmanual/vipsmanual.css:td.equation { margin-top:1em; margin-bottom:1em; } 
doc/src/vipsmanual/vipsmanual.css:td.equation-label { width:5%; text-align:center; }
doc/src/vipsmanual/vipsmanual.css:td.eqnarray4 { width:5%; white-space: normal; }
doc/src/vipsmanual/vipsmanual.css:table.eqnarray-star, table.eqnarray {width:100%;}
doc/src/vipsmanual/vipsmanual.css:div.eqnarray{text-align:center;}
doc/src/vipsmanual/vipsmanual.css:div.array {text-align:center;}
doc/src/vipsmanual/vipsmanual.css:div.pmatrix {text-align:center;}
doc/src/vipsmanual/vipsmanual.css:span.pmatrix img{vertical-align:middle;}
doc/src/vipsmanual/vipsmanual.css:div.pmatrix {text-align:center;}
doc/src/vipsmanual/vipsmanual.css:span.bar-css {text-decoration:overline;}
doc/src/vipsmanual/vipsmanual.css:img.cdots{vertical-align:middle;}
doc/src/vipsmanual/vipsmanual.css:.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
doc/src/vipsmanual/vipsmanual.css:.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
doc/src/vipsmanual/vipsmanual.css:.index-item, .index-subitem, .index-subsubitem {display:block}
doc/src/vipsmanual/vipsmanual.css:div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
doc/src/vipsmanual/vipsmanual.css:div.caption span.id{font-weight: bold; white-space: nowrap; }
doc/src/vipsmanual/vipsmanual.css:h1.partHead{text-align: center}
doc/src/vipsmanual/vipsmanual.css:p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
doc/src/vipsmanual/vipsmanual.css:p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
doc/src/vipsmanual/vipsmanual.css:.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
doc/src/vipsmanual/vipsmanual.css:.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
doc/src/vipsmanual/vipsmanual.css:.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
doc/src/vipsmanual/vipsmanual.css:.verse{white-space:nowrap; margin-left:2em}
doc/src/vipsmanual/vipsmanual.css:div.maketitle {text-align:center;}
doc/src/vipsmanual/vipsmanual.css:h2.titleHead{text-align:center;}
doc/src/vipsmanual/vipsmanual.css:div.maketitle{ margin-bottom: 2em; }
doc/src/vipsmanual/vipsmanual.css:div.author, div.date {text-align:center;}
doc/src/vipsmanual/vipsmanual.css:div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
doc/src/vipsmanual/vipsmanual.css:div.author{white-space: nowrap;}
doc/src/vipsmanual/vipsmanual.css:.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
doc/src/vipsmanual/vipsmanual.css:h1.partHead{text-align: center}
doc/src/vipsmanual/vipsmanual.css: .chapterToc, .likechapterToc {margin-left:0em;}
doc/src/vipsmanual/vipsmanual.css: .chapterToc ~ .likesectionToc, .chapterToc ~ .sectionToc, .likechapterToc ~ .likesectionToc, .likechapterToc ~ .sectionToc {margin-left:2em;}
doc/src/vipsmanual/vipsmanual.css: .chapterToc ~ .likesectionToc ~ .likesubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc, .likechapterToc ~ .sectionToc ~ .subsectionToc {margin-left:4em;}
doc/src/vipsmanual/vipsmanual.css:.chapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc ~ .subsubsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likechapterToc ~ .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc .likechapterToc ~ .sectionToc ~ .subsectionToc ~ .subsubsectionToc {margin-left:6em;}
doc/src/vipsmanual/vipsmanual.css: .likesectionToc , .sectionToc {margin-left:0em;}
doc/src/vipsmanual/vipsmanual.css: .likesectionToc ~ .likesubsectionToc, .likesectionToc ~ .subsectionToc, .sectionToc ~ .likesubsectionToc, .sectionToc ~ .subsectionToc {margin-left:2em;}
doc/src/vipsmanual/vipsmanual.css:.likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .sectionToc ~ .subsectionToc ~ .subsubsectionToc {margin-left:4em;}
doc/src/vipsmanual/vipsmanual.css: .likesubsectionToc, .subsectionToc {margin-left:0em;}
doc/src/vipsmanual/vipsmanual.css: .likesubsectionToc ~ .subsubsectionToc, .subsectionToc ~ .subsubsectionToc, {margin-left:2em;}
doc/src/vipsmanual/vipsmanual.css:.figure img.graphics {margin-left:10%;}
doc/src/vipsmanual/vipsmanualch1.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualch1.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualch1.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualch1.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualch1.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualch1.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualch1.html:  <!--l. 61--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualli3.html#tailvipsmanualli3.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualch1.html: id="x5-40001"></a>VIPS from C++ and Python</h2>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse1.html#x6-50001.1">Introduction</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse1.html#x6-60001.1.1">If you&#8217;ve used the C API</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse2.html#x7-70001.2">The VIPS file format</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse2.html#x7-80001.2.1">VIPS file header</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse2.html#x7-90001.2.2">Computation formats</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse2.html#x7-100001.2.3">Storage formats</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse3.html#x8-110001.3">The <span 
doc/src/vipsmanual/vipsmanualch1.html:class="pcrr7t-">VImage </span>class</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse3.html#x8-120001.3.1">Constructors</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse3.html#x8-130001.3.2">File conversion</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse3.html#x8-140001.3.3">Projection functions</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse3.html#x8-150001.3.4">Assignment</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse3.html#x8-160001.3.5">Computing with <span 
doc/src/vipsmanual/vipsmanualch1.html:class="pcrr7t-">VImage</span>s</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse3.html#x8-170001.3.6">Writing results</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse3.html#x8-180001.3.7">Type conversions</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse4.html#x9-190001.4">The <span 
doc/src/vipsmanual/vipsmanualch1.html:class="pcrr7t-">VMask </span>class</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse4.html#x9-200001.4.1">Constructors</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse4.html#x9-210001.4.2">Projection functions</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse4.html#x9-220001.4.3">Assignment</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse4.html#x9-230001.4.4">Computing with <span 
doc/src/vipsmanual/vipsmanualch1.html:class="pcrr7t-">VMask</span></a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse4.html#x9-240001.4.5"><span 
doc/src/vipsmanual/vipsmanualch1.html:class="pcrr7t-">VIMask </span>operations</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse4.html#x9-250001.4.6"><span 
doc/src/vipsmanual/vipsmanualch1.html:class="pcrr7t-">VDMask </span>operations</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse4.html#x9-260001.4.7">Output of masks</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse5.html#x10-270001.5">The <span 
doc/src/vipsmanual/vipsmanualch1.html:class="pcrr7t-">VDisplay </span>class</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse5.html#x10-280001.5.1">Constructors</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse5.html#x10-290001.5.2">Projection functions</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse6.html#x11-300001.6">The <span 
doc/src/vipsmanual/vipsmanualch1.html:class="pcrr7t-">VError </span>class</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse6.html#x11-310001.6.1">Constructors</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse6.html#x11-320001.6.2">Projection functions</a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse6.html#x11-330001.6.3">Computing with <span 
doc/src/vipsmanual/vipsmanualch1.html:class="pcrr7t-">VError</span></a></span>
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualse6.html#x11-340001.6.4">Convenience function</a></span>
doc/src/vipsmanual/vipsmanualch1.html:  <!--l. 70--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualch1.html:href="vipsmanualli3.html#tailvipsmanualli3.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualch1.html:<!--l. 70--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse3.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse3.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse3.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse3.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse3.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse3.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse3.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse3.html:href="vipsmanualse2.html#tailvipsmanualse2.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse3.html: id="x8-110001.3"></a>The <span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage </span>class</h3>
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> class is a layer over the VIPS <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span>
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 8--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse3.html: id="x8-120001.3.1"></a>Constructors</h4>
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 10--><p class="noindent" >There are two principal constructors for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span>:
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-5">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 16--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 18--><p class="indent" >  The first form creates a new <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span>, linking it to the
doc/src/vipsmanual/vipsmanualse3.html:named file. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">mode</span></span></span> sets the mode for the file: it can take the
doc/src/vipsmanual/vipsmanualse3.html:class="pcrb7t-">"r"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse3.html:class="description">The named image file is opened read-only. This is
doc/src/vipsmanual/vipsmanualse3.html:class="pcrb7t-">"w"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse3.html:class="description">A  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> is  created  which,  when  written  to,
doc/src/vipsmanual/vipsmanualse3.html:class="pcrb7t-">"t"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse3.html:class="description">As  the  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">"w"</span></span></span> mode,  but  pixels  written  to  the
doc/src/vipsmanual/vipsmanualse3.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> will  be  saved  in  a  temporary  memory
doc/src/vipsmanual/vipsmanualse3.html:class="pcrb7t-">"p"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse3.html:href="#x8-160001.3.5">1.3.5<!--tex4ht:ref: sec:compute --></a>.
doc/src/vipsmanual/vipsmanualse3.html:class="pcrb7t-">"rw"</span> </dt><dd 
doc/src/vipsmanual/vipsmanualse3.html:class="description">As  the  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">"r"</span></span></span> mode,  but  the  image  is  mapped
doc/src/vipsmanual/vipsmanualse3.html:        into your address space read-write. This mode is
doc/src/vipsmanual/vipsmanualse3.html:        useful for paintbox-style applications which need
doc/src/vipsmanual/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse3.html:href="vipsmanualse18.html#x26-1140004.2.8">4.2.8<!--tex4ht:ref: sec:inplace --></a>.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 46--><p class="indent" >    The second form of constructor is shorthand for:
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-6">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 50--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 52--><p class="noindent" >It is used for representing intermediate results of
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 55--><p class="indent" >  Two further constructors are handy for wrapping
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> around existing images.
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-7">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 63--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 65--><p class="noindent" >The first constructor makes a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> from an area
doc/src/vipsmanual/vipsmanualse3.html:system), and the second makes a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> from an
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span>.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 70--><p class="indent" >    In both these two cases, the VIPS C++ API does not
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 73--><p class="indent" >    The Python interface adds the usual <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">frombuffer</span></span></span> and
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fromstring</span></span></span> methods.
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-8">
doc/src/vipsmanual/vipsmanualse3.html:&#x00A0;<br />&#x00A0;&#x00A0;width,&#x00A0;height,&#x00A0;bands,&#x00A0;format)&#x00A0;-&#x003E;
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 80--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:                                              <div class="verbatim" id="verbatim-9">
doc/src/vipsmanual/vipsmanualse3.html: &#x00A0;<br />&#x00A0;&#x00A0;width,&#x00A0;height,&#x00A0;bands,&#x00A0;format)&#x00A0;-&#x003E;
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 86--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 88--><p class="noindent" >Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fromstring</span></span></span> to avoid worries about object lifetime,
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">frombuffer</span></span></span> for speed, but you have to manage object
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 93--><p class="indent" >    They are useful for moving images into VIPS from other
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">vips_from_PIL_mode</span></span></span>, which turns a PIL mode into a
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-10">
doc/src/vipsmanual/vipsmanualse3.html:VImage.vips_from_PIL_mode&#x00A0;(mode)&#x00A0;-&#x003E;
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 100--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 102--><p class="indent" >  See also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">tobuffer</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">tostring</span></span></span> below.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 104--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse3.html: id="x8-130001.3.2"></a>File conversion</h4>
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 106--><p class="noindent" >VIPS can read and write a number of different file formats.
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-11">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 111--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 113--><p class="noindent" >This will decompress the file <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fred.jpg</span></span></span> to a memory
doc/src/vipsmanual/vipsmanualse3.html:reference to it called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">jim</span></span></span>.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 117--><p class="indent" >    Options are passed to the file format converters embedded
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-12">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 122--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 124--><p class="noindent" >Writing to the descriptor <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">out</span></span></span> will cause a TIFF image to be
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 128--><p class="indent" >  See the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_open(3)</span></span></span> for details of all
doc/src/vipsmanual/vipsmanualse3.html:for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VipsFormat(3)</span></span></span> for a lower-level API which lets you
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 133--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse3.html: id="x8-140001.3.3"></a>Projection functions</h4>
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 135--><p class="noindent" >A set of member functions of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> provide access to the
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-13">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 152--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 154--><p class="noindent" >Where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">TBandFmt</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">TCoding</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">TType</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">TCompression</span></span></span>
doc/src/vipsmanual/vipsmanualse3.html:are <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">enum</span></span></span>s for the types in the VIPS file header. See
doc/src/vipsmanual/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse3.html:href="vipsmanualse2.html#x7-80001.2.1">1.2.1<!--tex4ht:ref: sec:header --></a> for an explanation of all of these fields.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 159--><p class="indent" >    Two functions give access to the filename and history
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-14">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 165--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 167--><p class="indent" >  You can get and set extra metadata fields with
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">meta_get()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">meta_set()</span></span></span>. They read and write
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">GValue</span></span></span> objects, see <span 
doc/src/vipsmanual/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse3.html:href="vipsmanualse8.html#x14-430002.2.6">2.2.6<!--tex4ht:ref: sec:meta --></a>.
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-15">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 175--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 177--><p class="indent" >  A set of convenience functions build on these two to
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-16">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 194--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 196--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">image()</span></span></span> member function provides access to the
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span> descriptor underlying the C++ API. See the <span 
doc/src/vipsmanual/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse3.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a> for
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-17">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 201--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 203--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">data()</span></span></span> member function returns a pointer to an
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-18">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 208--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 210--><p class="noindent" >This can be very slow and use huge amounts of RAM.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 213--><p class="indent" >  The Python interface adds <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">tobuffer</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">tostring</span></span></span>.
doc/src/vipsmanual/vipsmanualse3.html:These operations call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">data()</span></span></span> to generate the image pixels
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 218--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">tostring</span></span></span> to avoid worries about object lifetime,
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">tobuffer</span></span></span> for speed, but you have to manage object
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 222--><p class="indent" >  They are useful for moving images from VIPS into other
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">PIL_mode_from_vips</span></span></span>, which makes a PIL mode from
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-19">
doc/src/vipsmanual/vipsmanualse3.html:  VImage.PIL_mode_from_vips&#x00A0;(vips-image)&#x00A0;-&#x003E;
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 229--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 231--><p class="indent" >  See also <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">frombuffer</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fromstring</span></span></span> above.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 233--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse3.html: id="x8-150001.3.4"></a>Assignment</h4>
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 235--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> defines copy and assignment, with reference-counted,
doc/src/vipsmanual/vipsmanualse3.html:pointer-style semantics. For example, if you write:
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-20">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 243--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 245--><p class="indent" >  This will automatically close the file <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>, and make
doc/src/vipsmanual/vipsmanualse3.html:the variable <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fred</span></span></span> point to the image <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">jim.v</span></span></span> instead. Both
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">jim</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fred</span></span></span> now point to the same underlying image
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 249--><p class="indent" >  Internally, a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> object is just a pointer to a
doc/src/vipsmanual/vipsmanualse3.html:reference-counting block, which in turn holds a pointer to
doc/src/vipsmanual/vipsmanualse3.html:the underlying VIPS <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span> type. You can therefore
doc/src/vipsmanual/vipsmanualse3.html:efficiently pass <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> objects to functions by value, and
doc/src/vipsmanual/vipsmanualse3.html:return <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> objects as function results.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 254--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse3.html: id="x8-160001.3.5"></a>Computing with <span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span>s</h4>
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 257--><p class="noindent" >All VIPS image processing operations are member
doc/src/vipsmanual/vipsmanualse3.html:functions of the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> class. For example:
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-21">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 265--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 267--><p class="indent" >  Will apply <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_costra()</span></span></span> to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>, making an
doc/src/vipsmanual/vipsmanualse3.html:pixel in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>; then add that image to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">jim.v</span></span></span>. Finally,
doc/src/vipsmanual/vipsmanualse3.html:the result will be held in <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">result</span></span></span>.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 271--><p class="indent" >    VIPS is a demand-driven image processing system:
doc/src/vipsmanual/vipsmanualse3.html:functions on images &#8212; <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">result.BandFmt()</span></span></span> for
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">min()</span></span></span>, find minimum value), VIPS evaluates all of the
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 280--><p class="indent" >    <span 
doc/src/vipsmanual/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse3.html:href="vipsmanualse18.html#x26-1060004.2">4.2<!--tex4ht:ref: sec:packages --></a> lists all of the VIPS packages. These general rules
doc/src/vipsmanual/vipsmanualse3.html:        function  names  by  dropping  the  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_</span></span></span> prefix,  and
doc/src/vipsmanual/vipsmanualse3.html:        if present, the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">tra</span></span></span> postfix, the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">const</span></span></span> postfix and
doc/src/vipsmanual/vipsmanualse3.html:        the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">_vec</span></span></span> postfix. For example, the VIPS operation
doc/src/vipsmanual/vipsmanualse3.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_extract()</span></span></span> becomes   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">extract()</span></span></span>,   and
doc/src/vipsmanual/vipsmanualse3.html:        <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_costra()</span></span></span> becomes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">cos()</span></span></span>.
doc/src/vipsmanual/vipsmanualse3.html:        <li class="itemize">The   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> object   to   which   you   apply   the
doc/src/vipsmanual/vipsmanualse3.html:        no image input, the member is declared <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">static</span></span></span>.
doc/src/vipsmanual/vipsmanualse3.html:        <!--l. 297--><p class="noindent" >For   example,   <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_project(3)</span></span></span> returns   two
doc/src/vipsmanual/vipsmanualse3.html:    <div class="verbatim" id="verbatim-22">
doc/src/vipsmanual/vipsmanualse3.html:    <!--l. 303--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:    <!--l. 305--><p class="noindent" >In other words, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">.project()</span></span></span> writes the second result
doc/src/vipsmanual/vipsmanualse3.html:    to the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> you pass as an argument.
doc/src/vipsmanual/vipsmanualse3.html:    <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">INTMASK</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">DOUBLEMASK</span></span></span> types become <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VMask</span></span></span>
doc/src/vipsmanual/vipsmanualse3.html:    objects, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_col_display</span></span></span> types become <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VDisplay</span></span></span>
doc/src/vipsmanual/vipsmanualse3.html:    C++ API member. For example, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_andimage</span></span></span>,
doc/src/vipsmanual/vipsmanualse3.html:    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_andimage_vec</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">im_andimageconst</span></span></span> all
doc/src/vipsmanual/vipsmanualse3.html:    map to the member <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">andimage</span></span></span>. The API relies on
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 321--><p class="indent" >  This part of the C++ API is generated automatically
doc/src/vipsmanual/vipsmanualse3.html:up-to-date.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 324--><p class="indent" >  There are a set of arithmetic operators defined for your
doc/src/vipsmanual/vipsmanualse3.html:expression and include <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> in there.
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-23">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 332--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 334--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse3.html: id="x8-170001.3.6"></a>Writing results</h4>
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 336--><p class="noindent" >Once you have computed some result, you can write it to a
doc/src/vipsmanual/vipsmanualse3.html:file with the member <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">write()</span></span></span>. It takes the following
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-24">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 343--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 345--><p class="indent" >  The first form simply writes the image to the named file.
doc/src/vipsmanual/vipsmanualse3.html:The second form writes the image to the specified <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span>
doc/src/vipsmanual/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-25">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 353--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 355--><p class="noindent" >This creates a temporary memory buffer called <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">jim</span></span></span>, and
doc/src/vipsmanual/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>.
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 359--><p class="indent" >    The final form of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">write()</span></span></span> writes the image to a
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 362--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse3.html: id="x8-180001.3.7"></a>Type conversions</h4>
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 364--><p class="noindent" >Two type conversions are defined: you can cast <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> to
doc/src/vipsmanual/vipsmanualse3.html:a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VDMask</span></span></span> and to a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse3.html:class="pcrr7t-">VIMask</span></span></span>.
doc/src/vipsmanual/vipsmanualse3.html:  <div class="verbatim" id="verbatim-26">
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 370--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 372--><p class="indent" >  These operations are slow and need a lot of memory!
doc/src/vipsmanual/vipsmanualse3.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse3.html:href="vipsmanualse2.html#tailvipsmanualse2.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse3.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse5.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse5.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse5.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse5.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse5.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse5.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse5.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse5.html:href="vipsmanualse4.html#tailvipsmanualse4.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse5.html: id="x10-270001.5"></a>The <span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">VDisplay </span>class</h3>
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">VDisplay</span></span></span> class is an abstraction over the VIPS
doc/src/vipsmanual/vipsmanualse5.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">im_col_display</span></span></span> type which gives convenient and safe
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 6--><p class="indent" >  VIPS display profiles are now mostly obsolete. You&#8217;re
doc/src/vipsmanual/vipsmanualse5.html:better off using the ICC colour management <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">VImage</span></span></span>
doc/src/vipsmanual/vipsmanualse5.html:member functions <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">ICC_export()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">ICC_import()</span></span></span>.
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 10--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse5.html: id="x10-280001.5.1"></a>Constructors</h4>
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 12--><p class="noindent" >There are two constructors for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">VDisplay</span></span></span>:
doc/src/vipsmanual/vipsmanualse5.html:                                                 <div class="verbatim" id="verbatim-36">
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 17--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 19--><p class="indent" >  The first form initialises the display from one of the
doc/src/vipsmanual/vipsmanualse5.html:  <div class="verbatim" id="verbatim-37">
doc/src/vipsmanual/vipsmanualse5.html:&#x00A0;<br />VDisplay&#x00A0;jim(&#x00A0;"ultra2-20/2/98"&#x00A0;);
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 25--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 27--><p class="indent" >  Makes <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">fred</span></span></span> a profile for making images in sRGB
doc/src/vipsmanual/vipsmanualse5.html:format, and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">jim</span></span></span> a profile representing my workstation
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 31--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse5.html: id="x10-290001.5.2"></a>Projection functions</h4>
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 33--><p class="noindent" >A set of member functions of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">VDisplay</span></span></span> provide read and
doc/src/vipsmanual/vipsmanualse5.html:                                                 <div class="verbatim" id="verbatim-38">
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 57--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 59--><p class="indent" >  Where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">VDisplayType</span></span></span> is defined as:
doc/src/vipsmanual/vipsmanualse5.html:  <div class="verbatim" id="verbatim-39">
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 66--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 68--><p class="indent" >  And <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">matrix</span></span></span> is defined as:
doc/src/vipsmanual/vipsmanualse5.html:                                                 <div class="verbatim" id="verbatim-40">
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 72--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 74--><p class="indent" >  For a description of all the fields in a VIPS display
doc/src/vipsmanual/vipsmanualse5.html:profile, see the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse5.html:class="pcrr7t-">im_XYZ2RGB()</span></span></span>.
doc/src/vipsmanual/vipsmanualse5.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse5.html:href="vipsmanualse4.html#tailvipsmanualse4.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse5.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualch2.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualch2.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualch2.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualch2.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualch2.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualch2.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualch2.html:  <!--l. 70--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualch1.html#tailvipsmanualch1.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualch2.html: id="x12-350002"></a>VIPS for C programmers</h2>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse7.html#x13-360002.1">Introduction</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-370002.2">Core C API</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-380002.2.1">Startup</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-390002.2.2">Image descriptors</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-400002.2.3">Header fields</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-410002.2.4">Opening and closing</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-420002.2.5">Examples</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-430002.2.6">Metadata</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-440002.2.7">History</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-450002.2.8">Eval callbacks</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-460002.2.9">Detailed rules for descriptors</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-470002.2.10">Automatic resource deallocation</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-510002.2.11">Error handling</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse8.html#x14-520002.2.12">Joining operations together</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse9.html#x15-590002.3">Function dispatch and plug-ins</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse9.html#x15-600002.3.1">Simple plugin example</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse9.html#x15-610002.3.2">A more complicated example</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse9.html#x15-620002.3.3">Adding new types</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse9.html#x15-630002.3.4">Using function dispatch in your application</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse10.html#x16-670002.4">The VIPS base class: <span 
doc/src/vipsmanual/vipsmanualch2.html:class="pcrr7t-">VipsObject</span></a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse10.html#x16-680002.4.1">Properties</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse10.html#x16-730002.4.2">Convenience functions</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse11.html#x17-740002.5">Image formats</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse11.html#x17-750002.5.1">How a format is represented</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse11.html#x17-760002.5.2">The format class</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse11.html#x17-770002.5.3">Finding a format</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse11.html#x17-780002.5.4">Convenience functions</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse12.html#x18-790002.6">Interpolators</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse12.html#x18-800002.6.1">How an interpolator is represented</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse12.html#x18-810002.6.2">A sample interpolator</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse12.html#x18-820002.6.3">Writing a VIPS operation that takes an interpolator as an argument</a></span>
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualse12.html#x18-830002.6.4">Passing an interpolator to a VIPS operation</a></span>
doc/src/vipsmanual/vipsmanualch2.html:  <!--l. 79--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualch2.html:href="vipsmanualch1.html#tailvipsmanualch1.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualch2.html:<!--l. 79--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse15.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse15.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse15.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse15.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse15.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse15.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse15.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse15.html:href="vipsmanualse14.html#tailvipsmanualse14.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse15.html: id="x22-920003.3"></a>Programming PIO functions</h3>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 4--><p class="noindent" >The VIPS PIO system has a number of advantages over
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 7--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse15.html: id="x22-930003.3.1"></a>Easy PIO with <span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">_wrapone() </span>and
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im</span><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">_wrapmany()</span></h4>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 10--><p class="noindent" >PIO is a very general image IO system, and because of this
doc/src/vipsmanual/vipsmanualse15.html:VIPS offers an easy-to-use layer over PIO with the funtions
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span>.
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 14--><p class="indent" >  If your image processing function is uninterested in
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 19--><p class="indent" >  Consider the <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> function of figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse15.html:href="vipsmanualse14.html#x21-900012">3.2<!--tex4ht:ref: fg:invert --></a>. First, we
doc/src/vipsmanual/vipsmanualse15.html:have to write the core of this as a buffer-processing
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-140">
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;q[i]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[i];
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 42--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 44--><p class="indent" >  Now we have to wrap up this very primitive expression
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span> to do this. It has type:
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-141">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 51--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 53--><p class="noindent" >where:
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-142">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 60--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 62--><p class="noindent" >almost the same type as our buffer-processing function
doc/src/vipsmanual/vipsmanualse15.html:above. The values <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">a</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">b</span></span></span> are carried around by VIPS for
doc/src/vipsmanual/vipsmanualse15.html:whatever use you fancy. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> can now be written
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-143">
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in-&#x003E;Bands&#x00A0;!=&#x00A0;1&#x00A0;||
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 96--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 98--><p class="indent" >  And that&#8217;s all there is to it. This function will have all of
doc/src/vipsmanual/vipsmanualse15.html:easy to program as the WIO <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> earlier in this
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 102--><p class="indent" >  This version of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> is not very general: it will
doc/src/vipsmanual/vipsmanualse15.html:only accept one-band unsigned char images. It is easy to
doc/src/vipsmanual/vipsmanualse15.html:modify for n-band images:
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-144">
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;int&#x00A0;sz&#x00A0;=&#x00A0;n&#x00A0;&#x22C6;&#x00A0;in-&#x003E;Bands;
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;q[i]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[i];
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 121--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 123--><p class="indent" >  We must also modify <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span>:
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-145">
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Process!&#x00A0;The&#x00A0;first&#x00A0;user-parameter
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 152--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 154--><p class="indent" >  There are two significant hidden traps here. First,
doc/src/vipsmanual/vipsmanualse15.html:read the contents of the user parameters <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">a</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">b</span></span></span>, you
doc/src/vipsmanual/vipsmanualse15.html:may not write to them. This is because on a multi-CPU
doc/src/vipsmanual/vipsmanualse15.html:machine, several copies of your buffer-processing functions
doc/src/vipsmanual/vipsmanualse15.html:overflows), you can&#8217;t use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span>, you&#8217;ll
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 163--><p class="indent" >  Secondly, your buffer processing function may not be
doc/src/vipsmanual/vipsmanualse15.html:your operation until long after the call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> has
doc/src/vipsmanual/vipsmanualse15.html:read anything in your buffer-processing function that may
doc/src/vipsmanual/vipsmanualse15.html:local resource allocators, such as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_open_local()</span></span></span> and<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_malloc()</span></span></span>. This issue is discussed at length in the
doc/src/vipsmanual/vipsmanualse15.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse15.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>.
doc/src/vipsmanual/vipsmanualse15.html: <!--l. 171--><p class="indent" >    <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span> is for operations which take exactly
doc/src/vipsmanual/vipsmanualse15.html: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span>, which works for any number of input
doc/src/vipsmanual/vipsmanualse15.html: images. The type of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span> is slightly
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-146">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 179--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 181--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse15.html:                                              <div class="verbatim" id="verbatim-147">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 187--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 189--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span> takes a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">NULL</span></span></span>-terminated array of
doc/src/vipsmanual/vipsmanualse15.html:input images, and creates a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">NULL</span></span></span>-terminated array of
doc/src/vipsmanual/vipsmanualse15.html:function to add two <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> images to
doc/src/vipsmanual/vipsmanualse15.html:make a <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> image might be written
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-148">
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;int&#x00A0;sz&#x00A0;=&#x00A0;n&#x00A0;&#x22C6;&#x00A0;in-&#x003E;Bands;
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 209--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 211--><p class="indent" >  This can be made into a PIO function with:
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-149">
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;i1-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i1-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;||
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i2-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i2-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;||
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i1-&#x003E;Bands&#x00A0;!=&#x00A0;i2-&#x003E;Bands&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;out-&#x003E;BandFmt&#x00A0;=&#x00A0;IM_BANDFMT_USHORT;
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;out-&#x003E;Bbits&#x00A0;=&#x00A0;IM_BBITS_SHORT;
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Process!&#x00A0;The&#x00A0;first&#x00A0;user-parameter
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x22C6;&#x00A0;invec&#x00A0;is&#x00A0;a&#x00A0;NULL-terminated&#x00A0;array&#x00A0;of
doc/src/vipsmanual/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 256--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 258--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse15.html: id="x22-940003.3.2"></a>Region descriptors</h4>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 260--><p class="noindent" >Regions are the next layer of abstraction above image
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-150">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 272--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 274--><p class="noindent" >where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">valid</span></span></span> holds the sub-area of image <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im</span></span></span> that this
doc/src/vipsmanual/vipsmanualse15.html:region represents, and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">Rect</span></span></span> is defined as:
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-151">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 283--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 285--><p class="noindent" >two macros are available for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">Rect</span></span></span> calculations:
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-152">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 291--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 293--><p class="noindent" >where <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_RECT_RIGHT()</span></span></span> returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">left</span></span></span> + <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">width</span></span></span>, and
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_RECT_BOTTOM()</span></span></span> returns <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">top</span></span></span> + <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">height</span></span></span>. A small
doc/src/vipsmanual/vipsmanualse15.html:library of C functions are also available for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">Rect</span></span></span> algebra, see
doc/src/vipsmanual/vipsmanualse15.html:the manual pages for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_rect_intersectrect()</span></span></span>.
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 299--><p class="indent" >    Regions are created with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_region_create()</span></span></span>.
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-153">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 303--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 305--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_region_create()</span></span></span> returns a pointer to a new
doc/src/vipsmanual/vipsmanualse15.html:region structure, or <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">NULL</span></span></span> on error. Regions returned by
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_region_create()</span></span></span> are blank &#8212; they contain no
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 311--><p class="indent" >  Regions are destroyed with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_region_free()</span></span></span>. It
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-154">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 315--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 317--><p class="noindent" >And, as usual, returns 0 on success and non-zero on
doc/src/vipsmanual/vipsmanualse15.html:error, setting <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_error()</span></span></span>. You must free all regions
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 325--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse15.html: id="x22-950003.3.3"></a>Image input with regions</h4>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 327--><p class="noindent" >Before you can read from a region, you need to call
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span> to fill the region with image data. It has
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-155">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 332--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 334--><p class="indent" >  Area <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">r</span></span></span> of the image on which <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">reg</span></span></span> has been created is
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 337--><p class="indent" >  Exactly what this preparation involves depends upon
doc/src/vipsmanual/vipsmanualse15.html:functions. If it returns successfully, <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span>
doc/src/vipsmanual/vipsmanualse15.html:guarantees that all pixels within <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">reg-&#x003E;valid</span></span></span> may be
doc/src/vipsmanual/vipsmanualse15.html:accessed. Note that this may be smaller or larger than <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">r</span></span></span>,
doc/src/vipsmanual/vipsmanualse15.html:since <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span> clips <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">r</span></span></span> against the size of the
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 344--><p class="indent" >  Programs can access image data in the region by calling
doc/src/vipsmanual/vipsmanualse15.html:the macro <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span>. It has type
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-156">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 350--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 352--><p class="indent" >  Provided that point (x,y) lies inside <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">reg-&#x003E;valid</span></span></span>,
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> returns a pointer to pel <span 
doc/src/vipsmanual/vipsmanualse15.html:class="cmr-10">(</span><span 
doc/src/vipsmanual/vipsmanualse15.html:class="cmmi-10">x,y</span><span 
doc/src/vipsmanual/vipsmanualse15.html:class="cmr-10">)</span>.
doc/src/vipsmanual/vipsmanualse15.html:Adding to the result of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> moves to
doc/src/vipsmanual/vipsmanualse15.html:within <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">reg-&#x003E;valid</span></span></span>. Add <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_REGION_LSKIP()</span></span></span> to
doc/src/vipsmanual/vipsmanualse15.html:move down a line, see below. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> has
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 359--><p class="indent" >    Other macros are available to ease address calculation:
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-157">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 365--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 367--><p class="noindent" >These find the number of bytes to add to the result of
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> to move down a line, the number of
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 372--><p class="indent" >  Figure&#x00A0;<a 
doc/src/vipsmanual/vipsmanualse15.html:href="#x22-950015">3.5<!--tex4ht:ref: fg:paverage --></a> is a version of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> which uses
doc/src/vipsmanual/vipsmanualse15.html:should really be using <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>, see <span 
doc/src/vipsmanual/vipsmanualse15.html:class="cmsy-10"></span><a 
doc/src/vipsmanual/vipsmanualse15.html:href="#x22-960003.3.4">3.3.4<!--tex4ht:ref: sec:sequence --></a>, to do
doc/src/vipsmanual/vipsmanualse15.html:call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_pincheck()</span></span></span> rather than <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_incheck()</span></span></span>.
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_pincheck()</span></span></span> signals to the IO system that you are a
doc/src/vipsmanual/vipsmanualse15.html:PIO-aware function, giving <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span> much more
doc/src/vipsmanual/vipsmanualse15.html:see the manual pages for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_poutcheck()</span></span></span> and
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_piocheck()</span></span></span>.
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 382--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse15.html: id="x22-950015"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse15.html:<div class="verbatim" id="verbatim-158">
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;im-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||&#x00A0;im-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 408--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:class="content">First PIO average of image</span></div><!--tex4ht:label?: x22-950015 -->
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 414--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse15.html: id="x22-950026"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse15.html:<div class="verbatim" id="verbatim-159">
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;r&#x00A0;=&#x00A0;&amp;reg-&#x003E;valid;
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;area.top&#x00A0;=&#x00A0;0;&#x00A0;area.top&#x00A0;&#x003C;&#x00A0;im-&#x003E;Ysize;&#x00A0;area.top&#x00A0;+=&#x00A0;100&#x00A0;)
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;area.left&#x00A0;=&#x00A0;0;&#x00A0;area.left&#x00A0;&#x003C;&#x00A0;im-&#x003E;Xsize;
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;r-&#x003E;top;&#x00A0;y&#x00A0;&#x003C;&#x00A0;IM_RECT_BOTTOM(&#x00A0;r&#x00A0;);&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;p&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;reg,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x22C6;out&#x00A0;=&#x00A0;(double)&#x00A0;total&#x00A0;/&#x00A0;(IM_IMAGE_N_ELEMENTS(&#x00A0;im&#x00A0;)&#x00A0;&#x22C6;&#x00A0;im-&#x003E;Ysize);
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 454--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:class="content">First PIO average of image (cont.)</span></div><!--tex4ht:label?: x22-950026 -->
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 458--><p class="indent" >  This version of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> can be called in exactly the
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 462--><p class="indent" >  We can do one better than this &#8212; if the image is being
doc/src/vipsmanual/vipsmanualse15.html: id="x22-960003.3.4"></a>Splitting into sequences</h4>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 470--><p class="noindent" >A sequence comes in three parts: a start function, a
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-160">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 488--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 490--><p class="noindent" >The values <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">a</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">b</span></span></span> are carried around by VIPS for your
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 493--><p class="indent" >    For functions like <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> which consume
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>. This has type:
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-161">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 502--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 504--><p class="indent" >  VIPS starts one or more sequences, runs one or more
doc/src/vipsmanual/vipsmanualse15.html:processing functions over image <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">in</span></span></span> until all of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">in</span></span></span> has
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">process_fn()</span></span></span> is given will be complete and disjoint,
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 513--><p class="indent" >  An example should make this clearer. This version of
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> is very similar to the average function in the
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 518--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse15.html: id="x22-960017"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse15.html:<div class="verbatim" id="verbatim-162">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 557--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:class="content">Final PIO average of image</span></div><!--tex4ht:label?: x22-960017 -->
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 563--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse15.html: id="x22-960028"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse15.html:<div class="verbatim" id="verbatim-163">
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;Rect&#x00A0;&#x22C6;r&#x00A0;=&#x00A0;&amp;reg-&#x003E;valid;
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;r-&#x003E;top;&#x00A0;y&#x00A0;&#x003C;&#x00A0;IM_RECT_BOTTOM(&#x00A0;r&#x00A0;);&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;p&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;reg,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 594--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:class="content">Final PIO average of image (cont.)</span></div><!--tex4ht:label?: x22-960028 -->
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 599--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse15.html: id="x22-960039"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse15.html:<div class="verbatim" id="verbatim-164">
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;im-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;im-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x22C6;out&#x00A0;=&#x00A0;(double)&#x00A0;gtotal&#x00A0;/&#x00A0;(IM_IMAGE_N_ELEMENTS(&#x00A0;im&#x00A0;)&#x00A0;&#x22C6;&#x00A0;im-&#x003E;Ysize);
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 635--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:class="content">Final PIO average of image (cont.)</span></div><!--tex4ht:label?: x22-960039 -->
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 639--><p class="indent" >  There are a couple of variations on <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span>:
doc/src/vipsmanual/vipsmanualse15.html:you can use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_prepare_to()</span></span></span> to force writing to a
doc/src/vipsmanual/vipsmanualse15.html:particular place, and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_prepare_thread()</span></span></span> to use
doc/src/vipsmanual/vipsmanualse15.html: id="x22-970003.3.5"></a>Output to regions</h4>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 646--><p class="noindent" >Regions are written to in just the same way they are
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> macro.
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 649--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span> does input &#8212; <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span> does
doc/src/vipsmanual/vipsmanualse15.html:output. It has the same type as <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>:
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-165">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 659--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 661--><p class="indent" >  The region given to the process function is ready for
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>, the areas the process function is asked to
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 667--><p class="indent" >    Here is <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span>, rewritten to use PIO. This piece of
doc/src/vipsmanual/vipsmanualse15.html:provided by the VIPS library: <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_start_one()</span></span></span> and
doc/src/vipsmanual/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_stop_one()</span></span></span>. They assume that the first of the two
doc/src/vipsmanual/vipsmanualse15.html:user arguments to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span> is the input image.
doc/src/vipsmanual/vipsmanualse15.html:  <div class="verbatim" id="verbatim-166">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 679--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 681--><p class="noindent" >and:
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-167">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 690--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 692--><p class="indent" >  They are useful for simple functions which expect only one
doc/src/vipsmanual/vipsmanualse15.html:input image. See the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_start_many()</span></span></span>
doc/src/vipsmanual/vipsmanualse15.html:for many-input functions.
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 697--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse15.html: id="x22-9700110"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse15.html:<div class="verbatim" id="verbatim-168">
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;Rect&#x00A0;&#x22C6;r&#x00A0;=&#x00A0;&amp;or-&#x003E;valid;
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;r-&#x003E;top;&#x00A0;y&#x00A0;&#x003C;&#x00A0;IM_RECT_BOTTOM(&#x00A0;r&#x00A0;);&#x00A0;y++&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;p&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;ir,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;q&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;or,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;q[i]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[i];
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 732--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:class="content">PIO invert</span></div><!--tex4ht:label?: x22-9700110 -->
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 738--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse15.html: id="x22-9700211"></a><hr class="float"><div class="float" 
doc/src/vipsmanual/vipsmanualse15.html:<div class="verbatim" id="verbatim-169">
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 775--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:class="content">PIO invert (cont.)</span></div><!--tex4ht:label?: x22-9700211 -->
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 779--><p class="indent" >  Functions have some choice about the way they write
doc/src/vipsmanual/vipsmanualse15.html:they were given by <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span>. They can, if they
doc/src/vipsmanual/vipsmanualse15.html:the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_region_region()</span></span></span>. See also
doc/src/vipsmanual/vipsmanualse15.html:the source for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_copy()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_extract()</span></span></span> for
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 785--><p class="indent" >  Note also the call to <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_demand_hint()</span></span></span>. This
doc/src/vipsmanual/vipsmanualse15.html: id="x22-980003.3.6"></a>Callbacks</h4>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 794--><p class="noindent" >VIPS lets you attach callbacks to image descriptors. These
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 798--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse15.html: id="x22-990003.3.6"></a>Close callbacks</h5>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 800--><p class="noindent" >These callbacks are invoked just before an image is
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 807--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_add_close_callback()</span></span></span> to add a close
doc/src/vipsmanual/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-170">
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 814--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 816--><p class="indent" >  As with <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span>, the two <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">void</span><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">&#x00A0;&#x22C6;</span></span></span> pointers
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 820--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse15.html: id="x22-1000003.3.6"></a>Preclose callbacks</h5>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 822--><p class="noindent" >Preclose callbacks are called before any shutdown has
doc/src/vipsmanual/vipsmanualse15.html:page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_add_preclose_callback()</span></span></span> for full
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 827--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse15.html: id="x22-1010003.3.6"></a>Eval callbacks</h5>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 829--><p class="noindent" >These are callbacks which are invoked periodically by VIPS
doc/src/vipsmanual/vipsmanualse15.html:useful for user-interfaces built on top of VIPS. See the
doc/src/vipsmanual/vipsmanualse15.html:manual page for <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse15.html:class="pcrr7t-">im_add_eval_callback()</span></span></span> for full
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 834--><p class="noindent" >
doc/src/vipsmanual/vipsmanualse15.html: id="x22-1020003.3.7"></a>Memory allocation revisited</h4>
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 836--><p class="noindent" >When you are using PIO, memory allocation becomes
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 844--><p class="indent" >    The first type, memory local to this function instance,
doc/src/vipsmanual/vipsmanualse15.html:image processing function, and links to any read-only tables
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 849--><p class="indent" >  The second type of memory, memory local to a sequence,
doc/src/vipsmanual/vipsmanualse15.html:stop functions are guaranteed to be single-threaded, so
doc/src/vipsmanual/vipsmanualse15.html:you may write to the function-local memory within
doc/src/vipsmanual/vipsmanualse15.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse15.html:href="vipsmanualse14.html#tailvipsmanualse14.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse15.html:<!--l. 1--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualse16.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualse16.html:<head><title>Programming in-place functions</title> 
doc/src/vipsmanual/vipsmanualse16.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualse16.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse16.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualse16.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualse16.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualse16.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse16.html:href="vipsmanualse15.html#tailvipsmanualse15.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse16.html: id="x23-1030003.4"></a>Programming in-place functions</h3>
doc/src/vipsmanual/vipsmanualse16.html:<!--l. 3--><p class="noindent" >VIPS includes a little support for in-place functions &#8212;
doc/src/vipsmanual/vipsmanualse16.html:<!--l. 8--><p class="indent" >  Operations of this type should call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse16.html:class="pcrr7t-">im_rwcheck()</span></span></span>
doc/src/vipsmanual/vipsmanualse16.html:instead of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse16.html:class="pcrr7t-">im_incheck()</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanual/vipsmanualse16.html:class="pcrr7t-">im_rwcheck()</span></span></span> tries to get
doc/src/vipsmanual/vipsmanualse16.html:a descriptor ready for in-place writing. For example, a
doc/src/vipsmanual/vipsmanualse16.html:                                                 <div class="verbatim" id="verbatim-171">
doc/src/vipsmanual/vipsmanualse16.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanual/vipsmanualse16.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;memset(&#x00A0;im-&#x003E;data,&#x00A0;0,
doc/src/vipsmanual/vipsmanualse16.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;im-&#x003E;Ysize&#x00A0;);
doc/src/vipsmanual/vipsmanualse16.html:<!--l. 35--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse16.html:<!--l. 37--><p class="indent" >  This function might be called from an application
doc/src/vipsmanual/vipsmanualse16.html:  <div class="verbatim" id="verbatim-172">
doc/src/vipsmanual/vipsmanualse16.html:<!--l. 56--><p class="nopar" >
doc/src/vipsmanual/vipsmanualse16.html:  <!--l. 86--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualse16.html:href="vipsmanualse15.html#tailvipsmanualse15.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualse16.html:<!--l. 86--><p class="indent" >  <a 
doc/src/vipsmanual/vipsmanualch4.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanual/vipsmanualch4.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanual/vipsmanualch4.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualch4.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanual/vipsmanualch4.html:<!-- 3,html --> 
doc/src/vipsmanual/vipsmanualch4.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanual/vipsmanualch4.html:  <!--l. 86--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualch3.html#tailvipsmanualch3.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualch4.html: id="x24-1040004"></a>VIPS reference</h2>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse17.html#x25-1050004.1">Introduction</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1060004.2">VIPS packages</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1070004.2.1">Arithmetic</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1080004.2.2">Relational</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1090004.2.3">Boolean</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1100004.2.4">Colour</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1110004.2.5">Conversion</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1120004.2.6">Matricies</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1130004.2.7">Convolution</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1140004.2.8">In-place operations</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1150004.2.9">Frequency filtering</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1160004.2.10">Histograms and LUTs</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1170004.2.11">Morphology</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1180004.2.12">Mosaicing</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1190004.2.13">CImg functions</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1200004.2.14">Other</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1210004.2.15">IO functions</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1220004.2.16">Format functions</a></span>
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualse18.html#x26-1230004.2.17">Resample functions</a></span>
doc/src/vipsmanual/vipsmanualch4.html:  <!--l. 91--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanual/vipsmanualch4.html:href="vipsmanualch3.html#tailvipsmanualch3.html" >prev-tail</a>] [<a 
doc/src/vipsmanual/vipsmanualch4.html:<!--l. 91--><p class="indent" >  <a 
doc/src/vipsmanual.log:This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=latex 2010.5.9)  9 JUN 2010 21:39
doc/src/vipsmanual.log: %&-line parsing enabled.
doc/src/vipsmanual.log:(./vipsmanual.tex (/usr/share/texmf-texlive/tex/latex/base/book.cls
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/base/bk10.clo
doc/src/vipsmanual.log:version 2008-10-27-17:23
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for _ at preamble, use the command line option `early_'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for ^ at preamble, use the command line option `early^'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/geometry/geometry.sty
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/generic/oberdiek/ifvtex.sty
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/graphics/dvips.def
doc/src/vipsmanual.log:File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/graphics/color.sty
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def
doc/src/vipsmanual.log:File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/psnfss/times.sty
doc/src/vipsmanual.log:Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) 
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty
doc/src/vipsmanual.log:version 2009-01-07-07:11
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for additional information, use the command line option `info'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:version 2008-10-27-17:23
doc/src/vipsmanual.log:--- needs --- tex4ht vipsmanual ---
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for XML code, use the command line option `xml' or `xhtml'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- to remove the <?xml version=...?> processing instruction use the c
doc/src/vipsmanual.log:ommand line option `no-VERSION'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- to remove the DOCTYPE declaration use the command line option `no-
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for marking of the base font, use the command line option `fonts+'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for non active _, use the command line option `no_'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for _ of catcode 13, use the command line option `_13'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for non active ^, use the command line option `no^'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for ^ of catcode 13, use the command line option `^13'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- For section filenames that reflect on their titles use the command
doc/src/vipsmanual.log: line option `sec-filename'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for alternative charset, use the command line option `charset=...'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- to ignore CSS font decoration, use the `NoFonts' command line opti
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for jpg bitmaps of pictures, use the `jpg' command line option. (C
doc/src/vipsmanual.log:haracter bitmaps are controled only by `g' records of tex4ht.env and `-g' switc
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for gif bitmaps of pictures, use the `gif' command line option. (C
doc/src/vipsmanual.log:haracter bitmaps are controled only by `g' records of tex4ht.env and `-g' switc
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for content and toc in 2 frames, use the command line option `fram
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for content, toc, and footnotes in 3 frames, use the command line 
doc/src/vipsmanual.log:option `frames-fn'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for file extension name xht, use the command line option `xht'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- to ignore CSS code, use the command line option `-css
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for inline CSS code, use the command line option `css-in'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for pop ups on mouse over, use the command line option `mouseover'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for addressing images in a subdirectory, use the command line opti
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for back links to toc, use the command line option `sections+'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for linear crosslinks of pages, use the command line option `next'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for links into captions, instead of float heads, use the command l
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- For mini tocs immediately aftter the header use the command line o
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for enumerated list elements with valued data, use the command lin
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for enumerated list elements li's with value attributes, use the c
doc/src/vipsmanual.log:ommand line option `enumerate-'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for CSS2 code, use the command line option `css2'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for pictorial tabular, use the command line option `pic-tabular'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for bitmap fbox'es, use the command line option `pic-fbox'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for bitmap framebox'es, use the command line option `pic-framebox'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for inline footnotes use command line option `fn-in'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for tracing of latex font commands, use the command line option `f
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for width specifications of tabular p entries, use the `p-width' c
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for pictorial eqnarray, use the command line option `pic-eqnarray'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for pictorial array, use the command line option `pic-array'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for pictorial $...$ environments, use the command line option `pic
doc/src/vipsmanual.log:-m' (not recommended!!)
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for pictorial $...$ and $$...$$ environments with latex alt, use t
doc/src/vipsmanual.log:he command line option `pic-m+' (not safe!!)
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for pictorial array, use the command line option `pic-array'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for tocs without * entries, use command line option `notoc*'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for tocs without * entries, use command line option `notoc*'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for tocs without * entries, use command line option `notoc*'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- to eliminate mini tables of contents, use the command line option 
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- to eliminate mini tables of contents, use the command line option 
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for frames-like object-based table of contents, use the command li
doc/src/vipsmanual.log:ne option `obj-toc'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for files named derived from section titles, use the command line 
doc/src/vipsmanual.log:option `sec-filename'
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for i-columns index, use the command line option `index=i' (e.g., 
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- if included graphics are of degraded quality, try the command line
doc/src/vipsmanual.log: options `graphics-num' or `graphics-'. The `num' should provide the density of
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:--- Note --- for key dimensions try the option `Gin-dim'; for key dimensions wh
doc/src/vipsmanual.log:en bounding box is unavailable try `Gin-dim+'; neither is recommended
doc/src/vipsmanual.log:--------------------------------------
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def)
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:version 2009-05-21-09:32
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht
doc/src/vipsmanual.log:version 2009-05-18-23:01
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/psnfss/ot1ptm.fd
doc/src/vipsmanual.log:*geometry auto-detecting driver*
doc/src/vipsmanual.log:-------------------- Geometry parameters
doc/src/vipsmanual.log:landscape: --
doc/src/vipsmanual.log:asymmetric: --
doc/src/vipsmanual.log:h-parts: 71.70166pt, 0.7\paperwidth , 107.55254pt (default)
doc/src/vipsmanual.log:v-parts: 101.40665pt, 0.7\paperheight , 152.11pt (default)
doc/src/vipsmanual.log:lines: --
doc/src/vipsmanual.log:heightrounded: --
doc/src/vipsmanual.log:truedimen: --
doc/src/vipsmanual.log:includehead: --
doc/src/vipsmanual.log:includefoot: --
doc/src/vipsmanual.log:includemp: --
doc/src/vipsmanual.log:-------------------- Page layout dimensions and switches
doc/src/vipsmanual.log:\topmargin  -5.93083pt
doc/src/vipsmanual.log:-----------------------
doc/src/vipsmanual.log:--- file vipsmanual.css ---
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/psnfss/ot1pcr.fd
doc/src/vipsmanual.log:--- file vipsmanualli1.html ---
doc/src/vipsmanual.log:--- file vipsmanualli2.html ---
doc/src/vipsmanual.log:--- file vipsmanualli3.html ---
doc/src/vipsmanual.log:--- file vipsmanualch1.html ---
doc/src/vipsmanual.log:--- file vipsmanualse1.html ---
doc/src/vipsmanual.log:(/usr/share/texmf-texlive/tex/latex/psnfss/omsptm.fd
doc/src/vipsmanual.log:--- file vipsmanualse2.html ---
doc/src/vipsmanual.log:--- file vipsmanualse3.html ---
doc/src/vipsmanual.log:--- file vipsmanualse4.html ---
doc/src/vipsmanual.log:--- file vipsmanualse5.html ---
doc/src/vipsmanual.log:--- file vipsmanualse6.html ---
doc/src/vipsmanual.log:--- file vipsmanualch2.html ---
doc/src/vipsmanual.log:--- file vipsmanualse7.html ---
doc/src/vipsmanual.log:l.15 --- TeX4ht warning --- Cannot determine size of graphic in figs/arch.png (
doc/src/vipsmanual.log:no BoundingBox) ---
doc/src/vipsmanual.log:l. 15 --- needs --- figs/arch.png ---
doc/src/vipsmanual.log:--- file vipsmanualse8.html ---
doc/src/vipsmanual.log:--- file vipsmanualse9.html ---
doc/src/vipsmanual.log:--- file vipsmanualse10.html ---
doc/src/vipsmanual.log:--- file vipsmanualse11.html ---
doc/src/vipsmanual.log:--- file vipsmanualse12.html ---
doc/src/vipsmanual.log:--- file vipsmanualch3.html ---
doc/src/vipsmanual.log:--- file vipsmanualse13.html ---
doc/src/vipsmanual.log:--- file vipsmanualse14.html ---
doc/src/vipsmanual.log:--- file vipsmanualse15.html ---
doc/src/vipsmanual.log:--- file vipsmanualse16.html ---
doc/src/vipsmanual.log:--- file vipsmanualch4.html ---
doc/src/vipsmanual.log:--- file vipsmanualse17.html ---
doc/src/vipsmanual.log:--- file vipsmanualse18.html ---
doc/src/vipsmanual.log:l.163 --- TeX4ht warning --- Cannot determine size of graphic in figs/interconv
doc/src/vipsmanual.log:ert.png (no BoundingBox) ---
doc/src/vipsmanual.log:l. 163 --- needs --- figs/interconvert.png ---
doc/src/vipsmanualse16.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualse16.html:<head><title>Programming in-place functions</title> 
doc/src/vipsmanualse16.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualse16.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse16.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualse16.html:<!-- 3,html --> 
doc/src/vipsmanualse16.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualse16.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse16.html:href="vipsmanualse15.html#tailvipsmanualse15.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse16.html: id="x23-1030003.4"></a>Programming in-place functions</h3>
doc/src/vipsmanualse16.html:<!--l. 3--><p class="noindent" >VIPS includes a little support for in-place functions &#8212;
doc/src/vipsmanualse16.html:<!--l. 8--><p class="indent" >  Operations of this type should call <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse16.html:class="pcrr7t-">im_rwcheck()</span></span></span>
doc/src/vipsmanualse16.html:instead of <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse16.html:class="pcrr7t-">im_incheck()</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/src/vipsmanualse16.html:class="pcrr7t-">im_rwcheck()</span></span></span> tries to get
doc/src/vipsmanualse16.html:a descriptor ready for in-place writing. For example, a
doc/src/vipsmanualse16.html:                                                 <div class="verbatim" id="verbatim-171">
doc/src/vipsmanualse16.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/src/vipsmanualse16.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;memset(&#x00A0;im-&#x003E;data,&#x00A0;0,
doc/src/vipsmanualse16.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;im-&#x003E;Ysize&#x00A0;);
doc/src/vipsmanualse16.html:<!--l. 35--><p class="nopar" >
doc/src/vipsmanualse16.html:<!--l. 37--><p class="indent" >  This function might be called from an application
doc/src/vipsmanualse16.html:  <div class="verbatim" id="verbatim-172">
doc/src/vipsmanualse16.html:<!--l. 56--><p class="nopar" >
doc/src/vipsmanualse16.html:  <!--l. 86--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualse16.html:href="vipsmanualse15.html#tailvipsmanualse15.html" >prev-tail</a>] [<a 
doc/src/vipsmanualse16.html:<!--l. 86--><p class="indent" >  <a 
doc/src/vipsmanualch4.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/src/vipsmanualch4.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/src/vipsmanualch4.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualch4.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/src/vipsmanualch4.html:<!-- 3,html --> 
doc/src/vipsmanualch4.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/src/vipsmanualch4.html:  <!--l. 86--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualch4.html:href="vipsmanualch3.html#tailvipsmanualch3.html" >prev-tail</a>] [<a 
doc/src/vipsmanualch4.html: id="x24-1040004"></a>VIPS reference</h2>
doc/src/vipsmanualch4.html:href="vipsmanualse17.html#x25-1050004.1">Introduction</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1060004.2">VIPS packages</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1070004.2.1">Arithmetic</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1080004.2.2">Relational</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1090004.2.3">Boolean</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1100004.2.4">Colour</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1110004.2.5">Conversion</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1120004.2.6">Matricies</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1130004.2.7">Convolution</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1140004.2.8">In-place operations</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1150004.2.9">Frequency filtering</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1160004.2.10">Histograms and LUTs</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1170004.2.11">Morphology</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1180004.2.12">Mosaicing</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1190004.2.13">CImg functions</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1200004.2.14">Other</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1210004.2.15">IO functions</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1220004.2.16">Format functions</a></span>
doc/src/vipsmanualch4.html:href="vipsmanualse18.html#x26-1230004.2.17">Resample functions</a></span>
doc/src/vipsmanualch4.html:  <!--l. 91--><div class="crosslinks"><p class="noindent">[<a 
doc/src/vipsmanualch4.html:href="vipsmanualch3.html#tailvipsmanualch3.html" >prev-tail</a>] [<a 
doc/src/vipsmanualch4.html:<!--l. 91--><p class="indent" >  <a 
doc/src/refintro.tex:Half-done manuals are distributed with VIPS, and they should be all done by
doc/src/refintro.tex:refer to the UNIX on-line manual pages. Enter (for example):
doc/src/refintro.tex:All the comand-line vips operations will print help text too. For example:
doc/src/refintro.tex:user-interfaces, or you can run it from the UNIX command line with the
doc/src/refintro.tex:mini-applications (like \verb+vips2dj+). These programs are listed in
doc/src/refintro.tex:\texttt{vips-7.14} & VIPS wrapper script \\
doc/src/refintro.tex:\texttt{cooc\_features} & Calculate features of a co-occurence matrix \\
doc/src/refintro.tex:\texttt{cooc} & Calculate a co-occurence matrix \\
doc/src/refintro.tex:\texttt{glds\_features} & Calculate features of a grey-level 
doc/src/refintro.tex:\texttt{glds} & Calculate a grey-level distribution matrix \\
doc/src/refintro.tex:\texttt{vips2dj} & VIPS to high-quality colour Postscript \\
doc/src/pio.tex:can be complicated to program. As a convenience, VIPS offers an easy-to-use
doc/src/pio.tex:we have to write the core of this as a buffer-processing function:
doc/src/pio.tex:      q[i] = 255 - p[i];
doc/src/pio.tex:almost the same type as our buffer-processing function above. The values
doc/src/pio.tex:   if( in->BandFmt != IM_BANDFMT_UCHAR || 
doc/src/pio.tex:      in->Bands != 1 || 
doc/src/pio.tex:      in->Coding != IM_CODING_NONE ) {
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:one-band unsigned char images. It is easy to modify for n-band images:
doc/src/pio.tex:   int sz = n * in->Bands;     
doc/src/pio.tex:      q[i] = 255 - p[i];
doc/src/pio.tex:   if( in->BandFmt != IM_BANDFMT_UCHAR || 
doc/src/pio.tex:      in->Coding != IM_CODING_NONE ) {
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:   /* Process! The first user-parameter 
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:multi-CPU machine, several copies of your buffer-processing functions will
doc/src/pio.tex:be run in parallel --- if they all write to the same place, there will be
doc/src/pio.tex:that you never read anything in your buffer-processing function that may
doc/src/pio.tex:\verb+im_wrapmany()+ takes a \verb+NULL+-terminated array of input images,
doc/src/pio.tex:and creates a \verb+NULL+-terminated array of buffers for the use of your
doc/src/pio.tex:   int sz = n * in->Bands;
doc/src/pio.tex:   if( i1->BandFmt != IM_BANDFMT_UCHAR ||
doc/src/pio.tex:      i1->Coding != IM_CODING_NONE ||
doc/src/pio.tex:      i2->BandFmt != IM_BANDFMT_UCHAR || 
doc/src/pio.tex:      i2->Coding != IM_CODING_NONE ||
doc/src/pio.tex:      i1->Bands != i2->Bands ) {
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:   out->BandFmt = IM_BANDFMT_USHORT;
doc/src/pio.tex:   out->Bbits = IM_BBITS_SHORT;
doc/src/pio.tex:   /* Process! The first user-parameter 
doc/src/pio.tex:    * invec is a NULL-terminated array of 
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:where \verb+valid+ holds the sub-area of image \verb+im+ that this region
doc/src/pio.tex:are blank --- they contain no image data and cannot be read from or written
doc/src/pio.tex:And, as usual, returns 0 on success and non-zero on error, setting
doc/src/pio.tex:just marked for future closure --- it is not actually closed until the final
doc/src/pio.tex:is not difficult to make sure you free all regions --- see the examples below.
doc/src/pio.tex:Exactly what this preparation involves depends upon the image --- it can
doc/src/pio.tex:guarantees that all pixels within \verb+reg->valid+ may be accessed. Note
doc/src/pio.tex:Provided that point (x,y) lies inside \verb+reg->valid+,
doc/src/pio.tex:you stay strictly within \verb+reg->valid+. Add \verb+IM_REGION_LSKIP()+
doc/src/pio.tex:useful features --- see the manual page.
doc/src/pio.tex:that you are a PIO-aware function, giving \verb+im_prepare()+ much more
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:   if( im->BandFmt != IM_BANDFMT_UCHAR || im->Coding != IM_CODING_NONE ) {
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:   r = &reg->valid;     
doc/src/pio.tex:   for( area.top = 0; area.top < im->Ysize; area.top += 100 )
doc/src/pio.tex:      for( area.left = 0; area.left < im->Xsize; 
doc/src/pio.tex:             return( -1 );
doc/src/pio.tex:          for( y = r->top; y < IM_RECT_BOTTOM( r ); y++ ) {
doc/src/pio.tex:             unsigned char *p = IM_REGION_ADDR( reg, r->left, y );
doc/src/pio.tex:   *out = (double) total / (IM_IMAGE_N_ELEMENTS( im ) * im->Ysize);
doc/src/pio.tex:We can do one better than this --- if the image is being split into small
doc/src/pio.tex:is very similar to the average function in the VIPS library --- it is only
doc/src/pio.tex:   Rect *r = &reg->valid;
doc/src/pio.tex:      return( -1 ); 
doc/src/pio.tex:   for( y = r->top; y < IM_RECT_BOTTOM( r ); y++ ) {
doc/src/pio.tex:      unsigned char *p = IM_REGION_ADDR( reg, r->left, y );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:   if( im->BandFmt != IM_BANDFMT_UCHAR || 
doc/src/pio.tex:      im->Coding != IM_CODING_NONE ) {
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:   *out = (double) gtotal / (IM_IMAGE_N_ELEMENTS( im ) * im->Ysize);
doc/src/pio.tex:Regions are written to in just the same way they are read from --- by
doc/src/pio.tex:\verb+vips_sink()+ does input --- \verb+im_generate()+ does output. It
doc/src/pio.tex:image. See the manual page for \verb+im_start_many()+ for many-input 
doc/src/pio.tex:   Rect *r = &or->valid;
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:   for( y = r->top; y < IM_RECT_BOTTOM( r ); y++ ) {
doc/src/pio.tex:      unsigned char *p = IM_REGION_ADDR( ir, r->left, y );
doc/src/pio.tex:      unsigned char *q = IM_REGION_ADDR( or, r->left, y );
doc/src/pio.tex:          q[i] = 255 - p[i];
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:   if( in->BandFmt != IM_BANDFMT_UCHAR || in->Coding != IM_CODING_NONE ) {
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:      return( -1 );
doc/src/pio.tex:with. VIPS supports four basic shapes --- choosing the correct shape can
doc/src/pio.tex:of evaluation, useful for user-interfaces built on top of VIPS. See the
doc/src/pio.tex:joined together in a pipeline and be running at the same time --- you can't
doc/src/pio.tex:to any read-only tables used by sequences which you run over the image. This
doc/src/pio.tex:to be single-threaded, so you may write to the function-local memory within 
doc/src/vipsmanual.xref:\:CrossWord{)F1F-}{vipsmanual.html}{1}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-2-1}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-3-2}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-4-3}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-5-4}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-6-5}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-7-9}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-8-17}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-9-25}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-10-33}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-11-36}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-12-41}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-13-42}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-44}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-15-73}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-16-82}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-17-89}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-18-95}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-19-101}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-20-102}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-21-105}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-22-113}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-23-131}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-24-132}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-25-133}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-135}{1}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)F2F-}{vipsmanualli1.html}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx2-1000}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-6-6}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-7-10}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-7-15}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-7-16}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-8-18}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-8-19}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-8-20}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-8-21}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-8-22}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-8-23}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-8-24}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-9-26}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-9-27}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-9-28}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-9-29}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-9-30}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-9-31}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-9-32}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-10-34}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-10-35}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-11-37}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-11-38}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-11-39}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-11-40}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-45}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-47}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-49}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-50}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-51}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-54}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-55}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-56}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-57}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-58}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-63}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-14-64}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-15-74}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-15-76}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-15-77}{2}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-15-78}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-16-83}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-16-88}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-17-90}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-17-91}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-17-93}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-17-94}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-18-96}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-18-97}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-18-99}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-18-100}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-20-103}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-20-104}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-21-106}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-21-108}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-21-110}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-22-114}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-22-115}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-22-116}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-22-119}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-22-123}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-22-126}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-22-130}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-136}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-138}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-140}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-142}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-145}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-148}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-150}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-152}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-154}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-156}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-158}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-160}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-162}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-164}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-166}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-168}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)QQQ2-26-170}{2}{4}%
doc/src/vipsmanual.xref:\:CrossWord{)F3F-}{vipsmanualli2.html}{7}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx3-2000}{3}{7}%
doc/src/vipsmanual.xref:\:CrossWord{)F4F-}{vipsmanualli3.html}{11}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx4-3000}{4}{11}%
doc/src/vipsmanual.xref:\:CrossWord{)F5F-}{vipsmanualch1.html}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx5-40001}{5}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)F6F-}{vipsmanualse1.html}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx6-50001.1}{6}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx6-60001.1.1}{6}{3}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx6-60011}{6}{5}%
doc/src/vipsmanual.xref:\:CrossWord{1cAp0}{x6-60011}{6}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx6-60022}{6}{8}%
doc/src/vipsmanual.xref:\:CrossWord{2cAp0}{x6-60022}{9}%
doc/src/vipsmanual.xref:\:CrossWord{)F7F-}{vipsmanualse2.html}{11}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx7-70001.2}{7}{11}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx7-80001.2.1}{7}{11}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx7-80011}{7}{12}%
doc/src/vipsmanual.xref:\:CrossWord{3cAp0}{x7-80011}{13}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx7-80022}{7}{15}%
doc/src/vipsmanual.xref:\:CrossWord{4cAp0}{x7-80022}{16}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx7-80033}{7}{18}%
doc/src/vipsmanual.xref:\:CrossWord{5cAp0}{x7-80033}{19}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx7-80044}{7}{21}%
doc/src/vipsmanual.xref:\:CrossWord{6cAp0}{x7-80044}{22}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx7-90001.2.2}{7}{23}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx7-100001.2.3}{7}{23}%
doc/src/vipsmanual.xref:\:CrossWord{)F8F-}{vipsmanualse3.html}{24}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx8-110001.3}{8}{24}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx8-120001.3.1}{8}{24}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx8-130001.3.2}{8}{27}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx8-140001.3.3}{8}{28}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx8-150001.3.4}{8}{31}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx8-160001.3.5}{8}{32}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx8-170001.3.6}{8}{33}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx8-180001.3.7}{8}{34}%
doc/src/vipsmanual.xref:\:CrossWord{)F9F-}{vipsmanualse4.html}{36}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx9-190001.4}{9}{36}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx9-200001.4.1}{9}{36}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx9-210001.4.2}{9}{37}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx9-220001.4.3}{9}{37}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx9-230001.4.4}{9}{38}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx9-240001.4.5}{9}{39}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx9-250001.4.6}{9}{40}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx9-260001.4.7}{9}{40}%
doc/src/vipsmanual.xref:\:CrossWord{)F10F-}{vipsmanualse5.html}{41}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx10-270001.5}{10}{41}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx10-280001.5.1}{10}{41}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx10-290001.5.2}{10}{42}%
doc/src/vipsmanual.xref:\:CrossWord{)F11F-}{vipsmanualse6.html}{44}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx11-300001.6}{11}{44}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx11-310001.6.1}{11}{44}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx11-320001.6.2}{11}{44}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx11-330001.6.3}{11}{45}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx11-340001.6.4}{11}{47}%
doc/src/vipsmanual.xref:\:CrossWord{)F12F-}{vipsmanualch2.html}{51}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx12-350002}{12}{51}%
doc/src/vipsmanual.xref:\:CrossWord{)F13F-}{vipsmanualse7.html}{51}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx13-360002.1}{13}{51}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx13-360011}{13}{52}%
doc/src/vipsmanual.xref:\:CrossWord{7cAp0}{x13-360011}{53}%
doc/src/vipsmanual.xref:\:CrossWord{)F14F-}{vipsmanualse8.html}{56}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-370002.2}{14}{56}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-380002.2.1}{14}{56}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-380012}{14}{58}%
doc/src/vipsmanual.xref:\:CrossWord{8cAp0}{x14-380012}{59}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-390002.2.2}{14}{60}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-390013}{14}{61}%
doc/src/vipsmanual.xref:\:CrossWord{9cAp0}{x14-390013}{62}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-400002.2.3}{14}{63}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-410002.2.4}{14}{63}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-420002.2.5}{14}{67}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-420014}{14}{68}%
doc/src/vipsmanual.xref:\:CrossWord{10cAp0}{x14-420014}{69}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-420025}{14}{71}%
doc/src/vipsmanual.xref:\:CrossWord{11cAp0}{x14-420025}{72}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-430002.2.6}{14}{73}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-440002.2.7}{14}{74}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-450002.2.8}{14}{75}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-460002.2.9}{14}{75}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-46002x1}{14}{75}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-46004x2}{14}{75}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-46006x3}{14}{75}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-46008x4}{14}{75}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-46010x5}{14}{75}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-470002.2.10}{14}{76}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-480002.2.10}{14}{76}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-480016}{14}{77}%
doc/src/vipsmanual.xref:\:CrossWord{12cAp0}{x14-480016}{78}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-490002.2.10}{14}{79}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-500002.2.10}{14}{81}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-510002.2.11}{14}{81}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-520002.2.12}{14}{81}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-520017}{14}{82}%
doc/src/vipsmanual.xref:\:CrossWord{13cAp0}{x14-520017}{83}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-530002.2.12}{14}{84}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-540002.2.12}{14}{84}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-550002.2.12}{14}{84}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-560002.2.12}{14}{84}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-560018}{14}{85}%
doc/src/vipsmanual.xref:\:CrossWord{14cAp0}{x14-560018}{86}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-570002.2.12}{14}{87}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-580002.2.12}{14}{87}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-58002x1}{14}{87}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx14-58004x2}{14}{87}%
doc/src/vipsmanual.xref:\:CrossWord{)F15F-}{vipsmanualse9.html}{88}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx15-590002.3}{15}{88}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx15-600002.3.1}{15}{88}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx15-600011}{15}{90}%
doc/src/vipsmanual.xref:\:CrossWord{15cAp0}{x15-600011}{91}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx15-610002.3.2}{15}{95}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx15-620002.3.3}{15}{96}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx15-630002.3.4}{15}{101}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx15-640002.3.4}{15}{101}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx15-650002.3.4}{15}{102}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx15-660002.3.4}{15}{103}%
doc/src/vipsmanual.xref:\:CrossWord{)F16F-}{vipsmanualse10.html}{106}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx16-670002.4}{16}{106}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx16-680002.4.1}{16}{106}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx16-690002.4.1}{16}{106}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx16-700002.4.1}{16}{107}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx16-710002.4.1}{16}{108}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx16-720002.4.1}{16}{108}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx16-730002.4.2}{16}{109}%
doc/src/vipsmanual.xref:\:CrossWord{)F17F-}{vipsmanualse11.html}{111}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx17-740002.5}{17}{111}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx17-750002.5.1}{17}{111}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx17-760002.5.2}{17}{111}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx17-760019}{17}{112}%
doc/src/vipsmanual.xref:\:CrossWord{16cAp0}{x17-760019}{113}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx17-770002.5.3}{17}{114}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx17-780002.5.4}{17}{114}%
doc/src/vipsmanual.xref:\:CrossWord{)F18F-}{vipsmanualse12.html}{115}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx18-790002.6}{18}{115}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx18-800002.6.1}{18}{115}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx18-810002.6.2}{18}{115}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx18-8100110}{18}{116}%
doc/src/vipsmanual.xref:\:CrossWord{17cAp0}{x18-8100110}{117}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx18-820002.6.3}{18}{118}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx18-830002.6.4}{18}{119}%
doc/src/vipsmanual.xref:\:CrossWord{)F19F-}{vipsmanualch3.html}{125}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx19-840003}{19}{125}%
doc/src/vipsmanual.xref:\:CrossWord{)F20F-}{vipsmanualse13.html}{125}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx20-850003.1}{20}{125}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx20-860003.1.1}{20}{125}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx20-870003.1.2}{20}{126}%
doc/src/vipsmanual.xref:\:CrossWord{)F21F-}{vipsmanualse14.html}{127}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx21-880003.2}{21}{127}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx21-890003.2.1}{21}{127}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx21-890011}{21}{129}%
doc/src/vipsmanual.xref:\:CrossWord{18cAp0}{x21-890011}{130}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx21-900003.2.2}{21}{131}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx21-900012}{21}{135}%
doc/src/vipsmanual.xref:\:CrossWord{19cAp0}{x21-900012}{136}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx21-910003.2.3}{21}{137}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx21-910013}{21}{138}%
doc/src/vipsmanual.xref:\:CrossWord{20cAp0}{x21-910013}{139}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx21-910024}{21}{141}%
doc/src/vipsmanual.xref:\:CrossWord{21cAp0}{x21-910024}{142}%
doc/src/vipsmanual.xref:\:CrossWord{)F22F-}{vipsmanualse15.html}{144}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-920003.3}{22}{144}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-930003.3.1}{22}{144}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-940003.3.2}{22}{150}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-950003.3.3}{22}{152}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-950015}{22}{155}%
doc/src/vipsmanual.xref:\:CrossWord{22cAp0}{x22-950015}{156}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-950026}{22}{158}%
doc/src/vipsmanual.xref:\:CrossWord{23cAp0}{x22-950026}{159}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-960003.3.4}{22}{160}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-960017}{22}{162}%
doc/src/vipsmanual.xref:\:CrossWord{24cAp0}{x22-960017}{163}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-960028}{22}{165}%
doc/src/vipsmanual.xref:\:CrossWord{25cAp0}{x22-960028}{166}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-960039}{22}{168}%
doc/src/vipsmanual.xref:\:CrossWord{26cAp0}{x22-960039}{169}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-970003.3.5}{22}{170}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-9700110}{22}{172}%
doc/src/vipsmanual.xref:\:CrossWord{27cAp0}{x22-9700110}{173}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-9700211}{22}{175}%
doc/src/vipsmanual.xref:\:CrossWord{28cAp0}{x22-9700211}{176}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-980003.3.6}{22}{177}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-990003.3.6}{22}{177}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-1000003.3.6}{22}{177}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-1010003.3.6}{22}{177}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx22-1020003.3.7}{22}{177}%
doc/src/vipsmanual.xref:\:CrossWord{)F23F-}{vipsmanualse16.html}{179}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx23-1030003.4}{23}{179}%
doc/src/vipsmanual.xref:\:CrossWord{)F24F-}{vipsmanualch4.html}{183}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx24-1040004}{24}{183}%
doc/src/vipsmanual.xref:\:CrossWord{)F25F-}{vipsmanualse17.html}{183}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx25-1050004.1}{25}{183}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx25-1050011}{25}{186}%
doc/src/vipsmanual.xref:\:CrossWord{29cAp0}{x25-1050011}{187}%
doc/src/vipsmanual.xref:\:CrossWord{)F26F-}{vipsmanualse18.html}{189}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1060004.2}{26}{189}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1070004.2.1}{26}{189}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1070011}{26}{190}%
doc/src/vipsmanual.xref:\:CrossWord{30cAp0}{x26-1070011}{191}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1080004.2.2}{26}{192}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1080012}{26}{193}%
doc/src/vipsmanual.xref:\:CrossWord{31cAp0}{x26-1080012}{194}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1090004.2.3}{26}{195}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1090013}{26}{196}%
doc/src/vipsmanual.xref:\:CrossWord{32cAp0}{x26-1090013}{197}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1100004.2.4}{26}{198}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1100014}{26}{199}%
doc/src/vipsmanual.xref:\:CrossWord{33cAp0}{x26-1100014}{200}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1100025}{26}{202}%
doc/src/vipsmanual.xref:\:CrossWord{34cAp0}{x26-1100025}{203}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1110004.2.5}{26}{204}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1110016}{26}{205}%
doc/src/vipsmanual.xref:\:CrossWord{35cAp0}{x26-1110016}{206}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1110027}{26}{208}%
doc/src/vipsmanual.xref:\:CrossWord{36cAp0}{x26-1110027}{209}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1120004.2.6}{26}{210}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1120018}{26}{212}%
doc/src/vipsmanual.xref:\:CrossWord{37cAp0}{x26-1120018}{213}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1130004.2.7}{26}{214}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1130019}{26}{215}%
doc/src/vipsmanual.xref:\:CrossWord{38cAp0}{x26-1130019}{216}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1140004.2.8}{26}{217}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-11400110}{26}{218}%
doc/src/vipsmanual.xref:\:CrossWord{39cAp0}{x26-11400110}{219}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1150004.2.9}{26}{220}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-11500111}{26}{221}%
doc/src/vipsmanual.xref:\:CrossWord{40cAp0}{x26-11500111}{222}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1160004.2.10}{26}{223}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-11600112}{26}{224}%
doc/src/vipsmanual.xref:\:CrossWord{41cAp0}{x26-11600112}{225}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1170004.2.11}{26}{226}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-11700113}{26}{227}%
doc/src/vipsmanual.xref:\:CrossWord{42cAp0}{x26-11700113}{228}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1180004.2.12}{26}{229}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-11800114}{26}{230}%
doc/src/vipsmanual.xref:\:CrossWord{43cAp0}{x26-11800114}{231}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1190004.2.13}{26}{232}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-11900115}{26}{233}%
doc/src/vipsmanual.xref:\:CrossWord{44cAp0}{x26-11900115}{234}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1200004.2.14}{26}{235}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-12000116}{26}{236}%
doc/src/vipsmanual.xref:\:CrossWord{45cAp0}{x26-12000116}{237}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1210004.2.15}{26}{238}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-12100117}{26}{239}%
doc/src/vipsmanual.xref:\:CrossWord{46cAp0}{x26-12100117}{240}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1220004.2.16}{26}{241}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-12200118}{26}{242}%
doc/src/vipsmanual.xref:\:CrossWord{47cAp0}{x26-12200118}{243}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-1230004.2.17}{26}{244}%
doc/src/vipsmanual.xref:\:CrossWord{)Qx26-12300119}{26}{245}%
doc/src/vipsmanual.xref:\:CrossWord{48cAp0}{x26-12300119}{246}%
Coincidencia en el archivo binario doc/pdf/vipsmanual.pdf
doc/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
doc/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
doc/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
doc/Makefile.in:RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
doc/Makefile.in:	html-recursive info-recursive install-data-recursive \
doc/Makefile.in:	install-dvi-recursive install-exec-recursive \
doc/Makefile.in:	install-html-recursive install-info-recursive \
doc/Makefile.in:	install-pdf-recursive install-ps-recursive install-recursive \
doc/Makefile.in:	installcheck-recursive installdirs-recursive pdf-recursive \
doc/Makefile.in:	ps-recursive uninstall-recursive
doc/Makefile.in:RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
doc/Makefile.in:  distclean-recursive maintainer-clean-recursive
doc/Makefile.in:AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
doc/Makefile.in:	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
doc/Makefile.in:  while test -n "$$dir1"; do \
doc/Makefile.in:    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
doc/Makefile.in:        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
doc/Makefile.in:        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
doc/Makefile.in:        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
doc/Makefile.in:          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
doc/Makefile.in:    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
doc/Makefile.in:all: all-recursive
doc/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
doc/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
doc/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
doc/Makefile.in:	  $(AUTOMAKE) --gnu doc/Makefile
doc/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
doc/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
doc/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
doc/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
doc/Makefile.in:mostlyclean-libtool:
doc/Makefile.in:	-rm -f *.lo
doc/Makefile.in:clean-libtool:
doc/Makefile.in:	-rm -rf .libs _libs
doc/Makefile.in:	    *=* | --[!k]*);; \
doc/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
doc/Makefile.in:	    local_target="$$target-am"; \
doc/Makefile.in:	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
doc/Makefile.in:	fi; test -z "$$fail"
doc/Makefile.in:	    *=* | --[!k]*);; \
doc/Makefile.in:	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
doc/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
doc/Makefile.in:	    local_target="$$target-am"; \
doc/Makefile.in:	done && test -z "$$fail"
doc/Makefile.in:tags-recursive:
doc/Makefile.in:ctags-recursive:
doc/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
doc/Makefile.in:	mkid -fID $$unique
doc/Makefile.in:TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
doc/Makefile.in:	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
doc/Makefile.in:	  include_option=--etags-include; \
doc/Makefile.in:	  include_option=--include; \
doc/Makefile.in:	    test ! -f $$subdir/TAGS || \
doc/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
doc/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
doc/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
doc/Makefile.in:	  if test $$# -gt 0; then \
doc/Makefile.in:CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
doc/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
doc/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
doc/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
doc/Makefile.in:distclean-tags:
doc/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
doc/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
doc/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
doc/Makefile.in:			   sort -u` ;; \
doc/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
doc/Makefile.in:	  if test -d $$d/$$file; then \
doc/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
doc/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
doc/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
doc/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
doc/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
doc/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
doc/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
doc/Makefile.in:	    test -f "$(distdir)/$$file" \
doc/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
doc/Makefile.in:	    test -d "$(distdir)/$$subdir" \
doc/Makefile.in:check-am: all-am
doc/Makefile.in:check: check-recursive
doc/Makefile.in:all-am: Makefile
doc/Makefile.in:installdirs: installdirs-recursive
doc/Makefile.in:installdirs-am:
doc/Makefile.in:install: install-recursive
doc/Makefile.in:install-exec: install-exec-recursive
doc/Makefile.in:install-data: install-data-recursive
doc/Makefile.in:uninstall: uninstall-recursive
doc/Makefile.in:install-am: all-am
doc/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
doc/Makefile.in:installcheck: installcheck-recursive
doc/Makefile.in:install-strip:
doc/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
doc/Makefile.in:	  `test -z '$(STRIP)' || \
doc/Makefile.in:mostlyclean-generic:
doc/Makefile.in:clean-generic:
doc/Makefile.in:distclean-generic:
doc/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
doc/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
doc/Makefile.in:maintainer-clean-generic:
doc/Makefile.in:clean: clean-recursive
doc/Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
doc/Makefile.in:distclean: distclean-recursive
doc/Makefile.in:	-rm -f Makefile
doc/Makefile.in:distclean-am: clean-am distclean-generic distclean-tags
doc/Makefile.in:dvi: dvi-recursive
doc/Makefile.in:dvi-am:
doc/Makefile.in:html: html-recursive
doc/Makefile.in:html-am:
doc/Makefile.in:info: info-recursive
doc/Makefile.in:info-am:
doc/Makefile.in:install-data-am:
doc/Makefile.in:install-dvi: install-dvi-recursive
doc/Makefile.in:install-dvi-am:
doc/Makefile.in:install-exec-am:
doc/Makefile.in:install-html: install-html-recursive
doc/Makefile.in:install-html-am:
doc/Makefile.in:install-info: install-info-recursive
doc/Makefile.in:install-info-am:
doc/Makefile.in:install-man:
doc/Makefile.in:install-pdf: install-pdf-recursive
doc/Makefile.in:install-pdf-am:
doc/Makefile.in:install-ps: install-ps-recursive
doc/Makefile.in:install-ps-am:
doc/Makefile.in:installcheck-am:
doc/Makefile.in:maintainer-clean: maintainer-clean-recursive
doc/Makefile.in:	-rm -f Makefile
doc/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
doc/Makefile.in:mostlyclean: mostlyclean-recursive
doc/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
doc/Makefile.in:pdf: pdf-recursive
doc/Makefile.in:pdf-am:
doc/Makefile.in:ps: ps-recursive
doc/Makefile.in:ps-am:
doc/Makefile.in:uninstall-am:
doc/Makefile.in:.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
doc/Makefile.in:	install-am install-strip tags-recursive
doc/Makefile.in:	all all-am check check-am clean clean-generic clean-libtool \
doc/Makefile.in:	ctags ctags-recursive distclean distclean-generic \
doc/Makefile.in:	distclean-libtool distclean-tags distdir dvi dvi-am html \
doc/Makefile.in:	html-am info info-am install install-am install-data \
doc/Makefile.in:	install-data-am install-dvi install-dvi-am install-exec \
doc/Makefile.in:	install-exec-am install-html install-html-am install-info \
doc/Makefile.in:	install-info-am install-man install-pdf install-pdf-am \
doc/Makefile.in:	install-ps install-ps-am install-strip installcheck \
doc/Makefile.in:	installcheck-am installdirs installdirs-am maintainer-clean \
doc/Makefile.in:	maintainer-clean-generic mostlyclean mostlyclean-generic \
doc/Makefile.in:	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
doc/Makefile.in:	uninstall uninstall-am
doc/html/vipsmanualse8.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse8.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse8.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse8.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse8.html:<!-- 3,html --> 
doc/html/vipsmanualse8.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse8.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse8.html:href="vipsmanualse7.html#tailvipsmanualse7.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse8.html: id="x14-370002.2"></a>Core C API</h3>
doc/html/vipsmanualse8.html:<!--l. 3--><p class="noindent" >VIPS is built on top of several other libraries, two of which,
doc/html/vipsmanualse8.html:<!--l. 6--><p class="indent" >  You can read up on glib at the GTK+ website:
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-51">
doc/html/vipsmanualse8.html:<!--l. 10--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 12--><p class="indent" >  There&#8217;s also an excellent book by Matthias Warkus, <span 
doc/html/vipsmanualse8.html:class="ptmri7t-">The</span>
doc/html/vipsmanualse8.html:class="ptmri7t-">Official GNOME 2 Developer&#8217;s Guide</span>, which covers the
doc/html/vipsmanualse8.html:<!--l. 16--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-380002.2.1"></a>Startup</h4>
doc/html/vipsmanualse8.html:<!--l. 18--><p class="noindent" >Before calling any VIPS function, you need to start VIPS
doc/html/vipsmanualse8.html:  <div class="verbatim" id="verbatim-52">
doc/html/vipsmanualse8.html:<!--l. 22--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 24--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">argv0</span></span></span> argument is the value of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">argv[0]</span></span></span> your
doc/html/vipsmanualse8.html:VIPS uses this with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_guess_prefix()</span></span></span> and
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_guess_libdir()</span></span></span> to try to find various VIPS data
doc/html/vipsmanualse8.html:<!--l. 29--><p class="indent" >  If you don&#8217;t call this function, VIPS will call it for you
doc/html/vipsmanualse8.html:to get the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">argv0</span></span></span> value for you, so it may not be able to find
doc/html/vipsmanualse8.html:<!--l. 33--><p class="indent" >  VIPS also offers the optional:
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-53">
doc/html/vipsmanualse8.html:<!--l. 37--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 39--><p class="indent" >  You can use this with GOption to parse your program&#8217;s
doc/html/vipsmanualse8.html:command-line arguments. It adds several useful VIPS flags,
doc/html/vipsmanualse8.html:including <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">--vips-concurrency</span></span></span>.
doc/html/vipsmanualse8.html:<!--l. 42--><p class="indent" >    Figure&#x00A0;<a 
doc/html/vipsmanualse8.html:href="#x14-380012">2.2<!--tex4ht:ref: fg:hello --></a> shows both these functions in use. Again, the
doc/html/vipsmanualse8.html:to your program. You do need the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_init_world()</span></span></span>
doc/html/vipsmanualse8.html:<!--l. 47--><p class="indent" >  <a 
doc/html/vipsmanualse8.html: id="x14-380012"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse8.html:<div class="verbatim" id="verbatim-54">
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;context&#x00A0;=&#x00A0;g_option_context_new(&#x00A0;"-&#x00A0;my&#x00A0;program"&#x00A0;);
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;fprintf(&#x00A0;stderr,&#x00A0;"%s\n",&#x00A0;error-&#x003E;message&#x00A0;);
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;error_exit(&#x00A0;"try&#x00A0;\"%s&#x00A0;--help\"",&#x00A0;g_get_prgname()&#x00A0;);
doc/html/vipsmanualse8.html:<!--l. 86--><p class="nopar" >
doc/html/vipsmanualse8.html:class="content">Hello World for VIPS</span></div><!--tex4ht:label?: x14-380012 -->
doc/html/vipsmanualse8.html: id="x14-390002.2.2"></a>Image descriptors</h4>
doc/html/vipsmanualse8.html:<!--l. 93--><p class="noindent" >The base level of the VIPS I/O system provides <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span>
doc/html/vipsmanualse8.html:href="#x14-390013">2.3<!--tex4ht:ref: fg:image --></a> shows the definition of the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span>
doc/html/vipsmanualse8.html:<!--l. 101--><p class="indent" >  <a 
doc/html/vipsmanualse8.html: id="x14-390013"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse8.html:<div class="verbatim" id="verbatim-55">
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;int&#x00A0;kill;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Set&#x00A0;to&#x00A0;non-zero&#x00A0;to&#x00A0;block&#x00A0;eval&#x00A0;&#x22C6;/
doc/html/vipsmanualse8.html:<!--l. 129--><p class="nopar" >
doc/html/vipsmanualse8.html:class="pcrr7t-">IMAGE </span>descriptor</span></div><!--tex4ht:label?: x14-390013 -->
doc/html/vipsmanualse8.html:<!--l. 134--><p class="indent" >  The first set of fields simply come from the image file
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="vipsmanualse2.html#x7-80001.2.1">1.2.1<!--tex4ht:ref: sec:header --></a> for a full description of all the fields. The
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">filename</span></span></span> is the name of the file that this image came
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">time</span></span></span> points to a set of timing statistics which can
doc/html/vipsmanualse8.html:be used by user-interfaces built on VIPS to provide
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="#x14-450002.2.8">2.2.8<!--tex4ht:ref: sec:eval --></a>.
doc/html/vipsmanualse8.html:Finally, if you set <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">kill</span></span></span> to non-zero, VIPS will block any
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="#x14-570002.2.12">2.2.12<!--tex4ht:ref: sec:block --></a>.
doc/html/vipsmanualse8.html:<!--l. 144--><p class="indent" >  The remaining fields are private and are used by VIPS for
doc/html/vipsmanualse8.html: id="x14-400002.2.3"></a>Header fields</h4>
doc/html/vipsmanualse8.html:<!--l. 149--><p class="noindent" >You can access header fields either directly (as <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im-&#x003E;Xsize</span></span></span>,
doc/html/vipsmanualse8.html:for example) or programmatically with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_header_int()</span></span></span>
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-56">
doc/html/vipsmanualse8.html:<!--l. 157--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 159--><p class="indent" >  There&#8217;s also <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_header_map()</span></span></span> to loop over header
doc/html/vipsmanualse8.html:fields, and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_header_get_type</span></span></span> to test the type of
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="#x14-430002.2.6">2.2.6<!--tex4ht:ref: sec:meta --></a>.
doc/html/vipsmanualse8.html:<!--l. 163--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-410002.2.4"></a>Opening and closing</h4>
doc/html/vipsmanualse8.html:<!--l. 166--><p class="noindent" >Descriptors are created with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span>. You can also
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="vipsmanualse11.html#x17-740002.5">2.5<!--tex4ht:ref: sec:format --></a>. The two
doc/html/vipsmanualse8.html:APIs are complimentary, though <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> is more
doc/html/vipsmanualse8.html:<!--l. 170--><p class="indent" >    At the command-line, try:
doc/html/vipsmanualse8.html:  <div class="verbatim" id="verbatim-57">
doc/html/vipsmanualse8.html:$&#x00A0;vips&#x00A0;--list&#x00A0;classes
doc/html/vipsmanualse8.html:<!--l. 174--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 176--><p class="indent" >  /noindent to see a list of all the supported file formats.
doc/html/vipsmanualse8.html:<!--l. 179--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> takes a file name and a string representing
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-58">
doc/html/vipsmanualse8.html:<!--l. 185--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 187--><p class="indent" >  The possible values for mode are:
doc/html/vipsmanualse8.html:class="pcrb7t-">"r"</span> </dt><dd 
doc/html/vipsmanualse8.html:class="description">The   file   is   opened   read-only.   If   you   open
doc/html/vipsmanualse8.html:        a  non-VIPS  image,  or  a  VIPS  image  written
doc/html/vipsmanualse8.html:        <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> will   automatically   convert   it   to
doc/html/vipsmanualse8.html:        <!--l. 198--><p class="noindent" >VIPS can read images in many file formats. You
doc/html/vipsmanualse8.html:    <div class="verbatim" id="verbatim-59">
doc/html/vipsmanualse8.html:    <!--l. 204--><p class="nopar" >
doc/html/vipsmanualse8.html:    <!--l. 206--><p class="noindent" >will read page 2 of a multi-page TIFF. See the man
doc/html/vipsmanualse8.html:class="pcrb7t-">"w"</span> </dt><dd 
doc/html/vipsmanualse8.html:class="description">An <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span> descriptor is created which, when written
doc/html/vipsmanualse8.html:    <!--l. 214--><p class="noindent" >VIPS looks at the filename suffix to determine the
doc/html/vipsmanualse8.html:    ends in <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">".v"</span></span></span>, the image is written in VIPS native
doc/html/vipsmanualse8.html:    <!--l. 218--><p class="noindent" >If you want to control the details of the conversion to
doc/html/vipsmanualse8.html:                                                     <div class="verbatim" id="verbatim-60">
doc/html/vipsmanualse8.html:   <!--l. 225--><p class="nopar" >
doc/html/vipsmanualse8.html:   <!--l. 227--><p class="noindent" >writes to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">fred</span></span></span> will write a JPEG with Q 95. Again,
doc/html/vipsmanualse8.html:class="pcrb7t-">"t"</span> </dt><dd 
doc/html/vipsmanualse8.html:class="description">As the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> mode, but pels written to the descriptor
doc/html/vipsmanualse8.html:class="pcrb7t-">"p"</span> </dt><dd 
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="#x14-520002.2.12">2.2.12<!--tex4ht:ref: sec:joinup --></a>.
doc/html/vipsmanualse8.html:class="pcrb7t-">"rw"</span> </dt><dd 
doc/html/vipsmanualse8.html:class="description">As the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"r"</span></span></span> mode, but the image is mapped into the
doc/html/vipsmanualse8.html:        caller&#8217;s address space read-write. This mode is only
doc/html/vipsmanualse8.html:        provided for the use of paintbox-style applications
doc/html/vipsmanualse8.html:        programs should use the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> mode for image
doc/html/vipsmanualse8.html:<!--l. 247--><p class="indent" >    If an error occurs opening the image, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span> calls
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span> with a string describing the cause of the
doc/html/vipsmanualse8.html:error and returns <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">NULL</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span> has type
doc/html/vipsmanualse8.html:  <div class="verbatim" id="verbatim-61">
doc/html/vipsmanualse8.html:<!--l. 254--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 256--><p class="noindent" >The first argument is a string giving the name of the thing
doc/html/vipsmanualse8.html:that raised the error (just <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"im_open"</span></span></span>, for example).
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">printf()</span></span></span>. It formats the message and appends the string
doc/html/vipsmanualse8.html:text with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_error_buffer()</span></span></span>.
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-62">
doc/html/vipsmanualse8.html:<!--l. 265--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 267--><p class="noindent" >Applications may display this string to give users feedback
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">error_exit()</span></span></span>, prints <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_error_buffer()</span></span></span> to
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">stderr</span></span></span> and terminates the program with an error code of
doc/html/vipsmanualse8.html:  <div class="verbatim" id="verbatim-63">
doc/html/vipsmanualse8.html:<!--l. 276--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 278--><p class="noindent" >There are other functions for handling errors: see the man
doc/html/vipsmanualse8.html:page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span>.
doc/html/vipsmanualse8.html:<!--l. 282--><p class="indent" >  Descriptors are closed with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_close()</span></span></span>. It has
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-64">
doc/html/vipsmanualse8.html:<!--l. 286--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 288--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_close()</span></span></span> returns 0 on success and non-zero on
doc/html/vipsmanualse8.html:<!--l. 290--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-420002.2.5"></a>Examples</h4>
doc/html/vipsmanualse8.html:<!--l. 293--><p class="noindent" >As an example, Figure&#x00A0;<a 
doc/html/vipsmanualse8.html:href="#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:widthheight --></a> will print the width and height
doc/html/vipsmanualse8.html:<!--l. 297--><p class="indent" >  <a 
doc/html/vipsmanualse8.html: id="x14-420014"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse8.html:<div class="verbatim" id="verbatim-65">
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;printf(&#x00A0;"width&#x00A0;=&#x00A0;%d,&#x00A0;height&#x00A0;=&#x00A0;%d\n",&#x00A0;im-&#x003E;Xsize,&#x00A0;im-&#x003E;Ysize&#x00A0;);
doc/html/vipsmanualse8.html:<!--l. 329--><p class="nopar" >
doc/html/vipsmanualse8.html:class="content">Print width and height of an image</span></div><!--tex4ht:label?: x14-420014 -->
doc/html/vipsmanualse8.html:<!--l. 334--><p class="indent" >  To compile this example, use:
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-66">
doc/html/vipsmanualse8.html:  cc&#x00A0;&#8216;pkg-config&#x00A0;vips-7.14&#x00A0;\
doc/html/vipsmanualse8.html: &#x00A0;<br />&#x00A0;&#x00A0;--cflags&#x00A0;--libs&#8216;&#x00A0;myfunc.c 
doc/html/vipsmanualse8.html:<!--l. 339--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 341--><p class="indent" >  As a slightly more complicated example, Figure&#x00A0;<a 
doc/html/vipsmanualse8.html:href="#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:negative --></a>
doc/html/vipsmanualse8.html:<!--l. 345--><p class="indent" >  <a 
doc/html/vipsmanualse8.html: id="x14-420025"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse8.html:<div class="verbatim" id="verbatim-67">
doc/html/vipsmanualse8.html:<!--l. 374--><p class="nopar" >
doc/html/vipsmanualse8.html:class="content">Find photographic negative</span></div><!--tex4ht:label?: x14-420025 -->
doc/html/vipsmanualse8.html: id="x14-430002.2.6"></a>Metadata</h4>
doc/html/vipsmanualse8.html:<!--l. 382--><p class="noindent" >VIPS lets you attach arbitrary metadata to an IMAGE. For
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="vipsmanualse2.html#x7-80001.2.1">1.2.1<!--tex4ht:ref: sec:header --></a>).
doc/html/vipsmanualse8.html:<!--l. 388--><p class="indent" >  A piece of metadata is a value and an identifying name. A
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-68">
doc/html/vipsmanualse8.html:<!--l. 397--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 399--><p class="indent" >  So you can do:
doc/html/vipsmanualse8.html:  <div class="verbatim" id="verbatim-69">
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse8.html:<!--l. 404--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 406--><p class="noindent" >to create an int called <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"poop"</span></span></span>, then at some later point
doc/html/vipsmanualse8.html:from <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im</span></span></span>, you can use:
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-70">
doc/html/vipsmanualse8.html: &#x00A0;<br />&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;); 
doc/html/vipsmanualse8.html:<!--l. 415--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 417--><p class="noindent" >And get the value 42 back.
doc/html/vipsmanualse8.html:<!--l. 420--><p class="indent" >    You can use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_meta_set()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_meta_get()</span></span></span>
doc/html/vipsmanualse8.html:to attach arbitrary <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">GValue</span></span></span> to images. See the man page for
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_meta_set()</span></span></span> for full details.
doc/html/vipsmanualse8.html:<!--l. 424--><p class="indent" >    You can test for a field being present with
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_meta_get_type()</span></span></span> (you&#8217;ll get <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">G_TYPE_INT</span></span></span> back
doc/html/vipsmanualse8.html:for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"poop"</span></span></span>, for example, or 0 if it is not defined for this
doc/html/vipsmanualse8.html:<!--l. 428--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-440002.2.7"></a>History</h4>
doc/html/vipsmanualse8.html:<!--l. 431--><p class="noindent" >VIPS tracks the history of an image, that is, the sequence of
doc/html/vipsmanualse8.html:can view a VIPS image&#8217;s history with the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">header</span></span></span>
doc/html/vipsmanualse8.html:class="pcrr7t-">nip2</span>&#8217;s <span 
doc/html/vipsmanualse8.html:class="pcrr7t-">View Header </span>menu.
doc/html/vipsmanualse8.html:<!--l. 437--><p class="indent" >    The call to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_updatehist()</span></span></span> in Figure&#x00A0;<a 
doc/html/vipsmanualse8.html:href="#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:negative --></a> adds a
doc/html/vipsmanualse8.html:was run. You may also find <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_histlin()</span></span></span> helpful. It has
doc/html/vipsmanualse8.html:  <div class="verbatim" id="verbatim-71">
doc/html/vipsmanualse8.html:<!--l. 445--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 447--><p class="noindent" >It formats its arguments as <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">printf()</span></span></span> and appends the
doc/html/vipsmanualse8.html:<!--l. 451--><p class="indent" >  You read an image&#8217;s history with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_history_get()</span></span></span>.
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-72">
doc/html/vipsmanualse8.html:<!--l. 457--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 459--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-450002.2.8"></a>Eval callbacks</h4>
doc/html/vipsmanualse8.html:<!--l. 462--><p class="noindent" >VIPS lets you attach callbacks to image descriptors. These
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="vipsmanualse15.html#x22-980003.3.6">3.3.6<!--tex4ht:ref: sec:callback --></a> for more detail.
doc/html/vipsmanualse8.html:<!--l. 466--><p class="indent" >    Eval callbacks are called repeatedly during evaluation
doc/html/vipsmanualse8.html:and can be used by user-interface programs to give feedback
doc/html/vipsmanualse8.html:<!--l. 469--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-460002.2.9"></a>Detailed rules for descriptors</h4>
doc/html/vipsmanualse8.html:<!--l. 471--><p class="noindent" >These rules are intended to answer awkward questions.
doc/html/vipsmanualse8.html:<!--l. 473--><p class="indent" >
doc/html/vipsmanualse8.html:  class="enumerate" id="x14-46002x1">You can output to a descriptor only once.
doc/html/vipsmanualse8.html:  class="enumerate" id="x14-46004x2">You can use a descriptor as an input many times.
doc/html/vipsmanualse8.html:  class="enumerate" id="x14-46006x3">You can only output to a descriptor that was opened
doc/html/vipsmanualse8.html:        with modes <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span>.
doc/html/vipsmanualse8.html:  class="enumerate" id="x14-46008x4">You  can  only  use  a  descriptor  as  input  if  it  was
doc/html/vipsmanualse8.html:        opened with modes <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"r"</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"rw"</span></span></span>.
doc/html/vipsmanualse8.html:  class="enumerate" id="x14-46010x5">If  you  have  output  to  a  descriptor,  you  may
doc/html/vipsmanualse8.html:        subsequently use it as an input. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> descriptors are
doc/html/vipsmanualse8.html:        automatically changed to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"r"</span></span></span> descriptors.
doc/html/vipsmanualse8.html:        <!--l. 494--><p class="noindent" >If  the  function  you  are  passing  the  descriptor  to
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="#x14-580002.2.12">2.2.12<!--tex4ht:ref: sec:limit --></a>),  then  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptors
doc/html/vipsmanualse8.html:        become <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span>. If the function you are passing the
doc/html/vipsmanualse8.html:        descriptor  to  uses  PIO,  then  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptors  are
doc/html/vipsmanualse8.html:<!--l. 501--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-470002.2.10"></a>Automatic resource deallocation</h4>
doc/html/vipsmanualse8.html:<!--l. 503--><p class="noindent" >VIPS lets you allocate resources local to an image descriptor,
doc/html/vipsmanualse8.html:<!--l. 507--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-480002.2.10"></a>Local image descriptors</h5>
doc/html/vipsmanualse8.html:<!--l. 509--><p class="noindent" >VIPS provides a function which will open a new image
doc/html/vipsmanualse8.html:local to an existing image. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_open_local()</span></span></span> has
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-73">
doc/html/vipsmanualse8.html:<!--l. 516--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 518--><p class="indent" >  It behaves exactly as <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_open()</span></span></span>, except that you do
doc/html/vipsmanualse8.html:closed automatically when its parent descriptor <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im</span></span></span> is
doc/html/vipsmanualse8.html:<!--l. 523--><p class="indent" >  <a 
doc/html/vipsmanualse8.html: id="x14-480016"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse8.html:<div class="verbatim" id="verbatim-74">
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;sum1(&#x00A0;t,&#x00A0;in&#x00A0;+&#x00A0;1,&#x00A0;nin&#x00A0;-&#x00A0;1,&#x00A0;out&#x00A0;)&#x00A0;);
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;sum1(&#x00A0;in[0],&#x00A0;in&#x00A0;+&#x00A0;1,&#x00A0;nin&#x00A0;-&#x00A0;1,&#x00A0;out&#x00A0;)&#x00A0;);
doc/html/vipsmanualse8.html:<!--l. 560--><p class="nopar" >
doc/html/vipsmanualse8.html:class="content">Sum an array of images</span></div><!--tex4ht:label?: x14-480016 -->
doc/html/vipsmanualse8.html:<!--l. 565--><p class="indent" >  Figure&#x00A0;<a 
doc/html/vipsmanualse8.html:href="#x14-480016">2.6<!--tex4ht:ref: fg:addemup --></a> is a function which will sum an array of
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">out</span></span></span>. VIPS lets local images themselves have local images
doc/html/vipsmanualse8.html:<!--l. 571--><p class="indent" >  It is very important that these intermediate images are
doc/html/vipsmanualse8.html:made local to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> rather than <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">in</span></span></span>, for reasons which should
doc/html/vipsmanualse8.html:<!--l. 575--><p class="indent" >  There&#8217;s also <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_open_local_array()</span></span></span> for when
doc/html/vipsmanualse8.html: id="x14-490002.2.10"></a>Local memory allocation</h5>
doc/html/vipsmanualse8.html:<!--l. 581--><p class="noindent" >VIPS includes a set of functions for memory allocation
doc/html/vipsmanualse8.html:function is <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_malloc()</span></span></span>. It has type:
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-75">
doc/html/vipsmanualse8.html:<!--l. 587--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 589--><p class="indent" >  It operates exactly as the standard <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">malloc()</span></span></span> C library
doc/html/vipsmanualse8.html:to an image. If <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_malloc()</span></span></span> is unable to allocate
doc/html/vipsmanualse8.html:memory, it returns <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">NULL</span></span></span>. If you pass <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">NULL</span></span></span> instead of a
doc/html/vipsmanualse8.html:valid image descriptor, then <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_malloc()</span></span></span> allocates
doc/html/vipsmanualse8.html:<!--l. 596--><p class="indent" >    To free memory explicitly, use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_free()</span></span></span>:
doc/html/vipsmanualse8.html:  <div class="verbatim" id="verbatim-76">
doc/html/vipsmanualse8.html:<!--l. 600--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 602--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_free()</span></span></span> always returns 0, so you can use it as an
doc/html/vipsmanualse8.html:<!--l. 606--><p class="indent" >  Three macros make memory allocation even easier.
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">IM_NEW()</span></span></span> allocates a new object. You give it a descriptor
doc/html/vipsmanualse8.html:                                                 <div class="verbatim" id="verbatim-77">
doc/html/vipsmanualse8.html:  type-name&#x00A0;&#x22C6;IM_NEW(&#x00A0;IMAGE&#x00A0;&#x22C6;,&#x00A0;type-name&#x00A0;) 
doc/html/vipsmanualse8.html:<!--l. 612--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 614--><p class="indent" >  The second macro, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">IM_ARRAY()</span></span></span>, is very similar, but
doc/html/vipsmanualse8.html:usual <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">calloc()</span></span></span> C library function, it does not initialise
doc/html/vipsmanualse8.html:  <div class="verbatim" id="verbatim-78">
doc/html/vipsmanualse8.html:type-name&#x00A0;&#x22C6;IM_ARRAY(&#x00A0;IMAGE&#x00A0;&#x22C6;,&#x00A0;int,&#x00A0;type-name&#x00A0;)
doc/html/vipsmanualse8.html:<!--l. 620--><p class="nopar" >
doc/html/vipsmanualse8.html:<!--l. 622--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">IM_NUMBER()</span></span></span> returns the number of elements
doc/html/vipsmanualse8.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse8.html:href="vipsmanualse9.html#x15-600002.3.1">2.3.1<!--tex4ht:ref: sec:number --></a>.
doc/html/vipsmanualse8.html:<!--l. 626--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-500002.2.10"></a>Other local operations</h5>
doc/html/vipsmanualse8.html:<!--l. 628--><p class="noindent" >The above facilities are implemented with the VIPS core
doc/html/vipsmanualse8.html:function <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_add_close_callback()</span></span></span>. You can use
doc/html/vipsmanualse8.html:<!--l. 633--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-510002.2.11"></a>Error handling</h4>
doc/html/vipsmanualse8.html:<!--l. 635--><p class="noindent" >All VIPS operations return 0 on success and non-zero on
doc/html/vipsmanualse8.html:error, setting <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span>. As a consequence, when a
doc/html/vipsmanualse8.html:must call <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_error()</span></span></span> to let your caller know what the
doc/html/vipsmanualse8.html:<!--l. 642--><p class="indent" >  VIPS provides two more functions for error message
doc/html/vipsmanualse8.html:handling: <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_warn()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_diag()</span></span></span>. These are
doc/html/vipsmanualse8.html:arguments to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">stderr</span></span></span>, optionally suppressed by the setting
doc/html/vipsmanualse8.html:<!--l. 650--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-520002.2.12"></a>Joining operations together</h4>
doc/html/vipsmanualse8.html:<!--l. 653--><p class="noindent" >VIPS lets you join image processing operations together so
doc/html/vipsmanualse8.html:href="#x14-520017">2.7<!--tex4ht:ref: fg:join --></a> shows the
doc/html/vipsmanualse8.html:definition of the function <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span> from the VIPS
doc/html/vipsmanualse8.html:class="ptmri7t-">CIE</span><span 
doc/html/vipsmanualse8.html:class="ptmri7t-">&#x00A0;</span><span 
doc/html/vipsmanualse8.html:class="cmmi-10">L</span><span 
doc/html/vipsmanualse8.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse8.html:class="cmmi-10">a</span><span 
doc/html/vipsmanualse8.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse8.html:class="cmmi-10">b</span><span 
doc/html/vipsmanualse8.html:class="cmsy-7">*</span>
doc/html/vipsmanualse8.html: by the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_col_display</span></span></span> structure, see the man page for
doc/html/vipsmanualse8.html: <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_col_XYZ2rgb()</span></span></span>.
doc/html/vipsmanualse8.html:<!--l. 661--><p class="indent" >  <a 
doc/html/vipsmanualse8.html: id="x14-520017"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse8.html:<div class="verbatim" id="verbatim-79">
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse8.html:<!--l. 674--><p class="nopar" >
doc/html/vipsmanualse8.html:class="content">Two image-processing operations joined together</span></div><!--tex4ht:label?: x14-520017 -->
doc/html/vipsmanualse8.html:<!--l. 679--><p class="indent" >  The special <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> mode (for partial) used to open
doc/html/vipsmanualse8.html:When you use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span>, the two operations
doc/html/vipsmanualse8.html:is necessary for the intermediate image (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">t1</span></span></span> in this
doc/html/vipsmanualse8.html:<!--l. 686--><p class="indent" >  As an added bonus, if you have more than one CPU in
doc/html/vipsmanualse8.html:parallelization with the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">IM_CONCURRENCY</span></span></span> environment
doc/html/vipsmanualse8.html:variable, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_concurrency_set()</span></span></span>, and with the
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">--vips-concurrency</span></span></span> command-line switch. See the
doc/html/vipsmanualse8.html:man page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_generate()</span></span></span>.
doc/html/vipsmanualse8.html: id="x14-530002.2.12"></a>How it works</h5>
doc/html/vipsmanualse8.html:<!--l. 694--><p class="noindent" >When a VIPS function is asked to output to a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> image
doc/html/vipsmanualse8.html:<!--l. 700--><p class="indent" >  When a VIPS function is asked to output to a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> or a
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> descriptor (a real disc file or a real memory buffer), it
doc/html/vipsmanualse8.html:evaluation of any earlier <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> images.
doc/html/vipsmanualse8.html:<!--l. 705--><p class="indent" >  In the example in Figure&#x00A0;<a 
doc/html/vipsmanualse8.html:href="#x14-520017">2.7<!--tex4ht:ref: fg:join --></a>, whether or not any pixels
doc/html/vipsmanualse8.html:are really processed when <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span> is called
doc/html/vipsmanualse8.html:depends upon the mode in which <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> was opened.
doc/html/vipsmanualse8.html:If <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> is also a partial image, then no pixels will be
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">out</span></span></span>.
doc/html/vipsmanualse8.html:<!--l. 711--><p class="indent" >  Conversely, if <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">out</span></span></span> is a real image (that is, either <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"w"</span></span></span> or
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span>), then the final VIPS operation in the function
doc/html/vipsmanualse8.html:(<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_XYZ2disp()</span></span></span>) will output the entire image to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">out</span></span></span>,
doc/html/vipsmanualse8.html:causing the earlier parts of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_Lab2disp()</span></span></span> (and indeed
doc/html/vipsmanualse8.html:possibly some earlier pieces of program, if <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">in</span></span></span> was also a
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> image) to run.
doc/html/vipsmanualse8.html:<!--l. 717--><p class="indent" >  When a VIPS pipeline does finally evaluate, all of the
doc/html/vipsmanualse8.html:  <!--l. 722--><p class="indent" >    Since VIPS partial I/O is demand-driven rather than
doc/html/vipsmanualse8.html:  data-driven this works even if some of the operations
doc/html/vipsmanualse8.html:  include a call to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_affine()</span></span></span>, which performs arbitrary
doc/html/vipsmanualse8.html:  <!--l. 727--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-540002.2.12"></a>Pitfalls with partials</h5>
doc/html/vipsmanualse8.html:  <!--l. 729--><p class="noindent" >To go with all of the benefits that partial image I/O brings,
doc/html/vipsmanualse8.html:  almost certain core-dump.
doc/html/vipsmanualse8.html:  <!--l. 736--><p class="indent" >    You can prevent this from happening with careful use of
doc/html/vipsmanualse8.html:  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_open_local()</span></span></span>. If you always open local to your
doc/html/vipsmanualse8.html:  with non-image arguments. VIPS functions which take
doc/html/vipsmanualse8.html:  extra non-image arguments (a matrix, perhaps) are
doc/html/vipsmanualse8.html:  <!--l. 744--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-550002.2.12"></a>Non-image output</h5>
doc/html/vipsmanualse8.html:  <!--l. 746--><p class="noindent" >Some VIPS functions consume images, but make no image
doc/html/vipsmanualse8.html:  output. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_stats()</span></span></span> for example, scans an image
doc/html/vipsmanualse8.html:  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_stats()</span></span></span>, it behaves as a data sink, sucking image
doc/html/vipsmanualse8.html:  <!--l. 751--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-560002.2.12"></a>Calculating twice</h5>
doc/html/vipsmanualse8.html:  <!--l. 753--><p class="noindent" >In some circumstances, the same image data can be
doc/html/vipsmanualse8.html:href="#x14-560018">2.8<!--tex4ht:ref: fg:thrmean --></a> is a function which finds the
doc/html/vipsmanualse8.html:<!--l. 759--><p class="indent" >  <a 
doc/html/vipsmanualse8.html: id="x14-560018"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse8.html:<div class="verbatim" id="verbatim-80">
doc/html/vipsmanualse8.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse8.html:<!--l. 771--><p class="nopar" >
doc/html/vipsmanualse8.html:class="content">Threshold an image at the mean value</span></div><!--tex4ht:label?: x14-560018 -->
doc/html/vipsmanualse8.html:<!--l. 776--><p class="indent" >  This seems straightforward &#8212; but consider if image <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">in</span></span></span>
doc/html/vipsmanualse8.html:were a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span>, and represented the output of a large pipeline
doc/html/vipsmanualse8.html:of operations. The call to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_avg()</span></span></span> would force the
doc/html/vipsmanualse8.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_moreconst()</span></span></span> will cause the pipeline to be evaluated
doc/html/vipsmanualse8.html:<!--l. 782--><p class="indent" >  When designing a program, it is sensible to pay attention
doc/html/vipsmanualse8.html:a file before calling <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_avg()</span></span></span>, find the average of the disc
doc/html/vipsmanualse8.html:file, and then run <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_moreconst()</span></span></span> from that. There&#8217;s
doc/html/vipsmanualse8.html:also <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_cache()</span></span></span> which can keep recent parts of a very
doc/html/vipsmanualse8.html: id="x14-570002.2.12"></a>Blocking computation</h5>
doc/html/vipsmanualse8.html:<!--l. 791--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">IMAGE</span></span></span> descriptors have a flag called <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">kill</span></span></span> which can be
doc/html/vipsmanualse8.html:used to block computation. If <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im-&#x003E;kill</span></span></span> is set to a
doc/html/vipsmanualse8.html:non-zero value, then any VIPS pipelines which use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im</span></span></span> as
doc/html/vipsmanualse8.html:is useful for user-interface writers &#8212; suppose your
doc/html/vipsmanualse8.html:the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">kill</span></span></span> flag in all of the deleted image&#8217;s immediate
doc/html/vipsmanualse8.html:<!--l. 800--><p class="noindent" >
doc/html/vipsmanualse8.html: id="x14-580002.2.12"></a>Limitations</h5>
doc/html/vipsmanualse8.html:<!--l. 803--><p class="noindent" >Not all VIPS operations are partial-aware. These non-partial
doc/html/vipsmanualse8.html:operations use a pre-VIPS 7.0 I/O scheme in which the
doc/html/vipsmanualse8.html:output until it has seen all of the input. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">im_fwfft()</span></span></span> is
doc/html/vipsmanualse8.html:simply not got around to rewriting the old non-partial
doc/html/vipsmanualse8.html:<!--l. 811--><p class="indent" >  You can mix partial and non-partial VIPS operations
doc/html/vipsmanualse8.html:<!--l. 816--><p class="indent" >
doc/html/vipsmanualse8.html:  class="enumerate" id="x14-58002x1">When a non-partial operation is asked to output to
doc/html/vipsmanualse8.html:          a  partial  image  descriptor,  the  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptor  is
doc/html/vipsmanualse8.html:          magically transformed into a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> descriptor.
doc/html/vipsmanualse8.html:  class="enumerate" id="x14-58004x2">When a non-partial operation is asked to read from
doc/html/vipsmanualse8.html:          a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptor, the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"p"</span></span></span> descriptor is turned into
doc/html/vipsmanualse8.html:          a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse8.html:class="pcrr7t-">"t"</span></span></span> type, and any earlier stages in the pipeline
doc/html/vipsmanualse8.html:          <!--l. 828--><p class="noindent" >The non-partial operation then processes from the
doc/html/vipsmanualse8.html:  <!--l. 832--><p class="indent" >    These rules have the consequence that you may only
doc/html/vipsmanualse8.html:  If you use any non-partial operations, then parts of your
doc/html/vipsmanualse8.html:  pipelines will fall back to old whole-image I/O and you will
doc/html/vipsmanualse8.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse8.html:href="vipsmanualse7.html#tailvipsmanualse7.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse8.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualse13.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse13.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse13.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse13.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse13.html:<!-- 3,html --> 
doc/html/vipsmanualse13.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse13.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse13.html: id="x20-850003.1"></a>Introduction</h3>
doc/html/vipsmanualse13.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:oper"></a>
doc/html/vipsmanualse13.html:<!--l. 4--><p class="indent" >  This chapter explains how to write image processing
doc/html/vipsmanualse13.html:operations using the VIPS image I/O (input-output) system.
doc/html/vipsmanualse13.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse13.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>.
doc/html/vipsmanualse13.html:information on any particular function, use the on-line
doc/html/vipsmanualse13.html:<!--l. 10--><p class="noindent" >
doc/html/vipsmanualse13.html: id="x20-860003.1.1"></a>Why use VIPS?</h4>
doc/html/vipsmanualse13.html:<!--l. 12--><p class="noindent" >If you use the VIPS image I/O system, you get a number of
doc/html/vipsmanualse13.html:class="ptmb7t-">Threading</span> </dt><dd 
doc/html/vipsmanualse13.html:    an approximately linear speed-up as you add more
doc/html/vipsmanualse13.html:class="ptmb7t-">Pipelining</span>  </dt><dd 
doc/html/vipsmanualse13.html:class="ptmb7t-">Composition</span>  </dt><dd 
doc/html/vipsmanualse13.html:          easy-to-understand pieces. VIPS already has a lot
doc/html/vipsmanualse13.html:class="ptmb7t-">Large files</span>  </dt><dd 
doc/html/vipsmanualse13.html:          plain 32-bit machine. VIPS operations only see 32
doc/html/vipsmanualse13.html:class="ptmb7t-">Abstraction</span>  </dt><dd 
doc/html/vipsmanualse13.html:class="ptmb7t-">Interfaces</span>  </dt><dd 
doc/html/vipsmanualse13.html:class="pcrr7t-">nip2</span>), a UNIX command-line interface (<span 
doc/html/vipsmanualse13.html:class="pcrr7t-">vips</span>)
doc/html/vipsmanualse13.html:class="ptmb7t-">Portability</span>  </dt><dd 
doc/html/vipsmanualse13.html:<!--l. 59--><p class="noindent" >
doc/html/vipsmanualse13.html: id="x20-870003.1.2"></a>I/O styles</h4>
doc/html/vipsmanualse13.html:<!--l. 61--><p class="noindent" >The I/O system supports three styles of input-output.
doc/html/vipsmanualse13.html:class="ptmb7t-">Whole-image I/O (WIO)</span> </dt><dd 
doc/html/vipsmanualse13.html:    left-over  from  VIPS  6.x.  WIO  image-processing
doc/html/vipsmanualse13.html:class="ptmb7t-">Partial-image I/O (PIO)</span> </dt><dd 
doc/html/vipsmanualse13.html:class="ptmb7t-">In-place</span> </dt><dd 
doc/html/vipsmanualse13.html:    is  used  by  the  VIPS  in-place  operations,  such
doc/html/vipsmanualse13.html:    as  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse13.html:class="pcrr7t-">im_fastline()</span></span></span>.  You  should  only  use  it
doc/html/vipsmanualse13.html:<!--l. 85--><p class="indent" >  WIO operations are easy to program, but slow and
doc/html/vipsmanualse13.html:<!--l. 89--><p class="indent" >  If you can face it, and if your algorithm can be expressed
doc/html/vipsmanualse13.html:<!--l. 93--><p class="indent" >  If your image processing operation performs no
doc/html/vipsmanualse13.html:can use the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse13.html:class="pcrr7t-">im_wrapone()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse13.html:class="pcrr7t-">im_wrapmany()</span></span></span>
doc/html/vipsmanualse13.html:operations. These take a simple buffer-processing operation
doc/html/vipsmanualse13.html:supplied by you and wrap it up as a full-blown PIO
doc/html/vipsmanualse13.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse13.html:href="vipsmanualse15.html#x22-930003.3.1">3.3.1<!--tex4ht:ref: sec:wrapone --></a>.
doc/html/vipsmanualse13.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse13.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualse7.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse7.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse7.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse7.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse7.html:<!-- 3,html --> 
doc/html/vipsmanualse7.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse7.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse7.html: id="x13-360002.1"></a>Introduction</h3>
doc/html/vipsmanualse7.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:appl"></a>
doc/html/vipsmanualse7.html:<!--l. 4--><p class="indent" >  This chapter explains how to call VIPS functions from C
doc/html/vipsmanualse7.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse7.html:href="vipsmanualse13.html#x20-850003.1">3.1<!--tex4ht:ref: sec:oper --></a>), only how to call the ones
doc/html/vipsmanualse7.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse7.html:href="vipsmanualse1.html#x6-50001.1">1.1<!--tex4ht:ref: sec:cpp --></a>.
doc/html/vipsmanualse7.html: <!--l. 10--><p class="indent" >    See <span 
doc/html/vipsmanualse7.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse7.html:href="vipsmanualse17.html#x25-1050004.1">4.1<!--tex4ht:ref: sec:ref --></a> for an introduction to the image processing
doc/html/vipsmanualse7.html:href="#x13-360011">2.1<!--tex4ht:ref: fg:architecture --></a> tries to show
doc/html/vipsmanualse7.html:<!--l. 15--><p class="indent" >  <a 
doc/html/vipsmanualse7.html: id="x13-360011"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse7.html:<!--l. 15--><p class="noindent" >
doc/html/vipsmanualse7.html:<!--l. 15--><p class="noindent" ><img 
doc/html/vipsmanualse7.html:class="content">VIPS software architecture</span></div><!--tex4ht:label?: x13-360011 -->
doc/html/vipsmanualse7.html:<!--l. 20--><p class="indent" >  VIPS includes a set of UNIX manual pages. Enter (for
doc/html/vipsmanualse7.html:                                                 <div class="verbatim" id="verbatim-49">
doc/html/vipsmanualse7.html:<!--l. 24--><p class="nopar" >
doc/html/vipsmanualse7.html:<!--l. 26--><p class="noindent" >to get an explanation of the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse7.html:class="pcrr7t-">im_extract()</span></span></span> function.
doc/html/vipsmanualse7.html:<!--l. 29--><p class="indent" >    All the command-line VIPS operations will print help
doc/html/vipsmanualse7.html:  <div class="verbatim" id="verbatim-50">
doc/html/vipsmanualse7.html:<!--l. 51--><p class="nopar" >
doc/html/vipsmanualse7.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse7.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualli3.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualli3.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualli3.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualli3.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualli3.html:<!-- 3,html --> 
doc/html/vipsmanualli3.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualli3.html:  <!--l. 53--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualli3.html:href="vipsmanualli2.html#tailvipsmanualli2.html" >prev-tail</a>] [<a 
doc/html/vipsmanualli3.html: id="x4-3000"></a>List of Tables</h2>
doc/html/vipsmanualli3.html:href="vipsmanualse2.html#x7-80011">VIPS header</a></span><br /><span class="lotToc" >1.2&#x00A0;<a 
doc/html/vipsmanualli3.html:href="vipsmanualse2.html#x7-80022">Possible values for <span 
doc/html/vipsmanualli3.html:class="pcrr7t-">BandFmt</span></a></span><br /><span class="lotToc" >1.3&#x00A0;<a 
doc/html/vipsmanualli3.html:href="vipsmanualse2.html#x7-80033">Possible values for <span 
doc/html/vipsmanualli3.html:class="pcrr7t-">Coding</span></a></span><br /><span class="lotToc" >1.4&#x00A0;<a 
doc/html/vipsmanualli3.html:href="vipsmanualse2.html#x7-80044">Possible
doc/html/vipsmanualli3.html:class="pcrr7t-">Type</span></a></span><br /><span class="lotToc" >2.1&#x00A0;<a 
doc/html/vipsmanualli3.html:href="vipsmanualse9.html#x15-600011">Argument type macros</a></span><br /><span class="lotToc" >4.1&#x00A0;<a 
doc/html/vipsmanualli3.html:href="vipsmanualse17.html#x25-1050011">Miscellaneous programs</a></span><br />
doc/html/vipsmanualli3.html:  <!--l. 61--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualli3.html:href="vipsmanualli2.html#tailvipsmanualli2.html" >prev-tail</a>] [<a 
doc/html/vipsmanualli3.html:<!--l. 61--><p class="indent" >  <a 
doc/html/vipsmanualse17.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse17.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse17.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse17.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse17.html:<!-- 3,html --> 
doc/html/vipsmanualse17.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse17.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse17.html: id="x25-1050004.1"></a>Introduction</h3>
doc/html/vipsmanualse17.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:ref"></a>
doc/html/vipsmanualse17.html:<!--l. 4--><p class="indent" >  /bf VIPS reference documentation is in the process of
doc/html/vipsmanualse17.html:switching to gtkdoc. Half-done manuals are distributed
doc/html/vipsmanualse17.html:<!--l. 9--><p class="indent" >  In the meantime, this old and slightly outdated chapter
doc/html/vipsmanualse17.html:<!--l. 13--><p class="indent" >  This chapter introduces the functions available in the
doc/html/vipsmanualse17.html:particular functions, refer to the UNIX on-line manual
doc/html/vipsmanualse17.html:                                                 <div class="verbatim" id="verbatim-173">
doc/html/vipsmanualse17.html:<!--l. 19--><p class="nopar" >
doc/html/vipsmanualse17.html:<!--l. 21--><p class="indent" >  for information on the function <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">im_abs()</span></span></span>.
doc/html/vipsmanualse17.html:<!--l. 23--><p class="indent" >    All the comand-line vips operations will print help text
doc/html/vipsmanualse17.html:  <div class="verbatim" id="verbatim-174">
doc/html/vipsmanualse17.html:<!--l. 45--><p class="nopar" >
doc/html/vipsmanualse17.html:<!--l. 47--><p class="indent" >  Once you have found a function you need to use, you can
doc/html/vipsmanualse17.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse17.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>), you can call it from C++
doc/html/vipsmanualse17.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse17.html:href="vipsmanualse1.html#x6-50001.1">1.1<!--tex4ht:ref: sec:cpp --></a>), you can call it from the <span 
doc/html/vipsmanualse17.html:class="pcrr7t-">nip2 </span>((see the
doc/html/vipsmanualse17.html:class="ptmri7t-">nip Manual</span>), or SIAM graphical user-interfaces, or you can
doc/html/vipsmanualse17.html:class="pcrr7t-">vips</span>
doc/html/vipsmanualse17.html:                                                 <div class="verbatim" id="verbatim-175">
doc/html/vipsmanualse17.html:<!--l. 60--><p class="nopar" >
doc/html/vipsmanualse17.html:<!--l. 62--><p class="indent" >  VIPS may have been set up at your site with a set of links
doc/html/vipsmanualse17.html:  <div class="verbatim" id="verbatim-176">
doc/html/vipsmanualse17.html:<!--l. 70--><p class="nopar" >
doc/html/vipsmanualse17.html:<!--l. 72--><p class="indent" >  There are a few VIPS programs which you cannot run
doc/html/vipsmanualse17.html:class="pcrr7t-">vips</span>, either because their arguments are a very
doc/html/vipsmanualse17.html:strange, or because they are complete mini-applications
doc/html/vipsmanualse17.html:(like <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">vips2dj</span></span></span>). These programs are listed in table&#x00A0;<a 
doc/html/vipsmanualse17.html:href="#x25-1050011">4.1<!--tex4ht:ref: tb:nondb --></a>, see
doc/html/vipsmanualse17.html:<!--l. 78--><p class="indent" >  <a 
doc/html/vipsmanualse17.html: id="x25-1050011"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse17.html:class="centerline"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-6" class="tabular" 
doc/html/vipsmanualse17.html:><colgroup id="TBL-6-1g"><col 
doc/html/vipsmanualse17.html:id="TBL-6-1"></colgroup><colgroup id="TBL-6-2g"><col 
doc/html/vipsmanualse17.html:id="TBL-6-2"></colgroup><tr 
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-1-1"  
doc/html/vipsmanualse17.html:class="td11">Name                                   </td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-1-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-2-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">binfile            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-2-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-3-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">debugim            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-3-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-4-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">edvips             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-4-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-5-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">header             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-5-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-6-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">printlines </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-6-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-7-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">vips               </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-7-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-8-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">vips-7.14          </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-8-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-9-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">find</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_mosaic        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-9-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-10-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">mergeup            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-10-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-11-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">cooc</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_features      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-11-2"  
doc/html/vipsmanualse17.html:class="td11">Calculate features of a co-occurence matrix                </td></tr><tr  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-12-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">cooc </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-12-2"  
doc/html/vipsmanualse17.html:class="td11">Calculate a co-occurence matrix</td>
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-13-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">glds</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_features      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-13-2"  
doc/html/vipsmanualse17.html:class="td11">Calculate features of a grey-level distribution matrix  </td>
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-14-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">glds               </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-14-2"  
doc/html/vipsmanualse17.html:class="td11">Calculate a grey-level distribution matrix                    </td>
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-15-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">simcontr           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-15-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-16-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">sines              </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-16-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-17-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">spatres            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-17-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-18-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">squares            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-18-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-19-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-19-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">batch</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_crop         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-19-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-20-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-20-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">batch</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_image</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_convert</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-20-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-21-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-21-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">batch</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_rubber</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_sheet </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-21-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-22-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-22-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">light</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_correct      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-22-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-23-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-23-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">mitsub             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-23-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-24-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-24-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">shrink</span><span 
doc/html/vipsmanualse17.html:class="pcrr7t-">_width       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-24-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-25-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-25-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">vdump              </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-25-2"  
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-26-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-26-1"  
doc/html/vipsmanualse17.html:class="pcrr7t-">vips2dj            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-6-26-2"  
doc/html/vipsmanualse17.html:class="td11">VIPS to high-quality colour Postscript                        </td>
doc/html/vipsmanualse17.html: style="vertical-align:baseline;" id="TBL-6-27-"><td  style="white-space:nowrap; text-align:left;" id="TBL-6-27-1"  
doc/html/vipsmanualse17.html:class="content">Miscellaneous programs</span></div><!--tex4ht:label?: x25-1050011 -->
doc/html/vipsmanualse17.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse17.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualse11.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse11.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse11.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse11.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse11.html:<!-- 3,html --> 
doc/html/vipsmanualse11.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse11.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse11.html:href="vipsmanualse10.html#tailvipsmanualse10.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse11.html: id="x17-740002.5"></a>Image formats</h3>
doc/html/vipsmanualse11.html:<!--l. 4--><p class="noindent" >VIPS has a simple system for adding support for new
doc/html/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">IMAGE</span></span></span>, or an <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">IMAGE</span></span></span> to a file. New formats may be
doc/html/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span>.
doc/html/vipsmanualse11.html:<!--l. 10--><p class="indent" >  This is a parallel API to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">im_open()</span></span></span>, see <span 
doc/html/vipsmanualse11.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse11.html:href="vipsmanualse8.html#x14-410002.2.4">2.2.4<!--tex4ht:ref: sec:open --></a>. The
doc/html/vipsmanualse11.html:image is held. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">im_open()</span></span></span> is useful for images in
doc/html/vipsmanualse11.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse11.html:href="vipsmanualse18.html#x26-1140004.2.8">4.2.8<!--tex4ht:ref: sec:inplace --></a>), for
doc/html/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">im_open()</span></span></span>.
doc/html/vipsmanualse11.html:<!--l. 19--><p class="noindent" >
doc/html/vipsmanualse11.html: id="x17-750002.5.1"></a>How a format is represented</h4>
doc/html/vipsmanualse11.html:<!--l. 21--><p class="noindent" >See the man page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span> for full details,
doc/html/vipsmanualse11.html:    and a list of possible filename suffixes (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">.tif</span></span></span>, for
doc/html/vipsmanualse11.html:    <li class="itemize">A function which will write an <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">IMAGE</span></span></span> to a file in
doc/html/vipsmanualse11.html:  <!--l. 45--><p class="noindent" >
doc/html/vipsmanualse11.html: id="x17-760002.5.2"></a>The format class</h4>
doc/html/vipsmanualse11.html:  <!--l. 47--><p class="noindent" >The interface to the format system is defined by the abstract
doc/html/vipsmanualse11.html:  base class <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span>. Formats subclass this and
doc/html/vipsmanualse11.html:  <!--l. 53--><p class="indent" >    As an example, Figure&#x00A0;<a 
doc/html/vipsmanualse11.html:href="#x17-760019">2.9<!--tex4ht:ref: fg:newformat --></a> shows how to register a new
doc/html/vipsmanualse11.html:<!--l. 57--><p class="indent" >  <a 
doc/html/vipsmanualse11.html: id="x17-760019"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse11.html:<div class="verbatim" id="verbatim-118">
doc/html/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;nickname&#x00A0;=&#x00A0;"myformat";
doc/html/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;description&#x00A0;=&#x00A0;_(&#x00A0;"My&#x00A0;format"&#x00A0;);
doc/html/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;is_a&#x00A0;=&#x00A0;is_myformat;
doc/html/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;header&#x00A0;=&#x00A0;my_header;
doc/html/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;load&#x00A0;=&#x00A0;my_read;
doc/html/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;save&#x00A0;=&#x00A0;my_write;
doc/html/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;get_flags&#x00A0;=&#x00A0;my_get_flags;
doc/html/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;priority&#x00A0;=&#x00A0;100;
doc/html/vipsmanualse11.html:&#x00A0;<br />&#x00A0;&#x00A0;format_class-&#x003E;suffs&#x00A0;=&#x00A0;my_suffs;
doc/html/vipsmanualse11.html:<!--l. 108--><p class="nopar" >
doc/html/vipsmanualse11.html:class="content">Registering a format in a plugin</span></div><!--tex4ht:label?: x17-760019 -->
doc/html/vipsmanualse11.html: id="x17-770002.5.3"></a>Finding a format</h4>
doc/html/vipsmanualse11.html:<!--l. 115--><p class="noindent" >You can loop over the subclasses of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">VipsFormat</span></span></span> in order
doc/html/vipsmanualse11.html:of priority with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">vips_format_map()</span></span></span>. Like all the map
doc/html/vipsmanualse11.html:non-zero or until the table ends.
doc/html/vipsmanualse11.html:<!--l. 120--><p class="indent" >  You find an <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">VipsFormatClass</span></span></span> to use to open a file
doc/html/vipsmanualse11.html:with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">vips_format_for_file()</span></span></span>. This finds the first
doc/html/vipsmanualse11.html:format whose <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">is_a()</span></span></span> function returns true or whose
doc/html/vipsmanualse11.html:<!--l. 125--><p class="indent" >  You find a format to write a file with
doc/html/vipsmanualse11.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">vips_format_for_name()</span></span></span>. This returns the first
doc/html/vipsmanualse11.html:<!--l. 129--><p class="noindent" >
doc/html/vipsmanualse11.html: id="x17-780002.5.4"></a>Convenience functions</h4>
doc/html/vipsmanualse11.html:<!--l. 131--><p class="noindent" >A pair of convenience functions, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">vips_format_write()</span></span></span>
doc/html/vipsmanualse11.html:and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse11.html:class="pcrr7t-">vips_format_read()</span></span></span>, will copy an image to and
doc/html/vipsmanualse11.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse11.html:href="vipsmanualse10.html#tailvipsmanualse10.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse11.html:<!--l. 1--><p class="indent" >  <a 
Coincidencia en el archivo binario doc/html/figs/interconvert.png
Coincidencia en el archivo binario doc/html/figs/arch.png
doc/html/vipsmanualse9.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse9.html:<head><title>Function dispatch and plug-ins</title> 
doc/html/vipsmanualse9.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse9.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse9.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse9.html:<!-- 3,html --> 
doc/html/vipsmanualse9.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse9.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse9.html:href="vipsmanualse8.html#tailvipsmanualse8.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse9.html: id="x15-590002.3"></a>Function dispatch and plug-ins</h3>
doc/html/vipsmanualse9.html:<!--l. 3--><p class="noindent" >(This chapter is on the verge of being deprecated. We have
doc/html/vipsmanualse9.html:started building a replacement based on <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">GObject</span></span></span>, see
doc/html/vipsmanualse9.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse9.html:href="vipsmanualse10.html#x16-670002.4">2.4<!--tex4ht:ref: sec:object --></a>.)
doc/html/vipsmanualse9.html:<!--l. 6--><p class="indent" >  As image processing libraries increase in size it becomes
doc/html/vipsmanualse9.html:<!--l. 11--><p class="indent" >  To address this problem VIPS includes a simple database
doc/html/vipsmanualse9.html:<!--l. 16--><p class="indent" >  The operation database is extensible. You can define new
doc/html/vipsmanualse9.html:<!--l. 22--><p class="noindent" >
doc/html/vipsmanualse9.html: id="x15-600002.3.1"></a>Simple plugin example</h4>
doc/html/vipsmanualse9.html:<!--l. 24--><p class="noindent" >As an example, consider this function:
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-81">
doc/html/vipsmanualse9.html:<!--l. 40--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 42--><p class="noindent" >The source for all the example code in this section is in the
doc/html/vipsmanualse9.html:vips-examples package.
doc/html/vipsmanualse9.html:<!--l. 46--><p class="indent" >    The first step is to make a layer over this function which
doc/html/vipsmanualse9.html:        <li class="itemize">The  function  should  be  int-valued,  and  return  0
doc/html/vipsmanualse9.html:        for  success  and  non-zero  for  error.  It  should  set
doc/html/vipsmanualse9.html:        <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_error()</span></span></span>.
doc/html/vipsmanualse9.html:        argument: a pointer to a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span>-terminated array of
doc/html/vipsmanualse9.html:        <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_objects</span></span></span>.
doc/html/vipsmanualse9.html:        <li class="itemize">Each  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_object</span></span></span> represents  one  argument  to
doc/html/vipsmanualse9.html:<!--l. 66--><p class="indent" >    The argument descriptor is an array of structures,
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-82">
doc/html/vipsmanualse9.html:<!--l. 77--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 79--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">IM_INPUT_INT()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">IM_OUTPUT_INT()</span></span></span> are
doc/html/vipsmanualse9.html:macros defined in <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">&#x003C;vips/dispatch.h&#x003E;</span></span></span> which make
doc/html/vipsmanualse9.html:href="#x15-600011">2.1<!--tex4ht:ref: tab:type --></a>.
doc/html/vipsmanualse9.html:<!--l. 84--><p class="indent" >  <a 
doc/html/vipsmanualse9.html: id="x15-600011"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse9.html:<!--l. 84--><p class="noindent" >
doc/html/vipsmanualse9.html:<div class="tabular"> <table id="TBL-5" class="tabular" 
doc/html/vipsmanualse9.html:><colgroup id="TBL-5-1g"><col 
doc/html/vipsmanualse9.html:id="TBL-5-1"></colgroup><colgroup id="TBL-5-2g"><col 
doc/html/vipsmanualse9.html:id="TBL-5-2"></colgroup><colgroup id="TBL-5-3g"><col 
doc/html/vipsmanualse9.html:id="TBL-5-3"></colgroup><tr 
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-1-1"  
doc/html/vipsmanualse9.html:class="td11">Macro                                       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-1-2"  
doc/html/vipsmanualse9.html:class="td11">Meaning                                 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-1-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_object </span>has type          </td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-2-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INT         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-2-2"  
doc/html/vipsmanualse9.html:class="td11">Input int                                  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-2-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">int &#x22C6;              </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-3-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INTVEC      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-3-2"  
doc/html/vipsmanualse9.html:class="td11">Input vector of int                   </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-3-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_intvec</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6; </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-4-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_IMASK       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-4-2"  
doc/html/vipsmanualse9.html:class="td11">Input int array                         </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-4-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-5-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INT        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-5-2"  
doc/html/vipsmanualse9.html:class="td11">Output int                               </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-5-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">int &#x22C6;              </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-6-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INTVEC      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-6-2"  
doc/html/vipsmanualse9.html:class="td11">Output vector of int                </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-6-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_intvec</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6; </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-7-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_IMASK      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-7-2"  
doc/html/vipsmanualse9.html:class="td11">Output int array to file            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-7-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-8-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_DOUBLE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-8-2"  
doc/html/vipsmanualse9.html:class="td11">Input double                           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-8-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">double &#x22C6;           </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-9-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_DOUBLEVEC   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-9-2"  
doc/html/vipsmanualse9.html:class="td11">Input vector of double            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-9-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_realvec</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;</span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-10-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_DMASK       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-10-2"  
doc/html/vipsmanualse9.html:class="td11">Input double array                  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-10-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-11-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_DOUBLE     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-11-2"  
doc/html/vipsmanualse9.html:class="td11">Output double                         </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-11-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">double &#x22C6;           </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-12-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_DOUBLEVEC  </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-12-2"  
doc/html/vipsmanualse9.html:class="td11">Output vector of double         </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-12-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_realvec</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;</span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-13-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_DMASK      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-13-2"  
doc/html/vipsmanualse9.html:class="td11">Output double array to file     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-13-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_mask</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_object &#x22C6;   </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-14-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_DMASK</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_STATS</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-14-2"  
doc/html/vipsmanualse9.html:class="td11">Output double array to screen</td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-14-3"  
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-15-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_COMPLEX    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-15-2"  
doc/html/vipsmanualse9.html:class="td11">Output complex                      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-15-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">double &#x22C6;           </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-16-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_STRING      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-16-2"  
doc/html/vipsmanualse9.html:class="td11">Input string                             </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-16-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">char &#x22C6;             </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-17-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_STRING     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-17-2"  
doc/html/vipsmanualse9.html:class="td11">Output string                          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-17-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">char &#x22C6;             </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-18-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_IMAGE       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-18-2"  
doc/html/vipsmanualse9.html:class="td11">Input image                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-18-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;            </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-19-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-19-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_IMAGEVEC    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-19-2"  
doc/html/vipsmanualse9.html:class="td11">Vector of input images           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-19-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;&#x22C6;           </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-20-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-20-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_IMAGE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-20-2"  
doc/html/vipsmanualse9.html:class="td11">Output image                          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-20-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;            </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-21-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-21-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_RW</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_IMAGE          </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-21-2"  
doc/html/vipsmanualse9.html:class="td11">Read-write image                   </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-21-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IMAGE &#x22C6;            </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-22-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-22-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_DISPLAY     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-22-2"  
doc/html/vipsmanualse9.html:class="td11">Input display                           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-22-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_col</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_display &#x22C6;   </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-23-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-23-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_DISPLAY    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-23-2"  
doc/html/vipsmanualse9.html:class="td11">Output display                        </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-23-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_col</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_display &#x22C6;   </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-24-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-24-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_GVALUE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-24-2"  
doc/html/vipsmanualse9.html:class="td11">Input GValue                          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-24-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">GValue &#x22C6;           </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-25-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-25-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_OUTPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_GVALUE     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-25-2"  
doc/html/vipsmanualse9.html:class="td11">Output GValue                       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-25-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">GValue &#x22C6;           </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-26-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-26-1"  
doc/html/vipsmanualse9.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INPUT</span><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">_INTERPOLATE </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-26-2"  
doc/html/vipsmanualse9.html:class="td11">Input VipsInterpolate             </td><td  style="white-space:nowrap; text-align:left;" id="TBL-5-26-3"  
doc/html/vipsmanualse9.html:class="pcrr7t-">VipsInterpolate &#x22C6;  </span></td>
doc/html/vipsmanualse9.html: style="vertical-align:baseline;" id="TBL-5-27-"><td  style="white-space:nowrap; text-align:left;" id="TBL-5-27-1"  
doc/html/vipsmanualse9.html:class="content">Argument type macros</span></div><!--tex4ht:label?: x15-600011 -->
doc/html/vipsmanualse9.html:<!--l. 156--><p class="indent" >  The argument to the type macro is the name of the
doc/html/vipsmanualse9.html:argument. These names are used by user-interface programs
doc/html/vipsmanualse9.html:user-interfaces will present them to the user. You should use
doc/html/vipsmanualse9.html:    <li class="itemize">Names   should   be   entirely   in   lower-case   and
doc/html/vipsmanualse9.html:    0-9 and the underscore character &#8216;_&#8217;.
doc/html/vipsmanualse9.html:    argument.   For   example,   <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_add()</span></span></span> has   the
doc/html/vipsmanualse9.html:                                                     <div class="verbatim" id="verbatim-83">
doc/html/vipsmanualse9.html:          example%&#x00A0;vips&#x00A0;-help&#x00A0;im_add
doc/html/vipsmanualse9.html:    &#x00A0;<br />&#x00A0;&#x00A0;(point-to-point&#x00A0;operation) 
doc/html/vipsmanualse9.html:   <!--l. 185--><p class="nopar" >
doc/html/vipsmanualse9.html:        options. For example, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_extract()</span></span></span> has the
doc/html/vipsmanualse9.html:    <div class="verbatim" id="verbatim-84">
doc/html/vipsmanualse9.html:    example%&#x00A0;vips&#x00A0;-help&#x00A0;im_extract
doc/html/vipsmanualse9.html:    &#x00A0;<br />&#x00A0;&#x00A0;(point-to-point&#x00A0;operation)
doc/html/vipsmanualse9.html:    <!--l. 210--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 214--><p class="indent" >  This function sits over <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">double_integer()</span></span></span>, providing
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-85">
doc/html/vipsmanualse9.html:<!--l. 233--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 235--><p class="indent" >  Finally, these two pieces of information (the argument
doc/html/vipsmanualse9.html:description and the VIPS-style function wrapper) can be
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-86">
doc/html/vipsmanualse9.html:<!--l. 250--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 253--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">IM_NUMBER()</span></span></span> is a macro which returns the number of
doc/html/vipsmanualse9.html:elements in a static array. The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">flags</span></span></span> field contains hints
doc/html/vipsmanualse9.html:which user-interfaces can use for various optimisations. At
doc/html/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/html/vipsmanualse9.html:class="pcrb7t-">_PIO</span> </dt><dd 
doc/html/vipsmanualse9.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse9.html:href="vipsmanualse15.html#x22-920003.3">3.3<!--tex4ht:ref: sec:pio --></a>).
doc/html/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/html/vipsmanualse9.html:class="pcrb7t-">_TRANSFORM</span> </dt><dd 
doc/html/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/html/vipsmanualse9.html:class="pcrb7t-">_PTOP</span> </dt><dd 
doc/html/vipsmanualse9.html:class="description">This is a point-to-point operation, that
doc/html/vipsmanualse9.html:    is, it can be replaced with a look-up table.
doc/html/vipsmanualse9.html:class="pcrb7t-">IM</span><span 
doc/html/vipsmanualse9.html:class="pcrb7t-">_FN</span><span 
doc/html/vipsmanualse9.html:class="pcrb7t-">_NOCACHE</span> </dt><dd 
doc/html/vipsmanualse9.html:<!--l. 275--><p class="indent" >  This function description now needs to be added to the
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-87">
doc/html/vipsmanualse9.html:<!--l. 297--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 299--><p class="indent" >  The package has to be named <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">package_table</span></span></span>, and
doc/html/vipsmanualse9.html:<!--l. 303--><p class="indent" >    This file needs to be made into a dynamically loadable
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-88">
doc/html/vipsmanualse9.html:example%&#x00A0;gcc&#x00A0;-fPIC&#x00A0;-DPIC&#x00A0;-c
doc/html/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;&#8216;pkg-config&#x00A0;vips-7.12&#x00A0;--cflags&#8216;
doc/html/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;plug.c&#x00A0;-o&#x00A0;plug.o
doc/html/vipsmanualse9.html:&#x00A0;<br />example%&#x00A0;gcc&#x00A0;-shared&#x00A0;plug.o
doc/html/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;-o&#x00A0;double.plg
doc/html/vipsmanualse9.html:<!--l. 312--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 314--><p class="indent" >  You can now use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">double.plg</span></span></span> with any of the
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-89">
doc/html/vipsmanualse9.html:  example%&#x00A0;vips&#x00A0;-plugin&#x00A0;double.plg&#x00A0;\
doc/html/vipsmanualse9.html:<!--l. 322--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 324--><p class="indent" >  When VIPS starts up, it looks for a directory in the
doc/html/vipsmanualse9.html:library directory called <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">vips-</span></span></span>, with the vips major and
doc/html/vipsmanualse9.html:there with the suffix <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">.plg</span></span></span>. So for example, on my machine,
doc/html/vipsmanualse9.html:the plugin directory is <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">/usr/lib/vips-7.16</span></span></span> and any
doc/html/vipsmanualse9.html: id="x15-610002.3.2"></a>A more complicated example</h4>
doc/html/vipsmanualse9.html:<!--l. 332--><p class="noindent" >This section lists the source for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_extract()</span></span></span>&#8217;s function
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-90">
doc/html/vipsmanualse9.html:<!--l. 379--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 381--><p class="noindent" >                                              <h4 class="subsectionHead"><span class="titlemark">2.3.3    </span> <a 
doc/html/vipsmanualse9.html: id="x15-620002.3.3"></a>Adding new types</h4>
doc/html/vipsmanualse9.html:  <!--l. 383--><p class="noindent" >The VIPS type mechanism is extensible. User plug-ins can
doc/html/vipsmanualse9.html:  add new types and user-interfaces can (to a certain extent)
doc/html/vipsmanualse9.html:  provide interfaces to these user-defined types.
doc/html/vipsmanualse9.html:  <!--l. 387--><p class="indent" >    Here is the definition of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_arg_desc</span></span></span>:
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-91">
doc/html/vipsmanualse9.html:<!--l. 397--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 399--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">name</span></span></span> field is the argument name above. The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">desc</span></span></span>
doc/html/vipsmanualse9.html:the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">print</span></span></span> field is an (optionally <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span>) pointer to a
doc/html/vipsmanualse9.html:the terminal, or to copy results into a user-interface
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-92">
doc/html/vipsmanualse9.html:<!--l. 415--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 417--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_type_desc</span></span></span> is defined as:
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-93">
doc/html/vipsmanualse9.html:<!--l. 429--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 431--><p class="indent" >  Where <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_arg_type</span></span></span> is defined as
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-94">
doc/html/vipsmanualse9.html: &#x00A0;<br />&#x00A0;&#x22C6;&#x00A0;then&#x00A0;you&#x00A0;should&#x00A0;use&#x00A0;the&#x00A0;built-in
doc/html/vipsmanualse9.html:<!--l. 452--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 454--><p class="indent" >  In other words, it&#8217;s just a string. When you add a new
doc/html/vipsmanualse9.html:parts of VIPS, and so needs to be &#8220;human-readable&#8221;. The
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-95">
doc/html/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x22C6;&#x00A0;an&#x00A0;im_object&#x00A0;---&#x00A0;with&#x00A0;and&#x00A0;without
doc/html/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x22C6;&#x00A0;a&#x00A0;command-line&#x00A0;string&#x00A0;to&#x00A0;help&#x00A0;you
doc/html/vipsmanualse9.html:<!--l. 483--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 485--><p class="indent" >  And the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">init</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">destroy</span></span></span> functions are:
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-96">
doc/html/vipsmanualse9.html:<!--l. 497--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 499--><p class="indent" >  As an example, here is the definition for a new type of
doc/html/vipsmanualse9.html:unsigned integers. First, we need to define the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">init</span></span></span> and
doc/html/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">print</span></span></span> functions. These transform objects of the type to
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-97">
doc/html/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse9.html:<!--l. 536--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 538--><p class="indent" >  Now we can define the type itself. We make two of
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-98">
doc/html/vipsmanualse9.html:<!--l. 565--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 567--><p class="indent" >  Finally, we can define two macros to make structures of
doc/html/vipsmanualse9.html:type <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_arg_desc</span></span></span> for us.
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-99">
doc/html/vipsmanualse9.html:<!--l. 575--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 577--><p class="indent" >  For more examples, see the definitions for the built-in
doc/html/vipsmanualse9.html:<!--l. 579--><p class="noindent" >
doc/html/vipsmanualse9.html: id="x15-630002.3.4"></a>Using function dispatch in your application</h4>
doc/html/vipsmanualse9.html:<!--l. 581--><p class="noindent" >VIPS provides a set of functions for adding new image
doc/html/vipsmanualse9.html:<!--l. 585--><p class="noindent" >
doc/html/vipsmanualse9.html: id="x15-640002.3.4"></a>Adding and removing functions</h5>
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-100">
doc/html/vipsmanualse9.html:<!--l. 590--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 592--><p class="indent" >  This function opens the named file, searches it for a
doc/html/vipsmanualse9.html:symbol named <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">package_table</span></span></span>, and adds any functions
doc/html/vipsmanualse9.html:for a function, any plug-ins are searched first, so you
doc/html/vipsmanualse9.html:<!--l. 597--><p class="indent" >    The function returns a pointer to the package it added, or
doc/html/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> on error.
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-101">
doc/html/vipsmanualse9.html:<!--l. 602--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 604--><p class="indent" >  This function closes all plug-ins, removing then from the
doc/html/vipsmanualse9.html:VIPS function database. It returns non-zero on error.
doc/html/vipsmanualse9.html:<!--l. 607--><p class="noindent" >
doc/html/vipsmanualse9.html: id="x15-650002.3.4"></a>Searching the function database</h5>
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-102">
doc/html/vipsmanualse9.html:<!--l. 612--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 614--><p class="indent" >  This function applies the argument function <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">fn</span></span></span> to
doc/html/vipsmanualse9.html:recently added package. As with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_list_map()</span></span></span>, the
doc/html/vipsmanualse9.html:argument function should return <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> to continue
doc/html/vipsmanualse9.html:searching, or non-<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> to terminate the search early.
doc/html/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_map_packages()</span></span></span> returns <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> if <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">fn</span></span></span> returned
doc/html/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">NULL</span></span></span> for all arguments. The extra argument <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">a</span></span></span> is carried
doc/html/vipsmanualse9.html:<!--l. 622--><p class="indent" >    For example, this fragment of code prints the names of all
doc/html/vipsmanualse9.html:loaded packages to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">fd</span></span></span>:
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-103">
doc/html/vipsmanualse9.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;pack-&#x003E;name&#x00A0;);
doc/html/vipsmanualse9.html:<!--l. 646--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 648--><p class="indent" >  VIPS defines three convenience functions based on
doc/html/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_map_packages()</span></span></span> which simplify searching for
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-104">
doc/html/vipsmanualse9.html:<!--l. 658--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 660--><p class="noindent" >
doc/html/vipsmanualse9.html: id="x15-660002.3.4"></a>Building argument structures and running commands</h5>
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-105">
doc/html/vipsmanualse9.html:<!--l. 668--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 670--><p class="indent" >  These two functions allocate space for and free VIPS
doc/html/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_malloc()</span></span></span> to allocate any store that the types require
doc/html/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">im_free()</span></span></span> for any storage that was allocated.
doc/html/vipsmanualse9.html:<!--l. 675--><p class="indent" >  Note that neither of these functions calls the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">init</span></span></span>,
doc/html/vipsmanualse9.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">dest</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse9.html:class="pcrr7t-">print</span></span></span> functions for the types &#8212; that&#8217;s up to
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-106">
doc/html/vipsmanualse9.html:<!--l. 681--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 683--><p class="indent" >  This function does everything. In effect,
doc/html/vipsmanualse9.html:  <div class="verbatim" id="verbatim-107">
doc/html/vipsmanualse9.html:<!--l. 688--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 690--><p class="indent" >  is exactly equivalent to
doc/html/vipsmanualse9.html:                                                 <div class="verbatim" id="verbatim-108">
doc/html/vipsmanualse9.html:<!--l. 695--><p class="nopar" >
doc/html/vipsmanualse9.html:<!--l. 697--><p class="indent" >  but no process is forked.
doc/html/vipsmanualse9.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse9.html:href="vipsmanualse8.html#tailvipsmanualse8.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse9.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualli1.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualli1.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualli1.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualli1.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualli1.html:<!-- 3,html --> 
doc/html/vipsmanualli1.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualli1.html:  <!--l. 45--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualli1.html: id="x2-1000"></a>Contents</h2>
doc/html/vipsmanualli1.html:href="vipsmanualch1.html#x5-40001">VIPS from C++ and Python</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse1.html#x6-50001.1">Introduction</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse1.html#x6-60001.1.1" id="QQ2-6-6">If you&#8217;ve used the C API</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse2.html#x7-70001.2">The VIPS file format</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse2.html#x7-80001.2.1" id="QQ2-7-10">VIPS file header</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse2.html#x7-90001.2.2" id="QQ2-7-15">Computation formats</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse2.html#x7-100001.2.3" id="QQ2-7-16">Storage formats</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse3.html#x8-110001.3">The <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VImage </span>class</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse3.html#x8-120001.3.1" id="QQ2-8-18">Constructors</a></span>                           <br />    &#x00A0;&#x00A0;<span class="subsectionToc" >1.3.2 <a 
doc/html/vipsmanualli1.html:href="vipsmanualse3.html#x8-130001.3.2" id="QQ2-8-19">File conversion</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse3.html#x8-140001.3.3" id="QQ2-8-20">Projection functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse3.html#x8-150001.3.4" id="QQ2-8-21">Assignment</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse3.html#x8-160001.3.5" id="QQ2-8-22">Computing with <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VImage</span>s</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse3.html#x8-170001.3.6" id="QQ2-8-23">Writing results</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse3.html#x8-180001.3.7" id="QQ2-8-24">Type conversions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse4.html#x9-190001.4">The <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VMask </span>class</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse4.html#x9-200001.4.1" id="QQ2-9-26">Constructors</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse4.html#x9-210001.4.2" id="QQ2-9-27">Projection functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse4.html#x9-220001.4.3" id="QQ2-9-28">Assignment</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse4.html#x9-230001.4.4" id="QQ2-9-29">Computing with <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VMask</span></a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse4.html#x9-240001.4.5" id="QQ2-9-30"><span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VIMask </span>operations</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse4.html#x9-250001.4.6" id="QQ2-9-31"><span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VDMask </span>operations</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse4.html#x9-260001.4.7" id="QQ2-9-32">Output of masks</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse5.html#x10-270001.5">The <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VDisplay </span>class</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse5.html#x10-280001.5.1" id="QQ2-10-34">Constructors</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse5.html#x10-290001.5.2" id="QQ2-10-35">Projection functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse6.html#x11-300001.6">The <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VError </span>class</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse6.html#x11-310001.6.1" id="QQ2-11-37">Constructors</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse6.html#x11-320001.6.2" id="QQ2-11-38">Projection functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse6.html#x11-330001.6.3" id="QQ2-11-39">Computing with <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VError</span></a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse6.html#x11-340001.6.4" id="QQ2-11-40">Convenience function</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualch2.html#x12-350002">VIPS for C programmers</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse7.html#x13-360002.1">Introduction</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-370002.2">Core C API</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-380002.2.1" id="QQ2-14-45">Startup</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-390002.2.2" id="QQ2-14-47">Image descriptors</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-400002.2.3" id="QQ2-14-49">Header fields</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-410002.2.4" id="QQ2-14-50">Opening and closing</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-420002.2.5" id="QQ2-14-51">Examples</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-430002.2.6" id="QQ2-14-54">Metadata</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-440002.2.7" id="QQ2-14-55">History</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-450002.2.8" id="QQ2-14-56">Eval callbacks</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-460002.2.9" id="QQ2-14-57">Detailed rules for descriptors</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-470002.2.10" id="QQ2-14-58">Automatic resource deallocation</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-510002.2.11" id="QQ2-14-63">Error handling</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse8.html#x14-520002.2.12" id="QQ2-14-64">Joining operations together</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse9.html#x15-590002.3">Function dispatch and plug-ins</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse9.html#x15-600002.3.1" id="QQ2-15-74">Simple plugin example</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse9.html#x15-610002.3.2" id="QQ2-15-76">A more complicated example</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse9.html#x15-620002.3.3" id="QQ2-15-77">Adding new types</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse9.html#x15-630002.3.4" id="QQ2-15-78">Using function dispatch in your application</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse10.html#x16-670002.4">The VIPS base class: <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">VipsObject</span></a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse10.html#x16-680002.4.1" id="QQ2-16-83">Properties</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse10.html#x16-730002.4.2" id="QQ2-16-88">Convenience functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse11.html#x17-740002.5">Image formats</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse11.html#x17-750002.5.1" id="QQ2-17-90">How a format is represented</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse11.html#x17-760002.5.2" id="QQ2-17-91">The format class</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse11.html#x17-770002.5.3" id="QQ2-17-93">Finding a format</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse11.html#x17-780002.5.4" id="QQ2-17-94">Convenience functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse12.html#x18-790002.6">Interpolators</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse12.html#x18-800002.6.1" id="QQ2-18-96">How an interpolator is represented</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse12.html#x18-810002.6.2" id="QQ2-18-97">A sample interpolator</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse12.html#x18-820002.6.3" id="QQ2-18-99">Writing a VIPS operation that takes an interpolator as an argument</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse12.html#x18-830002.6.4" id="QQ2-18-100">Passing an interpolator to a VIPS operation</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualch3.html#x19-840003">Writing VIPS operations</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse13.html#x20-850003.1">Introduction</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse13.html#x20-860003.1.1" id="QQ2-20-103">Why use VIPS?</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse13.html#x20-870003.1.2" id="QQ2-20-104">I/O styles</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse14.html#x21-880003.2">Programming WIO operations</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse14.html#x21-890003.2.1" id="QQ2-21-106">Input from an image</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse14.html#x21-900003.2.2" id="QQ2-21-108">Output to an image</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse14.html#x21-910003.2.3" id="QQ2-21-110">Polymorphism</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse15.html#x22-920003.3">Programming PIO functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse15.html#x22-930003.3.1" id="QQ2-22-114">Easy PIO with <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualli1.html:class="pcrr7t-">_wrapone() </span>and <span 
doc/html/vipsmanualli1.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualli1.html:class="pcrr7t-">_wrapmany()</span></a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse15.html#x22-940003.3.2" id="QQ2-22-115">Region descriptors</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse15.html#x22-950003.3.3" id="QQ2-22-116">Image input with regions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse15.html#x22-960003.3.4" id="QQ2-22-119">Splitting into sequences</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse15.html#x22-970003.3.5" id="QQ2-22-123">Output to regions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse15.html#x22-980003.3.6" id="QQ2-22-126">Callbacks</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse15.html#x22-1020003.3.7" id="QQ2-22-130">Memory allocation revisited</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse16.html#x23-1030003.4">Programming in-place functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualch4.html#x24-1040004">VIPS reference</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse17.html#x25-1050004.1">Introduction</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1060004.2">VIPS packages</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1070004.2.1" id="QQ2-26-136">Arithmetic</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1080004.2.2" id="QQ2-26-138">Relational</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1090004.2.3" id="QQ2-26-140">Boolean</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1100004.2.4" id="QQ2-26-142">Colour</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1110004.2.5" id="QQ2-26-145">Conversion</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1120004.2.6" id="QQ2-26-148">Matricies</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1130004.2.7" id="QQ2-26-150">Convolution</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1140004.2.8" id="QQ2-26-152">In-place operations</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1150004.2.9" id="QQ2-26-154">Frequency filtering</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1160004.2.10" id="QQ2-26-156">Histograms and LUTs</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1170004.2.11" id="QQ2-26-158">Morphology</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1180004.2.12" id="QQ2-26-160">Mosaicing</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1190004.2.13" id="QQ2-26-162">CImg functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1200004.2.14" id="QQ2-26-164">Other</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1210004.2.15" id="QQ2-26-166">IO functions</a></span>                           <br />    &#x00A0;&#x00A0;<span class="subsectionToc" >4.2.16 <a 
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1220004.2.16" id="QQ2-26-168">Format functions</a></span>
doc/html/vipsmanualli1.html:href="vipsmanualse18.html#x26-1230004.2.17" id="QQ2-26-170">Resample functions</a></span>
doc/html/vipsmanualli1.html:  <!--l. 49--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualli1.html:<!--l. 49--><p class="indent" >  <a 
doc/html/vipsmanualli2.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualli2.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualli2.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualli2.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualli2.html:<!-- 3,html --> 
doc/html/vipsmanualli2.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualli2.html:  <!--l. 49--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualli2.html:href="vipsmanualli1.html#tailvipsmanualli1.html" >prev-tail</a>] [<a 
doc/html/vipsmanualli2.html: id="x3-2000"></a>List of Figures</h2>
doc/html/vipsmanualli2.html:href="vipsmanualse1.html#x6-60011"><span 
doc/html/vipsmanualli2.html:class="pcrr7t-">invert </span>program in C++</a></span><br /><span class="lofToc" >1.2&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse1.html#x6-60022"><span 
doc/html/vipsmanualli2.html:class="pcrr7t-">invert </span>program in Python</a></span><br /><span class="lofToc" >2.1&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse7.html#x13-360011">VIPS software
doc/html/vipsmanualli2.html:href="vipsmanualse8.html#x14-380012">Hello World for VIPS</a></span><br /><span class="lofToc" >2.3&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse8.html#x14-390013">The <span 
doc/html/vipsmanualli2.html:class="pcrr7t-">IMAGE </span>descriptor</a></span><br /><span class="lofToc" >2.4&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse8.html#x14-420014">Print width and height of
doc/html/vipsmanualli2.html:href="vipsmanualse8.html#x14-420025">Find photographic negative</a></span><br /><span class="lofToc" >2.6&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse8.html#x14-480016">Sum an array of images</a></span><br /><span class="lofToc" >2.7&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse8.html#x14-520017">Two image-processing
doc/html/vipsmanualli2.html:href="vipsmanualse8.html#x14-560018">Threshold an image at the mean value</a></span><br /><span class="lofToc" >2.9&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse11.html#x17-760019">Registering a format
doc/html/vipsmanualli2.html:href="vipsmanualse12.html#x18-8100110">Registering an interpolator in a plugin</a></span><br /><span class="lofToc" >3.1&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse14.html#x21-890011">Find average of image</a></span><br /><span class="lofToc" >3.2&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse14.html#x21-900012">Invert an
doc/html/vipsmanualli2.html:href="vipsmanualse14.html#x21-910013">Calculate <span 
doc/html/vipsmanualli2.html:class="pcrr7t-">exp() </span>for an image</a></span><br /><span class="lofToc" >3.4&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse14.html#x21-910024">Calculate <span 
doc/html/vipsmanualli2.html:class="pcrr7t-">exp() </span>for an image (cont)</a></span><br /><span class="lofToc" >3.5&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse15.html#x22-950015">First PIO
doc/html/vipsmanualli2.html:href="vipsmanualse15.html#x22-950026">First PIO average of image (cont.)</a></span><br /><span class="lofToc" >3.7&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse15.html#x22-960017">Final PIO average of image</a></span><br /><span class="lofToc" >3.8&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse15.html#x22-960028">Final
doc/html/vipsmanualli2.html:href="vipsmanualse15.html#x22-960039">Final PIO average of image (cont.)</a></span><br /><span class="lofToc" >3.10&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse15.html#x22-9700110">PIO invert</a></span><br /><span class="lofToc" >3.11&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse15.html#x22-9700211">PIO
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-1070011">Arithmetic functions</a></span><br /><span class="lofToc" >4.2&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-1080012">Relational functions</a></span><br /><span class="lofToc" >4.3&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-1090013">Boolean functions</a></span><br /><span class="lofToc" >4.4&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-1100014">VIPS
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-1100025">Colour functions</a></span><br /><span class="lofToc" >4.6&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-1110016">Conversion functions</a></span><br /><span class="lofToc" >4.7&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-1110027">Conversion functions
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-1120018">Matrix functions</a></span><br /><span class="lofToc" >4.9&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-1130019">Convolution functions</a></span><br /><span class="lofToc" >4.10&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-11400110">In-place operations</a></span><br /><span class="lofToc" >4.11&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-11500111">Fourier
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-11600112">Histogram/LUT functions</a></span><br /><span class="lofToc" >4.13&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-11700113">Morphological functions</a></span><br /><span class="lofToc" >4.14&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-11800114">Mosaic
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-11900115">CImg functions</a></span><br /><span class="lofToc" >4.16&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-12000116">Other functions</a></span><br /><span class="lofToc" >4.17&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-12100117">IO functions</a></span><br /><span class="lofToc" >4.18&#x00A0;<a 
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-12200118">Format
doc/html/vipsmanualli2.html:href="vipsmanualse18.html#x26-12300119">Resample functions</a></span><br />
doc/html/vipsmanualli2.html:  <!--l. 53--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualli2.html:href="vipsmanualli1.html#tailvipsmanualli1.html" >prev-tail</a>] [<a 
doc/html/vipsmanualli2.html:<!--l. 53--><p class="indent" >  <a 
doc/html/vipsmanualse1.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse1.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse1.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse1.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse1.html:<!-- 3,html --> 
doc/html/vipsmanualse1.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse1.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse1.html: id="x6-50001.1"></a>Introduction</h3>
doc/html/vipsmanualse1.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:cpp"></a>
doc/html/vipsmanualse1.html:<!--l. 4--><p class="indent" >  This chapter describes the C++ API for the VIPS image
doc/html/vipsmanualse1.html:for you automatically.                             <!--l. 9--><p class="indent" >    The Python interface is a very simple wrapping of
doc/html/vipsmanualse1.html:  <!--l. 14--><p class="noindent" >
doc/html/vipsmanualse1.html: id="x6-60001.1.1"></a>If you&#8217;ve used the C API</h4>
doc/html/vipsmanualse1.html:  <!--l. 16--><p class="noindent" >To show how much easier the VIPS C++ API is to use,
doc/html/vipsmanualse1.html:href="vipsmanualse8.html#x14-420002.2.5">2.2.5<!--tex4ht:ref: fg:negative --></a> to Figure&#x00A0;<a 
doc/html/vipsmanualse1.html:href="#x6-60011">1.1<!--tex4ht:ref: fg:invert-c++ --></a>. Figure&#x00A0;<a 
doc/html/vipsmanualse1.html:href="#x6-60022">1.2<!--tex4ht:ref: fg:invert-py --></a> is the same
doc/html/vipsmanualse1.html:  <!--l. 19--><p class="indent" >    A typical build line for the C++ program might be:
doc/html/vipsmanualse1.html:  <div class="verbatim" id="verbatim-1">
doc/html/vipsmanualse1.html:&#x00A0;<br />&#x00A0;&#x00A0;&#8216;pkg-config&#x00A0;vipsCC-7.18&#x00A0;\
doc/html/vipsmanualse1.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;--cflags&#x00A0;--libs&#8216;
doc/html/vipsmanualse1.html:<!--l. 25--><p class="nopar" >
doc/html/vipsmanualse1.html:<!--l. 27--><p class="indent" >  The key points are:
doc/html/vipsmanualse1.html:    <li class="itemize">You just include <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">&#x003C;vips/vips&#x003E;</span></span></span> &#8212; this then gets
doc/html/vipsmanualse1.html:    the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">vips</span></span></span> namespace.
doc/html/vipsmanualse1.html:    <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">IMAGE</span></span></span> becomes <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span> and so on. The C++ API
doc/html/vipsmanualse1.html:    also includes <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VDisplay</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VError</span></span></span>.
doc/html/vipsmanualse1.html:    of                             the                             <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span>
doc/html/vipsmanualse1.html:    class  &#8212;  here,  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VImage(</span><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">&#x00A0;argv[1]</span><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">&#x00A0;)</span></span></span> creates  a
doc/html/vipsmanualse1.html:    new  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span> object  using  the  first  argument  to
doc/html/vipsmanualse1.html:    member  function  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">invert()</span></span></span>,  which  inverts  the
doc/html/vipsmanualse1.html:    <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span> and  returns  a  new  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VImage</span></span></span>.  Finally  it
doc/html/vipsmanualse1.html:    calls the member function <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">write()</span></span></span>, which writes
doc/html/vipsmanualse1.html:    <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse1.html:class="pcrr7t-">VError</span></span></span> class  is  covered  later.  If  you  run  this
doc/html/vipsmanualse1.html:                                                     <div class="verbatim" id="verbatim-2">
doc/html/vipsmanualse1.html:   <!--l. 57--><p class="nopar" >
doc/html/vipsmanualse1.html:<!--l. 62--><p class="indent" >  <a 
doc/html/vipsmanualse1.html: id="x6-60011"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse1.html:<div class="verbatim" id="verbatim-3">
doc/html/vipsmanualse1.html:<!--l. 88--><p class="nopar" >
doc/html/vipsmanualse1.html:class="pcrr7t-">invert </span>program in C++</span></div><!--tex4ht:label?: x6-60011 -->
doc/html/vipsmanualse1.html:<!--l. 94--><p class="indent" >  <a 
doc/html/vipsmanualse1.html: id="x6-60022"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse1.html:<div class="verbatim" id="verbatim-4">
doc/html/vipsmanualse1.html:<!--l. 105--><p class="nopar" >
doc/html/vipsmanualse1.html:class="pcrr7t-">invert </span>program in Python</span></div><!--tex4ht:label?: x6-60022 -->
doc/html/vipsmanualse1.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse1.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualse18.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse18.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse18.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse18.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse18.html:<!-- 3,html --> 
doc/html/vipsmanualse18.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse18.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse18.html:href="vipsmanualse17.html#tailvipsmanualse17.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse18.html: id="x26-1060004.2"></a>VIPS packages</h3>
doc/html/vipsmanualse18.html:<!--l. 2--><p class="noindent" ><a name="nip_label_sec:packages"></a>
doc/html/vipsmanualse18.html:<!--l. 4--><p class="noindent" >
doc/html/vipsmanualse18.html: id="x26-1070004.2.1"></a>Arithmetic</h4>
doc/html/vipsmanualse18.html:<!--l. 6--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-1070011">4.1<!--tex4ht:ref: fg:arithmetic --></a>.
doc/html/vipsmanualse18.html:<!--l. 8--><p class="indent" >  Arithmetic functions work on images as if each band
doc/html/vipsmanualse18.html:point-to-point &#8212; each output element depends exactly upon
doc/html/vipsmanualse18.html:<!--l. 14--><p class="indent" >  Arithmetic operations try to preserve precision by
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> images together, for example,
doc/html/vipsmanualse18.html:produces a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_USHORT</span></span></span> image, and taking the
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_costra()</span></span></span> of a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_USHORT</span></span></span> image
doc/html/vipsmanualse18.html:produces a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span> image. The details of
doc/html/vipsmanualse18.html:<!--l. 23--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-1070011"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-177">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;arithmetic
doc/html/vipsmanualse18.html:&#x00A0;<br />im_abs&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;absolute&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_acostra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;acos&#x00A0;of&#x00A0;image&#x00A0;(result&#x00A0;in&#x00A0;degrees)
doc/html/vipsmanualse18.html:&#x00A0;<br />im_add&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;add&#x00A0;two&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_asintra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;asin&#x00A0;of&#x00A0;image&#x00A0;(result&#x00A0;in&#x00A0;degrees)
doc/html/vipsmanualse18.html:&#x00A0;<br />im_atantra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;atan&#x00A0;of&#x00A0;image&#x00A0;(result&#x00A0;in&#x00A0;degrees)
doc/html/vipsmanualse18.html:&#x00A0;<br />im_avg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;average&#x00A0;value&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_point_bilinear&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;interpolate&#x00A0;value&#x00A0;at&#x00A0;single&#x00A0;point,&#x00A0;linearly
doc/html/vipsmanualse18.html:&#x00A0;<br />im_bandmean&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;average&#x00A0;image&#x00A0;bands
doc/html/vipsmanualse18.html:&#x00A0;<br />im_ceil&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;round&#x00A0;to&#x00A0;smallest&#x00A0;integal&#x00A0;value&#x00A0;not&#x00A0;less&#x00A0;than
doc/html/vipsmanualse18.html:&#x00A0;<br />im_cmulnorm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;multiply&#x00A0;two&#x00A0;complex&#x00A0;images,&#x00A0;normalising&#x00A0;output
doc/html/vipsmanualse18.html:&#x00A0;<br />im_costra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;cos&#x00A0;of&#x00A0;image&#x00A0;(angles&#x00A0;in&#x00A0;degrees)
doc/html/vipsmanualse18.html:&#x00A0;<br />im_cross_phase&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;phase&#x00A0;of&#x00A0;cross&#x00A0;power&#x00A0;spectrum&#x00A0;of&#x00A0;two&#x00A0;complex&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_deviate&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;standard&#x00A0;deviation&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_divide&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;divide&#x00A0;two&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_exp10tra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;10^pel&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_expntra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;x^pel&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_expntra_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;[x,y,z]^pel&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_exptra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;e^pel&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_fav4&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;average&#x00A0;of&#x00A0;4&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_floor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;round&#x00A0;to&#x00A0;largest&#x00A0;integal&#x00A0;value&#x00A0;not&#x00A0;greater&#x00A0;than
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gadd&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;a&#x22C6;in1&#x00A0;+&#x00A0;b&#x22C6;in2&#x00A0;+&#x00A0;c&#x00A0;=&#x00A0;outfile
doc/html/vipsmanualse18.html:&#x00A0;<br />im_invert&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;photographic&#x00A0;negative
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lintra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;a&#x22C6;in&#x00A0;+&#x00A0;b&#x00A0;=&#x00A0;outfile
doc/html/vipsmanualse18.html:&#x00A0;<br />im_linreg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;pixelwise&#x00A0;linear&#x00A0;regression
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lintra_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;a&#x22C6;in&#x00A0;+&#x00A0;b&#x00A0;-&#x003E;&#x00A0;out,&#x00A0;a&#x00A0;and&#x00A0;b&#x00A0;vectors
doc/html/vipsmanualse18.html:&#x00A0;<br />im_litecor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;max(white)&#x22C6;factor&#x22C6;(in/white),&#x00A0;if&#x00A0;clip&#x00A0;==&#x00A0;1
doc/html/vipsmanualse18.html:&#x00A0;<br />im_log10tra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;log10&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_logtra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;ln&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_max&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;maximum&#x00A0;value&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_maxpos&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;of&#x00A0;maximum&#x00A0;value&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_maxpos_avg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;of&#x00A0;maximum&#x00A0;value&#x00A0;of&#x00A0;image,&#x00A0;averaging&#x00A0;in&#x00A0;case&#x00A0;of&#x00A0;draw
doc/html/vipsmanualse18.html:&#x00A0;<br />im_maxpos_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;and&#x00A0;value&#x00A0;of&#x00A0;n&#x00A0;maxima&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_measure&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;measure&#x00A0;averages&#x00A0;of&#x00A0;a&#x00A0;grid&#x00A0;of&#x00A0;patches
doc/html/vipsmanualse18.html:&#x00A0;<br />im_min&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;minimum&#x00A0;value&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_minpos&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;of&#x00A0;minimum&#x00A0;value&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_minpos_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;position&#x00A0;and&#x00A0;value&#x00A0;of&#x00A0;n&#x00A0;minima&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_multiply&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;multiply&#x00A0;two&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_powtra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;pel^x&#x00A0;ofbuildimage
doc/html/vipsmanualse18.html:&#x00A0;<br />im_powtra_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;pel^[x,y,z]&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_remainder&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;remainder&#x00A0;after&#x00A0;integer&#x00A0;division
doc/html/vipsmanualse18.html:&#x00A0;<br />im_remainderconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;remainder&#x00A0;after&#x00A0;integer&#x00A0;division&#x00A0;by&#x00A0;a&#x00A0;constant
doc/html/vipsmanualse18.html:&#x00A0;<br />im_remainderconst_vec&#x00A0;-&#x00A0;remainder&#x00A0;after&#x00A0;integer&#x00A0;division&#x00A0;by&#x00A0;a&#x00A0;vector&#x00A0;of&#x00A0;constants
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rint&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;round&#x00A0;to&#x00A0;nearest&#x00A0;integal&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_sign&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;unit&#x00A0;vector&#x00A0;in&#x00A0;direction&#x00A0;of&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_sintra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;sin&#x00A0;of&#x00A0;image&#x00A0;(angles&#x00A0;in&#x00A0;degrees)&#x00A0;<br />im_stats&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;many&#x00A0;image&#x00A0;statistics&#x00A0;in&#x00A0;one&#x00A0;pass
doc/html/vipsmanualse18.html: &#x00A0;<br />im_subtract&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;subtract&#x00A0;two&#x00A0;images
doc/html/vipsmanualse18.html: &#x00A0;<br />im_tantra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;tan&#x00A0;of&#x00A0;image&#x00A0;(angles&#x00A0;in&#x00A0;degrees)
doc/html/vipsmanualse18.html:<!--l. 73--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Arithmetic functions</span></div><!--tex4ht:label?: x26-1070011 -->
doc/html/vipsmanualse18.html: id="x26-1080004.2.2"></a>Relational</h4>
doc/html/vipsmanualse18.html:<!--l. 80--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-1080012">4.2<!--tex4ht:ref: fg:relational --></a>.
doc/html/vipsmanualse18.html:<!--l. 82--><p class="indent" >  Relational functions compare images to other images or
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> image with the same number of
doc/html/vipsmanualse18.html:<!--l. 89--><p class="indent" >  They may be combined with the boolean functions to
doc/html/vipsmanualse18.html:form complex relational conditions. Use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_max()</span></span></span> (or
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_min()</span></span></span>) to find out if a condition is true (or false) for a
doc/html/vipsmanualse18.html:<!--l. 94--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-1080012"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-178">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;relational
doc/html/vipsmanualse18.html:&#x00A0;<br />im_blend&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;use&#x00A0;cond&#x00A0;image&#x00A0;to&#x00A0;blend&#x00A0;between&#x00A0;images&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/html/vipsmanualse18.html:&#x00A0;<br />im_equal&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;two&#x00A0;images&#x00A0;equal&#x00A0;in&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_equal_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;equals&#x00A0;doublevec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_equalconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;equals&#x00A0;const
doc/html/vipsmanualse18.html:&#x00A0;<br />im_ifthenelse&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;use&#x00A0;cond&#x00A0;image&#x00A0;to&#x00A0;choose&#x00A0;pels&#x00A0;from&#x00A0;image&#x00A0;in1&#x00A0;or&#x00A0;in2
doc/html/vipsmanualse18.html:&#x00A0;<br />im_less&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;less&#x00A0;than&#x00A0;in2&#x00A0;in&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_less_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;doublevec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lessconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;const
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lesseq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;less&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;in2&#x00A0;in&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lesseq_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;doublevec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lesseqconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;less&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;const
doc/html/vipsmanualse18.html:&#x00A0;<br />im_more&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;more&#x00A0;than&#x00A0;in2&#x00A0;in&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_more_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;doublevec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_moreconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;const
doc/html/vipsmanualse18.html:&#x00A0;<br />im_moreeq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in1&#x00A0;more&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;in2&#x00A0;in&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_moreeq_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;doublevec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_moreeqconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;in&#x00A0;more&#x00A0;than&#x00A0;or&#x00A0;equal&#x00A0;to&#x00A0;const
doc/html/vipsmanualse18.html:&#x00A0;<br />im_notequal&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;two&#x00A0;images&#x00A0;not&#x00A0;equal&#x00A0;in&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_notequal_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;does&#x00A0;not&#x00A0;equal&#x00A0;doublevec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_notequalconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;image&#x00A0;does&#x00A0;not&#x00A0;equal&#x00A0;const
doc/html/vipsmanualse18.html:<!--l. 116--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Relational functions</span></div><!--tex4ht:label?: x26-1080012 -->
doc/html/vipsmanualse18.html: id="x26-1090004.2.3"></a>Boolean</h4>
doc/html/vipsmanualse18.html:<!--l. 123--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-1090013">4.3<!--tex4ht:ref: fg:boolean --></a>.
doc/html/vipsmanualse18.html:<!--l. 125--><p class="indent" >  The boolean functions perform boolean arithmetic on
doc/html/vipsmanualse18.html:pairs of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> images. They are useful for
doc/html/vipsmanualse18.html:functions. You can use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_eorconst()</span></span></span> with 255 as
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_not()</span></span></span>.
doc/html/vipsmanualse18.html:<!--l. 131--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-1090013"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-179">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;boolean
doc/html/vipsmanualse18.html:&#x00A0;<br />im_andimage&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;and&#x00A0;of&#x00A0;two&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_andimageconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;and&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;constant
doc/html/vipsmanualse18.html:&#x00A0;<br />im_andimage_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;and&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;vector&#x00A0;constant
doc/html/vipsmanualse18.html:&#x00A0;<br />im_orimage&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;or&#x00A0;of&#x00A0;two&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_orimageconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;or&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;constant
doc/html/vipsmanualse18.html:&#x00A0;<br />im_orimage_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;or&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;vector&#x00A0;constant
doc/html/vipsmanualse18.html:&#x00A0;<br />im_eorimage&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;eor&#x00A0;of&#x00A0;two&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_eorimageconst&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;eor&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;constant
doc/html/vipsmanualse18.html:&#x00A0;<br />im_eorimage_vec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bitwise&#x00A0;eor&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;with&#x00A0;a&#x00A0;vector&#x00A0;constant
doc/html/vipsmanualse18.html:&#x00A0;<br />im_shiftleft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shift&#x00A0;integer&#x00A0;image&#x00A0;n&#x00A0;bits&#x00A0;to&#x00A0;left
doc/html/vipsmanualse18.html:&#x00A0;<br />im_shiftright&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shift&#x00A0;integer&#x00A0;image&#x00A0;n&#x00A0;bits&#x00A0;to&#x00A0;right
doc/html/vipsmanualse18.html:<!--l. 144--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Boolean functions</span></div><!--tex4ht:label?: x26-1090013 -->
doc/html/vipsmanualse18.html: id="x26-1100004.2.4"></a>Colour</h4>
doc/html/vipsmanualse18.html:<!--l. 152--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-1100025">4.5<!--tex4ht:ref: fg:colour --></a>.
doc/html/vipsmanualse18.html:<!--l. 154--><p class="indent" >  The colour functions can be divided into two main types.
doc/html/vipsmanualse18.html:colour spaces supported by VIPS: <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">RGB</span></span></span> (also referred to as
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">disp</span></span></span>), <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">sRGB</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">XYZ</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">Yxy</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">LabQ</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">LabS</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">LCh</span></span></span> and
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">UCS</span></span></span>), and second, functions for calculating colour
doc/html/vipsmanualse18.html:href="#x26-1100014">4.4<!--tex4ht:ref: fg:convert --></a> shows how the VIPS colour
doc/html/vipsmanualse18.html:<!--l. 163--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-1100014"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<!--l. 163--><p class="noindent" >
doc/html/vipsmanualse18.html:<!--l. 163--><p class="noindent" ><img 
doc/html/vipsmanualse18.html:class="content">VIPS colour space conversion</span></div><!--tex4ht:label?: x26-1100014 -->
doc/html/vipsmanualse18.html:<!--l. 168--><p class="indent" >  The colour spaces supported by VIPS are:
doc/html/vipsmanualse18.html:class="pcrb7t-">LabQ</span> </dt><dd 
doc/html/vipsmanualse18.html:    format. See the man page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_LabQ2Lab()</span></span></span>
doc/html/vipsmanualse18.html:    calculations on <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">LabQ</span></span></span> images. They are for storage
doc/html/vipsmanualse18.html:    only. Also refered to as <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">LABPACK</span></span></span>.
doc/html/vipsmanualse18.html:class="pcrb7t-">LabS</span> </dt><dd 
doc/html/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/html/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span> space as a
doc/html/vipsmanualse18.html:    three- band <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_SHORT</span></span></span> image, scaled
doc/html/vipsmanualse18.html:class="pcrb7t-">Lab</span> </dt><dd 
doc/html/vipsmanualse18.html:class="description"><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span> colourspace  represents  <span 
doc/html/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/html/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span> colour
doc/html/vipsmanualse18.html:    values  with  a  three-band  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span>
doc/html/vipsmanualse18.html:class="pcrb7t-">XYZ</span> </dt><dd 
doc/html/vipsmanualse18.html:class="ptmri7t-">CIE XYZ </span>colour space represented as a three-band
doc/html/vipsmanualse18.html:    <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span> image.
doc/html/vipsmanualse18.html:class="pcrb7t-">XYZ</span> </dt><dd 
doc/html/vipsmanualse18.html:class="ptmri7t-">CIE Yxy </span>colour space represented as a three-band
doc/html/vipsmanualse18.html:    <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_FLOAT</span></span></span> image.
doc/html/vipsmanualse18.html:class="pcrb7t-">RGB</span> </dt><dd 
doc/html/vipsmanualse18.html:class="description">(also   refered   to   as   <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">disp</span></span></span>)   This   format   is
doc/html/vipsmanualse18.html:    colorimetric  image  to  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">RGB</span></span></span>,  then  turn  it  to  TIFF
doc/html/vipsmanualse18.html:    with  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_vips2tiff()</span></span></span>.  You  need  to  supply  a
doc/html/vipsmanualse18.html:    manual page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_col_XYZ2rgb()</span></span></span> for hints
doc/html/vipsmanualse18.html:    <!--l. 205--><p class="noindent" >VIPS   also   supports   <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">sRGB</span></span></span>.   This   is   a   version
doc/html/vipsmanualse18.html:                                                     <div class="verbatim" id="verbatim-180">
doc/html/vipsmanualse18.html:   <!--l. 210--><p class="nopar" >
doc/html/vipsmanualse18.html:class="pcrb7t-">LCh</span> </dt><dd 
doc/html/vipsmanualse18.html:class="description">Like <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span>, but rectangular <span 
doc/html/vipsmanualse18.html:class="cmmi-10">ab </span>coordinates are replaced
doc/html/vipsmanualse18.html:class="cmmi-10">Ch </span>(Chroma and hue) coordinates. Hue
doc/html/vipsmanualse18.html:class="pcrb7t-">UCS</span> </dt><dd 
doc/html/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/html/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span> for
doc/html/vipsmanualse18.html:        <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">UCS</span></span></span> are extremely slow.
doc/html/vipsmanualse18.html:<!--l. 223--><p class="indent" >    All VIPS colourspaces assume a D65 illuminant.
doc/html/vipsmanualse18.html:<!--l. 225--><p class="indent" >    The colour-difference functions calculate either <span 
doc/html/vipsmanualse18.html:class="cmr-10">&#x0394;</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">E</span>
doc/html/vipsmanualse18.html:class="ptmri7t-">CIE</span><span 
doc/html/vipsmanualse18.html:class="ptmri7t-">&#x00A0;</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">L</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">a</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">b</span><span 
doc/html/vipsmanualse18.html:class="cmsy-7">*</span> (1976 or 2000) or <span 
doc/html/vipsmanualse18.html:class="cmr-10">&#x0394;</span><span 
doc/html/vipsmanualse18.html:class="cmmi-10">E </span>CMC(1:1) on two
doc/html/vipsmanualse18.html:images in <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">Lab</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">XYZ</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">disp</span></span></span> colour space.
doc/html/vipsmanualse18.html:<!--l. 230--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-1100025"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-181">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;colour
doc/html/vipsmanualse18.html:&#x00A0;<br />im_LCh2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LCh&#x00A0;to&#x00A0;Lab
doc/html/vipsmanualse18.html:&#x00A0;<br />im_LCh2UCS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LCh&#x00A0;to&#x00A0;UCS
doc/html/vipsmanualse18.html:&#x00A0;<br />im_Lab2LCh&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;LCh
doc/html/vipsmanualse18.html:&#x00A0;<br />im_Lab2LabQ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;LabQ
doc/html/vipsmanualse18.html:&#x00A0;<br />im_Lab2LabS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;LabS
doc/html/vipsmanualse18.html:&#x00A0;<br />im_Lab2UCS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;UCS
doc/html/vipsmanualse18.html:&#x00A0;<br />im_Lab2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;D65&#x00A0;Lab&#x00A0;to&#x00A0;XYZ
doc/html/vipsmanualse18.html:&#x00A0;<br />im_Lab2XYZ_temp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;XYZ,&#x00A0;with&#x00A0;a&#x00A0;specified&#x00A0;colour&#x00A0;temperature
doc/html/vipsmanualse18.html:&#x00A0;<br />im_Lab2disp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Lab&#x00A0;to&#x00A0;displayable
doc/html/vipsmanualse18.html:&#x00A0;<br />im_LabQ2LabS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;LabS
doc/html/vipsmanualse18.html:&#x00A0;<br />im_LabQ2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;Lab
doc/html/vipsmanualse18.html:&#x00A0;<br />im_LabQ2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;XYZ
doc/html/vipsmanualse18.html:&#x00A0;<br />im_LabQ2disp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabQ&#x00A0;to&#x00A0;displayable
doc/html/vipsmanualse18.html:&#x00A0;<br />im_LabS2LabQ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabS&#x00A0;to&#x00A0;LabQ
doc/html/vipsmanualse18.html:&#x00A0;<br />im_LabS2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LabS&#x00A0;to&#x00A0;Lab
doc/html/vipsmanualse18.html:&#x00A0;<br />im_UCS2LCh&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;UCS&#x00A0;to&#x00A0;LCh
doc/html/vipsmanualse18.html:&#x00A0;<br />im_UCS2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;UCS&#x00A0;to&#x00A0;Lab
doc/html/vipsmanualse18.html:&#x00A0;<br />im_UCS2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;UCS&#x00A0;to&#x00A0;XYZ
doc/html/vipsmanualse18.html:&#x00A0;<br />im_XYZ2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;D65&#x00A0;XYZ&#x00A0;to&#x00A0;Lab
doc/html/vipsmanualse18.html:&#x00A0;<br />im_XYZ2Lab_temp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;Lab,&#x00A0;with&#x00A0;a&#x00A0;specified&#x00A0;colour&#x00A0;temperature
doc/html/vipsmanualse18.html:&#x00A0;<br />im_XYZ2UCS&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;UCS
doc/html/vipsmanualse18.html:&#x00A0;<br />im_XYZ2Yxy&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;Yxy
doc/html/vipsmanualse18.html:&#x00A0;<br />im_XYZ2disp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;displayble
doc/html/vipsmanualse18.html:&#x00A0;<br />im_XYZ2sRGB&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;XYZ&#x00A0;to&#x00A0;sRGB
doc/html/vipsmanualse18.html:&#x00A0;<br />im_Yxy2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Yxy&#x00A0;to&#x00A0;XYZ
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dE00_fromLab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;CIE2000&#x00A0;for&#x00A0;two&#x00A0;Lab&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dECMC_fromLab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;CMC(1:1)&#x00A0;for&#x00A0;two&#x00A0;Lab&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dECMC_fromdisp&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;CMC(1:1)&#x00A0;for&#x00A0;two&#x00A0;displayable&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dE_fromLab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;for&#x00A0;two&#x00A0;Lab&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dE_fromXYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;for&#x00A0;two&#x00A0;XYZ&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dE_fromdisp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;calculate&#x00A0;delta-E&#x00A0;for&#x00A0;two&#x00A0;displayable&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_disp2Lab&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;displayable&#x00A0;to&#x00A0;Lab
doc/html/vipsmanualse18.html:&#x00A0;<br />im_disp2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;displayable&#x00A0;to&#x00A0;XYZ
doc/html/vipsmanualse18.html:&#x00A0;<br />im_float2rad&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;float&#x00A0;to&#x00A0;Radiance&#x00A0;packed
doc/html/vipsmanualse18.html:&#x00A0;<br />im_icc_ac2rc&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;LAB&#x00A0;from&#x00A0;AC&#x00A0;to&#x00A0;RC&#x00A0;using&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/html/vipsmanualse18.html:&#x00A0;<br />im_icc_export&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;float&#x00A0;LAB&#x00A0;to&#x00A0;an&#x00A0;8-bit&#x00A0;device&#x00A0;image&#x00A0;with&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/html/vipsmanualse18.html:&#x00A0;<br />im_icc_export_depth&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;float&#x00A0;LAB&#x00A0;to&#x00A0;device&#x00A0;space&#x00A0;with&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/html/vipsmanualse18.html:&#x00A0;<br />im_icc_import&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;device&#x00A0;image&#x00A0;to&#x00A0;float&#x00A0;LAB&#x00A0;with&#x00A0;an&#x00A0;ICC&#x00A0;profile
doc/html/vipsmanualse18.html:&#x00A0;<br />im_icc_import_embedded&#x00A0;-&#x00A0;convert&#x00A0;a&#x00A0;device&#x00A0;image&#x00A0;to&#x00A0;float&#x00A0;LAB&#x00A0;using&#x00A0;the&#x00A0;embedded&#x00A0;profile
doc/html/vipsmanualse18.html:&#x00A0;<br />im_icc_present&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;test&#x00A0;for&#x00A0;presence&#x00A0;of&#x00A0;ICC&#x00A0;library
doc/html/vipsmanualse18.html:&#x00A0;<br />im_icc_transform&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;between&#x00A0;two&#x00A0;device&#x00A0;images&#x00A0;with&#x00A0;a&#x00A0;pair&#x00A0;of&#x00A0;ICC&#x00A0;profiles
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lab_morph&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;morph&#x00A0;colourspace&#x00A0;of&#x00A0;a&#x00A0;LAB&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rad2float&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;Radiance&#x00A0;packed&#x00A0;to&#x00A0;float
doc/html/vipsmanualse18.html:&#x00A0;<br />im_sRGB2XYZ&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;sRGB&#x00A0;to&#x00A0;XYZ
doc/html/vipsmanualse18.html:</div>                                            <!--l. 276--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Colour functions</span></div><!--tex4ht:label?: x26-1100025 -->
doc/html/vipsmanualse18.html: id="x26-1110004.2.5"></a>Conversion</h4>
doc/html/vipsmanualse18.html:<!--l. 283--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-1110016">4.6<!--tex4ht:ref: fg:conversion --></a>.
doc/html/vipsmanualse18.html:<!--l. 285--><p class="indent" >  These functions may be split into three broad groups:
doc/html/vipsmanualse18.html:(<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_clip2fmt()</span></span></span>, for example, converts an image of
doc/html/vipsmanualse18.html:any type to the specified <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT</span></span></span>), functions
doc/html/vipsmanualse18.html:supporting complex arithmetic (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_c2amph()</span></span></span>, for
doc/html/vipsmanualse18.html:simple geometric conversion (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_extract()</span></span></span> forms a
doc/html/vipsmanualse18.html:sub-image).
doc/html/vipsmanualse18.html:<!--l. 293--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">gbandjoin</span></span></span> and the C function <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_gbandjoin()</span></span></span>
doc/html/vipsmanualse18.html:<!--l. 297--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-1110016"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-182">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;conversion
doc/html/vipsmanualse18.html:&#x00A0;<br />im_bandjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bandwise&#x00A0;join&#x00A0;of&#x00A0;two&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_bernd&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;from&#x00A0;pyramid&#x00A0;as&#x00A0;jpeg
doc/html/vipsmanualse18.html:&#x00A0;<br />im_black&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;black&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_c2amph&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;real&#x00A0;and&#x00A0;imaginary&#x00A0;to&#x00A0;phase&#x00A0;and&#x00A0;amplitude
doc/html/vipsmanualse18.html:&#x00A0;<br />im_c2imag&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;imaginary&#x00A0;part&#x00A0;of&#x00A0;complex&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_c2ps&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;power&#x00A0;spectrum&#x00A0;of&#x00A0;complex&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_c2real&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;real&#x00A0;part&#x00A0;of&#x00A0;complex&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_c2rect&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;phase&#x00A0;and&#x00A0;amplitude&#x00A0;to&#x00A0;real&#x00A0;and&#x00A0;imaginary
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2c&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;signed&#x00A0;8-bit&#x00A0;integer
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2cm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;complex
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2d&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;double-precision&#x00A0;float
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2dcm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;double&#x00A0;complex
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2f&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;single-precision&#x00A0;float
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2fmt&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;image&#x00A0;format&#x00A0;to&#x00A0;ofmt
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2i&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;signed&#x00A0;32-bit&#x00A0;integer
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2s&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;signed&#x00A0;16-bit&#x00A0;integer
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2ui&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;unsigned&#x00A0;32-bit&#x00A0;integer
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip2us&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;unsigned&#x00A0;16-bit&#x00A0;integer
doc/html/vipsmanualse18.html:&#x00A0;<br />im_clip&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;unsigned&#x00A0;8-bit&#x00A0;integer
doc/html/vipsmanualse18.html:&#x00A0;<br />im_copy&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_copy_morph&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;setting&#x00A0;pixel&#x00A0;layout
doc/html/vipsmanualse18.html:&#x00A0;<br />im_copy_swap&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;swapping&#x00A0;byte&#x00A0;order
doc/html/vipsmanualse18.html:&#x00A0;<br />im_copy_set&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;setting&#x00A0;informational&#x00A0;fields
doc/html/vipsmanualse18.html:&#x00A0;<br />im_copy_set_meta&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;copy&#x00A0;image,&#x00A0;setting&#x00A0;a&#x00A0;meta&#x00A0;field
doc/html/vipsmanualse18.html:&#x00A0;<br />im_extract_area&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;area
doc/html/vipsmanualse18.html:&#x00A0;<br />im_extract_areabands&#x00A0;-&#x00A0;extract&#x00A0;area&#x00A0;and&#x00A0;bands
doc/html/vipsmanualse18.html:&#x00A0;<br />im_extract_band&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;band
doc/html/vipsmanualse18.html:&#x00A0;<br />im_extract_bands&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;several&#x00A0;bands
doc/html/vipsmanualse18.html:&#x00A0;<br />im_extract&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;area/band
doc/html/vipsmanualse18.html:&#x00A0;<br />im_falsecolour&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;turn&#x00A0;luminance&#x00A0;changes&#x00A0;into&#x00A0;chrominance&#x00A0;changes
doc/html/vipsmanualse18.html:&#x00A0;<br />im_fliphor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;flip&#x00A0;image&#x00A0;left-right
doc/html/vipsmanualse18.html:&#x00A0;<br />im_flipver&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;flip&#x00A0;image&#x00A0;top-bottom
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gbandjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;bandwise&#x00A0;join&#x00A0;of&#x00A0;many&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_grid&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;chop&#x00A0;a&#x00A0;tall&#x00A0;thin&#x00A0;image&#x00A0;into&#x00A0;a&#x00A0;grid&#x00A0;of&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_insert&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;insert&#x00A0;sub-image&#x00A0;into&#x00A0;main&#x00A0;image&#x00A0;at&#x00A0;position
doc/html/vipsmanualse18.html:&#x00A0;<br />im_insert_noexpand&#x00A0;&#x00A0;&#x00A0;-&#x00A0;insert&#x00A0;sub-image&#x00A0;into&#x00A0;main&#x00A0;image&#x00A0;at&#x00A0;position,&#x00A0;no&#x00A0;expansion
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lrjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;join&#x00A0;two&#x00A0;images&#x00A0;left-right
doc/html/vipsmanualse18.html:&#x00A0;<br />im_mask2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;DOUBLEMASK&#x00A0;to&#x00A0;VIPS&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_msb&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;uchar&#x00A0;by&#x00A0;discarding&#x00A0;bits
doc/html/vipsmanualse18.html:&#x00A0;<br />im_msb_band&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;single&#x00A0;band&#x00A0;uchar&#x00A0;by&#x00A0;discarding&#x00A0;bits
doc/html/vipsmanualse18.html:&#x00A0;<br />im_print&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;print&#x00A0;string&#x00A0;to&#x00A0;stdout
doc/html/vipsmanualse18.html:&#x00A0;<br />im_recomb&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;linear&#x00A0;recombination&#x00A0;with&#x00A0;mask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_replicate&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;replicate&#x00A0;an&#x00A0;image&#x00A0;horizontally&#x00A0;and&#x00A0;vertically
doc/html/vipsmanualse18.html:&#x00A0;<br />im_ri2c&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;join&#x00A0;two&#x00A0;non-complex&#x00A0;images&#x00A0;to&#x00A0;form&#x00A0;complex
doc/html/vipsmanualse18.html:</div>                                            <!--l. 343--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Conversion functions</span></div><!--tex4ht:label?: x26-1110016 -->
doc/html/vipsmanualse18.html:<!--l. 349--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-1110027"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-183">
doc/html/vipsmanualse18.html:im_rot180&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;180&#x00A0;degrees
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rot270&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;270&#x00A0;degrees&#x00A0;clockwise
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rot90&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;90&#x00A0;degrees&#x00A0;clockwise
doc/html/vipsmanualse18.html:&#x00A0;<br />im_scale&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;scale&#x00A0;image&#x00A0;linearly&#x00A0;to&#x00A0;fit&#x00A0;range&#x00A0;0-255
doc/html/vipsmanualse18.html:&#x00A0;<br />im_scaleps&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;logarithmic&#x00A0;scale&#x00A0;of&#x00A0;image&#x00A0;to&#x00A0;fit&#x00A0;range&#x00A0;0-255
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rightshift_size&#x00A0;&#x00A0;&#x00A0;-&#x00A0;decrease&#x00A0;size&#x00A0;by&#x00A0;a&#x00A0;power-of-two&#x00A0;factor
doc/html/vipsmanualse18.html:&#x00A0;<br />im_slice&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;slice&#x00A0;an&#x00A0;image&#x00A0;using&#x00A0;two&#x00A0;thresholds
doc/html/vipsmanualse18.html:&#x00A0;<br />im_subsample&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;subsample&#x00A0;image&#x00A0;by&#x00A0;integer&#x00A0;factors
doc/html/vipsmanualse18.html:&#x00A0;<br />im_system&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;run&#x00A0;command&#x00A0;on&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tbjoin&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;join&#x00A0;two&#x00A0;images&#x00A0;top-bottom
doc/html/vipsmanualse18.html:&#x00A0;<br />im_text&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;text&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_thresh&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;slice&#x00A0;an&#x00A0;image&#x00A0;at&#x00A0;a&#x00A0;threshold
doc/html/vipsmanualse18.html:&#x00A0;<br />im_vips2mask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;VIPS&#x00A0;image&#x00A0;to&#x00A0;DOUBLEMASK
doc/html/vipsmanualse18.html:&#x00A0;<br />im_wrap&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shift&#x00A0;image&#x00A0;origin,&#x00A0;wrapping&#x00A0;at&#x00A0;sides
doc/html/vipsmanualse18.html:&#x00A0;<br />im_zoom&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;simple&#x00A0;zoom&#x00A0;of&#x00A0;an&#x00A0;image&#x00A0;by&#x00A0;integer&#x00A0;factors
doc/html/vipsmanualse18.html:<!--l. 365--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Conversion functions (cont.)</span></div><!--tex4ht:label?: x26-1110027 -->
doc/html/vipsmanualse18.html: id="x26-1120004.2.6"></a>Matricies</h4>
doc/html/vipsmanualse18.html:<!--l. 371--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-1120018">4.8<!--tex4ht:ref: fg:matricies --></a>.
doc/html/vipsmanualse18.html:<!--l. 373--><p class="indent" >  VIPS uses matricies for morphological operations, for
doc/html/vipsmanualse18.html:convolutions, and for some colour-space conversions. There
doc/html/vipsmanualse18.html:are two types of matrix: integer (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">INTMASK</span></span></span>) and double
doc/html/vipsmanualse18.html:precision floating point (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span>).
doc/html/vipsmanualse18.html:<!--l. 377--><p class="indent" >  For convenience, both types are stored in files as ASCII.
doc/html/vipsmanualse18.html:non-integer values in convolution masks &#8212; in other
doc/html/vipsmanualse18.html:  <center class="par-math-display" >
doc/html/vipsmanualse18.html:result =-scale + of fset
doc/html/vipsmanualse18.html:" class="par-math-display" ></center>
doc/html/vipsmanualse18.html:<!--l. 387--><p class="nopar" >
doc/html/vipsmanualse18.html:<!--l. 389--><p class="indent" >  If the scale and offset are missing, they default to 1.0 and
doc/html/vipsmanualse18.html:                                                 <div class="verbatim" id="verbatim-184">
doc/html/vipsmanualse18.html:<!--l. 399--><p class="nopar" >
doc/html/vipsmanualse18.html:<!--l. 401--><p class="indent" >  And a 3 by 3 mask for block averaging with convolution
doc/html/vipsmanualse18.html:  <div class="verbatim" id="verbatim-185">
doc/html/vipsmanualse18.html:<!--l. 408--><p class="nopar" >
doc/html/vipsmanualse18.html:<!--l. 410--><p class="noindent" >(in other words, sum all the pels in every 3 by 3 area, and
doc/html/vipsmanualse18.html:<!--l. 413--><p class="indent" >  This matrix contains only integer elements and so could
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">INTMASK</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span> matricies. However, masks
doc/html/vipsmanualse18.html:containing floating-point values (such as the output of
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_matinv()</span></span></span>) can only be used as arguments to
doc/html/vipsmanualse18.html:functions expecting <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span>s.
doc/html/vipsmanualse18.html:<!--l. 419--><p class="indent" >  A set of functions for mask input and output are also
doc/html/vipsmanualse18.html:available for C-programmers &#8212; see the manual pages for
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_read_dmask()</span></span></span>. For other matrix functions,
doc/html/vipsmanualse18.html:<!--l. 425--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-1120018"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-186">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;matrix
doc/html/vipsmanualse18.html:&#x00A0;<br />im_matcat&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;append&#x00A0;matrix&#x00A0;in2&#x00A0;to&#x00A0;the&#x00A0;end&#x00A0;of&#x00A0;matrix&#x00A0;in1
doc/html/vipsmanualse18.html:&#x00A0;<br />im_matinv&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;invert&#x00A0;matrix
doc/html/vipsmanualse18.html:&#x00A0;<br />im_matmul&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;multiply&#x00A0;matrix&#x00A0;in1&#x00A0;by&#x00A0;matrix&#x00A0;in2
doc/html/vipsmanualse18.html:&#x00A0;<br />im_mattrn&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;transpose&#x00A0;matrix
doc/html/vipsmanualse18.html:<!--l. 431--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Matrix functions</span></div><!--tex4ht:label?: x26-1120018 -->
doc/html/vipsmanualse18.html: id="x26-1130004.2.7"></a>Convolution</h4>
doc/html/vipsmanualse18.html:<!--l. 438--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-1130019">4.9<!--tex4ht:ref: fg:convolution --></a>.
doc/html/vipsmanualse18.html:<!--l. 440--><p class="indent" >  The functions available in the convolution package can be
doc/html/vipsmanualse18.html:<!--l. 443--><p class="indent" >  First, are the convolution functions. The most useful
doc/html/vipsmanualse18.html:function is <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_conv()</span></span></span> which will convolve any
doc/html/vipsmanualse18.html:non-complex type with an <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">INTMASK</span></span></span> matrix. The output
doc/html/vipsmanualse18.html:the input image. Of the other <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_conv()</span></span></span> functions,
doc/html/vipsmanualse18.html:functions whose name ends in <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">_raw</span></span></span> do not add a black
doc/html/vipsmanualse18.html:border around the output image, functions ending in <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">f</span></span></span> use
doc/html/vipsmanualse18.html:a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">DOUBLEMASK</span></span></span> matrix and write float (or double)
doc/html/vipsmanualse18.html:output, and functions containing <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">sep</span></span></span> are for seperable
doc/html/vipsmanualse18.html:convolutions. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_compass()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_lindetect()</span></span></span>
doc/html/vipsmanualse18.html:and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_gradient()</span></span></span> convolve with rotating masks.
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_embed()</span></span></span> is used by the convolution functions to add
doc/html/vipsmanualse18.html:<!--l. 454--><p class="indent" >  Next, are the build functions. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_gauss_&#x22C6;mask()</span></span></span> and
doc/html/vipsmanualse18.html:its ilk generate gaussian masks, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_log_&#x22C6;mask()</span></span></span>
doc/html/vipsmanualse18.html:generate logs of Laplacians. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_addgnoise()</span></span></span> and
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_gaussnoise()</span></span></span> create or add gaussian noise to an
doc/html/vipsmanualse18.html:<!--l. 459--><p class="indent" >  Two functions do correlation: <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_fastcor()</span></span></span> does a
doc/html/vipsmanualse18.html:quick and dirty correlation, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_spcor()</span></span></span> calculates true
doc/html/vipsmanualse18.html:<!--l. 463--><p class="indent" >  Some functions are provided for analysing images:
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_zerox()</span></span></span> counts zero-crossing points in an image,
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_mpercent()</span></span></span> finds a threshold that will isolate a
doc/html/vipsmanualse18.html:<!--l. 467--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_resize_linear()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_shrink()</span></span></span>
doc/html/vipsmanualse18.html:<!--l. 471--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-1130019"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-187">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;convolution
doc/html/vipsmanualse18.html:&#x00A0;<br />im_addgnoise&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;add&#x00A0;gaussian&#x00A0;noise&#x00A0;with&#x00A0;mean&#x00A0;0&#x00A0;and&#x00A0;std.&#x00A0;dev.&#x00A0;sigma
doc/html/vipsmanualse18.html:&#x00A0;<br />im_compass&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;with&#x00A0;8-way&#x00A0;rotating&#x00A0;integer&#x00A0;mask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_contrast_surface&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;high-contrast&#x00A0;points&#x00A0;in&#x00A0;an&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_contrast_surface_raw&#x00A0;-&#x00A0;find&#x00A0;high-contrast&#x00A0;points&#x00A0;in&#x00A0;an&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_conv&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve
doc/html/vipsmanualse18.html:&#x00A0;<br />im_conv_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve,&#x00A0;no&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_convf&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve,&#x00A0;with&#x00A0;DOUBLEMASK
doc/html/vipsmanualse18.html:&#x00A0;<br />im_convf_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve,&#x00A0;with&#x00A0;DOUBLEMASK,&#x00A0;no&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_convsep&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution
doc/html/vipsmanualse18.html:&#x00A0;<br />im_convsep_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution,&#x00A0;no&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_convsepf&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution,&#x00A0;with&#x00A0;DOUBLEMASK
doc/html/vipsmanualse18.html:&#x00A0;<br />im_convsepf_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;seperable&#x00A0;convolution,&#x00A0;with&#x00A0;DOUBLEMASK,&#x00A0;no&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_convsub&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;uchar&#x00A0;to&#x00A0;uchar,&#x00A0;sub-sampling&#x00A0;by&#x00A0;xskip,&#x00A0;yskip
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dmask_xsize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;horizontal&#x00A0;size&#x00A0;of&#x00A0;a&#x00A0;doublemask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dmask_ysize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;vertical&#x00A0;size&#x00A0;of&#x00A0;a&#x00A0;doublemask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_embed&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;embed&#x00A0;in&#x00A0;within&#x00A0;a&#x00A0;set&#x00A0;of&#x00A0;borders
doc/html/vipsmanualse18.html:&#x00A0;<br />im_fastcor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;fast&#x00A0;correlate&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/html/vipsmanualse18.html:&#x00A0;<br />im_fastcor_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;fast&#x00A0;correlate&#x00A0;in2&#x00A0;within&#x00A0;in1,&#x00A0;no&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gauss_dmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;gaussian&#x00A0;DOUBLEMASK
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gauss_imask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;gaussian&#x00A0;INTMASK
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gauss_imask_sep&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;separable&#x00A0;gaussian&#x00A0;INTMASK
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gaussnoise&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;image&#x00A0;of&#x00A0;gaussian&#x00A0;noise&#x00A0;with&#x00A0;specified&#x00A0;statistics
doc/html/vipsmanualse18.html:&#x00A0;<br />im_grad_x&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;horizontal&#x00A0;difference&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_grad_y&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;vertical&#x00A0;difference&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gradcor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;non-normalised&#x00A0;correlation&#x00A0;of&#x00A0;gradient&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gradcor_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;non-normalised&#x00A0;correlation&#x00A0;of&#x00A0;gradient&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1,&#x00A0;no&#x00A0;padding
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gradient&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;with&#x00A0;2-way&#x00A0;rotating&#x00A0;mask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_imask_xsize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;horizontal&#x00A0;size&#x00A0;of&#x00A0;an&#x00A0;intmask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_imask_ysize&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;vertical&#x00A0;size&#x00A0;of&#x00A0;an&#x00A0;intmask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rank_image&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;point-wise&#x00A0;pixel&#x00A0;rank
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lindetect&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convolve&#x00A0;with&#x00A0;4-way&#x00A0;rotating&#x00A0;mask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_log_dmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;laplacian&#x00A0;of&#x00A0;gaussian&#x00A0;DOUBLEMASK
doc/html/vipsmanualse18.html:&#x00A0;<br />im_log_imask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;laplacian&#x00A0;of&#x00A0;gaussian&#x00A0;INTMASK
doc/html/vipsmanualse18.html:&#x00A0;<br />im_maxvalue&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;point-wise&#x00A0;maximum&#x00A0;value
doc/html/vipsmanualse18.html:&#x00A0;<br />im_mpercent&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;threshold&#x00A0;above&#x00A0;which&#x00A0;there&#x00A0;are&#x00A0;percent&#x00A0;values
doc/html/vipsmanualse18.html:&#x00A0;<br />im_phasecor_fft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;non-normalised&#x00A0;correlation&#x00A0;of&#x00A0;gradient&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rank&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rank&#x00A0;filter&#x00A0;nth&#x00A0;element&#x00A0;of&#x00A0;xsize/ysize&#x00A0;window
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rank_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rank&#x00A0;filter&#x00A0;nth&#x00A0;element&#x00A0;of&#x00A0;xsize/ysize&#x00A0;window,&#x00A0;no&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_read_dmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;matrix&#x00A0;of&#x00A0;double&#x00A0;from&#x00A0;file
doc/html/vipsmanualse18.html:&#x00A0;<br />im_resize_linear&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;resize&#x00A0;to&#x00A0;X&#x00A0;by&#x00A0;Y&#x00A0;pixels&#x00A0;with&#x00A0;linear&#x00A0;interpolation
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rotate_dmask45&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;DOUBLEMASK&#x00A0;clockwise&#x00A0;by&#x00A0;45&#x00A0;degrees
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rotate_dmask90&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;DOUBLEMASK&#x00A0;clockwise&#x00A0;by&#x00A0;90&#x00A0;degrees
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rotate_imask45&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;INTMASK&#x00A0;clockwise&#x00A0;by&#x00A0;45&#x00A0;degrees
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rotate_imask90&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;INTMASK&#x00A0;clockwise&#x00A0;by&#x00A0;90&#x00A0;degrees
doc/html/vipsmanualse18.html:&#x00A0;<br />im_sharpen&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;sharpen&#x00A0;high&#x00A0;frequencies&#x00A0;of&#x00A0;L&#x00A0;channel&#x00A0;of&#x00A0;LabQ&#x00A0;<br />im_shrink&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;shrink&#x00A0;image&#x00A0;by&#x00A0;xfac,&#x00A0;yfac&#x00A0;times
doc/html/vipsmanualse18.html: &#x00A0;<br />im_spcor&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;normalised&#x00A0;correlation&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1
doc/html/vipsmanualse18.html: &#x00A0;<br />im_spcor_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;normalised&#x00A0;correlation&#x00A0;of&#x00A0;in2&#x00A0;within&#x00A0;in1,&#x00A0;no&#x00A0;black&#x00A0;padding
doc/html/vipsmanualse18.html: &#x00A0;<br />im_stretch3&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;stretch&#x00A0;3%,&#x00A0;sub-pixel&#x00A0;displace&#x00A0;by&#x00A0;xdisp/ydisp
doc/html/vipsmanualse18.html: &#x00A0;<br />im_zerox&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;+ve&#x00A0;or&#x00A0;-ve&#x00A0;zero&#x00A0;crossings&#x00A0;in&#x00A0;image
doc/html/vipsmanualse18.html:<!--l. 523--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Convolution functions</span></div><!--tex4ht:label?: x26-1130019 -->
doc/html/vipsmanualse18.html: id="x26-1140004.2.8"></a>In-place operations</h4>
doc/html/vipsmanualse18.html:<!--l. 531--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-11400110">4.10<!--tex4ht:ref: fg:inplace --></a>.
doc/html/vipsmanualse18.html:<!--l. 533--><p class="indent" >  A few of the in-place operations are available from the
doc/html/vipsmanualse18.html:command-line. Most are not.
doc/html/vipsmanualse18.html:<!--l. 537--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-11400110"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-188">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;inplace
doc/html/vipsmanualse18.html:&#x00A0;<br />im_circle&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;plot&#x00A0;circle&#x00A0;on&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_flood_blob_copy&#x00A0;-&#x00A0;flood&#x00A0;while&#x00A0;pixel&#x00A0;==&#x00A0;start&#x00A0;pixel
doc/html/vipsmanualse18.html:&#x00A0;<br />im_insertplace&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;draw&#x00A0;image&#x00A0;sub&#x00A0;inside&#x00A0;image&#x00A0;main&#x00A0;at&#x00A0;position&#x00A0;(x,y)
doc/html/vipsmanualse18.html:&#x00A0;<br />im_line&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;draw&#x00A0;line&#x00A0;between&#x00A0;points&#x00A0;(x1,y1)&#x00A0;and&#x00A0;(x2,y2)
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lineset&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;draw&#x00A0;line&#x00A0;between&#x00A0;points&#x00A0;(x1,y1)&#x00A0;and&#x00A0;(x2,y2)
doc/html/vipsmanualse18.html:<!--l. 544--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">In-place operations</span></div><!--tex4ht:label?: x26-11400110 -->
doc/html/vipsmanualse18.html: id="x26-1150004.2.9"></a>Frequency filtering</h4>
doc/html/vipsmanualse18.html:<!--l. 551--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-11500111">4.11<!--tex4ht:ref: fg:freq --></a>.
doc/html/vipsmanualse18.html:<!--l. 553--><p class="indent" >  The basic Fourier functions are <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_fwfft()</span></span></span> and
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_invfft()</span></span></span>, which calculate the fast-fourier transform
doc/html/vipsmanualse18.html:and inverse transform of an image. Also <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_invfftr()</span></span></span>,
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_rotquad()</span></span></span> to move the origin to the centre of the
doc/html/vipsmanualse18.html:<!--l. 561--><p class="indent" >  Once an image is in the frequency domain, it can be
doc/html/vipsmanualse18.html:mask generator is <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_create_fmask()</span></span></span> see the manual
doc/html/vipsmanualse18.html:<!--l. 567--><p class="indent" >  The other functions in the package build on these base
doc/html/vipsmanualse18.html:facilities. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_freqflt()</span></span></span> transforms an input image
doc/html/vipsmanualse18.html:transforms it back again. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_flt_image_freq()</span></span></span> will
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_freqflt()</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_disp_ps()</span></span></span> will call the right
doc/html/vipsmanualse18.html:<!--l. 576--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-11500111"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-189">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;freq_filt
doc/html/vipsmanualse18.html:&#x00A0;<br />im_create_fmask&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;create&#x00A0;frequency&#x00A0;domain&#x00A0;filter&#x00A0;mask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_disp_ps&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;make&#x00A0;displayable&#x00A0;power&#x00A0;spectrum
doc/html/vipsmanualse18.html:&#x00A0;<br />im_flt_image_freq&#x00A0;&#x00A0;-&#x00A0;frequency&#x00A0;domain&#x00A0;filter&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_fractsurf&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;a&#x00A0;fractal&#x00A0;surface&#x00A0;of&#x00A0;given&#x00A0;dimension
doc/html/vipsmanualse18.html:&#x00A0;<br />im_freqflt&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;frequency-domain&#x00A0;filter&#x00A0;of&#x00A0;in&#x00A0;with&#x00A0;mask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_fwfft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;forward&#x00A0;fast-fourier&#x00A0;transform
doc/html/vipsmanualse18.html:&#x00A0;<br />im_rotquad&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;rotate&#x00A0;image&#x00A0;quadrants&#x00A0;to&#x00A0;move&#x00A0;origin&#x00A0;to&#x00A0;centre
doc/html/vipsmanualse18.html:&#x00A0;<br />im_invfft&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;inverse&#x00A0;fast-fourier&#x00A0;transform
doc/html/vipsmanualse18.html:&#x00A0;<br />im_invfftr&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;real&#x00A0;part&#x00A0;of&#x00A0;inverse&#x00A0;fast-fourier&#x00A0;transform
doc/html/vipsmanualse18.html:<!--l. 587--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Fourier functions</span></div><!--tex4ht:label?: x26-11500111 -->
doc/html/vipsmanualse18.html: id="x26-1160004.2.10"></a>Histograms and LUTs</h4>
doc/html/vipsmanualse18.html:<!--l. 594--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-11600112">4.12<!--tex4ht:ref: fg:hist --></a>.
doc/html/vipsmanualse18.html:<!--l. 596--><p class="indent" >  VIPS represents histograms and look-up tables in the
doc/html/vipsmanualse18.html:<!--l. 598--><p class="indent" >  They should have either <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">Xsize</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">Ysize</span></span></span> set to 1, and
doc/html/vipsmanualse18.html:<!--l. 602--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_histgr()</span></span></span> to find the histogram of an
doc/html/vipsmanualse18.html:image. Use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_histnD()</span></span></span> to find the n-dimensional
doc/html/vipsmanualse18.html:histogram of an n-band image. Perform operations on
doc/html/vipsmanualse18.html:histograms with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_histcum()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_histnorm()</span></span></span>,
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_histspec()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_invertlut()</span></span></span>. Visualise
doc/html/vipsmanualse18.html:histograms with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_histplot()</span></span></span>. Use a histogram (or
doc/html/vipsmanualse18.html:LUT) to transform an image with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_maplut()</span></span></span>. Build a
doc/html/vipsmanualse18.html:histogram from scratch with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_identity()</span></span></span> or
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_identity_ushort()</span></span></span>.
doc/html/vipsmanualse18.html:<!--l. 610--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_lhist&#x22C6;()</span></span></span> for local histogram equalisation,
doc/html/vipsmanualse18.html:and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_stdif&#x22C6;()</span></span></span> for statisticaol differencing. The
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_tone_&#x22C6;()</span></span></span> functions are for operations on the L
doc/html/vipsmanualse18.html:<!--l. 616--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-11600112"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-190">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;histograms_lut
doc/html/vipsmanualse18.html:&#x00A0;<br />im_gammacorrect&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;gamma-correct&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_heq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;histogram-equalise&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_hist&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;and&#x00A0;graph&#x00A0;histogram&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_histcum&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;turn&#x00A0;histogram&#x00A0;to&#x00A0;cumulative&#x00A0;histogram
doc/html/vipsmanualse18.html:&#x00A0;<br />im_histeq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;form&#x00A0;histogram&#x00A0;equalistion&#x00A0;LUT
doc/html/vipsmanualse18.html:&#x00A0;<br />im_histgr&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;histogram&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_histnD&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;1D,&#x00A0;2D&#x00A0;or&#x00A0;3D&#x00A0;histogram&#x00A0;of&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_histnorm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;form&#x00A0;normalised&#x00A0;histogram
doc/html/vipsmanualse18.html:&#x00A0;<br />im_histplot&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;plot&#x00A0;graph&#x00A0;of&#x00A0;histogram
doc/html/vipsmanualse18.html:&#x00A0;<br />im_histspec&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;histogram&#x00A0;which&#x00A0;will&#x00A0;make&#x00A0;pdf&#x00A0;of&#x00A0;in&#x00A0;match&#x00A0;ref
doc/html/vipsmanualse18.html:&#x00A0;<br />im_hsp&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;match&#x00A0;stats&#x00A0;of&#x00A0;in&#x00A0;to&#x00A0;stats&#x00A0;of&#x00A0;ref
doc/html/vipsmanualse18.html:&#x00A0;<br />im_identity&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;identity&#x00A0;histogram
doc/html/vipsmanualse18.html:&#x00A0;<br />im_identity_ushort&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;ushort&#x00A0;identity&#x00A0;histogram
doc/html/vipsmanualse18.html:&#x00A0;<br />im_ismonotonic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;test&#x00A0;LUT&#x00A0;for&#x00A0;monotonicity
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lhisteq&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;local&#x00A0;histogram&#x00A0;equalisation
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lhisteq_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;local&#x00A0;histogram&#x00A0;equalisation,&#x00A0;no&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_invertlut&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;correction&#x00A0;table&#x00A0;from&#x00A0;set&#x00A0;of&#x00A0;measures
doc/html/vipsmanualse18.html:&#x00A0;<br />im_buildlut&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;LUT&#x00A0;table&#x00A0;from&#x00A0;set&#x00A0;of&#x00A0;x/y&#x00A0;positions
doc/html/vipsmanualse18.html:&#x00A0;<br />im_maplut&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;map&#x00A0;image&#x00A0;through&#x00A0;LUT
doc/html/vipsmanualse18.html:&#x00A0;<br />im_project&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;horizontal&#x00A0;and&#x00A0;vertical&#x00A0;projections&#x00A0;of&#x00A0;an&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_stdif&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;statistical&#x00A0;differencing
doc/html/vipsmanualse18.html:&#x00A0;<br />im_stdif_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;statistical&#x00A0;differencing,&#x00A0;no&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tone_analyse&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;analyse&#x00A0;in&#x00A0;and&#x00A0;create&#x00A0;LUT&#x00A0;for&#x00A0;tone&#x00A0;adjustment
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tone_build&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;create&#x00A0;LUT&#x00A0;for&#x00A0;tone&#x00A0;adjustment&#x00A0;of&#x00A0;LabS&#x00A0;images
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tone_build_range&#x00A0;&#x00A0;-&#x00A0;create&#x00A0;LUT&#x00A0;for&#x00A0;tone&#x00A0;adjustment
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tone_map&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;map&#x00A0;L&#x00A0;channel&#x00A0;of&#x00A0;LabS&#x00A0;or&#x00A0;LabQ&#x00A0;image&#x00A0;through&#x00A0;LUT
doc/html/vipsmanualse18.html:<!--l. 644--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Histogram/LUT functions</span></div><!--tex4ht:label?: x26-11600112 -->
doc/html/vipsmanualse18.html: id="x26-1170004.2.11"></a>Morphology</h4>
doc/html/vipsmanualse18.html:<!--l. 651--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-11700113">4.13<!--tex4ht:ref: fg:morph --></a>.
doc/html/vipsmanualse18.html:<!--l. 653--><p class="indent" >  The morphological functions are used on one-band
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> binary images (images containing
doc/html/vipsmanualse18.html:only zero and not-zero). They search images for particular
doc/html/vipsmanualse18.html:<!--l. 661--><p class="indent" >  If you combine the morphological operators with
doc/html/vipsmanualse18.html:the mask rotators (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_rotate_imask45()</span></span></span>, for
doc/html/vipsmanualse18.html:384-388, Prentice-Hall, 1989 for more ideas.
doc/html/vipsmanualse18.html:<!--l. 667--><p class="indent" >  Beware that VIPS reverses the usual image processing
doc/html/vipsmanualse18.html:<!--l. 670--><p class="indent" >  The mask you give to the morphological functions should
doc/html/vipsmanualse18.html:                                                 <div class="verbatim" id="verbatim-191">
doc/html/vipsmanualse18.html:<!--l. 680--><p class="nopar" >
doc/html/vipsmanualse18.html:<!--l. 682--><p class="noindent" >applied to an image with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_erode()</span></span></span>, will find all black
doc/html/vipsmanualse18.html:pixels 4-way connected with white pixels. Essentially,
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_dilate()</span></span></span> sets pixels in the output if any part of the
doc/html/vipsmanualse18.html:mask matches, whereas <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_erode()</span></span></span> sets pixels only if all
doc/html/vipsmanualse18.html:<!--l. 688--><p class="indent" >    The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">_raw()</span></span></span> version of the functions do not add a
doc/html/vipsmanualse18.html:black border to the output. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_cntlines()</span></span></span> and
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_profile</span></span></span> are occasionally useful for analysing
doc/html/vipsmanualse18.html:<!--l. 692--><p class="indent" >    See the boolean operations <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_and()</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_or()</span></span></span> and
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_eor()</span></span></span> for analogues of the usual set difference and set
doc/html/vipsmanualse18.html:<!--l. 697--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-11700113"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-192">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;morphology
doc/html/vipsmanualse18.html:&#x00A0;<br />im_cntlines&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;count&#x00A0;horizontal&#x00A0;or&#x00A0;vertical&#x00A0;lines
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dilate&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;dilate&#x00A0;image&#x00A0;with&#x00A0;mask,&#x00A0;adding&#x00A0;a&#x00A0;black&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_dilate_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;dilate&#x00A0;image&#x00A0;with&#x00A0;mask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_erode&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;erode&#x00A0;image&#x00A0;with&#x00A0;mask,&#x00A0;adding&#x00A0;a&#x00A0;black&#x00A0;border
doc/html/vipsmanualse18.html:&#x00A0;<br />im_erode_raw&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;erode&#x00A0;image&#x00A0;with&#x00A0;mask
doc/html/vipsmanualse18.html:&#x00A0;<br />im_profile&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;find&#x00A0;first&#x00A0;horizontal/vertical&#x00A0;edge
doc/html/vipsmanualse18.html:<!--l. 705--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Morphological functions</span></div><!--tex4ht:label?: x26-11700113 -->
doc/html/vipsmanualse18.html: id="x26-1180004.2.12"></a>Mosaicing</h4>
doc/html/vipsmanualse18.html:<!--l. 712--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-11800114">4.14<!--tex4ht:ref: fg:mosaicing --></a>.
doc/html/vipsmanualse18.html:<!--l. 714--><p class="indent" >  These functions are useful for joining many small images
doc/html/vipsmanualse18.html:unstable contrast, and arbitary sub-image layout, but will
doc/html/vipsmanualse18.html:<!--l. 719--><p class="indent" >  The lowest level functions are <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_correl()</span></span></span>. and
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_affine()</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_correl()</span></span></span> searches a large image
doc/html/vipsmanualse18.html:for a small sub-image, returning the position of the best
doc/html/vipsmanualse18.html:sub-image match. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_affine()</span></span></span> performs a general
doc/html/vipsmanualse18.html:<!--l. 725--><p class="indent" >  Next, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_lrmerge()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_tbmerge()</span></span></span> blend two
doc/html/vipsmanualse18.html:images together left-right or up-down.
doc/html/vipsmanualse18.html:<!--l. 728--><p class="indent" >  Next up are <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic()</span></span></span>.
doc/html/vipsmanualse18.html:These use the two low-level merge operations to join two
doc/html/vipsmanualse18.html:from photographic sources), <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic()</span></span></span> and
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic()</span></span></span> will adjust the contrast of the left image
doc/html/vipsmanualse18.html:<!--l. 737--><p class="indent" >  The functions <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic1()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic1()</span></span></span>
doc/html/vipsmanualse18.html:are first-order analogues of the basic mosaic functions:
doc/html/vipsmanualse18.html:they take two tie-points and use them to rotate and
doc/html/vipsmanualse18.html:scale the right-hand or bottom image before starting to
doc/html/vipsmanualse18.html:<!--l. 741--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_global_balance()</span></span></span> can be used to
doc/html/vipsmanualse18.html:re-balance a mosaic which has been assembled with
doc/html/vipsmanualse18.html:low-level balancer built into <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_lrmosaic()</span></span></span> and
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_tbmosaic()</span></span></span>. See the man page. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_remosaic()</span></span></span>
doc/html/vipsmanualse18.html:<!--l. 749--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-11800114"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-193">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;mosaicing
doc/html/vipsmanualse18.html:&#x00A0;<br />im_align_bands&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;align&#x00A0;the&#x00A0;bands&#x00A0;of&#x00A0;an&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_correl&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;search&#x00A0;area&#x00A0;around&#x00A0;sec&#x00A0;for&#x00A0;match&#x00A0;for&#x00A0;area&#x00A0;around&#x00A0;ref
doc/html/vipsmanualse18.html:&#x00A0;<br />im__find_lroverlap&#x00A0;&#x00A0;&#x00A0;-&#x00A0;search&#x00A0;for&#x00A0;left-right&#x00A0;overlap&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/html/vipsmanualse18.html:&#x00A0;<br />im__find_tboverlap&#x00A0;&#x00A0;&#x00A0;-&#x00A0;search&#x00A0;for&#x00A0;top-bottom&#x00A0;overlap&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_global_balance&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;automatically&#x00A0;rebuild&#x00A0;mosaic&#x00A0;with&#x00A0;balancing
doc/html/vipsmanualse18.html:&#x00A0;<br />im_global_balancef&#x00A0;&#x00A0;&#x00A0;-&#x00A0;automatically&#x00A0;rebuild&#x00A0;mosaic&#x00A0;with&#x00A0;balancing,&#x00A0;float&#x00A0;output
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lrmerge&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;left-right&#x00A0;merge&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lrmerge1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;left-right&#x00A0;merge&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lrmosaic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;left-right&#x00A0;mosaic&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_lrmosaic1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;left-right&#x00A0;mosaic&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/html/vipsmanualse18.html:&#x00A0;<br />im_match_linear&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;resample&#x00A0;ref&#x00A0;so&#x00A0;that&#x00A0;tie-points&#x00A0;match
doc/html/vipsmanualse18.html:&#x00A0;<br />im_match_linear_search&#x00A0;-&#x00A0;search&#x00A0;sec,&#x00A0;then&#x00A0;resample&#x00A0;so&#x00A0;that&#x00A0;tie-points&#x00A0;match
doc/html/vipsmanualse18.html:&#x00A0;<br />im_maxpos_subpel&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;subpixel&#x00A0;position&#x00A0;of&#x00A0;maximum&#x00A0;of&#x00A0;(phase&#x00A0;correlation)&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_remosaic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;automatically&#x00A0;rebuild&#x00A0;mosaic&#x00A0;with&#x00A0;new&#x00A0;files
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tbmerge&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;top-bottom&#x00A0;merge&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tbmerge1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;top-bottom&#x00A0;merge&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tbmosaic&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;top-bottom&#x00A0;mosaic&#x00A0;of&#x00A0;in1&#x00A0;and&#x00A0;in2
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tbmosaic1&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;first-order&#x00A0;top-bottom&#x00A0;mosaic&#x00A0;of&#x00A0;ref&#x00A0;and&#x00A0;sec
doc/html/vipsmanualse18.html:<!--l. 769--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Mosaic functions</span></div><!--tex4ht:label?: x26-11800114 -->
doc/html/vipsmanualse18.html: id="x26-1190004.2.13"></a>CImg functions</h4>
doc/html/vipsmanualse18.html:<!--l. 776--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-11900115">4.15<!--tex4ht:ref: fg:cimg --></a>.
doc/html/vipsmanualse18.html:<!--l. 778--><p class="indent" >  These operations wrap the anisotropic blur function from
doc/html/vipsmanualse18.html:<!--l. 782--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-11900115"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-194">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;cimg
doc/html/vipsmanualse18.html:&#x00A0;<br />im_greyc&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;noise-removing&#x00A0;filter
doc/html/vipsmanualse18.html:&#x00A0;<br />im_greyc_mask&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;noise-removing&#x00A0;filter,&#x00A0;with&#x00A0;a&#x00A0;mask
doc/html/vipsmanualse18.html:<!--l. 786--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">CImg functions</span></div><!--tex4ht:label?: x26-11900115 -->
doc/html/vipsmanualse18.html: id="x26-1200004.2.14"></a>Other</h4>
doc/html/vipsmanualse18.html:<!--l. 793--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-12000116">4.16<!--tex4ht:ref: fg:other --></a>.
doc/html/vipsmanualse18.html:<!--l. 795--><p class="indent" >  These functions generate various test images. You can
doc/html/vipsmanualse18.html:<!--l. 798--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">im_benchmark&#x22C6;()</span></span></span> operations are for testing the
doc/html/vipsmanualse18.html:<!--l. 801--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-12000116"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-195">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;other
doc/html/vipsmanualse18.html:&#x00A0;<br />im_benchmark&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;do&#x00A0;something&#x00A0;complicated&#x00A0;for&#x00A0;testing
doc/html/vipsmanualse18.html:&#x00A0;<br />im_benchmark2&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;do&#x00A0;something&#x00A0;complicated&#x00A0;for&#x00A0;testing
doc/html/vipsmanualse18.html:&#x00A0;<br />im_benchmarkn&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;do&#x00A0;something&#x00A0;complicated&#x00A0;for&#x00A0;testing
doc/html/vipsmanualse18.html:&#x00A0;<br />im_eye&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_UCHAR&#x00A0;[0,255]&#x00A0;frequency/amplitude&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_grey&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_UCHAR&#x00A0;[0,255]&#x00A0;grey&#x00A0;scale&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_feye&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_FLOAT&#x00A0;[-1,1]&#x00A0;frequency/amplitude&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_fgrey&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_FLOAT&#x00A0;[0,1]&#x00A0;grey&#x00A0;scale&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_fzone&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_FLOAT&#x00A0;[-1,1]&#x00A0;zone&#x00A0;plate&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_make_xy&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;image&#x00A0;with&#x00A0;pixel&#x00A0;value&#x00A0;equal&#x00A0;to&#x00A0;coordinate
doc/html/vipsmanualse18.html:&#x00A0;<br />im_zone&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;generate&#x00A0;IM_BANDFMT_UCHAR&#x00A0;[0,255]&#x00A0;zone&#x00A0;plate&#x00A0;image
doc/html/vipsmanualse18.html:<!--l. 813--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Other functions</span></div><!--tex4ht:label?: x26-12000116 -->
doc/html/vipsmanualse18.html: id="x26-1210004.2.15"></a>IO functions</h4>
doc/html/vipsmanualse18.html:<!--l. 820--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-12100117">4.17<!--tex4ht:ref: fg:io --></a>.
doc/html/vipsmanualse18.html:<!--l. 822--><p class="indent" >  These functions are related to the image IO system.
doc/html/vipsmanualse18.html:<!--l. 825--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-12100117"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-196">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;iofuncs
doc/html/vipsmanualse18.html:&#x00A0;<br />im_binfile&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;open&#x00A0;a&#x00A0;headerless&#x00A0;binary&#x00A0;file
doc/html/vipsmanualse18.html:&#x00A0;<br />im_cache&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;cache&#x00A0;results&#x00A0;of&#x00A0;an&#x00A0;operation
doc/html/vipsmanualse18.html:&#x00A0;<br />im_guess_prefix&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;guess&#x00A0;install&#x00A0;area
doc/html/vipsmanualse18.html:&#x00A0;<br />im_guess_libdir&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;guess&#x00A0;library&#x00A0;area
doc/html/vipsmanualse18.html:&#x00A0;<br />im_header_get_type&#x00A0;-&#x00A0;return&#x00A0;field&#x00A0;type
doc/html/vipsmanualse18.html:&#x00A0;<br />im_header_int&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;int&#x00A0;fields&#x00A0;from&#x00A0;header
doc/html/vipsmanualse18.html:&#x00A0;<br />im_header_double&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;double&#x00A0;fields&#x00A0;from&#x00A0;header
doc/html/vipsmanualse18.html:&#x00A0;<br />im_header_string&#x00A0;&#x00A0;&#x00A0;-&#x00A0;extract&#x00A0;string&#x00A0;fields&#x00A0;from&#x00A0;header
doc/html/vipsmanualse18.html:&#x00A0;<br />im_version&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;VIPS&#x00A0;version&#x00A0;number
doc/html/vipsmanualse18.html:&#x00A0;<br />im_version_string&#x00A0;&#x00A0;-&#x00A0;VIPS&#x00A0;version&#x00A0;string
doc/html/vipsmanualse18.html:<!--l. 837--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">IO functions</span></div><!--tex4ht:label?: x26-12100117 -->
doc/html/vipsmanualse18.html: id="x26-1220004.2.16"></a>Format functions</h4>
doc/html/vipsmanualse18.html:<!--l. 844--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-12200118">4.18<!--tex4ht:ref: fg:format --></a>.
doc/html/vipsmanualse18.html:<!--l. 846--><p class="indent" >  These functions convert to and from various image
doc/html/vipsmanualse18.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse18.html:href="vipsmanualse11.html#x17-740002.5">2.5<!--tex4ht:ref: sec:format --></a> for a nice API over these. VIPS can
doc/html/vipsmanualse18.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse18.html:class="pcrr7t-">VipsFormat</span></span></span>.
doc/html/vipsmanualse18.html:<!--l. 851--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-12200118"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-197">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;format
doc/html/vipsmanualse18.html:&#x00A0;<br />im_csv2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;csv&#x00A0;format
doc/html/vipsmanualse18.html:&#x00A0;<br />im_jpeg2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;from&#x00A0;jpeg
doc/html/vipsmanualse18.html:&#x00A0;<br />im_magick2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;load&#x00A0;file&#x00A0;with&#x00A0;libMagick
doc/html/vipsmanualse18.html:&#x00A0;<br />im_png2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;PNG&#x00A0;file&#x00A0;to&#x00A0;VIPS&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_exr2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;an&#x00A0;OpenEXR&#x00A0;file&#x00A0;to&#x00A0;VIPS
doc/html/vipsmanualse18.html:&#x00A0;<br />im_ppm2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;pbm/pgm/ppm&#x00A0;format
doc/html/vipsmanualse18.html:&#x00A0;<br />im_analyze2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;read&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;analyze&#x00A0;format
doc/html/vipsmanualse18.html:&#x00A0;<br />im_tiff2vips&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;TIFF&#x00A0;file&#x00A0;to&#x00A0;VIPS&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_vips2csv&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;write&#x00A0;an&#x00A0;image&#x00A0;in&#x00A0;csv&#x00A0;format
doc/html/vipsmanualse18.html:&#x00A0;<br />im_vips2jpeg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;jpeg
doc/html/vipsmanualse18.html:&#x00A0;<br />im_vips2mimejpeg&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;to&#x00A0;jpeg&#x00A0;as&#x00A0;mime&#x00A0;type&#x00A0;on&#x00A0;stdout
doc/html/vipsmanualse18.html:&#x00A0;<br />im_vips2png&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;VIPS&#x00A0;image&#x00A0;to&#x00A0;PNG&#x00A0;file
doc/html/vipsmanualse18.html:&#x00A0;<br />im_vips2ppm&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;write&#x00A0;a&#x00A0;file&#x00A0;in&#x00A0;pbm/pgm/ppm&#x00A0;format
doc/html/vipsmanualse18.html:&#x00A0;<br />im_vips2tiff&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;convert&#x00A0;VIPS&#x00A0;image&#x00A0;to&#x00A0;TIFF&#x00A0;file
doc/html/vipsmanualse18.html:<!--l. 867--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Format functions</span></div><!--tex4ht:label?: x26-12200118 -->
doc/html/vipsmanualse18.html: id="x26-1230004.2.17"></a>Resample functions</h4>
doc/html/vipsmanualse18.html:<!--l. 874--><p class="noindent" >See Figure&#x00A0;<a 
doc/html/vipsmanualse18.html:href="#x26-12300119">4.19<!--tex4ht:ref: fg:resample --></a>.
doc/html/vipsmanualse18.html:<!--l. 876--><p class="indent" >  These functions resample images with various
doc/html/vipsmanualse18.html:<!--l. 879--><p class="indent" >  <a 
doc/html/vipsmanualse18.html: id="x26-12300119"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse18.html:<div class="verbatim" id="verbatim-198">
doc/html/vipsmanualse18.html:$&#x00A0;vips&#x00A0;--list&#x00A0;resample
doc/html/vipsmanualse18.html:&#x00A0;<br />im_affine&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;affine&#x00A0;transform
doc/html/vipsmanualse18.html:&#x00A0;<br />im_affinei&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;affine&#x00A0;transform
doc/html/vipsmanualse18.html:&#x00A0;<br />im_affinei_all&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;affine&#x00A0;transform&#x00A0;of&#x00A0;whole&#x00A0;image
doc/html/vipsmanualse18.html:&#x00A0;<br />im_similarity_area&#x00A0;&#x00A0;&#x00A0;-&#x00A0;output&#x00A0;area&#x00A0;xywh&#x00A0;of&#x00A0;similarity&#x00A0;transformation
doc/html/vipsmanualse18.html:&#x00A0;<br />im_similarity&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;-&#x00A0;similarity&#x00A0;transformation
doc/html/vipsmanualse18.html:<!--l. 886--><p class="nopar" >
doc/html/vipsmanualse18.html:class="content">Resample functions</span></div><!--tex4ht:label?: x26-12300119 -->
doc/html/vipsmanualse18.html:  <!--l. 91--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse18.html:href="vipsmanualse17.html#tailvipsmanualse17.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse18.html:<!--l. 91--><p class="indent" >  <a 
doc/html/vipsmanualch3.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualch3.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualch3.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualch3.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualch3.html:<!-- 3,html --> 
doc/html/vipsmanualch3.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualch3.html:  <!--l. 79--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualch3.html:href="vipsmanualch2.html#tailvipsmanualch2.html" >prev-tail</a>] [<a 
doc/html/vipsmanualch3.html: id="x19-840003"></a>Writing VIPS operations</h2>
doc/html/vipsmanualch3.html:href="vipsmanualse13.html#x20-850003.1">Introduction</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse13.html#x20-860003.1.1">Why use VIPS?</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse13.html#x20-870003.1.2">I/O styles</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse14.html#x21-880003.2">Programming WIO operations</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse14.html#x21-890003.2.1">Input from an image</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse14.html#x21-900003.2.2">Output to an image</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse14.html#x21-910003.2.3">Polymorphism</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse15.html#x22-920003.3">Programming PIO functions</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse15.html#x22-930003.3.1">Easy PIO with <span 
doc/html/vipsmanualch3.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualch3.html:class="pcrr7t-">_wrapone() </span>and <span 
doc/html/vipsmanualch3.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualch3.html:class="pcrr7t-">_wrapmany()</span></a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse15.html#x22-940003.3.2">Region descriptors</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse15.html#x22-950003.3.3">Image input with regions</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse15.html#x22-960003.3.4">Splitting into sequences</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse15.html#x22-970003.3.5">Output to regions</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse15.html#x22-980003.3.6">Callbacks</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse15.html#x22-1020003.3.7">Memory allocation revisited</a></span>
doc/html/vipsmanualch3.html:href="vipsmanualse16.html#x23-1030003.4">Programming in-place functions</a></span>
doc/html/vipsmanualch3.html:  <!--l. 86--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualch3.html:href="vipsmanualch2.html#tailvipsmanualch2.html" >prev-tail</a>] [<a 
doc/html/vipsmanualch3.html:<!--l. 86--><p class="indent" >  <a 
doc/html/vipsmanualse12.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse12.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse12.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse12.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse12.html:<!-- 3,html --> 
doc/html/vipsmanualse12.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse12.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse12.html:href="vipsmanualse11.html#tailvipsmanualse11.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse12.html: id="x18-790002.6"></a>Interpolators</h3>
doc/html/vipsmanualse12.html:<!--l. 4--><p class="noindent" >VIPS has a general system for representing pixel interpolators.
doc/html/vipsmanualse12.html:operations, such as <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">im_affinei()</span></span></span>, you can add new
doc/html/vipsmanualse12.html:<!--l. 9--><p class="indent" >  An interpolator is a function of the form:
doc/html/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-119">
doc/html/vipsmanualse12.html:<!--l. 14--><p class="nopar" >
doc/html/vipsmanualse12.html:<!--l. 16--><p class="noindent" >given the set of input pixels <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">in</span></span></span>, it has to calculate a value
doc/html/vipsmanualse12.html:class="cmr-10">(</span><span 
doc/html/vipsmanualse12.html:class="cmmi-10">x,y</span><span 
doc/html/vipsmanualse12.html:class="cmr-10">) </span>and write this value to the
doc/html/vipsmanualse12.html:memory pointed to by <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">out</span></span></span>.
doc/html/vipsmanualse12.html:<!--l. 21--><p class="indent" >    VIPS uses corner convention, so the value of pixel <span 
doc/html/vipsmanualse12.html:class="cmr-10">(0</span><span 
doc/html/vipsmanualse12.html:class="cmmi-10">,</span><span 
doc/html/vipsmanualse12.html:class="cmr-10">0)</span>
doc/html/vipsmanualse12.html:class="cmr-10">(0</span><span 
doc/html/vipsmanualse12.html:class="cmmi-10">.</span><span 
doc/html/vipsmanualse12.html:class="cmr-10">0</span><span 
doc/html/vipsmanualse12.html:class="cmmi-10">,</span><span 
doc/html/vipsmanualse12.html:class="cmr-10">0</span><span 
doc/html/vipsmanualse12.html:class="cmmi-10">.</span><span 
doc/html/vipsmanualse12.html:class="cmr-10">0)</span>.
doc/html/vipsmanualse12.html:<!--l. 24--><p class="noindent" >
doc/html/vipsmanualse12.html: id="x18-800002.6.1"></a>How an interpolator is represented</h4>
doc/html/vipsmanualse12.html:<!--l. 26--><p class="noindent" >See the man page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> for full
doc/html/vipsmanualse12.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> implementing the following
doc/html/vipsmanualse12.html:        <li class="itemize">A            function            <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">get_window_size()</span></span></span>
doc/html/vipsmanualse12.html:        <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">get_window_size()</span></span></span> NULL  and  just  set  the
doc/html/vipsmanualse12.html:        int value <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">window_size</span></span></span>.
doc/html/vipsmanualse12.html:<!--l. 46--><p class="noindent" >
doc/html/vipsmanualse12.html: id="x18-810002.6.2"></a>A sample interpolator</h4>
doc/html/vipsmanualse12.html:<!--l. 48--><p class="noindent" >As an example, Figure&#x00A0;<a 
doc/html/vipsmanualse12.html:href="#x18-8100110">2.10<!--tex4ht:ref: fg:newinterpolator --></a> shows how to register a new
doc/html/vipsmanualse12.html:<!--l. 52--><p class="indent" >  <a 
doc/html/vipsmanualse12.html: id="x18-8100110"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse12.html:<div class="verbatim" id="verbatim-120">
doc/html/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Nearest-neighbor.
doc/html/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;IM_IMAGE_SIZEOF_PEL(&#x00A0;in-&#x003E;im&#x00A0;)&#x00A0;);
doc/html/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;nickname&#x00A0;=&#x00A0;"myinterpolator";
doc/html/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;object_class-&#x003E;description&#x00A0;=&#x00A0;_(&#x00A0;"My&#x00A0;interpolator"&#x00A0;);
doc/html/vipsmanualse12.html:&#x00A0;<br />&#x00A0;&#x00A0;interpolate_class-&#x003E;interpolate&#x00A0;=&#x00A0;myinterpolator_interpolate;
doc/html/vipsmanualse12.html:<!--l. 96--><p class="nopar" >
doc/html/vipsmanualse12.html:class="content">Registering an interpolator in a plugin</span></div><!--tex4ht:label?: x18-8100110 -->    
doc/html/vipsmanualse12.html: id="x18-820002.6.3"></a>Writing a VIPS operation that takes an interpolator
doc/html/vipsmanualse12.html:<!--l. 103--><p class="noindent" >Operations just take a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> as an
doc/html/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-121">
doc/html/vipsmanualse12.html:<!--l. 110--><p class="nopar" >
doc/html/vipsmanualse12.html:<!--l. 112--><p class="indent" >  To use the interpolator, use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">vips_interpolate()</span></span></span>:
doc/html/vipsmanualse12.html:  <div class="verbatim" id="verbatim-122">
doc/html/vipsmanualse12.html:<!--l. 117--><p class="nopar" >
doc/html/vipsmanualse12.html:<!--l. 119--><p class="noindent" >This looks up the interpolate method for the object and calls
doc/html/vipsmanualse12.html:<!--l. 122--><p class="indent" >  You can save the cost of the lookup in an inner loop with
doc/html/vipsmanualse12.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">vips_interpolate_get_method()</span></span></span>:
doc/html/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-123">
doc/html/vipsmanualse12.html:<!--l. 129--><p class="nopar" >
doc/html/vipsmanualse12.html:<!--l. 131--><p class="noindent" >
doc/html/vipsmanualse12.html: id="x18-830002.6.4"></a>Passing an interpolator to a VIPS operation</h4>
doc/html/vipsmanualse12.html:<!--l. 133--><p class="noindent" >You can build an instance of a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">VipsInterpolator</span></span></span>
doc/html/vipsmanualse12.html:with the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">vips_object_&#x22C6;()</span></span></span> family of functions, see
doc/html/vipsmanualse12.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse12.html:href="vipsmanualse10.html#x16-670002.4">2.4<!--tex4ht:ref: sec:object --></a>.
doc/html/vipsmanualse12.html:<!--l. 136--><p class="indent" >    Convenience functions return a static instance of one of
doc/html/vipsmanualse12.html:  <div class="verbatim" id="verbatim-124">
doc/html/vipsmanualse12.html:<!--l. 143--><p class="nopar" >
doc/html/vipsmanualse12.html:<!--l. 145--><p class="noindent" >Don&#8217;t free the result.
doc/html/vipsmanualse12.html:<!--l. 148--><p class="indent" >  Finally, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">vips_interpolate_new()</span></span></span> makes a
doc/html/vipsmanualse12.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">VipsInterpolate</span></span></span> from a nickname:
doc/html/vipsmanualse12.html:                                                 <div class="verbatim" id="verbatim-125">
doc/html/vipsmanualse12.html:<!--l. 153--><p class="nopar" >
doc/html/vipsmanualse12.html:<!--l. 155--><p class="indent" >  For example:
doc/html/vipsmanualse12.html:  <div class="verbatim" id="verbatim-126">
doc/html/vipsmanualse12.html:<!--l. 159--><p class="nopar" >
doc/html/vipsmanualse12.html:<!--l. 161--><p class="noindent" >You must drop your ref after you&#8217;re done with the object
doc/html/vipsmanualse12.html:with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse12.html:class="pcrr7t-">g_object_unref()</span></span></span>.
doc/html/vipsmanualse12.html:  <!--l. 79--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse12.html:href="vipsmanualse11.html#tailvipsmanualse11.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse12.html:<!--l. 79--><p class="indent" >  <a 
doc/html/vipsmanualse4.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse4.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse4.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse4.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse4.html:<!-- 3,html --> 
doc/html/vipsmanualse4.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse4.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse4.html:href="vipsmanualse3.html#tailvipsmanualse3.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse4.html: id="x9-190001.4"></a>The <span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask </span>class</h3>
doc/html/vipsmanualse4.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> class is an abstraction over the VIPS
doc/html/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">DOUBLEMASK</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">INTMASK</span></span></span> types which gives convenient
doc/html/vipsmanualse4.html:<!--l. 7--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> has two sub-classes, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>.
doc/html/vipsmanualse4.html:<!--l. 10--><p class="noindent" >
doc/html/vipsmanualse4.html: id="x9-200001.4.1"></a>Constructors</h4>
doc/html/vipsmanualse4.html:<!--l. 12--><p class="noindent" >There are four constructors for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>:
doc/html/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-27">
doc/html/vipsmanualse4.html:<!--l. 31--><p class="nopar" >
doc/html/vipsmanualse4.html:<!--l. 33--><p class="indent" >  The first form creates an empty matrix, with the specified
doc/html/vipsmanualse4.html:<!--l. 38--><p class="indent" >    The varargs constructors are not wrapped in Python &#8212;
doc/html/vipsmanualse4.html:  <div class="verbatim" id="verbatim-28">
doc/html/vipsmanualse4.html:&#x00A0;<br />&#x00A0;&#x00A0;[-1,&#x00A0;-1,&#x00A0;-1,
doc/html/vipsmanualse4.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;-1,&#x00A0;&#x00A0;8,&#x00A0;-1,
doc/html/vipsmanualse4.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;-1,&#x00A0;-1,&#x00A0;-1])
doc/html/vipsmanualse4.html:<!--l. 46--><p class="nopar" >
doc/html/vipsmanualse4.html:<!--l. 48--><p class="noindent" >
doc/html/vipsmanualse4.html: id="x9-210001.4.2"></a>Projection functions</h4>
doc/html/vipsmanualse4.html:<!--l. 50--><p class="noindent" >A set of member functions of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> provide access to the
doc/html/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-29">
doc/html/vipsmanualse4.html:<!--l. 59--><p class="nopar" >
doc/html/vipsmanualse4.html:<!--l. 61--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span> is the same, except that the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">scale()</span></span></span> and
doc/html/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">offset()</span></span></span> members return <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">double</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> allows all
doc/html/vipsmanualse4.html:operations that are common to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>.
doc/html/vipsmanualse4.html:<!--l. 65--><p class="noindent" >
doc/html/vipsmanualse4.html: id="x9-220001.4.3"></a>Assignment</h4>
doc/html/vipsmanualse4.html:<!--l. 67--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> defines copy and assignment with pointer-style
doc/html/vipsmanualse4.html:  <div class="verbatim" id="verbatim-30">
doc/html/vipsmanualse4.html:<!--l. 75--><p class="nopar" >
doc/html/vipsmanualse4.html:<!--l. 77--><p class="indent" >  This reads the file <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">mask</span></span></span>, noting a pointer to the
doc/html/vipsmanualse4.html:mask in <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">fred</span></span></span>. It then makes <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">jim</span></span></span> also point to it, so
doc/html/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">jim</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">fred</span></span></span> are sharing the same underlying matrix
doc/html/vipsmanualse4.html:<!--l. 81--><p class="indent" >  Internally, a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> object is just a pointer to a
doc/html/vipsmanualse4.html:reference-counting block, which in turn holds a pointer to
doc/html/vipsmanualse4.html:the underlying VIPS <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">MASK</span></span></span> type. You can therefore
doc/html/vipsmanualse4.html:efficiently pass <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> objects to functions by value, and
doc/html/vipsmanualse4.html:return <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span> objects as function results.
doc/html/vipsmanualse4.html:<!--l. 86--><p class="noindent" >
doc/html/vipsmanualse4.html: id="x9-230001.4.4"></a>Computing with <span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask</span></h4>
doc/html/vipsmanualse4.html:<!--l. 88--><p class="noindent" >You can use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">[]</span></span></span> to get at matrix elements, numbered
doc/html/vipsmanualse4.html:left-to-right, top-to-bottom. Alternatively, use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">()</span></span></span> to address
doc/html/vipsmanualse4.html:class="cmmi-10">x,y </span>position. For example:
doc/html/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-31">
doc/html/vipsmanualse4.html:<!--l. 97--><p class="nopar" >
doc/html/vipsmanualse4.html:<!--l. 99--><p class="noindent" >will set the first line of the matrix to 12, and:
doc/html/vipsmanualse4.html:  <div class="verbatim" id="verbatim-32">
doc/html/vipsmanualse4.html:<!--l. 107--><p class="nopar" >
doc/html/vipsmanualse4.html:<!--l. 109--><p class="noindent" >will set the leading diagonal to 12.
doc/html/vipsmanualse4.html:<!--l. 112--><p class="indent" >  These don&#8217;t work well in Python, so there&#8217;s an extra
doc/html/vipsmanualse4.html:member, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">get()</span></span></span>, which will get an element by <span 
doc/html/vipsmanualse4.html:class="cmmi-10">x,y</span>
doc/html/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-33">
doc/html/vipsmanualse4.html:<!--l. 117--><p class="nopar" >
doc/html/vipsmanualse4.html:<!--l. 119--><p class="indent" >  See the member functions below for other operations on
doc/html/vipsmanualse4.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VMask</span></span></span>.
doc/html/vipsmanualse4.html:<!--l. 121--><p class="noindent" >
doc/html/vipsmanualse4.html: id="x9-240001.4.5"></a><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VIMask </span>operations</h4>
doc/html/vipsmanualse4.html:<!--l. 123--><p class="noindent" >The following operations are defined for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VIMask</span></span></span>:
doc/html/vipsmanualse4.html:  <div class="verbatim" id="verbatim-34">
doc/html/vipsmanualse4.html:<!--l. 144--><p class="nopar" >
doc/html/vipsmanualse4.html:<!--l. 146--><p class="noindent" >
doc/html/vipsmanualse4.html: id="x9-250001.4.6"></a><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VDMask </span>operations</h4>
doc/html/vipsmanualse4.html:<!--l. 148--><p class="noindent" >The following operations are defined for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">VDMask</span></span></span>:
doc/html/vipsmanualse4.html:                                                 <div class="verbatim" id="verbatim-35">
doc/html/vipsmanualse4.html:<!--l. 171--><p class="nopar" >
doc/html/vipsmanualse4.html:<!--l. 173--><p class="noindent" >
doc/html/vipsmanualse4.html: id="x9-260001.4.7"></a>Output of masks</h4>
doc/html/vipsmanualse4.html:<!--l. 175--><p class="noindent" >You can output masks with the usual <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse4.html:class="pcrr7t-">&#x003C;&#x003C;</span></span></span> operator.
doc/html/vipsmanualse4.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse4.html:href="vipsmanualse3.html#tailvipsmanualse3.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse4.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualse14.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse14.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse14.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse14.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse14.html:<!-- 3,html --> 
doc/html/vipsmanualse14.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse14.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse14.html:href="vipsmanualse13.html#tailvipsmanualse13.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse14.html: id="x21-880003.2"></a>Programming WIO operations</h3>
doc/html/vipsmanualse14.html:<!--l. 3--><p class="noindent" >WIO is the style for you if you want ease of programming,
doc/html/vipsmanualse14.html:<!--l. 8--><p class="noindent" >
doc/html/vipsmanualse14.html: id="x21-890003.2.1"></a>Input from an image</h4>
doc/html/vipsmanualse14.html:<!--l. 10--><p class="noindent" >In WIO input, the whole of the image data is made available
doc/html/vipsmanualse14.html:to the program via the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">data</span></span></span> field of the descriptor. To make
doc/html/vipsmanualse14.html:call <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_incheck()</span></span></span>:
doc/html/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-127">
doc/html/vipsmanualse14.html:<!--l. 16--><p class="nopar" >
doc/html/vipsmanualse14.html:<!--l. 18--><p class="noindent" >If it succeeds, it returns 0, if it fails, it returns non-zero and
doc/html/vipsmanualse14.html:sets <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_error()</span></span></span>. On success, VIPS guarantees that all of
doc/html/vipsmanualse14.html:the user-accessible fields in the descriptor contain valid
doc/html/vipsmanualse14.html:reading from the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">data</span></span></span> field (see below for an example).
doc/html/vipsmanualse14.html:<!--l. 26--><p class="indent" >    VIPS has some simple macros to help address calculations
doc/html/vipsmanualse14.html:  <div class="verbatim" id="verbatim-128">
doc/html/vipsmanualse14.html:<!--l. 35--><p class="nopar" >
doc/html/vipsmanualse14.html:<!--l. 37--><p class="noindent" >These macros calculate <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">sizeof()</span></span></span> a band element, a pel
doc/html/vipsmanualse14.html:and a horizontal line of pels. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">IM_IMAGE_N_ELEMENTS</span></span></span>
doc/html/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">IM_IMAGE_ADDR</span></span></span> calculates the address of a pixel in an
doc/html/vipsmanualse14.html:image. If <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">DEBUG</span></span></span> is defined, it does bounds checking
doc/html/vipsmanualse14.html:<!--l. 44--><p class="indent" >  <a 
doc/html/vipsmanualse14.html: id="x21-890011"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse14.html:<div class="verbatim" id="verbatim-129">
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;im-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;im-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;0;&#x00A0;y&#x00A0;&#x003C;&#x00A0;im-&#x003E;Ysize;&#x00A0;y++&#x00A0;)&#x00A0;{
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;(IM_IMAGE_N_ELEMENTS(&#x00A0;im&#x00A0;)&#x00A0;&#x22C6;&#x00A0;im-&#x003E;Ysize));
doc/html/vipsmanualse14.html:<!--l. 88--><p class="nopar" >
doc/html/vipsmanualse14.html:class="content">Find average of image</span></div><!--tex4ht:label?: x21-890011 -->                
doc/html/vipsmanualse14.html:<!--l. 93--><p class="indent" >  Figure&#x00A0;<a 
doc/html/vipsmanualse14.html:href="#x21-890011">3.1<!--tex4ht:ref: fg:average --></a> is a simple WIO operation which calculates
doc/html/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse14.html:href="#x21-910003.2.3">3.2.3<!--tex4ht:ref: sec:poly --></a> for
doc/html/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-130">
doc/html/vipsmanualse14.html:<!--l. 119--><p class="nopar" >
doc/html/vipsmanualse14.html:<!--l. 121--><p class="noindent" >When you write an image processing operation, you can test
doc/html/vipsmanualse14.html:class="pcrr7t-">vips </span>universal main program, or from the <span 
doc/html/vipsmanualse14.html:class="pcrr7t-">nip2</span>
doc/html/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse14.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>.
doc/html/vipsmanualse14.html: id="x21-900003.2.2"></a>Output to an image</h4>
doc/html/vipsmanualse14.html:<!--l. 128--><p class="noindent" >Before attempting WIO output, programs should call
doc/html/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span>. It has type:
doc/html/vipsmanualse14.html:  <div class="verbatim" id="verbatim-131">
doc/html/vipsmanualse14.html:<!--l. 133--><p class="nopar" >
doc/html/vipsmanualse14.html:<!--l. 135--><p class="noindent" >If <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span> succeeds, VIPS guarantees that WIO
doc/html/vipsmanualse14.html:<!--l. 138--><p class="indent" >  Programs should then set fields in the output descriptor to
doc/html/vipsmanualse14.html:type, and so on) and call <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_setupout()</span></span></span>. It has
doc/html/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-132">
doc/html/vipsmanualse14.html:<!--l. 144--><p class="nopar" >
doc/html/vipsmanualse14.html:<!--l. 146--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_setupout()</span></span></span> creates the output file or memory buffer,
doc/html/vipsmanualse14.html:program between the calls to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span> and
doc/html/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_setupout()</span></span></span>, and gets it ready for writing.
doc/html/vipsmanualse14.html:<!--l. 151--><p class="indent" >    Pels are written with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_writeline()</span></span></span>. This takes a y
doc/html/vipsmanualse14.html:position (pel (0,0) is in the top-left-hand corner of the
doc/html/vipsmanualse14.html:  <div class="verbatim" id="verbatim-133">
doc/html/vipsmanualse14.html:<!--l. 158--><p class="nopar" >
doc/html/vipsmanualse14.html:<!--l. 160--><p class="indent" >  Two convenience functions are available to make this
doc/html/vipsmanualse14.html:process slightly easier. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_iocheck()</span></span></span> is useful for
doc/html/vipsmanualse14.html:image output. It simply calls <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_incheck()</span></span></span> and
doc/html/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_outcheck()</span></span></span>. It has type:
doc/html/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-134">
doc/html/vipsmanualse14.html:<!--l. 167--><p class="nopar" >
doc/html/vipsmanualse14.html:<!--l. 169--><p class="indent" >  The second convenience function copies the fields
doc/html/vipsmanualse14.html:  <div class="verbatim" id="verbatim-135">
doc/html/vipsmanualse14.html:<!--l. 176--><p class="nopar" >
doc/html/vipsmanualse14.html:<!--l. 178--><p class="noindent" >There&#8217;s also <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_cp_descv()</span></span></span>, see the man page.
doc/html/vipsmanualse14.html:<!--l. 182--><p class="indent" >  <a 
doc/html/vipsmanualse14.html: id="x21-900012"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse14.html:<div class="verbatim" id="verbatim-136">
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;0;&#x00A0;y&#x00A0;&#x003C;&#x00A0;in-&#x003E;Ysize;&#x00A0;y++&#x00A0;)&#x00A0;{
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;buffer[x]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[x];
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:<!--l. 230--><p class="nopar" >
doc/html/vipsmanualse14.html:class="content">Invert an image</span></div><!--tex4ht:label?: x21-900012 -->
doc/html/vipsmanualse14.html:<!--l. 235--><p class="indent" >  Figure&#x00A0;<a 
doc/html/vipsmanualse14.html:href="#x21-900012">3.2<!--tex4ht:ref: fg:invert --></a> is a WIO VIPS operation which finds the
doc/html/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse14.html:href="vipsmanualse8.html#x14-490002.2.10">2.2.10<!--tex4ht:ref: sec:malloc --></a> for an explanation of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">IM_ARRAY</span></span></span>. This operation
doc/html/vipsmanualse14.html:                                                 <div class="verbatim" id="verbatim-137">
doc/html/vipsmanualse14.html:<!--l. 259--><p class="nopar" >
doc/html/vipsmanualse14.html:<!--l. 261--><p class="indent" >  See <span 
doc/html/vipsmanualse14.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse14.html:href="vipsmanualse8.html#x14-440002.2.7">2.2.7<!--tex4ht:ref: sec:history --></a> for an explanation of the call to
doc/html/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_updatehist()</span></span></span>.
doc/html/vipsmanualse14.html: id="x21-910003.2.3"></a>Polymorphism</h4>
doc/html/vipsmanualse14.html:<!--l. 266--><p class="noindent" >Most image processing operations in the VIPS library can
doc/html/vipsmanualse14.html:operate on images of any type (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span>, as
doc/html/vipsmanualse14.html:in our examples above, also <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">IM_BANDFMT_UINT</span></span></span> etc.).
doc/html/vipsmanualse14.html:<!--l. 272--><p class="indent" >    As an example, figure&#x00A0;<a 
doc/html/vipsmanualse14.html:href="#x21-910013">3.3<!--tex4ht:ref: fg:exp --></a> calculates <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">exp()</span></span></span> for every
doc/html/vipsmanualse14.html:pel in an image. If the input image is <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">double</span></span></span>, we write
doc/html/vipsmanualse14.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">double</span></span></span> output. If it is any other non-complex type, we
doc/html/vipsmanualse14.html:write <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">float</span></span></span>. If it is complex, we flag an error (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">exp()</span></span></span> of
doc/html/vipsmanualse14.html:image type predicate, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse14.html:class="pcrr7t-">im_iscomplex()</span></span></span>. There are a
doc/html/vipsmanualse14.html:<!--l. 280--><p class="indent" >  <a 
doc/html/vipsmanualse14.html: id="x21-910013"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse14.html:<div class="verbatim" id="verbatim-138">
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;||&#x00A0;im_iscomplex(&#x00A0;in&#x00A0;)&#x00A0;)&#x00A0;{
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;im_error(&#x00A0;"exptra",&#x00A0;"uncoded&#x00A0;non-complex&#x00A0;only"&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_DOUBLE&#x00A0;)
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;out-&#x003E;BandFmt&#x00A0;=&#x00A0;IM_BANDFMT_FLOAT;
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:<!--l. 313--><p class="nopar" >
doc/html/vipsmanualse14.html:class="pcrr7t-">exp() </span>for an image</span></div><!--tex4ht:label?: x21-910013 -->
doc/html/vipsmanualse14.html:<!--l. 319--><p class="indent" >  <a 
doc/html/vipsmanualse14.html: id="x21-910024"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse14.html:<div class="verbatim" id="verbatim-139">
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;0;&#x00A0;y&#x00A0;&#x003C;&#x00A0;in-&#x003E;Ysize;&#x00A0;y++&#x00A0;)&#x00A0;{&#x00A0;\
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);&#x00A0;\
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;switch(&#x00A0;in-&#x003E;BandFmt&#x00A0;)&#x00A0;{
doc/html/vipsmanualse14.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse14.html:<!--l. 361--><p class="nopar" >
doc/html/vipsmanualse14.html:class="pcrr7t-">exp() </span>for an image (cont)</span></div><!--tex4ht:label?: x21-910024 -->
doc/html/vipsmanualse14.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse14.html:href="vipsmanualse13.html#tailvipsmanualse13.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse14.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanual.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanual.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanual.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanual.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanual.html:<!-- 3,html --> 
doc/html/vipsmanual.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanual.html:<!--l. 25--><p class="indent" >
doc/html/vipsmanual.html:                                             <!--l. 25--><p class="indent" >
doc/html/vipsmanual.html:<!--l. 27--><p class="noindent" >
doc/html/vipsmanual.html:<!--l. 29--><p class="noindent" ><span 
doc/html/vipsmanual.html:class="ptmr7t-x-x-207">VIPS Manual</span><br />
doc/html/vipsmanual.html:class="ptmr7t-x-x-120">Version 7.20</span><br />
doc/html/vipsmanual.html:class="ptmr7t-x-x-120">John Cupitt, Kirk Martinez</span><br />
doc/html/vipsmanual.html:<!--l. 40--><p class="indent" >  This manual formatted June 9, 2010
doc/html/vipsmanual.html:href="vipsmanualli1.html#x2-1000" id="QQ2-2-1">Contents</a></span>
doc/html/vipsmanual.html:href="vipsmanualli2.html#x3-2000" id="QQ2-3-2">List of Figures</a></span>
doc/html/vipsmanual.html:href="vipsmanualli3.html#x4-3000" id="QQ2-4-3">List of Tables</a></span>
doc/html/vipsmanual.html:href="vipsmanualch1.html#x5-40001" id="QQ2-5-4">VIPS from C++ and Python</a></span>
doc/html/vipsmanual.html:href="vipsmanualse1.html#x6-50001.1" id="QQ2-6-5">Introduction</a></span>
doc/html/vipsmanual.html:href="vipsmanualse2.html#x7-70001.2" id="QQ2-7-9">The VIPS file format</a></span>
doc/html/vipsmanual.html:href="vipsmanualse3.html#x8-110001.3" id="QQ2-8-17">The <span 
doc/html/vipsmanual.html:class="pcrr7t-">VImage </span>class</a></span>
doc/html/vipsmanual.html:href="vipsmanualse4.html#x9-190001.4" id="QQ2-9-25">The <span 
doc/html/vipsmanual.html:class="pcrr7t-">VMask </span>class</a></span>
doc/html/vipsmanual.html:href="vipsmanualse5.html#x10-270001.5" id="QQ2-10-33">The <span 
doc/html/vipsmanual.html:class="pcrr7t-">VDisplay </span>class</a></span>
doc/html/vipsmanual.html:href="vipsmanualse6.html#x11-300001.6" id="QQ2-11-36">The <span 
doc/html/vipsmanual.html:class="pcrr7t-">VError </span>class</a></span>
doc/html/vipsmanual.html:href="vipsmanualch2.html#x12-350002" id="QQ2-12-41">VIPS for C programmers</a></span>
doc/html/vipsmanual.html:href="vipsmanualse7.html#x13-360002.1" id="QQ2-13-42">Introduction</a></span>
doc/html/vipsmanual.html:href="vipsmanualse8.html#x14-370002.2" id="QQ2-14-44">Core C API</a></span>
doc/html/vipsmanual.html:href="vipsmanualse9.html#x15-590002.3" id="QQ2-15-73">Function dispatch and plug-ins</a></span>
doc/html/vipsmanual.html:href="vipsmanualse10.html#x16-670002.4" id="QQ2-16-82">The VIPS base class: <span 
doc/html/vipsmanual.html:class="pcrr7t-">VipsObject</span></a></span>
doc/html/vipsmanual.html:href="vipsmanualse11.html#x17-740002.5" id="QQ2-17-89">Image formats</a></span>
doc/html/vipsmanual.html:href="vipsmanualse12.html#x18-790002.6" id="QQ2-18-95">Interpolators</a></span>
doc/html/vipsmanual.html:href="vipsmanualch3.html#x19-840003" id="QQ2-19-101">Writing VIPS operations</a></span>
doc/html/vipsmanual.html:href="vipsmanualse13.html#x20-850003.1" id="QQ2-20-102">Introduction</a></span>
doc/html/vipsmanual.html:href="vipsmanualse14.html#x21-880003.2" id="QQ2-21-105">Programming WIO operations</a></span>
doc/html/vipsmanual.html:href="vipsmanualse15.html#x22-920003.3" id="QQ2-22-113">Programming PIO functions</a></span>
doc/html/vipsmanual.html:href="vipsmanualse16.html#x23-1030003.4" id="QQ2-23-131">Programming in-place functions</a></span>
doc/html/vipsmanual.html:href="vipsmanualch4.html#x24-1040004" id="QQ2-24-132">VIPS reference</a></span>
doc/html/vipsmanual.html:href="vipsmanualse17.html#x25-1050004.1" id="QQ2-25-133">Introduction</a></span>
doc/html/vipsmanual.html:href="vipsmanualse18.html#x26-1060004.2" id="QQ2-26-135">VIPS packages</a></span>
doc/html/vipsmanual.html:                                             <!--l. 79--><p class="indent" >
doc/html/vipsmanualse6.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse6.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse6.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse6.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse6.html:<!-- 3,html --> 
doc/html/vipsmanualse6.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse6.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse6.html:href="vipsmanualse5.html#tailvipsmanualse5.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse6.html: id="x11-300001.6"></a>The <span 
doc/html/vipsmanualse6.html:class="pcrr7t-">VError </span>class</h3>
doc/html/vipsmanualse6.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span> class is the class thrown by the VIPS
doc/html/vipsmanualse6.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">std::exception</span></span></span> in the usual way.
doc/html/vipsmanualse6.html:<!--l. 6--><p class="noindent" >
doc/html/vipsmanualse6.html: id="x11-310001.6.1"></a>Constructors</h4>
doc/html/vipsmanualse6.html:<!--l. 8--><p class="noindent" >There are two constructors for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span>:
doc/html/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-41">
doc/html/vipsmanualse6.html:<!--l. 13--><p class="nopar" >
doc/html/vipsmanualse6.html:<!--l. 15--><p class="indent" >  The first form creates an error object initialised with the
doc/html/vipsmanualse6.html:<!--l. 18--><p class="noindent" >
doc/html/vipsmanualse6.html: id="x11-320001.6.2"></a>Projection functions</h4>
doc/html/vipsmanualse6.html:<!--l. 20--><p class="noindent" >A function gives access to the string held by <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span>:
doc/html/vipsmanualse6.html:  <div class="verbatim" id="verbatim-42">
doc/html/vipsmanualse6.html:<!--l. 24--><p class="nopar" >
doc/html/vipsmanualse6.html:<!--l. 26--><p class="indent" >  You can also send to an <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">ostream</span></span></span>.
doc/html/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-43">
doc/html/vipsmanualse6.html:<!--l. 31--><p class="nopar" >
doc/html/vipsmanualse6.html:<!--l. 33--><p class="noindent" >
doc/html/vipsmanualse6.html: id="x11-330001.6.3"></a>Computing with <span 
doc/html/vipsmanualse6.html:class="pcrr7t-">VError</span></h4>
doc/html/vipsmanualse6.html:<!--l. 35--><p class="noindent" >Two member functions let you append elements to an
doc/html/vipsmanualse6.html:  <div class="verbatim" id="verbatim-44">
doc/html/vipsmanualse6.html:<!--l. 40--><p class="nopar" >
doc/html/vipsmanualse6.html:<!--l. 42--><p class="indent" >  For example:
doc/html/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-45">
doc/html/vipsmanualse6.html:<!--l. 51--><p class="nopar" >
doc/html/vipsmanualse6.html:<!--l. 53--><p class="noindent" >will throw a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span> with a diagnostic of:
doc/html/vipsmanualse6.html:  <div class="verbatim" id="verbatim-46">
doc/html/vipsmanualse6.html:<!--l. 58--><p class="nopar" >
doc/html/vipsmanualse6.html:<!--l. 60--><p class="indent" >  The member function <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">perror()</span></span></span> prints the error
doc/html/vipsmanualse6.html:message to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">stdout</span></span></span> and exits with a code of 1.
doc/html/vipsmanualse6.html:                                                 <div class="verbatim" id="verbatim-47">
doc/html/vipsmanualse6.html:<!--l. 66--><p class="nopar" >
doc/html/vipsmanualse6.html:<!--l. 68--><p class="noindent" >
doc/html/vipsmanualse6.html: id="x11-340001.6.4"></a>Convenience function</h4>
doc/html/vipsmanualse6.html:<!--l. 70--><p class="noindent" >The convenience function <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">verror</span></span></span> creates an <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">VError</span></span></span>
doc/html/vipsmanualse6.html:with the specified error string, and throws it. If you pass <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse6.html:class="pcrr7t-">""</span></span></span>
doc/html/vipsmanualse6.html:  <div class="verbatim" id="verbatim-48">
doc/html/vipsmanualse6.html:<!--l. 76--><p class="nopar" >
doc/html/vipsmanualse6.html:  <!--l. 70--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse6.html:href="vipsmanualse5.html#tailvipsmanualse5.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse6.html:<!--l. 70--><p class="indent" >  <a 
doc/html/vipsmanualse2.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse2.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse2.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse2.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse2.html:<!-- 3,html --> 
doc/html/vipsmanualse2.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse2.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse2.html:href="vipsmanualse1.html#tailvipsmanualse1.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse2.html: id="x7-70001.2"></a>The VIPS file format</h3>
doc/html/vipsmanualse2.html:<!--l. 3--><p class="noindent" >VIPS has its own very simple file format. It is used inside
doc/html/vipsmanualse2.html:<!--l. 8--><p class="indent" >  If you intend to keep an image, it&#8217;s much better to save it
doc/html/vipsmanualse2.html:<!--l. 12--><p class="noindent" >
doc/html/vipsmanualse2.html: id="x7-80001.2.1"></a>VIPS file header</h4>
doc/html/vipsmanualse2.html:<!--l. 15--><p class="noindent" >All VIPS image files start with a 64-byte header giving
doc/html/vipsmanualse2.html:href="#x7-80011">1.1<!--tex4ht:ref: fg:header --></a>. This is followed by the image data. This is
doc/html/vipsmanualse2.html:left-to-right and top-to-bottom. After the image data comes
doc/html/vipsmanualse2.html:command-line program <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">header</span></span></span> to extract the XML
doc/html/vipsmanualse2.html:from an image and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">edvips</span></span></span> to replace it, see the man
doc/html/vipsmanualse2.html:<!--l. 24--><p class="indent" >  The <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">Type </span>field, the <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">Xres</span>/<span 
doc/html/vipsmanualse2.html:class="pcrr7t-">Yres </span>fields, and the
doc/html/vipsmanualse2.html:class="pcrr7t-">Xoffset</span>/<span 
doc/html/vipsmanualse2.html:class="pcrr7t-">Yoffset </span>fields are advisory. VIPS maintains
doc/html/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/html/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span>
doc/html/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_XYZ2Lab()</span>, for example, VIPS
doc/html/vipsmanualse2.html:class="pcrr7t-">Type </span>to be <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LAB</span>), but never uses
doc/html/vipsmanualse2.html:<!--l. 33--><p class="indent" >  The <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">BandFmt</span>, <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">Coding </span>and <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">Type </span>fields can take the
doc/html/vipsmanualse2.html:href="#x7-80022">1.2<!--tex4ht:ref: fg:bandfmt --></a>, <a 
doc/html/vipsmanualse2.html:href="#x7-80033">1.3<!--tex4ht:ref: fg:coding --></a> and <a 
doc/html/vipsmanualse2.html:href="#x7-80044">1.4<!--tex4ht:ref: fg:type --></a>. The C++ and
doc/html/vipsmanualse2.html:<!--l. 39--><p class="indent" >  <a 
doc/html/vipsmanualse2.html: id="x7-80011"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse2.html:<!--l. 39--><p class="noindent" >
doc/html/vipsmanualse2.html:<div class="tabular"> <table id="TBL-1" class="tabular" 
doc/html/vipsmanualse2.html:><colgroup id="TBL-1-1g"><col 
doc/html/vipsmanualse2.html:id="TBL-1-1"></colgroup><colgroup id="TBL-1-2g"><col 
doc/html/vipsmanualse2.html:id="TBL-1-2"></colgroup><colgroup id="TBL-1-3g"><col 
doc/html/vipsmanualse2.html:id="TBL-1-3"></colgroup><tr 
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-1-1"  
doc/html/vipsmanualse2.html:class="td11">Bytes</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-1-2"  
doc/html/vipsmanualse2.html:class="td11">Represent                                                      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-1-3"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-2-1"  
doc/html/vipsmanualse2.html:class="td11">0&#8211;3    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-2-2"  
doc/html/vipsmanualse2.html:class="td11">VIPS magic number (in hex, 08 f2 f6 b6)    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-2-3"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-3-1"  
doc/html/vipsmanualse2.html:class="td11">4&#8211;7    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-3-2"  
doc/html/vipsmanualse2.html:class="td11">Number of pels per horizontal line (integer)</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-3-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Xsize      </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-4-1"  
doc/html/vipsmanualse2.html:class="td11">8&#8211;11  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-4-2"  
doc/html/vipsmanualse2.html:class="td11">Number of horizontal lines (integer)            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-4-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Ysize      </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-5-1"  
doc/html/vipsmanualse2.html:class="td11">12&#8211;15</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-5-2"  
doc/html/vipsmanualse2.html:class="td11">Number of bands (integer)                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-5-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Bands      </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-6-1"  
doc/html/vipsmanualse2.html:class="td11">16&#8211;19</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-6-2"  
doc/html/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-6-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Bbits      </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-7-1"  
doc/html/vipsmanualse2.html:class="td11">20&#8211;23</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-7-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_USHORT</span>)</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-7-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">BandFmt    </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-8-1"  
doc/html/vipsmanualse2.html:class="td11">24&#8211;27</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-8-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_NONE</span>)        </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-8-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Coding     </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-9-1"  
doc/html/vipsmanualse2.html:class="td11">28&#8211;31</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-9-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LAB</span>)                           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-9-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Type       </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-10-1"  
doc/html/vipsmanualse2.html:class="td11">32&#8211;35</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-10-2"  
doc/html/vipsmanualse2.html:class="cmsy-7">-</span><span 
doc/html/vipsmanualse2.html:class="cmr-7">1</span></sup>)  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-10-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Xres       </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-11-1"  
doc/html/vipsmanualse2.html:class="td11">36&#8211;39</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-11-2"  
doc/html/vipsmanualse2.html:class="cmsy-7">-</span><span 
doc/html/vipsmanualse2.html:class="cmr-7">1</span></sup>)       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-11-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Yres       </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-12-1"  
doc/html/vipsmanualse2.html:class="td11">40&#8211;43</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-12-2"  
doc/html/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-12-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Length     </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-13-1"  
doc/html/vipsmanualse2.html:class="td11">44&#8211;45</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-13-2"  
doc/html/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-13-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Compression</span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-14-1"  
doc/html/vipsmanualse2.html:class="td11">46&#8211;47</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-14-2"  
doc/html/vipsmanualse2.html:class="td11">Unused (legacy)                                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-14-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Level      </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-15-1"  
doc/html/vipsmanualse2.html:class="td11">48&#8211;51</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-15-2"  
doc/html/vipsmanualse2.html:class="td11">Horizontal offset of origin                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-15-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Xoffset    </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-16-1"  
doc/html/vipsmanualse2.html:class="td11">52&#8211;55</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-16-2"  
doc/html/vipsmanualse2.html:class="td11">Vertical offset of origin                                 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-16-3"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Yoffset    </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-17-1"  
doc/html/vipsmanualse2.html:class="td11">56&#8211;63</td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-17-2"  
doc/html/vipsmanualse2.html:class="td11">For future expansion (all zeros for now)       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-1-17-3"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-1-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-1-18-1"  
doc/html/vipsmanualse2.html:class="content">VIPS header</span></div><!--tex4ht:label?: x7-80011 -->
doc/html/vipsmanualse2.html:<!--l. 67--><p class="indent" >  <a 
doc/html/vipsmanualse2.html: id="x7-80022"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse2.html:<!--l. 67--><p class="noindent" >
doc/html/vipsmanualse2.html:<div class="tabular"> <table id="TBL-2" class="tabular" 
doc/html/vipsmanualse2.html:><colgroup id="TBL-2-1g"><col 
doc/html/vipsmanualse2.html:id="TBL-2-1"></colgroup><colgroup id="TBL-2-2g"><col 
doc/html/vipsmanualse2.html:id="TBL-2-2"></colgroup><colgroup id="TBL-2-3g"><col 
doc/html/vipsmanualse2.html:id="TBL-2-3"></colgroup><colgroup id="TBL-2-4g"><col 
doc/html/vipsmanualse2.html:id="TBL-2-4"></colgroup><tr 
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">BandFmt             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-2"  
doc/html/vipsmanualse2.html:class="td11">C++ and Python name</td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-3"  
doc/html/vipsmanualse2.html:class="td11">Value</td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_NOTSET   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTNOTSET      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-3"  
doc/html/vipsmanualse2.html:class="td11">-1      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_UCHAR </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTUCHAR </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-3"  
doc/html/vipsmanualse2.html:class="td11">0 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-4"  
doc/html/vipsmanualse2.html:class="td11">Unsigned 8-bit int</td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CHAR     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTCHAR        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-3"  
doc/html/vipsmanualse2.html:class="td11">1       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-4"  
doc/html/vipsmanualse2.html:class="td11">Signed 8-bit int         </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_USHORT   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTUSHORT      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-3"  
doc/html/vipsmanualse2.html:class="td11">2       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-4"  
doc/html/vipsmanualse2.html:class="td11">Unsigned 16-bit int   </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_SHORT    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTSHORT       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-3"  
doc/html/vipsmanualse2.html:class="td11">3       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-4"  
doc/html/vipsmanualse2.html:class="td11">Signed 16-bit int       </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_UINT     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTUINT        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-3"  
doc/html/vipsmanualse2.html:class="td11">4       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-4"  
doc/html/vipsmanualse2.html:class="td11">Unsigned 32-bit int   </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_INT      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTINT         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-3"  
doc/html/vipsmanualse2.html:class="td11">5       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-4"  
doc/html/vipsmanualse2.html:class="td11">Signed 32-bit int       </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_FLOAT    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTFLOAT       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-3"  
doc/html/vipsmanualse2.html:class="td11">6       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-4"  
doc/html/vipsmanualse2.html:class="td11">32-bit IEEE float      </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_COMPLEX  </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTCOMPLEX     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-3"  
doc/html/vipsmanualse2.html:class="td11">7       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_DOUBLE   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTDOUBLE      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-3"  
doc/html/vipsmanualse2.html:class="td11">8       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-4"  
doc/html/vipsmanualse2.html:class="td11">64-bit IEEE double   </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_BANDFMT</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_DPCOMPLEX</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FMTDPCOMPLEX   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-3"  
doc/html/vipsmanualse2.html:class="td11">9       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-2-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-13-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">BandFmt</span></span></div><!--tex4ht:label?: x7-80022 -->
doc/html/vipsmanualse2.html:<!--l. 90--><p class="indent" >  <a 
doc/html/vipsmanualse2.html: id="x7-80033"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse2.html:<!--l. 90--><p class="noindent" >
doc/html/vipsmanualse2.html:<div class="tabular"><table id="TBL-3" class="tabular" 
doc/html/vipsmanualse2.html:><colgroup id="TBL-3-1g"><col 
doc/html/vipsmanualse2.html:id="TBL-3-1"></colgroup><colgroup id="TBL-3-2g"><col 
doc/html/vipsmanualse2.html:id="TBL-3-2"></colgroup><colgroup id="TBL-3-3g"><col 
doc/html/vipsmanualse2.html:id="TBL-3-3"></colgroup><colgroup id="TBL-3-4g"><col 
doc/html/vipsmanualse2.html:id="TBL-3-4"></colgroup><tr 
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Coding        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-2"  
doc/html/vipsmanualse2.html:class="td11">C++ and Python name</td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-3"  
doc/html/vipsmanualse2.html:class="td11">Value</td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-1-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_NONE</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">NOCODING       </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-3"  
doc/html/vipsmanualse2.html:class="td11">0       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-2-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LABQ</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">LABQ           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-3"  
doc/html/vipsmanualse2.html:class="td11">2       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-3-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_RAD </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">RAD            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-3"  
doc/html/vipsmanualse2.html:class="td11">6       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-3-4-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-3-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-3-5-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Coding</span></span></div><!--tex4ht:label?: x7-80033 -->
doc/html/vipsmanualse2.html:<!--l. 105--><p class="indent" >  <a 
doc/html/vipsmanualse2.html: id="x7-80044"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse2.html:<!--l. 105--><p class="noindent" >
doc/html/vipsmanualse2.html:<div class="tabular"><table id="TBL-4" class="tabular" 
doc/html/vipsmanualse2.html:><colgroup id="TBL-4-1g"><col 
doc/html/vipsmanualse2.html:id="TBL-4-1"></colgroup><colgroup id="TBL-4-2g"><col 
doc/html/vipsmanualse2.html:id="TBL-4-2"></colgroup><colgroup id="TBL-4-3g"><col 
doc/html/vipsmanualse2.html:id="TBL-4-3"></colgroup><colgroup id="TBL-4-4g"><col 
doc/html/vipsmanualse2.html:id="TBL-4-4"></colgroup><tr 
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Type             </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-2"  
doc/html/vipsmanualse2.html:class="td11">C++ and Python name</td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-3"  
doc/html/vipsmanualse2.html:class="td11">Value</td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-1-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_MULTIBAND</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">MULTIBAND      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-3"  
doc/html/vipsmanualse2.html:class="td11">0       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-2-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_B</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_W      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">B</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_W            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-3"  
doc/html/vipsmanualse2.html:class="td11">1       </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-3-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_HISTOGRAM</span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">HISTOGRAM      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-3"  
doc/html/vipsmanualse2.html:class="td11">10     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-4-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_FOURIER  </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">FOURIER        </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-3"  
doc/html/vipsmanualse2.html:class="td11">24     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-5-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_XYZ      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">XYZ            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-3"  
doc/html/vipsmanualse2.html:class="td11">12     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-6-4"  
doc/html/vipsmanualse2.html:class="ptmri7t-">CIE XYZ </span>colour space      </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LAB      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">LAB            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-3"  
doc/html/vipsmanualse2.html:class="td11">13     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-7-4"  
doc/html/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/html/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span> colour space</td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CMYK     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">CMYK           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-3"  
doc/html/vipsmanualse2.html:class="td11">15     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-8-4"  
doc/html/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_icc</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_export()  </span></td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LABQ     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">LABQ           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-3"  
doc/html/vipsmanualse2.html:class="td11">16     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-9-4"  
doc/html/vipsmanualse2.html:class="td11">32-bit <span 
doc/html/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/html/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span>    </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_RGB      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">RGB            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-3"  
doc/html/vipsmanualse2.html:class="td11">17     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-10-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_UCS      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">UCS            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-3"  
doc/html/vipsmanualse2.html:class="td11">18     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-11-4"  
doc/html/vipsmanualse2.html:class="ptmri7t-">UCS(1:1) </span>colour space     </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LCH      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">LCH            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-3"  
doc/html/vipsmanualse2.html:class="td11">19     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-12-4"  
doc/html/vipsmanualse2.html:class="ptmri7t-">CIE LCh </span>colour space      </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LABS     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">LABS           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-3"  
doc/html/vipsmanualse2.html:class="td11">21     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-13-4"  
doc/html/vipsmanualse2.html:class="td11">48-bit <span 
doc/html/vipsmanualse2.html:class="ptmri7t-">CIE</span><span 
doc/html/vipsmanualse2.html:class="ptmri7t-">&#x00A0;</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">L</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">a</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span><span 
doc/html/vipsmanualse2.html:class="cmmi-10">b</span><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span>    </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-14-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_sRGB     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">sRGB           </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-3"  
doc/html/vipsmanualse2.html:class="td11">22     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-14-4"  
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-15-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_YXY      </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">YXY            </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-3"  
doc/html/vipsmanualse2.html:class="td11">23     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-15-4"  
doc/html/vipsmanualse2.html:class="ptmri7t-">CIE Yxy </span>colour space       </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-16-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_RGB16    </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">RGB16          </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-3"  
doc/html/vipsmanualse2.html:class="td11">25     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-16-4"  
doc/html/vipsmanualse2.html:class="td11">16-bit RGB                       </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-17-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_TYPE</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_GREY16   </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-2"  
doc/html/vipsmanualse2.html:class="pcrr7t-">GREY16         </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-3"  
doc/html/vipsmanualse2.html:class="td11">26     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-4-17-4"  
doc/html/vipsmanualse2.html:class="td11">16-bit monochrome          </td>
doc/html/vipsmanualse2.html: style="vertical-align:baseline;" id="TBL-4-18-"><td  style="white-space:nowrap; text-align:left;" id="TBL-4-18-1"  
doc/html/vipsmanualse2.html:class="pcrr7t-">Type</span></span></div><!--tex4ht:label?: x7-80044 -->
doc/html/vipsmanualse2.html: id="x7-90001.2.2"></a>Computation formats</h4>
doc/html/vipsmanualse2.html:<!--l. 134--><p class="noindent" >This type of image has <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">Coding </span>set to <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_NONE</span>.
doc/html/vipsmanualse2.html:out left-to-right, top-to-bottom. Each pixel contains the
doc/html/vipsmanualse2.html:band format, which may be an 8-, 16- or 32-bit integer
doc/html/vipsmanualse2.html:<!--l. 142--><p class="indent" >  All values are stored in the host-machine&#8217;s native number
doc/html/vipsmanualse2.html:representation (that is, either most-significant first, as in
doc/html/vipsmanualse2.html:SPARC and 680x0 machines, or least-significant first,
doc/html/vipsmanualse2.html:library will automatically byte-swap for you during
doc/html/vipsmanualse2.html:<!--l. 147--><p class="noindent" >
doc/html/vipsmanualse2.html: id="x7-100001.2.3"></a>Storage formats</h4>
doc/html/vipsmanualse2.html:<!--l. 149--><p class="noindent" >All storage formats have other values for the <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">Coding</span>
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LABQ </span>and
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_RAD</span>.
doc/html/vipsmanualse2.html:<!--l. 152--><p class="indent" >  <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LABQ </span>stores <span 
doc/html/vipsmanualse2.html:class="cmmi-10">L</span><sup><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span></sup>, <span 
doc/html/vipsmanualse2.html:class="cmmi-10">a</span><sup><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span></sup> and <span 
doc/html/vipsmanualse2.html:class="cmmi-10">b</span><sup><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span></sup> for each
doc/html/vipsmanualse2.html:class="cmmi-10">L</span><sup><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span></sup> and 11 bits for each of <span 
doc/html/vipsmanualse2.html:class="cmmi-10">a</span><sup><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span></sup>
doc/html/vipsmanualse2.html:class="cmmi-10">b</span><sup><span 
doc/html/vipsmanualse2.html:class="cmsy-7">*</span></sup>. These 32 bits are packed into 4 bytes, with
doc/html/vipsmanualse2.html:bytes, and the left-over bits packed into the final byte as
doc/html/vipsmanualse2.html:<!--l. 158--><p class="indent" >  This format is a little awkward to process. Some VIPS
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LABQ</span>
doc/html/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_extract</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_area()</span>, for example), but
doc/html/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_LabQ2Lab()</span>)
doc/html/vipsmanualse2.html:<!--l. 163--><p class="indent" >  <span 
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_RAD </span>stores <span 
doc/html/vipsmanualse2.html:class="cmmi-10">RGB </span>or <span 
doc/html/vipsmanualse2.html:class="cmmi-10">XY Z </span>float images
doc/html/vipsmanualse2.html:<!--l. 169--><p class="indent" >  This format is a little awkward to process. Some VIPS
doc/html/vipsmanualse2.html:class="pcrr7t-">IM</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_CODING</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_RAD</span>
doc/html/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_extract</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_area()</span>, for example), but
doc/html/vipsmanualse2.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse2.html:class="pcrr7t-">_rad2float()</span>
doc/html/vipsmanualse2.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse2.html:href="vipsmanualse1.html#tailvipsmanualse1.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse2.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualse10.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse10.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse10.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse10.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse10.html:<!-- 3,html --> 
doc/html/vipsmanualse10.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse10.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse10.html:href="vipsmanualse9.html#tailvipsmanualse9.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse10.html: id="x16-670002.4"></a>The VIPS base class: <span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></h3>
doc/html/vipsmanualse10.html:<!--l. 4--><p class="noindent" >VIPS is in the process of moving to an object system based
doc/html/vipsmanualse10.html:on <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">GObject</span></span></span>. You can read about the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">GObjec</span></span></span> library at
doc/html/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-109">
doc/html/vipsmanualse10.html:<!--l. 9--><p class="nopar" >
doc/html/vipsmanualse10.html:<!--l. 11--><p class="indent" >  We&#8217;ve implemented two new subsystems (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsFormat</span></span></span>
doc/html/vipsmanualse10.html:and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsInterpolate</span></span></span>) on top of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> but
doc/html/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> is still developing and is likely to change in
doc/html/vipsmanualse10.html:<!--l. 16--><p class="indent" >    This section quickly summarises enough of the
doc/html/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> system to let you use the two derived APIs
doc/html/vipsmanualse10.html:<!--l. 20--><p class="noindent" >
doc/html/vipsmanualse10.html: id="x16-680002.4.1"></a>Properties</h4>
doc/html/vipsmanualse10.html:<!--l. 22--><p class="noindent" >Like the rest of VIPS, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span> is a functional type.
doc/html/vipsmanualse10.html:<!--l. 26--><p class="indent" >    To enforce these rules, VIPS extends the standard
doc/html/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">GObject</span></span></span> property system and adds a new phase to
doc/html/vipsmanualse10.html:<!--l. 30--><p class="noindent" >
doc/html/vipsmanualse10.html: id="x16-690002.4.1"></a>Lookup</h5>
doc/html/vipsmanualse10.html:<!--l. 32--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">vips_type_find()</span></span></span> is a convenience function that looks
doc/html/vipsmanualse10.html:  <div class="verbatim" id="verbatim-110">
doc/html/vipsmanualse10.html:<!--l. 38--><p class="nopar" >
doc/html/vipsmanualse10.html:<!--l. 40--><p class="noindent" >finds a subclass of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsInterpolate</span></span></span> nicknamed &#8216;bilinear&#8217;.
doc/html/vipsmanualse10.html:can be rather unwieldy (<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsInterpolateBilinear</span></span></span>
doc/html/vipsmanualse10.html:<!--l. 45--><p class="noindent" >
doc/html/vipsmanualse10.html: id="x16-700002.4.1"></a>Create</h5>
doc/html/vipsmanualse10.html:<!--l. 47--><p class="noindent" >Build an instance with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">g_object_new()</span></span></span>. For example:
doc/html/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-111">
doc/html/vipsmanualse10.html:<!--l. 54--><p class="nopar" >
doc/html/vipsmanualse10.html:<!--l. 56--><p class="indent" >  You can set any of the object&#8217;s properties in the constructor.
doc/html/vipsmanualse10.html:  <div class="verbatim" id="verbatim-112">
doc/html/vipsmanualse10.html:<!--l. 63--><p class="nopar" >
doc/html/vipsmanualse10.html:<!--l. 65--><p class="indent" >  You can loop over an object&#8217;s required and optional
doc/html/vipsmanualse10.html:parameters with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">vips_argument_map()</span></span></span>.
doc/html/vipsmanualse10.html:<!--l. 68--><p class="noindent" >
doc/html/vipsmanualse10.html: id="x16-710002.4.1"></a>Build</h5>
doc/html/vipsmanualse10.html:<!--l. 70--><p class="noindent" >Once all of the required any any of the optional object
doc/html/vipsmanualse10.html:parameters have been set, call <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">vips_object_build()</span></span></span>:
doc/html/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-113">
doc/html/vipsmanualse10.html:<!--l. 75--><p class="nopar" >
doc/html/vipsmanualse10.html:<!--l. 77--><p class="indent" >  This function checks that all the parameters have been set
doc/html/vipsmanualse10.html:correctly and starts the object working. It returns non-zero
doc/html/vipsmanualse10.html:on error, setting <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">im_error_string()</span></span></span>.
doc/html/vipsmanualse10.html:<!--l. 81--><p class="noindent" >
doc/html/vipsmanualse10.html: id="x16-720002.4.1"></a>Use</h5>
doc/html/vipsmanualse10.html:<!--l. 83--><p class="noindent" >The object is now fully working. You can read results from
doc/html/vipsmanualse10.html:  <div class="verbatim" id="verbatim-114">
doc/html/vipsmanualse10.html:<!--l. 89--><p class="nopar" >
doc/html/vipsmanualse10.html:<!--l. 91--><p class="noindent" >
doc/html/vipsmanualse10.html: id="x16-730002.4.2"></a>Convenience functions</h4>
doc/html/vipsmanualse10.html:<!--l. 93--><p class="noindent" >Two functions simplify building and printing objects.
doc/html/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">vips_object_new_from_string()</span></span></span> makes a new
doc/html/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-115">
doc/html/vipsmanualse10.html:<!--l. 101--><p class="nopar" >
doc/html/vipsmanualse10.html:<!--l. 103--><p class="indent" >  This is the function used by <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">IM_INPUT_INTERPOLATE()</span></span></span>,
doc/html/vipsmanualse10.html:for example, to parse command-line arguments. The syntax
doc/html/vipsmanualse10.html:  <div class="verbatim" id="verbatim-116">
doc/html/vipsmanualse10.html:nickname&#x00A0;[&#x00A0;(&#x00A0;required-arg1,
doc/html/vipsmanualse10.html:&#x00A0;<br />&#x00A0;&#x00A0;required-argn,
doc/html/vipsmanualse10.html:&#x00A0;<br />&#x00A0;&#x00A0;optional-arg-name&#x00A0;=&#x00A0;value,
doc/html/vipsmanualse10.html:&#x00A0;<br />&#x00A0;&#x00A0;optional-argm-name&#x00A0;=&#x00A0;value&#x00A0;)&#x00A0;]
doc/html/vipsmanualse10.html:<!--l. 113--><p class="nopar" >
doc/html/vipsmanualse10.html:<!--l. 115--><p class="indent" >  So values for all the required arguments, in the correct
doc/html/vipsmanualse10.html:<!--l. 119--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">vips_object_to_string()</span></span></span> is the exact opposite:
doc/html/vipsmanualse10.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span>.
doc/html/vipsmanualse10.html:<!--l. 123--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">vips_object_new()</span></span></span> wraps up the business of
doc/html/vipsmanualse10.html:<!--l. 128--><p class="indent" >  A switch to the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">vips</span></span></span> command-line program is handy
doc/html/vipsmanualse10.html:for listing subtypes of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse10.html:class="pcrr7t-">VipsObject</span></span></span>. Try:
doc/html/vipsmanualse10.html:                                                 <div class="verbatim" id="verbatim-117">
doc/html/vipsmanualse10.html:  $&#x00A0;vips&#x00A0;--list&#x00A0;classes 
doc/html/vipsmanualse10.html:<!--l. 133--><p class="nopar" >
doc/html/vipsmanualse10.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse10.html:href="vipsmanualse9.html#tailvipsmanualse9.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse10.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanual.css:.cmr-7{font-size:70%;}
doc/html/vipsmanual.css:.cmmi-10{font-style: italic;}
doc/html/vipsmanual.css:.cmsy-7{font-size:70%;}
doc/html/vipsmanual.css:.ptmr7t-{font-family: monospace;}
doc/html/vipsmanual.css:.ptmr7t-{font-family: monospace;}
doc/html/vipsmanual.css:.ptmr7t-{font-family: monospace;}
doc/html/vipsmanual.css:.ptmr7t-x-x-207{font-size:207%;font-family: monospace;}
doc/html/vipsmanual.css:.ptmr7t-x-x-207{font-family: monospace;}
doc/html/vipsmanual.css:.ptmr7t-x-x-207{font-family: monospace;}
doc/html/vipsmanual.css:.ptmr7t-x-x-120{font-size:120%;font-family: monospace;}
doc/html/vipsmanual.css:.ptmr7t-x-x-120{font-family: monospace;}
doc/html/vipsmanual.css:.ptmr7t-x-x-120{font-family: monospace;}
doc/html/vipsmanual.css:.pcrr7t-{font-family: monospace;}
doc/html/vipsmanual.css:.ptmri7t-{font-style: italic;}
doc/html/vipsmanual.css:.ptmb7t-{ font-weight: bold;}
doc/html/vipsmanual.css:.pcrb7t-{ font-family: monospace; font-weight: bold;}
doc/html/vipsmanual.css:p.noindent { text-indent: 0em }
doc/html/vipsmanual.css:td p.noindent { text-indent: 0em; margin-top:0em; }
doc/html/vipsmanual.css:p.nopar { text-indent: 0em; }
doc/html/vipsmanual.css:p.indent{ text-indent: 1.5em }
doc/html/vipsmanual.css:a img { border-top: 0; border-left: 0; border-right: 0; }
doc/html/vipsmanual.css:center { margin-top:1em; margin-bottom:1em; }
doc/html/vipsmanual.css:td center { margin-top:0em; margin-bottom:0em; }
doc/html/vipsmanual.css:img.math{vertical-align:middle;}
doc/html/vipsmanual.css:li p.indent { text-indent: 0em }
doc/html/vipsmanual.css:li p:first-child{ margin-top:0em; }
doc/html/vipsmanual.css:li p:last-child, li div:last-child { margin-bottom:0.5em; }
doc/html/vipsmanual.css:li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
doc/html/vipsmanual.css:.enumerate1 {list-style-type:decimal;}
doc/html/vipsmanual.css:.enumerate2 {list-style-type:lower-alpha;}
doc/html/vipsmanual.css:.enumerate3 {list-style-type:lower-roman;}
doc/html/vipsmanual.css:.enumerate4 {list-style-type:upper-alpha;}
doc/html/vipsmanual.css:div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
doc/html/vipsmanual.css:.obeylines-h,.obeylines-v {white-space: nowrap; }
doc/html/vipsmanual.css:div.obeylines-v p { margin-top:0; margin-bottom:0; }
doc/html/vipsmanual.css:.overline{ text-decoration:overline; }
doc/html/vipsmanual.css:.overline img{ border-top: 1px solid black; }
doc/html/vipsmanual.css:td.displaylines {text-align:center; white-space:nowrap;}
doc/html/vipsmanual.css:.centerline {text-align:center;}
doc/html/vipsmanual.css:.rightline {text-align:right;}
doc/html/vipsmanual.css:div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
doc/html/vipsmanual.css:.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/html/vipsmanual.css:div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/html/vipsmanual.css:div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
doc/html/vipsmanual.css:div.center div {text-align: left;}
doc/html/vipsmanual.css:div.flushright, div.flushright div.flushright {text-align: right;}
doc/html/vipsmanual.css:div.flushright div {text-align: left;}
doc/html/vipsmanual.css:div.flushleft {text-align: left;}
doc/html/vipsmanual.css:.underline{ text-decoration:underline; }
doc/html/vipsmanual.css:.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
doc/html/vipsmanual.css:.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
doc/html/vipsmanual.css:.framebox-c {text-align:center;}
doc/html/vipsmanual.css:.framebox-l {text-align:left;}
doc/html/vipsmanual.css:.framebox-r {text-align:right;}
doc/html/vipsmanual.css:span.thank-mark{ vertical-align: super }
doc/html/vipsmanual.css:span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
doc/html/vipsmanual.css:div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
doc/html/vipsmanual.css:table.tabular td p{margin-top:0em;}
doc/html/vipsmanual.css:table.tabular {margin-left: auto; margin-right: auto;}
doc/html/vipsmanual.css:td p:first-child{ margin-top:0em; }
doc/html/vipsmanual.css:td p:last-child{ margin-bottom:0em; }
doc/html/vipsmanual.css:div.td00{ margin-left:0pt; margin-right:0pt; }
doc/html/vipsmanual.css:div.td01{ margin-left:0pt; margin-right:5pt; }
doc/html/vipsmanual.css:div.td10{ margin-left:5pt; margin-right:0pt; }
doc/html/vipsmanual.css:div.td11{ margin-left:5pt; margin-right:5pt; }
doc/html/vipsmanual.css:table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
doc/html/vipsmanual.css:td.td00{ padding-left:0pt; padding-right:0pt; }
doc/html/vipsmanual.css:td.td01{ padding-left:0pt; padding-right:5pt; }
doc/html/vipsmanual.css:td.td10{ padding-left:5pt; padding-right:0pt; }
doc/html/vipsmanual.css:td.td11{ padding-left:5pt; padding-right:5pt; }
doc/html/vipsmanual.css:table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
doc/html/vipsmanual.css:.tabbing-right {text-align:right;}
doc/html/vipsmanual.css:span.TEX {letter-spacing: -0.125em; }
doc/html/vipsmanual.css:span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
doc/html/vipsmanual.css:a span.TEX span.E {text-decoration: none; }
doc/html/vipsmanual.css:span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
doc/html/vipsmanual.css:span.LATEX span.TEX{ position:relative; left: -0.4em; }
doc/html/vipsmanual.css:div.float, div.figure {margin-left: auto; margin-right: auto;}
doc/html/vipsmanual.css:div.float img {text-align:center;}
doc/html/vipsmanual.css:div.figure img {text-align:center;}
doc/html/vipsmanual.css:.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
doc/html/vipsmanual.css:.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
doc/html/vipsmanual.css:.equation td{text-align:center; }
doc/html/vipsmanual.css:td.equation { margin-top:1em; margin-bottom:1em; } 
doc/html/vipsmanual.css:td.equation-label { width:5%; text-align:center; }
doc/html/vipsmanual.css:td.eqnarray4 { width:5%; white-space: normal; }
doc/html/vipsmanual.css:table.eqnarray-star, table.eqnarray {width:100%;}
doc/html/vipsmanual.css:div.eqnarray{text-align:center;}
doc/html/vipsmanual.css:div.array {text-align:center;}
doc/html/vipsmanual.css:div.pmatrix {text-align:center;}
doc/html/vipsmanual.css:span.pmatrix img{vertical-align:middle;}
doc/html/vipsmanual.css:div.pmatrix {text-align:center;}
doc/html/vipsmanual.css:span.bar-css {text-decoration:overline;}
doc/html/vipsmanual.css:img.cdots{vertical-align:middle;}
doc/html/vipsmanual.css:.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
doc/html/vipsmanual.css:.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
doc/html/vipsmanual.css:.index-item, .index-subitem, .index-subsubitem {display:block}
doc/html/vipsmanual.css:div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
doc/html/vipsmanual.css:div.caption span.id{font-weight: bold; white-space: nowrap; }
doc/html/vipsmanual.css:h1.partHead{text-align: center}
doc/html/vipsmanual.css:p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
doc/html/vipsmanual.css:p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
doc/html/vipsmanual.css:.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
doc/html/vipsmanual.css:.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
doc/html/vipsmanual.css:.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
doc/html/vipsmanual.css:.verse{white-space:nowrap; margin-left:2em}
doc/html/vipsmanual.css:div.maketitle {text-align:center;}
doc/html/vipsmanual.css:h2.titleHead{text-align:center;}
doc/html/vipsmanual.css:div.maketitle{ margin-bottom: 2em; }
doc/html/vipsmanual.css:div.author, div.date {text-align:center;}
doc/html/vipsmanual.css:div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
doc/html/vipsmanual.css:div.author{white-space: nowrap;}
doc/html/vipsmanual.css:.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
doc/html/vipsmanual.css:h1.partHead{text-align: center}
doc/html/vipsmanual.css: .chapterToc, .likechapterToc {margin-left:0em;}
doc/html/vipsmanual.css: .chapterToc ~ .likesectionToc, .chapterToc ~ .sectionToc, .likechapterToc ~ .likesectionToc, .likechapterToc ~ .sectionToc {margin-left:2em;}
doc/html/vipsmanual.css: .chapterToc ~ .likesectionToc ~ .likesubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc, .likechapterToc ~ .sectionToc ~ .subsectionToc {margin-left:4em;}
doc/html/vipsmanual.css:.chapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc ~ .subsubsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likechapterToc ~ .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc .likechapterToc ~ .sectionToc ~ .subsectionToc ~ .subsubsectionToc {margin-left:6em;}
doc/html/vipsmanual.css: .likesectionToc , .sectionToc {margin-left:0em;}
doc/html/vipsmanual.css: .likesectionToc ~ .likesubsectionToc, .likesectionToc ~ .subsectionToc, .sectionToc ~ .likesubsectionToc, .sectionToc ~ .subsectionToc {margin-left:2em;}
doc/html/vipsmanual.css:.likesectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .likesectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .likesectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .likesectionToc ~ .subsectionToc ~ .subsubsectionToc, .sectionToc ~ .likesubsectionToc ~ .likesubsubsectionToc, .sectionToc ~ .likesubsectionToc ~ .subsubsectionToc, .sectionToc ~ .subsectionToc ~ .likesubsubsectionToc, .sectionToc ~ .subsectionToc ~ .subsubsectionToc {margin-left:4em;}
doc/html/vipsmanual.css: .likesubsectionToc, .subsectionToc {margin-left:0em;}
doc/html/vipsmanual.css: .likesubsectionToc ~ .subsubsectionToc, .subsectionToc ~ .subsubsectionToc, {margin-left:2em;}
doc/html/vipsmanual.css:.figure img.graphics {margin-left:10%;}
doc/html/vipsmanualch1.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualch1.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualch1.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualch1.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualch1.html:<!-- 3,html --> 
doc/html/vipsmanualch1.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualch1.html:  <!--l. 61--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualch1.html:href="vipsmanualli3.html#tailvipsmanualli3.html" >prev-tail</a>] [<a 
doc/html/vipsmanualch1.html: id="x5-40001"></a>VIPS from C++ and Python</h2>
doc/html/vipsmanualch1.html:href="vipsmanualse1.html#x6-50001.1">Introduction</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse1.html#x6-60001.1.1">If you&#8217;ve used the C API</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse2.html#x7-70001.2">The VIPS file format</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse2.html#x7-80001.2.1">VIPS file header</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse2.html#x7-90001.2.2">Computation formats</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse2.html#x7-100001.2.3">Storage formats</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse3.html#x8-110001.3">The <span 
doc/html/vipsmanualch1.html:class="pcrr7t-">VImage </span>class</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse3.html#x8-120001.3.1">Constructors</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse3.html#x8-130001.3.2">File conversion</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse3.html#x8-140001.3.3">Projection functions</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse3.html#x8-150001.3.4">Assignment</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse3.html#x8-160001.3.5">Computing with <span 
doc/html/vipsmanualch1.html:class="pcrr7t-">VImage</span>s</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse3.html#x8-170001.3.6">Writing results</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse3.html#x8-180001.3.7">Type conversions</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse4.html#x9-190001.4">The <span 
doc/html/vipsmanualch1.html:class="pcrr7t-">VMask </span>class</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse4.html#x9-200001.4.1">Constructors</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse4.html#x9-210001.4.2">Projection functions</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse4.html#x9-220001.4.3">Assignment</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse4.html#x9-230001.4.4">Computing with <span 
doc/html/vipsmanualch1.html:class="pcrr7t-">VMask</span></a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse4.html#x9-240001.4.5"><span 
doc/html/vipsmanualch1.html:class="pcrr7t-">VIMask </span>operations</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse4.html#x9-250001.4.6"><span 
doc/html/vipsmanualch1.html:class="pcrr7t-">VDMask </span>operations</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse4.html#x9-260001.4.7">Output of masks</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse5.html#x10-270001.5">The <span 
doc/html/vipsmanualch1.html:class="pcrr7t-">VDisplay </span>class</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse5.html#x10-280001.5.1">Constructors</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse5.html#x10-290001.5.2">Projection functions</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse6.html#x11-300001.6">The <span 
doc/html/vipsmanualch1.html:class="pcrr7t-">VError </span>class</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse6.html#x11-310001.6.1">Constructors</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse6.html#x11-320001.6.2">Projection functions</a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse6.html#x11-330001.6.3">Computing with <span 
doc/html/vipsmanualch1.html:class="pcrr7t-">VError</span></a></span>
doc/html/vipsmanualch1.html:href="vipsmanualse6.html#x11-340001.6.4">Convenience function</a></span>
doc/html/vipsmanualch1.html:  <!--l. 70--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualch1.html:href="vipsmanualli3.html#tailvipsmanualli3.html" >prev-tail</a>] [<a 
doc/html/vipsmanualch1.html:<!--l. 70--><p class="indent" >  <a 
doc/html/vipsmanualse3.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse3.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse3.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse3.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse3.html:<!-- 3,html --> 
doc/html/vipsmanualse3.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse3.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse3.html:href="vipsmanualse2.html#tailvipsmanualse2.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse3.html: id="x8-110001.3"></a>The <span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage </span>class</h3>
doc/html/vipsmanualse3.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> class is a layer over the VIPS <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span>
doc/html/vipsmanualse3.html:<!--l. 8--><p class="noindent" >
doc/html/vipsmanualse3.html: id="x8-120001.3.1"></a>Constructors</h4>
doc/html/vipsmanualse3.html:<!--l. 10--><p class="noindent" >There are two principal constructors for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span>:
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-5">
doc/html/vipsmanualse3.html:<!--l. 16--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 18--><p class="indent" >  The first form creates a new <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span>, linking it to the
doc/html/vipsmanualse3.html:named file. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">mode</span></span></span> sets the mode for the file: it can take the
doc/html/vipsmanualse3.html:class="pcrb7t-">"r"</span> </dt><dd 
doc/html/vipsmanualse3.html:class="description">The named image file is opened read-only. This is
doc/html/vipsmanualse3.html:class="pcrb7t-">"w"</span> </dt><dd 
doc/html/vipsmanualse3.html:class="description">A  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> is  created  which,  when  written  to,
doc/html/vipsmanualse3.html:class="pcrb7t-">"t"</span> </dt><dd 
doc/html/vipsmanualse3.html:class="description">As  the  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">"w"</span></span></span> mode,  but  pixels  written  to  the
doc/html/vipsmanualse3.html:        <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> will  be  saved  in  a  temporary  memory
doc/html/vipsmanualse3.html:class="pcrb7t-">"p"</span> </dt><dd 
doc/html/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse3.html:href="#x8-160001.3.5">1.3.5<!--tex4ht:ref: sec:compute --></a>.
doc/html/vipsmanualse3.html:class="pcrb7t-">"rw"</span> </dt><dd 
doc/html/vipsmanualse3.html:class="description">As  the  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">"r"</span></span></span> mode,  but  the  image  is  mapped
doc/html/vipsmanualse3.html:        into your address space read-write. This mode is
doc/html/vipsmanualse3.html:        useful for paintbox-style applications which need
doc/html/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse3.html:href="vipsmanualse18.html#x26-1140004.2.8">4.2.8<!--tex4ht:ref: sec:inplace --></a>.
doc/html/vipsmanualse3.html:<!--l. 46--><p class="indent" >    The second form of constructor is shorthand for:
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-6">
doc/html/vipsmanualse3.html:<!--l. 50--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 52--><p class="noindent" >It is used for representing intermediate results of
doc/html/vipsmanualse3.html:<!--l. 55--><p class="indent" >  Two further constructors are handy for wrapping
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> around existing images.
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-7">
doc/html/vipsmanualse3.html:<!--l. 63--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 65--><p class="noindent" >The first constructor makes a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> from an area
doc/html/vipsmanualse3.html:system), and the second makes a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> from an
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span>.
doc/html/vipsmanualse3.html:<!--l. 70--><p class="indent" >    In both these two cases, the VIPS C++ API does not
doc/html/vipsmanualse3.html:<!--l. 73--><p class="indent" >    The Python interface adds the usual <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">frombuffer</span></span></span> and
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fromstring</span></span></span> methods.
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-8">
doc/html/vipsmanualse3.html:&#x00A0;<br />&#x00A0;&#x00A0;width,&#x00A0;height,&#x00A0;bands,&#x00A0;format)&#x00A0;-&#x003E;
doc/html/vipsmanualse3.html:<!--l. 80--><p class="nopar" >
doc/html/vipsmanualse3.html:                                              <div class="verbatim" id="verbatim-9">
doc/html/vipsmanualse3.html: &#x00A0;<br />&#x00A0;&#x00A0;width,&#x00A0;height,&#x00A0;bands,&#x00A0;format)&#x00A0;-&#x003E;
doc/html/vipsmanualse3.html:<!--l. 86--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 88--><p class="noindent" >Use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fromstring</span></span></span> to avoid worries about object lifetime,
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">frombuffer</span></span></span> for speed, but you have to manage object
doc/html/vipsmanualse3.html:<!--l. 93--><p class="indent" >    They are useful for moving images into VIPS from other
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">vips_from_PIL_mode</span></span></span>, which turns a PIL mode into a
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-10">
doc/html/vipsmanualse3.html:VImage.vips_from_PIL_mode&#x00A0;(mode)&#x00A0;-&#x003E;
doc/html/vipsmanualse3.html:<!--l. 100--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 102--><p class="indent" >  See also <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">tobuffer</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">tostring</span></span></span> below.
doc/html/vipsmanualse3.html:<!--l. 104--><p class="noindent" >
doc/html/vipsmanualse3.html: id="x8-130001.3.2"></a>File conversion</h4>
doc/html/vipsmanualse3.html:<!--l. 106--><p class="noindent" >VIPS can read and write a number of different file formats.
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-11">
doc/html/vipsmanualse3.html:<!--l. 111--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 113--><p class="noindent" >This will decompress the file <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fred.jpg</span></span></span> to a memory
doc/html/vipsmanualse3.html:reference to it called <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">jim</span></span></span>.
doc/html/vipsmanualse3.html:<!--l. 117--><p class="indent" >    Options are passed to the file format converters embedded
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-12">
doc/html/vipsmanualse3.html:<!--l. 122--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 124--><p class="noindent" >Writing to the descriptor <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">out</span></span></span> will cause a TIFF image to be
doc/html/vipsmanualse3.html:<!--l. 128--><p class="indent" >  See the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_open(3)</span></span></span> for details of all
doc/html/vipsmanualse3.html:for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VipsFormat(3)</span></span></span> for a lower-level API which lets you
doc/html/vipsmanualse3.html:<!--l. 133--><p class="noindent" >
doc/html/vipsmanualse3.html: id="x8-140001.3.3"></a>Projection functions</h4>
doc/html/vipsmanualse3.html:<!--l. 135--><p class="noindent" >A set of member functions of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> provide access to the
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-13">
doc/html/vipsmanualse3.html:<!--l. 152--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 154--><p class="noindent" >Where <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">TBandFmt</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">TCoding</span></span></span>, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">TType</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">TCompression</span></span></span>
doc/html/vipsmanualse3.html:are <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">enum</span></span></span>s for the types in the VIPS file header. See
doc/html/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse3.html:href="vipsmanualse2.html#x7-80001.2.1">1.2.1<!--tex4ht:ref: sec:header --></a> for an explanation of all of these fields.
doc/html/vipsmanualse3.html:<!--l. 159--><p class="indent" >    Two functions give access to the filename and history
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-14">
doc/html/vipsmanualse3.html:<!--l. 165--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 167--><p class="indent" >  You can get and set extra metadata fields with
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">meta_get()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">meta_set()</span></span></span>. They read and write
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">GValue</span></span></span> objects, see <span 
doc/html/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse3.html:href="vipsmanualse8.html#x14-430002.2.6">2.2.6<!--tex4ht:ref: sec:meta --></a>.
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-15">
doc/html/vipsmanualse3.html:<!--l. 175--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 177--><p class="indent" >  A set of convenience functions build on these two to
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-16">
doc/html/vipsmanualse3.html:<!--l. 194--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 196--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">image()</span></span></span> member function provides access to the
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span> descriptor underlying the C++ API. See the <span 
doc/html/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse3.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a> for
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-17">
doc/html/vipsmanualse3.html:<!--l. 201--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 203--><p class="indent" >  The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">data()</span></span></span> member function returns a pointer to an
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-18">
doc/html/vipsmanualse3.html:<!--l. 208--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 210--><p class="noindent" >This can be very slow and use huge amounts of RAM.
doc/html/vipsmanualse3.html:<!--l. 213--><p class="indent" >  The Python interface adds <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">tobuffer</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">tostring</span></span></span>.
doc/html/vipsmanualse3.html:These operations call <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">data()</span></span></span> to generate the image pixels
doc/html/vipsmanualse3.html:<!--l. 218--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">tostring</span></span></span> to avoid worries about object lifetime,
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">tobuffer</span></span></span> for speed, but you have to manage object
doc/html/vipsmanualse3.html:<!--l. 222--><p class="indent" >  They are useful for moving images from VIPS into other
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">PIL_mode_from_vips</span></span></span>, which makes a PIL mode from
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-19">
doc/html/vipsmanualse3.html:  VImage.PIL_mode_from_vips&#x00A0;(vips-image)&#x00A0;-&#x003E;
doc/html/vipsmanualse3.html:<!--l. 229--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 231--><p class="indent" >  See also <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">frombuffer</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fromstring</span></span></span> above.
doc/html/vipsmanualse3.html:<!--l. 233--><p class="noindent" >
doc/html/vipsmanualse3.html: id="x8-150001.3.4"></a>Assignment</h4>
doc/html/vipsmanualse3.html:<!--l. 235--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> defines copy and assignment, with reference-counted,
doc/html/vipsmanualse3.html:pointer-style semantics. For example, if you write:
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-20">
doc/html/vipsmanualse3.html:<!--l. 243--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 245--><p class="indent" >  This will automatically close the file <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>, and make
doc/html/vipsmanualse3.html:the variable <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fred</span></span></span> point to the image <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">jim.v</span></span></span> instead. Both
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">jim</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fred</span></span></span> now point to the same underlying image
doc/html/vipsmanualse3.html:<!--l. 249--><p class="indent" >  Internally, a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> object is just a pointer to a
doc/html/vipsmanualse3.html:reference-counting block, which in turn holds a pointer to
doc/html/vipsmanualse3.html:the underlying VIPS <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">IMAGE</span></span></span> type. You can therefore
doc/html/vipsmanualse3.html:efficiently pass <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> objects to functions by value, and
doc/html/vipsmanualse3.html:return <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> objects as function results.
doc/html/vipsmanualse3.html:<!--l. 254--><p class="noindent" >
doc/html/vipsmanualse3.html: id="x8-160001.3.5"></a>Computing with <span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span>s</h4>
doc/html/vipsmanualse3.html:<!--l. 257--><p class="noindent" >All VIPS image processing operations are member
doc/html/vipsmanualse3.html:functions of the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> class. For example:
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-21">
doc/html/vipsmanualse3.html:<!--l. 265--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 267--><p class="indent" >  Will apply <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_costra()</span></span></span> to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>, making an
doc/html/vipsmanualse3.html:pixel in <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>; then add that image to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">jim.v</span></span></span>. Finally,
doc/html/vipsmanualse3.html:the result will be held in <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">result</span></span></span>.
doc/html/vipsmanualse3.html:<!--l. 271--><p class="indent" >    VIPS is a demand-driven image processing system:
doc/html/vipsmanualse3.html:functions on images &#8212; <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">result.BandFmt()</span></span></span> for
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">min()</span></span></span>, find minimum value), VIPS evaluates all of the
doc/html/vipsmanualse3.html:<!--l. 280--><p class="indent" >    <span 
doc/html/vipsmanualse3.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse3.html:href="vipsmanualse18.html#x26-1060004.2">4.2<!--tex4ht:ref: sec:packages --></a> lists all of the VIPS packages. These general rules
doc/html/vipsmanualse3.html:        function  names  by  dropping  the  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_</span></span></span> prefix,  and
doc/html/vipsmanualse3.html:        if present, the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">tra</span></span></span> postfix, the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">const</span></span></span> postfix and
doc/html/vipsmanualse3.html:        the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">_vec</span></span></span> postfix. For example, the VIPS operation
doc/html/vipsmanualse3.html:        <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_extract()</span></span></span> becomes   <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">extract()</span></span></span>,   and
doc/html/vipsmanualse3.html:        <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_costra()</span></span></span> becomes <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">cos()</span></span></span>.
doc/html/vipsmanualse3.html:        <li class="itemize">The   <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> object   to   which   you   apply   the
doc/html/vipsmanualse3.html:        no image input, the member is declared <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">static</span></span></span>.
doc/html/vipsmanualse3.html:        <!--l. 297--><p class="noindent" >For   example,   <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_project(3)</span></span></span> returns   two
doc/html/vipsmanualse3.html:    <div class="verbatim" id="verbatim-22">
doc/html/vipsmanualse3.html:    <!--l. 303--><p class="nopar" >
doc/html/vipsmanualse3.html:    <!--l. 305--><p class="noindent" >In other words, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">.project()</span></span></span> writes the second result
doc/html/vipsmanualse3.html:    to the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> you pass as an argument.
doc/html/vipsmanualse3.html:    <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">INTMASK</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">DOUBLEMASK</span></span></span> types become <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VMask</span></span></span>
doc/html/vipsmanualse3.html:    objects, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_col_display</span></span></span> types become <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VDisplay</span></span></span>
doc/html/vipsmanualse3.html:    C++ API member. For example, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_andimage</span></span></span>,
doc/html/vipsmanualse3.html:    <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_andimage_vec</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">im_andimageconst</span></span></span> all
doc/html/vipsmanualse3.html:    map to the member <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">andimage</span></span></span>. The API relies on
doc/html/vipsmanualse3.html:<!--l. 321--><p class="indent" >  This part of the C++ API is generated automatically
doc/html/vipsmanualse3.html:up-to-date.
doc/html/vipsmanualse3.html:<!--l. 324--><p class="indent" >  There are a set of arithmetic operators defined for your
doc/html/vipsmanualse3.html:expression and include <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> in there.
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-23">
doc/html/vipsmanualse3.html:<!--l. 332--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 334--><p class="noindent" >
doc/html/vipsmanualse3.html: id="x8-170001.3.6"></a>Writing results</h4>
doc/html/vipsmanualse3.html:<!--l. 336--><p class="noindent" >Once you have computed some result, you can write it to a
doc/html/vipsmanualse3.html:file with the member <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">write()</span></span></span>. It takes the following
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-24">
doc/html/vipsmanualse3.html:<!--l. 343--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 345--><p class="indent" >  The first form simply writes the image to the named file.
doc/html/vipsmanualse3.html:The second form writes the image to the specified <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span>
doc/html/vipsmanualse3.html:                                                 <div class="verbatim" id="verbatim-25">
doc/html/vipsmanualse3.html:<!--l. 353--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 355--><p class="noindent" >This creates a temporary memory buffer called <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">jim</span></span></span>, and
doc/html/vipsmanualse3.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">fred.v</span></span></span>.
doc/html/vipsmanualse3.html:<!--l. 359--><p class="indent" >    The final form of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">write()</span></span></span> writes the image to a
doc/html/vipsmanualse3.html:<!--l. 362--><p class="noindent" >
doc/html/vipsmanualse3.html: id="x8-180001.3.7"></a>Type conversions</h4>
doc/html/vipsmanualse3.html:<!--l. 364--><p class="noindent" >Two type conversions are defined: you can cast <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VImage</span></span></span> to
doc/html/vipsmanualse3.html:a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VDMask</span></span></span> and to a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse3.html:class="pcrr7t-">VIMask</span></span></span>.
doc/html/vipsmanualse3.html:  <div class="verbatim" id="verbatim-26">
doc/html/vipsmanualse3.html:<!--l. 370--><p class="nopar" >
doc/html/vipsmanualse3.html:<!--l. 372--><p class="indent" >  These operations are slow and need a lot of memory!
doc/html/vipsmanualse3.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse3.html:href="vipsmanualse2.html#tailvipsmanualse2.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse3.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualse5.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse5.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse5.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse5.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse5.html:<!-- 3,html --> 
doc/html/vipsmanualse5.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse5.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse5.html:href="vipsmanualse4.html#tailvipsmanualse4.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse5.html: id="x10-270001.5"></a>The <span 
doc/html/vipsmanualse5.html:class="pcrr7t-">VDisplay </span>class</h3>
doc/html/vipsmanualse5.html:<!--l. 3--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">VDisplay</span></span></span> class is an abstraction over the VIPS
doc/html/vipsmanualse5.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">im_col_display</span></span></span> type which gives convenient and safe
doc/html/vipsmanualse5.html:<!--l. 6--><p class="indent" >  VIPS display profiles are now mostly obsolete. You&#8217;re
doc/html/vipsmanualse5.html:better off using the ICC colour management <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">VImage</span></span></span>
doc/html/vipsmanualse5.html:member functions <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">ICC_export()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">ICC_import()</span></span></span>.
doc/html/vipsmanualse5.html:<!--l. 10--><p class="noindent" >
doc/html/vipsmanualse5.html: id="x10-280001.5.1"></a>Constructors</h4>
doc/html/vipsmanualse5.html:<!--l. 12--><p class="noindent" >There are two constructors for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">VDisplay</span></span></span>:
doc/html/vipsmanualse5.html:                                                 <div class="verbatim" id="verbatim-36">
doc/html/vipsmanualse5.html:<!--l. 17--><p class="nopar" >
doc/html/vipsmanualse5.html:<!--l. 19--><p class="indent" >  The first form initialises the display from one of the
doc/html/vipsmanualse5.html:  <div class="verbatim" id="verbatim-37">
doc/html/vipsmanualse5.html:&#x00A0;<br />VDisplay&#x00A0;jim(&#x00A0;"ultra2-20/2/98"&#x00A0;);
doc/html/vipsmanualse5.html:<!--l. 25--><p class="nopar" >
doc/html/vipsmanualse5.html:<!--l. 27--><p class="indent" >  Makes <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">fred</span></span></span> a profile for making images in sRGB
doc/html/vipsmanualse5.html:format, and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">jim</span></span></span> a profile representing my workstation
doc/html/vipsmanualse5.html:<!--l. 31--><p class="noindent" >
doc/html/vipsmanualse5.html: id="x10-290001.5.2"></a>Projection functions</h4>
doc/html/vipsmanualse5.html:<!--l. 33--><p class="noindent" >A set of member functions of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">VDisplay</span></span></span> provide read and
doc/html/vipsmanualse5.html:                                                 <div class="verbatim" id="verbatim-38">
doc/html/vipsmanualse5.html:<!--l. 57--><p class="nopar" >
doc/html/vipsmanualse5.html:<!--l. 59--><p class="indent" >  Where <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">VDisplayType</span></span></span> is defined as:
doc/html/vipsmanualse5.html:  <div class="verbatim" id="verbatim-39">
doc/html/vipsmanualse5.html:<!--l. 66--><p class="nopar" >
doc/html/vipsmanualse5.html:<!--l. 68--><p class="indent" >  And <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">matrix</span></span></span> is defined as:
doc/html/vipsmanualse5.html:                                                 <div class="verbatim" id="verbatim-40">
doc/html/vipsmanualse5.html:<!--l. 72--><p class="nopar" >
doc/html/vipsmanualse5.html:<!--l. 74--><p class="indent" >  For a description of all the fields in a VIPS display
doc/html/vipsmanualse5.html:profile, see the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse5.html:class="pcrr7t-">im_XYZ2RGB()</span></span></span>.
doc/html/vipsmanualse5.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse5.html:href="vipsmanualse4.html#tailvipsmanualse4.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse5.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualch2.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualch2.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualch2.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualch2.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualch2.html:<!-- 3,html --> 
doc/html/vipsmanualch2.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualch2.html:  <!--l. 70--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualch2.html:href="vipsmanualch1.html#tailvipsmanualch1.html" >prev-tail</a>] [<a 
doc/html/vipsmanualch2.html: id="x12-350002"></a>VIPS for C programmers</h2>
doc/html/vipsmanualch2.html:href="vipsmanualse7.html#x13-360002.1">Introduction</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-370002.2">Core C API</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-380002.2.1">Startup</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-390002.2.2">Image descriptors</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-400002.2.3">Header fields</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-410002.2.4">Opening and closing</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-420002.2.5">Examples</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-430002.2.6">Metadata</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-440002.2.7">History</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-450002.2.8">Eval callbacks</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-460002.2.9">Detailed rules for descriptors</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-470002.2.10">Automatic resource deallocation</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-510002.2.11">Error handling</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse8.html#x14-520002.2.12">Joining operations together</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse9.html#x15-590002.3">Function dispatch and plug-ins</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse9.html#x15-600002.3.1">Simple plugin example</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse9.html#x15-610002.3.2">A more complicated example</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse9.html#x15-620002.3.3">Adding new types</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse9.html#x15-630002.3.4">Using function dispatch in your application</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse10.html#x16-670002.4">The VIPS base class: <span 
doc/html/vipsmanualch2.html:class="pcrr7t-">VipsObject</span></a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse10.html#x16-680002.4.1">Properties</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse10.html#x16-730002.4.2">Convenience functions</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse11.html#x17-740002.5">Image formats</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse11.html#x17-750002.5.1">How a format is represented</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse11.html#x17-760002.5.2">The format class</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse11.html#x17-770002.5.3">Finding a format</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse11.html#x17-780002.5.4">Convenience functions</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse12.html#x18-790002.6">Interpolators</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse12.html#x18-800002.6.1">How an interpolator is represented</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse12.html#x18-810002.6.2">A sample interpolator</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse12.html#x18-820002.6.3">Writing a VIPS operation that takes an interpolator as an argument</a></span>
doc/html/vipsmanualch2.html:href="vipsmanualse12.html#x18-830002.6.4">Passing an interpolator to a VIPS operation</a></span>
doc/html/vipsmanualch2.html:  <!--l. 79--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualch2.html:href="vipsmanualch1.html#tailvipsmanualch1.html" >prev-tail</a>] [<a 
doc/html/vipsmanualch2.html:<!--l. 79--><p class="indent" >  <a 
doc/html/vipsmanualse15.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse15.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse15.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse15.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse15.html:<!-- 3,html --> 
doc/html/vipsmanualse15.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse15.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse15.html:href="vipsmanualse14.html#tailvipsmanualse14.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse15.html: id="x22-920003.3"></a>Programming PIO functions</h3>
doc/html/vipsmanualse15.html:<!--l. 4--><p class="noindent" >The VIPS PIO system has a number of advantages over
doc/html/vipsmanualse15.html:<!--l. 7--><p class="noindent" >
doc/html/vipsmanualse15.html: id="x22-930003.3.1"></a>Easy PIO with <span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">_wrapone() </span>and
doc/html/vipsmanualse15.html:class="pcrr7t-">im</span><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">_wrapmany()</span></h4>
doc/html/vipsmanualse15.html:<!--l. 10--><p class="noindent" >PIO is a very general image IO system, and because of this
doc/html/vipsmanualse15.html:VIPS offers an easy-to-use layer over PIO with the funtions
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span>.
doc/html/vipsmanualse15.html:<!--l. 14--><p class="indent" >  If your image processing function is uninterested in
doc/html/vipsmanualse15.html:<!--l. 19--><p class="indent" >  Consider the <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> function of figure&#x00A0;<a 
doc/html/vipsmanualse15.html:href="vipsmanualse14.html#x21-900012">3.2<!--tex4ht:ref: fg:invert --></a>. First, we
doc/html/vipsmanualse15.html:have to write the core of this as a buffer-processing
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-140">
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;q[i]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[i];
doc/html/vipsmanualse15.html:<!--l. 42--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 44--><p class="indent" >  Now we have to wrap up this very primitive expression
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span> to do this. It has type:
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-141">
doc/html/vipsmanualse15.html:<!--l. 51--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 53--><p class="noindent" >where:
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-142">
doc/html/vipsmanualse15.html:<!--l. 60--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 62--><p class="noindent" >almost the same type as our buffer-processing function
doc/html/vipsmanualse15.html:above. The values <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">a</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">b</span></span></span> are carried around by VIPS for
doc/html/vipsmanualse15.html:whatever use you fancy. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> can now be written
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-143">
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in-&#x003E;Bands&#x00A0;!=&#x00A0;1&#x00A0;||
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:<!--l. 96--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 98--><p class="indent" >  And that&#8217;s all there is to it. This function will have all of
doc/html/vipsmanualse15.html:easy to program as the WIO <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> earlier in this
doc/html/vipsmanualse15.html:<!--l. 102--><p class="indent" >  This version of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> is not very general: it will
doc/html/vipsmanualse15.html:only accept one-band unsigned char images. It is easy to
doc/html/vipsmanualse15.html:modify for n-band images:
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-144">
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;int&#x00A0;sz&#x00A0;=&#x00A0;n&#x00A0;&#x22C6;&#x00A0;in-&#x003E;Bands;
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;q[i]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[i];
doc/html/vipsmanualse15.html:<!--l. 121--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 123--><p class="indent" >  We must also modify <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span>:
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-145">
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Process!&#x00A0;The&#x00A0;first&#x00A0;user-parameter
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:<!--l. 152--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 154--><p class="indent" >  There are two significant hidden traps here. First,
doc/html/vipsmanualse15.html:read the contents of the user parameters <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">a</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">b</span></span></span>, you
doc/html/vipsmanualse15.html:may not write to them. This is because on a multi-CPU
doc/html/vipsmanualse15.html:machine, several copies of your buffer-processing functions
doc/html/vipsmanualse15.html:overflows), you can&#8217;t use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span>, you&#8217;ll
doc/html/vipsmanualse15.html:<!--l. 163--><p class="indent" >  Secondly, your buffer processing function may not be
doc/html/vipsmanualse15.html:your operation until long after the call to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span> has
doc/html/vipsmanualse15.html:read anything in your buffer-processing function that may
doc/html/vipsmanualse15.html:local resource allocators, such as <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_open_local()</span></span></span> and<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_malloc()</span></span></span>. This issue is discussed at length in the
doc/html/vipsmanualse15.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse15.html:href="vipsmanualse7.html#x13-360002.1">2.1<!--tex4ht:ref: sec:appl --></a>.
doc/html/vipsmanualse15.html: <!--l. 171--><p class="indent" >    <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_wrapone()</span></span></span> is for operations which take exactly
doc/html/vipsmanualse15.html: <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span>, which works for any number of input
doc/html/vipsmanualse15.html: images. The type of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span> is slightly
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-146">
doc/html/vipsmanualse15.html:<!--l. 179--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 181--><p class="noindent" >
doc/html/vipsmanualse15.html:                                              <div class="verbatim" id="verbatim-147">
doc/html/vipsmanualse15.html:<!--l. 187--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 189--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_wrapmany()</span></span></span> takes a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">NULL</span></span></span>-terminated array of
doc/html/vipsmanualse15.html:input images, and creates a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">NULL</span></span></span>-terminated array of
doc/html/vipsmanualse15.html:function to add two <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> images to
doc/html/vipsmanualse15.html:make a <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_BANDFMT_UCHAR</span></span></span> image might be written
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-148">
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;int&#x00A0;sz&#x00A0;=&#x00A0;n&#x00A0;&#x22C6;&#x00A0;in-&#x003E;Bands;
doc/html/vipsmanualse15.html:<!--l. 209--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 211--><p class="indent" >  This can be made into a PIO function with:
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-149">
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;i1-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i1-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;||
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i2-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i2-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;||
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;i1-&#x003E;Bands&#x00A0;!=&#x00A0;i2-&#x003E;Bands&#x00A0;)&#x00A0;{
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;out-&#x003E;BandFmt&#x00A0;=&#x00A0;IM_BANDFMT_USHORT;
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;out-&#x003E;Bbits&#x00A0;=&#x00A0;IM_BBITS_SHORT;
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;/&#x22C6;&#x00A0;Process!&#x00A0;The&#x00A0;first&#x00A0;user-parameter
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x22C6;&#x00A0;invec&#x00A0;is&#x00A0;a&#x00A0;NULL-terminated&#x00A0;array&#x00A0;of
doc/html/vipsmanualse15.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:<!--l. 256--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 258--><p class="noindent" >
doc/html/vipsmanualse15.html: id="x22-940003.3.2"></a>Region descriptors</h4>
doc/html/vipsmanualse15.html:<!--l. 260--><p class="noindent" >Regions are the next layer of abstraction above image
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-150">
doc/html/vipsmanualse15.html:<!--l. 272--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 274--><p class="noindent" >where <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">valid</span></span></span> holds the sub-area of image <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im</span></span></span> that this
doc/html/vipsmanualse15.html:region represents, and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">Rect</span></span></span> is defined as:
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-151">
doc/html/vipsmanualse15.html:<!--l. 283--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 285--><p class="noindent" >two macros are available for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">Rect</span></span></span> calculations:
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-152">
doc/html/vipsmanualse15.html:<!--l. 291--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 293--><p class="noindent" >where <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_RECT_RIGHT()</span></span></span> returns <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">left</span></span></span> + <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">width</span></span></span>, and
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_RECT_BOTTOM()</span></span></span> returns <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">top</span></span></span> + <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">height</span></span></span>. A small
doc/html/vipsmanualse15.html:library of C functions are also available for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">Rect</span></span></span> algebra, see
doc/html/vipsmanualse15.html:the manual pages for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_rect_intersectrect()</span></span></span>.
doc/html/vipsmanualse15.html:<!--l. 299--><p class="indent" >    Regions are created with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_region_create()</span></span></span>.
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-153">
doc/html/vipsmanualse15.html:<!--l. 303--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 305--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_region_create()</span></span></span> returns a pointer to a new
doc/html/vipsmanualse15.html:region structure, or <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">NULL</span></span></span> on error. Regions returned by
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_region_create()</span></span></span> are blank &#8212; they contain no
doc/html/vipsmanualse15.html:<!--l. 311--><p class="indent" >  Regions are destroyed with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_region_free()</span></span></span>. It
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-154">
doc/html/vipsmanualse15.html:<!--l. 315--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 317--><p class="noindent" >And, as usual, returns 0 on success and non-zero on
doc/html/vipsmanualse15.html:error, setting <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_error()</span></span></span>. You must free all regions
doc/html/vipsmanualse15.html:<!--l. 325--><p class="noindent" >
doc/html/vipsmanualse15.html: id="x22-950003.3.3"></a>Image input with regions</h4>
doc/html/vipsmanualse15.html:<!--l. 327--><p class="noindent" >Before you can read from a region, you need to call
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span> to fill the region with image data. It has
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-155">
doc/html/vipsmanualse15.html:<!--l. 332--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 334--><p class="indent" >  Area <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">r</span></span></span> of the image on which <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">reg</span></span></span> has been created is
doc/html/vipsmanualse15.html:<!--l. 337--><p class="indent" >  Exactly what this preparation involves depends upon
doc/html/vipsmanualse15.html:functions. If it returns successfully, <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span>
doc/html/vipsmanualse15.html:guarantees that all pixels within <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">reg-&#x003E;valid</span></span></span> may be
doc/html/vipsmanualse15.html:accessed. Note that this may be smaller or larger than <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">r</span></span></span>,
doc/html/vipsmanualse15.html:since <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span> clips <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">r</span></span></span> against the size of the
doc/html/vipsmanualse15.html:<!--l. 344--><p class="indent" >  Programs can access image data in the region by calling
doc/html/vipsmanualse15.html:the macro <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span>. It has type
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-156">
doc/html/vipsmanualse15.html:<!--l. 350--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 352--><p class="indent" >  Provided that point (x,y) lies inside <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">reg-&#x003E;valid</span></span></span>,
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> returns a pointer to pel <span 
doc/html/vipsmanualse15.html:class="cmr-10">(</span><span 
doc/html/vipsmanualse15.html:class="cmmi-10">x,y</span><span 
doc/html/vipsmanualse15.html:class="cmr-10">)</span>.
doc/html/vipsmanualse15.html:Adding to the result of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> moves to
doc/html/vipsmanualse15.html:within <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">reg-&#x003E;valid</span></span></span>. Add <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_REGION_LSKIP()</span></span></span> to
doc/html/vipsmanualse15.html:move down a line, see below. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> has
doc/html/vipsmanualse15.html:<!--l. 359--><p class="indent" >    Other macros are available to ease address calculation:
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-157">
doc/html/vipsmanualse15.html:<!--l. 365--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 367--><p class="noindent" >These find the number of bytes to add to the result of
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> to move down a line, the number of
doc/html/vipsmanualse15.html:<!--l. 372--><p class="indent" >  Figure&#x00A0;<a 
doc/html/vipsmanualse15.html:href="#x22-950015">3.5<!--tex4ht:ref: fg:paverage --></a> is a version of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> which uses
doc/html/vipsmanualse15.html:should really be using <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>, see <span 
doc/html/vipsmanualse15.html:class="cmsy-10"></span><a 
doc/html/vipsmanualse15.html:href="#x22-960003.3.4">3.3.4<!--tex4ht:ref: sec:sequence --></a>, to do
doc/html/vipsmanualse15.html:call <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_pincheck()</span></span></span> rather than <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_incheck()</span></span></span>.
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_pincheck()</span></span></span> signals to the IO system that you are a
doc/html/vipsmanualse15.html:PIO-aware function, giving <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span> much more
doc/html/vipsmanualse15.html:see the manual pages for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_poutcheck()</span></span></span> and
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_piocheck()</span></span></span>.
doc/html/vipsmanualse15.html:<!--l. 382--><p class="indent" >  <a 
doc/html/vipsmanualse15.html: id="x22-950015"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse15.html:<div class="verbatim" id="verbatim-158">
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;im-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||&#x00A0;im-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:<!--l. 408--><p class="nopar" >
doc/html/vipsmanualse15.html:class="content">First PIO average of image</span></div><!--tex4ht:label?: x22-950015 -->
doc/html/vipsmanualse15.html:<!--l. 414--><p class="indent" >  <a 
doc/html/vipsmanualse15.html: id="x22-950026"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse15.html:<div class="verbatim" id="verbatim-159">
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;r&#x00A0;=&#x00A0;&amp;reg-&#x003E;valid;
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;area.top&#x00A0;=&#x00A0;0;&#x00A0;area.top&#x00A0;&#x003C;&#x00A0;im-&#x003E;Ysize;&#x00A0;area.top&#x00A0;+=&#x00A0;100&#x00A0;)
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;area.left&#x00A0;=&#x00A0;0;&#x00A0;area.left&#x00A0;&#x003C;&#x00A0;im-&#x003E;Xsize;
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;r-&#x003E;top;&#x00A0;y&#x00A0;&#x003C;&#x00A0;IM_RECT_BOTTOM(&#x00A0;r&#x00A0;);&#x00A0;y++&#x00A0;)&#x00A0;{
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;p&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;reg,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x22C6;out&#x00A0;=&#x00A0;(double)&#x00A0;total&#x00A0;/&#x00A0;(IM_IMAGE_N_ELEMENTS(&#x00A0;im&#x00A0;)&#x00A0;&#x22C6;&#x00A0;im-&#x003E;Ysize);
doc/html/vipsmanualse15.html:<!--l. 454--><p class="nopar" >
doc/html/vipsmanualse15.html:class="content">First PIO average of image (cont.)</span></div><!--tex4ht:label?: x22-950026 -->
doc/html/vipsmanualse15.html:<!--l. 458--><p class="indent" >  This version of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> can be called in exactly the
doc/html/vipsmanualse15.html:<!--l. 462--><p class="indent" >  We can do one better than this &#8212; if the image is being
doc/html/vipsmanualse15.html: id="x22-960003.3.4"></a>Splitting into sequences</h4>
doc/html/vipsmanualse15.html:<!--l. 470--><p class="noindent" >A sequence comes in three parts: a start function, a
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-160">
doc/html/vipsmanualse15.html:<!--l. 488--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 490--><p class="noindent" >The values <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">a</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">b</span></span></span> are carried around by VIPS for your
doc/html/vipsmanualse15.html:<!--l. 493--><p class="indent" >    For functions like <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> which consume
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>. This has type:
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-161">
doc/html/vipsmanualse15.html:<!--l. 502--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 504--><p class="indent" >  VIPS starts one or more sequences, runs one or more
doc/html/vipsmanualse15.html:processing functions over image <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">in</span></span></span> until all of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">in</span></span></span> has
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">process_fn()</span></span></span> is given will be complete and disjoint,
doc/html/vipsmanualse15.html:<!--l. 513--><p class="indent" >  An example should make this clearer. This version of
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">average()</span></span></span> is very similar to the average function in the
doc/html/vipsmanualse15.html:<!--l. 518--><p class="indent" >  <a 
doc/html/vipsmanualse15.html: id="x22-960017"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse15.html:<div class="verbatim" id="verbatim-162">
doc/html/vipsmanualse15.html:<!--l. 557--><p class="nopar" >
doc/html/vipsmanualse15.html:class="content">Final PIO average of image</span></div><!--tex4ht:label?: x22-960017 -->
doc/html/vipsmanualse15.html:<!--l. 563--><p class="indent" >  <a 
doc/html/vipsmanualse15.html: id="x22-960028"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse15.html:<div class="verbatim" id="verbatim-163">
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;Rect&#x00A0;&#x22C6;r&#x00A0;=&#x00A0;&amp;reg-&#x003E;valid;
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;r-&#x003E;top;&#x00A0;y&#x00A0;&#x003C;&#x00A0;IM_RECT_BOTTOM(&#x00A0;r&#x00A0;);&#x00A0;y++&#x00A0;)&#x00A0;{
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;p&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;reg,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/html/vipsmanualse15.html:<!--l. 594--><p class="nopar" >
doc/html/vipsmanualse15.html:class="content">Final PIO average of image (cont.)</span></div><!--tex4ht:label?: x22-960028 -->
doc/html/vipsmanualse15.html:<!--l. 599--><p class="indent" >  <a 
doc/html/vipsmanualse15.html: id="x22-960039"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse15.html:<div class="verbatim" id="verbatim-164">
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;im-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;im-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x22C6;out&#x00A0;=&#x00A0;(double)&#x00A0;gtotal&#x00A0;/&#x00A0;(IM_IMAGE_N_ELEMENTS(&#x00A0;im&#x00A0;)&#x00A0;&#x22C6;&#x00A0;im-&#x003E;Ysize);
doc/html/vipsmanualse15.html:<!--l. 635--><p class="nopar" >
doc/html/vipsmanualse15.html:class="content">Final PIO average of image (cont.)</span></div><!--tex4ht:label?: x22-960039 -->
doc/html/vipsmanualse15.html:<!--l. 639--><p class="indent" >  There are a couple of variations on <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_prepare()</span></span></span>:
doc/html/vipsmanualse15.html:you can use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_prepare_to()</span></span></span> to force writing to a
doc/html/vipsmanualse15.html:particular place, and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_prepare_thread()</span></span></span> to use
doc/html/vipsmanualse15.html: id="x22-970003.3.5"></a>Output to regions</h4>
doc/html/vipsmanualse15.html:<!--l. 646--><p class="noindent" >Regions are written to in just the same way they are
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">IM_REGION_ADDR()</span></span></span> macro.
doc/html/vipsmanualse15.html:<!--l. 649--><p class="indent" >  <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span> does input &#8212; <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span> does
doc/html/vipsmanualse15.html:output. It has the same type as <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>:
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-165">
doc/html/vipsmanualse15.html:<!--l. 659--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 661--><p class="indent" >  The region given to the process function is ready for
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">vips_sink()</span></span></span>, the areas the process function is asked to
doc/html/vipsmanualse15.html:<!--l. 667--><p class="indent" >    Here is <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">invert()</span></span></span>, rewritten to use PIO. This piece of
doc/html/vipsmanualse15.html:provided by the VIPS library: <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_start_one()</span></span></span> and
doc/html/vipsmanualse15.html:<span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_stop_one()</span></span></span>. They assume that the first of the two
doc/html/vipsmanualse15.html:user arguments to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span> is the input image.
doc/html/vipsmanualse15.html:  <div class="verbatim" id="verbatim-166">
doc/html/vipsmanualse15.html:<!--l. 679--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 681--><p class="noindent" >and:
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-167">
doc/html/vipsmanualse15.html:<!--l. 690--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 692--><p class="indent" >  They are useful for simple functions which expect only one
doc/html/vipsmanualse15.html:input image. See the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_start_many()</span></span></span>
doc/html/vipsmanualse15.html:for many-input functions.
doc/html/vipsmanualse15.html:<!--l. 697--><p class="indent" >  <a 
doc/html/vipsmanualse15.html: id="x22-9700110"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse15.html:<div class="verbatim" id="verbatim-168">
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;Rect&#x00A0;&#x22C6;r&#x00A0;=&#x00A0;&amp;or-&#x003E;valid;
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;for(&#x00A0;y&#x00A0;=&#x00A0;r-&#x003E;top;&#x00A0;y&#x00A0;&#x003C;&#x00A0;IM_RECT_BOTTOM(&#x00A0;r&#x00A0;);&#x00A0;y++&#x00A0;)&#x00A0;{
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;p&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;ir,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unsigned&#x00A0;char&#x00A0;&#x22C6;q&#x00A0;=&#x00A0;IM_REGION_ADDR(&#x00A0;or,&#x00A0;r-&#x003E;left,&#x00A0;y&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;q[i]&#x00A0;=&#x00A0;255&#x00A0;-&#x00A0;p[i];
doc/html/vipsmanualse15.html:<!--l. 732--><p class="nopar" >
doc/html/vipsmanualse15.html:class="content">PIO invert</span></div><!--tex4ht:label?: x22-9700110 -->
doc/html/vipsmanualse15.html:<!--l. 738--><p class="indent" >  <a 
doc/html/vipsmanualse15.html: id="x22-9700211"></a><hr class="float"><div class="float" 
doc/html/vipsmanualse15.html:<div class="verbatim" id="verbatim-169">
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;if(&#x00A0;in-&#x003E;BandFmt&#x00A0;!=&#x00A0;IM_BANDFMT_UCHAR&#x00A0;||&#x00A0;in-&#x003E;Coding&#x00A0;!=&#x00A0;IM_CODING_NONE&#x00A0;)&#x00A0;{
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse15.html:<!--l. 775--><p class="nopar" >
doc/html/vipsmanualse15.html:class="content">PIO invert (cont.)</span></div><!--tex4ht:label?: x22-9700211 -->
doc/html/vipsmanualse15.html:<!--l. 779--><p class="indent" >  Functions have some choice about the way they write
doc/html/vipsmanualse15.html:they were given by <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span>. They can, if they
doc/html/vipsmanualse15.html:the manual page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_region_region()</span></span></span>. See also
doc/html/vipsmanualse15.html:the source for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_copy()</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_extract()</span></span></span> for
doc/html/vipsmanualse15.html:<!--l. 785--><p class="indent" >  Note also the call to <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_demand_hint()</span></span></span>. This
doc/html/vipsmanualse15.html: id="x22-980003.3.6"></a>Callbacks</h4>
doc/html/vipsmanualse15.html:<!--l. 794--><p class="noindent" >VIPS lets you attach callbacks to image descriptors. These
doc/html/vipsmanualse15.html:<!--l. 798--><p class="noindent" >
doc/html/vipsmanualse15.html: id="x22-990003.3.6"></a>Close callbacks</h5>
doc/html/vipsmanualse15.html:<!--l. 800--><p class="noindent" >These callbacks are invoked just before an image is
doc/html/vipsmanualse15.html:<!--l. 807--><p class="indent" >  Use <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_add_close_callback()</span></span></span> to add a close
doc/html/vipsmanualse15.html:                                                 <div class="verbatim" id="verbatim-170">
doc/html/vipsmanualse15.html:<!--l. 814--><p class="nopar" >
doc/html/vipsmanualse15.html:<!--l. 816--><p class="indent" >  As with <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_generate()</span></span></span>, the two <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">void</span><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">&#x00A0;&#x22C6;</span></span></span> pointers
doc/html/vipsmanualse15.html:<!--l. 820--><p class="noindent" >
doc/html/vipsmanualse15.html: id="x22-1000003.3.6"></a>Preclose callbacks</h5>
doc/html/vipsmanualse15.html:<!--l. 822--><p class="noindent" >Preclose callbacks are called before any shutdown has
doc/html/vipsmanualse15.html:page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_add_preclose_callback()</span></span></span> for full
doc/html/vipsmanualse15.html:<!--l. 827--><p class="noindent" >
doc/html/vipsmanualse15.html: id="x22-1010003.3.6"></a>Eval callbacks</h5>
doc/html/vipsmanualse15.html:<!--l. 829--><p class="noindent" >These are callbacks which are invoked periodically by VIPS
doc/html/vipsmanualse15.html:useful for user-interfaces built on top of VIPS. See the
doc/html/vipsmanualse15.html:manual page for <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse15.html:class="pcrr7t-">im_add_eval_callback()</span></span></span> for full
doc/html/vipsmanualse15.html:<!--l. 834--><p class="noindent" >
doc/html/vipsmanualse15.html: id="x22-1020003.3.7"></a>Memory allocation revisited</h4>
doc/html/vipsmanualse15.html:<!--l. 836--><p class="noindent" >When you are using PIO, memory allocation becomes
doc/html/vipsmanualse15.html:<!--l. 844--><p class="indent" >    The first type, memory local to this function instance,
doc/html/vipsmanualse15.html:image processing function, and links to any read-only tables
doc/html/vipsmanualse15.html:<!--l. 849--><p class="indent" >  The second type of memory, memory local to a sequence,
doc/html/vipsmanualse15.html:stop functions are guaranteed to be single-threaded, so
doc/html/vipsmanualse15.html:you may write to the function-local memory within
doc/html/vipsmanualse15.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse15.html:href="vipsmanualse14.html#tailvipsmanualse14.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse15.html:<!--l. 1--><p class="indent" >  <a 
doc/html/vipsmanualse16.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualse16.html:<head><title>Programming in-place functions</title> 
doc/html/vipsmanualse16.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualse16.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse16.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualse16.html:<!-- 3,html --> 
doc/html/vipsmanualse16.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualse16.html:  <!--l. 1--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse16.html:href="vipsmanualse15.html#tailvipsmanualse15.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse16.html: id="x23-1030003.4"></a>Programming in-place functions</h3>
doc/html/vipsmanualse16.html:<!--l. 3--><p class="noindent" >VIPS includes a little support for in-place functions &#8212;
doc/html/vipsmanualse16.html:<!--l. 8--><p class="indent" >  Operations of this type should call <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse16.html:class="pcrr7t-">im_rwcheck()</span></span></span>
doc/html/vipsmanualse16.html:instead of <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse16.html:class="pcrr7t-">im_incheck()</span></span></span>. <span class="obeylines-h"><span class="verb"><span 
doc/html/vipsmanualse16.html:class="pcrr7t-">im_rwcheck()</span></span></span> tries to get
doc/html/vipsmanualse16.html:a descriptor ready for in-place writing. For example, a
doc/html/vipsmanualse16.html:                                                 <div class="verbatim" id="verbatim-171">
doc/html/vipsmanualse16.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;return(&#x00A0;-1&#x00A0;);
doc/html/vipsmanualse16.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;memset(&#x00A0;im-&#x003E;data,&#x00A0;0,
doc/html/vipsmanualse16.html: &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;im-&#x003E;Ysize&#x00A0;);
doc/html/vipsmanualse16.html:<!--l. 35--><p class="nopar" >
doc/html/vipsmanualse16.html:<!--l. 37--><p class="indent" >  This function might be called from an application
doc/html/vipsmanualse16.html:  <div class="verbatim" id="verbatim-172">
doc/html/vipsmanualse16.html:<!--l. 56--><p class="nopar" >
doc/html/vipsmanualse16.html:  <!--l. 86--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualse16.html:href="vipsmanualse15.html#tailvipsmanualse15.html" >prev-tail</a>] [<a 
doc/html/vipsmanualse16.html:<!--l. 86--><p class="indent" >  <a 
doc/html/vipsmanualch4.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
doc/html/vipsmanualch4.html:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
doc/html/vipsmanualch4.html:<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualch4.html:<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
doc/html/vipsmanualch4.html:<!-- 3,html --> 
doc/html/vipsmanualch4.html:<meta name="date" content="2010-06-09 21:39:00"> 
doc/html/vipsmanualch4.html:  <!--l. 86--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualch4.html:href="vipsmanualch3.html#tailvipsmanualch3.html" >prev-tail</a>] [<a 
doc/html/vipsmanualch4.html: id="x24-1040004"></a>VIPS reference</h2>
doc/html/vipsmanualch4.html:href="vipsmanualse17.html#x25-1050004.1">Introduction</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1060004.2">VIPS packages</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1070004.2.1">Arithmetic</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1080004.2.2">Relational</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1090004.2.3">Boolean</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1100004.2.4">Colour</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1110004.2.5">Conversion</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1120004.2.6">Matricies</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1130004.2.7">Convolution</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1140004.2.8">In-place operations</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1150004.2.9">Frequency filtering</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1160004.2.10">Histograms and LUTs</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1170004.2.11">Morphology</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1180004.2.12">Mosaicing</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1190004.2.13">CImg functions</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1200004.2.14">Other</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1210004.2.15">IO functions</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1220004.2.16">Format functions</a></span>
doc/html/vipsmanualch4.html:href="vipsmanualse18.html#x26-1230004.2.17">Resample functions</a></span>
doc/html/vipsmanualch4.html:  <!--l. 91--><div class="crosslinks"><p class="noindent">[<a 
doc/html/vipsmanualch4.html:href="vipsmanualch3.html#tailvipsmanualch3.html" >prev-tail</a>] [<a 
doc/html/vipsmanualch4.html:<!--l. 91--><p class="indent" >  <a 
doc/reference/Makefile.am:# This is a blank Makefile.am for using gtk-doc.
doc/reference/Makefile.am:# The top-level SGML file. You can change this if you want to.
doc/reference/Makefile.am:DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
doc/reference/Makefile.am:# gtk-doc will search all .c & .h files beneath here for inline comments
doc/reference/Makefile.am:# Extra options to pass to gtkdoc-scangobj. Not normally needed.
doc/reference/Makefile.am:# Extra options to supply to gtkdoc-scan.
doc/reference/Makefile.am:# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
doc/reference/Makefile.am:SCAN_OPTIONS=--rebuild-types
doc/reference/Makefile.am:# Extra options to supply to gtkdoc-mkdb.
doc/reference/Makefile.am:# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
doc/reference/Makefile.am:MKDB_OPTIONS=--sgml-mode --output-format=xml
doc/reference/Makefile.am:# Extra options to supply to gtkdoc-mktmpl
doc/reference/Makefile.am:# e.g. MKTMPL_OPTIONS=--only-section-tmpl
doc/reference/Makefile.am:# Extra options to supply to gtkdoc-mkhtml
doc/reference/Makefile.am:# Extra options to supply to gtkdoc-fixref. Not normally needed.
doc/reference/Makefile.am:# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
doc/reference/Makefile.am:# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
doc/reference/Makefile.am:# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
doc/reference/Makefile.am:# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
doc/reference/Makefile.am:# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
doc/reference/Makefile.am:# Only needed if you are using gtkdoc-scangobj to dynamically query widget
doc/reference/Makefile.am:# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
doc/reference/Makefile.am:# (use VIPS_CFLAGS/VIPS_LIBS/VIPS_LIBS so we pick up the glib-object.h that
doc/reference/Makefile.am:# This includes the standard gtk-doc make rules, copied by gtkdocize.
doc/reference/Makefile.am:include $(top_srcdir)/gtk-doc.make
doc/reference/Makefile.am:# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
doc/reference/Makefile.am:# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
doc/reference/Makefile.am:# Comment this out if you want your docs-status tested during 'make check'
doc/reference/images/interconvert.svg:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
doc/reference/images/interconvert.svg:<!-- Created with Inkscape (http://www.inkscape.org/) -->
doc/reference/images/interconvert.svg:   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
doc/reference/images/interconvert.svg:   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
doc/reference/images/interconvert.svg:   sodipodi:docbase="/home/john/CVS_DEVEL/vips-7.11/doc/src/figs"
doc/reference/images/interconvert.svg:   inkscape:export-filename="/home/john/CVS_DEVEL/vips-7.11/doc/src/figs/interconvert.png"
doc/reference/images/interconvert.svg:   inkscape:export-xdpi="90"
doc/reference/images/interconvert.svg:   inkscape:export-ydpi="90">
doc/reference/images/interconvert.svg:         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
doc/reference/images/interconvert.svg:         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
doc/reference/images/interconvert.svg:         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
doc/reference/images/interconvert.svg:         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
doc/reference/images/interconvert.svg:         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
doc/reference/images/interconvert.svg:         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
doc/reference/images/interconvert.svg:         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
doc/reference/images/interconvert.svg:         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
doc/reference/images/interconvert.svg:         style="stop-color:blue;stop-opacity:1;"
doc/reference/images/interconvert.svg:         style="stop-color:blue;stop-opacity:0;"
doc/reference/images/interconvert.svg:     inkscape:document-units="px"
doc/reference/images/interconvert.svg:     inkscape:current-layer="layer1"
doc/reference/images/interconvert.svg:     inkscape:window-width="917"
doc/reference/images/interconvert.svg:     inkscape:window-height="766"
doc/reference/images/interconvert.svg:     inkscape:window-x="721"
doc/reference/images/interconvert.svg:     inkscape:window-y="190" />
doc/reference/images/interconvert.svg:       transform="translate(-145.6376,-17.86691)">
doc/reference/images/interconvert.svg:         style="fill:url(#linearGradient1473);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/reference/images/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">Lab</tspan></text>
doc/reference/images/interconvert.svg:       transform="translate(-61.37789,49.49029)"
doc/reference/images/interconvert.svg:         style="fill:url(#linearGradient1599);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/reference/images/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none"
doc/reference/images/interconvert.svg:       transform="translate(-61.37789,-85.22411)">
doc/reference/images/interconvert.svg:         style="fill:url(#linearGradient1601);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/reference/images/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">LCh</tspan></text>
doc/reference/images/interconvert.svg:         style="fill:url(#linearGradient1533);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/reference/images/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none"
doc/reference/images/interconvert.svg:         style="fill:url(#linearGradient1543);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/reference/images/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">Yxy</tspan></text>
doc/reference/images/interconvert.svg:       transform="translate(22.88186,-85.22411)"
doc/reference/images/interconvert.svg:         style="fill:url(#linearGradient1553);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/reference/images/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none"
doc/reference/images/interconvert.svg:         style="fill:url(#linearGradient2757);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/reference/images/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">LabQ</tspan></text>
doc/reference/images/interconvert.svg:       transform="translate(-231.0163,-17.86691)"
doc/reference/images/interconvert.svg:         style="fill:url(#linearGradient1619);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
doc/reference/images/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none"
doc/reference/images/interconvert.svg:       transform="translate(-231.0163,65.63058)">
doc/reference/images/interconvert.svg:         style="fill:url(#linearGradient1635);fill-opacity:1;stroke:#000000;stroke-width:2.30000234;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
doc/reference/images/interconvert.svg:         style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:           style="fill:#ffffff;fill-opacity:1;stroke:none">ICC</tspan></text>
doc/reference/images/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/reference/images/interconvert.svg:       inkscape:connector-type="polyline"
doc/reference/images/interconvert.svg:       inkscape:connection-start="#g1495"
doc/reference/images/interconvert.svg:       inkscape:connection-end="#g1468" />
doc/reference/images/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-mid:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/reference/images/interconvert.svg:       inkscape:connector-type="polyline"
doc/reference/images/interconvert.svg:       inkscape:connection-start="#g1468"
doc/reference/images/interconvert.svg:       inkscape:connection-end="#g1555" />
doc/reference/images/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/reference/images/interconvert.svg:       inkscape:connector-type="polyline"
doc/reference/images/interconvert.svg:       inkscape:connection-start="#g1468" />
doc/reference/images/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/reference/images/interconvert.svg:       inkscape:connector-type="polyline"
doc/reference/images/interconvert.svg:       inkscape:connection-start="#g1468"
doc/reference/images/interconvert.svg:       inkscape:connection-end="#g1475" />
doc/reference/images/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/reference/images/interconvert.svg:       inkscape:connector-type="polyline"
doc/reference/images/interconvert.svg:       inkscape:connection-start="#g1468"
doc/reference/images/interconvert.svg:       inkscape:connection-end="#g1505" />
doc/reference/images/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-mid:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/reference/images/interconvert.svg:       inkscape:connector-type="polyline"
doc/reference/images/interconvert.svg:       inkscape:connection-start="#g1505"
doc/reference/images/interconvert.svg:       inkscape:connection-end="#g1545" />
doc/reference/images/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
doc/reference/images/interconvert.svg:       inkscape:connector-type="polyline"
doc/reference/images/interconvert.svg:       inkscape:connection-start="#g1475"
doc/reference/images/interconvert.svg:       inkscape:connection-end="#g1525" />
doc/reference/images/interconvert.svg:       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none"
doc/reference/images/interconvert.svg:       inkscape:connector-type="polyline"
doc/reference/images/interconvert.svg:       inkscape:connection-start="#g1475"
doc/reference/images/interconvert.svg:       inkscape:connection-end="#g1535" />
doc/reference/images/interconvert.svg:       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
doc/reference/images/interconvert.svg:       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
Coincidencia en el archivo binario doc/reference/images/interconvert.png
doc/reference/libvips-docs.sgml:<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
doc/reference/libvips-docs.sgml:               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
doc/reference/libvips-docs.sgml:      <ulink role="online-location"
doc/reference/libvips-docs.sgml:  <chapter id="object-tree">
doc/reference/libvips-docs.sgml:  <index id="api-index-full">
doc/reference/libvips-docs.sgml:    <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
doc/reference/libvips-docs.sgml:  <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
doc/reference/libvips-docs.sgml.in:<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
doc/reference/libvips-docs.sgml.in:               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
doc/reference/libvips-docs.sgml.in:      <ulink role="online-location"
doc/reference/libvips-docs.sgml.in:  <chapter id="object-tree">
doc/reference/libvips-docs.sgml.in:  <index id="api-index-full">
doc/reference/libvips-docs.sgml.in:    <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
doc/reference/libvips-docs.sgml.in:  <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
doc/reference/Makefile.in:# -*- mode: makefile -*-
doc/reference/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
doc/reference/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
doc/reference/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
doc/reference/Makefile.in:	$(srcdir)/libvips-docs.sgml.in $(top_srcdir)/gtk-doc.make
doc/reference/Makefile.in:CONFIG_CLEAN_FILES = libvips-docs.sgml
doc/reference/Makefile.in:# This is a blank Makefile.am for using gtk-doc.
doc/reference/Makefile.in:# The top-level SGML file. You can change this if you want to.
doc/reference/Makefile.in:DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml
doc/reference/Makefile.in:# gtk-doc will search all .c & .h files beneath here for inline comments
doc/reference/Makefile.in:# Extra options to pass to gtkdoc-scangobj. Not normally needed.
doc/reference/Makefile.in:# Extra options to supply to gtkdoc-scan.
doc/reference/Makefile.in:# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
doc/reference/Makefile.in:SCAN_OPTIONS = --rebuild-types
doc/reference/Makefile.in:# Extra options to supply to gtkdoc-mkdb.
doc/reference/Makefile.in:# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
doc/reference/Makefile.in:MKDB_OPTIONS = --sgml-mode --output-format=xml
doc/reference/Makefile.in:# Extra options to supply to gtkdoc-mktmpl
doc/reference/Makefile.in:# e.g. MKTMPL_OPTIONS=--only-section-tmpl
doc/reference/Makefile.in:# Extra options to supply to gtkdoc-mkhtml
doc/reference/Makefile.in:# Extra options to supply to gtkdoc-fixref. Not normally needed.
doc/reference/Makefile.in:# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
doc/reference/Makefile.in:# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
doc/reference/Makefile.in:# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
doc/reference/Makefile.in:# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
doc/reference/Makefile.in:# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
doc/reference/Makefile.in:# Only needed if you are using gtkdoc-scangobj to dynamically query widget
doc/reference/Makefile.in:# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
doc/reference/Makefile.in:# (use VIPS_CFLAGS/VIPS_LIBS/VIPS_LIBS so we pick up the glib-object.h that
doc/reference/Makefile.in:@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
doc/reference/Makefile.in:@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
doc/reference/Makefile.in:@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = sh -c
doc/reference/Makefile.in:@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
doc/reference/Makefile.in:# This includes the standard gtk-doc make rules, copied by gtkdocize.
doc/reference/Makefile.in:	$(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt images
doc/reference/Makefile.in:DOC_STAMPS = scan-build.stamp sgml-build.stamp html-build.stamp \
doc/reference/Makefile.in:	$(DOC_MODULE)-undocumented.txt \
doc/reference/Makefile.in:	$(DOC_MODULE)-undeclared.txt \
doc/reference/Makefile.in:	$(DOC_MODULE)-unused.txt
doc/reference/Makefile.in:# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
doc/reference/Makefile.in:# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
doc/reference/Makefile.in:# Comment this out if you want your docs-status tested during 'make check'
doc/reference/Makefile.in:all: all-am
doc/reference/Makefile.in:$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps)
doc/reference/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
doc/reference/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
doc/reference/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/reference/Makefile'; \
doc/reference/Makefile.in:	  $(AUTOMAKE) --gnu doc/reference/Makefile
doc/reference/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
doc/reference/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
doc/reference/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
doc/reference/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
doc/reference/Makefile.in:libvips-docs.sgml: $(top_builddir)/config.status $(srcdir)/libvips-docs.sgml.in
doc/reference/Makefile.in:mostlyclean-libtool:
doc/reference/Makefile.in:	-rm -f *.lo
doc/reference/Makefile.in:clean-libtool:
doc/reference/Makefile.in:	-rm -rf .libs _libs
doc/reference/Makefile.in:check-TESTS: $(TESTS)
doc/reference/Makefile.in:	if test -n "$$list"; then \
doc/reference/Makefile.in:	    if test -f ./$$tst; then dir=./; \
doc/reference/Makefile.in:	    elif test -f $$tst; then dir=; \
doc/reference/Makefile.in:	    elif test $$? -ne 77; then \
doc/reference/Makefile.in:	  if test "$$all" -eq 1; then \
doc/reference/Makefile.in:	  if test "$$failed" -eq 0; then \
doc/reference/Makefile.in:	    if test "$$xfail" -eq 0; then \
doc/reference/Makefile.in:	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
doc/reference/Makefile.in:	    if test "$$xpass" -eq 0; then \
doc/reference/Makefile.in:	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
doc/reference/Makefile.in:	  if test "$$skip" -ne 0; then \
doc/reference/Makefile.in:	    if test "$$skip" -eq 1; then \
doc/reference/Makefile.in:	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
doc/reference/Makefile.in:	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
doc/reference/Makefile.in:	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
doc/reference/Makefile.in:	  if test "$$failed" -eq 0; then \
doc/reference/Makefile.in:	  test -z "$$skipped" || echo "$$skipped"; \
doc/reference/Makefile.in:	  test -z "$$report" || echo "$$report"; \
doc/reference/Makefile.in:	  test "$$failed" -eq 0; \
doc/reference/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
doc/reference/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
doc/reference/Makefile.in:			   sort -u` ;; \
doc/reference/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
doc/reference/Makefile.in:	  if test -d $$d/$$file; then \
doc/reference/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
doc/reference/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
doc/reference/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
doc/reference/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
doc/reference/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
doc/reference/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
doc/reference/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
doc/reference/Makefile.in:	    test -f "$(distdir)/$$file" \
doc/reference/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
doc/reference/Makefile.in:	  dist-hook
doc/reference/Makefile.in:check-am: all-am
doc/reference/Makefile.in:	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
doc/reference/Makefile.in:check: check-am
doc/reference/Makefile.in:all-am: Makefile all-local
doc/reference/Makefile.in:install: install-am
doc/reference/Makefile.in:install-exec: install-exec-am
doc/reference/Makefile.in:install-data: install-data-am
doc/reference/Makefile.in:uninstall: uninstall-am
doc/reference/Makefile.in:install-am: all-am
doc/reference/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
doc/reference/Makefile.in:installcheck: installcheck-am
doc/reference/Makefile.in:install-strip:
doc/reference/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
doc/reference/Makefile.in:	  `test -z '$(STRIP)' || \
doc/reference/Makefile.in:mostlyclean-generic:
doc/reference/Makefile.in:clean-generic:
doc/reference/Makefile.in:	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
doc/reference/Makefile.in:distclean-generic:
doc/reference/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
doc/reference/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
doc/reference/Makefile.in:	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
doc/reference/Makefile.in:maintainer-clean-generic:
doc/reference/Makefile.in:clean: clean-am
doc/reference/Makefile.in:clean-am: clean-generic clean-libtool clean-local mostlyclean-am
doc/reference/Makefile.in:distclean: distclean-am
doc/reference/Makefile.in:	-rm -f Makefile
doc/reference/Makefile.in:distclean-am: clean-am distclean-generic distclean-local
doc/reference/Makefile.in:dvi: dvi-am
doc/reference/Makefile.in:dvi-am:
doc/reference/Makefile.in:html: html-am
doc/reference/Makefile.in:html-am:
doc/reference/Makefile.in:info: info-am
doc/reference/Makefile.in:info-am:
doc/reference/Makefile.in:install-data-am: install-data-local
doc/reference/Makefile.in:install-dvi: install-dvi-am
doc/reference/Makefile.in:install-dvi-am:
doc/reference/Makefile.in:install-exec-am:
doc/reference/Makefile.in:install-html: install-html-am
doc/reference/Makefile.in:install-html-am:
doc/reference/Makefile.in:install-info: install-info-am
doc/reference/Makefile.in:install-info-am:
doc/reference/Makefile.in:install-man:
doc/reference/Makefile.in:install-pdf: install-pdf-am
doc/reference/Makefile.in:install-pdf-am:
doc/reference/Makefile.in:install-ps: install-ps-am
doc/reference/Makefile.in:install-ps-am:
doc/reference/Makefile.in:installcheck-am:
doc/reference/Makefile.in:maintainer-clean: maintainer-clean-am
doc/reference/Makefile.in:	-rm -f Makefile
doc/reference/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic \
doc/reference/Makefile.in:	maintainer-clean-local
doc/reference/Makefile.in:mostlyclean: mostlyclean-am
doc/reference/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
doc/reference/Makefile.in:pdf: pdf-am
doc/reference/Makefile.in:pdf-am:
doc/reference/Makefile.in:ps: ps-am
doc/reference/Makefile.in:ps-am:
doc/reference/Makefile.in:uninstall-am: uninstall-local
doc/reference/Makefile.in:.MAKE: check-am install-am install-strip
doc/reference/Makefile.in:.PHONY: all all-am all-local check check-TESTS check-am clean \
doc/reference/Makefile.in:	clean-generic clean-libtool clean-local dist-hook distclean \
doc/reference/Makefile.in:	distclean-generic distclean-libtool distclean-local distdir \
doc/reference/Makefile.in:	dvi dvi-am html html-am info info-am install install-am \
doc/reference/Makefile.in:	install-data install-data-am install-data-local install-dvi \
doc/reference/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
doc/reference/Makefile.in:	install-html-am install-info install-info-am install-man \
doc/reference/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
doc/reference/Makefile.in:	install-strip installcheck installcheck-am installdirs \
doc/reference/Makefile.in:	maintainer-clean maintainer-clean-generic \
doc/reference/Makefile.in:	maintainer-clean-local mostlyclean mostlyclean-generic \
doc/reference/Makefile.in:	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
doc/reference/Makefile.in:	uninstall-local
doc/reference/Makefile.in:@ENABLE_GTK_DOC_TRUE@all-local: html-build.stamp
doc/reference/Makefile.in:@ENABLE_GTK_DOC_FALSE@all-local:
doc/reference/Makefile.in:docs: html-build.stamp
doc/reference/Makefile.in:$(REPORT_FILES): sgml-build.stamp
doc/reference/Makefile.in:scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
doc/reference/Makefile.in:	@echo 'gtk-doc: Scanning header files'
doc/reference/Makefile.in:	@-chmod -R u+w $(srcdir)
doc/reference/Makefile.in:	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
doc/reference/Makefile.in:	if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
doc/reference/Makefile.in:	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
doc/reference/Makefile.in:               test -f $$i || touch $$i ; \
doc/reference/Makefile.in:	touch scan-build.stamp
doc/reference/Makefile.in:$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
doc/reference/Makefile.in:sgml-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files)
doc/reference/Makefile.in:	@echo 'gtk-doc: Building XML'
doc/reference/Makefile.in:	@-chmod -R u+w $(srcdir)
doc/reference/Makefile.in:	gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
doc/reference/Makefile.in:	touch sgml-build.stamp
doc/reference/Makefile.in:sgml.stamp: sgml-build.stamp
doc/reference/Makefile.in:html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
doc/reference/Makefile.in:	@echo 'gtk-doc: Building HTML'
doc/reference/Makefile.in:	@-chmod -R u+w $(srcdir)
doc/reference/Makefile.in:	rm -rf $(srcdir)/html
doc/reference/Makefile.in:	gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-path"; \
doc/reference/Makefile.in:	  mkhtml_options=--path="$(srcdir)"; \
doc/reference/Makefile.in:	cd $(srcdir)/html && gtkdoc-mkhtml $(mkhtml_options) $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
doc/reference/Makefile.in:	@echo 'gtk-doc: Fixing cross-references'
doc/reference/Makefile.in:	cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
doc/reference/Makefile.in:	touch html-build.stamp
doc/reference/Makefile.in:clean-local:
doc/reference/Makefile.in:	rm -f *~ *.bak
doc/reference/Makefile.in:	rm -rf .libs
doc/reference/Makefile.in:distclean-local:
doc/reference/Makefile.in:	  rm -rf xml $(REPORT_FILES) \
doc/reference/Makefile.in:	         $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
doc/reference/Makefile.in:maintainer-clean-local: clean
doc/reference/Makefile.in:	cd $(srcdir) && rm -rf html
doc/reference/Makefile.in:install-data-local:
doc/reference/Makefile.in:	then echo '-- Nothing to install' ; \
doc/reference/Makefile.in:	  if test -n "$(DOC_MODULE_VERSION)"; then \
doc/reference/Makefile.in:	    installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
doc/reference/Makefile.in:	    echo '-- Installing '$$i ; \
doc/reference/Makefile.in:	  if test -n "$(DOC_MODULE_VERSION)"; then \
doc/reference/Makefile.in:	    mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
doc/reference/Makefile.in:	      $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
doc/reference/Makefile.in:	    mv -f $${installdir}/$(DOC_MODULE).devhelp \
doc/reference/Makefile.in:	      $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \
doc/reference/Makefile.in:	  ! which gtkdoc-rebase >/dev/null 2>&1 || \
doc/reference/Makefile.in:	    gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir} ; \
doc/reference/Makefile.in:uninstall-local:
doc/reference/Makefile.in:	if test -n "$(DOC_MODULE_VERSION)"; then \
doc/reference/Makefile.in:	  installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
doc/reference/Makefile.in:	rm -rf $${installdir}
doc/reference/Makefile.in:# Require gtk-doc when making dist
doc/reference/Makefile.in:@ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc:
doc/reference/Makefile.in:@ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc:
doc/reference/Makefile.in:@ENABLE_GTK_DOC_FALSE@	@echo "*** gtk-doc must be installed and enabled in order to make dist"
doc/reference/Makefile.in:dist-hook: dist-check-gtkdoc dist-hook-local
doc/reference/Makefile.in:	-cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
doc/reference/Makefile.in:	-cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
doc/reference/Makefile.in:	cd $(distdir) && rm -f $(DISTCLEANFILES)
doc/reference/Makefile.in:	! which gtkdoc-rebase >/dev/null 2>&1 || \
doc/reference/Makefile.in:	  gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
doc/reference/Makefile.in:.PHONY : dist-hook-local docs
doc/reference/html/ch04.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/ch04.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/ch04.html:<link rel="next" href="libvips-VipsArgument.html" title="VipsArgument">
doc/reference/html/ch04.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/ch04.html:<td><a accesskey="n" href="libvips-VipsArgument.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/ch04.html:<span class="refentrytitle"><a href="libvips-VipsArgument.html">VipsArgument</a></span><span class="refpurpose"></span>
doc/reference/html/ch04.html:<span class="refentrytitle"><a href="libvips-transform.html">transform</a></span><span class="refpurpose"></span>
doc/reference/html/ch04.html:<span class="refentrytitle"><a href="libvips-util.html">util</a></span><span class="refpurpose"></span>
doc/reference/html/ch04.html:<span class="refentrytitle"><a href="libvips-version.html">version</a></span><span class="refpurpose"></span>
doc/reference/html/ch04.html:<span class="refentrytitle"><a href="libvips-type.html">type</a></span><span class="refpurpose"></span>
doc/reference/html/ch04.html:<span class="refentrytitle"><a href="libvips-rect.html">rect</a></span><span class="refpurpose"></span>
doc/reference/html/ch04.html:<span class="refentrytitle"><a href="libvips-semaphore.html">semaphore</a></span><span class="refpurpose"></span>
doc/reference/html/ch04.html:<span class="refentrytitle"><a href="libvips-dispatch.html">dispatch</a></span><span class="refpurpose"></span>
doc/reference/html/ch04.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/ch02.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/ch02.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/ch02.html:<link rel="prev" href="libvips-buf.html" title="buf">
doc/reference/html/ch02.html:<link rel="next" href="libvips-arithmetic.html" title="arithmetic">
doc/reference/html/ch02.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/ch02.html:<td><a accesskey="p" href="libvips-buf.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/ch02.html:<td><a accesskey="n" href="libvips-arithmetic.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/ch02.html:<span class="refentrytitle"><a href="libvips-arithmetic.html">arithmetic</a></span><span class="refpurpose"> — operations which perform pixel arithmetic, trig, log, statistics</span>
doc/reference/html/ch02.html:<span class="refentrytitle"><a href="libvips-boolean.html">boolean</a></span><span class="refpurpose"> — boolean algebra on images, bitshifts</span>
doc/reference/html/ch02.html:<span class="refentrytitle"><a href="libvips-relational.html">relational</a></span><span class="refpurpose"> — relational comparisons between pairs of images and 
doc/reference/html/ch02.html:<span class="refentrytitle"><a href="libvips-colour.html">colour</a></span><span class="refpurpose"> — colour operators</span>
doc/reference/html/ch02.html:<span class="refentrytitle"><a href="libvips-conversion.html">conversion</a></span><span class="refpurpose"> — convert images in some way: change band format, change header, insert, extract, join</span>
doc/reference/html/ch02.html:<span class="refentrytitle"><a href="libvips-convolution.html">convolution</a></span><span class="refpurpose"> — convolve and correlate images</span>
doc/reference/html/ch02.html:<span class="refentrytitle"><a href="libvips-freq-filt.html">freq_filt</a></span><span class="refpurpose"> — fourier transforms and frequency-domin filters</span>
doc/reference/html/ch02.html:<span class="refentrytitle"><a href="libvips-histograms-lut.html">histograms_lut</a></span><span class="refpurpose"> — find, manipulate and apply histograms and lookup tables</span>
doc/reference/html/ch02.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-semaphore.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-semaphore.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-semaphore.html:<link rel="prev" href="libvips-rect.html" title="rect">
doc/reference/html/libvips-semaphore.html:<link rel="next" href="libvips-dispatch.html" title="dispatch">
doc/reference/html/libvips-semaphore.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-semaphore.html:<td><a accesskey="p" href="libvips-rect.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-semaphore.html:<td><a accesskey="n" href="libvips-dispatch.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-semaphore.html:<a href="#libvips-semaphore.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-semaphore.html:                  <a href="#libvips-semaphore.description" class="shortcut">Description</a>
doc/reference/html/libvips-semaphore.html:<a name="libvips-semaphore"></a><div class="titlepage"></div>
doc/reference/html/libvips-semaphore.html:<h2><span class="refentrytitle"><a name="libvips-semaphore.top_of_page"></a>semaphore</span></h2>
doc/reference/html/libvips-semaphore.html:<a name="libvips-semaphore.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-semaphore.html:<pre class="synopsis">                    <a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t">im_semaphore_t</a>;
doc/reference/html/libvips-semaphore.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-semaphore.html#im-semaphore-up" title="im_semaphore_up ()">im_semaphore_up</a>                     (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>);
doc/reference/html/libvips-semaphore.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-semaphore.html#im-semaphore-down" title="im_semaphore_down ()">im_semaphore_down</a>                   (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>);
doc/reference/html/libvips-semaphore.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-semaphore.html#im-semaphore-upn" title="im_semaphore_upn ()">im_semaphore_upn</a>                    (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>,
doc/reference/html/libvips-semaphore.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-semaphore.html#im-semaphore-downn" title="im_semaphore_downn ()">im_semaphore_downn</a>                  (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>,
doc/reference/html/libvips-semaphore.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-semaphore.html#im-semaphore-destroy" title="im_semaphore_destroy ()">im_semaphore_destroy</a>                (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>);
doc/reference/html/libvips-semaphore.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-semaphore.html#im-semaphore-init" title="im_semaphore_init ()">im_semaphore_init</a>                   (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>,
doc/reference/html/libvips-semaphore.html:<a name="libvips-semaphore.description"></a><h2>Description</h2>
doc/reference/html/libvips-semaphore.html:<a name="libvips-semaphore.details"></a><h2>Details</h2>
doc/reference/html/libvips-semaphore.html:<a name="im-semaphore-t"></a><h3>im_semaphore_t</h3>
doc/reference/html/libvips-semaphore.html:<a name="im-semaphore-up"></a><h3>im_semaphore_up ()</h3>
doc/reference/html/libvips-semaphore.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_semaphore_up                     (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>);</pre>
doc/reference/html/libvips-semaphore.html:<a name="im-semaphore-down"></a><h3>im_semaphore_down ()</h3>
doc/reference/html/libvips-semaphore.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_semaphore_down                   (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>);</pre>
doc/reference/html/libvips-semaphore.html:<a name="im-semaphore-upn"></a><h3>im_semaphore_upn ()</h3>
doc/reference/html/libvips-semaphore.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_semaphore_upn                    (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>,
doc/reference/html/libvips-semaphore.html:<a name="im-semaphore-downn"></a><h3>im_semaphore_downn ()</h3>
doc/reference/html/libvips-semaphore.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_semaphore_downn                  (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>,
doc/reference/html/libvips-semaphore.html:<a name="im-semaphore-destroy"></a><h3>im_semaphore_destroy ()</h3>
doc/reference/html/libvips-semaphore.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_semaphore_destroy                (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>);</pre>
doc/reference/html/libvips-semaphore.html:<a name="im-semaphore-init"></a><h3>im_semaphore_init ()</h3>
doc/reference/html/libvips-semaphore.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_semaphore_init                   (<em class="parameter"><code><a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t"><span class="type">im_semaphore_t</span></a> *s</code></em>,
doc/reference/html/libvips-semaphore.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-video.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-video.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-video.html:<link rel="prev" href="libvips-other.html" title="other">
doc/reference/html/libvips-video.html:<link rel="next" href="libvips-cimg-funcs.html" title="cimg_funcs">
doc/reference/html/libvips-video.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-video.html:<td><a accesskey="p" href="libvips-other.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-video.html:<td><a accesskey="n" href="libvips-cimg-funcs.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-video.html:<a href="#libvips-video.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-video.html:                  <a href="#libvips-video.description" class="shortcut">Description</a>
doc/reference/html/libvips-video.html:<a name="libvips-video"></a><div class="titlepage"></div>
doc/reference/html/libvips-video.html:<h2><span class="refentrytitle"><a name="libvips-video.top_of_page"></a>video</span></h2>
doc/reference/html/libvips-video.html:<a name="libvips-video.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-video.html:<a name="libvips-video.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-video.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-video.html#im-video-v4l1" title="im_video_v4l1 ()">im_video_v4l1</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-video.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-video.html#im-video-test" title="im_video_test ()">im_video_test</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-video.html:<a name="libvips-video.description"></a><h2>Description</h2>
doc/reference/html/libvips-video.html:<a name="libvips-video.details"></a><h2>Details</h2>
doc/reference/html/libvips-video.html:<a name="im-video-v4l1"></a><h3>im_video_v4l1 ()</h3>
doc/reference/html/libvips-video.html:<a name="im-video-test"></a><h3>im_video_test ()</h3>
doc/reference/html/libvips-video.html:<a name="libvips-video.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-video.html:<a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/libvips-video.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-mosaicing.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-mosaicing.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-mosaicing.html:<link rel="prev" href="libvips-inplace.html" title="inplace">
doc/reference/html/libvips-mosaicing.html:<link rel="next" href="libvips-other.html" title="other">
doc/reference/html/libvips-mosaicing.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-mosaicing.html:<td><a accesskey="p" href="libvips-inplace.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-mosaicing.html:<td><a accesskey="n" href="libvips-other.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-mosaicing.html:<a href="#libvips-mosaicing.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-mosaicing.html:                  <a href="#libvips-mosaicing.description" class="shortcut">Description</a>
doc/reference/html/libvips-mosaicing.html:<a name="libvips-mosaicing"></a><div class="titlepage"></div>
doc/reference/html/libvips-mosaicing.html:<h2><span class="refentrytitle"><a name="libvips-mosaicing.top_of_page"></a>mosaicing</span></h2>
doc/reference/html/libvips-mosaicing.html:<a name="libvips-mosaicing.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-mosaicing.html:<a name="libvips-mosaicing.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-lrmerge" title="im_lrmerge ()">im_lrmerge</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-tbmerge" title="im_tbmerge ()">im_tbmerge</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-lrmerge1" title="im_lrmerge1 ()">im_lrmerge1</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-tbmerge1" title="im_tbmerge1 ()">im_tbmerge1</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-lrmosaic" title="im_lrmosaic ()">im_lrmosaic</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-tbmosaic" title="im_tbmosaic ()">im_tbmosaic</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-lrmosaic1" title="im_lrmosaic1 ()">im_lrmosaic1</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-tbmosaic1" title="im_tbmosaic1 ()">im_tbmosaic1</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-global-balance" title="im_global_balance ()">im_global_balance</a>                   (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-global-balancef" title="im_global_balancef ()">im_global_balancef</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-correl" title="im_correl ()">im_correl</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-remosaic" title="im_remosaic ()">im_remosaic</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-align-bands" title="im_align_bands ()">im_align_bands</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-mosaicing.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mosaicing.html#im-maxpos-subpel" title="im_maxpos_subpel ()">im_maxpos_subpel</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-mosaicing.html:<a name="libvips-mosaicing.description"></a><h2>Description</h2>
doc/reference/html/libvips-mosaicing.html:<a name="libvips-mosaicing.details"></a><h2>Details</h2>
doc/reference/html/libvips-mosaicing.html:<a name="im-lrmerge"></a><h3>im_lrmerge ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-tbmerge"></a><h3>im_tbmerge ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-lrmerge1"></a><h3>im_lrmerge1 ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-tbmerge1"></a><h3>im_tbmerge1 ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-lrmosaic"></a><h3>im_lrmosaic ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-tbmosaic"></a><h3>im_tbmosaic ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-lrmosaic1"></a><h3>im_lrmosaic1 ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-tbmosaic1"></a><h3>im_tbmosaic1 ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-global-balance"></a><h3>im_global_balance ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-global-balancef"></a><h3>im_global_balancef ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-correl"></a><h3>im_correl ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-remosaic"></a><h3>im_remosaic ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-align-bands"></a><h3>im_align_bands ()</h3>
doc/reference/html/libvips-mosaicing.html:<a name="im-maxpos-subpel"></a><h3>im_maxpos_subpel ()</h3>
doc/reference/html/libvips-mosaicing.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/index.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/index.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/index.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-image.html">image</a></span><span class="refpurpose"> — the VIPS image class</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-header.html">header</a></span><span class="refpurpose"> — get, set and walk image headers</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-check.html">check</a></span><span class="refpurpose"> — test images for various properties</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-callback.html">callback</a></span><span class="refpurpose"> — image callbacks</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-meta.html">meta</a></span><span class="refpurpose"> — get and set image metadata</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-region.html">region</a></span><span class="refpurpose"> — small, rectangular parts of images</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-generate.html">generate</a></span><span class="refpurpose"> — calculate pixels and pixel buffers</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-error.html">error</a></span><span class="refpurpose"> — error messages and error handling</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-memory.html">memory</a></span><span class="refpurpose"> — memory utilities</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-buf.html">buf</a></span><span class="refpurpose"> — a string you can append to</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-arithmetic.html">arithmetic</a></span><span class="refpurpose"> — operations which perform pixel arithmetic, trig, log, statistics</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-boolean.html">boolean</a></span><span class="refpurpose"> — boolean algebra on images, bitshifts</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-relational.html">relational</a></span><span class="refpurpose"> — relational comparisons between pairs of images and 
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-colour.html">colour</a></span><span class="refpurpose"> — colour operators</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-conversion.html">conversion</a></span><span class="refpurpose"> — convert images in some way: change band format, change header, insert, extract, join</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-convolution.html">convolution</a></span><span class="refpurpose"> — convolve and correlate images</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-freq-filt.html">freq_filt</a></span><span class="refpurpose"> — fourier transforms and frequency-domin filters</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-histograms-lut.html">histograms_lut</a></span><span class="refpurpose"> — find, manipulate and apply histograms and lookup tables</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-morphology.html">morphology</a></span><span class="refpurpose"> — morphological operators, rank filters and related image 
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-resample.html">resample</a></span><span class="refpurpose"> — shrink, expand, rotate with a choice of interpolators</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-mask.html">mask</a></span><span class="refpurpose"> — load, save and process mask (matrix) objects</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-inplace.html">inplace</a></span><span class="refpurpose"> — in-place paintbox operations: flood, paste, line,
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-mosaicing.html">mosaicing</a></span><span class="refpurpose"> — build image mosaics</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-other.html">other</a></span><span class="refpurpose"> — miscellaneous operators</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-video.html">video</a></span><span class="refpurpose"> — various video grabbers</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-cimg-funcs.html">cimg_funcs</a></span><span class="refpurpose"> — expose operations from the CImg library, mostly noise
doc/reference/html/index.html:some non-linear</span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-VipsArgument.html">VipsArgument</a></span><span class="refpurpose"></span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-transform.html">transform</a></span><span class="refpurpose"></span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-util.html">util</a></span><span class="refpurpose"></span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-version.html">version</a></span><span class="refpurpose"></span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-type.html">type</a></span><span class="refpurpose"></span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-rect.html">rect</a></span><span class="refpurpose"></span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-semaphore.html">semaphore</a></span><span class="refpurpose"></span>
doc/reference/html/index.html:<span class="refentrytitle"><a href="libvips-dispatch.html">dispatch</a></span><span class="refpurpose"></span>
doc/reference/html/index.html:<dt><span class="chapter"><a href="object-tree.html">Object Hierarchy</a></span></dt>
doc/reference/html/index.html:<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
doc/reference/html/index.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-dispatch.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-dispatch.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-dispatch.html:<link rel="prev" href="libvips-semaphore.html" title="semaphore">
doc/reference/html/libvips-dispatch.html:<link rel="next" href="object-tree.html" title="Object Hierarchy">
doc/reference/html/libvips-dispatch.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-dispatch.html:<td><a accesskey="p" href="libvips-semaphore.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-dispatch.html:<td><a accesskey="n" href="object-tree.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-dispatch.html:<a href="#libvips-dispatch.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-dispatch.html:                  <a href="#libvips-dispatch.description" class="shortcut">Description</a>
doc/reference/html/libvips-dispatch.html:<a name="libvips-dispatch"></a><div class="titlepage"></div>
doc/reference/html/libvips-dispatch.html:<h2><span class="refentrytitle"><a name="libvips-dispatch.top_of_page"></a>dispatch</span></h2>
doc/reference/html/libvips-dispatch.html:<a name="libvips-dispatch.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-dispatch.html:<pre class="synopsis">#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-IMAGEVEC:CAPS" title="IM_TYPE_IMAGEVEC">IM_TYPE_IMAGEVEC</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-DOUBLEVEC:CAPS" title="IM_TYPE_DOUBLEVEC">IM_TYPE_DOUBLEVEC</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-INTVEC:CAPS" title="IM_TYPE_INTVEC">IM_TYPE_INTVEC</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-DOUBLE:CAPS" title="IM_TYPE_DOUBLE">IM_TYPE_DOUBLE</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-INT:CAPS" title="IM_TYPE_INT">IM_TYPE_INT</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-COMPLEX:CAPS" title="IM_TYPE_COMPLEX">IM_TYPE_COMPLEX</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-STRING:CAPS" title="IM_TYPE_STRING">IM_TYPE_STRING</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-IMASK:CAPS" title="IM_TYPE_IMASK">IM_TYPE_IMASK</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-DMASK:CAPS" title="IM_TYPE_DMASK">IM_TYPE_DMASK</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-IMAGE:CAPS" title="IM_TYPE_IMAGE">IM_TYPE_IMAGE</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-DISPLAY:CAPS" title="IM_TYPE_DISPLAY">IM_TYPE_DISPLAY</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-GVALUE:CAPS" title="IM_TYPE_GVALUE">IM_TYPE_GVALUE</a>
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-TYPE-INTERPOLATE:CAPS" title="IM_TYPE_INTERPOLATE">IM_TYPE_INTERPOLATE</a>
doc/reference/html/libvips-dispatch.html:typedef             <a class="link" href="libvips-dispatch.html#im-arg-type" title="im_arg_type">im_arg_type</a>;
doc/reference/html/libvips-dispatch.html:typedef             <a class="link" href="libvips-dispatch.html#im-object" title="im_object">im_object</a>;
doc/reference/html/libvips-dispatch.html:enum                <a class="link" href="libvips-dispatch.html#im-type-flags" title="enum im_type_flags">im_type_flags</a>;
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 (<a class="link" href="libvips-dispatch.html#im-init-obj-fn" title="im_init_obj_fn ()">*im_init_obj_fn</a>)                   (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> *obj</code></em>,
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 (<a class="link" href="libvips-dispatch.html#im-dest-obj-fn" title="im_dest_obj_fn ()">*im_dest_obj_fn</a>)                   (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:                    <a class="link" href="libvips-dispatch.html#im-type-desc" title="im_type_desc">im_type_desc</a>;
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 (<a class="link" href="libvips-dispatch.html#im-print-obj-fn" title="im_print_obj_fn ()">*im_print_obj_fn</a>)                  (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:                    <a class="link" href="libvips-dispatch.html#im-arg-desc" title="im_arg_desc">im_arg_desc</a>;
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 (<a class="link" href="libvips-dispatch.html#im-dispatch-fn" title="im_dispatch_fn ()">*im_dispatch_fn</a>)                   (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> *argv</code></em>);
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-MAX-ARGS:CAPS" title="IM_MAX_ARGS">IM_MAX_ARGS</a>
doc/reference/html/libvips-dispatch.html:enum                <a class="link" href="libvips-dispatch.html#im-fn-flags" title="enum im_fn_flags">im_fn_flags</a>;
doc/reference/html/libvips-dispatch.html:                    <a class="link" href="libvips-dispatch.html#im-function" title="im_function">im_function</a>;
doc/reference/html/libvips-dispatch.html:                    <a class="link" href="libvips-dispatch.html#im-package" title="im_package">im_package</a>;
doc/reference/html/libvips-dispatch.html:                    <a class="link" href="libvips-dispatch.html#im-mask-object" title="im_mask_object">im_mask_object</a>;
doc/reference/html/libvips-dispatch.html:                    <a class="link" href="libvips-dispatch.html#im-doublevec-object" title="im_doublevec_object">im_doublevec_object</a>;
doc/reference/html/libvips-dispatch.html:                    <a class="link" href="libvips-dispatch.html#im-intvec-object" title="im_intvec_object">im_intvec_object</a>;
doc/reference/html/libvips-dispatch.html:                    <a class="link" href="libvips-dispatch.html#im-imagevec-object" title="im_imagevec_object">im_imagevec_object</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-int" title="im__input_int">im__input_int</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-intvec" title="im__input_intvec">im__input_intvec</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-imask" title="im__input_imask">im__input_imask</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-int" title="im__output_int">im__output_int</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-intvec" title="im__output_intvec">im__output_intvec</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-imask" title="im__output_imask">im__output_imask</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-double" title="im__input_double">im__input_double</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-doublevec" title="im__input_doublevec">im__input_doublevec</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-dmask" title="im__input_dmask">im__input_dmask</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-double" title="im__output_double">im__output_double</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-doublevec" title="im__output_doublevec">im__output_doublevec</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-dmask" title="im__output_dmask">im__output_dmask</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-dmask-screen" title="im__output_dmask_screen">im__output_dmask_screen</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-complex" title="im__output_complex">im__output_complex</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-string" title="im__input_string">im__input_string</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-string" title="im__output_string">im__output_string</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-imagevec" title="im__input_imagevec">im__input_imagevec</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-image" title="im__input_image">im__input_image</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-image" title="im__output_image">im__output_image</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--rw-image" title="im__rw_image">im__rw_image</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-display" title="im__input_display">im__input_display</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-display" title="im__output_display">im__output_display</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-gvalue" title="im__input_gvalue">im__input_gvalue</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--output-gvalue" title="im__output_gvalue">im__output_gvalue</a>;
doc/reference/html/libvips-dispatch.html:extern              im_type_desc <a class="link" href="libvips-dispatch.html#im--input-interpolate" title="im__input_interpolate">im__input_interpolate</a>;
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im--iprint" title="im__iprint ()">im__iprint</a>                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im--ivprint" title="im__ivprint ()">im__ivprint</a>                         (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im--dprint" title="im__dprint ()">im__dprint</a>                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im--dvprint" title="im__dvprint ()">im__dvprint</a>                         (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im--dmsprint" title="im__dmsprint ()">im__dmsprint</a>                        (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im--cprint" title="im__cprint ()">im__cprint</a>                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im--sprint" title="im__sprint ()">im__sprint</a>                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im--displayprint" title="im__displayprint ()">im__displayprint</a>                    (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im--gprint" title="im__gprint ()">im__gprint</a>                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-INT:CAPS" title="IM_INPUT_INT()">IM_INPUT_INT</a>                        (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-INTVEC:CAPS" title="IM_INPUT_INTVEC()">IM_INPUT_INTVEC</a>                     (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-IMASK:CAPS" title="IM_INPUT_IMASK()">IM_INPUT_IMASK</a>                      (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-INT:CAPS" title="IM_OUTPUT_INT()">IM_OUTPUT_INT</a>                       (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-INTVEC:CAPS" title="IM_OUTPUT_INTVEC()">IM_OUTPUT_INTVEC</a>                    (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-IMASK:CAPS" title="IM_OUTPUT_IMASK()">IM_OUTPUT_IMASK</a>                     (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-DOUBLE:CAPS" title="IM_INPUT_DOUBLE()">IM_INPUT_DOUBLE</a>                     (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-DOUBLEVEC:CAPS" title="IM_INPUT_DOUBLEVEC()">IM_INPUT_DOUBLEVEC</a>                  (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-DMASK:CAPS" title="IM_INPUT_DMASK()">IM_INPUT_DMASK</a>                      (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-DOUBLE:CAPS" title="IM_OUTPUT_DOUBLE()">IM_OUTPUT_DOUBLE</a>                    (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-DOUBLEVEC:CAPS" title="IM_OUTPUT_DOUBLEVEC()">IM_OUTPUT_DOUBLEVEC</a>                 (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-DMASK:CAPS" title="IM_OUTPUT_DMASK()">IM_OUTPUT_DMASK</a>                     (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-DMASK-STATS:CAPS" title="IM_OUTPUT_DMASK_STATS()">IM_OUTPUT_DMASK_STATS</a>               (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-COMPLEX:CAPS" title="IM_OUTPUT_COMPLEX()">IM_OUTPUT_COMPLEX</a>                   (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-STRING:CAPS" title="IM_INPUT_STRING()">IM_INPUT_STRING</a>                     (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-STRING:CAPS" title="IM_OUTPUT_STRING()">IM_OUTPUT_STRING</a>                    (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-IMAGE:CAPS" title="IM_INPUT_IMAGE()">IM_INPUT_IMAGE</a>                      (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-IMAGEVEC:CAPS" title="IM_INPUT_IMAGEVEC()">IM_INPUT_IMAGEVEC</a>                   (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-IMAGE:CAPS" title="IM_OUTPUT_IMAGE()">IM_OUTPUT_IMAGE</a>                     (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-RW-IMAGE:CAPS" title="IM_RW_IMAGE()">IM_RW_IMAGE</a>                         (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-DISPLAY:CAPS" title="IM_INPUT_DISPLAY()">IM_INPUT_DISPLAY</a>                    (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-DISPLAY:CAPS" title="IM_OUTPUT_DISPLAY()">IM_OUTPUT_DISPLAY</a>                   (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-GVALUE:CAPS" title="IM_INPUT_GVALUE()">IM_INPUT_GVALUE</a>                     (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-OUTPUT-GVALUE:CAPS" title="IM_OUTPUT_GVALUE()">IM_OUTPUT_GVALUE</a>                    (S)
doc/reference/html/libvips-dispatch.html:#define             <a class="link" href="libvips-dispatch.html#IM-INPUT-INTERPOLATE:CAPS" title="IM_INPUT_INTERPOLATE()">IM_INPUT_INTERPOLATE</a>                (S)
doc/reference/html/libvips-dispatch.html:<a class="link" href="libvips-dispatch.html#im-package" title="im_package"><span class="returnvalue">im_package</span></a> *        <a class="link" href="libvips-dispatch.html#im-load-plugin" title="im_load_plugin ()">im_load_plugin</a>                      (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im-load-plugins" title="im_load_plugins ()">im_load_plugins</a>                     (<em class="parameter"><code>const <span class="type">char</span> *fmt</code></em>,
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im-close-plugins" title="im_close_plugins ()">im_close_plugins</a>                    (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-dispatch.html#im-map-packages" title="im_map_packages ()">im_map_packages</a>                     (<em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-dispatch.html:<a class="link" href="libvips-dispatch.html#im-function" title="im_function"><span class="returnvalue">im_function</span></a> *       <a class="link" href="libvips-dispatch.html#im-find-function" title="im_find_function ()">im_find_function</a>                    (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
doc/reference/html/libvips-dispatch.html:<a class="link" href="libvips-dispatch.html#im-package" title="im_package"><span class="returnvalue">im_package</span></a> *        <a class="link" href="libvips-dispatch.html#im-find-package" title="im_find_package ()">im_find_package</a>                     (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
doc/reference/html/libvips-dispatch.html:<a class="link" href="libvips-dispatch.html#im-package" title="im_package"><span class="returnvalue">im_package</span></a> *        <a class="link" href="libvips-dispatch.html#im-package-of-function" title="im_package_of_function ()">im_package_of_function</a>              (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im-free-vargv" title="im_free_vargv ()">im_free_vargv</a>                       (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-function" title="im_function"><span class="type">im_function</span></a> *fn</code></em>,
doc/reference/html/libvips-dispatch.html:                                                         <em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> *vargv</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im-allocate-vargv" title="im_allocate_vargv ()">im_allocate_vargv</a>                   (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-function" title="im_function"><span class="type">im_function</span></a> *fn</code></em>,
doc/reference/html/libvips-dispatch.html:                                                         <em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> *vargv</code></em>);
doc/reference/html/libvips-dispatch.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-dispatch.html#im-run-command" title="im_run_command ()">im_run_command</a>                      (<em class="parameter"><code><span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-dispatch.html:<a name="libvips-dispatch.description"></a><h2>Description</h2>
doc/reference/html/libvips-dispatch.html:<a name="libvips-dispatch.details"></a><h2>Details</h2>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-IMAGEVEC:CAPS"></a><h3>IM_TYPE_IMAGEVEC</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-DOUBLEVEC:CAPS"></a><h3>IM_TYPE_DOUBLEVEC</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-INTVEC:CAPS"></a><h3>IM_TYPE_INTVEC</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-DOUBLE:CAPS"></a><h3>IM_TYPE_DOUBLE</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-INT:CAPS"></a><h3>IM_TYPE_INT</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting">#define IM_TYPE_INT "integer"		/* 32-bit integer */
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-COMPLEX:CAPS"></a><h3>IM_TYPE_COMPLEX</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-STRING:CAPS"></a><h3>IM_TYPE_STRING</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting">#define IM_TYPE_STRING "string"         /* Zero-terminated char array */
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-IMASK:CAPS"></a><h3>IM_TYPE_IMASK</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-DMASK:CAPS"></a><h3>IM_TYPE_DMASK</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-IMAGE:CAPS"></a><h3>IM_TYPE_IMAGE</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-DISPLAY:CAPS"></a><h3>IM_TYPE_DISPLAY</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-GVALUE:CAPS"></a><h3>IM_TYPE_GVALUE</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-TYPE-INTERPOLATE:CAPS"></a><h3>IM_TYPE_INTERPOLATE</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-arg-type"></a><h3>im_arg_type</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-object"></a><h3>im_object</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-type-flags"></a><h3>enum im_type_flags</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-init-obj-fn"></a><h3>im_init_obj_fn ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 (*im_init_obj_fn)                   (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> *obj</code></em>,
doc/reference/html/libvips-dispatch.html:<a name="im-dest-obj-fn"></a><h3>im_dest_obj_fn ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 (*im_dest_obj_fn)                   (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im-type-desc"></a><h3>im_type_desc</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-print-obj-fn"></a><h3>im_print_obj_fn ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 (*im_print_obj_fn)                  (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im-arg-desc"></a><h3>im_arg_desc</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-dispatch-fn"></a><h3>im_dispatch_fn ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 (*im_dispatch_fn)                   (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> *argv</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="IM-MAX-ARGS:CAPS"></a><h3>IM_MAX_ARGS</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-fn-flags"></a><h3>enum im_fn_flags</h3>
doc/reference/html/libvips-dispatch.html:	IM_FN_PTOP = 0x4, /* Point-to-point ... can be done with a LUT */
doc/reference/html/libvips-dispatch.html:<a name="im-function"></a><h3>im_function</h3>
doc/reference/html/libvips-dispatch.html:	char *desc;		/* Description - eg "photographic negative" */
doc/reference/html/libvips-dispatch.html:<a name="im-package"></a><h3>im_package</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-mask-object"></a><h3>im_mask_object</h3>
doc/reference/html/libvips-dispatch.html:	char *name;		/* Command-line name in */
doc/reference/html/libvips-dispatch.html:	void *mask;		/* Mask --- DOUBLE or INT */
doc/reference/html/libvips-dispatch.html:<a name="im-doublevec-object"></a><h3>im_doublevec_object</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-intvec-object"></a><h3>im_intvec_object</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-imagevec-object"></a><h3>im_imagevec_object</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-int"></a><h3>im__input_int</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-intvec"></a><h3>im__input_intvec</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-imask"></a><h3>im__input_imask</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-int"></a><h3>im__output_int</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-intvec"></a><h3>im__output_intvec</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-imask"></a><h3>im__output_imask</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-double"></a><h3>im__input_double</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-doublevec"></a><h3>im__input_doublevec</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-dmask"></a><h3>im__input_dmask</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-double"></a><h3>im__output_double</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-doublevec"></a><h3>im__output_doublevec</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-dmask"></a><h3>im__output_dmask</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-dmask-screen"></a><h3>im__output_dmask_screen</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-complex"></a><h3>im__output_complex</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-string"></a><h3>im__input_string</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-string"></a><h3>im__output_string</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-imagevec"></a><h3>im__input_imagevec</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-image"></a><h3>im__input_image</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-image"></a><h3>im__output_image</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--rw-image"></a><h3>im__rw_image</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-display"></a><h3>im__input_display</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-display"></a><h3>im__output_display</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-gvalue"></a><h3>im__input_gvalue</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--output-gvalue"></a><h3>im__output_gvalue</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--input-interpolate"></a><h3>im__input_interpolate</h3>
doc/reference/html/libvips-dispatch.html:<a name="im--iprint"></a><h3>im__iprint ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__iprint                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im--ivprint"></a><h3>im__ivprint ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__ivprint                         (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im--dprint"></a><h3>im__dprint ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__dprint                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im--dvprint"></a><h3>im__dvprint ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__dvprint                         (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im--dmsprint"></a><h3>im__dmsprint ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__dmsprint                        (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im--cprint"></a><h3>im__cprint ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__cprint                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im--sprint"></a><h3>im__sprint ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__sprint                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im--displayprint"></a><h3>im__displayprint ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__displayprint                    (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im--gprint"></a><h3>im__gprint ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__gprint                          (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> obj</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-INT:CAPS"></a><h3>IM_INPUT_INT()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-INTVEC:CAPS"></a><h3>IM_INPUT_INTVEC()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-IMASK:CAPS"></a><h3>IM_INPUT_IMASK()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-INT:CAPS"></a><h3>IM_OUTPUT_INT()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-INTVEC:CAPS"></a><h3>IM_OUTPUT_INTVEC()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-IMASK:CAPS"></a><h3>IM_OUTPUT_IMASK()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-DOUBLE:CAPS"></a><h3>IM_INPUT_DOUBLE()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-DOUBLEVEC:CAPS"></a><h3>IM_INPUT_DOUBLEVEC()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-DMASK:CAPS"></a><h3>IM_INPUT_DMASK()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-DOUBLE:CAPS"></a><h3>IM_OUTPUT_DOUBLE()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-DOUBLEVEC:CAPS"></a><h3>IM_OUTPUT_DOUBLEVEC()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-DMASK:CAPS"></a><h3>IM_OUTPUT_DMASK()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-DMASK-STATS:CAPS"></a><h3>IM_OUTPUT_DMASK_STATS()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-COMPLEX:CAPS"></a><h3>IM_OUTPUT_COMPLEX()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-STRING:CAPS"></a><h3>IM_INPUT_STRING()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-STRING:CAPS"></a><h3>IM_OUTPUT_STRING()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-IMAGE:CAPS"></a><h3>IM_INPUT_IMAGE()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-IMAGEVEC:CAPS"></a><h3>IM_INPUT_IMAGEVEC()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-IMAGE:CAPS"></a><h3>IM_OUTPUT_IMAGE()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-RW-IMAGE:CAPS"></a><h3>IM_RW_IMAGE()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-DISPLAY:CAPS"></a><h3>IM_INPUT_DISPLAY()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-DISPLAY:CAPS"></a><h3>IM_OUTPUT_DISPLAY()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-GVALUE:CAPS"></a><h3>IM_INPUT_GVALUE()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-OUTPUT-GVALUE:CAPS"></a><h3>IM_OUTPUT_GVALUE()</h3>
doc/reference/html/libvips-dispatch.html:<a name="IM-INPUT-INTERPOLATE:CAPS"></a><h3>IM_INPUT_INTERPOLATE()</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-load-plugin"></a><h3>im_load_plugin ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><a class="link" href="libvips-dispatch.html#im-package" title="im_package"><span class="returnvalue">im_package</span></a> *        im_load_plugin                      (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im-load-plugins"></a><h3>im_load_plugins ()</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-close-plugins"></a><h3>im_close_plugins ()</h3>
doc/reference/html/libvips-dispatch.html:<a name="im-map-packages"></a><h3>im_map_packages ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">void</span> *              im_map_packages                     (<em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-dispatch.html:<a name="im-find-function"></a><h3>im_find_function ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><a class="link" href="libvips-dispatch.html#im-function" title="im_function"><span class="returnvalue">im_function</span></a> *       im_find_function                    (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im-find-package"></a><h3>im_find_package ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><a class="link" href="libvips-dispatch.html#im-package" title="im_package"><span class="returnvalue">im_package</span></a> *        im_find_package                     (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im-package-of-function"></a><h3>im_package_of_function ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><a class="link" href="libvips-dispatch.html#im-package" title="im_package"><span class="returnvalue">im_package</span></a> *        im_package_of_function              (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im-free-vargv"></a><h3>im_free_vargv ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_free_vargv                       (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-function" title="im_function"><span class="type">im_function</span></a> *fn</code></em>,
doc/reference/html/libvips-dispatch.html:                                                         <em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> *vargv</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im-allocate-vargv"></a><h3>im_allocate_vargv ()</h3>
doc/reference/html/libvips-dispatch.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_allocate_vargv                   (<em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-function" title="im_function"><span class="type">im_function</span></a> *fn</code></em>,
doc/reference/html/libvips-dispatch.html:                                                         <em class="parameter"><code><a class="link" href="libvips-dispatch.html#im-object" title="im_object"><span class="type">im_object</span></a> *vargv</code></em>);</pre>
doc/reference/html/libvips-dispatch.html:<a name="im-run-command"></a><h3>im_run_command ()</h3>
doc/reference/html/libvips-dispatch.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-memory.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-memory.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-memory.html:<link rel="prev" href="libvips-error.html" title="error">
doc/reference/html/libvips-memory.html:<link rel="next" href="libvips-buf.html" title="buf">
doc/reference/html/libvips-memory.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-memory.html:<td><a accesskey="p" href="libvips-error.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-memory.html:<td><a accesskey="n" href="libvips-buf.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-memory.html:<a href="#libvips-memory.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-memory.html:                  <a href="#libvips-memory.description" class="shortcut">Description</a>
doc/reference/html/libvips-memory.html:<a name="libvips-memory"></a><div class="titlepage"></div>
doc/reference/html/libvips-memory.html:<h2><span class="refentrytitle"><a name="libvips-memory.top_of_page"></a>memory</span></h2>
doc/reference/html/libvips-memory.html:<a name="libvips-memory.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-memory.html:<a name="libvips-memory.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-memory.html:#define             <a class="link" href="libvips-memory.html#IM-NEW:CAPS" title="IM_NEW()">IM_NEW</a>                              (IM,
doc/reference/html/libvips-memory.html:#define             <a class="link" href="libvips-memory.html#IM-ARRAY:CAPS" title="IM_ARRAY()">IM_ARRAY</a>                            (IM,
doc/reference/html/libvips-memory.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-memory.html#im-malloc" title="im_malloc ()">im_malloc</a>                           (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/libvips-memory.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-memory.html#im-free" title="im_free ()">im_free</a>                             (<em class="parameter"><code><span class="type">void</span> *Param1</code></em>);
doc/reference/html/libvips-memory.html:<a name="libvips-memory.description"></a><h2>Description</h2>
doc/reference/html/libvips-memory.html:<a name="libvips-memory.details"></a><h2>Details</h2>
doc/reference/html/libvips-memory.html:<a name="IM-NEW:CAPS"></a><h3>IM_NEW()</h3>
doc/reference/html/libvips-memory.html:<td>allocate memory local to <em class="parameter"><code>IM</code></em>, or <code class="literal">NULL</code> for no auto-free
doc/reference/html/libvips-memory.html:<a name="IM-ARRAY:CAPS"></a><h3>IM_ARRAY()</h3>
doc/reference/html/libvips-memory.html:<td>allocate memory local to <em class="parameter"><code>IM</code></em>, or <code class="literal">NULL</code> for no auto-free
doc/reference/html/libvips-memory.html:<a name="im-malloc"></a><h3>im_malloc ()</h3>
doc/reference/html/libvips-memory.html:<pre class="programlisting"><span class="returnvalue">void</span> *              im_malloc                           (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/libvips-memory.html:the memory explicitly with <a class="link" href="libvips-memory.html#im-free" title="im_free ()"><code class="function">im_free()</code></a>.
doc/reference/html/libvips-memory.html:If allocation fails <a class="link" href="libvips-memory.html#im-malloc" title="im_malloc ()"><code class="function">im_malloc()</code></a> returns <code class="literal">NULL</code> and 
doc/reference/html/libvips-memory.html:<a name="im-free"></a><h3>im_free ()</h3>
doc/reference/html/libvips-memory.html:memory that was previously allocated with <a class="link" href="libvips-memory.html#im-malloc" title="im_malloc ()"><code class="function">im_malloc()</code></a> with a <code class="literal">NULL</code> first
doc/reference/html/libvips-memory.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/index.sgml:<ANCHOR id="libvips-image" href="libvips/libvips-image.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-image.stability-level" href="libvips/libvips-image.html#libvips-image.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-image.synopsis" href="libvips/libvips-image.html#libvips-image.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-image.description" href="libvips/libvips-image.html#libvips-image.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-image.details" href="libvips/libvips-image.html#libvips-image.details">
doc/reference/html/index.sgml:<ANCHOR id="IM-MAGIC-INTEL:CAPS" href="libvips/libvips-image.html#IM-MAGIC-INTEL:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-MAGIC-SPARC:CAPS" href="libvips/libvips-image.html#IM-MAGIC-SPARC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VipsDemandStyle" href="libvips/libvips-image.html#VipsDemandStyle">
doc/reference/html/index.sgml:<ANCHOR id="IM-SMALLTILE:CAPS" href="libvips/libvips-image.html#IM-SMALLTILE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-FATSTRIP:CAPS" href="libvips/libvips-image.html#IM-FATSTRIP:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-THINSTRIP:CAPS" href="libvips/libvips-image.html#IM-THINSTRIP:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-ANY:CAPS" href="libvips/libvips-image.html#IM-ANY:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VipsType" href="libvips/libvips-image.html#VipsType">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-MULTIBAND:CAPS" href="libvips/libvips-image.html#IM-TYPE-MULTIBAND:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-B-W:CAPS" href="libvips/libvips-image.html#IM-TYPE-B-W:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-HISTOGRAM:CAPS" href="libvips/libvips-image.html#IM-TYPE-HISTOGRAM:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-FOURIER:CAPS" href="libvips/libvips-image.html#IM-TYPE-FOURIER:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-XYZ:CAPS" href="libvips/libvips-image.html#IM-TYPE-XYZ:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-LAB:CAPS" href="libvips/libvips-image.html#IM-TYPE-LAB:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-CMYK:CAPS" href="libvips/libvips-image.html#IM-TYPE-CMYK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-LABQ:CAPS" href="libvips/libvips-image.html#IM-TYPE-LABQ:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-RGB:CAPS" href="libvips/libvips-image.html#IM-TYPE-RGB:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-UCS:CAPS" href="libvips/libvips-image.html#IM-TYPE-UCS:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-LCH:CAPS" href="libvips/libvips-image.html#IM-TYPE-LCH:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-LABS:CAPS" href="libvips/libvips-image.html#IM-TYPE-LABS:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-sRGB" href="libvips/libvips-image.html#IM-TYPE-sRGB">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-YXY:CAPS" href="libvips/libvips-image.html#IM-TYPE-YXY:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-RGB16:CAPS" href="libvips/libvips-image.html#IM-TYPE-RGB16:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-GREY16:CAPS" href="libvips/libvips-image.html#IM-TYPE-GREY16:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VipsBandFmt" href="libvips/libvips-image.html#VipsBandFmt">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-NOTSET:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-NOTSET:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-UCHAR:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-UCHAR:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-CHAR:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-CHAR:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-USHORT:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-USHORT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-SHORT:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-SHORT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-UINT:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-UINT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-INT:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-INT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-FLOAT:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-FLOAT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-COMPLEX:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-COMPLEX:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-DOUBLE:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-DOUBLE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BANDFMT-DPCOMPLEX:CAPS" href="libvips/libvips-image.html#IM-BANDFMT-DPCOMPLEX:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VipsCoding" href="libvips/libvips-image.html#VipsCoding">
doc/reference/html/index.sgml:<ANCHOR id="IM-CODING-NONE:CAPS" href="libvips/libvips-image.html#IM-CODING-NONE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-CODING-LABQ:CAPS" href="libvips/libvips-image.html#IM-CODING-LABQ:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-CODING-RAD:CAPS" href="libvips/libvips-image.html#IM-CODING-RAD:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VipsProgress" href="libvips/libvips-image.html#VipsProgress">
doc/reference/html/index.sgml:<ANCHOR id="VipsImage" href="libvips/libvips-image.html#VipsImage">
doc/reference/html/index.sgml:<ANCHOR id="IM-IMAGE-SIZEOF-ELEMENT:CAPS" href="libvips/libvips-image.html#IM-IMAGE-SIZEOF-ELEMENT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-IMAGE-SIZEOF-PEL:CAPS" href="libvips/libvips-image.html#IM-IMAGE-SIZEOF-PEL:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-IMAGE-SIZEOF-LINE:CAPS" href="libvips/libvips-image.html#IM-IMAGE-SIZEOF-LINE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-IMAGE-N-ELEMENTS:CAPS" href="libvips/libvips-image.html#IM-IMAGE-N-ELEMENTS:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-IMAGE-ADDR:CAPS" href="libvips/libvips-image.html#IM-IMAGE-ADDR:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-get-argv0" href="libvips/libvips-image.html#im-get-argv0">
doc/reference/html/index.sgml:<ANCHOR id="im-init-world" href="libvips/libvips-image.html#im-init-world">
doc/reference/html/index.sgml:<ANCHOR id="im-get-option-group" href="libvips/libvips-image.html#im-get-option-group">
doc/reference/html/index.sgml:<ANCHOR id="im-version-string" href="libvips/libvips-image.html#im-version-string">
doc/reference/html/index.sgml:<ANCHOR id="im-version" href="libvips/libvips-image.html#im-version">
doc/reference/html/index.sgml:<ANCHOR id="im-guess-prefix" href="libvips/libvips-image.html#im-guess-prefix">
doc/reference/html/index.sgml:<ANCHOR id="im-guess-libdir" href="libvips/libvips-image.html#im-guess-libdir">
doc/reference/html/index.sgml:<ANCHOR id="im-open" href="libvips/libvips-image.html#im-open">
doc/reference/html/index.sgml:<ANCHOR id="im-open-local" href="libvips/libvips-image.html#im-open-local">
doc/reference/html/index.sgml:<ANCHOR id="im-open-local-array" href="libvips/libvips-image.html#im-open-local-array">
doc/reference/html/index.sgml:<ANCHOR id="im-close" href="libvips/libvips-image.html#im-close">
doc/reference/html/index.sgml:<ANCHOR id="im-invalidate" href="libvips/libvips-image.html#im-invalidate">
doc/reference/html/index.sgml:<ANCHOR id="im-initdesc" href="libvips/libvips-image.html#im-initdesc">
doc/reference/html/index.sgml:<ANCHOR id="im-cp-desc" href="libvips/libvips-image.html#im-cp-desc">
doc/reference/html/index.sgml:<ANCHOR id="im-cp-descv" href="libvips/libvips-image.html#im-cp-descv">
doc/reference/html/index.sgml:<ANCHOR id="im-cp-desc-array" href="libvips/libvips-image.html#im-cp-desc-array">
doc/reference/html/index.sgml:<ANCHOR id="im-binfile" href="libvips/libvips-image.html#im-binfile">
doc/reference/html/index.sgml:<ANCHOR id="im-image" href="libvips/libvips-image.html#im-image">
doc/reference/html/index.sgml:<ANCHOR id="libvips-image.see-also" href="libvips/libvips-image.html#libvips-image.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-header" href="libvips/libvips-header.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-header.stability-level" href="libvips/libvips-header.html#libvips-header.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-header.synopsis" href="libvips/libvips-header.html#libvips-header.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-header.description" href="libvips/libvips-header.html#libvips-header.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-header.details" href="libvips/libvips-header.html#libvips-header.details">
doc/reference/html/index.sgml:<ANCHOR id="im-header-int" href="libvips/libvips-header.html#im-header-int">
doc/reference/html/index.sgml:<ANCHOR id="im-header-double" href="libvips/libvips-header.html#im-header-double">
doc/reference/html/index.sgml:<ANCHOR id="im-header-string" href="libvips/libvips-header.html#im-header-string">
doc/reference/html/index.sgml:<ANCHOR id="im-header-as-string" href="libvips/libvips-header.html#im-header-as-string">
doc/reference/html/index.sgml:<ANCHOR id="im-header-get-typeof" href="libvips/libvips-header.html#im-header-get-typeof">
doc/reference/html/index.sgml:<ANCHOR id="im-header-get" href="libvips/libvips-header.html#im-header-get">
doc/reference/html/index.sgml:<ANCHOR id="im-header-map-fn" href="libvips/libvips-header.html#im-header-map-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-header-map" href="libvips/libvips-header.html#im-header-map">
doc/reference/html/index.sgml:<ANCHOR id="im-histlin" href="libvips/libvips-header.html#im-histlin">
doc/reference/html/index.sgml:<ANCHOR id="im-updatehist" href="libvips/libvips-header.html#im-updatehist">
doc/reference/html/index.sgml:<ANCHOR id="im-history-get" href="libvips/libvips-header.html#im-history-get">
doc/reference/html/index.sgml:<ANCHOR id="libvips-header.see-also" href="libvips/libvips-header.html#libvips-header.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-check" href="libvips/libvips-check.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-check.stability-level" href="libvips/libvips-check.html#libvips-check.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-check.synopsis" href="libvips/libvips-check.html#libvips-check.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-check.description" href="libvips/libvips-check.html#libvips-check.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-check.details" href="libvips/libvips-check.html#libvips-check.details">
doc/reference/html/index.sgml:<ANCHOR id="im-rwcheck" href="libvips/libvips-check.html#im-rwcheck">
doc/reference/html/index.sgml:<ANCHOR id="im-iocheck" href="libvips/libvips-check.html#im-iocheck">
doc/reference/html/index.sgml:<ANCHOR id="im-incheck" href="libvips/libvips-check.html#im-incheck">
doc/reference/html/index.sgml:<ANCHOR id="im-outcheck" href="libvips/libvips-check.html#im-outcheck">
doc/reference/html/index.sgml:<ANCHOR id="im-piocheck" href="libvips/libvips-check.html#im-piocheck">
doc/reference/html/index.sgml:<ANCHOR id="im-pincheck" href="libvips/libvips-check.html#im-pincheck">
doc/reference/html/index.sgml:<ANCHOR id="im-poutcheck" href="libvips/libvips-check.html#im-poutcheck">
doc/reference/html/index.sgml:<ANCHOR id="im-check-uncoded" href="libvips/libvips-check.html#im-check-uncoded">
doc/reference/html/index.sgml:<ANCHOR id="im-check-coding-known" href="libvips/libvips-check.html#im-check-coding-known">
doc/reference/html/index.sgml:<ANCHOR id="im-check-coding-labq" href="libvips/libvips-check.html#im-check-coding-labq">
doc/reference/html/index.sgml:<ANCHOR id="im-check-coding-rad" href="libvips/libvips-check.html#im-check-coding-rad">
doc/reference/html/index.sgml:<ANCHOR id="im-check-coding-same" href="libvips/libvips-check.html#im-check-coding-same">
doc/reference/html/index.sgml:<ANCHOR id="im-check-mono" href="libvips/libvips-check.html#im-check-mono">
doc/reference/html/index.sgml:<ANCHOR id="im-check-bands-1or3" href="libvips/libvips-check.html#im-check-bands-1or3">
doc/reference/html/index.sgml:<ANCHOR id="im-check-bands" href="libvips/libvips-check.html#im-check-bands">
doc/reference/html/index.sgml:<ANCHOR id="im-check-bands-1orn" href="libvips/libvips-check.html#im-check-bands-1orn">
doc/reference/html/index.sgml:<ANCHOR id="im-check-bands-same" href="libvips/libvips-check.html#im-check-bands-same">
doc/reference/html/index.sgml:<ANCHOR id="im-check-bandno" href="libvips/libvips-check.html#im-check-bandno">
doc/reference/html/index.sgml:<ANCHOR id="im-check-int" href="libvips/libvips-check.html#im-check-int">
doc/reference/html/index.sgml:<ANCHOR id="im-check-uint" href="libvips/libvips-check.html#im-check-uint">
doc/reference/html/index.sgml:<ANCHOR id="im-check-uintorf" href="libvips/libvips-check.html#im-check-uintorf">
doc/reference/html/index.sgml:<ANCHOR id="im-check-noncomplex" href="libvips/libvips-check.html#im-check-noncomplex">
doc/reference/html/index.sgml:<ANCHOR id="im-check-complex" href="libvips/libvips-check.html#im-check-complex">
doc/reference/html/index.sgml:<ANCHOR id="im-check-format" href="libvips/libvips-check.html#im-check-format">
doc/reference/html/index.sgml:<ANCHOR id="im-check-u8or16" href="libvips/libvips-check.html#im-check-u8or16">
doc/reference/html/index.sgml:<ANCHOR id="im-check-8or16" href="libvips/libvips-check.html#im-check-8or16">
doc/reference/html/index.sgml:<ANCHOR id="im-check-u8or16orf" href="libvips/libvips-check.html#im-check-u8or16orf">
doc/reference/html/index.sgml:<ANCHOR id="im-check-format-same" href="libvips/libvips-check.html#im-check-format-same">
doc/reference/html/index.sgml:<ANCHOR id="im-check-size-same" href="libvips/libvips-check.html#im-check-size-same">
doc/reference/html/index.sgml:<ANCHOR id="im-check-vector" href="libvips/libvips-check.html#im-check-vector">
doc/reference/html/index.sgml:<ANCHOR id="im-check-hist" href="libvips/libvips-check.html#im-check-hist">
doc/reference/html/index.sgml:<ANCHOR id="im-check-imask" href="libvips/libvips-check.html#im-check-imask">
doc/reference/html/index.sgml:<ANCHOR id="im-check-dmask" href="libvips/libvips-check.html#im-check-dmask">
doc/reference/html/index.sgml:<ANCHOR id="vips-bandfmt-isint" href="libvips/libvips-check.html#vips-bandfmt-isint">
doc/reference/html/index.sgml:<ANCHOR id="vips-bandfmt-isuint" href="libvips/libvips-check.html#vips-bandfmt-isuint">
doc/reference/html/index.sgml:<ANCHOR id="vips-bandfmt-isfloat" href="libvips/libvips-check.html#vips-bandfmt-isfloat">
doc/reference/html/index.sgml:<ANCHOR id="vips-bandfmt-iscomplex" href="libvips/libvips-check.html#vips-bandfmt-iscomplex">
doc/reference/html/index.sgml:<ANCHOR id="im-isfile" href="libvips/libvips-check.html#im-isfile">
doc/reference/html/index.sgml:<ANCHOR id="im-ispartial" href="libvips/libvips-check.html#im-ispartial">
doc/reference/html/index.sgml:<ANCHOR id="im-isMSBfirst" href="libvips/libvips-check.html#im-isMSBfirst">
doc/reference/html/index.sgml:<ANCHOR id="libvips-check.see-also" href="libvips/libvips-check.html#libvips-check.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-callback" href="libvips/libvips-callback.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-callback.stability-level" href="libvips/libvips-callback.html#libvips-callback.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-callback.synopsis" href="libvips/libvips-callback.html#libvips-callback.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-callback.description" href="libvips/libvips-callback.html#libvips-callback.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-callback.details" href="libvips/libvips-callback.html#libvips-callback.details">
doc/reference/html/index.sgml:<ANCHOR id="im-callback-fn" href="libvips/libvips-callback.html#im-callback-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-add-close-callback" href="libvips/libvips-callback.html#im-add-close-callback">
doc/reference/html/index.sgml:<ANCHOR id="im-add-preclose-callback" href="libvips/libvips-callback.html#im-add-preclose-callback">
doc/reference/html/index.sgml:<ANCHOR id="im-add-postclose-callback" href="libvips/libvips-callback.html#im-add-postclose-callback">
doc/reference/html/index.sgml:<ANCHOR id="im-add-written-callback" href="libvips/libvips-callback.html#im-add-written-callback">
doc/reference/html/index.sgml:<ANCHOR id="im-add-evalstart-callback" href="libvips/libvips-callback.html#im-add-evalstart-callback">
doc/reference/html/index.sgml:<ANCHOR id="im-add-eval-callback" href="libvips/libvips-callback.html#im-add-eval-callback">
doc/reference/html/index.sgml:<ANCHOR id="im-add-evalend-callback" href="libvips/libvips-callback.html#im-add-evalend-callback">
doc/reference/html/index.sgml:<ANCHOR id="im-add-invalidate-callback" href="libvips/libvips-callback.html#im-add-invalidate-callback">
doc/reference/html/index.sgml:<ANCHOR id="libvips-callback.see-also" href="libvips/libvips-callback.html#libvips-callback.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-meta" href="libvips/libvips-meta.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-meta.stability-level" href="libvips/libvips-meta.html#libvips-meta.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-meta.synopsis" href="libvips/libvips-meta.html#libvips-meta.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-meta.description" href="libvips/libvips-meta.html#libvips-meta.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-meta.details" href="libvips/libvips-meta.html#libvips-meta.details">
doc/reference/html/index.sgml:<ANCHOR id="IM-META-EXIF-NAME:CAPS" href="libvips/libvips-meta.html#IM-META-EXIF-NAME:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-META-ICC-NAME:CAPS" href="libvips/libvips-meta.html#IM-META-ICC-NAME:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-META-XML:CAPS" href="libvips/libvips-meta.html#IM-META-XML:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-META-RESOLUTION-UNIT:CAPS" href="libvips/libvips-meta.html#IM-META-RESOLUTION-UNIT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-SAVE-STRING:CAPS" href="libvips/libvips-meta.html#IM-TYPE-SAVE-STRING:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-save-string-get-type" href="libvips/libvips-meta.html#im-save-string-get-type">
doc/reference/html/index.sgml:<ANCHOR id="im-save-string-get" href="libvips/libvips-meta.html#im-save-string-get">
doc/reference/html/index.sgml:<ANCHOR id="im-save-string-set" href="libvips/libvips-meta.html#im-save-string-set">
doc/reference/html/index.sgml:<ANCHOR id="im-save-string-setf" href="libvips/libvips-meta.html#im-save-string-setf">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-AREA:CAPS" href="libvips/libvips-meta.html#IM-TYPE-AREA:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-area-get-type" href="libvips/libvips-meta.html#im-area-get-type">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-REF-STRING:CAPS" href="libvips/libvips-meta.html#IM-TYPE-REF-STRING:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-ref-string-get-type" href="libvips/libvips-meta.html#im-ref-string-get-type">
doc/reference/html/index.sgml:<ANCHOR id="im-ref-string-set" href="libvips/libvips-meta.html#im-ref-string-set">
doc/reference/html/index.sgml:<ANCHOR id="im-ref-string-get" href="libvips/libvips-meta.html#im-ref-string-get">
doc/reference/html/index.sgml:<ANCHOR id="im-ref-string-get-length" href="libvips/libvips-meta.html#im-ref-string-get-length">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-BLOB:CAPS" href="libvips/libvips-meta.html#IM-TYPE-BLOB:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-blob-get-type" href="libvips/libvips-meta.html#im-blob-get-type">
doc/reference/html/index.sgml:<ANCHOR id="im-blob-get" href="libvips/libvips-meta.html#im-blob-get">
doc/reference/html/index.sgml:<ANCHOR id="im-blob-set" href="libvips/libvips-meta.html#im-blob-set">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-set" href="libvips/libvips-meta.html#im-meta-set">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-remove" href="libvips/libvips-meta.html#im-meta-remove">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-get" href="libvips/libvips-meta.html#im-meta-get">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-get-typeof" href="libvips/libvips-meta.html#im-meta-get-typeof">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-set-int" href="libvips/libvips-meta.html#im-meta-set-int">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-get-int" href="libvips/libvips-meta.html#im-meta-get-int">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-set-double" href="libvips/libvips-meta.html#im-meta-set-double">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-get-double" href="libvips/libvips-meta.html#im-meta-get-double">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-set-area" href="libvips/libvips-meta.html#im-meta-set-area">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-get-area" href="libvips/libvips-meta.html#im-meta-get-area">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-set-string" href="libvips/libvips-meta.html#im-meta-set-string">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-get-string" href="libvips/libvips-meta.html#im-meta-get-string">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-set-blob" href="libvips/libvips-meta.html#im-meta-set-blob">
doc/reference/html/index.sgml:<ANCHOR id="im-meta-get-blob" href="libvips/libvips-meta.html#im-meta-get-blob">
doc/reference/html/index.sgml:<ANCHOR id="libvips-meta.see-also" href="libvips/libvips-meta.html#libvips-meta.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-region" href="libvips/libvips-region.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-region.stability-level" href="libvips/libvips-region.html#libvips-region.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-region.synopsis" href="libvips/libvips-region.html#libvips-region.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-region.description" href="libvips/libvips-region.html#libvips-region.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-region.details" href="libvips/libvips-region.html#libvips-region.details">
doc/reference/html/index.sgml:<ANCHOR id="REGION:CAPS" href="libvips/libvips-region.html#REGION:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-region-create" href="libvips/libvips-region.html#im-region-create">
doc/reference/html/index.sgml:<ANCHOR id="im-region-free" href="libvips/libvips-region.html#im-region-free">
doc/reference/html/index.sgml:<ANCHOR id="im-region-buffer" href="libvips/libvips-region.html#im-region-buffer">
doc/reference/html/index.sgml:<ANCHOR id="im-region-image" href="libvips/libvips-region.html#im-region-image">
doc/reference/html/index.sgml:<ANCHOR id="im-region-region" href="libvips/libvips-region.html#im-region-region">
doc/reference/html/index.sgml:<ANCHOR id="im-region-equalsregion" href="libvips/libvips-region.html#im-region-equalsregion">
doc/reference/html/index.sgml:<ANCHOR id="im-region-position" href="libvips/libvips-region.html#im-region-position">
doc/reference/html/index.sgml:<ANCHOR id="im-region-paint" href="libvips/libvips-region.html#im-region-paint">
doc/reference/html/index.sgml:<ANCHOR id="im-region-black" href="libvips/libvips-region.html#im-region-black">
doc/reference/html/index.sgml:<ANCHOR id="im-region-copy" href="libvips/libvips-region.html#im-region-copy">
doc/reference/html/index.sgml:<ANCHOR id="IM-REGION-LSKIP:CAPS" href="libvips/libvips-region.html#IM-REGION-LSKIP:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-REGION-N-ELEMENTS:CAPS" href="libvips/libvips-region.html#IM-REGION-N-ELEMENTS:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-REGION-SIZEOF-LINE:CAPS" href="libvips/libvips-region.html#IM-REGION-SIZEOF-LINE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-REGION-ADDR:CAPS" href="libvips/libvips-region.html#IM-REGION-ADDR:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-REGION-ADDR-TOPLEFT:CAPS" href="libvips/libvips-region.html#IM-REGION-ADDR-TOPLEFT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="libvips-region.see-also" href="libvips/libvips-region.html#libvips-region.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-generate" href="libvips/libvips-generate.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-generate.stability-level" href="libvips/libvips-generate.html#libvips-generate.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-generate.synopsis" href="libvips/libvips-generate.html#libvips-generate.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-generate.description" href="libvips/libvips-generate.html#libvips-generate.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-generate.details" href="libvips/libvips-generate.html#libvips-generate.details">
doc/reference/html/index.sgml:<ANCHOR id="im-prepare" href="libvips/libvips-generate.html#im-prepare">
doc/reference/html/index.sgml:<ANCHOR id="im-prepare-to" href="libvips/libvips-generate.html#im-prepare-to">
doc/reference/html/index.sgml:<ANCHOR id="im-start-fn" href="libvips/libvips-generate.html#im-start-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-generate-fn" href="libvips/libvips-generate.html#im-generate-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-stop-fn" href="libvips/libvips-generate.html#im-stop-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-start-one" href="libvips/libvips-generate.html#im-start-one">
doc/reference/html/index.sgml:<ANCHOR id="im-stop-one" href="libvips/libvips-generate.html#im-stop-one">
doc/reference/html/index.sgml:<ANCHOR id="im-start-many" href="libvips/libvips-generate.html#im-start-many">
doc/reference/html/index.sgml:<ANCHOR id="im-stop-many" href="libvips/libvips-generate.html#im-stop-many">
doc/reference/html/index.sgml:<ANCHOR id="im-allocate-input-array" href="libvips/libvips-generate.html#im-allocate-input-array">
doc/reference/html/index.sgml:<ANCHOR id="im-generate" href="libvips/libvips-generate.html#im-generate">
doc/reference/html/index.sgml:<ANCHOR id="im-iterate" href="libvips/libvips-generate.html#im-iterate">
doc/reference/html/index.sgml:<ANCHOR id="im-demand-hint-array" href="libvips/libvips-generate.html#im-demand-hint-array">
doc/reference/html/index.sgml:<ANCHOR id="im-demand-hint" href="libvips/libvips-generate.html#im-demand-hint">
doc/reference/html/index.sgml:<ANCHOR id="im-wrapone-fn" href="libvips/libvips-generate.html#im-wrapone-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-wrapone" href="libvips/libvips-generate.html#im-wrapone">
doc/reference/html/index.sgml:<ANCHOR id="im-wraptwo-fn" href="libvips/libvips-generate.html#im-wraptwo-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-wraptwo" href="libvips/libvips-generate.html#im-wraptwo">
doc/reference/html/index.sgml:<ANCHOR id="im-wrapmany-fn" href="libvips/libvips-generate.html#im-wrapmany-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-wrapmany" href="libvips/libvips-generate.html#im-wrapmany">
doc/reference/html/index.sgml:<ANCHOR id="im-render-priority" href="libvips/libvips-generate.html#im-render-priority">
doc/reference/html/index.sgml:<ANCHOR id="im-cache" href="libvips/libvips-generate.html#im-cache">
doc/reference/html/index.sgml:<ANCHOR id="im-setupout" href="libvips/libvips-generate.html#im-setupout">
doc/reference/html/index.sgml:<ANCHOR id="im-writeline" href="libvips/libvips-generate.html#im-writeline">
doc/reference/html/index.sgml:<ANCHOR id="libvips-generate.see-also" href="libvips/libvips-generate.html#libvips-generate.see-also">
doc/reference/html/index.sgml:<ANCHOR id="VipsThreadState.stability-level" href="libvips/VipsThreadState.html#VipsThreadState.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="VipsThreadState.object-hierarchy" href="libvips/VipsThreadState.html#VipsThreadState.object-hierarchy">
doc/reference/html/index.sgml:<ANCHOR id="VipsThreadState-struct" href="libvips/VipsThreadState.html#VipsThreadState-struct">
doc/reference/html/index.sgml:<ANCHOR id="vips-thread-state-set" href="libvips/VipsThreadState.html#vips-thread-state-set">
doc/reference/html/index.sgml:<ANCHOR id="vips-thread-state-new" href="libvips/VipsThreadState.html#vips-thread-state-new">
doc/reference/html/index.sgml:<ANCHOR id="vips-threadpool-run" href="libvips/VipsThreadState.html#vips-threadpool-run">
doc/reference/html/index.sgml:<ANCHOR id="vips-get-tile-size" href="libvips/VipsThreadState.html#vips-get-tile-size">
doc/reference/html/index.sgml:<ANCHOR id="vips-sink-disc" href="libvips/VipsThreadState.html#vips-sink-disc">
doc/reference/html/index.sgml:<ANCHOR id="vips-sink" href="libvips/VipsThreadState.html#vips-sink">
doc/reference/html/index.sgml:<ANCHOR id="vips-sink-tile" href="libvips/VipsThreadState.html#vips-sink-tile">
doc/reference/html/index.sgml:<ANCHOR id="vips-sink-screen" href="libvips/VipsThreadState.html#vips-sink-screen">
doc/reference/html/index.sgml:<ANCHOR id="vips-sink-memory" href="libvips/VipsThreadState.html#vips-sink-memory">
doc/reference/html/index.sgml:<ANCHOR id="im--print-renders" href="libvips/VipsThreadState.html#im--print-renders">
doc/reference/html/index.sgml:<ANCHOR id="im-concurrency-set" href="libvips/VipsThreadState.html#im-concurrency-set">
doc/reference/html/index.sgml:<ANCHOR id="im-concurrency-get" href="libvips/VipsThreadState.html#im-concurrency-get">
doc/reference/html/index.sgml:<ANCHOR id="VipsThreadState.see-also" href="libvips/VipsThreadState.html#VipsThreadState.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-error" href="libvips/libvips-error.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-error.stability-level" href="libvips/libvips-error.html#libvips-error.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-error.synopsis" href="libvips/libvips-error.html#libvips-error.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-error.description" href="libvips/libvips-error.html#libvips-error.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-error.details" href="libvips/libvips-error.html#libvips-error.details">
doc/reference/html/index.sgml:<ANCHOR id="im-error-buffer" href="libvips/libvips-error.html#im-error-buffer">
doc/reference/html/index.sgml:<ANCHOR id="im-error-clear" href="libvips/libvips-error.html#im-error-clear">
doc/reference/html/index.sgml:<ANCHOR id="im-error" href="libvips/libvips-error.html#im-error">
doc/reference/html/index.sgml:<ANCHOR id="im-verror" href="libvips/libvips-error.html#im-verror">
doc/reference/html/index.sgml:<ANCHOR id="im-error-system" href="libvips/libvips-error.html#im-error-system">
doc/reference/html/index.sgml:<ANCHOR id="im-verror-system" href="libvips/libvips-error.html#im-verror-system">
doc/reference/html/index.sgml:<ANCHOR id="im-warn" href="libvips/libvips-error.html#im-warn">
doc/reference/html/index.sgml:<ANCHOR id="im-vwarn" href="libvips/libvips-error.html#im-vwarn">
doc/reference/html/index.sgml:<ANCHOR id="im-diag" href="libvips/libvips-error.html#im-diag">
doc/reference/html/index.sgml:<ANCHOR id="im-vdiag" href="libvips/libvips-error.html#im-vdiag">
doc/reference/html/index.sgml:<ANCHOR id="error-exit" href="libvips/libvips-error.html#error-exit">
doc/reference/html/index.sgml:<ANCHOR id="libvips-memory" href="libvips/libvips-memory.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-memory.stability-level" href="libvips/libvips-memory.html#libvips-memory.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-memory.synopsis" href="libvips/libvips-memory.html#libvips-memory.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-memory.description" href="libvips/libvips-memory.html#libvips-memory.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-memory.details" href="libvips/libvips-memory.html#libvips-memory.details">
doc/reference/html/index.sgml:<ANCHOR id="IM-NEW:CAPS" href="libvips/libvips-memory.html#IM-NEW:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-ARRAY:CAPS" href="libvips/libvips-memory.html#IM-ARRAY:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-malloc" href="libvips/libvips-memory.html#im-malloc">
doc/reference/html/index.sgml:<ANCHOR id="im-free" href="libvips/libvips-memory.html#im-free">
doc/reference/html/index.sgml:<ANCHOR id="libvips-buf" href="libvips/libvips-buf.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-buf.stability-level" href="libvips/libvips-buf.html#libvips-buf.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-buf.synopsis" href="libvips/libvips-buf.html#libvips-buf.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-buf.description" href="libvips/libvips-buf.html#libvips-buf.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-buf.details" href="libvips/libvips-buf.html#libvips-buf.details">
doc/reference/html/index.sgml:<ANCHOR id="VipsBuf" href="libvips/libvips-buf.html#VipsBuf">
doc/reference/html/index.sgml:<ANCHOR id="VIPS-BUF-STATIC:CAPS" href="libvips/libvips-buf.html#VIPS-BUF-STATIC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-rewind" href="libvips/libvips-buf.html#vips-buf-rewind">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-destroy" href="libvips/libvips-buf.html#vips-buf-destroy">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-init" href="libvips/libvips-buf.html#vips-buf-init">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-set-static" href="libvips/libvips-buf.html#vips-buf-set-static">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-set-dynamic" href="libvips/libvips-buf.html#vips-buf-set-dynamic">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-init-static" href="libvips/libvips-buf.html#vips-buf-init-static">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-init-dynamic" href="libvips/libvips-buf.html#vips-buf-init-dynamic">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-appendns" href="libvips/libvips-buf.html#vips-buf-appendns">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-appends" href="libvips/libvips-buf.html#vips-buf-appends">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-appendf" href="libvips/libvips-buf.html#vips-buf-appendf">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-vappendf" href="libvips/libvips-buf.html#vips-buf-vappendf">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-appendc" href="libvips/libvips-buf.html#vips-buf-appendc">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-appendsc" href="libvips/libvips-buf.html#vips-buf-appendsc">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-appendgv" href="libvips/libvips-buf.html#vips-buf-appendgv">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-removec" href="libvips/libvips-buf.html#vips-buf-removec">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-change" href="libvips/libvips-buf.html#vips-buf-change">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-is-empty" href="libvips/libvips-buf.html#vips-buf-is-empty">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-is-full" href="libvips/libvips-buf.html#vips-buf-is-full">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-all" href="libvips/libvips-buf.html#vips-buf-all">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-firstline" href="libvips/libvips-buf.html#vips-buf-firstline">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-appendg" href="libvips/libvips-buf.html#vips-buf-appendg">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-appendd" href="libvips/libvips-buf.html#vips-buf-appendd">
doc/reference/html/index.sgml:<ANCHOR id="vips-buf-len" href="libvips/libvips-buf.html#vips-buf-len">
doc/reference/html/index.sgml:<ANCHOR id="libvips-buf.see-also" href="libvips/libvips-buf.html#libvips-buf.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-arithmetic" href="libvips/libvips-arithmetic.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-arithmetic.stability-level" href="libvips/libvips-arithmetic.html#libvips-arithmetic.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-arithmetic.synopsis" href="libvips/libvips-arithmetic.html#libvips-arithmetic.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-arithmetic.description" href="libvips/libvips-arithmetic.html#libvips-arithmetic.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-arithmetic.details" href="libvips/libvips-arithmetic.html#libvips-arithmetic.details">
doc/reference/html/index.sgml:<ANCHOR id="im-measure-area" href="libvips/libvips-arithmetic.html#im-measure-area">
doc/reference/html/index.sgml:<ANCHOR id="im-stats" href="libvips/libvips-arithmetic.html#im-stats">
doc/reference/html/index.sgml:<ANCHOR id="im-max" href="libvips/libvips-arithmetic.html#im-max">
doc/reference/html/index.sgml:<ANCHOR id="im-min" href="libvips/libvips-arithmetic.html#im-min">
doc/reference/html/index.sgml:<ANCHOR id="im-avg" href="libvips/libvips-arithmetic.html#im-avg">
doc/reference/html/index.sgml:<ANCHOR id="im-deviate" href="libvips/libvips-arithmetic.html#im-deviate">
doc/reference/html/index.sgml:<ANCHOR id="im-maxpos" href="libvips/libvips-arithmetic.html#im-maxpos">
doc/reference/html/index.sgml:<ANCHOR id="im-minpos" href="libvips/libvips-arithmetic.html#im-minpos">
doc/reference/html/index.sgml:<ANCHOR id="im-maxpos-avg" href="libvips/libvips-arithmetic.html#im-maxpos-avg">
doc/reference/html/index.sgml:<ANCHOR id="im-maxpos-vec" href="libvips/libvips-arithmetic.html#im-maxpos-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-minpos-vec" href="libvips/libvips-arithmetic.html#im-minpos-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-bandmean" href="libvips/libvips-arithmetic.html#im-bandmean">
doc/reference/html/index.sgml:<ANCHOR id="im-add" href="libvips/libvips-arithmetic.html#im-add">
doc/reference/html/index.sgml:<ANCHOR id="im-subtract" href="libvips/libvips-arithmetic.html#im-subtract">
doc/reference/html/index.sgml:<ANCHOR id="im-invert" href="libvips/libvips-arithmetic.html#im-invert">
doc/reference/html/index.sgml:<ANCHOR id="im-lintra" href="libvips/libvips-arithmetic.html#im-lintra">
doc/reference/html/index.sgml:<ANCHOR id="im-lintra-vec" href="libvips/libvips-arithmetic.html#im-lintra-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-multiply" href="libvips/libvips-arithmetic.html#im-multiply">
doc/reference/html/index.sgml:<ANCHOR id="im-divide" href="libvips/libvips-arithmetic.html#im-divide">
doc/reference/html/index.sgml:<ANCHOR id="im-remainder" href="libvips/libvips-arithmetic.html#im-remainder">
doc/reference/html/index.sgml:<ANCHOR id="im-remainder-vec" href="libvips/libvips-arithmetic.html#im-remainder-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-remainderconst" href="libvips/libvips-arithmetic.html#im-remainderconst">
doc/reference/html/index.sgml:<ANCHOR id="im-recomb" href="libvips/libvips-arithmetic.html#im-recomb">
doc/reference/html/index.sgml:<ANCHOR id="im-sign" href="libvips/libvips-arithmetic.html#im-sign">
doc/reference/html/index.sgml:<ANCHOR id="im-abs" href="libvips/libvips-arithmetic.html#im-abs">
doc/reference/html/index.sgml:<ANCHOR id="im-floor" href="libvips/libvips-arithmetic.html#im-floor">
doc/reference/html/index.sgml:<ANCHOR id="im-rint" href="libvips/libvips-arithmetic.html#im-rint">
doc/reference/html/index.sgml:<ANCHOR id="im-ceil" href="libvips/libvips-arithmetic.html#im-ceil">
doc/reference/html/index.sgml:<ANCHOR id="im-linreg" href="libvips/libvips-arithmetic.html#im-linreg">
doc/reference/html/index.sgml:<ANCHOR id="im-point" href="libvips/libvips-arithmetic.html#im-point">
doc/reference/html/index.sgml:<ANCHOR id="im-point-bilinear" href="libvips/libvips-arithmetic.html#im-point-bilinear">
doc/reference/html/index.sgml:<ANCHOR id="im-powtra" href="libvips/libvips-arithmetic.html#im-powtra">
doc/reference/html/index.sgml:<ANCHOR id="im-powtra-vec" href="libvips/libvips-arithmetic.html#im-powtra-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-exptra" href="libvips/libvips-arithmetic.html#im-exptra">
doc/reference/html/index.sgml:<ANCHOR id="im-exp10tra" href="libvips/libvips-arithmetic.html#im-exp10tra">
doc/reference/html/index.sgml:<ANCHOR id="im-expntra" href="libvips/libvips-arithmetic.html#im-expntra">
doc/reference/html/index.sgml:<ANCHOR id="im-expntra-vec" href="libvips/libvips-arithmetic.html#im-expntra-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-logtra" href="libvips/libvips-arithmetic.html#im-logtra">
doc/reference/html/index.sgml:<ANCHOR id="im-log10tra" href="libvips/libvips-arithmetic.html#im-log10tra">
doc/reference/html/index.sgml:<ANCHOR id="im-sintra" href="libvips/libvips-arithmetic.html#im-sintra">
doc/reference/html/index.sgml:<ANCHOR id="im-costra" href="libvips/libvips-arithmetic.html#im-costra">
doc/reference/html/index.sgml:<ANCHOR id="im-tantra" href="libvips/libvips-arithmetic.html#im-tantra">
doc/reference/html/index.sgml:<ANCHOR id="im-asintra" href="libvips/libvips-arithmetic.html#im-asintra">
doc/reference/html/index.sgml:<ANCHOR id="im-acostra" href="libvips/libvips-arithmetic.html#im-acostra">
doc/reference/html/index.sgml:<ANCHOR id="im-atantra" href="libvips/libvips-arithmetic.html#im-atantra">
doc/reference/html/index.sgml:<ANCHOR id="im-cross-phase" href="libvips/libvips-arithmetic.html#im-cross-phase">
doc/reference/html/index.sgml:<ANCHOR id="libvips-arithmetic.see-also" href="libvips/libvips-arithmetic.html#libvips-arithmetic.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-boolean" href="libvips/libvips-boolean.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-boolean.stability-level" href="libvips/libvips-boolean.html#libvips-boolean.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-boolean.synopsis" href="libvips/libvips-boolean.html#libvips-boolean.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-boolean.description" href="libvips/libvips-boolean.html#libvips-boolean.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-boolean.details" href="libvips/libvips-boolean.html#libvips-boolean.details">
doc/reference/html/index.sgml:<ANCHOR id="im-andimage" href="libvips/libvips-boolean.html#im-andimage">
doc/reference/html/index.sgml:<ANCHOR id="im-orimage" href="libvips/libvips-boolean.html#im-orimage">
doc/reference/html/index.sgml:<ANCHOR id="im-eorimage" href="libvips/libvips-boolean.html#im-eorimage">
doc/reference/html/index.sgml:<ANCHOR id="im-andimage-vec" href="libvips/libvips-boolean.html#im-andimage-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-andimageconst" href="libvips/libvips-boolean.html#im-andimageconst">
doc/reference/html/index.sgml:<ANCHOR id="im-orimage-vec" href="libvips/libvips-boolean.html#im-orimage-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-orimageconst" href="libvips/libvips-boolean.html#im-orimageconst">
doc/reference/html/index.sgml:<ANCHOR id="im-eorimage-vec" href="libvips/libvips-boolean.html#im-eorimage-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-eorimageconst" href="libvips/libvips-boolean.html#im-eorimageconst">
doc/reference/html/index.sgml:<ANCHOR id="im-shiftleft-vec" href="libvips/libvips-boolean.html#im-shiftleft-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-shiftleft" href="libvips/libvips-boolean.html#im-shiftleft">
doc/reference/html/index.sgml:<ANCHOR id="im-shiftright-vec" href="libvips/libvips-boolean.html#im-shiftright-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-shiftright" href="libvips/libvips-boolean.html#im-shiftright">
doc/reference/html/index.sgml:<ANCHOR id="libvips-boolean.see-also" href="libvips/libvips-boolean.html#libvips-boolean.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-relational" href="libvips/libvips-relational.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-relational.stability-level" href="libvips/libvips-relational.html#libvips-relational.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-relational.synopsis" href="libvips/libvips-relational.html#libvips-relational.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-relational.description" href="libvips/libvips-relational.html#libvips-relational.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-relational.details" href="libvips/libvips-relational.html#libvips-relational.details">
doc/reference/html/index.sgml:<ANCHOR id="im-equal" href="libvips/libvips-relational.html#im-equal">
doc/reference/html/index.sgml:<ANCHOR id="im-notequal" href="libvips/libvips-relational.html#im-notequal">
doc/reference/html/index.sgml:<ANCHOR id="im-less" href="libvips/libvips-relational.html#im-less">
doc/reference/html/index.sgml:<ANCHOR id="im-lesseq" href="libvips/libvips-relational.html#im-lesseq">
doc/reference/html/index.sgml:<ANCHOR id="im-more" href="libvips/libvips-relational.html#im-more">
doc/reference/html/index.sgml:<ANCHOR id="im-moreeq" href="libvips/libvips-relational.html#im-moreeq">
doc/reference/html/index.sgml:<ANCHOR id="im-equal-vec" href="libvips/libvips-relational.html#im-equal-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-notequal-vec" href="libvips/libvips-relational.html#im-notequal-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-less-vec" href="libvips/libvips-relational.html#im-less-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-lesseq-vec" href="libvips/libvips-relational.html#im-lesseq-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-more-vec" href="libvips/libvips-relational.html#im-more-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-moreeq-vec" href="libvips/libvips-relational.html#im-moreeq-vec">
doc/reference/html/index.sgml:<ANCHOR id="im-equalconst" href="libvips/libvips-relational.html#im-equalconst">
doc/reference/html/index.sgml:<ANCHOR id="im-notequalconst" href="libvips/libvips-relational.html#im-notequalconst">
doc/reference/html/index.sgml:<ANCHOR id="im-lessconst" href="libvips/libvips-relational.html#im-lessconst">
doc/reference/html/index.sgml:<ANCHOR id="im-lesseqconst" href="libvips/libvips-relational.html#im-lesseqconst">
doc/reference/html/index.sgml:<ANCHOR id="im-moreconst" href="libvips/libvips-relational.html#im-moreconst">
doc/reference/html/index.sgml:<ANCHOR id="im-moreeqconst" href="libvips/libvips-relational.html#im-moreeqconst">
doc/reference/html/index.sgml:<ANCHOR id="im-ifthenelse" href="libvips/libvips-relational.html#im-ifthenelse">
doc/reference/html/index.sgml:<ANCHOR id="im-blend" href="libvips/libvips-relational.html#im-blend">
doc/reference/html/index.sgml:<ANCHOR id="libvips-relational.see-also" href="libvips/libvips-relational.html#libvips-relational.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-colour" href="libvips/libvips-colour.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-colour.stability-level" href="libvips/libvips-colour.html#libvips-colour.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-colour.synopsis" href="libvips/libvips-colour.html#libvips-colour.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-colour.description" href="libvips/libvips-colour.html#libvips-colour.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-colour.details" href="libvips/libvips-colour.html#libvips-colour.details">
doc/reference/html/index.sgml:<ANCHOR id="IM-D93-X0:CAPS" href="libvips/libvips-colour.html#IM-D93-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D93-Y0:CAPS" href="libvips/libvips-colour.html#IM-D93-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D93-Z0:CAPS" href="libvips/libvips-colour.html#IM-D93-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D75-X0:CAPS" href="libvips/libvips-colour.html#IM-D75-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D75-Y0:CAPS" href="libvips/libvips-colour.html#IM-D75-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D75-Z0:CAPS" href="libvips/libvips-colour.html#IM-D75-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D65-X0:CAPS" href="libvips/libvips-colour.html#IM-D65-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D65-Y0:CAPS" href="libvips/libvips-colour.html#IM-D65-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D65-Z0:CAPS" href="libvips/libvips-colour.html#IM-D65-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D55-X0:CAPS" href="libvips/libvips-colour.html#IM-D55-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D55-Y0:CAPS" href="libvips/libvips-colour.html#IM-D55-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D55-Z0:CAPS" href="libvips/libvips-colour.html#IM-D55-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D50-X0:CAPS" href="libvips/libvips-colour.html#IM-D50-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D50-Y0:CAPS" href="libvips/libvips-colour.html#IM-D50-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D50-Z0:CAPS" href="libvips/libvips-colour.html#IM-D50-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-A-X0:CAPS" href="libvips/libvips-colour.html#IM-A-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-A-Y0:CAPS" href="libvips/libvips-colour.html#IM-A-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-A-Z0:CAPS" href="libvips/libvips-colour.html#IM-A-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-B-X0:CAPS" href="libvips/libvips-colour.html#IM-B-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-B-Y0:CAPS" href="libvips/libvips-colour.html#IM-B-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-B-Z0:CAPS" href="libvips/libvips-colour.html#IM-B-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-C-X0:CAPS" href="libvips/libvips-colour.html#IM-C-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-C-Y0:CAPS" href="libvips/libvips-colour.html#IM-C-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-C-Z0:CAPS" href="libvips/libvips-colour.html#IM-C-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-E-X0:CAPS" href="libvips/libvips-colour.html#IM-E-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-E-Y0:CAPS" href="libvips/libvips-colour.html#IM-E-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-E-Z0:CAPS" href="libvips/libvips-colour.html#IM-E-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D3250-X0:CAPS" href="libvips/libvips-colour.html#IM-D3250-X0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D3250-Y0:CAPS" href="libvips/libvips-colour.html#IM-D3250-Y0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-D3250-Z0:CAPS" href="libvips/libvips-colour.html#IM-D3250-Z0:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-col-ab2Ch" href="libvips/libvips-colour.html#im-col-ab2Ch">
doc/reference/html/index.sgml:<ANCHOR id="im-col-Ch2ab" href="libvips/libvips-colour.html#im-col-Ch2ab">
doc/reference/html/index.sgml:<ANCHOR id="im-col-XYZ2Lab" href="libvips/libvips-colour.html#im-col-XYZ2Lab">
doc/reference/html/index.sgml:<ANCHOR id="im-col-Lab2XYZ" href="libvips/libvips-colour.html#im-col-Lab2XYZ">
doc/reference/html/index.sgml:<ANCHOR id="im-col-pythagoras" href="libvips/libvips-colour.html#im-col-pythagoras">
doc/reference/html/index.sgml:<ANCHOR id="im-col-make-tables-UCS" href="libvips/libvips-colour.html#im-col-make-tables-UCS">
doc/reference/html/index.sgml:<ANCHOR id="im-col-L2Lucs" href="libvips/libvips-colour.html#im-col-L2Lucs">
doc/reference/html/index.sgml:<ANCHOR id="im-col-Lucs2L" href="libvips/libvips-colour.html#im-col-Lucs2L">
doc/reference/html/index.sgml:<ANCHOR id="im-col-C2Cucs" href="libvips/libvips-colour.html#im-col-C2Cucs">
doc/reference/html/index.sgml:<ANCHOR id="im-col-Cucs2C" href="libvips/libvips-colour.html#im-col-Cucs2C">
doc/reference/html/index.sgml:<ANCHOR id="im-col-Ch2hucs" href="libvips/libvips-colour.html#im-col-Ch2hucs">
doc/reference/html/index.sgml:<ANCHOR id="im-col-Chucs2h" href="libvips/libvips-colour.html#im-col-Chucs2h">
doc/reference/html/index.sgml:<ANCHOR id="im-col-ab2h" href="libvips/libvips-colour.html#im-col-ab2h">
doc/reference/html/index.sgml:<ANCHOR id="im-col-dECMC" href="libvips/libvips-colour.html#im-col-dECMC">
doc/reference/html/index.sgml:<ANCHOR id="im-col-dE00" href="libvips/libvips-colour.html#im-col-dE00">
doc/reference/html/index.sgml:<ANCHOR id="im-Lab2LCh" href="libvips/libvips-colour.html#im-Lab2LCh">
doc/reference/html/index.sgml:<ANCHOR id="im-LCh2Lab" href="libvips/libvips-colour.html#im-LCh2Lab">
doc/reference/html/index.sgml:<ANCHOR id="im-LabQ2XYZ" href="libvips/libvips-colour.html#im-LabQ2XYZ">
doc/reference/html/index.sgml:<ANCHOR id="im-rad2float" href="libvips/libvips-colour.html#im-rad2float">
doc/reference/html/index.sgml:<ANCHOR id="im-float2rad" href="libvips/libvips-colour.html#im-float2rad">
doc/reference/html/index.sgml:<ANCHOR id="im-LCh2UCS" href="libvips/libvips-colour.html#im-LCh2UCS">
doc/reference/html/index.sgml:<ANCHOR id="im-Lab2LabQ" href="libvips/libvips-colour.html#im-Lab2LabQ">
doc/reference/html/index.sgml:<ANCHOR id="im-Lab2LabS" href="libvips/libvips-colour.html#im-Lab2LabS">
doc/reference/html/index.sgml:<ANCHOR id="im-Lab2XYZ" href="libvips/libvips-colour.html#im-Lab2XYZ">
doc/reference/html/index.sgml:<ANCHOR id="im-Lab2XYZ-temp" href="libvips/libvips-colour.html#im-Lab2XYZ-temp">
doc/reference/html/index.sgml:<ANCHOR id="im-Lab2UCS" href="libvips/libvips-colour.html#im-Lab2UCS">
doc/reference/html/index.sgml:<ANCHOR id="im-LabQ2Lab" href="libvips/libvips-colour.html#im-LabQ2Lab">
doc/reference/html/index.sgml:<ANCHOR id="im-LabQ2LabS" href="libvips/libvips-colour.html#im-LabQ2LabS">
doc/reference/html/index.sgml:<ANCHOR id="im-LabS2LabQ" href="libvips/libvips-colour.html#im-LabS2LabQ">
doc/reference/html/index.sgml:<ANCHOR id="im-LabS2Lab" href="libvips/libvips-colour.html#im-LabS2Lab">
doc/reference/html/index.sgml:<ANCHOR id="im-UCS2XYZ" href="libvips/libvips-colour.html#im-UCS2XYZ">
doc/reference/html/index.sgml:<ANCHOR id="im-UCS2LCh" href="libvips/libvips-colour.html#im-UCS2LCh">
doc/reference/html/index.sgml:<ANCHOR id="im-UCS2Lab" href="libvips/libvips-colour.html#im-UCS2Lab">
doc/reference/html/index.sgml:<ANCHOR id="im-XYZ2Lab" href="libvips/libvips-colour.html#im-XYZ2Lab">
doc/reference/html/index.sgml:<ANCHOR id="im-XYZ2Lab-temp" href="libvips/libvips-colour.html#im-XYZ2Lab-temp">
doc/reference/html/index.sgml:<ANCHOR id="im-XYZ2UCS" href="libvips/libvips-colour.html#im-XYZ2UCS">
doc/reference/html/index.sgml:<ANCHOR id="im-sRGB2XYZ" href="libvips/libvips-colour.html#im-sRGB2XYZ">
doc/reference/html/index.sgml:<ANCHOR id="im-XYZ2sRGB" href="libvips/libvips-colour.html#im-XYZ2sRGB">
doc/reference/html/index.sgml:<ANCHOR id="im-Yxy2XYZ" href="libvips/libvips-colour.html#im-Yxy2XYZ">
doc/reference/html/index.sgml:<ANCHOR id="im-XYZ2Yxy" href="libvips/libvips-colour.html#im-XYZ2Yxy">
doc/reference/html/index.sgml:<ANCHOR id="im-dECMC-fromLab" href="libvips/libvips-colour.html#im-dECMC-fromLab">
doc/reference/html/index.sgml:<ANCHOR id="im-dE00-fromLab" href="libvips/libvips-colour.html#im-dE00-fromLab">
doc/reference/html/index.sgml:<ANCHOR id="im-dE-fromXYZ" href="libvips/libvips-colour.html#im-dE-fromXYZ">
doc/reference/html/index.sgml:<ANCHOR id="im-dE-fromLab" href="libvips/libvips-colour.html#im-dE-fromLab">
doc/reference/html/index.sgml:<ANCHOR id="im-lab-morph" href="libvips/libvips-colour.html#im-lab-morph">
doc/reference/html/index.sgml:<ANCHOR id="VipsIntent" href="libvips/libvips-colour.html#VipsIntent">
doc/reference/html/index.sgml:<ANCHOR id="im-icc-present" href="libvips/libvips-colour.html#im-icc-present">
doc/reference/html/index.sgml:<ANCHOR id="im-icc-transform" href="libvips/libvips-colour.html#im-icc-transform">
doc/reference/html/index.sgml:<ANCHOR id="im-icc-import" href="libvips/libvips-colour.html#im-icc-import">
doc/reference/html/index.sgml:<ANCHOR id="im-icc-import-embedded" href="libvips/libvips-colour.html#im-icc-import-embedded">
doc/reference/html/index.sgml:<ANCHOR id="im-icc-export-depth" href="libvips/libvips-colour.html#im-icc-export-depth">
doc/reference/html/index.sgml:<ANCHOR id="im-icc-ac2rc" href="libvips/libvips-colour.html#im-icc-ac2rc">
doc/reference/html/index.sgml:<ANCHOR id="libvips-colour.see-also" href="libvips/libvips-colour.html#libvips-colour.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-conversion" href="libvips/libvips-conversion.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-conversion.stability-level" href="libvips/libvips-conversion.html#libvips-conversion.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-conversion.synopsis" href="libvips/libvips-conversion.html#libvips-conversion.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-conversion.description" href="libvips/libvips-conversion.html#libvips-conversion.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-conversion.details" href="libvips/libvips-conversion.html#libvips-conversion.details">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2mask" href="libvips/libvips-conversion.html#im-vips2mask">
doc/reference/html/index.sgml:<ANCHOR id="im-mask2vips" href="libvips/libvips-conversion.html#im-mask2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-copy" href="libvips/libvips-conversion.html#im-copy">
doc/reference/html/index.sgml:<ANCHOR id="im-copy-set" href="libvips/libvips-conversion.html#im-copy-set">
doc/reference/html/index.sgml:<ANCHOR id="im-copy-set-meta" href="libvips/libvips-conversion.html#im-copy-set-meta">
doc/reference/html/index.sgml:<ANCHOR id="im-copy-morph" href="libvips/libvips-conversion.html#im-copy-morph">
doc/reference/html/index.sgml:<ANCHOR id="im-copy-swap" href="libvips/libvips-conversion.html#im-copy-swap">
doc/reference/html/index.sgml:<ANCHOR id="im-copy-native" href="libvips/libvips-conversion.html#im-copy-native">
doc/reference/html/index.sgml:<ANCHOR id="im-copy-file" href="libvips/libvips-conversion.html#im-copy-file">
doc/reference/html/index.sgml:<ANCHOR id="im-clip2fmt" href="libvips/libvips-conversion.html#im-clip2fmt">
doc/reference/html/index.sgml:<ANCHOR id="im-scale" href="libvips/libvips-conversion.html#im-scale">
doc/reference/html/index.sgml:<ANCHOR id="im-msb" href="libvips/libvips-conversion.html#im-msb">
doc/reference/html/index.sgml:<ANCHOR id="im-msb-band" href="libvips/libvips-conversion.html#im-msb-band">
doc/reference/html/index.sgml:<ANCHOR id="im-c2amph" href="libvips/libvips-conversion.html#im-c2amph">
doc/reference/html/index.sgml:<ANCHOR id="im-c2rect" href="libvips/libvips-conversion.html#im-c2rect">
doc/reference/html/index.sgml:<ANCHOR id="im-ri2c" href="libvips/libvips-conversion.html#im-ri2c">
doc/reference/html/index.sgml:<ANCHOR id="im-c2imag" href="libvips/libvips-conversion.html#im-c2imag">
doc/reference/html/index.sgml:<ANCHOR id="im-c2real" href="libvips/libvips-conversion.html#im-c2real">
doc/reference/html/index.sgml:<ANCHOR id="im-scaleps" href="libvips/libvips-conversion.html#im-scaleps">
doc/reference/html/index.sgml:<ANCHOR id="im-falsecolour" href="libvips/libvips-conversion.html#im-falsecolour">
doc/reference/html/index.sgml:<ANCHOR id="im-gaussnoise" href="libvips/libvips-conversion.html#im-gaussnoise">
doc/reference/html/index.sgml:<ANCHOR id="im-black" href="libvips/libvips-conversion.html#im-black">
doc/reference/html/index.sgml:<ANCHOR id="im-text" href="libvips/libvips-conversion.html#im-text">
doc/reference/html/index.sgml:<ANCHOR id="im-extract-band" href="libvips/libvips-conversion.html#im-extract-band">
doc/reference/html/index.sgml:<ANCHOR id="im-extract-bands" href="libvips/libvips-conversion.html#im-extract-bands">
doc/reference/html/index.sgml:<ANCHOR id="im-extract-area" href="libvips/libvips-conversion.html#im-extract-area">
doc/reference/html/index.sgml:<ANCHOR id="im-extract-areabands" href="libvips/libvips-conversion.html#im-extract-areabands">
doc/reference/html/index.sgml:<ANCHOR id="im-embed" href="libvips/libvips-conversion.html#im-embed">
doc/reference/html/index.sgml:<ANCHOR id="im-bandjoin" href="libvips/libvips-conversion.html#im-bandjoin">
doc/reference/html/index.sgml:<ANCHOR id="im-gbandjoin" href="libvips/libvips-conversion.html#im-gbandjoin">
doc/reference/html/index.sgml:<ANCHOR id="im-insert" href="libvips/libvips-conversion.html#im-insert">
doc/reference/html/index.sgml:<ANCHOR id="im-insert-noexpand" href="libvips/libvips-conversion.html#im-insert-noexpand">
doc/reference/html/index.sgml:<ANCHOR id="im-insertset" href="libvips/libvips-conversion.html#im-insertset">
doc/reference/html/index.sgml:<ANCHOR id="im-lrjoin" href="libvips/libvips-conversion.html#im-lrjoin">
doc/reference/html/index.sgml:<ANCHOR id="im-tbjoin" href="libvips/libvips-conversion.html#im-tbjoin">
doc/reference/html/index.sgml:<ANCHOR id="im-replicate" href="libvips/libvips-conversion.html#im-replicate">
doc/reference/html/index.sgml:<ANCHOR id="im-grid" href="libvips/libvips-conversion.html#im-grid">
doc/reference/html/index.sgml:<ANCHOR id="im-wrap" href="libvips/libvips-conversion.html#im-wrap">
doc/reference/html/index.sgml:<ANCHOR id="im-fliphor" href="libvips/libvips-conversion.html#im-fliphor">
doc/reference/html/index.sgml:<ANCHOR id="im-flipver" href="libvips/libvips-conversion.html#im-flipver">
doc/reference/html/index.sgml:<ANCHOR id="im-rot90" href="libvips/libvips-conversion.html#im-rot90">
doc/reference/html/index.sgml:<ANCHOR id="im-rot180" href="libvips/libvips-conversion.html#im-rot180">
doc/reference/html/index.sgml:<ANCHOR id="im-rot270" href="libvips/libvips-conversion.html#im-rot270">
doc/reference/html/index.sgml:<ANCHOR id="im-subsample" href="libvips/libvips-conversion.html#im-subsample">
doc/reference/html/index.sgml:<ANCHOR id="im-zoom" href="libvips/libvips-conversion.html#im-zoom">
doc/reference/html/index.sgml:<ANCHOR id="im-system" href="libvips/libvips-conversion.html#im-system">
doc/reference/html/index.sgml:<ANCHOR id="im-system-image" href="libvips/libvips-conversion.html#im-system-image">
doc/reference/html/index.sgml:<ANCHOR id="libvips-conversion.see-also" href="libvips/libvips-conversion.html#libvips-conversion.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-convolution" href="libvips/libvips-convolution.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-convolution.stability-level" href="libvips/libvips-convolution.html#libvips-convolution.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-convolution.synopsis" href="libvips/libvips-convolution.html#libvips-convolution.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-convolution.description" href="libvips/libvips-convolution.html#libvips-convolution.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-convolution.details" href="libvips/libvips-convolution.html#libvips-convolution.details">
doc/reference/html/index.sgml:<ANCHOR id="im-conv" href="libvips/libvips-convolution.html#im-conv">
doc/reference/html/index.sgml:<ANCHOR id="im-conv-f" href="libvips/libvips-convolution.html#im-conv-f">
doc/reference/html/index.sgml:<ANCHOR id="im-convsep" href="libvips/libvips-convolution.html#im-convsep">
doc/reference/html/index.sgml:<ANCHOR id="im-convsep-f" href="libvips/libvips-convolution.html#im-convsep-f">
doc/reference/html/index.sgml:<ANCHOR id="im-compass" href="libvips/libvips-convolution.html#im-compass">
doc/reference/html/index.sgml:<ANCHOR id="im-gradient" href="libvips/libvips-convolution.html#im-gradient">
doc/reference/html/index.sgml:<ANCHOR id="im-lindetect" href="libvips/libvips-convolution.html#im-lindetect">
doc/reference/html/index.sgml:<ANCHOR id="im-sharpen" href="libvips/libvips-convolution.html#im-sharpen">
doc/reference/html/index.sgml:<ANCHOR id="im-grad-x" href="libvips/libvips-convolution.html#im-grad-x">
doc/reference/html/index.sgml:<ANCHOR id="im-grad-y" href="libvips/libvips-convolution.html#im-grad-y">
doc/reference/html/index.sgml:<ANCHOR id="im-fastcor" href="libvips/libvips-convolution.html#im-fastcor">
doc/reference/html/index.sgml:<ANCHOR id="im-spcor" href="libvips/libvips-convolution.html#im-spcor">
doc/reference/html/index.sgml:<ANCHOR id="im-gradcor" href="libvips/libvips-convolution.html#im-gradcor">
doc/reference/html/index.sgml:<ANCHOR id="im-contrast-surface" href="libvips/libvips-convolution.html#im-contrast-surface">
doc/reference/html/index.sgml:<ANCHOR id="im-addgnoise" href="libvips/libvips-convolution.html#im-addgnoise">
doc/reference/html/index.sgml:<ANCHOR id="VipsFormat.stability-level" href="libvips/VipsFormat.html#VipsFormat.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="VipsFormat.object-hierarchy" href="libvips/VipsFormat.html#VipsFormat.object-hierarchy">
doc/reference/html/index.sgml:<ANCHOR id="VipsFormat-struct" href="libvips/VipsFormat.html#VipsFormat-struct">
doc/reference/html/index.sgml:<ANCHOR id="vips-format-map" href="libvips/VipsFormat.html#vips-format-map">
doc/reference/html/index.sgml:<ANCHOR id="vips-format-for-file" href="libvips/VipsFormat.html#vips-format-for-file">
doc/reference/html/index.sgml:<ANCHOR id="vips-format-for-name" href="libvips/VipsFormat.html#vips-format-for-name">
doc/reference/html/index.sgml:<ANCHOR id="vips-format-get-flags" href="libvips/VipsFormat.html#vips-format-get-flags">
doc/reference/html/index.sgml:<ANCHOR id="vips-format-read" href="libvips/VipsFormat.html#vips-format-read">
doc/reference/html/index.sgml:<ANCHOR id="vips-format-write" href="libvips/VipsFormat.html#vips-format-write">
doc/reference/html/index.sgml:<ANCHOR id="im-jpeg2vips" href="libvips/VipsFormat.html#im-jpeg2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2jpeg" href="libvips/VipsFormat.html#im-vips2jpeg">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2mimejpeg" href="libvips/VipsFormat.html#im-vips2mimejpeg">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2bufjpeg" href="libvips/VipsFormat.html#im-vips2bufjpeg">
doc/reference/html/index.sgml:<ANCHOR id="im-tiff2vips" href="libvips/VipsFormat.html#im-tiff2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2tiff" href="libvips/VipsFormat.html#im-vips2tiff">
doc/reference/html/index.sgml:<ANCHOR id="im-tile-cache" href="libvips/VipsFormat.html#im-tile-cache">
doc/reference/html/index.sgml:<ANCHOR id="im-magick2vips" href="libvips/VipsFormat.html#im-magick2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-exr2vips" href="libvips/VipsFormat.html#im-exr2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-ppm2vips" href="libvips/VipsFormat.html#im-ppm2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2ppm" href="libvips/VipsFormat.html#im-vips2ppm">
doc/reference/html/index.sgml:<ANCHOR id="im-analyze2vips" href="libvips/VipsFormat.html#im-analyze2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-csv2vips" href="libvips/VipsFormat.html#im-csv2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2csv" href="libvips/VipsFormat.html#im-vips2csv">
doc/reference/html/index.sgml:<ANCHOR id="im-png2vips" href="libvips/VipsFormat.html#im-png2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2png" href="libvips/VipsFormat.html#im-vips2png">
doc/reference/html/index.sgml:<ANCHOR id="im-raw2vips" href="libvips/VipsFormat.html#im-raw2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2raw" href="libvips/VipsFormat.html#im-vips2raw">
doc/reference/html/index.sgml:<ANCHOR id="im-mat2vips" href="libvips/VipsFormat.html#im-mat2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-rad2vips" href="libvips/VipsFormat.html#im-rad2vips">
doc/reference/html/index.sgml:<ANCHOR id="im-vips2rad" href="libvips/VipsFormat.html#im-vips2rad">
doc/reference/html/index.sgml:<ANCHOR id="VipsFormat.see-also" href="libvips/VipsFormat.html#VipsFormat.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-freq-filt" href="libvips/libvips-freq-filt.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-freq-filt.stability-level" href="libvips/libvips-freq-filt.html#libvips-freq-filt.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-freq-filt.synopsis" href="libvips/libvips-freq-filt.html#libvips-freq-filt.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-freq-filt.description" href="libvips/libvips-freq-filt.html#libvips-freq-filt.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-freq-filt.details" href="libvips/libvips-freq-filt.html#libvips-freq-filt.details">
doc/reference/html/index.sgml:<ANCHOR id="VipsMaskType" href="libvips/libvips-freq-filt.html#VipsMaskType">
doc/reference/html/index.sgml:<ANCHOR id="im-fwfft" href="libvips/libvips-freq-filt.html#im-fwfft">
doc/reference/html/index.sgml:<ANCHOR id="im-invfft" href="libvips/libvips-freq-filt.html#im-invfft">
doc/reference/html/index.sgml:<ANCHOR id="im-invfftr" href="libvips/libvips-freq-filt.html#im-invfftr">
doc/reference/html/index.sgml:<ANCHOR id="im-freqflt" href="libvips/libvips-freq-filt.html#im-freqflt">
doc/reference/html/index.sgml:<ANCHOR id="im-disp-ps" href="libvips/libvips-freq-filt.html#im-disp-ps">
doc/reference/html/index.sgml:<ANCHOR id="im-rotquad" href="libvips/libvips-freq-filt.html#im-rotquad">
doc/reference/html/index.sgml:<ANCHOR id="im-phasecor-fft" href="libvips/libvips-freq-filt.html#im-phasecor-fft">
doc/reference/html/index.sgml:<ANCHOR id="im-flt-image-freq" href="libvips/libvips-freq-filt.html#im-flt-image-freq">
doc/reference/html/index.sgml:<ANCHOR id="im-create-fmask" href="libvips/libvips-freq-filt.html#im-create-fmask">
doc/reference/html/index.sgml:<ANCHOR id="im-fractsurf" href="libvips/libvips-freq-filt.html#im-fractsurf">
doc/reference/html/index.sgml:<ANCHOR id="libvips-freq-filt.see-also" href="libvips/libvips-freq-filt.html#libvips-freq-filt.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-histograms-lut" href="libvips/libvips-histograms-lut.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-histograms-lut.stability-level" href="libvips/libvips-histograms-lut.html#libvips-histograms-lut.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-histograms-lut.synopsis" href="libvips/libvips-histograms-lut.html#libvips-histograms-lut.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-histograms-lut.description" href="libvips/libvips-histograms-lut.html#libvips-histograms-lut.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-histograms-lut.details" href="libvips/libvips-histograms-lut.html#libvips-histograms-lut.details">
doc/reference/html/index.sgml:<ANCHOR id="im-histgr" href="libvips/libvips-histograms-lut.html#im-histgr">
doc/reference/html/index.sgml:<ANCHOR id="im-histnD" href="libvips/libvips-histograms-lut.html#im-histnD">
doc/reference/html/index.sgml:<ANCHOR id="im-hist-indexed" href="libvips/libvips-histograms-lut.html#im-hist-indexed">
doc/reference/html/index.sgml:<ANCHOR id="im-identity" href="libvips/libvips-histograms-lut.html#im-identity">
doc/reference/html/index.sgml:<ANCHOR id="im-identity-ushort" href="libvips/libvips-histograms-lut.html#im-identity-ushort">
doc/reference/html/index.sgml:<ANCHOR id="im-invertlut" href="libvips/libvips-histograms-lut.html#im-invertlut">
doc/reference/html/index.sgml:<ANCHOR id="im-buildlut" href="libvips/libvips-histograms-lut.html#im-buildlut">
doc/reference/html/index.sgml:<ANCHOR id="im-project" href="libvips/libvips-histograms-lut.html#im-project">
doc/reference/html/index.sgml:<ANCHOR id="im-histnorm" href="libvips/libvips-histograms-lut.html#im-histnorm">
doc/reference/html/index.sgml:<ANCHOR id="im-histcum" href="libvips/libvips-histograms-lut.html#im-histcum">
doc/reference/html/index.sgml:<ANCHOR id="im-histeq" href="libvips/libvips-histograms-lut.html#im-histeq">
doc/reference/html/index.sgml:<ANCHOR id="im-histspec" href="libvips/libvips-histograms-lut.html#im-histspec">
doc/reference/html/index.sgml:<ANCHOR id="im-ismonotonic" href="libvips/libvips-histograms-lut.html#im-ismonotonic">
doc/reference/html/index.sgml:<ANCHOR id="im-histplot" href="libvips/libvips-histograms-lut.html#im-histplot">
doc/reference/html/index.sgml:<ANCHOR id="im-maplut" href="libvips/libvips-histograms-lut.html#im-maplut">
doc/reference/html/index.sgml:<ANCHOR id="im-hist" href="libvips/libvips-histograms-lut.html#im-hist">
doc/reference/html/index.sgml:<ANCHOR id="im-hsp" href="libvips/libvips-histograms-lut.html#im-hsp">
doc/reference/html/index.sgml:<ANCHOR id="im-gammacorrect" href="libvips/libvips-histograms-lut.html#im-gammacorrect">
doc/reference/html/index.sgml:<ANCHOR id="im-mpercent" href="libvips/libvips-histograms-lut.html#im-mpercent">
doc/reference/html/index.sgml:<ANCHOR id="im-mpercent-hist" href="libvips/libvips-histograms-lut.html#im-mpercent-hist">
doc/reference/html/index.sgml:<ANCHOR id="im-heq" href="libvips/libvips-histograms-lut.html#im-heq">
doc/reference/html/index.sgml:<ANCHOR id="im-lhisteq" href="libvips/libvips-histograms-lut.html#im-lhisteq">
doc/reference/html/index.sgml:<ANCHOR id="im-stdif" href="libvips/libvips-histograms-lut.html#im-stdif">
doc/reference/html/index.sgml:<ANCHOR id="im-tone-build-range" href="libvips/libvips-histograms-lut.html#im-tone-build-range">
doc/reference/html/index.sgml:<ANCHOR id="im-tone-build" href="libvips/libvips-histograms-lut.html#im-tone-build">
doc/reference/html/index.sgml:<ANCHOR id="im-tone-analyse" href="libvips/libvips-histograms-lut.html#im-tone-analyse">
doc/reference/html/index.sgml:<ANCHOR id="im-tone-map" href="libvips/libvips-histograms-lut.html#im-tone-map">
doc/reference/html/index.sgml:<ANCHOR id="libvips-histograms-lut.see-also" href="libvips/libvips-histograms-lut.html#libvips-histograms-lut.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-morphology" href="libvips/libvips-morphology.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-morphology.stability-level" href="libvips/libvips-morphology.html#libvips-morphology.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-morphology.synopsis" href="libvips/libvips-morphology.html#libvips-morphology.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-morphology.description" href="libvips/libvips-morphology.html#libvips-morphology.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-morphology.details" href="libvips/libvips-morphology.html#libvips-morphology.details">
doc/reference/html/index.sgml:<ANCHOR id="im-dilate" href="libvips/libvips-morphology.html#im-dilate">
doc/reference/html/index.sgml:<ANCHOR id="im-erode" href="libvips/libvips-morphology.html#im-erode">
doc/reference/html/index.sgml:<ANCHOR id="im-rank" href="libvips/libvips-morphology.html#im-rank">
doc/reference/html/index.sgml:<ANCHOR id="im-rank-image" href="libvips/libvips-morphology.html#im-rank-image">
doc/reference/html/index.sgml:<ANCHOR id="im-maxvalue" href="libvips/libvips-morphology.html#im-maxvalue">
doc/reference/html/index.sgml:<ANCHOR id="im-cntlines" href="libvips/libvips-morphology.html#im-cntlines">
doc/reference/html/index.sgml:<ANCHOR id="im-zerox" href="libvips/libvips-morphology.html#im-zerox">
doc/reference/html/index.sgml:<ANCHOR id="im-profile" href="libvips/libvips-morphology.html#im-profile">
doc/reference/html/index.sgml:<ANCHOR id="im-label-regions" href="libvips/libvips-morphology.html#im-label-regions">
doc/reference/html/index.sgml:<ANCHOR id="libvips-morphology.see-also" href="libvips/libvips-morphology.html#libvips-morphology.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-resample" href="libvips/libvips-resample.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-resample.stability-level" href="libvips/libvips-resample.html#libvips-resample.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-resample.synopsis" href="libvips/libvips-resample.html#libvips-resample.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-resample.description" href="libvips/libvips-resample.html#libvips-resample.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-resample.details" href="libvips/libvips-resample.html#libvips-resample.details">
doc/reference/html/index.sgml:<ANCHOR id="im-affinei" href="libvips/libvips-resample.html#im-affinei">
doc/reference/html/index.sgml:<ANCHOR id="im-affinei-all" href="libvips/libvips-resample.html#im-affinei-all">
doc/reference/html/index.sgml:<ANCHOR id="im-stretch3" href="libvips/libvips-resample.html#im-stretch3">
doc/reference/html/index.sgml:<ANCHOR id="im-shrink" href="libvips/libvips-resample.html#im-shrink">
doc/reference/html/index.sgml:<ANCHOR id="im-rightshift-size" href="libvips/libvips-resample.html#im-rightshift-size">
doc/reference/html/index.sgml:<ANCHOR id="im-match-linear" href="libvips/libvips-resample.html#im-match-linear">
doc/reference/html/index.sgml:<ANCHOR id="im-match-linear-search" href="libvips/libvips-resample.html#im-match-linear-search">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mask" href="libvips/libvips-mask.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mask.stability-level" href="libvips/libvips-mask.html#libvips-mask.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mask.synopsis" href="libvips/libvips-mask.html#libvips-mask.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mask.description" href="libvips/libvips-mask.html#libvips-mask.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mask.details" href="libvips/libvips-mask.html#libvips-mask.details">
doc/reference/html/index.sgml:<ANCHOR id="INTMASK:CAPS" href="libvips/libvips-mask.html#INTMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="DOUBLEMASK:CAPS" href="libvips/libvips-mask.html#DOUBLEMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-create-imask" href="libvips/libvips-mask.html#im-create-imask">
doc/reference/html/index.sgml:<ANCHOR id="im-create-imaskv" href="libvips/libvips-mask.html#im-create-imaskv">
doc/reference/html/index.sgml:<ANCHOR id="im-create-dmask" href="libvips/libvips-mask.html#im-create-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-create-dmaskv" href="libvips/libvips-mask.html#im-create-dmaskv">
doc/reference/html/index.sgml:<ANCHOR id="im-read-imask" href="libvips/libvips-mask.html#im-read-imask">
doc/reference/html/index.sgml:<ANCHOR id="im-read-dmask" href="libvips/libvips-mask.html#im-read-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-print-imask" href="libvips/libvips-mask.html#im-print-imask">
doc/reference/html/index.sgml:<ANCHOR id="im-print-dmask" href="libvips/libvips-mask.html#im-print-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-write-imask" href="libvips/libvips-mask.html#im-write-imask">
doc/reference/html/index.sgml:<ANCHOR id="im-write-dmask" href="libvips/libvips-mask.html#im-write-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-write-imask-name" href="libvips/libvips-mask.html#im-write-imask-name">
doc/reference/html/index.sgml:<ANCHOR id="im-write-dmask-name" href="libvips/libvips-mask.html#im-write-dmask-name">
doc/reference/html/index.sgml:<ANCHOR id="im-free-imask" href="libvips/libvips-mask.html#im-free-imask">
doc/reference/html/index.sgml:<ANCHOR id="im-free-dmask" href="libvips/libvips-mask.html#im-free-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-log-imask" href="libvips/libvips-mask.html#im-log-imask">
doc/reference/html/index.sgml:<ANCHOR id="im-log-dmask" href="libvips/libvips-mask.html#im-log-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-gauss-imask" href="libvips/libvips-mask.html#im-gauss-imask">
doc/reference/html/index.sgml:<ANCHOR id="im-gauss-imask-sep" href="libvips/libvips-mask.html#im-gauss-imask-sep">
doc/reference/html/index.sgml:<ANCHOR id="im-gauss-dmask" href="libvips/libvips-mask.html#im-gauss-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-dup-imask" href="libvips/libvips-mask.html#im-dup-imask">
doc/reference/html/index.sgml:<ANCHOR id="im-dup-dmask" href="libvips/libvips-mask.html#im-dup-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-scale-dmask" href="libvips/libvips-mask.html#im-scale-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-norm-dmask" href="libvips/libvips-mask.html#im-norm-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-offsets45" href="libvips/libvips-mask.html#im-offsets45">
doc/reference/html/index.sgml:<ANCHOR id="im-offsets90" href="libvips/libvips-mask.html#im-offsets90">
doc/reference/html/index.sgml:<ANCHOR id="im-rotate-imask90" href="libvips/libvips-mask.html#im-rotate-imask90">
doc/reference/html/index.sgml:<ANCHOR id="im-rotate-imask45" href="libvips/libvips-mask.html#im-rotate-imask45">
doc/reference/html/index.sgml:<ANCHOR id="im-rotate-dmask90" href="libvips/libvips-mask.html#im-rotate-dmask90">
doc/reference/html/index.sgml:<ANCHOR id="im-rotate-dmask45" href="libvips/libvips-mask.html#im-rotate-dmask45">
doc/reference/html/index.sgml:<ANCHOR id="im-mattrn" href="libvips/libvips-mask.html#im-mattrn">
doc/reference/html/index.sgml:<ANCHOR id="im-matcat" href="libvips/libvips-mask.html#im-matcat">
doc/reference/html/index.sgml:<ANCHOR id="im-matmul" href="libvips/libvips-mask.html#im-matmul">
doc/reference/html/index.sgml:<ANCHOR id="im-lu-decomp" href="libvips/libvips-mask.html#im-lu-decomp">
doc/reference/html/index.sgml:<ANCHOR id="im-lu-solve" href="libvips/libvips-mask.html#im-lu-solve">
doc/reference/html/index.sgml:<ANCHOR id="im-matinv" href="libvips/libvips-mask.html#im-matinv">
doc/reference/html/index.sgml:<ANCHOR id="im-matinv-inplace" href="libvips/libvips-mask.html#im-matinv-inplace">
doc/reference/html/index.sgml:<ANCHOR id="im-local-dmask" href="libvips/libvips-mask.html#im-local-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im-local-imask" href="libvips/libvips-mask.html#im-local-imask">
doc/reference/html/index.sgml:<ANCHOR id="libvips-inplace" href="libvips/libvips-inplace.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-inplace.stability-level" href="libvips/libvips-inplace.html#libvips-inplace.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-inplace.synopsis" href="libvips/libvips-inplace.html#libvips-inplace.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-inplace.description" href="libvips/libvips-inplace.html#libvips-inplace.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-inplace.details" href="libvips/libvips-inplace.html#libvips-inplace.details">
doc/reference/html/index.sgml:<ANCHOR id="im-plotmask" href="libvips/libvips-inplace.html#im-plotmask">
doc/reference/html/index.sgml:<ANCHOR id="im-smear" href="libvips/libvips-inplace.html#im-smear">
doc/reference/html/index.sgml:<ANCHOR id="im-smudge" href="libvips/libvips-inplace.html#im-smudge">
doc/reference/html/index.sgml:<ANCHOR id="im-paintrect" href="libvips/libvips-inplace.html#im-paintrect">
doc/reference/html/index.sgml:<ANCHOR id="im-circle" href="libvips/libvips-inplace.html#im-circle">
doc/reference/html/index.sgml:<ANCHOR id="im-insertplace" href="libvips/libvips-inplace.html#im-insertplace">
doc/reference/html/index.sgml:<ANCHOR id="im-fastline" href="libvips/libvips-inplace.html#im-fastline">
doc/reference/html/index.sgml:<ANCHOR id="im-fastlineuser" href="libvips/libvips-inplace.html#im-fastlineuser">
doc/reference/html/index.sgml:<ANCHOR id="im-readpoint" href="libvips/libvips-inplace.html#im-readpoint">
doc/reference/html/index.sgml:<ANCHOR id="im-flood" href="libvips/libvips-inplace.html#im-flood">
doc/reference/html/index.sgml:<ANCHOR id="im-flood-blob" href="libvips/libvips-inplace.html#im-flood-blob">
doc/reference/html/index.sgml:<ANCHOR id="im-flood-other" href="libvips/libvips-inplace.html#im-flood-other">
doc/reference/html/index.sgml:<ANCHOR id="im-flood-copy" href="libvips/libvips-inplace.html#im-flood-copy">
doc/reference/html/index.sgml:<ANCHOR id="im-flood-blob-copy" href="libvips/libvips-inplace.html#im-flood-blob-copy">
doc/reference/html/index.sgml:<ANCHOR id="im-flood-other-copy" href="libvips/libvips-inplace.html#im-flood-other-copy">
doc/reference/html/index.sgml:<ANCHOR id="im-lineset" href="libvips/libvips-inplace.html#im-lineset">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mosaicing" href="libvips/libvips-mosaicing.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mosaicing.stability-level" href="libvips/libvips-mosaicing.html#libvips-mosaicing.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mosaicing.synopsis" href="libvips/libvips-mosaicing.html#libvips-mosaicing.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mosaicing.description" href="libvips/libvips-mosaicing.html#libvips-mosaicing.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-mosaicing.details" href="libvips/libvips-mosaicing.html#libvips-mosaicing.details">
doc/reference/html/index.sgml:<ANCHOR id="im-lrmerge" href="libvips/libvips-mosaicing.html#im-lrmerge">
doc/reference/html/index.sgml:<ANCHOR id="im-tbmerge" href="libvips/libvips-mosaicing.html#im-tbmerge">
doc/reference/html/index.sgml:<ANCHOR id="im-lrmerge1" href="libvips/libvips-mosaicing.html#im-lrmerge1">
doc/reference/html/index.sgml:<ANCHOR id="im-tbmerge1" href="libvips/libvips-mosaicing.html#im-tbmerge1">
doc/reference/html/index.sgml:<ANCHOR id="im-lrmosaic" href="libvips/libvips-mosaicing.html#im-lrmosaic">
doc/reference/html/index.sgml:<ANCHOR id="im-tbmosaic" href="libvips/libvips-mosaicing.html#im-tbmosaic">
doc/reference/html/index.sgml:<ANCHOR id="im-lrmosaic1" href="libvips/libvips-mosaicing.html#im-lrmosaic1">
doc/reference/html/index.sgml:<ANCHOR id="im-tbmosaic1" href="libvips/libvips-mosaicing.html#im-tbmosaic1">
doc/reference/html/index.sgml:<ANCHOR id="im-global-balance" href="libvips/libvips-mosaicing.html#im-global-balance">
doc/reference/html/index.sgml:<ANCHOR id="im-global-balancef" href="libvips/libvips-mosaicing.html#im-global-balancef">
doc/reference/html/index.sgml:<ANCHOR id="im-correl" href="libvips/libvips-mosaicing.html#im-correl">
doc/reference/html/index.sgml:<ANCHOR id="im-remosaic" href="libvips/libvips-mosaicing.html#im-remosaic">
doc/reference/html/index.sgml:<ANCHOR id="im-align-bands" href="libvips/libvips-mosaicing.html#im-align-bands">
doc/reference/html/index.sgml:<ANCHOR id="im-maxpos-subpel" href="libvips/libvips-mosaicing.html#im-maxpos-subpel">
doc/reference/html/index.sgml:<ANCHOR id="libvips-other" href="libvips/libvips-other.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-other.stability-level" href="libvips/libvips-other.html#libvips-other.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-other.synopsis" href="libvips/libvips-other.html#libvips-other.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-other.description" href="libvips/libvips-other.html#libvips-other.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-other.details" href="libvips/libvips-other.html#libvips-other.details">
doc/reference/html/index.sgml:<ANCHOR id="im-feye" href="libvips/libvips-other.html#im-feye">
doc/reference/html/index.sgml:<ANCHOR id="im-eye" href="libvips/libvips-other.html#im-eye">
doc/reference/html/index.sgml:<ANCHOR id="im-zone" href="libvips/libvips-other.html#im-zone">
doc/reference/html/index.sgml:<ANCHOR id="im-fzone" href="libvips/libvips-other.html#im-fzone">
doc/reference/html/index.sgml:<ANCHOR id="im-grey" href="libvips/libvips-other.html#im-grey">
doc/reference/html/index.sgml:<ANCHOR id="im-fgrey" href="libvips/libvips-other.html#im-fgrey">
doc/reference/html/index.sgml:<ANCHOR id="im-make-xy" href="libvips/libvips-other.html#im-make-xy">
doc/reference/html/index.sgml:<ANCHOR id="im-benchmarkn" href="libvips/libvips-other.html#im-benchmarkn">
doc/reference/html/index.sgml:<ANCHOR id="im-benchmark2" href="libvips/libvips-other.html#im-benchmark2">
doc/reference/html/index.sgml:<ANCHOR id="im-cooc-matrix" href="libvips/libvips-other.html#im-cooc-matrix">
doc/reference/html/index.sgml:<ANCHOR id="im-cooc-asm" href="libvips/libvips-other.html#im-cooc-asm">
doc/reference/html/index.sgml:<ANCHOR id="im-cooc-contrast" href="libvips/libvips-other.html#im-cooc-contrast">
doc/reference/html/index.sgml:<ANCHOR id="im-cooc-correlation" href="libvips/libvips-other.html#im-cooc-correlation">
doc/reference/html/index.sgml:<ANCHOR id="im-cooc-entropy" href="libvips/libvips-other.html#im-cooc-entropy">
doc/reference/html/index.sgml:<ANCHOR id="im-glds-matrix" href="libvips/libvips-other.html#im-glds-matrix">
doc/reference/html/index.sgml:<ANCHOR id="im-glds-asm" href="libvips/libvips-other.html#im-glds-asm">
doc/reference/html/index.sgml:<ANCHOR id="im-glds-contrast" href="libvips/libvips-other.html#im-glds-contrast">
doc/reference/html/index.sgml:<ANCHOR id="im-glds-entropy" href="libvips/libvips-other.html#im-glds-entropy">
doc/reference/html/index.sgml:<ANCHOR id="im-glds-mean" href="libvips/libvips-other.html#im-glds-mean">
doc/reference/html/index.sgml:<ANCHOR id="im-simcontr" href="libvips/libvips-other.html#im-simcontr">
doc/reference/html/index.sgml:<ANCHOR id="im-sines" href="libvips/libvips-other.html#im-sines">
doc/reference/html/index.sgml:<ANCHOR id="im-spatres" href="libvips/libvips-other.html#im-spatres">
doc/reference/html/index.sgml:<ANCHOR id="libvips-video" href="libvips/libvips-video.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-video.stability-level" href="libvips/libvips-video.html#libvips-video.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-video.synopsis" href="libvips/libvips-video.html#libvips-video.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-video.description" href="libvips/libvips-video.html#libvips-video.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-video.details" href="libvips/libvips-video.html#libvips-video.details">
doc/reference/html/index.sgml:<ANCHOR id="im-video-v4l1" href="libvips/libvips-video.html#im-video-v4l1">
doc/reference/html/index.sgml:<ANCHOR id="im-video-test" href="libvips/libvips-video.html#im-video-test">
doc/reference/html/index.sgml:<ANCHOR id="libvips-video.see-also" href="libvips/libvips-video.html#libvips-video.see-also">
doc/reference/html/index.sgml:<ANCHOR id="libvips-cimg-funcs" href="libvips/libvips-cimg-funcs.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-cimg-funcs.stability-level" href="libvips/libvips-cimg-funcs.html#libvips-cimg-funcs.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="libvips-cimg-funcs.synopsis" href="libvips/libvips-cimg-funcs.html#libvips-cimg-funcs.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-cimg-funcs.description" href="libvips/libvips-cimg-funcs.html#libvips-cimg-funcs.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-cimg-funcs.details" href="libvips/libvips-cimg-funcs.html#libvips-cimg-funcs.details">
doc/reference/html/index.sgml:<ANCHOR id="im-greyc-mask" href="libvips/libvips-cimg-funcs.html#im-greyc-mask">
doc/reference/html/index.sgml:<ANCHOR id="VipsInterpolate.stability-level" href="libvips/VipsInterpolate.html#VipsInterpolate.stability-level">
doc/reference/html/index.sgml:<ANCHOR id="VipsInterpolate.object-hierarchy" href="libvips/VipsInterpolate.html#VipsInterpolate.object-hierarchy">
doc/reference/html/index.sgml:<ANCHOR id="VipsInterpolate-struct" href="libvips/VipsInterpolate.html#VipsInterpolate-struct">
doc/reference/html/index.sgml:<ANCHOR id="vips-interpolate" href="libvips/VipsInterpolate.html#vips-interpolate">
doc/reference/html/index.sgml:<ANCHOR id="vips-interpolate-get-method" href="libvips/VipsInterpolate.html#vips-interpolate-get-method">
doc/reference/html/index.sgml:<ANCHOR id="vips-interpolate-get-window-size" href="libvips/VipsInterpolate.html#vips-interpolate-get-window-size">
doc/reference/html/index.sgml:<ANCHOR id="vips-interpolate-get-window-offset" href="libvips/VipsInterpolate.html#vips-interpolate-get-window-offset">
doc/reference/html/index.sgml:<ANCHOR id="VIPS-TRANSFORM-SHIFT:CAPS" href="libvips/VipsInterpolate.html#VIPS-TRANSFORM-SHIFT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VIPS-TRANSFORM-SCALE:CAPS" href="libvips/VipsInterpolate.html#VIPS-TRANSFORM-SCALE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VIPS-INTERPOLATE-SHIFT:CAPS" href="libvips/VipsInterpolate.html#VIPS-INTERPOLATE-SHIFT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VIPS-INTERPOLATE-SCALE:CAPS" href="libvips/VipsInterpolate.html#VIPS-INTERPOLATE-SCALE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="vips-interpolate-nearest-static" href="libvips/VipsInterpolate.html#vips-interpolate-nearest-static">
doc/reference/html/index.sgml:<ANCHOR id="vips-interpolate-bilinear-static" href="libvips/VipsInterpolate.html#vips-interpolate-bilinear-static">
doc/reference/html/index.sgml:<ANCHOR id="vips-interpolate-bicubic-static" href="libvips/VipsInterpolate.html#vips-interpolate-bicubic-static">
doc/reference/html/index.sgml:<ANCHOR id="vips-interpolate-new" href="libvips/VipsInterpolate.html#vips-interpolate-new">
doc/reference/html/index.sgml:<ANCHOR id="vips--interpolate-init" href="libvips/VipsInterpolate.html#vips--interpolate-init">
doc/reference/html/index.sgml:<ANCHOR id="libvips-VipsArgument" href="libvips/libvips-VipsArgument.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-VipsArgument.synopsis" href="libvips/libvips-VipsArgument.html#libvips-VipsArgument.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="VipsObject" href="libvips/libvips-VipsArgument.html#VipsObject">
doc/reference/html/index.sgml:<ANCHOR id="libvips-VipsArgument.object-hierarchy" href="libvips/libvips-VipsArgument.html#libvips-VipsArgument.object-hierarchy">
doc/reference/html/index.sgml:<ANCHOR id="libvips-VipsArgument.properties" href="libvips/libvips-VipsArgument.html#libvips-VipsArgument.properties">
doc/reference/html/index.sgml:<ANCHOR id="libvips-VipsArgument.description" href="libvips/libvips-VipsArgument.html#libvips-VipsArgument.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-VipsArgument.details" href="libvips/libvips-VipsArgument.html#libvips-VipsArgument.details">
doc/reference/html/index.sgml:<ANCHOR id="VipsObject-struct" href="libvips/libvips-VipsArgument.html#VipsObject-struct">
doc/reference/html/index.sgml:<ANCHOR id="VipsObjectClass" href="libvips/libvips-VipsArgument.html#VipsObjectClass">
doc/reference/html/index.sgml:<ANCHOR id="VipsArgumentFlags" href="libvips/libvips-VipsArgument.html#VipsArgumentFlags">
doc/reference/html/index.sgml:<ANCHOR id="VIPS-ARGUMENT-REQUIRED-INPUT:CAPS" href="libvips/libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-INPUT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VIPS-ARGUMENT-OPTIONAL-INPUT:CAPS" href="libvips/libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-INPUT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VIPS-ARGUMENT-REQUIRED-OUTPUT:CAPS" href="libvips/libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-OUTPUT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VIPS-ARGUMENT-OPTIONAL-OUTPUT:CAPS" href="libvips/libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-OUTPUT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="VipsArgument" href="libvips/libvips-VipsArgument.html#VipsArgument">
doc/reference/html/index.sgml:<ANCHOR id="VipsArgumentClass" href="libvips/libvips-VipsArgument.html#VipsArgumentClass">
doc/reference/html/index.sgml:<ANCHOR id="VipsArgumentInstance" href="libvips/libvips-VipsArgument.html#VipsArgumentInstance">
doc/reference/html/index.sgml:<ANCHOR id="VipsArgumentTable" href="libvips/libvips-VipsArgument.html#VipsArgumentTable">
doc/reference/html/index.sgml:<ANCHOR id="vips--argument-get-instance" href="libvips/libvips-VipsArgument.html#vips--argument-get-instance">
doc/reference/html/index.sgml:<ANCHOR id="vips--argument-table-lookup" href="libvips/libvips-VipsArgument.html#vips--argument-table-lookup">
doc/reference/html/index.sgml:<ANCHOR id="VipsArgumentMapFn" href="libvips/libvips-VipsArgument.html#VipsArgumentMapFn">
doc/reference/html/index.sgml:<ANCHOR id="vips-argument-map" href="libvips/libvips-VipsArgument.html#vips-argument-map">
doc/reference/html/index.sgml:<ANCHOR id="vips-object-set-property" href="libvips/libvips-VipsArgument.html#vips-object-set-property">
doc/reference/html/index.sgml:<ANCHOR id="vips-object-get-property" href="libvips/libvips-VipsArgument.html#vips-object-get-property">
doc/reference/html/index.sgml:<ANCHOR id="vips-object-build" href="libvips/libvips-VipsArgument.html#vips-object-build">
doc/reference/html/index.sgml:<ANCHOR id="vips-object-print-class" href="libvips/libvips-VipsArgument.html#vips-object-print-class">
doc/reference/html/index.sgml:<ANCHOR id="vips-object-print" href="libvips/libvips-VipsArgument.html#vips-object-print">
doc/reference/html/index.sgml:<ANCHOR id="vips-object-class-install-argument" href="libvips/libvips-VipsArgument.html#vips-object-class-install-argument">
doc/reference/html/index.sgml:<ANCHOR id="VipsObjectSetArguments" href="libvips/libvips-VipsArgument.html#VipsObjectSetArguments">
doc/reference/html/index.sgml:<ANCHOR id="vips-object-new" href="libvips/libvips-VipsArgument.html#vips-object-new">
doc/reference/html/index.sgml:<ANCHOR id="vips-object-new-from-string" href="libvips/libvips-VipsArgument.html#vips-object-new-from-string">
doc/reference/html/index.sgml:<ANCHOR id="vips-object-to-string" href="libvips/libvips-VipsArgument.html#vips-object-to-string">
doc/reference/html/index.sgml:<ANCHOR id="libvips-VipsArgument.property-details" href="libvips/libvips-VipsArgument.html#libvips-VipsArgument.property-details">
doc/reference/html/index.sgml:<ANCHOR id="VipsObject--description" href="libvips/libvips-VipsArgument.html#VipsObject--description">
doc/reference/html/index.sgml:<ANCHOR id="VipsObject--nickname" href="libvips/libvips-VipsArgument.html#VipsObject--nickname">
doc/reference/html/index.sgml:<ANCHOR id="libvips-transform" href="libvips/libvips-transform.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-transform.synopsis" href="libvips/libvips-transform.html#libvips-transform.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-transform.description" href="libvips/libvips-transform.html#libvips-transform.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-transform.details" href="libvips/libvips-transform.html#libvips-transform.details">
doc/reference/html/index.sgml:<ANCHOR id="Transformation" href="libvips/libvips-transform.html#Transformation">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-init" href="libvips/libvips-transform.html#im--transform-init">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-calc-inverse" href="libvips/libvips-transform.html#im--transform-calc-inverse">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-isidentity" href="libvips/libvips-transform.html#im--transform-isidentity">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-add" href="libvips/libvips-transform.html#im--transform-add">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-print" href="libvips/libvips-transform.html#im--transform-print">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-forward-point" href="libvips/libvips-transform.html#im--transform-forward-point">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-invert-point" href="libvips/libvips-transform.html#im--transform-invert-point">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-forward-rect" href="libvips/libvips-transform.html#im--transform-forward-rect">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-invert-rect" href="libvips/libvips-transform.html#im--transform-invert-rect">
doc/reference/html/index.sgml:<ANCHOR id="im--transform-set-area" href="libvips/libvips-transform.html#im--transform-set-area">
doc/reference/html/index.sgml:<ANCHOR id="im--affine" href="libvips/libvips-transform.html#im--affine">
doc/reference/html/index.sgml:<ANCHOR id="libvips-util" href="libvips/libvips-util.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-util.synopsis" href="libvips/libvips-util.html#libvips-util.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-util.description" href="libvips/libvips-util.html#libvips-util.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-util.details" href="libvips/libvips-util.html#libvips-util.details">
doc/reference/html/index.sgml:<ANCHOR id="IM-PI:CAPS" href="libvips/libvips-util.html#IM-PI:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-RAD:CAPS" href="libvips/libvips-util.html#IM-RAD:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-DEG:CAPS" href="libvips/libvips-util.html#IM-DEG:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-MAX:CAPS" href="libvips/libvips-util.html#IM-MAX:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-MIN:CAPS" href="libvips/libvips-util.html#IM-MIN:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-ABS:CAPS" href="libvips/libvips-util.html#IM-ABS:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-CLIP:CAPS" href="libvips/libvips-util.html#IM-CLIP:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-NUMBER:CAPS" href="libvips/libvips-util.html#IM-NUMBER:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-FREEF:CAPS" href="libvips/libvips-util.html#IM-FREEF:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-FREE:CAPS" href="libvips/libvips-util.html#IM-FREE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-SETSTR:CAPS" href="libvips/libvips-util.html#IM-SETSTR:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-UNROLL:CAPS" href="libvips/libvips-util.html#IM-UNROLL:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-RINT:CAPS" href="libvips/libvips-util.html#IM-RINT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-CLIP-UCHAR:CAPS" href="libvips/libvips-util.html#IM-CLIP-UCHAR:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-CLIP-USHORT:CAPS" href="libvips/libvips-util.html#IM-CLIP-USHORT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-CLIP-CHAR:CAPS" href="libvips/libvips-util.html#IM-CLIP-CHAR:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-CLIP-SHORT:CAPS" href="libvips/libvips-util.html#IM-CLIP-SHORT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-CLIP-NONE:CAPS" href="libvips/libvips-util.html#IM-CLIP-NONE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-construct-fn" href="libvips/libvips-util.html#im-construct-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-local" href="libvips/libvips-util.html#im-local">
doc/reference/html/index.sgml:<ANCHOR id="im-local-array" href="libvips/libvips-util.html#im-local-array">
doc/reference/html/index.sgml:<ANCHOR id="im--break-token" href="libvips/libvips-util.html#im--break-token">
doc/reference/html/index.sgml:<ANCHOR id="VSListMap2Fn" href="libvips/libvips-util.html#VSListMap2Fn">
doc/reference/html/index.sgml:<ANCHOR id="VSListMap4Fn" href="libvips/libvips-util.html#VSListMap4Fn">
doc/reference/html/index.sgml:<ANCHOR id="VSListFold2Fn" href="libvips/libvips-util.html#VSListFold2Fn">
doc/reference/html/index.sgml:<ANCHOR id="im-slist-equal" href="libvips/libvips-util.html#im-slist-equal">
doc/reference/html/index.sgml:<ANCHOR id="im-slist-map2" href="libvips/libvips-util.html#im-slist-map2">
doc/reference/html/index.sgml:<ANCHOR id="im-slist-map2-rev" href="libvips/libvips-util.html#im-slist-map2-rev">
doc/reference/html/index.sgml:<ANCHOR id="im-slist-map4" href="libvips/libvips-util.html#im-slist-map4">
doc/reference/html/index.sgml:<ANCHOR id="im-slist-fold2" href="libvips/libvips-util.html#im-slist-fold2">
doc/reference/html/index.sgml:<ANCHOR id="im-slist-filter" href="libvips/libvips-util.html#im-slist-filter">
doc/reference/html/index.sgml:<ANCHOR id="im-slist-free-all" href="libvips/libvips-util.html#im-slist-free-all">
doc/reference/html/index.sgml:<ANCHOR id="im-map-equal" href="libvips/libvips-util.html#im-map-equal">
doc/reference/html/index.sgml:<ANCHOR id="im-hash-table-map" href="libvips/libvips-util.html#im-hash-table-map">
doc/reference/html/index.sgml:<ANCHOR id="VipsTypeMap" href="libvips/libvips-util.html#VipsTypeMap">
doc/reference/html/index.sgml:<ANCHOR id="VipsTypeMap2" href="libvips/libvips-util.html#VipsTypeMap2">
doc/reference/html/index.sgml:<ANCHOR id="VipsClassMap" href="libvips/libvips-util.html#VipsClassMap">
doc/reference/html/index.sgml:<ANCHOR id="vips-type-map" href="libvips/libvips-util.html#vips-type-map">
doc/reference/html/index.sgml:<ANCHOR id="vips-type-map-concrete-all" href="libvips/libvips-util.html#vips-type-map-concrete-all">
doc/reference/html/index.sgml:<ANCHOR id="vips-class-map-concrete-all" href="libvips/libvips-util.html#vips-class-map-concrete-all">
doc/reference/html/index.sgml:<ANCHOR id="vips-class-find" href="libvips/libvips-util.html#vips-class-find">
doc/reference/html/index.sgml:<ANCHOR id="vips-type-find" href="libvips/libvips-util.html#vips-type-find">
doc/reference/html/index.sgml:<ANCHOR id="im-strncpy" href="libvips/libvips-util.html#im-strncpy">
doc/reference/html/index.sgml:<ANCHOR id="im-strrstr" href="libvips/libvips-util.html#im-strrstr">
doc/reference/html/index.sgml:<ANCHOR id="im-strdup" href="libvips/libvips-util.html#im-strdup">
doc/reference/html/index.sgml:<ANCHOR id="im-ispostfix" href="libvips/libvips-util.html#im-ispostfix">
doc/reference/html/index.sgml:<ANCHOR id="im-isprefix" href="libvips/libvips-util.html#im-isprefix">
doc/reference/html/index.sgml:<ANCHOR id="im-vsnprintf" href="libvips/libvips-util.html#im-vsnprintf">
doc/reference/html/index.sgml:<ANCHOR id="im-snprintf" href="libvips/libvips-util.html#im-snprintf">
doc/reference/html/index.sgml:<ANCHOR id="im-break-token" href="libvips/libvips-util.html#im-break-token">
doc/reference/html/index.sgml:<ANCHOR id="im-skip-dir" href="libvips/libvips-util.html#im-skip-dir">
doc/reference/html/index.sgml:<ANCHOR id="im-filename-split" href="libvips/libvips-util.html#im-filename-split">
doc/reference/html/index.sgml:<ANCHOR id="im-filename-suffix" href="libvips/libvips-util.html#im-filename-suffix">
doc/reference/html/index.sgml:<ANCHOR id="im-filename-suffix-match" href="libvips/libvips-util.html#im-filename-suffix-match">
doc/reference/html/index.sgml:<ANCHOR id="im-getnextoption" href="libvips/libvips-util.html#im-getnextoption">
doc/reference/html/index.sgml:<ANCHOR id="im-getsuboption" href="libvips/libvips-util.html#im-getsuboption">
doc/reference/html/index.sgml:<ANCHOR id="im-file-length" href="libvips/libvips-util.html#im-file-length">
doc/reference/html/index.sgml:<ANCHOR id="im--write" href="libvips/libvips-util.html#im--write">
doc/reference/html/index.sgml:<ANCHOR id="im--file-open-read" href="libvips/libvips-util.html#im--file-open-read">
doc/reference/html/index.sgml:<ANCHOR id="im--file-open-write" href="libvips/libvips-util.html#im--file-open-write">
doc/reference/html/index.sgml:<ANCHOR id="im--file-read" href="libvips/libvips-util.html#im--file-read">
doc/reference/html/index.sgml:<ANCHOR id="im--file-read-name" href="libvips/libvips-util.html#im--file-read-name">
doc/reference/html/index.sgml:<ANCHOR id="im--file-write" href="libvips/libvips-util.html#im--file-write">
doc/reference/html/index.sgml:<ANCHOR id="VipsToken" href="libvips/libvips-util.html#VipsToken">
doc/reference/html/index.sgml:<ANCHOR id="vips--token-get" href="libvips/libvips-util.html#vips--token-get">
doc/reference/html/index.sgml:<ANCHOR id="vips--token-must" href="libvips/libvips-util.html#vips--token-must">
doc/reference/html/index.sgml:<ANCHOR id="vips--token-need" href="libvips/libvips-util.html#vips--token-need">
doc/reference/html/index.sgml:<ANCHOR id="im-existsf" href="libvips/libvips-util.html#im-existsf">
doc/reference/html/index.sgml:<ANCHOR id="im-popenf" href="libvips/libvips-util.html#im-popenf">
doc/reference/html/index.sgml:<ANCHOR id="im-ispoweroftwo" href="libvips/libvips-util.html#im-ispoweroftwo">
doc/reference/html/index.sgml:<ANCHOR id="im-isvips" href="libvips/libvips-util.html#im-isvips">
doc/reference/html/index.sgml:<ANCHOR id="im-amiMSBfirst" href="libvips/libvips-util.html#im-amiMSBfirst">
doc/reference/html/index.sgml:<ANCHOR id="im--temp-name" href="libvips/libvips-util.html#im--temp-name">
doc/reference/html/index.sgml:<ANCHOR id="im--open-temp" href="libvips/libvips-util.html#im--open-temp">
doc/reference/html/index.sgml:<ANCHOR id="im-bits-of-fmt" href="libvips/libvips-util.html#im-bits-of-fmt">
doc/reference/html/index.sgml:<ANCHOR id="libvips-version" href="libvips/libvips-version.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-version.synopsis" href="libvips/libvips-version.html#libvips-version.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-version.description" href="libvips/libvips-version.html#libvips-version.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-version.details" href="libvips/libvips-version.html#libvips-version.details">
doc/reference/html/index.sgml:<ANCHOR id="IM-VERSION:CAPS" href="libvips/libvips-version.html#IM-VERSION:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-VERSION-STRING:CAPS" href="libvips/libvips-version.html#IM-VERSION-STRING:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-MAJOR-VERSION:CAPS" href="libvips/libvips-version.html#IM-MAJOR-VERSION:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-MINOR-VERSION:CAPS" href="libvips/libvips-version.html#IM-MINOR-VERSION:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-MICRO-VERSION:CAPS" href="libvips/libvips-version.html#IM-MICRO-VERSION:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INTERFACE-AGE:CAPS" href="libvips/libvips-version.html#IM-INTERFACE-AGE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-BINARY-AGE:CAPS" href="libvips/libvips-version.html#IM-BINARY-AGE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="libvips-type" href="libvips/libvips-type.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-type.synopsis" href="libvips/libvips-type.html#libvips-type.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-type.description" href="libvips/libvips-type.html#libvips-type.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-type.details" href="libvips/libvips-type.html#libvips-type.details">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-DOUBLE:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-DOUBLE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-INT:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-INT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-COMPLEX:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-COMPLEX:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-STRING:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-STRING:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-IMASK:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-IMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-DMASK:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-DMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-IMAGE:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-IMAGE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-DISPLAY:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-DISPLAY:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-GVALUE:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-GVALUE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-NAME-ARRAY:CAPS" href="libvips/libvips-type.html#IM-TYPE-NAME-ARRAY:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-IM:CAPS" href="libvips/libvips-type.html#IM-TYPE-IM:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-AR:CAPS" href="libvips/libvips-type.html#IM-TYPE-AR:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-type-t" href="libvips/libvips-type.html#im-type-t">
doc/reference/html/index.sgml:<ANCHOR id="im-value-t" href="libvips/libvips-type.html#im-value-t">
doc/reference/html/index.sgml:<ANCHOR id="im-value-mask-t" href="libvips/libvips-type.html#im-value-mask-t">
doc/reference/html/index.sgml:<ANCHOR id="im-value-array-t" href="libvips/libvips-type.html#im-value-array-t">
doc/reference/html/index.sgml:<ANCHOR id="im-argument-flags" href="libvips/libvips-type.html#im-argument-flags">
doc/reference/html/index.sgml:<ANCHOR id="im-argument-t" href="libvips/libvips-type.html#im-argument-t">
doc/reference/html/index.sgml:<ANCHOR id="im-operation-flags" href="libvips/libvips-type.html#im-operation-flags">
doc/reference/html/index.sgml:<ANCHOR id="im-operation-dispatch-fn" href="libvips/libvips-type.html#im-operation-dispatch-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-operation-t" href="libvips/libvips-type.html#im-operation-t">
doc/reference/html/index.sgml:<ANCHOR id="im-type-register" href="libvips/libvips-type.html#im-type-register">
doc/reference/html/index.sgml:<ANCHOR id="im-type-map" href="libvips/libvips-type.html#im-type-map">
doc/reference/html/index.sgml:<ANCHOR id="im-type-lookup" href="libvips/libvips-type.html#im-type-lookup">
doc/reference/html/index.sgml:<ANCHOR id="im-operation-register" href="libvips/libvips-type.html#im-operation-register">
doc/reference/html/index.sgml:<ANCHOR id="im-operation-registerv" href="libvips/libvips-type.html#im-operation-registerv">
doc/reference/html/index.sgml:<ANCHOR id="im-operation-map" href="libvips/libvips-type.html#im-operation-map">
doc/reference/html/index.sgml:<ANCHOR id="im-operation-lookup" href="libvips/libvips-type.html#im-operation-lookup">
doc/reference/html/index.sgml:<ANCHOR id="im-argument-new" href="libvips/libvips-type.html#im-argument-new">
doc/reference/html/index.sgml:<ANCHOR id="libvips-rect" href="libvips/libvips-rect.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-rect.synopsis" href="libvips/libvips-rect.html#libvips-rect.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-rect.description" href="libvips/libvips-rect.html#libvips-rect.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-rect.details" href="libvips/libvips-rect.html#libvips-rect.details">
doc/reference/html/index.sgml:<ANCHOR id="Rect" href="libvips/libvips-rect.html#Rect">
doc/reference/html/index.sgml:<ANCHOR id="IM-RECT-RIGHT:CAPS" href="libvips/libvips-rect.html#IM-RECT-RIGHT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-RECT-BOTTOM:CAPS" href="libvips/libvips-rect.html#IM-RECT-BOTTOM:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-RECT-HCENTRE:CAPS" href="libvips/libvips-rect.html#IM-RECT-HCENTRE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-RECT-VCENTRE:CAPS" href="libvips/libvips-rect.html#IM-RECT-VCENTRE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-rect-marginadjust" href="libvips/libvips-rect.html#im-rect-marginadjust">
doc/reference/html/index.sgml:<ANCHOR id="im-rect-includespoint" href="libvips/libvips-rect.html#im-rect-includespoint">
doc/reference/html/index.sgml:<ANCHOR id="im-rect-includesrect" href="libvips/libvips-rect.html#im-rect-includesrect">
doc/reference/html/index.sgml:<ANCHOR id="im-rect-intersectrect" href="libvips/libvips-rect.html#im-rect-intersectrect">
doc/reference/html/index.sgml:<ANCHOR id="im-rect-isempty" href="libvips/libvips-rect.html#im-rect-isempty">
doc/reference/html/index.sgml:<ANCHOR id="im-rect-unionrect" href="libvips/libvips-rect.html#im-rect-unionrect">
doc/reference/html/index.sgml:<ANCHOR id="im-rect-equalsrect" href="libvips/libvips-rect.html#im-rect-equalsrect">
doc/reference/html/index.sgml:<ANCHOR id="im-rect-dup" href="libvips/libvips-rect.html#im-rect-dup">
doc/reference/html/index.sgml:<ANCHOR id="im-rect-normalise" href="libvips/libvips-rect.html#im-rect-normalise">
doc/reference/html/index.sgml:<ANCHOR id="libvips-semaphore" href="libvips/libvips-semaphore.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-semaphore.synopsis" href="libvips/libvips-semaphore.html#libvips-semaphore.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-semaphore.description" href="libvips/libvips-semaphore.html#libvips-semaphore.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-semaphore.details" href="libvips/libvips-semaphore.html#libvips-semaphore.details">
doc/reference/html/index.sgml:<ANCHOR id="im-semaphore-t" href="libvips/libvips-semaphore.html#im-semaphore-t">
doc/reference/html/index.sgml:<ANCHOR id="im-semaphore-up" href="libvips/libvips-semaphore.html#im-semaphore-up">
doc/reference/html/index.sgml:<ANCHOR id="im-semaphore-down" href="libvips/libvips-semaphore.html#im-semaphore-down">
doc/reference/html/index.sgml:<ANCHOR id="im-semaphore-upn" href="libvips/libvips-semaphore.html#im-semaphore-upn">
doc/reference/html/index.sgml:<ANCHOR id="im-semaphore-downn" href="libvips/libvips-semaphore.html#im-semaphore-downn">
doc/reference/html/index.sgml:<ANCHOR id="im-semaphore-destroy" href="libvips/libvips-semaphore.html#im-semaphore-destroy">
doc/reference/html/index.sgml:<ANCHOR id="im-semaphore-init" href="libvips/libvips-semaphore.html#im-semaphore-init">
doc/reference/html/index.sgml:<ANCHOR id="libvips-dispatch" href="libvips/libvips-dispatch.html">
doc/reference/html/index.sgml:<ANCHOR id="libvips-dispatch.synopsis" href="libvips/libvips-dispatch.html#libvips-dispatch.synopsis">
doc/reference/html/index.sgml:<ANCHOR id="libvips-dispatch.description" href="libvips/libvips-dispatch.html#libvips-dispatch.description">
doc/reference/html/index.sgml:<ANCHOR id="libvips-dispatch.details" href="libvips/libvips-dispatch.html#libvips-dispatch.details">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-IMAGEVEC:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-IMAGEVEC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-DOUBLEVEC:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-DOUBLEVEC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-INTVEC:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-INTVEC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-DOUBLE:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-DOUBLE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-INT:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-INT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-COMPLEX:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-COMPLEX:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-STRING:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-STRING:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-IMASK:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-IMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-DMASK:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-DMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-IMAGE:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-IMAGE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-DISPLAY:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-DISPLAY:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-GVALUE:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-GVALUE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-TYPE-INTERPOLATE:CAPS" href="libvips/libvips-dispatch.html#IM-TYPE-INTERPOLATE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-arg-type" href="libvips/libvips-dispatch.html#im-arg-type">
doc/reference/html/index.sgml:<ANCHOR id="im-object" href="libvips/libvips-dispatch.html#im-object">
doc/reference/html/index.sgml:<ANCHOR id="im-type-flags" href="libvips/libvips-dispatch.html#im-type-flags">
doc/reference/html/index.sgml:<ANCHOR id="im-init-obj-fn" href="libvips/libvips-dispatch.html#im-init-obj-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-dest-obj-fn" href="libvips/libvips-dispatch.html#im-dest-obj-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-type-desc" href="libvips/libvips-dispatch.html#im-type-desc">
doc/reference/html/index.sgml:<ANCHOR id="im-print-obj-fn" href="libvips/libvips-dispatch.html#im-print-obj-fn">
doc/reference/html/index.sgml:<ANCHOR id="im-arg-desc" href="libvips/libvips-dispatch.html#im-arg-desc">
doc/reference/html/index.sgml:<ANCHOR id="im-dispatch-fn" href="libvips/libvips-dispatch.html#im-dispatch-fn">
doc/reference/html/index.sgml:<ANCHOR id="IM-MAX-ARGS:CAPS" href="libvips/libvips-dispatch.html#IM-MAX-ARGS:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-fn-flags" href="libvips/libvips-dispatch.html#im-fn-flags">
doc/reference/html/index.sgml:<ANCHOR id="im-function" href="libvips/libvips-dispatch.html#im-function">
doc/reference/html/index.sgml:<ANCHOR id="im-package" href="libvips/libvips-dispatch.html#im-package">
doc/reference/html/index.sgml:<ANCHOR id="im-mask-object" href="libvips/libvips-dispatch.html#im-mask-object">
doc/reference/html/index.sgml:<ANCHOR id="im-doublevec-object" href="libvips/libvips-dispatch.html#im-doublevec-object">
doc/reference/html/index.sgml:<ANCHOR id="im-intvec-object" href="libvips/libvips-dispatch.html#im-intvec-object">
doc/reference/html/index.sgml:<ANCHOR id="im-imagevec-object" href="libvips/libvips-dispatch.html#im-imagevec-object">
doc/reference/html/index.sgml:<ANCHOR id="im--input-int" href="libvips/libvips-dispatch.html#im--input-int">
doc/reference/html/index.sgml:<ANCHOR id="im--input-intvec" href="libvips/libvips-dispatch.html#im--input-intvec">
doc/reference/html/index.sgml:<ANCHOR id="im--input-imask" href="libvips/libvips-dispatch.html#im--input-imask">
doc/reference/html/index.sgml:<ANCHOR id="im--output-int" href="libvips/libvips-dispatch.html#im--output-int">
doc/reference/html/index.sgml:<ANCHOR id="im--output-intvec" href="libvips/libvips-dispatch.html#im--output-intvec">
doc/reference/html/index.sgml:<ANCHOR id="im--output-imask" href="libvips/libvips-dispatch.html#im--output-imask">
doc/reference/html/index.sgml:<ANCHOR id="im--input-double" href="libvips/libvips-dispatch.html#im--input-double">
doc/reference/html/index.sgml:<ANCHOR id="im--input-doublevec" href="libvips/libvips-dispatch.html#im--input-doublevec">
doc/reference/html/index.sgml:<ANCHOR id="im--input-dmask" href="libvips/libvips-dispatch.html#im--input-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im--output-double" href="libvips/libvips-dispatch.html#im--output-double">
doc/reference/html/index.sgml:<ANCHOR id="im--output-doublevec" href="libvips/libvips-dispatch.html#im--output-doublevec">
doc/reference/html/index.sgml:<ANCHOR id="im--output-dmask" href="libvips/libvips-dispatch.html#im--output-dmask">
doc/reference/html/index.sgml:<ANCHOR id="im--output-dmask-screen" href="libvips/libvips-dispatch.html#im--output-dmask-screen">
doc/reference/html/index.sgml:<ANCHOR id="im--output-complex" href="libvips/libvips-dispatch.html#im--output-complex">
doc/reference/html/index.sgml:<ANCHOR id="im--input-string" href="libvips/libvips-dispatch.html#im--input-string">
doc/reference/html/index.sgml:<ANCHOR id="im--output-string" href="libvips/libvips-dispatch.html#im--output-string">
doc/reference/html/index.sgml:<ANCHOR id="im--input-imagevec" href="libvips/libvips-dispatch.html#im--input-imagevec">
doc/reference/html/index.sgml:<ANCHOR id="im--input-image" href="libvips/libvips-dispatch.html#im--input-image">
doc/reference/html/index.sgml:<ANCHOR id="im--output-image" href="libvips/libvips-dispatch.html#im--output-image">
doc/reference/html/index.sgml:<ANCHOR id="im--rw-image" href="libvips/libvips-dispatch.html#im--rw-image">
doc/reference/html/index.sgml:<ANCHOR id="im--input-display" href="libvips/libvips-dispatch.html#im--input-display">
doc/reference/html/index.sgml:<ANCHOR id="im--output-display" href="libvips/libvips-dispatch.html#im--output-display">
doc/reference/html/index.sgml:<ANCHOR id="im--input-gvalue" href="libvips/libvips-dispatch.html#im--input-gvalue">
doc/reference/html/index.sgml:<ANCHOR id="im--output-gvalue" href="libvips/libvips-dispatch.html#im--output-gvalue">
doc/reference/html/index.sgml:<ANCHOR id="im--input-interpolate" href="libvips/libvips-dispatch.html#im--input-interpolate">
doc/reference/html/index.sgml:<ANCHOR id="im--iprint" href="libvips/libvips-dispatch.html#im--iprint">
doc/reference/html/index.sgml:<ANCHOR id="im--ivprint" href="libvips/libvips-dispatch.html#im--ivprint">
doc/reference/html/index.sgml:<ANCHOR id="im--dprint" href="libvips/libvips-dispatch.html#im--dprint">
doc/reference/html/index.sgml:<ANCHOR id="im--dvprint" href="libvips/libvips-dispatch.html#im--dvprint">
doc/reference/html/index.sgml:<ANCHOR id="im--dmsprint" href="libvips/libvips-dispatch.html#im--dmsprint">
doc/reference/html/index.sgml:<ANCHOR id="im--cprint" href="libvips/libvips-dispatch.html#im--cprint">
doc/reference/html/index.sgml:<ANCHOR id="im--sprint" href="libvips/libvips-dispatch.html#im--sprint">
doc/reference/html/index.sgml:<ANCHOR id="im--displayprint" href="libvips/libvips-dispatch.html#im--displayprint">
doc/reference/html/index.sgml:<ANCHOR id="im--gprint" href="libvips/libvips-dispatch.html#im--gprint">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-INT:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-INT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-INTVEC:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-INTVEC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-IMASK:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-IMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-INT:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-INT:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-INTVEC:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-INTVEC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-IMASK:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-IMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-DOUBLE:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-DOUBLE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-DOUBLEVEC:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-DOUBLEVEC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-DMASK:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-DMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-DOUBLE:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-DOUBLE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-DOUBLEVEC:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-DOUBLEVEC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-DMASK:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-DMASK:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-DMASK-STATS:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-DMASK-STATS:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-COMPLEX:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-COMPLEX:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-STRING:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-STRING:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-STRING:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-STRING:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-IMAGE:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-IMAGE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-IMAGEVEC:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-IMAGEVEC:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-IMAGE:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-IMAGE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-RW-IMAGE:CAPS" href="libvips/libvips-dispatch.html#IM-RW-IMAGE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-DISPLAY:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-DISPLAY:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-DISPLAY:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-DISPLAY:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-GVALUE:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-GVALUE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-OUTPUT-GVALUE:CAPS" href="libvips/libvips-dispatch.html#IM-OUTPUT-GVALUE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="IM-INPUT-INTERPOLATE:CAPS" href="libvips/libvips-dispatch.html#IM-INPUT-INTERPOLATE:CAPS">
doc/reference/html/index.sgml:<ANCHOR id="im-load-plugin" href="libvips/libvips-dispatch.html#im-load-plugin">
doc/reference/html/index.sgml:<ANCHOR id="im-load-plugins" href="libvips/libvips-dispatch.html#im-load-plugins">
doc/reference/html/index.sgml:<ANCHOR id="im-close-plugins" href="libvips/libvips-dispatch.html#im-close-plugins">
doc/reference/html/index.sgml:<ANCHOR id="im-map-packages" href="libvips/libvips-dispatch.html#im-map-packages">
doc/reference/html/index.sgml:<ANCHOR id="im-find-function" href="libvips/libvips-dispatch.html#im-find-function">
doc/reference/html/index.sgml:<ANCHOR id="im-find-package" href="libvips/libvips-dispatch.html#im-find-package">
doc/reference/html/index.sgml:<ANCHOR id="im-package-of-function" href="libvips/libvips-dispatch.html#im-package-of-function">
doc/reference/html/index.sgml:<ANCHOR id="im-free-vargv" href="libvips/libvips-dispatch.html#im-free-vargv">
doc/reference/html/index.sgml:<ANCHOR id="im-allocate-vargv" href="libvips/libvips-dispatch.html#im-allocate-vargv">
doc/reference/html/index.sgml:<ANCHOR id="im-run-command" href="libvips/libvips-dispatch.html#im-run-command">
doc/reference/html/api-index-full.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/api-index-full.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/api-index-full.html:<link rel="prev" href="object-tree.html" title="Object Hierarchy">
doc/reference/html/api-index-full.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/api-index-full.html:<td><a accesskey="p" href="object-tree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/api-index-full.html:<a name="api-index-full"></a>API Index</h2></div></div></div>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-ABS:CAPS" title="IM_ABS()">IM_ABS</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-abs" title="im_abs ()">im_abs</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-acostra" title="im_acostra ()">im_acostra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-add" title="im_add ()">im_add</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-addgnoise" title="im_addgnoise ()">im_addgnoise</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-callback.html#im-add-close-callback" title="im_add_close_callback ()">im_add_close_callback</a>, function in <a class="link" href="libvips-callback.html" title="callback">callback</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-callback.html#im-add-evalend-callback" title="im_add_evalend_callback ()">im_add_evalend_callback</a>, function in <a class="link" href="libvips-callback.html" title="callback">callback</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-callback.html#im-add-evalstart-callback" title="im_add_evalstart_callback ()">im_add_evalstart_callback</a>, function in <a class="link" href="libvips-callback.html" title="callback">callback</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-callback.html#im-add-eval-callback" title="im_add_eval_callback ()">im_add_eval_callback</a>, function in <a class="link" href="libvips-callback.html" title="callback">callback</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-callback.html#im-add-invalidate-callback" title="im_add_invalidate_callback ()">im_add_invalidate_callback</a>, function in <a class="link" href="libvips-callback.html" title="callback">callback</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-callback.html#im-add-postclose-callback" title="im_add_postclose_callback ()">im_add_postclose_callback</a>, function in <a class="link" href="libvips-callback.html" title="callback">callback</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-callback.html#im-add-preclose-callback" title="im_add_preclose_callback ()">im_add_preclose_callback</a>, function in <a class="link" href="libvips-callback.html" title="callback">callback</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-callback.html#im-add-written-callback" title="im_add_written_callback ()">im_add_written_callback</a>, function in <a class="link" href="libvips-callback.html" title="callback">callback</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-resample.html#im-affinei" title="im_affinei ()">im_affinei</a>, function in <a class="link" href="libvips-resample.html" title="resample">resample</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-resample.html#im-affinei-all" title="im_affinei_all ()">im_affinei_all</a>, function in <a class="link" href="libvips-resample.html" title="resample">resample</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-align-bands" title="im_align_bands ()">im_align_bands</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-allocate-input-array" title="im_allocate_input_array ()">im_allocate_input_array</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-allocate-vargv" title="im_allocate_vargv ()">im_allocate_vargv</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-amiMSBfirst" title="im_amiMSBfirst ()">im_amiMSBfirst</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-analyze2vips" title="im_analyze2vips ()">im_analyze2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()">im_andimage</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-andimageconst" title="im_andimageconst ()">im_andimageconst</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-andimage-vec" title="im_andimage_vec ()">im_andimage_vec</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-area-get-type" title="im_area_get_type ()">im_area_get_type</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-argument-flags" title="enum im_argument_flags">im_argument_flags</a>, enum in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-argument-new" title="im_argument_new ()">im_argument_new</a>, function in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-argument-t" title="im_argument_t">im_argument_t</a>, struct in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-arg-desc" title="im_arg_desc">im_arg_desc</a>, struct in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-arg-type" title="im_arg_type">im_arg_type</a>, typedef in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-memory.html#IM-ARRAY:CAPS" title="IM_ARRAY()">IM_ARRAY</a>, macro in <a class="link" href="libvips-memory.html" title="memory">memory</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-asintra" title="im_asintra ()">im_asintra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-atantra" title="im_atantra ()">im_atantra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-avg" title="im_avg ()">im_avg</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-A-X0:CAPS" title="IM_A_X0">IM_A_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-A-Y0:CAPS" title="IM_A_Y0">IM_A_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-A-Z0:CAPS" title="IM_A_Z0">IM_A_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-bandjoin" title="im_bandjoin ()">im_bandjoin</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-bandmean" title="im_bandmean ()">im_bandmean</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-benchmark2" title="im_benchmark2 ()">im_benchmark2</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-benchmarkn" title="im_benchmarkn ()">im_benchmarkn</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-version.html#IM-BINARY-AGE:CAPS" title="IM_BINARY_AGE">IM_BINARY_AGE</a>, macro in <a class="link" href="libvips-version.html" title="version">version</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-binfile" title="im_binfile ()">im_binfile</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-bits-of-fmt" title="im_bits_of_fmt ()">im_bits_of_fmt</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-black" title="im_black ()">im_black</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-blend" title="im_blend ()">im_blend</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-blob-get" title="im_blob_get ()">im_blob_get</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-blob-get-type" title="im_blob_get_type ()">im_blob_get_type</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-blob-set" title="im_blob_set ()">im_blob_set</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-break-token" title="im_break_token ()">im_break_token</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-buildlut" title="im_buildlut ()">im_buildlut</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-B-X0:CAPS" title="IM_B_X0">IM_B_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-B-Y0:CAPS" title="IM_B_Y0">IM_B_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-B-Z0:CAPS" title="IM_B_Z0">IM_B_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-c2amph" title="im_c2amph ()">im_c2amph</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-c2imag" title="im_c2imag ()">im_c2imag</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-c2real" title="im_c2real ()">im_c2real</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-c2rect" title="im_c2rect ()">im_c2rect</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-cache" title="im_cache ()">im_cache</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()">im_callback_fn</a>, user_function in <a class="link" href="libvips-callback.html" title="callback">callback</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-ceil" title="im_ceil ()">im_ceil</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-8or16" title="im_check_8or16 ()">im_check_8or16</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-bandno" title="im_check_bandno ()">im_check_bandno</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-bands" title="im_check_bands ()">im_check_bands</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-bands-1or3" title="im_check_bands_1or3 ()">im_check_bands_1or3</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-bands-1orn" title="im_check_bands_1orn ()">im_check_bands_1orn</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-bands-same" title="im_check_bands_same ()">im_check_bands_same</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-coding-known" title="im_check_coding_known ()">im_check_coding_known</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-coding-labq" title="im_check_coding_labq ()">im_check_coding_labq</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-coding-rad" title="im_check_coding_rad ()">im_check_coding_rad</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-coding-same" title="im_check_coding_same ()">im_check_coding_same</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-complex" title="im_check_complex ()">im_check_complex</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-dmask" title="im_check_dmask ()">im_check_dmask</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-format" title="im_check_format ()">im_check_format</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-format-same" title="im_check_format_same ()">im_check_format_same</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-hist" title="im_check_hist ()">im_check_hist</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-imask" title="im_check_imask ()">im_check_imask</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-int" title="im_check_int ()">im_check_int</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-mono" title="im_check_mono ()">im_check_mono</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-noncomplex" title="im_check_noncomplex ()">im_check_noncomplex</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-size-same" title="im_check_size_same ()">im_check_size_same</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-u8or16" title="im_check_u8or16 ()">im_check_u8or16</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-u8or16orf" title="im_check_u8or16orf ()">im_check_u8or16orf</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-uint" title="im_check_uint ()">im_check_uint</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-uintorf" title="im_check_uintorf ()">im_check_uintorf</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-uncoded" title="im_check_uncoded ()">im_check_uncoded</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-check-vector" title="im_check_vector ()">im_check_vector</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-circle" title="im_circle ()">im_circle</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-CLIP:CAPS" title="IM_CLIP()">IM_CLIP</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-clip2fmt" title="im_clip2fmt ()">im_clip2fmt</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-CLIP-CHAR:CAPS" title="IM_CLIP_CHAR()">IM_CLIP_CHAR</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-CLIP-NONE:CAPS" title="IM_CLIP_NONE()">IM_CLIP_NONE</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-CLIP-SHORT:CAPS" title="IM_CLIP_SHORT()">IM_CLIP_SHORT</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-CLIP-UCHAR:CAPS" title="IM_CLIP_UCHAR()">IM_CLIP_UCHAR</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-CLIP-USHORT:CAPS" title="IM_CLIP_USHORT()">IM_CLIP_USHORT</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-close" title="im_close ()">im_close</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-close-plugins" title="im_close_plugins ()">im_close_plugins</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-morphology.html#im-cntlines" title="im_cntlines ()">im_cntlines</a>, function in <a class="link" href="libvips-morphology.html" title="morphology">morphology</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-ab2Ch" title="im_col_ab2Ch ()">im_col_ab2Ch</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-ab2h" title="im_col_ab2h ()">im_col_ab2h</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-C2Cucs" title="im_col_C2Cucs ()">im_col_C2Cucs</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-Ch2ab" title="im_col_Ch2ab ()">im_col_Ch2ab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-Ch2hucs" title="im_col_Ch2hucs ()">im_col_Ch2hucs</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-Chucs2h" title="im_col_Chucs2h ()">im_col_Chucs2h</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-Cucs2C" title="im_col_Cucs2C ()">im_col_Cucs2C</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-dE00" title="im_col_dE00 ()">im_col_dE00</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-dECMC" title="im_col_dECMC ()">im_col_dECMC</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-L2Lucs" title="im_col_L2Lucs ()">im_col_L2Lucs</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-Lab2XYZ" title="im_col_Lab2XYZ ()">im_col_Lab2XYZ</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-Lucs2L" title="im_col_Lucs2L ()">im_col_Lucs2L</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-make-tables-UCS" title="im_col_make_tables_UCS ()">im_col_make_tables_UCS</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-pythagoras" title="im_col_pythagoras ()">im_col_pythagoras</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-col-XYZ2Lab" title="im_col_XYZ2Lab ()">im_col_XYZ2Lab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-compass" title="im_compass ()">im_compass</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#im-concurrency-get" title="im_concurrency_get ()">im_concurrency_get</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#im-concurrency-set" title="im_concurrency_set ()">im_concurrency_set</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-construct-fn" title="im_construct_fn ()">im_construct_fn</a>, user_function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-contrast-surface" title="im_contrast_surface ()">im_contrast_surface</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()">im_conv</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-convsep" title="im_convsep ()">im_convsep</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-convsep-f" title="im_convsep_f ()">im_convsep_f</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-conv-f" title="im_conv_f ()">im_conv_f</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-cooc-asm" title="im_cooc_asm ()">im_cooc_asm</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-cooc-contrast" title="im_cooc_contrast ()">im_cooc_contrast</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-cooc-correlation" title="im_cooc_correlation ()">im_cooc_correlation</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-cooc-entropy" title="im_cooc_entropy ()">im_cooc_entropy</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-cooc-matrix" title="im_cooc_matrix ()">im_cooc_matrix</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()">im_copy</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-copy-file" title="im_copy_file ()">im_copy_file</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-copy-morph" title="im_copy_morph ()">im_copy_morph</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-copy-native" title="im_copy_native ()">im_copy_native</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-copy-set" title="im_copy_set ()">im_copy_set</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-copy-set-meta" title="im_copy_set_meta ()">im_copy_set_meta</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-copy-swap" title="im_copy_swap ()">im_copy_swap</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-correl" title="im_correl ()">im_correl</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-costra" title="im_costra ()">im_costra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-cp-desc" title="im_cp_desc ()">im_cp_desc</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-cp-descv" title="im_cp_descv ()">im_cp_descv</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-cp-desc-array" title="im_cp_desc_array ()">im_cp_desc_array</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-create-dmask" title="im_create_dmask ()">im_create_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-create-dmaskv" title="im_create_dmaskv ()">im_create_dmaskv</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-create-fmask" title="im_create_fmask ()">im_create_fmask</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-create-imask" title="im_create_imask ()">im_create_imask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-create-imaskv" title="im_create_imaskv ()">im_create_imaskv</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-cross-phase" title="im_cross_phase ()">im_cross_phase</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-csv2vips" title="im_csv2vips ()">im_csv2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-C-X0:CAPS" title="IM_C_X0">IM_C_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-C-Y0:CAPS" title="IM_C_Y0">IM_C_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-C-Z0:CAPS" title="IM_C_Z0">IM_C_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D3250-X0:CAPS" title="IM_D3250_X0">IM_D3250_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D3250-Y0:CAPS" title="IM_D3250_Y0">IM_D3250_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D3250-Z0:CAPS" title="IM_D3250_Z0">IM_D3250_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D50-X0:CAPS" title="IM_D50_X0">IM_D50_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D50-Y0:CAPS" title="IM_D50_Y0">IM_D50_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D50-Z0:CAPS" title="IM_D50_Z0">IM_D50_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D55-X0:CAPS" title="IM_D55_X0">IM_D55_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D55-Y0:CAPS" title="IM_D55_Y0">IM_D55_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D55-Z0:CAPS" title="IM_D55_Z0">IM_D55_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D65-X0:CAPS" title="IM_D65_X0">IM_D65_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D65-Y0:CAPS" title="IM_D65_Y0">IM_D65_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D65-Z0:CAPS" title="IM_D65_Z0">IM_D65_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D75-X0:CAPS" title="IM_D75_X0">IM_D75_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D75-Y0:CAPS" title="IM_D75_Y0">IM_D75_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D75-Z0:CAPS" title="IM_D75_Z0">IM_D75_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D93-X0:CAPS" title="IM_D93_X0">IM_D93_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D93-Y0:CAPS" title="IM_D93_Y0">IM_D93_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-D93-Z0:CAPS" title="IM_D93_Z0">IM_D93_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-dE00-fromLab" title="im_dE00_fromLab ()">im_dE00_fromLab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-dECMC-fromLab" title="im_dECMC_fromLab ()">im_dECMC_fromLab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-DEG:CAPS" title="IM_DEG()">IM_DEG</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-demand-hint" title="im_demand_hint ()">im_demand_hint</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-demand-hint-array" title="im_demand_hint_array ()">im_demand_hint_array</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-dest-obj-fn" title="im_dest_obj_fn ()">im_dest_obj_fn</a>, user_function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-deviate" title="im_deviate ()">im_deviate</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-dE-fromLab" title="im_dE_fromLab ()">im_dE_fromLab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-dE-fromXYZ" title="im_dE_fromXYZ ()">im_dE_fromXYZ</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-diag" title="im_diag ()">im_diag</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-morphology.html#im-dilate" title="im_dilate ()">im_dilate</a>, function in <a class="link" href="libvips-morphology.html" title="morphology">morphology</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-dispatch-fn" title="im_dispatch_fn ()">im_dispatch_fn</a>, user_function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-disp-ps" title="im_disp_ps ()">im_disp_ps</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-divide" title="im_divide ()">im_divide</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK">DOUBLEMASK</a>, struct in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-doublevec-object" title="im_doublevec_object">im_doublevec_object</a>, struct in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-dup-dmask" title="im_dup_dmask ()">im_dup_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-dup-imask" title="im_dup_imask ()">im_dup_imask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-embed" title="im_embed ()">im_embed</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-eorimage" title="im_eorimage ()">im_eorimage</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-eorimageconst" title="im_eorimageconst ()">im_eorimageconst</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-eorimage-vec" title="im_eorimage_vec ()">im_eorimage_vec</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-equal" title="im_equal ()">im_equal</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-equalconst" title="im_equalconst ()">im_equalconst</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-equal-vec" title="im_equal_vec ()">im_equal_vec</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-morphology.html#im-erode" title="im_erode ()">im_erode</a>, function in <a class="link" href="libvips-morphology.html" title="morphology">morphology</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-error" title="im_error ()">im_error</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-error-buffer" title="im_error_buffer ()">im_error_buffer</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-error-clear" title="im_error_clear ()">im_error_clear</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#error-exit" title="error_exit ()">error_exit</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-error-system" title="im_error_system ()">im_error_system</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-existsf" title="im_existsf ()">im_existsf</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-exp10tra" title="im_exp10tra ()">im_exp10tra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-expntra" title="im_expntra ()">im_expntra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-expntra-vec" title="im_expntra_vec ()">im_expntra_vec</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-exptra" title="im_exptra ()">im_exptra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-exr2vips" title="im_exr2vips ()">im_exr2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-extract-area" title="im_extract_area ()">im_extract_area</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-extract-areabands" title="im_extract_areabands ()">im_extract_areabands</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-extract-band" title="im_extract_band ()">im_extract_band</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-extract-bands" title="im_extract_bands ()">im_extract_bands</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-eye" title="im_eye ()">im_eye</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-E-X0:CAPS" title="IM_E_X0">IM_E_X0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-E-Y0:CAPS" title="IM_E_Y0">IM_E_Y0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#IM-E-Z0:CAPS" title="IM_E_Z0">IM_E_Z0</a>, macro in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-falsecolour" title="im_falsecolour ()">im_falsecolour</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-fastcor" title="im_fastcor ()">im_fastcor</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-fastline" title="im_fastline ()">im_fastline</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-fastlineuser" title="im_fastlineuser ()">im_fastlineuser</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-feye" title="im_feye ()">im_feye</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-fgrey" title="im_fgrey ()">im_fgrey</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-filename-split" title="im_filename_split ()">im_filename_split</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-filename-suffix" title="im_filename_suffix ()">im_filename_suffix</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-filename-suffix-match" title="im_filename_suffix_match ()">im_filename_suffix_match</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-file-length" title="im_file_length ()">im_file_length</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-find-function" title="im_find_function ()">im_find_function</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-find-package" title="im_find_package ()">im_find_package</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-fliphor" title="im_fliphor ()">im_fliphor</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-flipver" title="im_flipver ()">im_flipver</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-float2rad" title="im_float2rad ()">im_float2rad</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-flood" title="im_flood ()">im_flood</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-flood-blob" title="im_flood_blob ()">im_flood_blob</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-flood-blob-copy" title="im_flood_blob_copy ()">im_flood_blob_copy</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-flood-copy" title="im_flood_copy ()">im_flood_copy</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-flood-other" title="im_flood_other ()">im_flood_other</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-flood-other-copy" title="im_flood_other_copy ()">im_flood_other_copy</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-floor" title="im_floor ()">im_floor</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-flt-image-freq" title="im_flt_image_freq ()">im_flt_image_freq</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-fn-flags" title="enum im_fn_flags">im_fn_flags</a>, enum in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-fractsurf" title="im_fractsurf ()">im_fractsurf</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-FREE:CAPS" title="IM_FREE()">IM_FREE</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-memory.html#im-free" title="im_free ()">im_free</a>, function in <a class="link" href="libvips-memory.html" title="memory">memory</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-FREEF:CAPS" title="IM_FREEF()">IM_FREEF</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-free-dmask" title="im_free_dmask ()">im_free_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-free-imask" title="im_free_imask ()">im_free_imask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-free-vargv" title="im_free_vargv ()">im_free_vargv</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-freqflt" title="im_freqflt ()">im_freqflt</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-function" title="im_function">im_function</a>, struct in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-fwfft" title="im_fwfft ()">im_fwfft</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-fzone" title="im_fzone ()">im_fzone</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-gammacorrect" title="im_gammacorrect ()">im_gammacorrect</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-gaussnoise" title="im_gaussnoise ()">im_gaussnoise</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-gauss-dmask" title="im_gauss_dmask ()">im_gauss_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-gauss-imask" title="im_gauss_imask ()">im_gauss_imask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-gauss-imask-sep" title="im_gauss_imask_sep ()">im_gauss_imask_sep</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-gbandjoin" title="im_gbandjoin ()">im_gbandjoin</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-generate" title="im_generate ()">im_generate</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-generate-fn" title="im_generate_fn ()">im_generate_fn</a>, user_function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-getnextoption" title="im_getnextoption ()">im_getnextoption</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-getsuboption" title="im_getsuboption ()">im_getsuboption</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-get-argv0" title="im_get_argv0 ()">im_get_argv0</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-get-option-group" title="im_get_option_group ()">im_get_option_group</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-glds-asm" title="im_glds_asm ()">im_glds_asm</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-glds-contrast" title="im_glds_contrast ()">im_glds_contrast</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-glds-entropy" title="im_glds_entropy ()">im_glds_entropy</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-glds-matrix" title="im_glds_matrix ()">im_glds_matrix</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-glds-mean" title="im_glds_mean ()">im_glds_mean</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-global-balance" title="im_global_balance ()">im_global_balance</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-global-balancef" title="im_global_balancef ()">im_global_balancef</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-gradcor" title="im_gradcor ()">im_gradcor</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-gradient" title="im_gradient ()">im_gradient</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-grad-x" title="im_grad_x ()">im_grad_x</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-grad-y" title="im_grad_y ()">im_grad_y</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-grey" title="im_grey ()">im_grey</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-cimg-funcs.html#im-greyc-mask" title="im_greyc_mask ()">im_greyc_mask</a>, function in <a class="link" href="libvips-cimg-funcs.html" title="cimg_funcs">cimg_funcs</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-grid" title="im_grid ()">im_grid</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-guess-libdir" title="im_guess_libdir ()">im_guess_libdir</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-guess-prefix" title="im_guess_prefix ()">im_guess_prefix</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-hash-table-map" title="im_hash_table_map ()">im_hash_table_map</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-header-as-string" title="im_header_as_string ()">im_header_as_string</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-header-double" title="im_header_double ()">im_header_double</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-header-get" title="im_header_get ()">im_header_get</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()">im_header_get_typeof</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-header-int" title="im_header_int ()">im_header_int</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-header-map" title="im_header_map ()">im_header_map</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-header-map-fn" title="im_header_map_fn ()">im_header_map_fn</a>, user_function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-header-string" title="im_header_string ()">im_header_string</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-heq" title="im_heq ()">im_heq</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-hist" title="im_hist ()">im_hist</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-histcum" title="im_histcum ()">im_histcum</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-histeq" title="im_histeq ()">im_histeq</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()">im_histgr</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-histlin" title="im_histlin ()">im_histlin</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-histnD" title="im_histnD ()">im_histnD</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-histnorm" title="im_histnorm ()">im_histnorm</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-history-get" title="im_history_get ()">im_history_get</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-histplot" title="im_histplot ()">im_histplot</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-histspec" title="im_histspec ()">im_histspec</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-hist-indexed" title="im_hist_indexed ()">im_hist_indexed</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-hsp" title="im_hsp ()">im_hsp</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-icc-ac2rc" title="im_icc_ac2rc ()">im_icc_ac2rc</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-icc-export-depth" title="im_icc_export_depth ()">im_icc_export_depth</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-icc-import" title="im_icc_import ()">im_icc_import</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-icc-import-embedded" title="im_icc_import_embedded ()">im_icc_import_embedded</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-icc-present" title="im_icc_present ()">im_icc_present</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-icc-transform" title="im_icc_transform ()">im_icc_transform</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-identity" title="im_identity ()">im_identity</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-identity-ushort" title="im_identity_ushort ()">im_identity_ushort</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-ifthenelse" title="im_ifthenelse ()">im_ifthenelse</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-image" title="im_image ()">im_image</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-imagevec-object" title="im_imagevec_object">im_imagevec_object</a>, struct in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#IM-IMAGE-ADDR:CAPS" title="IM_IMAGE_ADDR()">IM_IMAGE_ADDR</a>, macro in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#IM-IMAGE-N-ELEMENTS:CAPS" title="IM_IMAGE_N_ELEMENTS()">IM_IMAGE_N_ELEMENTS</a>, macro in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#IM-IMAGE-SIZEOF-ELEMENT:CAPS" title="IM_IMAGE_SIZEOF_ELEMENT()">IM_IMAGE_SIZEOF_ELEMENT</a>, macro in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#IM-IMAGE-SIZEOF-LINE:CAPS" title="IM_IMAGE_SIZEOF_LINE()">IM_IMAGE_SIZEOF_LINE</a>, macro in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#IM-IMAGE-SIZEOF-PEL:CAPS" title="IM_IMAGE_SIZEOF_PEL()">IM_IMAGE_SIZEOF_PEL</a>, macro in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-incheck" title="im_incheck ()">im_incheck</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-initdesc" title="im_initdesc ()">im_initdesc</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-init-obj-fn" title="im_init_obj_fn ()">im_init_obj_fn</a>, user_function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-init-world" title="im_init_world ()">im_init_world</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-DISPLAY:CAPS" title="IM_INPUT_DISPLAY()">IM_INPUT_DISPLAY</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-DMASK:CAPS" title="IM_INPUT_DMASK()">IM_INPUT_DMASK</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-DOUBLE:CAPS" title="IM_INPUT_DOUBLE()">IM_INPUT_DOUBLE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-DOUBLEVEC:CAPS" title="IM_INPUT_DOUBLEVEC()">IM_INPUT_DOUBLEVEC</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-GVALUE:CAPS" title="IM_INPUT_GVALUE()">IM_INPUT_GVALUE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-IMAGE:CAPS" title="IM_INPUT_IMAGE()">IM_INPUT_IMAGE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-IMAGEVEC:CAPS" title="IM_INPUT_IMAGEVEC()">IM_INPUT_IMAGEVEC</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-IMASK:CAPS" title="IM_INPUT_IMASK()">IM_INPUT_IMASK</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-INT:CAPS" title="IM_INPUT_INT()">IM_INPUT_INT</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-INTERPOLATE:CAPS" title="IM_INPUT_INTERPOLATE()">IM_INPUT_INTERPOLATE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-INTVEC:CAPS" title="IM_INPUT_INTVEC()">IM_INPUT_INTVEC</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-INPUT-STRING:CAPS" title="IM_INPUT_STRING()">IM_INPUT_STRING</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()">im_insert</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-insertplace" title="im_insertplace ()">im_insertplace</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-insertset" title="im_insertset ()">im_insertset</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-insert-noexpand" title="im_insert_noexpand ()">im_insert_noexpand</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-version.html#IM-INTERFACE-AGE:CAPS" title="IM_INTERFACE_AGE">IM_INTERFACE_AGE</a>, macro in <a class="link" href="libvips-version.html" title="version">version</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK">INTMASK</a>, struct in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-intvec-object" title="im_intvec_object">im_intvec_object</a>, struct in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-invalidate" title="im_invalidate ()">im_invalidate</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-invert" title="im_invert ()">im_invert</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-invertlut" title="im_invertlut ()">im_invertlut</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-invfft" title="im_invfft ()">im_invfft</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-invfftr" title="im_invfftr ()">im_invfftr</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-iocheck" title="im_iocheck ()">im_iocheck</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-isfile" title="im_isfile ()">im_isfile</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-ismonotonic" title="im_ismonotonic ()">im_ismonotonic</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-isMSBfirst" title="im_isMSBfirst ()">im_isMSBfirst</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-ispartial" title="im_ispartial ()">im_ispartial</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-ispostfix" title="im_ispostfix ()">im_ispostfix</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-ispoweroftwo" title="im_ispoweroftwo ()">im_ispoweroftwo</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-isprefix" title="im_isprefix ()">im_isprefix</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-isvips" title="im_isvips ()">im_isvips</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-iterate" title="im_iterate ()">im_iterate</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-jpeg2vips" title="im_jpeg2vips ()">im_jpeg2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-Lab2LabQ" title="im_Lab2LabQ ()">im_Lab2LabQ</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-Lab2LabS" title="im_Lab2LabS ()">im_Lab2LabS</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-Lab2LCh" title="im_Lab2LCh ()">im_Lab2LCh</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-Lab2UCS" title="im_Lab2UCS ()">im_Lab2UCS</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-Lab2XYZ" title="im_Lab2XYZ ()">im_Lab2XYZ</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-Lab2XYZ-temp" title="im_Lab2XYZ_temp ()">im_Lab2XYZ_temp</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-morphology.html#im-label-regions" title="im_label_regions ()">im_label_regions</a>, function in <a class="link" href="libvips-morphology.html" title="morphology">morphology</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-LabQ2Lab" title="im_LabQ2Lab ()">im_LabQ2Lab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-LabQ2LabS" title="im_LabQ2LabS ()">im_LabQ2LabS</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-LabQ2XYZ" title="im_LabQ2XYZ ()">im_LabQ2XYZ</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-LabS2Lab" title="im_LabS2Lab ()">im_LabS2Lab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-LabS2LabQ" title="im_LabS2LabQ ()">im_LabS2LabQ</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-lab-morph" title="im_lab_morph ()">im_lab_morph</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-LCh2Lab" title="im_LCh2Lab ()">im_LCh2Lab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-LCh2UCS" title="im_LCh2UCS ()">im_LCh2UCS</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-less" title="im_less ()">im_less</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-lessconst" title="im_lessconst ()">im_lessconst</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()">im_lesseq</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()">im_lesseqconst</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-lesseq-vec" title="im_lesseq_vec ()">im_lesseq_vec</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-less-vec" title="im_less_vec ()">im_less_vec</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-lhisteq" title="im_lhisteq ()">im_lhisteq</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-lindetect" title="im_lindetect ()">im_lindetect</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-lineset" title="im_lineset ()">im_lineset</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-linreg" title="im_linreg ()">im_linreg</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-lintra" title="im_lintra ()">im_lintra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-lintra-vec" title="im_lintra_vec ()">im_lintra_vec</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-load-plugin" title="im_load_plugin ()">im_load_plugin</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-load-plugins" title="im_load_plugins ()">im_load_plugins</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-local" title="im_local ()">im_local</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-local-array" title="im_local_array ()">im_local_array</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-local-dmask" title="im_local_dmask ()">im_local_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-local-imask" title="im_local_imask ()">im_local_imask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-log10tra" title="im_log10tra ()">im_log10tra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-logtra" title="im_logtra ()">im_logtra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-log-dmask" title="im_log_dmask ()">im_log_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-log-imask" title="im_log_imask ()">im_log_imask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-lrjoin" title="im_lrjoin ()">im_lrjoin</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-lrmerge" title="im_lrmerge ()">im_lrmerge</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-lrmerge1" title="im_lrmerge1 ()">im_lrmerge1</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-lrmosaic" title="im_lrmosaic ()">im_lrmosaic</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-lrmosaic1" title="im_lrmosaic1 ()">im_lrmosaic1</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-lu-decomp" title="im_lu_decomp ()">im_lu_decomp</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-lu-solve" title="im_lu_solve ()">im_lu_solve</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-magick2vips" title="im_magick2vips ()">im_magick2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#IM-MAGIC-INTEL:CAPS" title="IM_MAGIC_INTEL">IM_MAGIC_INTEL</a>, macro in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#IM-MAGIC-SPARC:CAPS" title="IM_MAGIC_SPARC">IM_MAGIC_SPARC</a>, macro in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-version.html#IM-MAJOR-VERSION:CAPS" title="IM_MAJOR_VERSION">IM_MAJOR_VERSION</a>, macro in <a class="link" href="libvips-version.html" title="version">version</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-make-xy" title="im_make_xy ()">im_make_xy</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-memory.html#im-malloc" title="im_malloc ()">im_malloc</a>, function in <a class="link" href="libvips-memory.html" title="memory">memory</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-maplut" title="im_maplut ()">im_maplut</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-map-equal" title="im_map_equal ()">im_map_equal</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-map-packages" title="im_map_packages ()">im_map_packages</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-mask2vips" title="im_mask2vips ()">im_mask2vips</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-mask-object" title="im_mask_object">im_mask_object</a>, struct in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-mat2vips" title="im_mat2vips ()">im_mat2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-matcat" title="im_matcat ()">im_matcat</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-resample.html#im-match-linear" title="im_match_linear ()">im_match_linear</a>, function in <a class="link" href="libvips-resample.html" title="resample">resample</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-resample.html#im-match-linear-search" title="im_match_linear_search ()">im_match_linear_search</a>, function in <a class="link" href="libvips-resample.html" title="resample">resample</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-matinv" title="im_matinv ()">im_matinv</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-matinv-inplace" title="im_matinv_inplace ()">im_matinv_inplace</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-matmul" title="im_matmul ()">im_matmul</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-mattrn" title="im_mattrn ()">im_mattrn</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-max" title="im_max ()">im_max</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-MAX:CAPS" title="IM_MAX()">IM_MAX</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-maxpos" title="im_maxpos ()">im_maxpos</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-maxpos-avg" title="im_maxpos_avg ()">im_maxpos_avg</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-maxpos-subpel" title="im_maxpos_subpel ()">im_maxpos_subpel</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-maxpos-vec" title="im_maxpos_vec ()">im_maxpos_vec</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-morphology.html#im-maxvalue" title="im_maxvalue ()">im_maxvalue</a>, function in <a class="link" href="libvips-morphology.html" title="morphology">morphology</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-MAX-ARGS:CAPS" title="IM_MAX_ARGS">IM_MAX_ARGS</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-measure-area" title="im_measure_area ()">im_measure_area</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#IM-META-EXIF-NAME:CAPS" title="IM_META_EXIF_NAME">IM_META_EXIF_NAME</a>, macro in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()">im_meta_get</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-get-area" title="im_meta_get_area ()">im_meta_get_area</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-get-blob" title="im_meta_get_blob ()">im_meta_get_blob</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-get-double" title="im_meta_get_double ()">im_meta_get_double</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-get-int" title="im_meta_get_int ()">im_meta_get_int</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-get-string" title="im_meta_get_string ()">im_meta_get_string</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()">im_meta_get_typeof</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#IM-META-ICC-NAME:CAPS" title="IM_META_ICC_NAME">IM_META_ICC_NAME</a>, macro in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-remove" title="im_meta_remove ()">im_meta_remove</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#IM-META-RESOLUTION-UNIT:CAPS" title="IM_META_RESOLUTION_UNIT">IM_META_RESOLUTION_UNIT</a>, macro in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()">im_meta_set</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-set-area" title="im_meta_set_area ()">im_meta_set_area</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-set-blob" title="im_meta_set_blob ()">im_meta_set_blob</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-set-double" title="im_meta_set_double ()">im_meta_set_double</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-set-int" title="im_meta_set_int ()">im_meta_set_int</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-meta-set-string" title="im_meta_set_string ()">im_meta_set_string</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#IM-META-XML:CAPS" title="IM_META_XML">IM_META_XML</a>, macro in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-version.html#IM-MICRO-VERSION:CAPS" title="IM_MICRO_VERSION">IM_MICRO_VERSION</a>, macro in <a class="link" href="libvips-version.html" title="version">version</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-MIN:CAPS" title="IM_MIN()">IM_MIN</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()">im_min</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-version.html#IM-MINOR-VERSION:CAPS" title="IM_MINOR_VERSION">IM_MINOR_VERSION</a>, macro in <a class="link" href="libvips-version.html" title="version">version</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-minpos" title="im_minpos ()">im_minpos</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-minpos-vec" title="im_minpos_vec ()">im_minpos_vec</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-more" title="im_more ()">im_more</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-moreconst" title="im_moreconst ()">im_moreconst</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-moreeq" title="im_moreeq ()">im_moreeq</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-moreeqconst" title="im_moreeqconst ()">im_moreeqconst</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-moreeq-vec" title="im_moreeq_vec ()">im_moreeq_vec</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-more-vec" title="im_more_vec ()">im_more_vec</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-mpercent" title="im_mpercent ()">im_mpercent</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-mpercent-hist" title="im_mpercent_hist ()">im_mpercent_hist</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-msb" title="im_msb ()">im_msb</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-msb-band" title="im_msb_band ()">im_msb_band</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-multiply" title="im_multiply ()">im_multiply</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-memory.html#IM-NEW:CAPS" title="IM_NEW()">IM_NEW</a>, macro in <a class="link" href="libvips-memory.html" title="memory">memory</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-norm-dmask" title="im_norm_dmask ()">im_norm_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-notequal" title="im_notequal ()">im_notequal</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-notequalconst" title="im_notequalconst ()">im_notequalconst</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-relational.html#im-notequal-vec" title="im_notequal_vec ()">im_notequal_vec</a>, function in <a class="link" href="libvips-relational.html" title="relational">relational</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-NUMBER:CAPS" title="IM_NUMBER()">IM_NUMBER</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-object" title="im_object">im_object</a>, typedef in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-offsets45" title="im_offsets45 ()">im_offsets45</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-offsets90" title="im_offsets90 ()">im_offsets90</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-open" title="im_open ()">im_open</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-open-local" title="im_open_local()">im_open_local</a>, macro in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-open-local-array" title="im_open_local_array()">im_open_local_array</a>, macro in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-operation-dispatch-fn" title="im_operation_dispatch_fn ()">im_operation_dispatch_fn</a>, user_function in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-operation-flags" title="enum im_operation_flags">im_operation_flags</a>, enum in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-operation-lookup" title="im_operation_lookup ()">im_operation_lookup</a>, function in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-operation-map" title="im_operation_map ()">im_operation_map</a>, function in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-operation-register" title="im_operation_register ()">im_operation_register</a>, function in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-operation-registerv" title="im_operation_registerv ()">im_operation_registerv</a>, function in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-operation-t" title="im_operation_t">im_operation_t</a>, struct in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-orimage" title="im_orimage ()">im_orimage</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-orimageconst" title="im_orimageconst ()">im_orimageconst</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-orimage-vec" title="im_orimage_vec ()">im_orimage_vec</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-outcheck" title="im_outcheck ()">im_outcheck</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-COMPLEX:CAPS" title="IM_OUTPUT_COMPLEX()">IM_OUTPUT_COMPLEX</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-DISPLAY:CAPS" title="IM_OUTPUT_DISPLAY()">IM_OUTPUT_DISPLAY</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-DMASK:CAPS" title="IM_OUTPUT_DMASK()">IM_OUTPUT_DMASK</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-DMASK-STATS:CAPS" title="IM_OUTPUT_DMASK_STATS()">IM_OUTPUT_DMASK_STATS</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-DOUBLE:CAPS" title="IM_OUTPUT_DOUBLE()">IM_OUTPUT_DOUBLE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-DOUBLEVEC:CAPS" title="IM_OUTPUT_DOUBLEVEC()">IM_OUTPUT_DOUBLEVEC</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-GVALUE:CAPS" title="IM_OUTPUT_GVALUE()">IM_OUTPUT_GVALUE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-IMAGE:CAPS" title="IM_OUTPUT_IMAGE()">IM_OUTPUT_IMAGE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-IMASK:CAPS" title="IM_OUTPUT_IMASK()">IM_OUTPUT_IMASK</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-INT:CAPS" title="IM_OUTPUT_INT()">IM_OUTPUT_INT</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-INTVEC:CAPS" title="IM_OUTPUT_INTVEC()">IM_OUTPUT_INTVEC</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-OUTPUT-STRING:CAPS" title="IM_OUTPUT_STRING()">IM_OUTPUT_STRING</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-package" title="im_package">im_package</a>, struct in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-package-of-function" title="im_package_of_function ()">im_package_of_function</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-paintrect" title="im_paintrect ()">im_paintrect</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-phasecor-fft" title="im_phasecor_fft ()">im_phasecor_fft</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-PI:CAPS" title="IM_PI">IM_PI</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-pincheck" title="im_pincheck ()">im_pincheck</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-piocheck" title="im_piocheck ()">im_piocheck</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-plotmask" title="im_plotmask ()">im_plotmask</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-png2vips" title="im_png2vips ()">im_png2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-point" title="im_point ()">im_point</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-point-bilinear" title="im_point_bilinear ()">im_point_bilinear</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-popenf" title="im_popenf ()">im_popenf</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-poutcheck" title="im_poutcheck ()">im_poutcheck</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-powtra" title="im_powtra ()">im_powtra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-powtra-vec" title="im_powtra_vec ()">im_powtra_vec</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-ppm2vips" title="im_ppm2vips ()">im_ppm2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()">im_prepare</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-prepare-to" title="im_prepare_to ()">im_prepare_to</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-print-dmask" title="im_print_dmask ()">im_print_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-print-imask" title="im_print_imask ()">im_print_imask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-print-obj-fn" title="im_print_obj_fn ()">im_print_obj_fn</a>, user_function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-morphology.html#im-profile" title="im_profile ()">im_profile</a>, function in <a class="link" href="libvips-morphology.html" title="morphology">morphology</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-project" title="im_project ()">im_project</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-RAD:CAPS" title="IM_RAD()">IM_RAD</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-rad2float" title="im_rad2float ()">im_rad2float</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-rad2vips" title="im_rad2vips ()">im_rad2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-morphology.html#im-rank" title="im_rank ()">im_rank</a>, function in <a class="link" href="libvips-morphology.html" title="morphology">morphology</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-morphology.html#im-rank-image" title="im_rank_image ()">im_rank_image</a>, function in <a class="link" href="libvips-morphology.html" title="morphology">morphology</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-raw2vips" title="im_raw2vips ()">im_raw2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-readpoint" title="im_readpoint ()">im_readpoint</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-read-dmask" title="im_read_dmask ()">im_read_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-read-imask" title="im_read_imask ()">im_read_imask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-recomb" title="im_recomb ()">im_recomb</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#Rect" title="Rect">Rect</a>, struct in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#IM-RECT-BOTTOM:CAPS" title="IM_RECT_BOTTOM()">IM_RECT_BOTTOM</a>, macro in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#im-rect-dup" title="im_rect_dup ()">im_rect_dup</a>, function in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#im-rect-equalsrect" title="im_rect_equalsrect ()">im_rect_equalsrect</a>, function in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#IM-RECT-HCENTRE:CAPS" title="IM_RECT_HCENTRE()">IM_RECT_HCENTRE</a>, macro in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#im-rect-includespoint" title="im_rect_includespoint ()">im_rect_includespoint</a>, function in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#im-rect-includesrect" title="im_rect_includesrect ()">im_rect_includesrect</a>, function in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#im-rect-intersectrect" title="im_rect_intersectrect ()">im_rect_intersectrect</a>, function in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#im-rect-isempty" title="im_rect_isempty ()">im_rect_isempty</a>, function in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#im-rect-marginadjust" title="im_rect_marginadjust ()">im_rect_marginadjust</a>, function in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#im-rect-normalise" title="im_rect_normalise ()">im_rect_normalise</a>, function in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#IM-RECT-RIGHT:CAPS" title="IM_RECT_RIGHT()">IM_RECT_RIGHT</a>, macro in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#im-rect-unionrect" title="im_rect_unionrect ()">im_rect_unionrect</a>, function in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-rect.html#IM-RECT-VCENTRE:CAPS" title="IM_RECT_VCENTRE()">IM_RECT_VCENTRE</a>, macro in <a class="link" href="libvips-rect.html" title="rect">rect</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-ref-string-get" title="im_ref_string_get ()">im_ref_string_get</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-ref-string-get-length" title="im_ref_string_get_length ()">im_ref_string_get_length</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-ref-string-get-type" title="im_ref_string_get_type ()">im_ref_string_get_type</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-ref-string-set" title="im_ref_string_set ()">im_ref_string_set</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#REGION:CAPS" title="REGION">REGION</a>, struct in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#IM-REGION-ADDR:CAPS" title="IM_REGION_ADDR()">IM_REGION_ADDR</a>, macro in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#IM-REGION-ADDR-TOPLEFT:CAPS" title="IM_REGION_ADDR_TOPLEFT()">IM_REGION_ADDR_TOPLEFT</a>, macro in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-black" title="im_region_black ()">im_region_black</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-buffer" title="im_region_buffer ()">im_region_buffer</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-copy" title="im_region_copy ()">im_region_copy</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-create" title="im_region_create ()">im_region_create</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-equalsregion" title="im_region_equalsregion ()">im_region_equalsregion</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-free" title="im_region_free ()">im_region_free</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-image" title="im_region_image ()">im_region_image</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#IM-REGION-LSKIP:CAPS" title="IM_REGION_LSKIP()">IM_REGION_LSKIP</a>, macro in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#IM-REGION-N-ELEMENTS:CAPS" title="IM_REGION_N_ELEMENTS()">IM_REGION_N_ELEMENTS</a>, macro in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-paint" title="im_region_paint ()">im_region_paint</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-position" title="im_region_position ()">im_region_position</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#im-region-region" title="im_region_region ()">im_region_region</a>, function in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-region.html#IM-REGION-SIZEOF-LINE:CAPS" title="IM_REGION_SIZEOF_LINE()">IM_REGION_SIZEOF_LINE</a>, macro in <a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-remainder" title="im_remainder ()">im_remainder</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-remainderconst" title="im_remainderconst ()">im_remainderconst</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-remainder-vec" title="im_remainder_vec ()">im_remainder_vec</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-remosaic" title="im_remosaic ()">im_remosaic</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-render-priority" title="im_render_priority ()">im_render_priority</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-replicate" title="im_replicate ()">im_replicate</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-ri2c" title="im_ri2c ()">im_ri2c</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-resample.html#im-rightshift-size" title="im_rightshift_size ()">im_rightshift_size</a>, function in <a class="link" href="libvips-resample.html" title="resample">resample</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-rint" title="im_rint ()">im_rint</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-RINT:CAPS" title="IM_RINT()">IM_RINT</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-rot180" title="im_rot180 ()">im_rot180</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-rot270" title="im_rot270 ()">im_rot270</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-rot90" title="im_rot90 ()">im_rot90</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-rotate-dmask45" title="im_rotate_dmask45 ()">im_rotate_dmask45</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-rotate-dmask90" title="im_rotate_dmask90 ()">im_rotate_dmask90</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-rotate-imask45" title="im_rotate_imask45 ()">im_rotate_imask45</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-rotate-imask90" title="im_rotate_imask90 ()">im_rotate_imask90</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#im-rotquad" title="im_rotquad ()">im_rotquad</a>, function in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-run-command" title="im_run_command ()">im_run_command</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#im-rwcheck" title="im_rwcheck ()">im_rwcheck</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-RW-IMAGE:CAPS" title="IM_RW_IMAGE()">IM_RW_IMAGE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-save-string-get" title="im_save_string_get ()">im_save_string_get</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-save-string-get-type" title="im_save_string_get_type ()">im_save_string_get_type</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-save-string-set" title="im_save_string_set ()">im_save_string_set</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#im-save-string-setf" title="im_save_string_setf ()">im_save_string_setf</a>, function in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-scale" title="im_scale ()">im_scale</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-scaleps" title="im_scaleps ()">im_scaleps</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-scale-dmask" title="im_scale_dmask ()">im_scale_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-semaphore.html#im-semaphore-destroy" title="im_semaphore_destroy ()">im_semaphore_destroy</a>, function in <a class="link" href="libvips-semaphore.html" title="semaphore">semaphore</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-semaphore.html#im-semaphore-down" title="im_semaphore_down ()">im_semaphore_down</a>, function in <a class="link" href="libvips-semaphore.html" title="semaphore">semaphore</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-semaphore.html#im-semaphore-downn" title="im_semaphore_downn ()">im_semaphore_downn</a>, function in <a class="link" href="libvips-semaphore.html" title="semaphore">semaphore</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-semaphore.html#im-semaphore-init" title="im_semaphore_init ()">im_semaphore_init</a>, function in <a class="link" href="libvips-semaphore.html" title="semaphore">semaphore</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-semaphore.html#im-semaphore-t" title="im_semaphore_t">im_semaphore_t</a>, struct in <a class="link" href="libvips-semaphore.html" title="semaphore">semaphore</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-semaphore.html#im-semaphore-up" title="im_semaphore_up ()">im_semaphore_up</a>, function in <a class="link" href="libvips-semaphore.html" title="semaphore">semaphore</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-semaphore.html#im-semaphore-upn" title="im_semaphore_upn ()">im_semaphore_upn</a>, function in <a class="link" href="libvips-semaphore.html" title="semaphore">semaphore</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-SETSTR:CAPS" title="IM_SETSTR()">IM_SETSTR</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-setupout" title="im_setupout ()">im_setupout</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-sharpen" title="im_sharpen ()">im_sharpen</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-shiftleft" title="im_shiftleft ()">im_shiftleft</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-shiftleft-vec" title="im_shiftleft_vec ()">im_shiftleft_vec</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-shiftright" title="im_shiftright ()">im_shiftright</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-boolean.html#im-shiftright-vec" title="im_shiftright_vec ()">im_shiftright_vec</a>, function in <a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-resample.html#im-shrink" title="im_shrink ()">im_shrink</a>, function in <a class="link" href="libvips-resample.html" title="resample">resample</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-sign" title="im_sign ()">im_sign</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-simcontr" title="im_simcontr ()">im_simcontr</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-sines" title="im_sines ()">im_sines</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-sintra" title="im_sintra ()">im_sintra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-skip-dir" title="im_skip_dir ()">im_skip_dir</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-slist-equal" title="im_slist_equal ()">im_slist_equal</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-slist-filter" title="im_slist_filter ()">im_slist_filter</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-slist-fold2" title="im_slist_fold2 ()">im_slist_fold2</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-slist-free-all" title="im_slist_free_all ()">im_slist_free_all</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-slist-map2" title="im_slist_map2 ()">im_slist_map2</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-slist-map2-rev" title="im_slist_map2_rev ()">im_slist_map2_rev</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-slist-map4" title="im_slist_map4 ()">im_slist_map4</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-smear" title="im_smear ()">im_smear</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-inplace.html#im-smudge" title="im_smudge ()">im_smudge</a>, function in <a class="link" href="libvips-inplace.html" title="inplace">inplace</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-snprintf" title="im_snprintf ()">im_snprintf</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-spatres" title="im_spatres ()">im_spatres</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-convolution.html#im-spcor" title="im_spcor ()">im_spcor</a>, function in <a class="link" href="libvips-convolution.html" title="convolution">convolution</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-sRGB2XYZ" title="im_sRGB2XYZ ()">im_sRGB2XYZ</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-start-fn" title="im_start_fn ()">im_start_fn</a>, user_function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-start-many" title="im_start_many ()">im_start_many</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-start-one" title="im_start_one ()">im_start_one</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()">im_stats</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-stdif" title="im_stdif ()">im_stdif</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-stop-fn" title="im_stop_fn ()">im_stop_fn</a>, user_function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-stop-many" title="im_stop_many ()">im_stop_many</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-stop-one" title="im_stop_one ()">im_stop_one</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-strdup" title="im_strdup ()">im_strdup</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-resample.html#im-stretch3" title="im_stretch3 ()">im_stretch3</a>, function in <a class="link" href="libvips-resample.html" title="resample">resample</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-strncpy" title="im_strncpy ()">im_strncpy</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-strrstr" title="im_strrstr ()">im_strrstr</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-subsample" title="im_subsample ()">im_subsample</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-subtract" title="im_subtract ()">im_subtract</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-system" title="im_system ()">im_system</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-system-image" title="im_system_image ()">im_system_image</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-arithmetic.html#im-tantra" title="im_tantra ()">im_tantra</a>, function in <a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-tbjoin" title="im_tbjoin ()">im_tbjoin</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-tbmerge" title="im_tbmerge ()">im_tbmerge</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-tbmerge1" title="im_tbmerge1 ()">im_tbmerge1</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-tbmosaic" title="im_tbmosaic ()">im_tbmosaic</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mosaicing.html#im-tbmosaic1" title="im_tbmosaic1 ()">im_tbmosaic1</a>, function in <a class="link" href="libvips-mosaicing.html" title="mosaicing">mosaicing</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-text" title="im_text ()">im_text</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-tiff2vips" title="im_tiff2vips ()">im_tiff2vips</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-tile-cache" title="im_tile_cache ()">im_tile_cache</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-tone-analyse" title="im_tone_analyse ()">im_tone_analyse</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-tone-build" title="im_tone_build ()">im_tone_build</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-tone-build-range" title="im_tone_build_range ()">im_tone_build_range</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-histograms-lut.html#im-tone-map" title="im_tone_map ()">im_tone_map</a>, function in <a class="link" href="libvips-histograms-lut.html" title="histograms_lut">histograms_lut</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#Transformation" title="Transformation">Transformation</a>, struct in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-AR:CAPS" title="IM_TYPE_AR()">IM_TYPE_AR</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#IM-TYPE-AREA:CAPS" title="IM_TYPE_AREA">IM_TYPE_AREA</a>, macro in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#IM-TYPE-BLOB:CAPS" title="IM_TYPE_BLOB">IM_TYPE_BLOB</a>, macro in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-COMPLEX:CAPS" title="IM_TYPE_COMPLEX">IM_TYPE_COMPLEX</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-type-desc" title="im_type_desc">im_type_desc</a>, struct in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-DISPLAY:CAPS" title="IM_TYPE_DISPLAY">IM_TYPE_DISPLAY</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-DMASK:CAPS" title="IM_TYPE_DMASK">IM_TYPE_DMASK</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-DOUBLE:CAPS" title="IM_TYPE_DOUBLE">IM_TYPE_DOUBLE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-DOUBLEVEC:CAPS" title="IM_TYPE_DOUBLEVEC">IM_TYPE_DOUBLEVEC</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im-type-flags" title="enum im_type_flags">im_type_flags</a>, enum in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-GVALUE:CAPS" title="IM_TYPE_GVALUE">IM_TYPE_GVALUE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-IM:CAPS" title="IM_TYPE_IM">IM_TYPE_IM</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-IMAGE:CAPS" title="IM_TYPE_IMAGE">IM_TYPE_IMAGE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-IMAGEVEC:CAPS" title="IM_TYPE_IMAGEVEC">IM_TYPE_IMAGEVEC</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-IMASK:CAPS" title="IM_TYPE_IMASK">IM_TYPE_IMASK</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-INT:CAPS" title="IM_TYPE_INT">IM_TYPE_INT</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-INTERPOLATE:CAPS" title="IM_TYPE_INTERPOLATE">IM_TYPE_INTERPOLATE</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-INTVEC:CAPS" title="IM_TYPE_INTVEC">IM_TYPE_INTVEC</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-type-lookup" title="im_type_lookup ()">im_type_lookup</a>, function in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-type-map" title="im_type_map ()">im_type_map</a>, function in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-ARRAY:CAPS" title="IM_TYPE_NAME_ARRAY">IM_TYPE_NAME_ARRAY</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-COMPLEX:CAPS" title="IM_TYPE_NAME_COMPLEX">IM_TYPE_NAME_COMPLEX</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-DISPLAY:CAPS" title="IM_TYPE_NAME_DISPLAY">IM_TYPE_NAME_DISPLAY</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-DMASK:CAPS" title="IM_TYPE_NAME_DMASK">IM_TYPE_NAME_DMASK</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-DOUBLE:CAPS" title="IM_TYPE_NAME_DOUBLE">IM_TYPE_NAME_DOUBLE</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-GVALUE:CAPS" title="IM_TYPE_NAME_GVALUE">IM_TYPE_NAME_GVALUE</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-IMAGE:CAPS" title="IM_TYPE_NAME_IMAGE">IM_TYPE_NAME_IMAGE</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-IMASK:CAPS" title="IM_TYPE_NAME_IMASK">IM_TYPE_NAME_IMASK</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-INT:CAPS" title="IM_TYPE_NAME_INT">IM_TYPE_NAME_INT</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#IM-TYPE-NAME-STRING:CAPS" title="IM_TYPE_NAME_STRING">IM_TYPE_NAME_STRING</a>, macro in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#IM-TYPE-REF-STRING:CAPS" title="IM_TYPE_REF_STRING">IM_TYPE_REF_STRING</a>, macro in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-type-register" title="im_type_register ()">im_type_register</a>, function in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-meta.html#IM-TYPE-SAVE-STRING:CAPS" title="IM_TYPE_SAVE_STRING">IM_TYPE_SAVE_STRING</a>, macro in <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#IM-TYPE-STRING:CAPS" title="IM_TYPE_STRING">IM_TYPE_STRING</a>, macro in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-type-t" title="im_type_t">im_type_t</a>, struct in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-UCS2Lab" title="im_UCS2Lab ()">im_UCS2Lab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-UCS2LCh" title="im_UCS2LCh ()">im_UCS2LCh</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-UCS2XYZ" title="im_UCS2XYZ ()">im_UCS2XYZ</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#IM-UNROLL:CAPS" title="IM_UNROLL()">IM_UNROLL</a>, macro in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-header.html#im-updatehist" title="im_updatehist ()">im_updatehist</a>, function in <a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-value-array-t" title="im_value_array_t">im_value_array_t</a>, struct in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-value-mask-t" title="im_value_mask_t">im_value_mask_t</a>, struct in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-type.html#im-value-t" title="im_value_t">im_value_t</a>, typedef in <a class="link" href="libvips-type.html" title="type">type</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-vdiag" title="im_vdiag ()">im_vdiag</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-verror" title="im_verror ()">im_verror</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-verror-system" title="im_verror_system ()">im_verror_system</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-version.html#IM-VERSION:CAPS" title="IM_VERSION">IM_VERSION</a>, macro in <a class="link" href="libvips-version.html" title="version">version</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-version" title="im_version ()">im_version</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#im-version-string" title="im_version_string ()">im_version_string</a>, function in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-version.html#IM-VERSION-STRING:CAPS" title="IM_VERSION_STRING">IM_VERSION_STRING</a>, macro in <a class="link" href="libvips-version.html" title="version">version</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-video.html#im-video-test" title="im_video_test ()">im_video_test</a>, function in <a class="link" href="libvips-video.html" title="video">video</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-video.html#im-video-v4l1" title="im_video_v4l1 ()">im_video_v4l1</a>, function in <a class="link" href="libvips-video.html" title="video">video</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-vips2bufjpeg" title="im_vips2bufjpeg ()">im_vips2bufjpeg</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-vips2csv" title="im_vips2csv ()">im_vips2csv</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-vips2jpeg" title="im_vips2jpeg ()">im_vips2jpeg</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-vips2mask" title="im_vips2mask ()">im_vips2mask</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-vips2mimejpeg" title="im_vips2mimejpeg ()">im_vips2mimejpeg</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-vips2png" title="im_vips2png ()">im_vips2png</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-vips2ppm" title="im_vips2ppm ()">im_vips2ppm</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-vips2rad" title="im_vips2rad ()">im_vips2rad</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-vips2raw" title="im_vips2raw ()">im_vips2raw</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#im-vips2tiff" title="im_vips2tiff ()">im_vips2tiff</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsArgument" title="VipsArgument">VipsArgument</a>, struct in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsArgumentClass" title="VipsArgumentClass">VipsArgumentClass</a>, struct in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsArgumentFlags" title="enum VipsArgumentFlags">VipsArgumentFlags</a>, enum in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsArgumentInstance" title="VipsArgumentInstance">VipsArgumentInstance</a>, struct in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsArgumentMapFn" title="VipsArgumentMapFn ()">VipsArgumentMapFn</a>, user_function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsArgumentTable" title="VipsArgumentTable">VipsArgumentTable</a>, typedef in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt">VipsBandFmt</a>, enum in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf">VipsBuf</a>, struct in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#VipsClassMap" title="VipsClassMap ()">VipsClassMap</a>, user_function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#VipsCoding" title="enum VipsCoding">VipsCoding</a>, enum in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#VipsDemandStyle" title="enum VipsDemandStyle">VipsDemandStyle</a>, enum in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#VipsFormat-struct" title="VipsFormat">VipsFormat</a>, struct in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#VipsImage" title="VipsImage">VipsImage</a>, struct in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent">VipsIntent</a>, enum in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#VipsInterpolate-struct" title="VipsInterpolate">VipsInterpolate</a>, struct in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-freq-filt.html#VipsMaskType" title="enum VipsMaskType">VipsMaskType</a>, enum in <a class="link" href="libvips-freq-filt.html" title="freq_filt">freq_filt</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsObject-struct" title="VipsObject">VipsObject</a>, struct in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsObject--description" title='The "description" property'>VipsObject:description</a>, object property in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsObject--nickname" title='The "nickname" property'>VipsObject:nickname</a>, object property in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass">VipsObjectClass</a>, struct in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VipsObjectSetArguments" title="VipsObjectSetArguments ()">VipsObjectSetArguments</a>, user_function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#VipsProgress" title="VipsProgress">VipsProgress</a>, struct in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#VipsThreadState-struct" title="VipsThreadState">VipsThreadState</a>, struct in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#VipsToken" title="enum VipsToken">VipsToken</a>, enum in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-image.html#VipsType" title="enum VipsType">VipsType</a>, enum in <a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#VipsTypeMap" title="VipsTypeMap ()">VipsTypeMap</a>, user_function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#VipsTypeMap2" title="VipsTypeMap2 ()">VipsTypeMap2</a>, user_function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-argument-map" title="vips_argument_map ()">vips_argument_map</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-INPUT:CAPS" title="VIPS_ARGUMENT_OPTIONAL_INPUT">VIPS_ARGUMENT_OPTIONAL_INPUT</a>, macro in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-OUTPUT:CAPS" title="VIPS_ARGUMENT_OPTIONAL_OUTPUT">VIPS_ARGUMENT_OPTIONAL_OUTPUT</a>, macro in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-INPUT:CAPS" title="VIPS_ARGUMENT_REQUIRED_INPUT">VIPS_ARGUMENT_REQUIRED_INPUT</a>, macro in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-OUTPUT:CAPS" title="VIPS_ARGUMENT_REQUIRED_OUTPUT">VIPS_ARGUMENT_REQUIRED_OUTPUT</a>, macro in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#vips-bandfmt-iscomplex" title="vips_bandfmt_iscomplex ()">vips_bandfmt_iscomplex</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#vips-bandfmt-isfloat" title="vips_bandfmt_isfloat ()">vips_bandfmt_isfloat</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#vips-bandfmt-isint" title="vips_bandfmt_isint ()">vips_bandfmt_isint</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-check.html#vips-bandfmt-isuint" title="vips_bandfmt_isuint ()">vips_bandfmt_isuint</a>, function in <a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-all" title="vips_buf_all ()">vips_buf_all</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-appendc" title="vips_buf_appendc ()">vips_buf_appendc</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-appendd" title="vips_buf_appendd ()">vips_buf_appendd</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-appendf" title="vips_buf_appendf ()">vips_buf_appendf</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-appendg" title="vips_buf_appendg ()">vips_buf_appendg</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-appendgv" title="vips_buf_appendgv ()">vips_buf_appendgv</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-appendns" title="vips_buf_appendns ()">vips_buf_appendns</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-appends" title="vips_buf_appends ()">vips_buf_appends</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-appendsc" title="vips_buf_appendsc ()">vips_buf_appendsc</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-change" title="vips_buf_change ()">vips_buf_change</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-destroy" title="vips_buf_destroy ()">vips_buf_destroy</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-firstline" title="vips_buf_firstline ()">vips_buf_firstline</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-init" title="vips_buf_init ()">vips_buf_init</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-init-dynamic" title="vips_buf_init_dynamic ()">vips_buf_init_dynamic</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-init-static" title="vips_buf_init_static ()">vips_buf_init_static</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-is-empty" title="vips_buf_is_empty ()">vips_buf_is_empty</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-is-full" title="vips_buf_is_full ()">vips_buf_is_full</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-len" title="vips_buf_len ()">vips_buf_len</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-removec" title="vips_buf_removec ()">vips_buf_removec</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-rewind" title="vips_buf_rewind ()">vips_buf_rewind</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-set-dynamic" title="vips_buf_set_dynamic ()">vips_buf_set_dynamic</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-set-static" title="vips_buf_set_static ()">vips_buf_set_static</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#VIPS-BUF-STATIC:CAPS" title="VIPS_BUF_STATIC()">VIPS_BUF_STATIC</a>, macro in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-buf.html#vips-buf-vappendf" title="vips_buf_vappendf ()">vips_buf_vappendf</a>, function in <a class="link" href="libvips-buf.html" title="buf">buf</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#vips-class-find" title="vips_class_find ()">vips_class_find</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#vips-class-map-concrete-all" title="vips_class_map_concrete_all ()">vips_class_map_concrete_all</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#vips-format-for-file" title="vips_format_for_file ()">vips_format_for_file</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#vips-format-for-name" title="vips_format_for_name ()">vips_format_for_name</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#vips-format-get-flags" title="vips_format_get_flags ()">vips_format_get_flags</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#vips-format-map" title="vips_format_map ()">vips_format_map</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#vips-format-read" title="vips_format_read ()">vips_format_read</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsFormat.html#vips-format-write" title="vips_format_write ()">vips_format_write</a>, function in <a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#vips-get-tile-size" title="vips_get_tile_size ()">vips_get_tile_size</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#vips-interpolate" title="vips_interpolate ()">vips_interpolate</a>, function in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#vips-interpolate-bicubic-static" title="vips_interpolate_bicubic_static ()">vips_interpolate_bicubic_static</a>, function in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#vips-interpolate-bilinear-static" title="vips_interpolate_bilinear_static ()">vips_interpolate_bilinear_static</a>, function in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#vips-interpolate-get-method" title="vips_interpolate_get_method ()">vips_interpolate_get_method</a>, function in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#vips-interpolate-get-window-offset" title="vips_interpolate_get_window_offset ()">vips_interpolate_get_window_offset</a>, function in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#vips-interpolate-get-window-size" title="vips_interpolate_get_window_size ()">vips_interpolate_get_window_size</a>, function in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#vips-interpolate-nearest-static" title="vips_interpolate_nearest_static ()">vips_interpolate_nearest_static</a>, function in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#vips-interpolate-new" title="vips_interpolate_new ()">vips_interpolate_new</a>, function in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#VIPS-INTERPOLATE-SCALE:CAPS" title="VIPS_INTERPOLATE_SCALE">VIPS_INTERPOLATE_SCALE</a>, macro in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#VIPS-INTERPOLATE-SHIFT:CAPS" title="VIPS_INTERPOLATE_SHIFT">VIPS_INTERPOLATE_SHIFT</a>, macro in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-object-build" title="vips_object_build ()">vips_object_build</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-object-class-install-argument" title="vips_object_class_install_argument ()">vips_object_class_install_argument</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-object-get-property" title="vips_object_get_property ()">vips_object_get_property</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-object-new" title="vips_object_new ()">vips_object_new</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-object-new-from-string" title="vips_object_new_from_string ()">vips_object_new_from_string</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-object-print" title="vips_object_print ()">vips_object_print</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-object-print-class" title="vips_object_print_class ()">vips_object_print_class</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-object-set-property" title="vips_object_set_property ()">vips_object_set_property</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips-object-to-string" title="vips_object_to_string ()">vips_object_to_string</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#vips-sink" title="vips_sink ()">vips_sink</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#vips-sink-disc" title="vips_sink_disc ()">vips_sink_disc</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#vips-sink-memory" title="vips_sink_memory ()">vips_sink_memory</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#vips-sink-screen" title="vips_sink_screen ()">vips_sink_screen</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#vips-sink-tile" title="vips_sink_tile ()">vips_sink_tile</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()">vips_threadpool_run</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#vips-thread-state-new" title="vips_thread_state_new ()">vips_thread_state_new</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#vips-thread-state-set" title="vips_thread_state_set ()">vips_thread_state_set</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#VIPS-TRANSFORM-SCALE:CAPS" title="VIPS_TRANSFORM_SCALE">VIPS_TRANSFORM_SCALE</a>, macro in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#VIPS-TRANSFORM-SHIFT:CAPS" title="VIPS_TRANSFORM_SHIFT">VIPS_TRANSFORM_SHIFT</a>, macro in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#vips-type-find" title="vips_type_find ()">vips_type_find</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#vips-type-map" title="vips_type_map ()">vips_type_map</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#vips-type-map-concrete-all" title="vips_type_map_concrete_all ()">vips_type_map_concrete_all</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips--argument-get-instance" title="vips__argument_get_instance ()">vips__argument_get_instance</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-VipsArgument.html#vips--argument-table-lookup" title="vips__argument_table_lookup ()">vips__argument_table_lookup</a>, function in <a class="link" href="libvips-VipsArgument.html" title="VipsArgument">VipsArgument</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsInterpolate.html#vips--interpolate-init" title="vips__interpolate_init ()">vips__interpolate_init</a>, function in <a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#vips--token-get" title="vips__token_get ()">vips__token_get</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#vips--token-must" title="vips__token_must ()">vips__token_must</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#vips--token-need" title="vips__token_need ()">vips__token_need</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#VSListFold2Fn" title="VSListFold2Fn ()">VSListFold2Fn</a>, user_function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()">VSListMap2Fn</a>, user_function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#VSListMap4Fn" title="VSListMap4Fn ()">VSListMap4Fn</a>, user_function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im-vsnprintf" title="im_vsnprintf ()">im_vsnprintf</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-vwarn" title="im_vwarn ()">im_vwarn</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-error.html#im-warn" title="im_warn ()">im_warn</a>, function in <a class="link" href="libvips-error.html" title="error">error</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-wrap" title="im_wrap ()">im_wrap</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-wrapmany" title="im_wrapmany ()">im_wrapmany</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-wrapmany-fn" title="im_wrapmany_fn ()">im_wrapmany_fn</a>, user_function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-wrapone" title="im_wrapone ()">im_wrapone</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-wrapone-fn" title="im_wrapone_fn ()">im_wrapone_fn</a>, user_function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-wraptwo" title="im_wraptwo ()">im_wraptwo</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-wraptwo-fn" title="im_wraptwo_fn ()">im_wraptwo_fn</a>, user_function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-generate.html#im-writeline" title="im_writeline ()">im_writeline</a>, function in <a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-write-dmask" title="im_write_dmask ()">im_write_dmask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-write-dmask-name" title="im_write_dmask_name ()">im_write_dmask_name</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-write-imask" title="im_write_imask ()">im_write_imask</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-mask.html#im-write-imask-name" title="im_write_imask_name ()">im_write_imask_name</a>, function in <a class="link" href="libvips-mask.html" title="mask">mask</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-XYZ2Lab" title="im_XYZ2Lab ()">im_XYZ2Lab</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-XYZ2Lab-temp" title="im_XYZ2Lab_temp ()">im_XYZ2Lab_temp</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-XYZ2sRGB" title="im_XYZ2sRGB ()">im_XYZ2sRGB</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-XYZ2UCS" title="im_XYZ2UCS ()">im_XYZ2UCS</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-XYZ2Yxy" title="im_XYZ2Yxy ()">im_XYZ2Yxy</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-colour.html#im-Yxy2XYZ" title="im_Yxy2XYZ ()">im_Yxy2XYZ</a>, function in <a class="link" href="libvips-colour.html" title="colour">colour</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-morphology.html#im-zerox" title="im_zerox ()">im_zerox</a>, function in <a class="link" href="libvips-morphology.html" title="morphology">morphology</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-other.html#im-zone" title="im_zone ()">im_zone</a>, function in <a class="link" href="libvips-other.html" title="other">other</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-conversion.html#im-zoom" title="im_zoom ()">im_zoom</a>, function in <a class="link" href="libvips-conversion.html" title="conversion">conversion</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--affine" title="im__affine ()">im__affine</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im--break-token" title="im__break_token ()">im__break_token</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--cprint" title="im__cprint ()">im__cprint</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--displayprint" title="im__displayprint ()">im__displayprint</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--dmsprint" title="im__dmsprint ()">im__dmsprint</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--dprint" title="im__dprint ()">im__dprint</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--dvprint" title="im__dvprint ()">im__dvprint</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im--file-open-read" title="im__file_open_read ()">im__file_open_read</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im--file-open-write" title="im__file_open_write ()">im__file_open_write</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im--file-read" title="im__file_read ()">im__file_read</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im--file-read-name" title="im__file_read_name ()">im__file_read_name</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im--file-write" title="im__file_write ()">im__file_write</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--gprint" title="im__gprint ()">im__gprint</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-display" title="im__input_display">im__input_display</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-dmask" title="im__input_dmask">im__input_dmask</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-double" title="im__input_double">im__input_double</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-doublevec" title="im__input_doublevec">im__input_doublevec</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-gvalue" title="im__input_gvalue">im__input_gvalue</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-image" title="im__input_image">im__input_image</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-imagevec" title="im__input_imagevec">im__input_imagevec</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-imask" title="im__input_imask">im__input_imask</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-int" title="im__input_int">im__input_int</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-interpolate" title="im__input_interpolate">im__input_interpolate</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-intvec" title="im__input_intvec">im__input_intvec</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--input-string" title="im__input_string">im__input_string</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--iprint" title="im__iprint ()">im__iprint</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--ivprint" title="im__ivprint ()">im__ivprint</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im--open-temp" title="im__open_temp ()">im__open_temp</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-complex" title="im__output_complex">im__output_complex</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-display" title="im__output_display">im__output_display</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-dmask" title="im__output_dmask">im__output_dmask</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-dmask-screen" title="im__output_dmask_screen">im__output_dmask_screen</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-double" title="im__output_double">im__output_double</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-doublevec" title="im__output_doublevec">im__output_doublevec</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-gvalue" title="im__output_gvalue">im__output_gvalue</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-image" title="im__output_image">im__output_image</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-imask" title="im__output_imask">im__output_imask</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-int" title="im__output_int">im__output_int</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-intvec" title="im__output_intvec">im__output_intvec</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--output-string" title="im__output_string">im__output_string</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="VipsThreadState.html#im--print-renders" title="im__print_renders ()">im__print_renders</a>, function in <a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--rw-image" title="im__rw_image">im__rw_image</a>, variable in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-dispatch.html#im--sprint" title="im__sprint ()">im__sprint</a>, function in <a class="link" href="libvips-dispatch.html" title="dispatch">dispatch</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im--temp-name" title="im__temp_name ()">im__temp_name</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-add" title="im__transform_add ()">im__transform_add</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-calc-inverse" title="im__transform_calc_inverse ()">im__transform_calc_inverse</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-forward-point" title="im__transform_forward_point ()">im__transform_forward_point</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-forward-rect" title="im__transform_forward_rect ()">im__transform_forward_rect</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-init" title="im__transform_init ()">im__transform_init</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-invert-point" title="im__transform_invert_point ()">im__transform_invert_point</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-invert-rect" title="im__transform_invert_rect ()">im__transform_invert_rect</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-isidentity" title="im__transform_isidentity ()">im__transform_isidentity</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-print" title="im__transform_print ()">im__transform_print</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-transform.html#im--transform-set-area" title="im__transform_set_area ()">im__transform_set_area</a>, function in <a class="link" href="libvips-transform.html" title="transform">transform</a>
doc/reference/html/api-index-full.html:<a class="link" href="libvips-util.html#im--write" title="im__write ()">im__write</a>, function in <a class="link" href="libvips-util.html" title="util">util</a>
doc/reference/html/api-index-full.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-mask.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-mask.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-mask.html:<link rel="prev" href="libvips-resample.html" title="resample">
doc/reference/html/libvips-mask.html:<link rel="next" href="libvips-inplace.html" title="inplace">
doc/reference/html/libvips-mask.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-mask.html:<td><a accesskey="p" href="libvips-resample.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-mask.html:<td><a accesskey="n" href="libvips-inplace.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-mask.html:<a href="#libvips-mask.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-mask.html:                  <a href="#libvips-mask.description" class="shortcut">Description</a>
doc/reference/html/libvips-mask.html:<a name="libvips-mask"></a><div class="titlepage"></div>
doc/reference/html/libvips-mask.html:<h2><span class="refentrytitle"><a name="libvips-mask.top_of_page"></a>mask</span></h2>
doc/reference/html/libvips-mask.html:<a name="libvips-mask.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-mask.html:<a name="libvips-mask.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-mask.html:                    <a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK">INTMASK</a>;
doc/reference/html/libvips-mask.html:                    <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK">DOUBLEMASK</a>;
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-create-imask" title="im_create_imask ()">im_create_imask</a>                     (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-create-imaskv" title="im_create_imaskv ()">im_create_imaskv</a>                    (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-create-dmask" title="im_create_dmask ()">im_create_dmask</a>                     (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-create-dmaskv" title="im_create_dmaskv ()">im_create_dmaskv</a>                    (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-read-imask" title="im_read_imask ()">im_read_imask</a>                       (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-read-dmask" title="im_read_dmask ()">im_read_dmask</a>                       (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
doc/reference/html/libvips-mask.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-mask.html#im-print-imask" title="im_print_imask ()">im_print_imask</a>                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);
doc/reference/html/libvips-mask.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-mask.html#im-print-dmask" title="im_print_dmask ()">im_print_dmask</a>                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>);
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mask.html#im-write-imask" title="im_write_imask ()">im_write_imask</a>                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mask.html#im-write-dmask" title="im_write_dmask ()">im_write_dmask</a>                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>);
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mask.html#im-write-imask-name" title="im_write_imask_name ()">im_write_imask_name</a>                 (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mask.html#im-write-dmask-name" title="im_write_dmask_name ()">im_write_dmask_name</a>                 (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mask.html#im-free-imask" title="im_free_imask ()">im_free_imask</a>                       (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mask.html#im-free-dmask" title="im_free_dmask ()">im_free_dmask</a>                       (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>);
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-log-imask" title="im_log_imask ()">im_log_imask</a>                        (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-log-dmask" title="im_log_dmask ()">im_log_dmask</a>                        (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-gauss-imask" title="im_gauss_imask ()">im_gauss_imask</a>                      (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-gauss-imask-sep" title="im_gauss_imask_sep ()">im_gauss_imask_sep</a>                  (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-gauss-dmask" title="im_gauss_dmask ()">im_gauss_dmask</a>                      (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-dup-imask" title="im_dup_imask ()">im_dup_imask</a>                        (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-dup-dmask" title="im_dup_dmask ()">im_dup_dmask</a>                        (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-scale-dmask" title="im_scale_dmask ()">im_scale_dmask</a>                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-mask.html#im-norm-dmask" title="im_norm_dmask ()">im_norm_dmask</a>                       (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span> *               <a class="link" href="libvips-mask.html#im-offsets45" title="im_offsets45 ()">im_offsets45</a>                        (<em class="parameter"><code><span class="type">int</span> size</code></em>);
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span> *               <a class="link" href="libvips-mask.html#im-offsets90" title="im_offsets90 ()">im_offsets90</a>                        (<em class="parameter"><code><span class="type">int</span> size</code></em>);
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-rotate-imask90" title="im_rotate_imask90 ()">im_rotate_imask90</a>                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-rotate-imask45" title="im_rotate_imask45 ()">im_rotate_imask45</a>                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-rotate-dmask90" title="im_rotate_dmask90 ()">im_rotate_dmask90</a>                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-rotate-dmask45" title="im_rotate_dmask45 ()">im_rotate_dmask45</a>                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-mattrn" title="im_mattrn ()">im_mattrn</a>                           (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-matcat" title="im_matcat ()">im_matcat</a>                           (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in1</code></em>,
doc/reference/html/libvips-mask.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in2</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-matmul" title="im_matmul ()">im_matmul</a>                           (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in1</code></em>,
doc/reference/html/libvips-mask.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in2</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-lu-decomp" title="im_lu_decomp ()">im_lu_decomp</a>                        (<em class="parameter"><code>const <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mat</code></em>,
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mask.html#im-lu-solve" title="im_lu_solve ()">im_lu_solve</a>                         (<em class="parameter"><code>const <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *lu</code></em>,
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-matinv" title="im_matinv ()">im_matinv</a>                           (<em class="parameter"><code>const <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mat</code></em>,
doc/reference/html/libvips-mask.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-mask.html#im-matinv-inplace" title="im_matinv_inplace ()">im_matinv_inplace</a>                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mat</code></em>);
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-mask.html#im-local-dmask" title="im_local_dmask ()">im_local_dmask</a>                      (<em class="parameter"><code><span class="type">struct _VipsImage</span> *out</code></em>,
doc/reference/html/libvips-mask.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-mask.html:<a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           <a class="link" href="libvips-mask.html#im-local-imask" title="im_local_imask ()">im_local_imask</a>                      (<em class="parameter"><code><span class="type">struct _VipsImage</span> *out</code></em>,
doc/reference/html/libvips-mask.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-mask.html:<a name="libvips-mask.description"></a><h2>Description</h2>
doc/reference/html/libvips-mask.html:<a name="libvips-mask.details"></a><h2>Details</h2>
doc/reference/html/libvips-mask.html:<a name="im-create-imask"></a><h3>im_create_imask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_create_imask                     (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-create-imaskv"></a><h3>im_create_imaskv ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_create_imaskv                    (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-create-dmask"></a><h3>im_create_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_create_dmask                     (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-create-dmaskv"></a><h3>im_create_dmaskv ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_create_dmaskv                    (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-read-imask"></a><h3>im_read_imask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_read_imask                       (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-read-dmask"></a><h3>im_read_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_read_dmask                       (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-print-imask"></a><h3>im_print_imask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_print_imask                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-print-dmask"></a><h3>im_print_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_print_dmask                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-write-imask"></a><h3>im_write_imask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_write_imask                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-write-dmask"></a><h3>im_write_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_write_dmask                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-write-imask-name"></a><h3>im_write_imask_name ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_write_imask_name                 (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-write-dmask-name"></a><h3>im_write_dmask_name ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_write_dmask_name                 (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-free-imask"></a><h3>im_free_imask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_free_imask                       (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-free-dmask"></a><h3>im_free_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_free_dmask                       (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-log-imask"></a><h3>im_log_imask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_log_imask                        (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-log-dmask"></a><h3>im_log_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_log_dmask                        (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-gauss-imask"></a><h3>im_gauss_imask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_gauss_imask                      (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-gauss-imask-sep"></a><h3>im_gauss_imask_sep ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_gauss_imask_sep                  (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-gauss-dmask"></a><h3>im_gauss_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_gauss_dmask                      (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-dup-imask"></a><h3>im_dup_imask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_dup_imask                        (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-dup-dmask"></a><h3>im_dup_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_dup_dmask                        (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-scale-dmask"></a><h3>im_scale_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_scale_dmask                      (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-norm-dmask"></a><h3>im_norm_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_norm_dmask                       (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-offsets45"></a><h3>im_offsets45 ()</h3>
doc/reference/html/libvips-mask.html:<a name="im-offsets90"></a><h3>im_offsets90 ()</h3>
doc/reference/html/libvips-mask.html:<a name="im-rotate-imask90"></a><h3>im_rotate_imask90 ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_rotate_imask90                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-rotate-imask45"></a><h3>im_rotate_imask45 ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_rotate_imask45                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-rotate-dmask90"></a><h3>im_rotate_dmask90 ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_rotate_dmask90                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-rotate-dmask45"></a><h3>im_rotate_dmask45 ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_rotate_dmask45                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *m</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-mattrn"></a><h3>im_mattrn ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_mattrn                           (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-matcat"></a><h3>im_matcat ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_matcat                           (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in1</code></em>,
doc/reference/html/libvips-mask.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in2</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-matmul"></a><h3>im_matmul ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_matmul                           (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in1</code></em>,
doc/reference/html/libvips-mask.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in2</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-lu-decomp"></a><h3>im_lu_decomp ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_lu_decomp                        (<em class="parameter"><code>const <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mat</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-lu-solve"></a><h3>im_lu_solve ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_lu_solve                         (<em class="parameter"><code>const <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *lu</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-matinv"></a><h3>im_matinv ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_matinv                           (<em class="parameter"><code>const <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mat</code></em>,
doc/reference/html/libvips-mask.html:<a name="im-matinv-inplace"></a><h3>im_matinv_inplace ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_matinv_inplace                   (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mat</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-local-dmask"></a><h3>im_local_dmask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_local_dmask                      (<em class="parameter"><code><span class="type">struct _VipsImage</span> *out</code></em>,
doc/reference/html/libvips-mask.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-mask.html:<a name="im-local-imask"></a><h3>im_local_imask ()</h3>
doc/reference/html/libvips-mask.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="returnvalue">INTMASK</span></a> *           im_local_imask                      (<em class="parameter"><code><span class="type">struct _VipsImage</span> *out</code></em>,
doc/reference/html/libvips-mask.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-mask.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-header.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-header.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-header.html:<link rel="prev" href="libvips-image.html" title="image">
doc/reference/html/libvips-header.html:<link rel="next" href="libvips-check.html" title="check">
doc/reference/html/libvips-header.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-header.html:<td><a accesskey="p" href="libvips-image.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-header.html:<td><a accesskey="n" href="libvips-check.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-header.html:<a href="#libvips-header.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-header.html:                  <a href="#libvips-header.description" class="shortcut">Description</a>
doc/reference/html/libvips-header.html:<a name="libvips-header"></a><div class="titlepage"></div>
doc/reference/html/libvips-header.html:<h2><span class="refentrytitle"><a name="libvips-header.top_of_page"></a>header</span></h2>
doc/reference/html/libvips-header.html:<a name="libvips-header.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-header.html:<a name="libvips-header.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-header.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-header.html#im-header-int" title="im_header_int ()">im_header_int</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-header.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-header.html#im-header-double" title="im_header_double ()">im_header_double</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-header.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-header.html#im-header-string" title="im_header_string ()">im_header_string</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-header.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-header.html#im-header-as-string" title="im_header_as_string ()">im_header_as_string</a>                 (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-header.html:<span class="returnvalue">GType</span>               <a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()">im_header_get_typeof</a>                (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-header.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-header.html#im-header-get" title="im_header_get ()">im_header_get</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-header.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-header.html#im-header-map-fn" title="im_header_map_fn ()">*im_header_map_fn</a>)                 (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-header.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-header.html#im-header-map" title="im_header_map ()">im_header_map</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-header.html:                                                         <em class="parameter"><code><a class="link" href="libvips-header.html#im-header-map-fn" title="im_header_map_fn ()"><span class="type">im_header_map_fn</span></a> fn</code></em>,
doc/reference/html/libvips-header.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-header.html#im-histlin" title="im_histlin ()">im_histlin</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *image</code></em>,
doc/reference/html/libvips-header.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-header.html#im-updatehist" title="im_updatehist ()">im_updatehist</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-header.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-header.html#im-history-get" title="im_history_get ()">im_history_get</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-header.html:<a name="libvips-header.description"></a><h2>Description</h2>
doc/reference/html/libvips-header.html:fields (see <a class="link" href="libvips-image.html" title="image">image</a>), then search for 
doc/reference/html/libvips-header.html:<a class="link" href="libvips-meta.html" title="meta">meta</a>).
doc/reference/html/libvips-header.html:Use <a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()"><code class="function">im_header_get_typeof()</code></a> to test for the 
doc/reference/html/libvips-header.html:See <a class="link" href="libvips-meta.html" title="meta">meta</a>
doc/reference/html/libvips-header.html:<a name="libvips-header.details"></a><h2>Details</h2>
doc/reference/html/libvips-header.html:<a name="im-header-int"></a><h3>im_header_int ()</h3>
doc/reference/html/libvips-header.html:int-valued fields.
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-header-get" title="im_header_get ()"><code class="function">im_header_get()</code></a>, <a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()"><code class="function">im_header_get_typeof()</code></a>
doc/reference/html/libvips-header.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-header.html:<a name="im-header-double"></a><h3>im_header_double ()</h3>
doc/reference/html/libvips-header.html:double-valued fields.
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-header-get" title="im_header_get ()"><code class="function">im_header_get()</code></a>, <a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()"><code class="function">im_header_get_typeof()</code></a>
doc/reference/html/libvips-header.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-header.html:<a name="im-header-string"></a><h3>im_header_string ()</h3>
doc/reference/html/libvips-header.html:string-valued fields.
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-header-get" title="im_header_get ()"><code class="function">im_header_get()</code></a>, <a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()"><code class="function">im_header_get_typeof()</code></a>
doc/reference/html/libvips-header.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-header.html:<a name="im-header-as-string"></a><h3>im_header_as_string ()</h3>
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-header-get" title="im_header_get ()"><code class="function">im_header_get()</code></a>, <a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()"><code class="function">im_header_get_typeof()</code></a>.
doc/reference/html/libvips-header.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-header.html:<a name="im-header-get-typeof"></a><h3>im_header_get_typeof ()</h3>
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-header-get" title="im_header_get ()"><code class="function">im_header_get()</code></a>.
doc/reference/html/libvips-header.html:<a name="im-header-get"></a><h3>im_header_get ()</h3>
doc/reference/html/libvips-header.html:This will return -1 and add a message to the error buffer if the field
doc/reference/html/libvips-header.html:does not exist. Use <a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()"><code class="function">im_header_get_typeof()</code></a> to test for the 
doc/reference/html/libvips-header.html:<a class="link" href="libvips-header.html#im-header-double" title="im_header_double ()"><code class="function">im_header_double()</code></a> in practice):
doc/reference/html/libvips-header.html:  return( -1 );
doc/reference/html/libvips-header.html:  return( -1 );
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()"><code class="function">im_header_get_typeof()</code></a>, <a class="link" href="libvips-header.html#im-header-double" title="im_header_double ()"><code class="function">im_header_double()</code></a>.
doc/reference/html/libvips-header.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-header.html:<a name="im-header-map-fn"></a><h3>im_header_map_fn ()</h3>
doc/reference/html/libvips-header.html:<a name="im-header-map"></a><h3>im_header_map ()</h3>
doc/reference/html/libvips-header.html:                                                         <em class="parameter"><code><a class="link" href="libvips-header.html#im-header-map-fn" title="im_header_map_fn ()"><span class="type">im_header_map_fn</span></a> fn</code></em>,
doc/reference/html/libvips-header.html:iteration, or a non-<code class="literal">NULL</code> pointer to indicate early termination.
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-header-get-typeof" title="im_header_get_typeof ()"><code class="function">im_header_get_typeof()</code></a>, <a class="link" href="libvips-header.html#im-header-get" title="im_header_get ()"><code class="function">im_header_get()</code></a>.
doc/reference/html/libvips-header.html:<a name="im-histlin"></a><h3>im_histlin ()</h3>
doc/reference/html/libvips-header.html:im_histlin( im, "vips im_invert %s %s", in-&gt;filename, out-&gt;filename );
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-updatehist" title="im_updatehist ()"><code class="function">im_updatehist()</code></a>.
doc/reference/html/libvips-header.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-header.html:<a name="im-updatehist"></a><h3>im_updatehist ()</h3>
doc/reference/html/libvips-header.html:Formats the name/argv as a single string and calls <a class="link" href="libvips-header.html#im-histlin" title="im_histlin ()"><code class="function">im_histlin()</code></a>. A
doc/reference/html/libvips-header.html:convenience function for command-line prorams.
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-history-get" title="im_history_get ()"><code class="function">im_history_get()</code></a>.
doc/reference/html/libvips-header.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-header.html:<a name="im-history-get"></a><h3>im_history_get ()</h3>
doc/reference/html/libvips-header.html:<a class="link" href="libvips-header.html#im-histlin" title="im_histlin ()"><code class="function">im_histlin()</code></a> for each action they perform setting the command-line
doc/reference/html/libvips-header.html:See also: <a class="link" href="libvips-header.html#im-histlin" title="im_histlin ()"><code class="function">im_histlin()</code></a>.
doc/reference/html/libvips-header.html:<a name="libvips-header.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-header.html:<a class="link" href="libvips-meta.html" title="meta">meta</a>,
doc/reference/html/libvips-header.html:<a class="link" href="libvips-check.html" title="check">check</a>
doc/reference/html/libvips-header.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/object-tree.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/object-tree.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/object-tree.html:<link rel="prev" href="libvips-dispatch.html" title="dispatch">
doc/reference/html/object-tree.html:<link rel="next" href="api-index-full.html" title="API Index">
doc/reference/html/object-tree.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/object-tree.html:<td><a accesskey="p" href="libvips-dispatch.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/object-tree.html:<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/object-tree.html:<a name="object-tree"></a>Object Hierarchy</h2></div></div></div>
doc/reference/html/object-tree.html:        <a class="link" href="libvips-VipsArgument.html#VipsObject">VipsObject</a>
doc/reference/html/object-tree.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-util.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-util.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-util.html:<link rel="prev" href="libvips-transform.html" title="transform">
doc/reference/html/libvips-util.html:<link rel="next" href="libvips-version.html" title="version">
doc/reference/html/libvips-util.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-util.html:<td><a accesskey="p" href="libvips-transform.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-util.html:<td><a accesskey="n" href="libvips-version.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-util.html:<a href="#libvips-util.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-util.html:                  <a href="#libvips-util.description" class="shortcut">Description</a>
doc/reference/html/libvips-util.html:<a name="libvips-util"></a><div class="titlepage"></div>
doc/reference/html/libvips-util.html:<h2><span class="refentrytitle"><a name="libvips-util.top_of_page"></a>util</span></h2>
doc/reference/html/libvips-util.html:<a name="libvips-util.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-util.html:<pre class="synopsis">#define             <a class="link" href="libvips-util.html#IM-PI:CAPS" title="IM_PI">IM_PI</a>
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-RAD:CAPS" title="IM_RAD()">IM_RAD</a>                              (r)
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-DEG:CAPS" title="IM_DEG()">IM_DEG</a>                              (a)
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-MAX:CAPS" title="IM_MAX()">IM_MAX</a>                              (A,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-MIN:CAPS" title="IM_MIN()">IM_MIN</a>                              (A,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-ABS:CAPS" title="IM_ABS()">IM_ABS</a>                              (x)
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-CLIP:CAPS" title="IM_CLIP()">IM_CLIP</a>                             (A,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-NUMBER:CAPS" title="IM_NUMBER()">IM_NUMBER</a>                           (R)
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-FREEF:CAPS" title="IM_FREEF()">IM_FREEF</a>                            (F,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-FREE:CAPS" title="IM_FREE()">IM_FREE</a>                             (S)
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-SETSTR:CAPS" title="IM_SETSTR()">IM_SETSTR</a>                           (S,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-UNROLL:CAPS" title="IM_UNROLL()">IM_UNROLL</a>                           (N,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-RINT:CAPS" title="IM_RINT()">IM_RINT</a>                             (R)
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-CLIP-UCHAR:CAPS" title="IM_CLIP_UCHAR()">IM_CLIP_UCHAR</a>                       (V,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-CLIP-USHORT:CAPS" title="IM_CLIP_USHORT()">IM_CLIP_USHORT</a>                      (V,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-CLIP-CHAR:CAPS" title="IM_CLIP_CHAR()">IM_CLIP_CHAR</a>                        (V,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-CLIP-SHORT:CAPS" title="IM_CLIP_SHORT()">IM_CLIP_SHORT</a>                       (V,
doc/reference/html/libvips-util.html:#define             <a class="link" href="libvips-util.html#IM-CLIP-NONE:CAPS" title="IM_CLIP_NONE()">IM_CLIP_NONE</a>                        (V,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-util.html#im-construct-fn" title="im_construct_fn ()">*im_construct_fn</a>)                  (<em class="parameter"><code><span class="type">void</span> *Param1</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#im-local" title="im_local ()">im_local</a>                            (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#im-construct-fn" title="im_construct_fn ()"><span class="type">im_construct_fn</span></a> cons</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> dest</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im-local-array" title="im_local_array ()">im_local_array</a>                      (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#im-construct-fn" title="im_construct_fn ()"><span class="type">im_construct_fn</span></a> cons</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> dest</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im--break-token" title="im__break_token ()">im__break_token</a>                     (<em class="parameter"><code><span class="type">char</span> *str</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()">*VSListMap2Fn</a>)                     (<em class="parameter"><code><span class="type">void</span> *Param1</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-util.html#VSListMap4Fn" title="VSListMap4Fn ()">*VSListMap4Fn</a>)                     (<em class="parameter"><code><span class="type">void</span> *Param1</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-util.html#VSListFold2Fn" title="VSListFold2Fn ()">*VSListFold2Fn</a>)                    (<em class="parameter"><code><span class="type">void</span> *Param1</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-util.html#im-slist-equal" title="im_slist_equal ()">im_slist_equal</a>                      (<em class="parameter"><code><span class="type">GSList</span> *l1</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#im-slist-map2" title="im_slist_map2 ()">im_slist_map2</a>                       (<em class="parameter"><code><span class="type">GSList</span> *list</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#im-slist-map2-rev" title="im_slist_map2_rev ()">im_slist_map2_rev</a>                   (<em class="parameter"><code><span class="type">GSList</span> *list</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#im-slist-map4" title="im_slist_map4 ()">im_slist_map4</a>                       (<em class="parameter"><code><span class="type">GSList</span> *list</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap4Fn" title="VSListMap4Fn ()"><span class="type">VSListMap4Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#im-slist-fold2" title="im_slist_fold2 ()">im_slist_fold2</a>                      (<em class="parameter"><code><span class="type">GSList</span> *list</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListFold2Fn" title="VSListFold2Fn ()"><span class="type">VSListFold2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">GSList</span> *            <a class="link" href="libvips-util.html#im-slist-filter" title="im_slist_filter ()">im_slist_filter</a>                     (<em class="parameter"><code><span class="type">GSList</span> *list</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-util.html#im-slist-free-all" title="im_slist_free_all ()">im_slist_free_all</a>                   (<em class="parameter"><code><span class="type">GSList</span> *list</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#im-map-equal" title="im_map_equal ()">im_map_equal</a>                        (<em class="parameter"><code><span class="type">void</span> *a</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#im-hash-table-map" title="im_hash_table_map ()">im_hash_table_map</a>                   (<em class="parameter"><code><span class="type">GHashTable</span> *hash</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-util.html#VipsTypeMap" title="VipsTypeMap ()">*VipsTypeMap</a>)                      (<em class="parameter"><code><span class="type">GType</span> Param1</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-util.html#VipsTypeMap2" title="VipsTypeMap2 ()">*VipsTypeMap2</a>)                     (<em class="parameter"><code><span class="type">GType</span> Param1</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-util.html#VipsClassMap" title="VipsClassMap ()">*VipsClassMap</a>)                     (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass"><span class="type">VipsObjectClass</span></a> *Param1</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#vips-type-map" title="vips_type_map ()">vips_type_map</a>                       (<em class="parameter"><code><span class="type">GType</span> base</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsTypeMap2" title="VipsTypeMap2 ()"><span class="type">VipsTypeMap2</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#vips-type-map-concrete-all" title="vips_type_map_concrete_all ()">vips_type_map_concrete_all</a>          (<em class="parameter"><code><span class="type">GType</span> base</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsTypeMap" title="VipsTypeMap ()"><span class="type">VipsTypeMap</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-util.html#vips-class-map-concrete-all" title="vips_class_map_concrete_all ()">vips_class_map_concrete_all</a>         (<em class="parameter"><code><span class="type">GType</span> base</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsClassMap" title="VipsClassMap ()"><span class="type">VipsClassMap</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass"><span class="returnvalue">VipsObjectClass</span></a> *   <a class="link" href="libvips-util.html#vips-class-find" title="vips_class_find ()">vips_class_find</a>                     (<em class="parameter"><code>const <span class="type">char</span> *basename</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">GType</span>               <a class="link" href="libvips-util.html#vips-type-find" title="vips_type_find ()">vips_type_find</a>                      (<em class="parameter"><code>const <span class="type">char</span> *basename</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im-strncpy" title="im_strncpy ()">im_strncpy</a>                          (<em class="parameter"><code><span class="type">char</span> *dest</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im-strrstr" title="im_strrstr ()">im_strrstr</a>                          (<em class="parameter"><code>const <span class="type">char</span> *haystack</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im-strdup" title="im_strdup ()">im_strdup</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-util.html#im-ispostfix" title="im_ispostfix ()">im_ispostfix</a>                        (<em class="parameter"><code>const <span class="type">char</span> *a</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-util.html#im-isprefix" title="im_isprefix ()">im_isprefix</a>                         (<em class="parameter"><code>const <span class="type">char</span> *a</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im-vsnprintf" title="im_vsnprintf ()">im_vsnprintf</a>                        (<em class="parameter"><code><span class="type">char</span> *str</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im-snprintf" title="im_snprintf ()">im_snprintf</a>                         (<em class="parameter"><code><span class="type">char</span> *str</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im-break-token" title="im_break_token ()">im_break_token</a>                      (<em class="parameter"><code><span class="type">char</span> *str</code></em>,
doc/reference/html/libvips-util.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-util.html#im-skip-dir" title="im_skip_dir ()">im_skip_dir</a>                         (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-util.html#im-filename-split" title="im_filename_split ()">im_filename_split</a>                   (<em class="parameter"><code>const <span class="type">char</span> *path</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-util.html#im-filename-suffix" title="im_filename_suffix ()">im_filename_suffix</a>                  (<em class="parameter"><code>const <span class="type">char</span> *path</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im-filename-suffix-match" title="im_filename_suffix_match ()">im_filename_suffix_match</a>            (<em class="parameter"><code>const <span class="type">char</span> *path</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im-getnextoption" title="im_getnextoption ()">im_getnextoption</a>                    (<em class="parameter"><code><span class="type">char</span> **in</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im-getsuboption" title="im_getsuboption ()">im_getsuboption</a>                     (<em class="parameter"><code>const <span class="type">char</span> *buf</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">gint64</span>              <a class="link" href="libvips-util.html#im-file-length" title="im_file_length ()">im_file_length</a>                      (<em class="parameter"><code><span class="type">int</span> fd</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im--write" title="im__write ()">im__write</a>                           (<em class="parameter"><code><span class="type">int</span> fd</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">FILE</span> *              <a class="link" href="libvips-util.html#im--file-open-read" title="im__file_open_read ()">im__file_open_read</a>                  (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">FILE</span> *              <a class="link" href="libvips-util.html#im--file-open-write" title="im__file_open_write ()">im__file_open_write</a>                 (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im--file-read" title="im__file_read ()">im__file_read</a>                       (<em class="parameter"><code><span class="type">FILE</span> *fp</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im--file-read-name" title="im__file_read_name ()">im__file_read_name</a>                  (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im--file-write" title="im__file_write ()">im__file_write</a>                      (<em class="parameter"><code><span class="type">void</span> *data</code></em>,
doc/reference/html/libvips-util.html:enum                <a class="link" href="libvips-util.html#VipsToken" title="enum VipsToken">VipsToken</a>;
doc/reference/html/libvips-util.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-util.html#vips--token-get" title="vips__token_get ()">vips__token_get</a>                     (<em class="parameter"><code>const <span class="type">char</span> *buffer</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsToken" title="enum VipsToken"><span class="type">VipsToken</span></a> *token</code></em>,
doc/reference/html/libvips-util.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-util.html#vips--token-must" title="vips__token_must ()">vips__token_must</a>                    (<em class="parameter"><code>const <span class="type">char</span> *buffer</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsToken" title="enum VipsToken"><span class="type">VipsToken</span></a> *token</code></em>,
doc/reference/html/libvips-util.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-util.html#vips--token-need" title="vips__token_need ()">vips__token_need</a>                    (<em class="parameter"><code>const <span class="type">char</span> *buffer</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsToken" title="enum VipsToken"><span class="type">VipsToken</span></a> need_token</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im-existsf" title="im_existsf ()">im_existsf</a>                          (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">FILE</span> *              <a class="link" href="libvips-util.html#im-popenf" title="im_popenf ()">im_popenf</a>                           (<em class="parameter"><code>const <span class="type">char</span> *fmt</code></em>,
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im-ispoweroftwo" title="im_ispoweroftwo ()">im_ispoweroftwo</a>                     (<em class="parameter"><code><span class="type">int</span> p</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im-isvips" title="im_isvips ()">im_isvips</a>                           (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im-amiMSBfirst" title="im_amiMSBfirst ()">im_amiMSBfirst</a>                      (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">char</span> *              <a class="link" href="libvips-util.html#im--temp-name" title="im__temp_name ()">im__temp_name</a>                       (<em class="parameter"><code>const <span class="type">char</span> *format</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">IMAGE</span> *             <a class="link" href="libvips-util.html#im--open-temp" title="im__open_temp ()">im__open_temp</a>                       (<em class="parameter"><code>const <span class="type">char</span> *format</code></em>);
doc/reference/html/libvips-util.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-util.html#im-bits-of-fmt" title="im_bits_of_fmt ()">im_bits_of_fmt</a>                      (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);
doc/reference/html/libvips-util.html:<a name="libvips-util.description"></a><h2>Description</h2>
doc/reference/html/libvips-util.html:<a name="libvips-util.details"></a><h2>Details</h2>
doc/reference/html/libvips-util.html:<a name="IM-PI:CAPS"></a><h3>IM_PI</h3>
doc/reference/html/libvips-util.html:<a name="IM-RAD:CAPS"></a><h3>IM_RAD()</h3>
doc/reference/html/libvips-util.html:<a name="IM-DEG:CAPS"></a><h3>IM_DEG()</h3>
doc/reference/html/libvips-util.html:<a name="IM-MAX:CAPS"></a><h3>IM_MAX()</h3>
doc/reference/html/libvips-util.html:<a name="IM-MIN:CAPS"></a><h3>IM_MIN()</h3>
doc/reference/html/libvips-util.html:<a name="IM-ABS:CAPS"></a><h3>IM_ABS()</h3>
doc/reference/html/libvips-util.html:<pre class="programlisting">#define IM_ABS(x) (((x) &gt;= 0) ? (x) : -(x))
doc/reference/html/libvips-util.html:<a name="IM-CLIP:CAPS"></a><h3>IM_CLIP()</h3>
doc/reference/html/libvips-util.html:<a name="IM-NUMBER:CAPS"></a><h3>IM_NUMBER()</h3>
doc/reference/html/libvips-util.html:<a name="IM-FREEF:CAPS"></a><h3>IM_FREEF()</h3>
doc/reference/html/libvips-util.html:<a name="IM-FREE:CAPS"></a><h3>IM_FREE()</h3>
doc/reference/html/libvips-util.html:<a name="IM-SETSTR:CAPS"></a><h3>IM_SETSTR()</h3>
doc/reference/html/libvips-util.html:<a name="IM-UNROLL:CAPS"></a><h3>IM_UNROLL()</h3>
doc/reference/html/libvips-util.html:<a name="IM-RINT:CAPS"></a><h3>IM_RINT()</h3>
doc/reference/html/libvips-util.html:<pre class="programlisting">#define IM_RINT( R ) ((int)((R)&gt;0?((R)+0.5):((R)-0.5)))
doc/reference/html/libvips-util.html:<a name="IM-CLIP-UCHAR:CAPS"></a><h3>IM_CLIP_UCHAR()</h3>
doc/reference/html/libvips-util.html:<a name="IM-CLIP-USHORT:CAPS"></a><h3>IM_CLIP_USHORT()</h3>
doc/reference/html/libvips-util.html:<a name="IM-CLIP-CHAR:CAPS"></a><h3>IM_CLIP_CHAR()</h3>
doc/reference/html/libvips-util.html:<a name="IM-CLIP-SHORT:CAPS"></a><h3>IM_CLIP_SHORT()</h3>
doc/reference/html/libvips-util.html:<a name="IM-CLIP-NONE:CAPS"></a><h3>IM_CLIP_NONE()</h3>
doc/reference/html/libvips-util.html:<a name="im-construct-fn"></a><h3>im_construct_fn ()</h3>
doc/reference/html/libvips-util.html:<a name="im-local"></a><h3>im_local ()</h3>
doc/reference/html/libvips-util.html:<pre class="programlisting"><span class="returnvalue">void</span> *              im_local                            (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#im-construct-fn" title="im_construct_fn ()"><span class="type">im_construct_fn</span></a> cons</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> dest</code></em>,
doc/reference/html/libvips-util.html:<a name="im-local-array"></a><h3>im_local_array ()</h3>
doc/reference/html/libvips-util.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_local_array                      (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#im-construct-fn" title="im_construct_fn ()"><span class="type">im_construct_fn</span></a> cons</code></em>,
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> dest</code></em>,
doc/reference/html/libvips-util.html:<a name="im--break-token"></a><h3>im__break_token ()</h3>
doc/reference/html/libvips-util.html:<a name="im-slist-equal"></a><h3>im_slist_equal ()</h3>
doc/reference/html/libvips-util.html:<a name="im-slist-map2"></a><h3>im_slist_map2 ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<a name="im-slist-map2-rev"></a><h3>im_slist_map2_rev ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<a name="im-slist-map4"></a><h3>im_slist_map4 ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap4Fn" title="VSListMap4Fn ()"><span class="type">VSListMap4Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<a name="im-slist-fold2"></a><h3>im_slist_fold2 ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListFold2Fn" title="VSListFold2Fn ()"><span class="type">VSListFold2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<a name="im-slist-filter"></a><h3>im_slist_filter ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<a name="im-slist-free-all"></a><h3>im_slist_free_all ()</h3>
doc/reference/html/libvips-util.html:<a name="im-map-equal"></a><h3>im_map_equal ()</h3>
doc/reference/html/libvips-util.html:<a name="im-hash-table-map"></a><h3>im_hash_table_map ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<pre class="programlisting"><span class="returnvalue">void</span> *              (*VipsClassMap)                     (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass"><span class="type">VipsObjectClass</span></a> *Param1</code></em>,
doc/reference/html/libvips-util.html:<a name="vips-type-map"></a><h3>vips_type_map ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsTypeMap2" title="VipsTypeMap2 ()"><span class="type">VipsTypeMap2</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<a name="vips-type-map-concrete-all"></a><h3>vips_type_map_concrete_all ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsTypeMap" title="VipsTypeMap ()"><span class="type">VipsTypeMap</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<a name="vips-class-map-concrete-all"></a><h3>vips_class_map_concrete_all ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsClassMap" title="VipsClassMap ()"><span class="type">VipsClassMap</span></a> fn</code></em>,
doc/reference/html/libvips-util.html:<a name="vips-class-find"></a><h3>vips_class_find ()</h3>
doc/reference/html/libvips-util.html:<pre class="programlisting"><a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass"><span class="returnvalue">VipsObjectClass</span></a> *   vips_class_find                     (<em class="parameter"><code>const <span class="type">char</span> *basename</code></em>,
doc/reference/html/libvips-util.html:<a name="vips-type-find"></a><h3>vips_type_find ()</h3>
doc/reference/html/libvips-util.html:<a name="im-strncpy"></a><h3>im_strncpy ()</h3>
doc/reference/html/libvips-util.html:<a name="im-strrstr"></a><h3>im_strrstr ()</h3>
doc/reference/html/libvips-util.html:<a name="im-strdup"></a><h3>im_strdup ()</h3>
doc/reference/html/libvips-util.html:<a name="im-ispostfix"></a><h3>im_ispostfix ()</h3>
doc/reference/html/libvips-util.html:<a name="im-isprefix"></a><h3>im_isprefix ()</h3>
doc/reference/html/libvips-util.html:<a name="im-vsnprintf"></a><h3>im_vsnprintf ()</h3>
doc/reference/html/libvips-util.html:<a name="im-snprintf"></a><h3>im_snprintf ()</h3>
doc/reference/html/libvips-util.html:<a name="im-break-token"></a><h3>im_break_token ()</h3>
doc/reference/html/libvips-util.html:<a name="im-skip-dir"></a><h3>im_skip_dir ()</h3>
doc/reference/html/libvips-util.html:<a name="im-filename-split"></a><h3>im_filename_split ()</h3>
doc/reference/html/libvips-util.html:<a name="im-filename-suffix"></a><h3>im_filename_suffix ()</h3>
doc/reference/html/libvips-util.html:<a name="im-filename-suffix-match"></a><h3>im_filename_suffix_match ()</h3>
doc/reference/html/libvips-util.html:<a name="im-getnextoption"></a><h3>im_getnextoption ()</h3>
doc/reference/html/libvips-util.html:<a name="im-getsuboption"></a><h3>im_getsuboption ()</h3>
doc/reference/html/libvips-util.html:<a name="im-file-length"></a><h3>im_file_length ()</h3>
doc/reference/html/libvips-util.html:<a name="im--write"></a><h3>im__write ()</h3>
doc/reference/html/libvips-util.html:<a name="im--file-open-read"></a><h3>im__file_open_read ()</h3>
doc/reference/html/libvips-util.html:<a name="im--file-open-write"></a><h3>im__file_open_write ()</h3>
doc/reference/html/libvips-util.html:<a name="im--file-read"></a><h3>im__file_read ()</h3>
doc/reference/html/libvips-util.html:<a name="im--file-read-name"></a><h3>im__file_read_name ()</h3>
doc/reference/html/libvips-util.html:<a name="im--file-write"></a><h3>im__file_write ()</h3>
doc/reference/html/libvips-util.html:<a name="vips--token-get"></a><h3>vips__token_get ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsToken" title="enum VipsToken"><span class="type">VipsToken</span></a> *token</code></em>,
doc/reference/html/libvips-util.html:<a name="vips--token-must"></a><h3>vips__token_must ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsToken" title="enum VipsToken"><span class="type">VipsToken</span></a> *token</code></em>,
doc/reference/html/libvips-util.html:<a name="vips--token-need"></a><h3>vips__token_need ()</h3>
doc/reference/html/libvips-util.html:                                                         <em class="parameter"><code><a class="link" href="libvips-util.html#VipsToken" title="enum VipsToken"><span class="type">VipsToken</span></a> need_token</code></em>,
doc/reference/html/libvips-util.html:<a name="im-existsf"></a><h3>im_existsf ()</h3>
doc/reference/html/libvips-util.html:<a name="im-popenf"></a><h3>im_popenf ()</h3>
doc/reference/html/libvips-util.html:<a name="im-ispoweroftwo"></a><h3>im_ispoweroftwo ()</h3>
doc/reference/html/libvips-util.html:<a name="im-isvips"></a><h3>im_isvips ()</h3>
doc/reference/html/libvips-util.html:<a name="im-amiMSBfirst"></a><h3>im_amiMSBfirst ()</h3>
doc/reference/html/libvips-util.html:<a name="im--temp-name"></a><h3>im__temp_name ()</h3>
doc/reference/html/libvips-util.html:<a name="im--open-temp"></a><h3>im__open_temp ()</h3>
doc/reference/html/libvips-util.html:<a name="im-bits-of-fmt"></a><h3>im_bits_of_fmt ()</h3>
doc/reference/html/libvips-util.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_bits_of_fmt                      (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);</pre>
doc/reference/html/libvips-util.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-transform.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-transform.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-transform.html:<link rel="prev" href="libvips-VipsArgument.html" title="VipsArgument">
doc/reference/html/libvips-transform.html:<link rel="next" href="libvips-util.html" title="util">
doc/reference/html/libvips-transform.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-transform.html:<td><a accesskey="p" href="libvips-VipsArgument.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-transform.html:<td><a accesskey="n" href="libvips-util.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-transform.html:<a href="#libvips-transform.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-transform.html:                  <a href="#libvips-transform.description" class="shortcut">Description</a>
doc/reference/html/libvips-transform.html:<a name="libvips-transform"></a><div class="titlepage"></div>
doc/reference/html/libvips-transform.html:<h2><span class="refentrytitle"><a name="libvips-transform.top_of_page"></a>transform</span></h2>
doc/reference/html/libvips-transform.html:<a name="libvips-transform.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-transform.html:<pre class="synopsis">                    <a class="link" href="libvips-transform.html#Transformation" title="Transformation">Transformation</a>;
doc/reference/html/libvips-transform.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-transform.html#im--transform-init" title="im__transform_init ()">im__transform_init</a>                  (<em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);
doc/reference/html/libvips-transform.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-transform.html#im--transform-calc-inverse" title="im__transform_calc_inverse ()">im__transform_calc_inverse</a>          (<em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);
doc/reference/html/libvips-transform.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-transform.html#im--transform-isidentity" title="im__transform_isidentity ()">im__transform_isidentity</a>            (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);
doc/reference/html/libvips-transform.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-transform.html#im--transform-add" title="im__transform_add ()">im__transform_add</a>                   (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *in1</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *in2</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *out</code></em>);
doc/reference/html/libvips-transform.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-transform.html#im--transform-print" title="im__transform_print ()">im__transform_print</a>                 (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);
doc/reference/html/libvips-transform.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-transform.html#im--transform-forward-point" title="im__transform_forward_point ()">im__transform_forward_point</a>         (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>,
doc/reference/html/libvips-transform.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-transform.html#im--transform-invert-point" title="im__transform_invert_point ()">im__transform_invert_point</a>          (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>,
doc/reference/html/libvips-transform.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-transform.html#im--transform-forward-rect" title="im__transform_forward_rect ()">im__transform_forward_rect</a>          (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code>const <a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *in</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *out</code></em>);
doc/reference/html/libvips-transform.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-transform.html#im--transform-invert-rect" title="im__transform_invert_rect ()">im__transform_invert_rect</a>           (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code>const <a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *in</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *out</code></em>);
doc/reference/html/libvips-transform.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-transform.html#im--transform-set-area" title="im__transform_set_area ()">im__transform_set_area</a>              (<em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *Param1</code></em>);
doc/reference/html/libvips-transform.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-transform.html#im--affine" title="im__affine ()">im__affine</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);
doc/reference/html/libvips-transform.html:<a name="libvips-transform.description"></a><h2>Description</h2>
doc/reference/html/libvips-transform.html:<a name="libvips-transform.details"></a><h2>Details</h2>
doc/reference/html/libvips-transform.html:<a name="im--transform-init"></a><h3>im__transform_init ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">void</span>                im__transform_init                  (<em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);</pre>
doc/reference/html/libvips-transform.html:<a name="im--transform-calc-inverse"></a><h3>im__transform_calc_inverse ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__transform_calc_inverse          (<em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);</pre>
doc/reference/html/libvips-transform.html:<a name="im--transform-isidentity"></a><h3>im__transform_isidentity ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__transform_isidentity            (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);</pre>
doc/reference/html/libvips-transform.html:<a name="im--transform-add"></a><h3>im__transform_add ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im__transform_add                   (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *in1</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *in2</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *out</code></em>);</pre>
doc/reference/html/libvips-transform.html:<a name="im--transform-print"></a><h3>im__transform_print ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">void</span>                im__transform_print                 (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);</pre>
doc/reference/html/libvips-transform.html:<a name="im--transform-forward-point"></a><h3>im__transform_forward_point ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">void</span>                im__transform_forward_point         (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>,
doc/reference/html/libvips-transform.html:<a name="im--transform-invert-point"></a><h3>im__transform_invert_point ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">void</span>                im__transform_invert_point          (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>,
doc/reference/html/libvips-transform.html:<a name="im--transform-forward-rect"></a><h3>im__transform_forward_rect ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">void</span>                im__transform_forward_rect          (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code>const <a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *in</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *out</code></em>);</pre>
doc/reference/html/libvips-transform.html:<a name="im--transform-invert-rect"></a><h3>im__transform_invert_rect ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">void</span>                im__transform_invert_rect           (<em class="parameter"><code>const <a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code>const <a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *in</code></em>,
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *out</code></em>);</pre>
doc/reference/html/libvips-transform.html:<a name="im--transform-set-area"></a><h3>im__transform_set_area ()</h3>
doc/reference/html/libvips-transform.html:<pre class="programlisting"><span class="returnvalue">void</span>                im__transform_set_area              (<em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *Param1</code></em>);</pre>
doc/reference/html/libvips-transform.html:<a name="im--affine"></a><h3>im__affine ()</h3>
doc/reference/html/libvips-transform.html:                                                         <em class="parameter"><code><a class="link" href="libvips-transform.html#Transformation" title="Transformation"><span class="type">Transformation</span></a> *trn</code></em>);</pre>
doc/reference/html/libvips-transform.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/style.css:  margin-left: 3em;
doc/reference/html/style.css:.variablelist td:first-child
doc/reference/html/style.css:  vertical-align: top;
doc/reference/html/style.css:    padding-top:4.5em;
doc/reference/html/style.css:    padding-top: 3.2em;
doc/reference/html/style.css:    padding-bottom: 20em;
doc/reference/html/style.css:    margin-top: 0;
doc/reference/html/style.css:    margin-bottom: 0;
doc/reference/html/style.css:    z-index: 10;
doc/reference/html/style.css:    font-size: 80%;
doc/reference/html/style.css:    white-space: nowrap;
doc/reference/html/style.css:    margin-top: 0;
doc/reference/html/style.css:    margin-bottom: 0;
doc/reference/html/style.css:  font-size: 200%;
doc/reference/html/style.css:div.gallery-float
doc/reference/html/style.css:div.gallery-float img
doc/reference/html/style.css:  border-style: none;
doc/reference/html/style.css:div.gallery-spacer
doc/reference/html/style.css:  text-decoration: none;
doc/reference/html/style.css:  text-decoration: underline;
doc/reference/html/style.css:  border-collapse: collapse;
doc/reference/html/style.css:  border-spacing: 0px;
doc/reference/html/style.css:  vertical-align: top;
doc/reference/html/style.css:  background-color: #d3d7cf;
doc/reference/html/style.css:  padding-top: 3.5em;
doc/reference/html/style.css:  text-align: center;
doc/reference/html/style.css:  font-size: 80%;
doc/reference/html/style.css:  border-color: #ffb04f;
doc/reference/html/style.css:  border-color: #abf562;
doc/reference/html/style.css:  border-width: 1px;
doc/reference/html/style.css:  border-style: solid;
doc/reference/html/style.css:  margin-top: 0.0em
doc/reference/html/style.css:  margin-bottom: 0.0em
doc/reference/html/style.css:  font-size: 80%;
doc/reference/html/style.css:  font-weight: normal;
doc/reference/html/style.css:.listing_code .programlisting .function   { color: #000000; font-weight: bold; }
doc/reference/html/style.css:.listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
doc/reference/html/style.css:  margin-top: 0px;
doc/reference/html/style.css:  margin-bottom: 0px;
doc/reference/html/libvips-conversion.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-conversion.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-conversion.html:<link rel="prev" href="libvips-colour.html" title="colour">
doc/reference/html/libvips-conversion.html:<link rel="next" href="libvips-convolution.html" title="convolution">
doc/reference/html/libvips-conversion.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-conversion.html:<td><a accesskey="p" href="libvips-colour.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-conversion.html:<td><a accesskey="n" href="libvips-convolution.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-conversion.html:<a href="#libvips-conversion.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-conversion.html:                  <a href="#libvips-conversion.description" class="shortcut">Description</a>
doc/reference/html/libvips-conversion.html:<a name="libvips-conversion"></a><div class="titlepage"></div>
doc/reference/html/libvips-conversion.html:<h2><span class="refentrytitle"><a name="libvips-conversion.top_of_page"></a>conversion</span></h2>
doc/reference/html/libvips-conversion.html:<a name="libvips-conversion.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-conversion.html:<a name="libvips-conversion.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-conversion.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-conversion.html#im-vips2mask" title="im_vips2mask ()">im_vips2mask</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-mask2vips" title="im_mask2vips ()">im_mask2vips</a>                        (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()">im_copy</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-copy-set" title="im_copy_set ()">im_copy_set</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsType" title="enum VipsType"><span class="type">VipsType</span></a> type</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-copy-set-meta" title="im_copy_set_meta ()">im_copy_set_meta</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-copy-morph" title="im_copy_morph ()">im_copy_morph</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> bandfmt</code></em>,
doc/reference/html/libvips-conversion.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsCoding" title="enum VipsCoding"><span class="type">VipsCoding</span></a> coding</code></em>);
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-copy-swap" title="im_copy_swap ()">im_copy_swap</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-copy-native" title="im_copy_native ()">im_copy_native</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-copy-file" title="im_copy_file ()">im_copy_file</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-clip2fmt" title="im_clip2fmt ()">im_clip2fmt</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-scale" title="im_scale ()">im_scale</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-msb" title="im_msb ()">im_msb</a>                              (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-msb-band" title="im_msb_band ()">im_msb_band</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-c2amph" title="im_c2amph ()">im_c2amph</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-c2rect" title="im_c2rect ()">im_c2rect</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-ri2c" title="im_ri2c ()">im_ri2c</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *real_in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-c2imag" title="im_c2imag ()">im_c2imag</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-c2real" title="im_c2real ()">im_c2real</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-scaleps" title="im_scaleps ()">im_scaleps</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-falsecolour" title="im_falsecolour ()">im_falsecolour</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-gaussnoise" title="im_gaussnoise ()">im_gaussnoise</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-black" title="im_black ()">im_black</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-text" title="im_text ()">im_text</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-extract-band" title="im_extract_band ()">im_extract_band</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-extract-bands" title="im_extract_bands ()">im_extract_bands</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-extract-area" title="im_extract_area ()">im_extract_area</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-extract-areabands" title="im_extract_areabands ()">im_extract_areabands</a>                (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-embed" title="im_embed ()">im_embed</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-bandjoin" title="im_bandjoin ()">im_bandjoin</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-gbandjoin" title="im_gbandjoin ()">im_gbandjoin</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> **in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()">im_insert</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *main</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-insert-noexpand" title="im_insert_noexpand ()">im_insert_noexpand</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *main</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-insertset" title="im_insertset ()">im_insertset</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *main</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-lrjoin" title="im_lrjoin ()">im_lrjoin</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-tbjoin" title="im_tbjoin ()">im_tbjoin</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-replicate" title="im_replicate ()">im_replicate</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-grid" title="im_grid ()">im_grid</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-wrap" title="im_wrap ()">im_wrap</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-fliphor" title="im_fliphor ()">im_fliphor</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-flipver" title="im_flipver ()">im_flipver</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-rot90" title="im_rot90 ()">im_rot90</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-rot180" title="im_rot180 ()">im_rot180</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-rot270" title="im_rot270 ()">im_rot270</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-subsample" title="im_subsample ()">im_subsample</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-zoom" title="im_zoom ()">im_zoom</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-conversion.html#im-system" title="im_system ()">im_system</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-conversion.html:<span class="returnvalue">IMAGE</span> *             <a class="link" href="libvips-conversion.html#im-system-image" title="im_system_image ()">im_system_image</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-conversion.html:<a name="libvips-conversion.description"></a><h2>Description</h2>
doc/reference/html/libvips-conversion.html:can change the band format (for example, cast to 32-bit unsigned
doc/reference/html/libvips-conversion.html:<a name="libvips-conversion.details"></a><h2>Details</h2>
doc/reference/html/libvips-conversion.html:<a name="im-vips2mask"></a><h3>im_vips2mask ()</h3>
doc/reference/html/libvips-conversion.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_vips2mask                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-conversion.html:Make a mask from an image. All images are cast to <a class="link" href="libvips-image.html#IM-BANDFMT-DOUBLE:CAPS"><code class="literal">IM_BANDFMT_DOUBLE</code></a>
doc/reference/html/libvips-conversion.html:If the image has a single band, <a class="link" href="libvips-conversion.html#im-vips2mask" title="im_vips2mask ()"><code class="function">im_vips2mask()</code></a> will write a mask the same
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-mask2vips" title="im_mask2vips ()"><code class="function">im_mask2vips()</code></a>, <a class="link" href="libvips-arithmetic.html#im-measure-area" title="im_measure_area ()"><code class="function">im_measure_area()</code></a>.
doc/reference/html/libvips-conversion.html:<td> a <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> with <em class="parameter"><code>outname</code></em> set as the name, or NULL on error
doc/reference/html/libvips-conversion.html:<a name="im-mask2vips"></a><h3>im_mask2vips ()</h3>
doc/reference/html/libvips-conversion.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_mask2vips                        (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *in</code></em>,
doc/reference/html/libvips-conversion.html:Write a one-band, <a class="link" href="libvips-image.html#IM-BANDFMT-DOUBLE:CAPS"><code class="literal">IM_BANDFMT_DOUBLE</code></a> image to <em class="parameter"><code>out</code></em> based on mask <em class="parameter"><code>in</code></em>.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-vips2mask" title="im_vips2mask ()"><code class="function">im_vips2mask()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-copy"></a><h3>im_copy ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()"><code class="function">im_copy()</code></a>, <a class="link" href="libvips-conversion.html#im-copy-set" title="im_copy_set ()"><code class="function">im_copy_set()</code></a>, <a class="link" href="libvips-conversion.html#im-copy-morph" title="im_copy_morph ()"><code class="function">im_copy_morph()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-copy-set"></a><h3>im_copy_set ()</h3>
doc/reference/html/libvips-conversion.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsType" title="enum VipsType"><span class="type">VipsType</span></a> type</code></em>,
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()"><code class="function">im_copy()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-copy-set-meta"></a><h3>im_copy_set_meta ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()"><code class="function">im_copy()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-copy-morph"></a><h3>im_copy_morph ()</h3>
doc/reference/html/libvips-conversion.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> bandfmt</code></em>,
doc/reference/html/libvips-conversion.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsCoding" title="enum VipsCoding"><span class="type">VipsCoding</span></a> coding</code></em>);</pre>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()"><code class="function">im_copy()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-copy-swap"></a><h3>im_copy_swap ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()"><code class="function">im_copy()</code></a>, <a class="link" href="libvips-util.html#im-amiMSBfirst" title="im_amiMSBfirst ()"><code class="function">im_amiMSBfirst()</code></a>, <a class="link" href="libvips-check.html#im-isMSBfirst" title="im_isMSBfirst ()"><code class="function">im_isMSBfirst()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-copy-native"></a><h3>im_copy_native ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-copy-swap" title="im_copy_swap ()"><code class="function">im_copy_swap()</code></a>, <a class="link" href="libvips-util.html#im-amiMSBfirst" title="im_amiMSBfirst ()"><code class="function">im_amiMSBfirst()</code></a>.
doc/reference/html/libvips-conversion.html:<code class="literal">TRUE</code> if <em class="parameter"><code>in</code></em> is in most-significant first form
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-copy-file"></a><h3>im_copy_file ()</h3>
doc/reference/html/libvips-conversion.html:The disc file is allocated in the same way as <a class="link" href="libvips-conversion.html#im-system-image" title="im_system_image ()"><code class="function">im_system_image()</code></a>. A disc
doc/reference/html/libvips-conversion.html:variable) named something like "vips-12-34985.v" and the image is written
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()"><code class="function">im_copy()</code></a>, <a class="link" href="libvips-conversion.html#im-system-image" title="im_system_image ()"><code class="function">im_system_image()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-clip2fmt"></a><h3>im_clip2fmt ()</h3>
doc/reference/html/libvips-conversion.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);</pre>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-scale" title="im_scale ()"><code class="function">im_scale()</code></a>, <a class="link" href="libvips-conversion.html#im-ri2c" title="im_ri2c ()"><code class="function">im_ri2c()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-scale"></a><h3>im_scale ()</h3>
doc/reference/html/libvips-conversion.html:as unsigned 8-bit, scaled so that the maximum value is 255 and the
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-clip2fmt" title="im_clip2fmt ()"><code class="function">im_clip2fmt()</code></a>, <a class="link" href="libvips-conversion.html#im-scaleps" title="im_scaleps ()"><code class="function">im_scaleps()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-msb"></a><h3>im_msb ()</h3>
doc/reference/html/libvips-conversion.html:Turn any integer image to 8-bit unsigned char by discarding all but the most
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-msb-band" title="im_msb_band ()"><code class="function">im_msb_band()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-msb-band"></a><h3>im_msb_band ()</h3>
doc/reference/html/libvips-conversion.html:Turn any integer image to a single-band 8-bit unsigned char by discarding 
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-msb-band" title="im_msb_band ()"><code class="function">im_msb_band()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-c2amph"></a><h3>im_c2amph ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-c2rect" title="im_c2rect ()"><code class="function">im_c2rect()</code></a>, <a class="link" href="libvips-arithmetic.html#im-abs" title="im_abs ()"><code class="function">im_abs()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-c2rect"></a><h3>im_c2rect ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-c2amph" title="im_c2amph ()"><code class="function">im_c2amph()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-ri2c"></a><h3>im_ri2c ()</h3>
doc/reference/html/libvips-conversion.html:<a class="link" href="libvips-image.html#IM-BANDFMT-DOUBLE:CAPS"><code class="literal">IM_BANDFMT_DOUBLE</code></a>, <em class="parameter"><code>out</code></em> is <a class="link" href="libvips-image.html#IM-BANDFMT-DPCOMPLEX:CAPS"><code class="literal">IM_BANDFMT_DPCOMPLEX</code></a>. Otherwise <em class="parameter"><code>out</code></em> is
doc/reference/html/libvips-conversion.html:<a class="link" href="libvips-image.html#IM-BANDFMT-COMPLEX:CAPS"><code class="literal">IM_BANDFMT_COMPLEX</code></a>.
doc/reference/html/libvips-conversion.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-conversion.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-conversion.html:the two n-band images are operated upon.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-c2real" title="im_c2real ()"><code class="function">im_c2real()</code></a>, <a class="link" href="libvips-conversion.html#im-c2imag" title="im_c2imag ()"><code class="function">im_c2imag()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-c2imag"></a><h3>im_c2imag ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-c2real" title="im_c2real ()"><code class="function">im_c2real()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-c2real"></a><h3>im_c2real ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-c2imag" title="im_c2imag ()"><code class="function">im_c2imag()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-scaleps"></a><h3>im_scaleps ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-scale" title="im_scale ()"><code class="function">im_scale()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-falsecolour"></a><h3>im_falsecolour ()</h3>
doc/reference/html/libvips-conversion.html:Turn a 1-band 8-bit image into a 3-band 8-bit image with a false colour
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-histograms-lut.html#im-maplut" title="im_maplut ()"><code class="function">im_maplut()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-gaussnoise"></a><h3>im_gaussnoise ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-convolution.html#im-addgnoise" title="im_addgnoise ()"><code class="function">im_addgnoise()</code></a>, <a class="link" href="libvips-other.html#im-make-xy" title="im_make_xy ()"><code class="function">im_make_xy()</code></a>, <a class="link" href="libvips-conversion.html#im-text" title="im_text ()"><code class="function">im_text()</code></a>, <a class="link" href="libvips-conversion.html#im-black" title="im_black ()"><code class="function">im_black()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-black"></a><h3>im_black ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-other.html#im-make-xy" title="im_make_xy ()"><code class="function">im_make_xy()</code></a>, <a class="link" href="libvips-conversion.html#im-text" title="im_text ()"><code class="function">im_text()</code></a>, <a class="link" href="libvips-conversion.html#im-gaussnoise" title="im_gaussnoise ()"><code class="function">im_gaussnoise()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-text"></a><h3>im_text ()</h3>
doc/reference/html/libvips-conversion.html:Draw the string <em class="parameter"><code>text</code></em> to an image. <em class="parameter"><code>out</code></em> is a one-band 8-bit
doc/reference/html/libvips-conversion.html:are used for anti-aliasing.
doc/reference/html/libvips-conversion.html:<em class="parameter"><code>text</code></em> is the text to render as a UTF-8 string. It can contain Pango markup,
doc/reference/html/libvips-conversion.html:case, <em class="parameter"><code>alignment</code></em> can be used to set the alignment style for multi-line
doc/reference/html/libvips-conversion.html:text. 0 means left-align, 1 centre, 2 right-align.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-other.html#im-make-xy" title="im_make_xy ()"><code class="function">im_make_xy()</code></a>, <a class="link" href="libvips-conversion.html#im-black" title="im_black ()"><code class="function">im_black()</code></a>, <a class="link" href="libvips-conversion.html#im-gaussnoise" title="im_gaussnoise ()"><code class="function">im_gaussnoise()</code></a>.
doc/reference/html/libvips-conversion.html:<td>utf-8 text string to render
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-extract-band"></a><h3>im_extract_band ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-bandjoin" title="im_bandjoin ()"><code class="function">im_bandjoin()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-extract-bands"></a><h3>im_extract_bands ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-bandjoin" title="im_bandjoin ()"><code class="function">im_bandjoin()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-extract-area"></a><h3>im_extract_area ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-embed" title="im_embed ()"><code class="function">im_embed()</code></a>, <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>, <a class="link" href="libvips-conversion.html#im-extract-bands" title="im_extract_bands ()"><code class="function">im_extract_bands()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-extract-areabands"></a><h3>im_extract_areabands ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-embed" title="im_embed ()"><code class="function">im_embed()</code></a>, <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>, <a class="link" href="libvips-conversion.html#im-extract-area" title="im_extract_area ()"><code class="function">im_extract_area()</code></a>, <a class="link" href="libvips-conversion.html#im-extract-bands" title="im_extract_bands ()"><code class="function">im_extract_bands()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-embed"></a><h3>im_embed ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-extract-area" title="im_extract_area ()"><code class="function">im_extract_area()</code></a>, <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-bandjoin"></a><h3>im_bandjoin ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-gbandjoin" title="im_gbandjoin ()"><code class="function">im_gbandjoin()</code></a>, <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-gbandjoin"></a><h3>im_gbandjoin ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-bandjoin" title="im_bandjoin ()"><code class="function">im_bandjoin()</code></a>, <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-insert"></a><h3>im_insert ()</h3>
doc/reference/html/libvips-conversion.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-conversion.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-conversion.html:the two n-band images are operated upon.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-insert-noexpand" title="im_insert_noexpand ()"><code class="function">im_insert_noexpand()</code></a>, <a class="link" href="libvips-conversion.html#im-lrjoin" title="im_lrjoin ()"><code class="function">im_lrjoin()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-insert-noexpand"></a><h3>im_insert_noexpand ()</h3>
doc/reference/html/libvips-conversion.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-conversion.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-conversion.html:the two n-band images are operated upon.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-insert-noexpand" title="im_insert_noexpand ()"><code class="function">im_insert_noexpand()</code></a>, <a class="link" href="libvips-conversion.html#im-lrjoin" title="im_lrjoin ()"><code class="function">im_lrjoin()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-insertset"></a><h3>im_insertset ()</h3>
doc/reference/html/libvips-conversion.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-conversion.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-conversion.html:the two n-band images are operated upon.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>, <a class="link" href="libvips-conversion.html#im-lrjoin" title="im_lrjoin ()"><code class="function">im_lrjoin()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-lrjoin"></a><h3>im_lrjoin ()</h3>
doc/reference/html/libvips-conversion.html:Join <em class="parameter"><code>left</code></em> and <em class="parameter"><code>right</code></em> together, left-right. If one is taller than the
doc/reference/html/libvips-conversion.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-conversion.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-conversion.html:the two n-band images are operated upon.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>, <a class="link" href="libvips-conversion.html#im-tbjoin" title="im_tbjoin ()"><code class="function">im_tbjoin()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-tbjoin"></a><h3>im_tbjoin ()</h3>
doc/reference/html/libvips-conversion.html:Join <em class="parameter"><code>top</code></em> and <em class="parameter"><code>bottom</code></em> together, up-down. If one is wider than the
doc/reference/html/libvips-conversion.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-conversion.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-conversion.html:the two n-band images are operated upon.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>, <a class="link" href="libvips-conversion.html#im-tbjoin" title="im_tbjoin ()"><code class="function">im_tbjoin()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-replicate"></a><h3>im_replicate ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-embed" title="im_embed ()"><code class="function">im_embed()</code></a>, <a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()"><code class="function">im_copy()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-grid"></a><h3>im_grid ()</h3>
doc/reference/html/libvips-conversion.html:smaller images. Volumetric or time-sequence images are often laid out like
doc/reference/html/libvips-conversion.html:<em class="parameter"><code>across</code></em> tiles across and <em class="parameter"><code>down</code></em> tiles down in row-major order.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-embed" title="im_embed ()"><code class="function">im_embed()</code></a>, <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>, <a class="link" href="libvips-conversion.html#im-lrjoin" title="im_lrjoin ()"><code class="function">im_lrjoin()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-wrap"></a><h3>im_wrap ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-embed" title="im_embed ()"><code class="function">im_embed()</code></a>, <a class="link" href="libvips-conversion.html#im-replicate" title="im_replicate ()"><code class="function">im_replicate()</code></a>, <a class="link" href="libvips-freq-filt.html#im-rotquad" title="im_rotquad ()"><code class="function">im_rotquad()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-fliphor"></a><h3>im_fliphor ()</h3>
doc/reference/html/libvips-conversion.html:Flips an image left-right.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-flipver" title="im_flipver ()"><code class="function">im_flipver()</code></a>, <a class="link" href="libvips-conversion.html#im-rot90" title="im_rot90 ()"><code class="function">im_rot90()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-flipver"></a><h3>im_flipver ()</h3>
doc/reference/html/libvips-conversion.html:Flips an image top-bottom.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-fliphor" title="im_fliphor ()"><code class="function">im_fliphor()</code></a>, <a class="link" href="libvips-conversion.html#im-rot90" title="im_rot90 ()"><code class="function">im_rot90()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-rot90"></a><h3>im_rot90 ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-rot180" title="im_rot180 ()"><code class="function">im_rot180()</code></a>, <a class="link" href="libvips-conversion.html#im-rot270" title="im_rot270 ()"><code class="function">im_rot270()</code></a>, <a class="link" href="libvips-resample.html#im-affinei-all" title="im_affinei_all ()"><code class="function">im_affinei_all()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-rot180"></a><h3>im_rot180 ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-rot90" title="im_rot90 ()"><code class="function">im_rot90()</code></a>, <a class="link" href="libvips-conversion.html#im-rot270" title="im_rot270 ()"><code class="function">im_rot270()</code></a>, <a class="link" href="libvips-resample.html#im-affinei-all" title="im_affinei_all ()"><code class="function">im_affinei_all()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-rot270"></a><h3>im_rot270 ()</h3>
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-rot180" title="im_rot180 ()"><code class="function">im_rot180()</code></a>, <a class="link" href="libvips-conversion.html#im-rot90" title="im_rot90 ()"><code class="function">im_rot90()</code></a>, <a class="link" href="libvips-resample.html#im-affinei-all" title="im_affinei_all ()"><code class="function">im_affinei_all()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-subsample"></a><h3>im_subsample ()</h3>
doc/reference/html/libvips-conversion.html:Subsample an image by an integer fraction. This is fast nearest-neighbour
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-resample.html#im-shrink" title="im_shrink ()"><code class="function">im_shrink()</code></a>, <a class="link" href="libvips-resample.html#im-affinei" title="im_affinei ()"><code class="function">im_affinei()</code></a>, <a class="link" href="libvips-conversion.html#im-zoom" title="im_zoom ()"><code class="function">im_zoom()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-zoom"></a><h3>im_zoom ()</h3>
doc/reference/html/libvips-conversion.html:Zoom an image by repeating pixels. This is fast nearest-neighbour
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-resample.html#im-affinei" title="im_affinei ()"><code class="function">im_affinei()</code></a>, <a class="link" href="libvips-conversion.html#im-subsample" title="im_subsample ()"><code class="function">im_subsample()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-conversion.html:<a name="im-system"></a><h3>im_system ()</h3>
doc/reference/html/libvips-conversion.html:<a class="link" href="libvips-conversion.html#im-system" title="im_system ()"><code class="function">im_system()</code></a> runs a command on an image, returning the command's output as a
doc/reference/html/libvips-conversion.html:In all cases, <em class="parameter"><code>log</code></em> must be freed with <a class="link" href="libvips-memory.html#im-free" title="im_free ()"><code class="function">im_free()</code></a>.
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-system-image" title="im_system_image ()"><code class="function">im_system_image()</code></a>.
doc/reference/html/libvips-conversion.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-conversion.html:<a name="im-system-image"></a><h3>im_system_image ()</h3>
doc/reference/html/libvips-conversion.html:<a class="link" href="libvips-conversion.html#im-system-image" title="im_system_image ()"><code class="function">im_system_image()</code></a> runs a command, passing an image in and getting an image
doc/reference/html/libvips-conversion.html:something like "vips-49857-1" for the first %<code class="literal">s</code> in <em class="parameter"><code>in_format</code></em>, then
doc/reference/html/libvips-conversion.html:the command fails, the temporary files are deleted and <a class="link" href="libvips-conversion.html#im-system-image" title="im_system_image ()"><code class="function">im_system_image()</code></a>
doc/reference/html/libvips-conversion.html:In all cases, <em class="parameter"><code>log</code></em> must be freed with <a class="link" href="libvips-memory.html#im-free" title="im_free ()"><code class="function">im_free()</code></a>.
doc/reference/html/libvips-conversion.html:  "%s.jpg", "%s.jpg", "convert %s -swirl 45 %s", 
doc/reference/html/libvips-conversion.html:See also: <a class="link" href="libvips-conversion.html#im-system" title="im_system ()"><code class="function">im_system()</code></a>.
doc/reference/html/libvips-conversion.html:<a name="libvips-conversion.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-conversion.html:<a class="link" href="libvips-resample.html" title="resample">resample</a>
doc/reference/html/libvips-conversion.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-buf.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-buf.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-buf.html:<link rel="prev" href="libvips-memory.html" title="memory">
doc/reference/html/libvips-buf.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-buf.html:<td><a accesskey="p" href="libvips-memory.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-buf.html:<a href="#libvips-buf.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-buf.html:                  <a href="#libvips-buf.description" class="shortcut">Description</a>
doc/reference/html/libvips-buf.html:<a name="libvips-buf"></a><div class="titlepage"></div>
doc/reference/html/libvips-buf.html:<h2><span class="refentrytitle"><a name="libvips-buf.top_of_page"></a>buf</span></h2>
doc/reference/html/libvips-buf.html:<a name="libvips-buf.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-buf.html:<a name="libvips-buf.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-buf.html:                    <a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf">VipsBuf</a>;
doc/reference/html/libvips-buf.html:#define             <a class="link" href="libvips-buf.html#VIPS-BUF-STATIC:CAPS" title="VIPS_BUF_STATIC()">VIPS_BUF_STATIC</a>                     (TEXT)
doc/reference/html/libvips-buf.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-buf.html#vips-buf-rewind" title="vips_buf_rewind ()">vips_buf_rewind</a>                     (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);
doc/reference/html/libvips-buf.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-buf.html#vips-buf-destroy" title="vips_buf_destroy ()">vips_buf_destroy</a>                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);
doc/reference/html/libvips-buf.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-buf.html#vips-buf-init" title="vips_buf_init ()">vips_buf_init</a>                       (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);
doc/reference/html/libvips-buf.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-buf.html#vips-buf-set-static" title="vips_buf_set_static ()">vips_buf_set_static</a>                 (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-buf.html#vips-buf-set-dynamic" title="vips_buf_set_dynamic ()">vips_buf_set_dynamic</a>                (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-buf.html#vips-buf-init-static" title="vips_buf_init_static ()">vips_buf_init_static</a>                (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-buf.html#vips-buf-init-dynamic" title="vips_buf_init_dynamic ()">vips_buf_init_dynamic</a>               (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-appendns" title="vips_buf_appendns ()">vips_buf_appendns</a>                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-appends" title="vips_buf_appends ()">vips_buf_appends</a>                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-appendf" title="vips_buf_appendf ()">vips_buf_appendf</a>                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-vappendf" title="vips_buf_vappendf ()">vips_buf_vappendf</a>                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-appendc" title="vips_buf_appendc ()">vips_buf_appendc</a>                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-appendsc" title="vips_buf_appendsc ()">vips_buf_appendsc</a>                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-appendgv" title="vips_buf_appendgv ()">vips_buf_appendgv</a>                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-removec" title="vips_buf_removec ()">vips_buf_removec</a>                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-change" title="vips_buf_change ()">vips_buf_change</a>                     (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-is-empty" title="vips_buf_is_empty ()">vips_buf_is_empty</a>                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-is-full" title="vips_buf_is_full ()">vips_buf_is_full</a>                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);
doc/reference/html/libvips-buf.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-buf.html#vips-buf-all" title="vips_buf_all ()">vips_buf_all</a>                        (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);
doc/reference/html/libvips-buf.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-buf.html#vips-buf-firstline" title="vips_buf_firstline ()">vips_buf_firstline</a>                  (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-appendg" title="vips_buf_appendg ()">vips_buf_appendg</a>                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-buf.html#vips-buf-appendd" title="vips_buf_appendd ()">vips_buf_appendd</a>                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-buf.html#vips-buf-len" title="vips_buf_len ()">vips_buf_len</a>                        (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);
doc/reference/html/libvips-buf.html:<a name="libvips-buf.description"></a><h2>Description</h2>
doc/reference/html/libvips-buf.html:<a name="libvips-buf.details"></a><h2>Details</h2>
doc/reference/html/libvips-buf.html:<a name="VIPS-BUF-STATIC:CAPS"></a><h3>VIPS_BUF_STATIC()</h3>
doc/reference/html/libvips-buf.html:<a name="vips-buf-rewind"></a><h3>vips_buf_rewind ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_buf_rewind                     (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);</pre>
doc/reference/html/libvips-buf.html:<a name="vips-buf-destroy"></a><h3>vips_buf_destroy ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_buf_destroy                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);</pre>
doc/reference/html/libvips-buf.html:<a name="vips-buf-init"></a><h3>vips_buf_init ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_buf_init                       (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);</pre>
doc/reference/html/libvips-buf.html:<a name="vips-buf-set-static"></a><h3>vips_buf_set_static ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_buf_set_static                 (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<a name="vips-buf-set-dynamic"></a><h3>vips_buf_set_dynamic ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_buf_set_dynamic                (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<a name="vips-buf-init-static"></a><h3>vips_buf_init_static ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_buf_init_static                (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:Initialise and attach to a static memory area. <a class="link" href="libvips-buf.html#VIPS-BUF-STATIC:CAPS" title="VIPS_BUF_STATIC()"><code class="function">VIPS_BUF_STATIC()</code></a> is usually
doc/reference/html/libvips-buf.html:size must be set at compile-time.
doc/reference/html/libvips-buf.html:<a name="vips-buf-init-dynamic"></a><h3>vips_buf_init_dynamic ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_buf_init_dynamic               (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:Dynamic buffers must be freed with <a class="link" href="libvips-buf.html#vips-buf-destroy" title="vips_buf_destroy ()"><code class="function">vips_buf_destroy()</code></a>, but their size can
doc/reference/html/libvips-buf.html:<a name="vips-buf-appendns"></a><h3>vips_buf_appendns ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_appendns                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:is the low-level append operation: functions like <a class="link" href="libvips-buf.html#vips-buf-appendf" title="vips_buf_appendf ()"><code class="function">vips_buf_appendf()</code></a> build
doc/reference/html/libvips-buf.html:<a name="vips-buf-appends"></a><h3>vips_buf_appends ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_appends                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<a name="vips-buf-appendf"></a><h3>vips_buf_appendf ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_appendf                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<code class="function"><code class="function">printf()</code></code>-style format string
doc/reference/html/libvips-buf.html:<a name="vips-buf-vappendf"></a><h3>vips_buf_vappendf ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_vappendf                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<code class="function"><code class="function">printf()</code></code>-style format string
doc/reference/html/libvips-buf.html:<a name="vips-buf-appendc"></a><h3>vips_buf_appendc ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_appendc                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<a name="vips-buf-appendsc"></a><h3>vips_buf_appendsc ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_appendsc                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<a name="vips-buf-appendgv"></a><h3>vips_buf_appendgv ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_appendgv                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<a name="vips-buf-removec"></a><h3>vips_buf_removec ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_removec                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<a name="vips-buf-change"></a><h3>vips_buf_change ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_change                     (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:<a name="vips-buf-is-empty"></a><h3>vips_buf_is_empty ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_is_empty                   (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);</pre>
doc/reference/html/libvips-buf.html:<a name="vips-buf-is-full"></a><h3>vips_buf_is_full ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_is_full                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);</pre>
doc/reference/html/libvips-buf.html:<a name="vips-buf-all"></a><h3>vips_buf_all ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting">const <span class="returnvalue">char</span> *        vips_buf_all                        (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);</pre>
doc/reference/html/libvips-buf.html:<td> the <code class="literal">NULL</code>-terminated contents of the buffer. This is a pointer to
doc/reference/html/libvips-buf.html:<a name="vips-buf-firstline"></a><h3>vips_buf_firstline ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting">const <span class="returnvalue">char</span> *        vips_buf_firstline                  (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);</pre>
doc/reference/html/libvips-buf.html:<td> the <code class="literal">NULL</code>-terminated contents of the buffer. This is a pointer to
doc/reference/html/libvips-buf.html:<a name="vips-buf-appendg"></a><h3>vips_buf_appendg ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_appendg                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:Append a double, non-localised. Useful for config files etc.
doc/reference/html/libvips-buf.html:<a name="vips-buf-appendd"></a><h3>vips_buf_appendd ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_buf_appendd                    (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>,
doc/reference/html/libvips-buf.html:Append a number. If the number is -ve, add brackets. Needed for
doc/reference/html/libvips-buf.html:<a name="vips-buf-len"></a><h3>vips_buf_len ()</h3>
doc/reference/html/libvips-buf.html:<pre class="programlisting"><span class="returnvalue">int</span>                 vips_buf_len                        (<em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);</pre>
doc/reference/html/libvips-buf.html:<a name="libvips-buf.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-buf.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-inplace.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-inplace.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-inplace.html:<link rel="prev" href="libvips-mask.html" title="mask">
doc/reference/html/libvips-inplace.html:<link rel="next" href="libvips-mosaicing.html" title="mosaicing">
doc/reference/html/libvips-inplace.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-inplace.html:<td><a accesskey="p" href="libvips-mask.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-inplace.html:<td><a accesskey="n" href="libvips-mosaicing.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-inplace.html:<a href="#libvips-inplace.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-inplace.html:                  <a href="#libvips-inplace.description" class="shortcut">Description</a>
doc/reference/html/libvips-inplace.html:<a name="libvips-inplace"></a><div class="titlepage"></div>
doc/reference/html/libvips-inplace.html:<h2><span class="refentrytitle"><a name="libvips-inplace.top_of_page"></a>inplace</span></h2>
doc/reference/html/libvips-inplace.html:<p>inplace — in-place paintbox operations: flood, paste, line,
doc/reference/html/libvips-inplace.html:<a name="libvips-inplace.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-inplace.html:<a name="libvips-inplace.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-plotmask" title="im_plotmask ()">im_plotmask</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-smear" title="im_smear ()">im_smear</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-smudge" title="im_smudge ()">im_smudge</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-paintrect" title="im_paintrect ()">im_paintrect</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-circle" title="im_circle ()">im_circle</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-insertplace" title="im_insertplace ()">im_insertplace</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *main</code></em>,
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-fastline" title="im_fastline ()">im_fastline</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-fastlineuser" title="im_fastlineuser ()">im_fastlineuser</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-readpoint" title="im_readpoint ()">im_readpoint</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-flood" title="im_flood ()">im_flood</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *dout</code></em>);
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-flood-blob" title="im_flood_blob ()">im_flood_blob</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *dout</code></em>);
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-flood-other" title="im_flood_other ()">im_flood_other</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *test</code></em>,
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *dout</code></em>);
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-flood-copy" title="im_flood_copy ()">im_flood_copy</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-flood-blob-copy" title="im_flood_blob_copy ()">im_flood_blob_copy</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-flood-other-copy" title="im_flood_other_copy ()">im_flood_other_copy</a>                 (<em class="parameter"><code><span class="type">IMAGE</span> *test</code></em>,
doc/reference/html/libvips-inplace.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-inplace.html#im-lineset" title="im_lineset ()">im_lineset</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-inplace.html:<a name="libvips-inplace.description"></a><h2>Description</h2>
doc/reference/html/libvips-inplace.html:pipelines, but they are useful for paintbox-style programs.
doc/reference/html/libvips-inplace.html:<a name="libvips-inplace.details"></a><h2>Details</h2>
doc/reference/html/libvips-inplace.html:<a name="im-plotmask"></a><h3>im_plotmask ()</h3>
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);</pre>
doc/reference/html/libvips-inplace.html:<a name="im-smear"></a><h3>im_smear ()</h3>
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);</pre>
doc/reference/html/libvips-inplace.html:<a name="im-smudge"></a><h3>im_smudge ()</h3>
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);</pre>
doc/reference/html/libvips-inplace.html:<a name="im-paintrect"></a><h3>im_paintrect ()</h3>
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-inplace.html:<a name="im-circle"></a><h3>im_circle ()</h3>
doc/reference/html/libvips-inplace.html:<a name="im-insertplace"></a><h3>im_insertplace ()</h3>
doc/reference/html/libvips-inplace.html:See also: <a class="link" href="libvips-conversion.html#im-insert" title="im_insert ()"><code class="function">im_insert()</code></a>.
doc/reference/html/libvips-inplace.html:<td>sub-image to insert
doc/reference/html/libvips-inplace.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-inplace.html:<a name="im-fastline"></a><h3>im_fastline ()</h3>
doc/reference/html/libvips-inplace.html:<a name="im-fastlineuser"></a><h3>im_fastlineuser ()</h3>
doc/reference/html/libvips-inplace.html:<a name="im-readpoint"></a><h3>im_readpoint ()</h3>
doc/reference/html/libvips-inplace.html:<a name="im-flood"></a><h3>im_flood ()</h3>
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *dout</code></em>);</pre>
doc/reference/html/libvips-inplace.html:Flood-fill <em class="parameter"><code>im</code></em> with <em class="parameter"><code>ink</code></em>, starting at position <em class="parameter"><code>x</code></em>, <em class="parameter"><code>y</code></em>. The filled area is
doc/reference/html/libvips-inplace.html:not work well as part of a pipeline. On 32-bit machines, it will be limited
doc/reference/html/libvips-inplace.html:See also: <a class="link" href="libvips-inplace.html#im-flood-blob" title="im_flood_blob ()"><code class="function">im_flood_blob()</code></a>, <a class="link" href="libvips-inplace.html#im-flood-other" title="im_flood_other ()"><code class="function">im_flood_other()</code></a>, <a class="link" href="libvips-inplace.html#im-flood-blob-copy" title="im_flood_blob_copy ()"><code class="function">im_flood_blob_copy()</code></a>.
doc/reference/html/libvips-inplace.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-inplace.html:<a name="im-flood-blob"></a><h3>im_flood_blob ()</h3>
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *dout</code></em>);</pre>
doc/reference/html/libvips-inplace.html:Flood-fill <em class="parameter"><code>im</code></em> with <em class="parameter"><code>ink</code></em>, starting at position <em class="parameter"><code>x</code></em>, <em class="parameter"><code>y</code></em>. The filled area is
doc/reference/html/libvips-inplace.html:searches for a blob of same-coloured pixels.
doc/reference/html/libvips-inplace.html:not work well as part of a pipeline. On 32-bit machines, it will be limited
doc/reference/html/libvips-inplace.html:See also: <a class="link" href="libvips-inplace.html#im-flood" title="im_flood ()"><code class="function">im_flood()</code></a>, <a class="link" href="libvips-inplace.html#im-flood-other" title="im_flood_other ()"><code class="function">im_flood_other()</code></a>, <a class="link" href="libvips-inplace.html#im-flood-blob-copy" title="im_flood_blob_copy ()"><code class="function">im_flood_blob_copy()</code></a>.
doc/reference/html/libvips-inplace.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-inplace.html:<a name="im-flood-other"></a><h3>im_flood_other ()</h3>
doc/reference/html/libvips-inplace.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *dout</code></em>);</pre>
doc/reference/html/libvips-inplace.html:Flood-fill <em class="parameter"><code>mark</code></em> with <em class="parameter"><code>serial</code></em>, starting at position <em class="parameter"><code>x</code></em>, <em class="parameter"><code>y</code></em>. The filled 
doc/reference/html/libvips-inplace.html:other words, it searches <em class="parameter"><code>test</code></em> for a blob of same-coloured pixels, marking 
doc/reference/html/libvips-inplace.html:not work well as part of a pipeline. On 32-bit machines, it will be limited
doc/reference/html/libvips-inplace.html:See also: <a class="link" href="libvips-inplace.html#im-flood" title="im_flood ()"><code class="function">im_flood()</code></a>, <a class="link" href="libvips-morphology.html#im-label-regions" title="im_label_regions ()"><code class="function">im_label_regions()</code></a>, <a class="link" href="libvips-inplace.html#im-flood-blob-copy" title="im_flood_blob_copy ()"><code class="function">im_flood_blob_copy()</code></a>.
doc/reference/html/libvips-inplace.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-inplace.html:<a name="im-flood-copy"></a><h3>im_flood_copy ()</h3>
doc/reference/html/libvips-inplace.html:<a name="im-flood-blob-copy"></a><h3>im_flood_blob_copy ()</h3>
doc/reference/html/libvips-inplace.html:<a name="im-flood-other-copy"></a><h3>im_flood_other_copy ()</h3>
doc/reference/html/libvips-inplace.html:<a name="im-lineset"></a><h3>im_lineset ()</h3>
doc/reference/html/libvips-inplace.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-rect.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-rect.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-rect.html:<link rel="prev" href="libvips-type.html" title="type">
doc/reference/html/libvips-rect.html:<link rel="next" href="libvips-semaphore.html" title="semaphore">
doc/reference/html/libvips-rect.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-rect.html:<td><a accesskey="p" href="libvips-type.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-rect.html:<td><a accesskey="n" href="libvips-semaphore.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-rect.html:<a href="#libvips-rect.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-rect.html:                  <a href="#libvips-rect.description" class="shortcut">Description</a>
doc/reference/html/libvips-rect.html:<a name="libvips-rect"></a><div class="titlepage"></div>
doc/reference/html/libvips-rect.html:<h2><span class="refentrytitle"><a name="libvips-rect.top_of_page"></a>rect</span></h2>
doc/reference/html/libvips-rect.html:<a name="libvips-rect.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-rect.html:<pre class="synopsis">                    <a class="link" href="libvips-rect.html#Rect" title="Rect">Rect</a>;
doc/reference/html/libvips-rect.html:#define             <a class="link" href="libvips-rect.html#IM-RECT-RIGHT:CAPS" title="IM_RECT_RIGHT()">IM_RECT_RIGHT</a>                       (R)
doc/reference/html/libvips-rect.html:#define             <a class="link" href="libvips-rect.html#IM-RECT-BOTTOM:CAPS" title="IM_RECT_BOTTOM()">IM_RECT_BOTTOM</a>                      (R)
doc/reference/html/libvips-rect.html:#define             <a class="link" href="libvips-rect.html#IM-RECT-HCENTRE:CAPS" title="IM_RECT_HCENTRE()">IM_RECT_HCENTRE</a>                     (R)
doc/reference/html/libvips-rect.html:#define             <a class="link" href="libvips-rect.html#IM-RECT-VCENTRE:CAPS" title="IM_RECT_VCENTRE()">IM_RECT_VCENTRE</a>                     (R)
doc/reference/html/libvips-rect.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-rect.html#im-rect-marginadjust" title="im_rect_marginadjust ()">im_rect_marginadjust</a>                (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-rect.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-rect.html#im-rect-includespoint" title="im_rect_includespoint ()">im_rect_includespoint</a>               (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-rect.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-rect.html#im-rect-includesrect" title="im_rect_includesrect ()">im_rect_includesrect</a>                (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r1</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r2</code></em>);
doc/reference/html/libvips-rect.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-rect.html#im-rect-intersectrect" title="im_rect_intersectrect ()">im_rect_intersectrect</a>               (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r1</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r2</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r3</code></em>);
doc/reference/html/libvips-rect.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-rect.html#im-rect-isempty" title="im_rect_isempty ()">im_rect_isempty</a>                     (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);
doc/reference/html/libvips-rect.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-rect.html#im-rect-unionrect" title="im_rect_unionrect ()">im_rect_unionrect</a>                   (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r1</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r2</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r3</code></em>);
doc/reference/html/libvips-rect.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-rect.html#im-rect-equalsrect" title="im_rect_equalsrect ()">im_rect_equalsrect</a>                  (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r1</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r2</code></em>);
doc/reference/html/libvips-rect.html:<a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="returnvalue">Rect</span></a> *              <a class="link" href="libvips-rect.html#im-rect-dup" title="im_rect_dup ()">im_rect_dup</a>                         (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);
doc/reference/html/libvips-rect.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-rect.html#im-rect-normalise" title="im_rect_normalise ()">im_rect_normalise</a>                   (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);
doc/reference/html/libvips-rect.html:<a name="libvips-rect.description"></a><h2>Description</h2>
doc/reference/html/libvips-rect.html:<a name="libvips-rect.details"></a><h2>Details</h2>
doc/reference/html/libvips-rect.html:<a name="IM-RECT-RIGHT:CAPS"></a><h3>IM_RECT_RIGHT()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting">#define IM_RECT_RIGHT(R) ((R)-&gt;left + (R)-&gt;width)
doc/reference/html/libvips-rect.html:<a name="IM-RECT-BOTTOM:CAPS"></a><h3>IM_RECT_BOTTOM()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting">#define IM_RECT_BOTTOM(R) ((R)-&gt;top + (R)-&gt;height)
doc/reference/html/libvips-rect.html:<a name="IM-RECT-HCENTRE:CAPS"></a><h3>IM_RECT_HCENTRE()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting">#define IM_RECT_HCENTRE(R) ((R)-&gt;left + (R)-&gt;width / 2)
doc/reference/html/libvips-rect.html:<a name="IM-RECT-VCENTRE:CAPS"></a><h3>IM_RECT_VCENTRE()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting">#define IM_RECT_VCENTRE(R) ((R)-&gt;top + (R)-&gt;height / 2)
doc/reference/html/libvips-rect.html:<a name="im-rect-marginadjust"></a><h3>im_rect_marginadjust ()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_rect_marginadjust                (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-rect.html:<a name="im-rect-includespoint"></a><h3>im_rect_includespoint ()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_rect_includespoint               (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-rect.html:<a name="im-rect-includesrect"></a><h3>im_rect_includesrect ()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_rect_includesrect                (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r1</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r2</code></em>);</pre>
doc/reference/html/libvips-rect.html:<a name="im-rect-intersectrect"></a><h3>im_rect_intersectrect ()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_rect_intersectrect               (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r1</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r2</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r3</code></em>);</pre>
doc/reference/html/libvips-rect.html:<a name="im-rect-isempty"></a><h3>im_rect_isempty ()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_rect_isempty                     (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);</pre>
doc/reference/html/libvips-rect.html:<a name="im-rect-unionrect"></a><h3>im_rect_unionrect ()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_rect_unionrect                   (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r1</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r2</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r3</code></em>);</pre>
doc/reference/html/libvips-rect.html:<a name="im-rect-equalsrect"></a><h3>im_rect_equalsrect ()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_rect_equalsrect                  (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r1</code></em>,
doc/reference/html/libvips-rect.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r2</code></em>);</pre>
doc/reference/html/libvips-rect.html:<a name="im-rect-dup"></a><h3>im_rect_dup ()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting"><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="returnvalue">Rect</span></a> *              im_rect_dup                         (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);</pre>
doc/reference/html/libvips-rect.html:<a name="im-rect-normalise"></a><h3>im_rect_normalise ()</h3>
doc/reference/html/libvips-rect.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_rect_normalise                   (<em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);</pre>
doc/reference/html/libvips-rect.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-generate.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-generate.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-generate.html:<link rel="prev" href="libvips-region.html" title="region">
doc/reference/html/libvips-generate.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-generate.html:<td><a accesskey="p" href="libvips-region.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-generate.html:<a href="#libvips-generate.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-generate.html:                  <a href="#libvips-generate.description" class="shortcut">Description</a>
doc/reference/html/libvips-generate.html:<a name="libvips-generate"></a><div class="titlepage"></div>
doc/reference/html/libvips-generate.html:<h2><span class="refentrytitle"><a name="libvips-generate.top_of_page"></a>generate</span></h2>
doc/reference/html/libvips-generate.html:<a name="libvips-generate.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-generate.html:<a name="libvips-generate.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()">im_prepare</a>                          (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-prepare-to" title="im_prepare_to ()">im_prepare_to</a>                       (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *dest</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-generate.html#im-start-fn" title="im_start_fn ()">*im_start_fn</a>)                      (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 (<a class="link" href="libvips-generate.html#im-generate-fn" title="im_generate_fn ()">*im_generate_fn</a>)                   (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *out</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 (<a class="link" href="libvips-generate.html#im-stop-fn" title="im_stop_fn ()">*im_stop_fn</a>)                       (<em class="parameter"><code><span class="type">void</span> *seq</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-generate.html#im-start-one" title="im_start_one ()">im_start_one</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-stop-one" title="im_stop_one ()">im_stop_one</a>                         (<em class="parameter"><code><span class="type">void</span> *seq</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-generate.html#im-start-many" title="im_start_many ()">im_start_many</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-stop-many" title="im_stop_many ()">im_stop_many</a>                        (<em class="parameter"><code><span class="type">void</span> *seq</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">IMAGE</span> **            <a class="link" href="libvips-generate.html#im-allocate-input-array" title="im_allocate_input_array ()">im_allocate_input_array</a>             (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()">im_generate</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-start-fn" title="im_start_fn ()"><span class="type">im_start_fn</span></a> start</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-generate-fn" title="im_generate_fn ()"><span class="type">im_generate_fn</span></a> generate</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-stop-fn" title="im_stop_fn ()"><span class="type">im_stop_fn</span></a> stop</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-iterate" title="im_iterate ()">im_iterate</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-start-fn" title="im_start_fn ()"><span class="type">im_start_fn</span></a> start</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-generate-fn" title="im_generate_fn ()"><span class="type">im_generate_fn</span></a> generate</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-stop-fn" title="im_stop_fn ()"><span class="type">im_stop_fn</span></a> stop</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-demand-hint-array" title="im_demand_hint_array ()">im_demand_hint_array</a>                (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-demand-hint" title="im_demand_hint ()">im_demand_hint</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">void</span>                (<a class="link" href="libvips-generate.html#im-wrapone-fn" title="im_wrapone_fn ()">*im_wrapone_fn</a>)                    (<em class="parameter"><code><span class="type">void</span> *in</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-wrapone" title="im_wrapone ()">im_wrapone</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-wrapone-fn" title="im_wrapone_fn ()"><span class="type">im_wrapone_fn</span></a> fn</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">void</span>                (<a class="link" href="libvips-generate.html#im-wraptwo-fn" title="im_wraptwo_fn ()">*im_wraptwo_fn</a>)                    (<em class="parameter"><code><span class="type">void</span> *in1</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-wraptwo" title="im_wraptwo ()">im_wraptwo</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-wraptwo-fn" title="im_wraptwo_fn ()"><span class="type">im_wraptwo_fn</span></a> fn</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">void</span>                (<a class="link" href="libvips-generate.html#im-wrapmany-fn" title="im_wrapmany_fn ()">*im_wrapmany_fn</a>)                   (<em class="parameter"><code><span class="type">void</span> **in</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-wrapmany" title="im_wrapmany ()">im_wrapmany</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> **in</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-wrapmany-fn" title="im_wrapmany_fn ()"><span class="type">im_wrapmany_fn</span></a> fn</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-render-priority" title="im_render_priority ()">im_render_priority</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-cache" title="im_cache ()">im_cache</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-setupout" title="im_setupout ()">im_setupout</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-generate.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-generate.html#im-writeline" title="im_writeline ()">im_writeline</a>                        (<em class="parameter"><code><span class="type">int</span> ypos</code></em>,
doc/reference/html/libvips-generate.html:<a name="libvips-generate.description"></a><h2>Description</h2>
doc/reference/html/libvips-generate.html:<a name="libvips-generate.details"></a><h2>Details</h2>
doc/reference/html/libvips-generate.html:<a name="im-prepare"></a><h3>im_prepare ()</h3>
doc/reference/html/libvips-generate.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_prepare                          (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);</pre>
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a> fills <em class="parameter"><code>reg</code></em> with pixels. After calling, you can address at
doc/reference/html/libvips-generate.html:least the area <em class="parameter"><code>r</code></em> with <a class="link" href="libvips-region.html#IM-REGION-ADDR:CAPS" title="IM_REGION_ADDR()"><code class="function">IM_REGION_ADDR()</code></a> and get valid pixels.
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a> runs in-line, that is, computation is done by the calling
doc/reference/html/libvips-generate.html:threads. Use <a class="link" href="libvips-generate.html#im-render-priority" title="im_render_priority ()"><code class="function">im_render_priority()</code></a> to calculate an area of pixels in the 
doc/reference/html/libvips-generate.html:See also: <code class="function">im_prepare_thread()</code>, <a class="link" href="libvips-generate.html#im-render-priority" title="im_render_priority ()"><code class="function">im_render_priority()</code></a>, <a class="link" href="libvips-generate.html#im-prepare-to" title="im_prepare_to ()"><code class="function">im_prepare_to()</code></a>.
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> of pixels you need to be able to address
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-prepare-to"></a><h3>im_prepare_to ()</h3>
doc/reference/html/libvips-generate.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_prepare_to                       (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *dest</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-generate.html:Like <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>: fill <em class="parameter"><code>reg</code></em> with data, ready to be read from by our caller.
doc/reference/html/libvips-generate.html:Unlike <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>, rather than allocating memory local to <em class="parameter"><code>reg</code></em> for the
doc/reference/html/libvips-generate.html:Also unlike <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>, <em class="parameter"><code>dest</code></em> is not set up for writing for you with
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-region.html#im-region-buffer" title="im_region_buffer ()"><code class="function">im_region_buffer()</code></a>. You can
doc/reference/html/libvips-generate.html:This makes <a class="link" href="libvips-generate.html#im-prepare-to" title="im_prepare_to ()"><code class="function">im_prepare_to()</code></a> useful for making the ends of pipelines, since
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>, <a class="link" href="VipsThreadState.html#vips-sink-disc" title="vips_sink_disc ()"><code class="function">vips_sink_disc()</code></a>.
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> of pixels you need to be able to address
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error
doc/reference/html/libvips-generate.html:<a name="im-start-fn"></a><h3>im_start_fn ()</h3>
doc/reference/html/libvips-generate.html:per-thread state, such as an input region.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-start-one" title="im_start_one ()"><code class="function">im_start_one()</code></a>, <a class="link" href="libvips-generate.html#im-start-many" title="im_start_many ()"><code class="function">im_start_many()</code></a>.
doc/reference/html/libvips-generate.html:<a name="im-generate-fn"></a><h3>im_generate_fn ()</h3>
doc/reference/html/libvips-generate.html:<pre class="programlisting"><span class="returnvalue">int</span>                 (*im_generate_fn)                   (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *out</code></em>,
doc/reference/html/libvips-generate.html:Fill <em class="parameter"><code>out-&gt;valid</code></em> with pixels. <em class="parameter"><code>seq</code></em> contains per-thread state, such as the
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>, <a class="link" href="libvips-generate.html#im-stop-many" title="im_stop_many ()"><code class="function">im_stop_many()</code></a>.
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> to fill
doc/reference/html/libvips-generate.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-stop-fn"></a><h3>im_stop_fn ()</h3>
doc/reference/html/libvips-generate.html:per-thread state, such as an input region.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-stop-one" title="im_stop_one ()"><code class="function">im_stop_one()</code></a>, <a class="link" href="libvips-generate.html#im-stop-many" title="im_stop_many ()"><code class="function">im_stop_many()</code></a>.
doc/reference/html/libvips-generate.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-start-one"></a><h3>im_start_one ()</h3>
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-generate.html:<a name="im-stop-one"></a><h3>im_stop_one ()</h3>
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-generate.html:<a name="im-start-many"></a><h3>im_start_many ()</h3>
doc/reference/html/libvips-generate.html:a <code class="literal">NULL</code>-terminated array of input images.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>, <a class="link" href="libvips-generate.html#im-allocate-input-array" title="im_allocate_input_array ()"><code class="function">im_allocate_input_array()</code></a>
doc/reference/html/libvips-generate.html:<a name="im-stop-many"></a><h3>im_stop_many ()</h3>
doc/reference/html/libvips-generate.html:a <code class="literal">NULL</code>-terminated array of input images.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-generate.html:<a name="im-allocate-input-array"></a><h3>im_allocate_input_array ()</h3>
doc/reference/html/libvips-generate.html:Convenience function --- make a <code class="literal">NULL</code>-terminated array of input images.
doc/reference/html/libvips-generate.html:Use with <a class="link" href="libvips-generate.html#im-start-many" title="im_start_many ()"><code class="function">im_start_many()</code></a>.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>, <a class="link" href="libvips-generate.html#im-start-many" title="im_start_many ()"><code class="function">im_start_many()</code></a>.
doc/reference/html/libvips-generate.html:<code class="literal">NULL</code>-terminated list of input images
doc/reference/html/libvips-generate.html:<td> <code class="literal">NULL</code>-terminated array of images. Do not free the result.
doc/reference/html/libvips-generate.html:<a name="im-generate"></a><h3>im_generate ()</h3>
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-start-fn" title="im_start_fn ()"><span class="type">im_start_fn</span></a> start</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-generate-fn" title="im_generate_fn ()"><span class="type">im_generate_fn</span></a> generate</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-stop-fn" title="im_stop_fn ()"><span class="type">im_stop_fn</span></a> stop</code></em>,
doc/reference/html/libvips-generate.html:For images opened with "p", <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a> just attaches the
doc/reference/html/libvips-generate.html:generated using <a class="link" href="VipsThreadState.html#vips-sink" title="vips_sink ()"><code class="function">vips_sink()</code></a>.
doc/reference/html/libvips-generate.html:<a class="link" href="VipsThreadState.html#vips-sink-disc" title="vips_sink_disc ()"><code class="function">vips_sink_disc()</code></a> used to generate the image in small chunks. As each
doc/reference/html/libvips-generate.html:See also: <a class="link" href="VipsThreadState.html#vips-sink" title="vips_sink ()"><code class="function">vips_sink()</code></a>, <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>, <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>, <a class="link" href="libvips-generate.html#im-wrapone" title="im_wrapone ()"><code class="function">im_wrapone()</code></a>.
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-iterate"></a><h3>im_iterate ()</h3>
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-start-fn" title="im_start_fn ()"><span class="type">im_start_fn</span></a> start</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-generate-fn" title="im_generate_fn ()"><span class="type">im_generate_fn</span></a> generate</code></em>,
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-stop-fn" title="im_stop_fn ()"><span class="type">im_stop_fn</span></a> stop</code></em>,
doc/reference/html/libvips-generate.html:<a name="im-demand-hint-array"></a><h3>im_demand_hint_array ()</h3>
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-image.html#IM-SMALLTILE:CAPS"><code class="literal">IM_SMALLTILE</code></a>, operations which work on local windows of pixels will like
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-image.html#IM-FATSTRIP:CAPS"><code class="literal">IM_FATSTRIP</code></a>.
doc/reference/html/libvips-generate.html:varargs friend <a class="link" href="libvips-generate.html#im-demand-hint" title="im_demand_hint ()"><code class="function">im_demand_hint()</code></a>.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-demand-hint" title="im_demand_hint ()"><code class="function">im_demand_hint()</code></a>, <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-demand-hint"></a><h3>im_demand_hint ()</h3>
doc/reference/html/libvips-generate.html:Build an array and call <a class="link" href="libvips-generate.html#im-demand-hint-array" title="im_demand_hint_array ()"><code class="function">im_demand_hint_array()</code></a>.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-demand-hint" title="im_demand_hint ()"><code class="function">im_demand_hint()</code></a>, <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-generate.html:<code class="literal">NULL</code>-terminated list of input images to this operation
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-wrapone-fn"></a><h3>im_wrapone_fn ()</h3>
doc/reference/html/libvips-generate.html:<a name="im-wrapone"></a><h3>im_wrapone ()</h3>
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-wrapone-fn" title="im_wrapone_fn ()"><span class="type">im_wrapone_fn</span></a> fn</code></em>,
doc/reference/html/libvips-generate.html:Wrap-up a buffer processing function as a PIO VIPS function.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-wrapmany" title="im_wrapmany ()"><code class="function">im_wrapmany()</code></a>, <a class="link" href="libvips-generate.html#im-wraptwo" title="im_wraptwo ()"><code class="function">im_wraptwo()</code></a>, <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-generate.html:<td>buffer-processing function
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-wraptwo-fn"></a><h3>im_wraptwo_fn ()</h3>
doc/reference/html/libvips-generate.html:<a name="im-wraptwo"></a><h3>im_wraptwo ()</h3>
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-wraptwo-fn" title="im_wraptwo_fn ()"><span class="type">im_wraptwo_fn</span></a> fn</code></em>,
doc/reference/html/libvips-generate.html:Wrap-up a buffer processing function as a PIO VIPS function.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-wrapone" title="im_wrapone ()"><code class="function">im_wrapone()</code></a>, <a class="link" href="libvips-generate.html#im-wrapmany" title="im_wrapmany ()"><code class="function">im_wrapmany()</code></a>, <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-generate.html:<td>buffer-processing function
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-wrapmany-fn"></a><h3>im_wrapmany_fn ()</h3>
doc/reference/html/libvips-generate.html:<code class="literal">NULL</code>-terminated array of input buffers
doc/reference/html/libvips-generate.html:<a name="im-wrapmany"></a><h3>im_wrapmany ()</h3>
doc/reference/html/libvips-generate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-generate.html#im-wrapmany-fn" title="im_wrapmany_fn ()"><span class="type">im_wrapmany_fn</span></a> fn</code></em>,
doc/reference/html/libvips-generate.html:Wrap-up a buffer processing function as a PIO VIPS function.
doc/reference/html/libvips-generate.html:Given a NULL-terminated list of input images all of the same size, an
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-wrapone" title="im_wrapone ()"><code class="function">im_wrapone()</code></a>, <a class="link" href="libvips-generate.html#im-wraptwo" title="im_wraptwo ()"><code class="function">im_wraptwo()</code></a>, <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-generate.html:<code class="literal">NULL</code>-terminated array of input images
doc/reference/html/libvips-generate.html:<td>buffer-processing function
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-render-priority"></a><h3>im_render_priority ()</h3>
doc/reference/html/libvips-generate.html:<a name="im-cache"></a><h3>im_cache ()</h3>
doc/reference/html/libvips-generate.html:<a name="im-setupout"></a><h3>im_setupout ()</h3>
doc/reference/html/libvips-generate.html:This call gets the <span class="type">IMAGE</span> ready for scanline-based writing with 
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-generate.html#im-writeline" title="im_writeline ()"><code class="function">im_writeline()</code></a>. You need to have set all the image fields, such as <em class="parameter"><code>Xsize</code></em>
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-writeline" title="im_writeline ()"><code class="function">im_writeline()</code></a>, <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>, <a class="link" href="libvips-image.html#im-initdesc" title="im_initdesc ()"><code class="function">im_initdesc()</code></a>, <a class="link" href="libvips-image.html#im-cp-desc" title="im_cp_desc ()"><code class="function">im_cp_desc()</code></a>.
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-generate.html:<a name="im-writeline"></a><h3>im_writeline ()</h3>
doc/reference/html/libvips-generate.html:with <em class="parameter"><code>ypos</code></em> increasing from 0 to <em class="parameter"><code>YSize</code></em> -
doc/reference/html/libvips-generate.html:1. <em class="parameter"><code>linebuffer</code></em> must be <a class="link" href="libvips-image.html#IM-IMAGE-SIZEOF-LINE:CAPS" title="IM_IMAGE_SIZEOF_LINE()"><code class="function">IM_IMAGE_SIZEOF_LINE()</code></a> bytes long.
doc/reference/html/libvips-generate.html:See also: <a class="link" href="libvips-generate.html#im-setupout" title="im_setupout ()"><code class="function">im_setupout()</code></a>, <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-generate.html:<td>vertical position of scan-line to write
doc/reference/html/libvips-generate.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-generate.html:<a name="libvips-generate.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-image.html" title="image">image</a>, 
doc/reference/html/libvips-generate.html:<a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/libvips-generate.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-colour.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-colour.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-colour.html:<link rel="prev" href="libvips-relational.html" title="relational">
doc/reference/html/libvips-colour.html:<link rel="next" href="libvips-conversion.html" title="conversion">
doc/reference/html/libvips-colour.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-colour.html:<td><a accesskey="p" href="libvips-relational.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-colour.html:<td><a accesskey="n" href="libvips-conversion.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-colour.html:<a href="#libvips-colour.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-colour.html:                  <a href="#libvips-colour.description" class="shortcut">Description</a>
doc/reference/html/libvips-colour.html:<a name="libvips-colour"></a><div class="titlepage"></div>
doc/reference/html/libvips-colour.html:<h2><span class="refentrytitle"><a name="libvips-colour.top_of_page"></a>colour</span></h2>
doc/reference/html/libvips-colour.html:<a name="libvips-colour.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-colour.html:<a name="libvips-colour.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D93-X0:CAPS" title="IM_D93_X0">IM_D93_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D93-Y0:CAPS" title="IM_D93_Y0">IM_D93_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D93-Z0:CAPS" title="IM_D93_Z0">IM_D93_Z0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D75-X0:CAPS" title="IM_D75_X0">IM_D75_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D75-Y0:CAPS" title="IM_D75_Y0">IM_D75_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D75-Z0:CAPS" title="IM_D75_Z0">IM_D75_Z0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D65-X0:CAPS" title="IM_D65_X0">IM_D65_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D65-Y0:CAPS" title="IM_D65_Y0">IM_D65_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D65-Z0:CAPS" title="IM_D65_Z0">IM_D65_Z0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D55-X0:CAPS" title="IM_D55_X0">IM_D55_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D55-Y0:CAPS" title="IM_D55_Y0">IM_D55_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D55-Z0:CAPS" title="IM_D55_Z0">IM_D55_Z0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D50-X0:CAPS" title="IM_D50_X0">IM_D50_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D50-Y0:CAPS" title="IM_D50_Y0">IM_D50_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D50-Z0:CAPS" title="IM_D50_Z0">IM_D50_Z0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-A-X0:CAPS" title="IM_A_X0">IM_A_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-A-Y0:CAPS" title="IM_A_Y0">IM_A_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-A-Z0:CAPS" title="IM_A_Z0">IM_A_Z0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-B-X0:CAPS" title="IM_B_X0">IM_B_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-B-Y0:CAPS" title="IM_B_Y0">IM_B_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-B-Z0:CAPS" title="IM_B_Z0">IM_B_Z0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-C-X0:CAPS" title="IM_C_X0">IM_C_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-C-Y0:CAPS" title="IM_C_Y0">IM_C_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-C-Z0:CAPS" title="IM_C_Z0">IM_C_Z0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-E-X0:CAPS" title="IM_E_X0">IM_E_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-E-Y0:CAPS" title="IM_E_Y0">IM_E_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-E-Z0:CAPS" title="IM_E_Z0">IM_E_Z0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D3250-X0:CAPS" title="IM_D3250_X0">IM_D3250_X0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D3250-Y0:CAPS" title="IM_D3250_Y0">IM_D3250_Y0</a>
doc/reference/html/libvips-colour.html:#define             <a class="link" href="libvips-colour.html#IM-D3250-Z0:CAPS" title="IM_D3250_Z0">IM_D3250_Z0</a>
doc/reference/html/libvips-colour.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-colour.html#im-col-ab2Ch" title="im_col_ab2Ch ()">im_col_ab2Ch</a>                        (<em class="parameter"><code><span class="type">float</span> a</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-colour.html#im-col-Ch2ab" title="im_col_Ch2ab ()">im_col_Ch2ab</a>                        (<em class="parameter"><code><span class="type">float</span> C</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-colour.html#im-col-XYZ2Lab" title="im_col_XYZ2Lab ()">im_col_XYZ2Lab</a>                      (<em class="parameter"><code><span class="type">float</span> X</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-colour.html#im-col-Lab2XYZ" title="im_col_Lab2XYZ ()">im_col_Lab2XYZ</a>                      (<em class="parameter"><code><span class="type">float</span> L</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">float</span>               <a class="link" href="libvips-colour.html#im-col-pythagoras" title="im_col_pythagoras ()">im_col_pythagoras</a>                   (<em class="parameter"><code><span class="type">float</span> L1</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-colour.html#im-col-make-tables-UCS" title="im_col_make_tables_UCS ()">im_col_make_tables_UCS</a>              (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">float</span>               <a class="link" href="libvips-colour.html#im-col-L2Lucs" title="im_col_L2Lucs ()">im_col_L2Lucs</a>                       (<em class="parameter"><code><span class="type">float</span> L</code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">float</span>               <a class="link" href="libvips-colour.html#im-col-Lucs2L" title="im_col_Lucs2L ()">im_col_Lucs2L</a>                       (<em class="parameter"><code><span class="type">float</span> Lucs</code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">float</span>               <a class="link" href="libvips-colour.html#im-col-C2Cucs" title="im_col_C2Cucs ()">im_col_C2Cucs</a>                       (<em class="parameter"><code><span class="type">float</span> C</code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">float</span>               <a class="link" href="libvips-colour.html#im-col-Cucs2C" title="im_col_Cucs2C ()">im_col_Cucs2C</a>                       (<em class="parameter"><code><span class="type">float</span> Cucs</code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">float</span>               <a class="link" href="libvips-colour.html#im-col-Ch2hucs" title="im_col_Ch2hucs ()">im_col_Ch2hucs</a>                      (<em class="parameter"><code><span class="type">float</span> C</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">float</span>               <a class="link" href="libvips-colour.html#im-col-Chucs2h" title="im_col_Chucs2h ()">im_col_Chucs2h</a>                      (<em class="parameter"><code><span class="type">float</span> C</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">double</span>              <a class="link" href="libvips-colour.html#im-col-ab2h" title="im_col_ab2h ()">im_col_ab2h</a>                         (<em class="parameter"><code><span class="type">double</span> a</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">float</span>               <a class="link" href="libvips-colour.html#im-col-dECMC" title="im_col_dECMC ()">im_col_dECMC</a>                        (<em class="parameter"><code><span class="type">float</span> L1</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">float</span>               <a class="link" href="libvips-colour.html#im-col-dE00" title="im_col_dE00 ()">im_col_dE00</a>                         (<em class="parameter"><code><span class="type">float</span> L1</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-Lab2LCh" title="im_Lab2LCh ()">im_Lab2LCh</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-LCh2Lab" title="im_LCh2Lab ()">im_LCh2Lab</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-LabQ2XYZ" title="im_LabQ2XYZ ()">im_LabQ2XYZ</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-rad2float" title="im_rad2float ()">im_rad2float</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-float2rad" title="im_float2rad ()">im_float2rad</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-LCh2UCS" title="im_LCh2UCS ()">im_LCh2UCS</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-Lab2LabQ" title="im_Lab2LabQ ()">im_Lab2LabQ</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-Lab2LabS" title="im_Lab2LabS ()">im_Lab2LabS</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-Lab2XYZ" title="im_Lab2XYZ ()">im_Lab2XYZ</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-Lab2XYZ-temp" title="im_Lab2XYZ_temp ()">im_Lab2XYZ_temp</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-Lab2UCS" title="im_Lab2UCS ()">im_Lab2UCS</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-LabQ2Lab" title="im_LabQ2Lab ()">im_LabQ2Lab</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-LabQ2LabS" title="im_LabQ2LabS ()">im_LabQ2LabS</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-LabS2LabQ" title="im_LabS2LabQ ()">im_LabS2LabQ</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-LabS2Lab" title="im_LabS2Lab ()">im_LabS2Lab</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-UCS2XYZ" title="im_UCS2XYZ ()">im_UCS2XYZ</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-UCS2LCh" title="im_UCS2LCh ()">im_UCS2LCh</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-UCS2Lab" title="im_UCS2Lab ()">im_UCS2Lab</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-XYZ2Lab" title="im_XYZ2Lab ()">im_XYZ2Lab</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-XYZ2Lab-temp" title="im_XYZ2Lab_temp ()">im_XYZ2Lab_temp</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-XYZ2UCS" title="im_XYZ2UCS ()">im_XYZ2UCS</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-sRGB2XYZ" title="im_sRGB2XYZ ()">im_sRGB2XYZ</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-XYZ2sRGB" title="im_XYZ2sRGB ()">im_XYZ2sRGB</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-Yxy2XYZ" title="im_Yxy2XYZ ()">im_Yxy2XYZ</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-XYZ2Yxy" title="im_XYZ2Yxy ()">im_XYZ2Yxy</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-dECMC-fromLab" title="im_dECMC_fromLab ()">im_dECMC_fromLab</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-dE00-fromLab" title="im_dE00_fromLab ()">im_dE00_fromLab</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-dE-fromXYZ" title="im_dE_fromXYZ ()">im_dE_fromXYZ</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-dE-fromLab" title="im_dE_fromLab ()">im_dE_fromLab</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-lab-morph" title="im_lab_morph ()">im_lab_morph</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>,
doc/reference/html/libvips-colour.html:enum                <a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent">VipsIntent</a>;
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-icc-present" title="im_icc_present ()">im_icc_present</a>                      (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-icc-transform" title="im_icc_transform ()">im_icc_transform</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent"><span class="type">VipsIntent</span></a> intent</code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-icc-import" title="im_icc_import ()">im_icc_import</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent"><span class="type">VipsIntent</span></a> intent</code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-icc-import-embedded" title="im_icc_import_embedded ()">im_icc_import_embedded</a>              (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent"><span class="type">VipsIntent</span></a> intent</code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-icc-export-depth" title="im_icc_export_depth ()">im_icc_export_depth</a>                 (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent"><span class="type">VipsIntent</span></a> intent</code></em>);
doc/reference/html/libvips-colour.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-colour.html#im-icc-ac2rc" title="im_icc_ac2rc ()">im_icc_ac2rc</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-colour.html:<a name="libvips-colour.description"></a><h2>Description</h2>
doc/reference/html/libvips-colour.html:Radiance images have four 8-bits bands and store 8 bits of R, G and B and
doc/reference/html/libvips-colour.html:	 LabQ images have four 8-bit bands and store 10 bits of L and 11 bits 
doc/reference/html/libvips-colour.html:	 tagged with <a class="link" href="libvips-image.html#IM-CODING-LABQ:CAPS"><code class="literal">IM_CODING_LABQ</code></a>), though a few operations such as
doc/reference/html/libvips-colour.html:	 <a class="link" href="libvips-conversion.html#im-extract-area" title="im_extract_area ()"><code class="function">im_extract_area()</code></a> will work directly with them.
doc/reference/html/libvips-colour.html: three-band <a class="link" href="libvips-image.html#IM-BANDFMT-SHORT:CAPS"><span class="type">IM_BANDFMT_SHORT</span></a> image, scaled to fit the full range of 
doc/reference/html/libvips-colour.html:	 Lab colourspace represents CIELAB colour values with a three-band
doc/reference/html/libvips-colour.html: <a class="link" href="libvips-image.html#IM-BANDFMT-FLOAT:CAPS"><span class="type">IM_BANDFMT_FLOAT</span></a> image. This is the simplest format for general 
doc/reference/html/libvips-colour.html: little effort, see <a class="link" href="libvips-colour.html#im-XYZ2Lab-temp" title="im_XYZ2Lab_temp ()"><code class="function">im_XYZ2Lab_temp()</code></a>.
doc/reference/html/libvips-colour.html:	 CIE XYZ colour space represented as a three-band <a class="link" href="libvips-image.html#IM-BANDFMT-FLOAT:CAPS"><code class="literal">IM_BANDFMT_FLOAT</code></a>
doc/reference/html/libvips-colour.html:	 CIE Yxy colour space represented as a three-band <a class="link" href="libvips-image.html#IM-BANDFMT-FLOAT:CAPS"><code class="literal">IM_BANDFMT_FLOAT</code></a>
doc/reference/html/libvips-colour.html:(also refered to as <code class="code">disp</code>+) This is a generic 8-bit RGB
doc/reference/html/libvips-colour.html:<a name="libvips-colour.details"></a><h2>Details</h2>
doc/reference/html/libvips-colour.html:<a name="IM-D93-X0:CAPS"></a><h3>IM_D93_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D93-Y0:CAPS"></a><h3>IM_D93_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D93-Z0:CAPS"></a><h3>IM_D93_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D75-X0:CAPS"></a><h3>IM_D75_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D75-Y0:CAPS"></a><h3>IM_D75_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D75-Z0:CAPS"></a><h3>IM_D75_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D65-X0:CAPS"></a><h3>IM_D65_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D65-Y0:CAPS"></a><h3>IM_D65_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D65-Z0:CAPS"></a><h3>IM_D65_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D55-X0:CAPS"></a><h3>IM_D55_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D55-Y0:CAPS"></a><h3>IM_D55_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D55-Z0:CAPS"></a><h3>IM_D55_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D50-X0:CAPS"></a><h3>IM_D50_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D50-Y0:CAPS"></a><h3>IM_D50_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D50-Z0:CAPS"></a><h3>IM_D50_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-A-X0:CAPS"></a><h3>IM_A_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-A-Y0:CAPS"></a><h3>IM_A_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-A-Z0:CAPS"></a><h3>IM_A_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-B-X0:CAPS"></a><h3>IM_B_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-B-Y0:CAPS"></a><h3>IM_B_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-B-Z0:CAPS"></a><h3>IM_B_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-C-X0:CAPS"></a><h3>IM_C_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-C-Y0:CAPS"></a><h3>IM_C_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-C-Z0:CAPS"></a><h3>IM_C_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-E-X0:CAPS"></a><h3>IM_E_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-E-Y0:CAPS"></a><h3>IM_E_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-E-Z0:CAPS"></a><h3>IM_E_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D3250-X0:CAPS"></a><h3>IM_D3250_X0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D3250-Y0:CAPS"></a><h3>IM_D3250_Y0</h3>
doc/reference/html/libvips-colour.html:<a name="IM-D3250-Z0:CAPS"></a><h3>IM_D3250_Z0</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-ab2Ch"></a><h3>im_col_ab2Ch ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-Ch2ab"></a><h3>im_col_Ch2ab ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-XYZ2Lab"></a><h3>im_col_XYZ2Lab ()</h3>
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-XYZ2Lab-temp" title="im_XYZ2Lab_temp ()"><code class="function">im_XYZ2Lab_temp()</code></a>.
doc/reference/html/libvips-colour.html:<a name="im-col-Lab2XYZ"></a><h3>im_col_Lab2XYZ ()</h3>
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-Lab2XYZ-temp" title="im_Lab2XYZ_temp ()"><code class="function">im_Lab2XYZ_temp()</code></a>.
doc/reference/html/libvips-colour.html:<a name="im-col-pythagoras"></a><h3>im_col_pythagoras ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-make-tables-UCS"></a><h3>im_col_make_tables_UCS ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-L2Lucs"></a><h3>im_col_L2Lucs ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-Lucs2L"></a><h3>im_col_Lucs2L ()</h3>
doc/reference/html/libvips-colour.html:Calculate L from Lucs using a table. Call <a class="link" href="libvips-colour.html#im-col-make-tables-UCS" title="im_col_make_tables_UCS ()"><code class="function">im_col_make_tables_UCS()</code></a> at
doc/reference/html/libvips-colour.html:<a name="im-col-C2Cucs"></a><h3>im_col_C2Cucs ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-Cucs2C"></a><h3>im_col_Cucs2C ()</h3>
doc/reference/html/libvips-colour.html:Call <a class="link" href="libvips-colour.html#im-col-make-tables-UCS" title="im_col_make_tables_UCS ()"><code class="function">im_col_make_tables_UCS()</code></a> at
doc/reference/html/libvips-colour.html:<a name="im-col-Ch2hucs"></a><h3>im_col_Ch2hucs ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-Chucs2h"></a><h3>im_col_Chucs2h ()</h3>
doc/reference/html/libvips-colour.html:Call <a class="link" href="libvips-colour.html#im-col-make-tables-UCS" title="im_col_make_tables_UCS ()"><code class="function">im_col_make_tables_UCS()</code></a> at
doc/reference/html/libvips-colour.html:<a name="im-col-ab2h"></a><h3>im_col_ab2h ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-dECMC"></a><h3>im_col_dECMC ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-col-dE00"></a><h3>im_col_dE00 ()</h3>
doc/reference/html/libvips-colour.html:Luo, Cui, Rigg, "The Development of the CIE 2000 Colour-Difference 
doc/reference/html/libvips-colour.html:<a name="im-Lab2LCh"></a><h3>im_Lab2LCh ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-LCh2Lab"></a><h3>im_LCh2Lab ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-LabQ2XYZ"></a><h3>im_LabQ2XYZ ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-rad2float"></a><h3>im_rad2float ()</h3>
doc/reference/html/libvips-colour.html:Unpack a RAD (<a class="link" href="libvips-image.html#IM-CODING-RAD:CAPS"><span class="type">IM_CODING_RAD</span></a>) image to a three-band float image.
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-rad2float" title="im_rad2float ()"><code class="function">im_rad2float()</code></a>, <a class="link" href="libvips-colour.html#im-LabQ2LabS" title="im_LabQ2LabS ()"><code class="function">im_LabQ2LabS()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-float2rad"></a><h3>im_float2rad ()</h3>
doc/reference/html/libvips-colour.html:Convert a three-band float image to Radiance 32-bit packed format.
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-rad2float" title="im_rad2float ()"><code class="function">im_rad2float()</code></a>, <span class="type">VipsFormatRad</span>, <a class="link" href="libvips-colour.html#im-LabQ2Lab" title="im_LabQ2Lab ()"><code class="function">im_LabQ2Lab()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-LCh2UCS"></a><h3>im_LCh2UCS ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-Lab2LabQ"></a><h3>im_Lab2LabQ ()</h3>
doc/reference/html/libvips-colour.html:Convert a Lab three-band float image to LabQ (<a class="link" href="libvips-image.html#IM-CODING-LABQ:CAPS"><span class="type">IM_CODING_LABQ</span></a>).
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-LabQ2Lab" title="im_LabQ2Lab ()"><code class="function">im_LabQ2Lab()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-Lab2LabS"></a><h3>im_Lab2LabS ()</h3>
doc/reference/html/libvips-colour.html:Turn Lab to LabS, signed 16-bit int fixed point.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-Lab2XYZ"></a><h3>im_Lab2XYZ ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-Lab2XYZ-temp"></a><h3>im_Lab2XYZ_temp ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-Lab2UCS"></a><h3>im_Lab2UCS ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-LabQ2Lab"></a><h3>im_LabQ2Lab ()</h3>
doc/reference/html/libvips-colour.html:Unpack a LabQ (<a class="link" href="libvips-image.html#IM-CODING-LABQ:CAPS"><span class="type">IM_CODING_LABQ</span></a>) image to a three-band float image.
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-LabQ2Lab" title="im_LabQ2Lab ()"><code class="function">im_LabQ2Lab()</code></a>, <a class="link" href="libvips-colour.html#im-LabQ2LabS" title="im_LabQ2LabS ()"><code class="function">im_LabQ2LabS()</code></a>, <a class="link" href="libvips-colour.html#im-rad2float" title="im_rad2float ()"><code class="function">im_rad2float()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-LabQ2LabS"></a><h3>im_LabQ2LabS ()</h3>
doc/reference/html/libvips-colour.html:Unpack a LabQ (<a class="link" href="libvips-image.html#IM-CODING-LABQ:CAPS"><span class="type">IM_CODING_LABQ</span></a>) image to a three-band signed short image.
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-LabS2LabQ" title="im_LabS2LabQ ()"><code class="function">im_LabS2LabQ()</code></a>, <a class="link" href="libvips-colour.html#im-LabQ2Lab" title="im_LabQ2Lab ()"><code class="function">im_LabQ2Lab()</code></a>, <a class="link" href="libvips-colour.html#im-rad2float" title="im_rad2float ()"><code class="function">im_rad2float()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-LabS2LabQ"></a><h3>im_LabS2LabQ ()</h3>
doc/reference/html/libvips-colour.html:Convert a LabS three-band signed short image to LabQ
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-LabQ2LabS" title="im_LabQ2LabS ()"><code class="function">im_LabQ2LabS()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-LabS2Lab"></a><h3>im_LabS2Lab ()</h3>
doc/reference/html/libvips-colour.html:Convert a LabS three-band signed short image to a three-band float image.
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-Lab2LabS" title="im_Lab2LabS ()"><code class="function">im_Lab2LabS()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-UCS2XYZ"></a><h3>im_UCS2XYZ ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-UCS2LCh"></a><h3>im_UCS2LCh ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-UCS2Lab"></a><h3>im_UCS2Lab ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-XYZ2Lab"></a><h3>im_XYZ2Lab ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-XYZ2Lab-temp"></a><h3>im_XYZ2Lab_temp ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-XYZ2UCS"></a><h3>im_XYZ2UCS ()</h3>
doc/reference/html/libvips-colour.html:<a name="im-sRGB2XYZ"></a><h3>im_sRGB2XYZ ()</h3>
doc/reference/html/libvips-colour.html:rather than accurate. Use an ICC profile with <a class="link" href="libvips-colour.html#im-icc-transform" title="im_icc_transform ()"><code class="function">im_icc_transform()</code></a> for more
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-XYZ2sRGB"></a><h3>im_XYZ2sRGB ()</h3>
doc/reference/html/libvips-colour.html:rather than accurate. Use an ICC profile with <a class="link" href="libvips-colour.html#im-icc-transform" title="im_icc_transform ()"><code class="function">im_icc_transform()</code></a> for more
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-Yxy2XYZ"></a><h3>im_Yxy2XYZ ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-XYZ2Yxy"></a><h3>im_XYZ2Yxy ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-dECMC-fromLab"></a><h3>im_dECMC_fromLab ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-dE00-fromLab"></a><h3>im_dE00_fromLab ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-dE-fromXYZ"></a><h3>im_dE_fromXYZ ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-dE-fromLab"></a><h3>im_dE_fromLab ()</h3>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-lab-morph"></a><h3>im_lab_morph ()</h3>
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>,
doc/reference/html/libvips-colour.html:<td class="auto-generated"> </td>
doc/reference/html/libvips-colour.html:<td align="left">-3.95</td>
doc/reference/html/libvips-colour.html:<td align="left">-2.62</td>
doc/reference/html/libvips-colour.html:<td align="left">-1.95</td>
doc/reference/html/libvips-colour.html:<td align="left">-2.01</td>
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-icc-present"></a><h3>im_icc_present ()</h3>
doc/reference/html/libvips-colour.html:<td> non-zero if the ICC library is present.
doc/reference/html/libvips-colour.html:<a name="im-icc-transform"></a><h3>im_icc_transform ()</h3>
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent"><span class="type">VipsIntent</span></a> intent</code></em>);</pre>
doc/reference/html/libvips-colour.html:profile-connection space with the input profile and then to the output
doc/reference/html/libvips-colour.html:Use <a class="link" href="libvips-colour.html#im-icc-import" title="im_icc_import ()"><code class="function">im_icc_import()</code></a> and <a class="link" href="libvips-colour.html#im-icc-export-depth" title="im_icc_export_depth ()"><code class="function">im_icc_export_depth()</code></a> to do either the first or 
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-icc-import" title="im_icc_import ()"><code class="function">im_icc_import()</code></a>, <a class="link" href="libvips-colour.html#im-icc-export-depth" title="im_icc_export_depth ()"><code class="function">im_icc_export_depth()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-icc-import"></a><h3>im_icc_import ()</h3>
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent"><span class="type">VipsIntent</span></a> intent</code></em>);</pre>
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-icc-transform" title="im_icc_transform ()"><code class="function">im_icc_transform()</code></a>, <a class="link" href="libvips-colour.html#im-icc-import-embedded" title="im_icc_import_embedded ()"><code class="function">im_icc_import_embedded()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-icc-import-embedded"></a><h3>im_icc_import_embedded ()</h3>
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent"><span class="type">VipsIntent</span></a> intent</code></em>);</pre>
doc/reference/html/libvips-colour.html:name <a class="link" href="libvips-meta.html#IM-META-ICC-NAME:CAPS" title="IM_META_ICC_NAME"><span class="type">IM_META_ICC_NAME</span></a>.
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-icc-transform" title="im_icc_transform ()"><code class="function">im_icc_transform()</code></a>, <a class="link" href="libvips-colour.html#im-icc-import" title="im_icc_import ()"><code class="function">im_icc_import()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-icc-export-depth"></a><h3>im_icc_export_depth ()</h3>
doc/reference/html/libvips-colour.html:                                                         <em class="parameter"><code><a class="link" href="libvips-colour.html#VipsIntent" title="enum VipsIntent"><span class="type">VipsIntent</span></a> intent</code></em>);</pre>
doc/reference/html/libvips-colour.html:<em class="parameter"><code>depth</code></em> can be 8 or 16, for 8 or 16-bit image export.
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-icc-transform" title="im_icc_transform ()"><code class="function">im_icc_transform()</code></a>, <a class="link" href="libvips-colour.html#im-icc-import" title="im_icc_import ()"><code class="function">im_icc_import()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="im-icc-ac2rc"></a><h3>im_icc_ac2rc ()</h3>
doc/reference/html/libvips-colour.html:See also: <a class="link" href="libvips-colour.html#im-icc-transform" title="im_icc_transform ()"><code class="function">im_icc_transform()</code></a>, <a class="link" href="libvips-colour.html#im-icc-import" title="im_icc_import ()"><code class="function">im_icc_import()</code></a>.
doc/reference/html/libvips-colour.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-colour.html:<a name="libvips-colour.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-colour.html:<a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/libvips-colour.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-morphology.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-morphology.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-morphology.html:<link rel="next" href="libvips-resample.html" title="resample">
doc/reference/html/libvips-morphology.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-morphology.html:<td><a accesskey="n" href="libvips-resample.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-morphology.html:<a href="#libvips-morphology.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-morphology.html:                  <a href="#libvips-morphology.description" class="shortcut">Description</a>
doc/reference/html/libvips-morphology.html:<a name="libvips-morphology"></a><div class="titlepage"></div>
doc/reference/html/libvips-morphology.html:<h2><span class="refentrytitle"><a name="libvips-morphology.top_of_page"></a>morphology</span></h2>
doc/reference/html/libvips-morphology.html:<a name="libvips-morphology.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-morphology.html:<a name="libvips-morphology.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-morphology.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-morphology.html#im-dilate" title="im_dilate ()">im_dilate</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-morphology.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);
doc/reference/html/libvips-morphology.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-morphology.html#im-erode" title="im_erode ()">im_erode</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-morphology.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);
doc/reference/html/libvips-morphology.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-morphology.html#im-rank" title="im_rank ()">im_rank</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-morphology.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-morphology.html#im-rank-image" title="im_rank_image ()">im_rank_image</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> **in</code></em>,
doc/reference/html/libvips-morphology.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-morphology.html#im-maxvalue" title="im_maxvalue ()">im_maxvalue</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> **in</code></em>,
doc/reference/html/libvips-morphology.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-morphology.html#im-cntlines" title="im_cntlines ()">im_cntlines</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-morphology.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-morphology.html#im-zerox" title="im_zerox ()">im_zerox</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-morphology.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-morphology.html#im-profile" title="im_profile ()">im_profile</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-morphology.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-morphology.html#im-label-regions" title="im_label_regions ()">im_label_regions</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *test</code></em>,
doc/reference/html/libvips-morphology.html:<a name="libvips-morphology.description"></a><h2>Description</h2>
doc/reference/html/libvips-morphology.html:<a name="libvips-morphology.details"></a><h2>Details</h2>
doc/reference/html/libvips-morphology.html:<a name="im-dilate"></a><h3>im_dilate ()</h3>
doc/reference/html/libvips-morphology.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);</pre>
doc/reference/html/libvips-morphology.html:<a name="im-erode"></a><h3>im_erode ()</h3>
doc/reference/html/libvips-morphology.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *m</code></em>);</pre>
doc/reference/html/libvips-morphology.html:<a name="im-rank"></a><h3>im_rank ()</h3>
doc/reference/html/libvips-morphology.html:<a name="im-rank-image"></a><h3>im_rank_image ()</h3>
doc/reference/html/libvips-morphology.html:<a name="im-maxvalue"></a><h3>im_maxvalue ()</h3>
doc/reference/html/libvips-morphology.html:<a name="im-cntlines"></a><h3>im_cntlines ()</h3>
doc/reference/html/libvips-morphology.html:<a name="im-zerox"></a><h3>im_zerox ()</h3>
doc/reference/html/libvips-morphology.html:<a name="im-profile"></a><h3>im_profile ()</h3>
doc/reference/html/libvips-morphology.html:<a name="im-label-regions"></a><h3>im_label_regions ()</h3>
doc/reference/html/libvips-morphology.html:<a name="libvips-morphology.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-morphology.html:<a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/libvips-morphology.html:          Generated by GTK-Doc V1.14</div>
Coincidencia en el archivo binario doc/reference/html/home.png
doc/reference/html/ch03.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/ch03.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/ch03.html:<link rel="prev" href="libvips-histograms-lut.html" title="histograms_lut">
doc/reference/html/ch03.html:<link rel="next" href="libvips-morphology.html" title="morphology">
doc/reference/html/ch03.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/ch03.html:<td><a accesskey="p" href="libvips-histograms-lut.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/ch03.html:<td><a accesskey="n" href="libvips-morphology.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/ch03.html:<span class="refentrytitle"><a href="libvips-morphology.html">morphology</a></span><span class="refpurpose"> — morphological operators, rank filters and related image 
doc/reference/html/ch03.html:<span class="refentrytitle"><a href="libvips-resample.html">resample</a></span><span class="refpurpose"> — shrink, expand, rotate with a choice of interpolators</span>
doc/reference/html/ch03.html:<span class="refentrytitle"><a href="libvips-mask.html">mask</a></span><span class="refpurpose"> — load, save and process mask (matrix) objects</span>
doc/reference/html/ch03.html:<span class="refentrytitle"><a href="libvips-inplace.html">inplace</a></span><span class="refpurpose"> — in-place paintbox operations: flood, paste, line,
doc/reference/html/ch03.html:<span class="refentrytitle"><a href="libvips-mosaicing.html">mosaicing</a></span><span class="refpurpose"> — build image mosaics</span>
doc/reference/html/ch03.html:<span class="refentrytitle"><a href="libvips-other.html">other</a></span><span class="refpurpose"> — miscellaneous operators</span>
doc/reference/html/ch03.html:<span class="refentrytitle"><a href="libvips-video.html">video</a></span><span class="refpurpose"> — various video grabbers</span>
doc/reference/html/ch03.html:<span class="refentrytitle"><a href="libvips-cimg-funcs.html">cimg_funcs</a></span><span class="refpurpose"> — expose operations from the CImg library, mostly noise
doc/reference/html/ch03.html:some non-linear</span>
doc/reference/html/ch03.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/VipsInterpolate.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/VipsInterpolate.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/VipsInterpolate.html:<link rel="prev" href="libvips-cimg-funcs.html" title="cimg_funcs">
doc/reference/html/VipsInterpolate.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/VipsInterpolate.html:<td><a accesskey="p" href="libvips-cimg-funcs.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/VipsInterpolate.html:                  <a href="#VipsInterpolate.object-hierarchy" class="shortcut">Object Hierarchy</a>
doc/reference/html/VipsInterpolate.html:some non-linear</p>
doc/reference/html/VipsInterpolate.html:<a name="VipsInterpolate.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/VipsInterpolate.html:                    <a class="link" href="VipsInterpolate.html#VipsInterpolate-struct" title="VipsInterpolate">VipsInterpolate</a>;
doc/reference/html/VipsInterpolate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *in</code></em>,
doc/reference/html/VipsInterpolate.html:<span class="returnvalue">void</span>                <a class="link" href="VipsInterpolate.html#vips-interpolate" title="vips_interpolate ()">vips_interpolate</a>                    (<em class="parameter"><code><a class="link" href="VipsInterpolate.html" title="VipsInterpolate"><span class="type">VipsInterpolate</span></a> *interpolate</code></em>,
doc/reference/html/VipsInterpolate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *in</code></em>,
doc/reference/html/VipsInterpolate.html:<a class="link" href="VipsInterpolate.html#VipsInterpolateMethod" title="VipsInterpolateMethod ()"><span class="returnvalue">VipsInterpolateMethod</span></a>  <a class="link" href="VipsInterpolate.html#vips-interpolate-get-method" title="vips_interpolate_get_method ()">vips_interpolate_get_method</a>      (<em class="parameter"><code><a class="link" href="VipsInterpolate.html" title="VipsInterpolate"><span class="type">VipsInterpolate</span></a> *Param1</code></em>);
doc/reference/html/VipsInterpolate.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsInterpolate.html#vips-interpolate-get-window-size" title="vips_interpolate_get_window_size ()">vips_interpolate_get_window_size</a>    (<em class="parameter"><code><a class="link" href="VipsInterpolate.html" title="VipsInterpolate"><span class="type">VipsInterpolate</span></a> *interpolate</code></em>);
doc/reference/html/VipsInterpolate.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsInterpolate.html#vips-interpolate-get-window-offset" title="vips_interpolate_get_window_offset ()">vips_interpolate_get_window_offset</a>  (<em class="parameter"><code><a class="link" href="VipsInterpolate.html" title="VipsInterpolate"><span class="type">VipsInterpolate</span></a> *interpolate</code></em>);
doc/reference/html/VipsInterpolate.html:#define             <a class="link" href="VipsInterpolate.html#VIPS-TRANSFORM-SHIFT:CAPS" title="VIPS_TRANSFORM_SHIFT">VIPS_TRANSFORM_SHIFT</a>
doc/reference/html/VipsInterpolate.html:#define             <a class="link" href="VipsInterpolate.html#VIPS-TRANSFORM-SCALE:CAPS" title="VIPS_TRANSFORM_SCALE">VIPS_TRANSFORM_SCALE</a>
doc/reference/html/VipsInterpolate.html:#define             <a class="link" href="VipsInterpolate.html#VIPS-INTERPOLATE-SHIFT:CAPS" title="VIPS_INTERPOLATE_SHIFT">VIPS_INTERPOLATE_SHIFT</a>
doc/reference/html/VipsInterpolate.html:#define             <a class="link" href="VipsInterpolate.html#VIPS-INTERPOLATE-SCALE:CAPS" title="VIPS_INTERPOLATE_SCALE">VIPS_INTERPOLATE_SCALE</a>
doc/reference/html/VipsInterpolate.html:<a class="link" href="VipsInterpolate.html" title="VipsInterpolate"><span class="returnvalue">VipsInterpolate</span></a> *   <a class="link" href="VipsInterpolate.html#vips-interpolate-nearest-static" title="vips_interpolate_nearest_static ()">vips_interpolate_nearest_static</a>     (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/VipsInterpolate.html:<a class="link" href="VipsInterpolate.html" title="VipsInterpolate"><span class="returnvalue">VipsInterpolate</span></a> *   <a class="link" href="VipsInterpolate.html#vips-interpolate-bilinear-static" title="vips_interpolate_bilinear_static ()">vips_interpolate_bilinear_static</a>    (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/VipsInterpolate.html:<a class="link" href="VipsInterpolate.html" title="VipsInterpolate"><span class="returnvalue">VipsInterpolate</span></a> *   <a class="link" href="VipsInterpolate.html#vips-interpolate-bicubic-static" title="vips_interpolate_bicubic_static ()">vips_interpolate_bicubic_static</a>     (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/VipsInterpolate.html:<a class="link" href="VipsInterpolate.html" title="VipsInterpolate"><span class="returnvalue">VipsInterpolate</span></a> *   <a class="link" href="VipsInterpolate.html#vips-interpolate-new" title="vips_interpolate_new ()">vips_interpolate_new</a>                (<em class="parameter"><code>const <span class="type">char</span> *nickname</code></em>);
doc/reference/html/VipsInterpolate.html:<span class="returnvalue">void</span>                <a class="link" href="VipsInterpolate.html#vips--interpolate-init" title="vips__interpolate_init ()">vips__interpolate_init</a>              (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/VipsInterpolate.html:<a name="VipsInterpolate.object-hierarchy"></a><h2>Object Hierarchy</h2>
doc/reference/html/VipsInterpolate.html:   +----<a class="link" href="libvips-VipsArgument.html#VipsObject">VipsObject</a>
doc/reference/html/VipsInterpolate.html:         +----VipsInterpolate
doc/reference/html/VipsInterpolate.html:<a name="VipsInterpolate-struct"></a><h3>VipsInterpolate</h3>
doc/reference/html/VipsInterpolate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *in</code></em>,
doc/reference/html/VipsInterpolate.html:<a name="vips-interpolate"></a><h3>vips_interpolate ()</h3>
doc/reference/html/VipsInterpolate.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *in</code></em>,
doc/reference/html/VipsInterpolate.html:<a name="vips-interpolate-get-method"></a><h3>vips_interpolate_get_method ()</h3>
doc/reference/html/VipsInterpolate.html:<a name="vips-interpolate-get-window-size"></a><h3>vips_interpolate_get_window_size ()</h3>
doc/reference/html/VipsInterpolate.html:<a name="vips-interpolate-get-window-offset"></a><h3>vips_interpolate_get_window_offset ()</h3>
doc/reference/html/VipsInterpolate.html:<a name="VIPS-TRANSFORM-SHIFT:CAPS"></a><h3>VIPS_TRANSFORM_SHIFT</h3>
doc/reference/html/VipsInterpolate.html:<a name="VIPS-TRANSFORM-SCALE:CAPS"></a><h3>VIPS_TRANSFORM_SCALE</h3>
doc/reference/html/VipsInterpolate.html:<a name="VIPS-INTERPOLATE-SHIFT:CAPS"></a><h3>VIPS_INTERPOLATE_SHIFT</h3>
doc/reference/html/VipsInterpolate.html:<a name="VIPS-INTERPOLATE-SCALE:CAPS"></a><h3>VIPS_INTERPOLATE_SCALE</h3>
doc/reference/html/VipsInterpolate.html:<a name="vips-interpolate-nearest-static"></a><h3>vips_interpolate_nearest_static ()</h3>
doc/reference/html/VipsInterpolate.html:<a name="vips-interpolate-bilinear-static"></a><h3>vips_interpolate_bilinear_static ()</h3>
doc/reference/html/VipsInterpolate.html:<a name="vips-interpolate-bicubic-static"></a><h3>vips_interpolate_bicubic_static ()</h3>
doc/reference/html/VipsInterpolate.html:<a name="vips-interpolate-new"></a><h3>vips_interpolate_new ()</h3>
doc/reference/html/VipsInterpolate.html:<a name="vips--interpolate-init"></a><h3>vips__interpolate_init ()</h3>
doc/reference/html/VipsInterpolate.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-convolution.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-convolution.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-convolution.html:<link rel="prev" href="libvips-conversion.html" title="conversion">
doc/reference/html/libvips-convolution.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-convolution.html:<td><a accesskey="p" href="libvips-conversion.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-convolution.html:<a href="#libvips-convolution.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-convolution.html:                  <a href="#libvips-convolution.description" class="shortcut">Description</a>
doc/reference/html/libvips-convolution.html:<a name="libvips-convolution"></a><div class="titlepage"></div>
doc/reference/html/libvips-convolution.html:<h2><span class="refentrytitle"><a name="libvips-convolution.top_of_page"></a>convolution</span></h2>
doc/reference/html/libvips-convolution.html:<a name="libvips-convolution.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-convolution.html:<a name="libvips-convolution.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()">im_conv</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-conv-f" title="im_conv_f ()">im_conv_f</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-convsep" title="im_convsep ()">im_convsep</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-convsep-f" title="im_convsep_f ()">im_convsep_f</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-compass" title="im_compass ()">im_compass</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-gradient" title="im_gradient ()">im_gradient</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-lindetect" title="im_lindetect ()">im_lindetect</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-sharpen" title="im_sharpen ()">im_sharpen</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-grad-x" title="im_grad_x ()">im_grad_x</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-grad-y" title="im_grad_y ()">im_grad_y</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-fastcor" title="im_fastcor ()">im_fastcor</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-spcor" title="im_spcor ()">im_spcor</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-gradcor" title="im_gradcor ()">im_gradcor</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-contrast-surface" title="im_contrast_surface ()">im_contrast_surface</a>                 (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-convolution.html#im-addgnoise" title="im_addgnoise ()">im_addgnoise</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-convolution.html:<a name="libvips-convolution.description"></a><h2>Description</h2>
doc/reference/html/libvips-convolution.html:<a name="libvips-convolution.details"></a><h2>Details</h2>
doc/reference/html/libvips-convolution.html:<a name="im-conv"></a><h3>im_conv ()</h3>
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-convolution.html:always has the same <a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> as the input image. Non-complex images
doc/reference/html/libvips-convolution.html:includes round-to-nearest.
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-conv-f" title="im_conv_f ()"><code class="function">im_conv_f()</code></a>, <a class="link" href="libvips-convolution.html#im-convsep" title="im_convsep ()"><code class="function">im_convsep()</code></a>, <a class="link" href="libvips-mask.html#im-create-imaskv" title="im_create_imaskv ()"><code class="function">im_create_imaskv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-conv-f"></a><h3>im_conv_f ()</h3>
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-convolution.html:Convolve <em class="parameter"><code>in</code></em> with <em class="parameter"><code>mask</code></em> using floating-point arithmetic. The output image 
doc/reference/html/libvips-convolution.html:is always <a class="link" href="libvips-image.html#IM-BANDFMT-FLOAT:CAPS"><code class="literal">IM_BANDFMT_FLOAT</code></a> unless <em class="parameter"><code>in</code></em> is <a class="link" href="libvips-image.html#IM-BANDFMT-DOUBLE:CAPS"><code class="literal">IM_BANDFMT_DOUBLE</code></a>, in which case
doc/reference/html/libvips-convolution.html:<em class="parameter"><code>out</code></em> is also <a class="link" href="libvips-image.html#IM-BANDFMT-DOUBLE:CAPS"><code class="literal">IM_BANDFMT_DOUBLE</code></a>. Non-complex images
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>, <a class="link" href="libvips-convolution.html#im-convsep-f" title="im_convsep_f ()"><code class="function">im_convsep_f()</code></a>, <a class="link" href="libvips-mask.html#im-create-dmaskv" title="im_create_dmaskv ()"><code class="function">im_create_dmaskv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-convsep"></a><h3>im_convsep ()</h3>
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-convolution.html:always has the same <a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> as the input image. Non-complex images
doc/reference/html/libvips-convolution.html:includes round-to-nearest.
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-convsep-f" title="im_convsep_f ()"><code class="function">im_convsep_f()</code></a>, <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>, <a class="link" href="libvips-mask.html#im-create-imaskv" title="im_create_imaskv ()"><code class="function">im_create_imaskv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-convsep-f"></a><h3>im_convsep_f ()</h3>
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-convolution.html:Perform a separable convolution of <em class="parameter"><code>in</code></em> with <em class="parameter"><code>mask</code></em> using floating-point 
doc/reference/html/libvips-convolution.html:is always <a class="link" href="libvips-image.html#IM-BANDFMT-FLOAT:CAPS"><code class="literal">IM_BANDFMT_FLOAT</code></a> unless <em class="parameter"><code>in</code></em> is <a class="link" href="libvips-image.html#IM-BANDFMT-DOUBLE:CAPS"><code class="literal">IM_BANDFMT_DOUBLE</code></a>, in which case
doc/reference/html/libvips-convolution.html:<em class="parameter"><code>out</code></em> is also <a class="link" href="libvips-image.html#IM-BANDFMT-DOUBLE:CAPS"><code class="literal">IM_BANDFMT_DOUBLE</code></a>. Non-complex images
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-convsep" title="im_convsep ()"><code class="function">im_convsep()</code></a>, <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>, <a class="link" href="libvips-mask.html#im-create-dmaskv" title="im_create_dmaskv ()"><code class="function">im_create_dmaskv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-compass"></a><h3>im_compass ()</h3>
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-lindetect" title="im_lindetect ()"><code class="function">im_lindetect()</code></a>, <a class="link" href="libvips-convolution.html#im-gradient" title="im_gradient ()"><code class="function">im_gradient()</code></a>, <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-gradient"></a><h3>im_gradient ()</h3>
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-lindetect" title="im_lindetect ()"><code class="function">im_lindetect()</code></a>, <a class="link" href="libvips-convolution.html#im-gradient" title="im_gradient ()"><code class="function">im_gradient()</code></a>, <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-lindetect"></a><h3>im_lindetect ()</h3>
doc/reference/html/libvips-convolution.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-compass" title="im_compass ()"><code class="function">im_compass()</code></a>, <a class="link" href="libvips-convolution.html#im-gradient" title="im_gradient ()"><code class="function">im_gradient()</code></a>, <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-sharpen"></a><h3>im_sharpen ()</h3>
doc/reference/html/libvips-convolution.html:Selectively sharpen the L channel of a LAB image. Works for <a class="link" href="libvips-image.html#IM-CODING-LABQ:CAPS"><code class="literal">IM_CODING_LABQ</code></a> 
doc/reference/html/libvips-convolution.html:generate a high-frequency signal. This signal is passed through a lookup
doc/reference/html/libvips-convolution.html:                   y2 |- - - - - -----------
doc/reference/html/libvips-convolution.html:              -x1     | ...   |    
doc/reference/html/libvips-convolution.html:  -------------------...----------------------&gt;
doc/reference/html/libvips-convolution.html:  ______/ _ _ _ _ _ _ | -y3
doc/reference/html/libvips-convolution.html:pixels/mm). These figures refer to the image raster, not the half-tone 
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-convolution.html:<a name="im-grad-x"></a><h3>im_grad_x ()</h3>
doc/reference/html/libvips-convolution.html:and one pixel less width. One-band integer formats only. The result is
doc/reference/html/libvips-convolution.html:always <a class="link" href="libvips-image.html#IM-BANDFMT-INT:CAPS"><code class="literal">IM_BANDFMT_INT</code></a>.
doc/reference/html/libvips-convolution.html:This operation is much faster than (though equivalent to) <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a> with the
doc/reference/html/libvips-convolution.html:mask [[-1, 1]].
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-grad-y" title="im_grad_y ()"><code class="function">im_grad_y()</code></a>, <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-grad-y"></a><h3>im_grad_y ()</h3>
doc/reference/html/libvips-convolution.html:and one pixel less height. One-band integer formats only. The result is
doc/reference/html/libvips-convolution.html:always <a class="link" href="libvips-image.html#IM-BANDFMT-INT:CAPS"><code class="literal">IM_BANDFMT_INT</code></a>.
doc/reference/html/libvips-convolution.html:This operation is much faster than (though equivalent to) <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a> with the
doc/reference/html/libvips-convolution.html:mask [[-1], [1]].
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-grad-x" title="im_grad_x ()"><code class="function">im_grad_x()</code></a>, <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-fastcor"></a><h3>im_fastcor ()</h3>
doc/reference/html/libvips-convolution.html:differences calculated. One-band, 8-bit unsigned images only. The output
doc/reference/html/libvips-convolution.html:image is always <a class="link" href="libvips-image.html#IM-BANDFMT-UINT:CAPS"><code class="literal">IM_BANDFMT_UINT</code></a>. <em class="parameter"><code>ref</code></em> must be smaller than or equal to 
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-spcor" title="im_spcor ()"><code class="function">im_spcor()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-spcor"></a><h3>im_spcor ()</h3>
doc/reference/html/libvips-convolution.html:calculated. One-band, 8 or 16-bit images only. <em class="parameter"><code>in</code></em> and <em class="parameter"><code>ref</code></em> must have the
doc/reference/html/libvips-convolution.html:same <a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a>. The output
doc/reference/html/libvips-convolution.html:image is always <a class="link" href="libvips-image.html#IM-BANDFMT-FLOAT:CAPS"><code class="literal">IM_BANDFMT_FLOAT</code></a>. <em class="parameter"><code>ref</code></em> must be smaller than or equal to 
doc/reference/html/libvips-convolution.html:         sumij (ref(i,j)-mean(ref))(inkl(i,j)-mean(inkl))
doc/reference/html/libvips-convolution.html:c(k,l) = ------------------------------------------------
doc/reference/html/libvips-convolution.html:         sqrt(sumij (ref(i,j)-mean(ref))^2) *
doc/reference/html/libvips-convolution.html:                     sqrt(sumij (inkl(i,j)-mean(inkl))^2)
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-gradcor" title="im_gradcor ()"><code class="function">im_gradcor()</code></a>, <a class="link" href="libvips-convolution.html#im-fastcor" title="im_fastcor ()"><code class="function">im_fastcor()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-gradcor"></a><h3>im_gradcor ()</h3>
doc/reference/html/libvips-convolution.html:calculated. One-band, integer images only. <em class="parameter"><code>in</code></em> and <em class="parameter"><code>ref</code></em> must have the
doc/reference/html/libvips-convolution.html:same <a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a>. The output
doc/reference/html/libvips-convolution.html:image is always <a class="link" href="libvips-image.html#IM-BANDFMT-FLOAT:CAPS"><code class="literal">IM_BANDFMT_FLOAT</code></a>. <em class="parameter"><code>ref</code></em> must be smaller than <em class="parameter"><code>in</code></em>. The output
doc/reference/html/libvips-convolution.html:dot-product correlation of the two vector images.
doc/reference/html/libvips-convolution.html:equivalent to the complex-number method of:
doc/reference/html/libvips-convolution.html:ARGYRIOU, V. et al. 2003. Estimation of sub-pixel motion using
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-spcor" title="im_spcor ()"><code class="function">im_spcor()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:<a name="im-contrast-surface"></a><h3>im_contrast_surface ()</h3>
doc/reference/html/libvips-convolution.html:point in the input image. Sub-sample by a factor of spacing.
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-convolution.html#im-spcor" title="im_spcor ()"><code class="function">im_spcor()</code></a>, <a class="link" href="libvips-convolution.html#im-gradcor" title="im_gradcor ()"><code class="function">im_gradcor()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-convolution.html:<a name="im-addgnoise"></a><h3>im_addgnoise ()</h3>
doc/reference/html/libvips-convolution.html:See also: <a class="link" href="libvips-conversion.html#im-gaussnoise" title="im_gaussnoise ()"><code class="function">im_gaussnoise()</code></a>.
doc/reference/html/libvips-convolution.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-convolution.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-histograms-lut.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-histograms-lut.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-histograms-lut.html:<link rel="prev" href="libvips-freq-filt.html" title="freq_filt">
doc/reference/html/libvips-histograms-lut.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-histograms-lut.html:<td><a accesskey="p" href="libvips-freq-filt.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-histograms-lut.html:<a href="#libvips-histograms-lut.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-histograms-lut.html:                  <a href="#libvips-histograms-lut.description" class="shortcut">Description</a>
doc/reference/html/libvips-histograms-lut.html:<a name="libvips-histograms-lut"></a><div class="titlepage"></div>
doc/reference/html/libvips-histograms-lut.html:<h2><span class="refentrytitle"><a name="libvips-histograms-lut.top_of_page"></a>histograms_lut</span></h2>
doc/reference/html/libvips-histograms-lut.html:<a name="libvips-histograms-lut.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-histograms-lut.html:<a name="libvips-histograms-lut.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()">im_histgr</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-histnD" title="im_histnD ()">im_histnD</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-hist-indexed" title="im_hist_indexed ()">im_hist_indexed</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *index</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-identity" title="im_identity ()">im_identity</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *lut</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-identity-ushort" title="im_identity_ushort ()">im_identity_ushort</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *lut</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-invertlut" title="im_invertlut ()">im_invertlut</a>                        (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *input</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-buildlut" title="im_buildlut ()">im_buildlut</a>                         (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *input</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-project" title="im_project ()">im_project</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-histnorm" title="im_histnorm ()">im_histnorm</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-histcum" title="im_histcum ()">im_histcum</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-histeq" title="im_histeq ()">im_histeq</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-histspec" title="im_histspec ()">im_histspec</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *hin</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-ismonotonic" title="im_ismonotonic ()">im_ismonotonic</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *lut</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-histplot" title="im_histplot ()">im_histplot</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *hist</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-maplut" title="im_maplut ()">im_maplut</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-hist" title="im_hist ()">im_hist</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-hsp" title="im_hsp ()">im_hsp</a>                              (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-gammacorrect" title="im_gammacorrect ()">im_gammacorrect</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-mpercent" title="im_mpercent ()">im_mpercent</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-mpercent-hist" title="im_mpercent_hist ()">im_mpercent_hist</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *hist</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-heq" title="im_heq ()">im_heq</a>                              (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-lhisteq" title="im_lhisteq ()">im_lhisteq</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-stdif" title="im_stdif ()">im_stdif</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-tone-build-range" title="im_tone_build_range ()">im_tone_build_range</a>                 (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-tone-build" title="im_tone_build ()">im_tone_build</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-tone-analyse" title="im_tone_analyse ()">im_tone_analyse</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-histograms-lut.html#im-tone-map" title="im_tone_map ()">im_tone_map</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-histograms-lut.html:<a name="libvips-histograms-lut.description"></a><h2>Description</h2>
doc/reference/html/libvips-histograms-lut.html:Histograms and look-up tables are 1xn or nx1 images, where n is less than
doc/reference/html/libvips-histograms-lut.html:256 or less than 65536, corresponding to 8- and 16-bit unsigned int images. 
doc/reference/html/libvips-histograms-lut.html:tagged with a <a class="link" href="libvips-image.html#VipsType" title="enum VipsType"><span class="type">VipsType</span></a> of IM_TYPE_HISTOGRAM and usually displayed by
doc/reference/html/libvips-histograms-lut.html:user-interfaces such as nip2 as plots rather than images.
doc/reference/html/libvips-histograms-lut.html:histograms (<a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-buildlut" title="im_buildlut ()"><code class="function">im_buildlut()</code></a>, <code class="function">in_identity()</code>), operations that 
doc/reference/html/libvips-histograms-lut.html:manipulate histograms in some way (<a class="link" href="libvips-histograms-lut.html#im-histcum" title="im_histcum ()"><code class="function">im_histcum()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-histnorm" title="im_histnorm ()"><code class="function">im_histnorm()</code></a>), operations
doc/reference/html/libvips-histograms-lut.html:to apply histograms (<a class="link" href="libvips-histograms-lut.html#im-maplut" title="im_maplut ()"><code class="function">im_maplut()</code></a>), and a variety of utility 
doc/reference/html/libvips-histograms-lut.html:pre-press work for adjusting the appearance of images. They are designed
doc/reference/html/libvips-histograms-lut.html:<a name="libvips-histograms-lut.details"></a><h2>Details</h2>
doc/reference/html/libvips-histograms-lut.html:<a name="im-histgr"></a><h3>im_histgr ()</h3>
doc/reference/html/libvips-histograms-lut.html:one-band histogram), or for all bands (producing an n-band histogram) if 
doc/reference/html/libvips-histograms-lut.html:<em class="parameter"><code>bandno</code></em> is -1. 
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-hist-indexed" title="im_hist_indexed ()"><code class="function">im_hist_indexed()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-histeq" title="im_histeq ()"><code class="function">im_histeq()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-histnD"></a><h3>im_histnD ()</h3>
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>, <code class="function">im_histindexed()</code>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-hist-indexed"></a><h3>im_hist_indexed ()</h3>
doc/reference/html/libvips-histograms-lut.html:non-complex. <em class="parameter"><code>out</code></em> always has the same size and format as <em class="parameter"><code>value</code></em>.
doc/reference/html/libvips-histograms-lut.html:This operation is useful in conjunction with <a class="link" href="libvips-morphology.html#im-label-regions" title="im_label_regions ()"><code class="function">im_label_regions()</code></a>. You can
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>, <a class="link" href="libvips-morphology.html#im-label-regions" title="im_label_regions ()"><code class="function">im_label_regions()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-identity"></a><h3>im_identity ()</h3>
doc/reference/html/libvips-histograms-lut.html:The created image consist a <em class="parameter"><code>bands</code></em>-bands linear lut and is the basis 
doc/reference/html/libvips-histograms-lut.html:for building up look-up tables.
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-identity-ushort" title="im_identity_ushort ()"><code class="function">im_identity_ushort()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-identity-ushort"></a><h3>im_identity_ushort ()</h3>
doc/reference/html/libvips-histograms-lut.html:As <a class="link" href="libvips-histograms-lut.html#im-identity" title="im_identity ()"><code class="function">im_identity()</code></a>, but make a ushort LUT. ushort LUTs can be up to 65536
doc/reference/html/libvips-histograms-lut.html:elements - <em class="parameter"><code>sz</code></em> is the number of elements required.
doc/reference/html/libvips-histograms-lut.html:The created image consist a <em class="parameter"><code>bands</code></em>-bands linear lut and is the basis 
doc/reference/html/libvips-histograms-lut.html:for building up look-up tables.
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-identity" title="im_identity ()"><code class="function">im_identity()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-invertlut"></a><h3>im_invertlut ()</h3>
doc/reference/html/libvips-histograms-lut.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_invertlut                        (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *input</code></em>,
doc/reference/html/libvips-histograms-lut.html:<td class="auto-generated"> </td>
doc/reference/html/libvips-histograms-lut.html:<td class="auto-generated"> </td>
doc/reference/html/libvips-histograms-lut.html:It won't work too well for non-monotonic camera responses 
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-buildlut" title="im_buildlut ()"><code class="function">im_buildlut()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-invertlut" title="im_invertlut ()"><code class="function">im_invertlut()</code></a>
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-buildlut"></a><h3>im_buildlut ()</h3>
doc/reference/html/libvips-histograms-lut.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_buildlut                         (<em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *input</code></em>,
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-identity" title="im_identity ()"><code class="function">im_identity()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-invertlut" title="im_invertlut ()"><code class="function">im_invertlut()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-project"></a><h3>im_project ()</h3>
doc/reference/html/libvips-histograms-lut.html:Non-complex images only.
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>, <a class="link" href="libvips-morphology.html#im-profile" title="im_profile ()"><code class="function">im_profile()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-histnorm"></a><h3>im_histnorm ()</h3>
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-histcum" title="im_histcum ()"><code class="function">im_histcum()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-histcum"></a><h3>im_histcum ()</h3>
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-histnorm" title="im_histnorm ()"><code class="function">im_histnorm()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-histeq"></a><h3>im_histeq ()</h3>
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-heq" title="im_heq ()"><code class="function">im_heq()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-histspec"></a><h3>im_histspec ()</h3>
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-hsp" title="im_hsp ()"><code class="function">im_hsp()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-maplut" title="im_maplut ()"><code class="function">im_maplut()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-ismonotonic"></a><h3>im_ismonotonic ()</h3>
doc/reference/html/libvips-histograms-lut.html:Test <em class="parameter"><code>lut</code></em> for monotonicity. <em class="parameter"><code>out</code></em> is set non-zero if <em class="parameter"><code>lut</code></em> is monotonic.
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-tone-build-range" title="im_tone_build_range ()"><code class="function">im_tone_build_range()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td>lookup-table to test
doc/reference/html/libvips-histograms-lut.html:<td>set non-zero if <em class="parameter"><code>lut</code></em> is monotonic 
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-histplot"></a><h3>im_histplot ()</h3>
doc/reference/html/libvips-histograms-lut.html:<span class="emphasis"><em>other unsigned integer types</em></span> output 0 - maxium 
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-hist-indexed" title="im_hist_indexed ()"><code class="function">im_hist_indexed()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-histeq" title="im_histeq ()"><code class="function">im_histeq()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-maplut"></a><h3>im_maplut ()</h3>
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-identity" title="im_identity ()"><code class="function">im_identity()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td>look-up table
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-hist"></a><h3>im_hist ()</h3>
doc/reference/html/libvips-histograms-lut.html:Find and plot the histogram of <em class="parameter"><code>in</code></em>. If <em class="parameter"><code>bandno</code></em> is -1, plot all bands. 
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-histplot" title="im_histplot ()"><code class="function">im_histplot()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-hsp"></a><h3>im_hsp ()</h3>
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-histspec" title="im_histspec ()"><code class="function">im_histspec()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-gammacorrect"></a><h3>im_gammacorrect ()</h3>
doc/reference/html/libvips-histograms-lut.html:Gamma-correct an 8- or 16-bit unsigned image with a lookup table. The
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-identity" title="im_identity ()"><code class="function">im_identity()</code></a>, <a class="link" href="libvips-arithmetic.html#im-powtra" title="im_powtra ()"><code class="function">im_powtra()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-maplut" title="im_maplut ()"><code class="function">im_maplut()</code></a>
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-mpercent"></a><h3>im_mpercent ()</h3>
doc/reference/html/libvips-histograms-lut.html:<a class="link" href="libvips-histograms-lut.html#im-mpercent" title="im_mpercent ()"><code class="function">im_mpercent()</code></a> returns (through the <em class="parameter"><code>out</code></em> parameter) the threshold above 
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>, <a class="link" href="libvips-morphology.html#im-profile" title="im_profile ()"><code class="function">im_profile()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-mpercent-hist"></a><h3>im_mpercent_hist ()</h3>
doc/reference/html/libvips-histograms-lut.html:Just like <a class="link" href="libvips-histograms-lut.html#im-mpercent" title="im_mpercent ()"><code class="function">im_mpercent()</code></a>, except it works on an image histogram. Handy if
doc/reference/html/libvips-histograms-lut.html:you want to run <a class="link" href="libvips-histograms-lut.html#im-mpercent" title="im_mpercent ()"><code class="function">im_mpercent()</code></a> several times without having to recompute the
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-mpercent" title="im_mpercent ()"><code class="function">im_mpercent()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-heq"></a><h3>im_heq ()</h3>
doc/reference/html/libvips-histograms-lut.html:Histogram-equalise <em class="parameter"><code>in</code></em>. Equalise using band <em class="parameter"><code>bandno</code></em>, or if <em class="parameter"><code>bandno</code></em> is -1,
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-lhisteq" title="im_lhisteq ()"><code class="function">im_lhisteq()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-histgr" title="im_histgr ()"><code class="function">im_histgr()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-histeq" title="im_histeq ()"><code class="function">im_histeq()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-lhisteq"></a><h3>im_lhisteq ()</h3>
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-stdif" title="im_stdif ()"><code class="function">im_stdif()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-heq" title="im_heq ()"><code class="function">im_heq()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-stdif"></a><h3>im_stdif ()</h3>
doc/reference/html/libvips-histograms-lut.html:<a class="link" href="libvips-histograms-lut.html#im-stdif" title="im_stdif ()"><code class="function">im_stdif()</code></a> preforms statistical differencing according to the formula
doc/reference/html/libvips-histograms-lut.html:enhancing low-contrast images with lots of detail, such as X-ray plates.
doc/reference/html/libvips-histograms-lut.html:vout(i,j) = <em class="parameter"><code>a</code></em> * <em class="parameter"><code>m0</code></em> + (1 - <em class="parameter"><code>a</code></em>) * meanv + 
doc/reference/html/libvips-histograms-lut.html:      (vin(i,j) - meanv) * (<em class="parameter"><code>b</code></em> * <em class="parameter"><code>s0</code></em>) / (<em class="parameter"><code>s0</code></em> + <em class="parameter"><code>b</code></em> * stdv)
doc/reference/html/libvips-histograms-lut.html:The operation works on one-band uchar images only, and writes a one-band 
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-lhisteq" title="im_lhisteq ()"><code class="function">im_lhisteq()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-tone-build-range"></a><h3>im_tone_build_range ()</h3>
doc/reference/html/libvips-histograms-lut.html:<a class="link" href="libvips-histograms-lut.html#im-tone-build-range" title="im_tone_build_range ()"><code class="function">im_tone_build_range()</code></a> generates a tone curve for the adjustment of image 
doc/reference/html/libvips-histograms-lut.html:The curve is an unsigned 16-bit image with (<em class="parameter"><code>in_max</code></em> + 1) entries, 
doc/reference/html/libvips-histograms-lut.html:<em class="parameter"><code>Lb</code></em>, <em class="parameter"><code>Lw</code></em> are expressed as 0-100, as in LAB colour space. You 
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-ismonotonic" title="im_ismonotonic ()"><code class="function">im_ismonotonic()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-tone-map" title="im_tone_map ()"><code class="function">im_tone_map()</code></a>, <a class="link" href="libvips-histograms-lut.html#im-tone-analyse" title="im_tone_analyse ()"><code class="function">im_tone_analyse()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-tone-build"></a><h3>im_tone_build ()</h3>
doc/reference/html/libvips-histograms-lut.html:As <a class="link" href="libvips-histograms-lut.html#im-tone-build-range" title="im_tone_build_range ()"><code class="function">im_tone_build_range()</code></a>, but set 32767 and 32767 as values for <em class="parameter"><code>in_max</code></em> 
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-tone-build-range" title="im_tone_build_range ()"><code class="function">im_tone_build_range()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-tone-analyse"></a><h3>im_tone_analyse ()</h3>
doc/reference/html/libvips-histograms-lut.html:As <a class="link" href="libvips-histograms-lut.html#im-tone-build" title="im_tone_build ()"><code class="function">im_tone_build()</code></a>, but analyse the histogram of <em class="parameter"><code>in</code></em> and use it to
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-tone-build" title="im_tone_build ()"><code class="function">im_tone_build()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="im-tone-map"></a><h3>im_tone_map ()</h3>
doc/reference/html/libvips-histograms-lut.html:See also: <a class="link" href="libvips-histograms-lut.html#im-maplut" title="im_maplut ()"><code class="function">im_maplut()</code></a>.
doc/reference/html/libvips-histograms-lut.html:<td>look-up table
doc/reference/html/libvips-histograms-lut.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-histograms-lut.html:<a name="libvips-histograms-lut.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-histograms-lut.html:<a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/libvips-histograms-lut.html:          Generated by GTK-Doc V1.14</div>
Coincidencia en el archivo binario doc/reference/html/interconvert.png
doc/reference/html/libvips-check.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-check.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-check.html:<link rel="prev" href="libvips-header.html" title="header">
doc/reference/html/libvips-check.html:<link rel="next" href="libvips-callback.html" title="callback">
doc/reference/html/libvips-check.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-check.html:<td><a accesskey="p" href="libvips-header.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-check.html:<td><a accesskey="n" href="libvips-callback.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-check.html:<a href="#libvips-check.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-check.html:                  <a href="#libvips-check.description" class="shortcut">Description</a>
doc/reference/html/libvips-check.html:<a name="libvips-check"></a><div class="titlepage"></div>
doc/reference/html/libvips-check.html:<h2><span class="refentrytitle"><a name="libvips-check.top_of_page"></a>check</span></h2>
doc/reference/html/libvips-check.html:<a name="libvips-check.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-check.html:<a name="libvips-check.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-rwcheck" title="im_rwcheck ()">im_rwcheck</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-iocheck" title="im_iocheck ()">im_iocheck</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-incheck" title="im_incheck ()">im_incheck</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-outcheck" title="im_outcheck ()">im_outcheck</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-piocheck" title="im_piocheck ()">im_piocheck</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-pincheck" title="im_pincheck ()">im_pincheck</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-poutcheck" title="im_poutcheck ()">im_poutcheck</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-uncoded" title="im_check_uncoded ()">im_check_uncoded</a>                    (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-coding-known" title="im_check_coding_known ()">im_check_coding_known</a>               (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-coding-labq" title="im_check_coding_labq ()">im_check_coding_labq</a>                (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-coding-rad" title="im_check_coding_rad ()">im_check_coding_rad</a>                 (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-coding-same" title="im_check_coding_same ()">im_check_coding_same</a>                (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-mono" title="im_check_mono ()">im_check_mono</a>                       (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-bands-1or3" title="im_check_bands_1or3 ()">im_check_bands_1or3</a>                 (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-bands" title="im_check_bands ()">im_check_bands</a>                      (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-bands-1orn" title="im_check_bands_1orn ()">im_check_bands_1orn</a>                 (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-bands-same" title="im_check_bands_same ()">im_check_bands_same</a>                 (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-bandno" title="im_check_bandno ()">im_check_bandno</a>                     (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-int" title="im_check_int ()">im_check_int</a>                        (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-uint" title="im_check_uint ()">im_check_uint</a>                       (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-uintorf" title="im_check_uintorf ()">im_check_uintorf</a>                    (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-noncomplex" title="im_check_noncomplex ()">im_check_noncomplex</a>                 (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-complex" title="im_check_complex ()">im_check_complex</a>                    (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-format" title="im_check_format ()">im_check_format</a>                     (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-u8or16" title="im_check_u8or16 ()">im_check_u8or16</a>                     (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-8or16" title="im_check_8or16 ()">im_check_8or16</a>                      (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-u8or16orf" title="im_check_u8or16orf ()">im_check_u8or16orf</a>                  (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-format-same" title="im_check_format_same ()">im_check_format_same</a>                (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-size-same" title="im_check_size_same ()">im_check_size_same</a>                  (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-vector" title="im_check_vector ()">im_check_vector</a>                     (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-hist" title="im_check_hist ()">im_check_hist</a>                       (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-imask" title="im_check_imask ()">im_check_imask</a>                      (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-check.html#im-check-dmask" title="im_check_dmask ()">im_check_dmask</a>                      (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-check.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-check.html#vips-bandfmt-isint" title="vips_bandfmt_isint ()">vips_bandfmt_isint</a>                  (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-check.html#vips-bandfmt-isuint" title="vips_bandfmt_isuint ()">vips_bandfmt_isuint</a>                 (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-check.html#vips-bandfmt-isfloat" title="vips_bandfmt_isfloat ()">vips_bandfmt_isfloat</a>                (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-check.html#vips-bandfmt-iscomplex" title="vips_bandfmt_iscomplex ()">vips_bandfmt_iscomplex</a>              (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-check.html#im-isfile" title="im_isfile ()">im_isfile</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-check.html#im-ispartial" title="im_ispartial ()">im_ispartial</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-check.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-check.html#im-isMSBfirst" title="im_isMSBfirst ()">im_isMSBfirst</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-check.html:<a name="libvips-check.description"></a><h2>Description</h2>
doc/reference/html/libvips-check.html:<a class="link" href="libvips-check.html#im-incheck" title="im_incheck ()"><code class="function">im_incheck()</code></a>, <a class="link" href="libvips-check.html#im-pincheck" title="im_pincheck ()"><code class="function">im_pincheck()</code></a> and friends indicate the image IO style you
doc/reference/html/libvips-check.html:<a class="link" href="libvips-check.html#im-check-mono" title="im_check_mono ()"><code class="function">im_check_mono()</code></a> and friends and convenience functions that test an <span class="type">IMAGE</span> 
doc/reference/html/libvips-check.html:<a name="libvips-check.details"></a><h2>Details</h2>
doc/reference/html/libvips-check.html:<a name="im-rwcheck"></a><h3>im_rwcheck ()</h3>
doc/reference/html/libvips-check.html:Gets an image ready for an in-place operation, such as <a class="link" href="libvips-inplace.html#im-insertplace" title="im_insertplace ()"><code class="function">im_insertplace()</code></a>.
doc/reference/html/libvips-check.html:Operations like this both read and write with <a class="link" href="libvips-image.html#IM-IMAGE-ADDR:CAPS" title="IM_IMAGE_ADDR()"><code class="function">IM_IMAGE_ADDR()</code></a>.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-inplace.html#im-insertplace" title="im_insertplace ()"><code class="function">im_insertplace()</code></a>, <a class="link" href="libvips-check.html#im-incheck" title="im_incheck ()"><code class="function">im_incheck()</code></a>.
doc/reference/html/libvips-check.html:<td>image to make read-write
doc/reference/html/libvips-check.html:<td> 0 on succeess, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-iocheck"></a><h3>im_iocheck ()</h3>
doc/reference/html/libvips-check.html:A convenience function to check a pair of images for IO via <a class="link" href="libvips-image.html#IM-IMAGE-ADDR:CAPS" title="IM_IMAGE_ADDR()"><code class="function">IM_IMAGE_ADDR()</code></a>
doc/reference/html/libvips-check.html:and <a class="link" href="libvips-generate.html#im-writeline" title="im_writeline ()"><code class="function">im_writeline()</code></a>.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-check.html#im-incheck" title="im_incheck ()"><code class="function">im_incheck()</code></a>, <a class="link" href="libvips-check.html#im-outcheck" title="im_outcheck ()"><code class="function">im_outcheck()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on succeess, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-incheck"></a><h3>im_incheck ()</h3>
doc/reference/html/libvips-check.html:Check that an image is readable via the <a class="link" href="libvips-image.html#IM-IMAGE-ADDR:CAPS" title="IM_IMAGE_ADDR()"><code class="function">IM_IMAGE_ADDR()</code></a> macro. If it isn't, 
doc/reference/html/libvips-check.html:try to transform it so that <a class="link" href="libvips-image.html#IM-IMAGE-ADDR:CAPS" title="IM_IMAGE_ADDR()"><code class="function">IM_IMAGE_ADDR()</code></a> can work.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-check.html#im-outcheck" title="im_outcheck ()"><code class="function">im_outcheck()</code></a>, <a class="link" href="libvips-check.html#im-pincheck" title="im_pincheck ()"><code class="function">im_pincheck()</code></a>, <a class="link" href="libvips-check.html#im-rwcheck" title="im_rwcheck ()"><code class="function">im_rwcheck()</code></a>, <a class="link" href="libvips-image.html#IM-IMAGE-ADDR:CAPS" title="IM_IMAGE_ADDR()"><code class="function">IM_IMAGE_ADDR()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on succeess, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-outcheck"></a><h3>im_outcheck ()</h3>
doc/reference/html/libvips-check.html:Check that an image is writeable by <a class="link" href="libvips-generate.html#im-writeline" title="im_writeline ()"><code class="function">im_writeline()</code></a>. If it isn't,
doc/reference/html/libvips-check.html:try to transform it so that <a class="link" href="libvips-generate.html#im-writeline" title="im_writeline ()"><code class="function">im_writeline()</code></a> can work.
doc/reference/html/libvips-check.html:<a class="link" href="libvips-generate.html#im-setupout" title="im_setupout ()"><code class="function">im_setupout()</code></a>, then call <a class="link" href="libvips-generate.html#im-writeline" title="im_writeline ()"><code class="function">im_writeline()</code></a> for each scan line.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-check.html#im-incheck" title="im_incheck ()"><code class="function">im_incheck()</code></a>, <a class="link" href="libvips-check.html#im-poutcheck" title="im_poutcheck ()"><code class="function">im_poutcheck()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on succeess, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-piocheck"></a><h3>im_piocheck ()</h3>
doc/reference/html/libvips-check.html:A convenience function to check a pair of images for IO via <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>
doc/reference/html/libvips-check.html:and <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-check.html#im-pincheck" title="im_pincheck ()"><code class="function">im_pincheck()</code></a>, <a class="link" href="libvips-check.html#im-poutcheck" title="im_poutcheck ()"><code class="function">im_poutcheck()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on succeess, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-pincheck"></a><h3>im_pincheck ()</h3>
doc/reference/html/libvips-check.html:Check that an image is readable with <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a> and friends. If it isn't,
doc/reference/html/libvips-check.html:try to transform the image so that <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a> can work.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-check.html#im-incheck" title="im_incheck ()"><code class="function">im_incheck()</code></a>, <a class="link" href="libvips-check.html#im-poutcheck" title="im_poutcheck ()"><code class="function">im_poutcheck()</code></a>, <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on succeess, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-poutcheck"></a><h3>im_poutcheck ()</h3>
doc/reference/html/libvips-check.html:Check that an image is writeable with <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>. If it isn't,
doc/reference/html/libvips-check.html:try to transform the image so that <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a> can work.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-check.html#im-incheck" title="im_incheck ()"><code class="function">im_incheck()</code></a>, <a class="link" href="libvips-check.html#im-poutcheck" title="im_poutcheck ()"><code class="function">im_poutcheck()</code></a>, <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on succeess, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-check-uncoded"></a><h3>im_check_uncoded ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on OK, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-check-coding-known"></a><h3>im_check_coding_known ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on OK, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-check-coding-labq"></a><h3>im_check_coding_labq ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on OK, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-check-coding-rad"></a><h3>im_check_coding_rad ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on OK, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-check-coding-same"></a><h3>im_check_coding_same ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-mono"></a><h3>im_check_mono ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-bands-1or3"></a><h3>im_check_bands_1or3 ()</h3>
doc/reference/html/libvips-check.html:<a name="im-check-bands"></a><h3>im_check_bands ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-bands-1orn"></a><h3>im_check_bands_1orn ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 on OK, or -1 on error.
doc/reference/html/libvips-check.html:<a name="im-check-bands-same"></a><h3>im_check_bands_same ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-bandno"></a><h3>im_check_bandno ()</h3>
doc/reference/html/libvips-check.html:<em class="parameter"><code>bandno</code></em> should be a valid band number (ie. 0 to im-&gt;Bands - 1), or can be
doc/reference/html/libvips-check.html:-1, meaning all bands. 
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-int"></a><h3>im_check_int ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-uint"></a><h3>im_check_uint ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-uintorf"></a><h3>im_check_uintorf ()</h3>
doc/reference/html/libvips-check.html:Otherwise set an error message and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-noncomplex"></a><h3>im_check_noncomplex ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-complex"></a><h3>im_check_complex ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-format"></a><h3>im_check_format ()</h3>
doc/reference/html/libvips-check.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);</pre>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-u8or16"></a><h3>im_check_u8or16 ()</h3>
doc/reference/html/libvips-check.html:Check that the image is 8 or 16-bit unsigned integer.
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-8or16"></a><h3>im_check_8or16 ()</h3>
doc/reference/html/libvips-check.html:Check that the image is 8 or 16-bit integer, signed or unsigned.
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-u8or16orf"></a><h3>im_check_u8or16orf ()</h3>
doc/reference/html/libvips-check.html:Check that the image is 8 or 16-bit unsigned integer, or float.
doc/reference/html/libvips-check.html:Otherwise set an error message and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-format-same"></a><h3>im_check_format_same ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-size-same"></a><h3>im_check_size_same ()</h3>
doc/reference/html/libvips-check.html:and return non-zero.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-vector"></a><h3>im_check_vector ()</h3>
doc/reference/html/libvips-check.html:Operations with a vector constant need a 1-element vector, or a vector with
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-hist"></a><h3>im_check_hist ()</h3>
doc/reference/html/libvips-check.html:65536 elements. Return 0 if the image will pass as a histogram, or -1 and
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-imask"></a><h3>im_check_imask ()</h3>
doc/reference/html/libvips-check.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#INTMASK:CAPS" title="INTMASK"><span class="type">INTMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-check.html:Sanity-check a mask parameter.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="im-check-dmask"></a><h3>im_check_dmask ()</h3>
doc/reference/html/libvips-check.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *mask</code></em>);</pre>
doc/reference/html/libvips-check.html:Sanity-check a mask parameter.
doc/reference/html/libvips-check.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-check.html:<td> 0 if OK, -1 otherwise.
doc/reference/html/libvips-check.html:<a name="vips-bandfmt-isint"></a><h3>vips_bandfmt_isint ()</h3>
doc/reference/html/libvips-check.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_bandfmt_isint                  (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);</pre>
doc/reference/html/libvips-check.html:<a name="vips-bandfmt-isuint"></a><h3>vips_bandfmt_isuint ()</h3>
doc/reference/html/libvips-check.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_bandfmt_isuint                 (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);</pre>
doc/reference/html/libvips-check.html:<a name="vips-bandfmt-isfloat"></a><h3>vips_bandfmt_isfloat ()</h3>
doc/reference/html/libvips-check.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_bandfmt_isfloat                (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);</pre>
doc/reference/html/libvips-check.html:<a name="vips-bandfmt-iscomplex"></a><h3>vips_bandfmt_iscomplex ()</h3>
doc/reference/html/libvips-check.html:<pre class="programlisting"><span class="returnvalue">gboolean</span>            vips_bandfmt_iscomplex              (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> fmt</code></em>);</pre>
doc/reference/html/libvips-check.html:<a name="im-isfile"></a><h3>im_isfile ()</h3>
doc/reference/html/libvips-check.html:<a name="im-ispartial"></a><h3>im_ispartial ()</h3>
doc/reference/html/libvips-check.html:<a name="im-isMSBfirst"></a><h3>im_isMSBfirst ()</h3>
doc/reference/html/libvips-check.html:Return <code class="literal">TRUE</code> if <em class="parameter"><code>im</code></em> is in most-significant-
doc/reference/html/libvips-check.html:<a name="libvips-check.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-check.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-callback.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-callback.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-callback.html:<link rel="prev" href="libvips-check.html" title="check">
doc/reference/html/libvips-callback.html:<link rel="next" href="libvips-meta.html" title="meta">
doc/reference/html/libvips-callback.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-callback.html:<td><a accesskey="p" href="libvips-check.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-callback.html:<td><a accesskey="n" href="libvips-meta.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-callback.html:<a href="#libvips-callback.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-callback.html:                  <a href="#libvips-callback.description" class="shortcut">Description</a>
doc/reference/html/libvips-callback.html:<a name="libvips-callback"></a><div class="titlepage"></div>
doc/reference/html/libvips-callback.html:<h2><span class="refentrytitle"><a name="libvips-callback.top_of_page"></a>callback</span></h2>
doc/reference/html/libvips-callback.html:<a name="libvips-callback.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-callback.html:<a name="libvips-callback.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-callback.html:<span class="returnvalue">int</span>                 (<a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()">*im_callback_fn</a>)                   (<em class="parameter"><code><span class="type">void</span> *a</code></em>,
doc/reference/html/libvips-callback.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-callback.html#im-add-close-callback" title="im_add_close_callback ()">im_add_close_callback</a>               (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-callback.html#im-add-preclose-callback" title="im_add_preclose_callback ()">im_add_preclose_callback</a>            (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-callback.html#im-add-postclose-callback" title="im_add_postclose_callback ()">im_add_postclose_callback</a>           (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-callback.html#im-add-written-callback" title="im_add_written_callback ()">im_add_written_callback</a>             (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-callback.html#im-add-evalstart-callback" title="im_add_evalstart_callback ()">im_add_evalstart_callback</a>           (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-callback.html#im-add-eval-callback" title="im_add_eval_callback ()">im_add_eval_callback</a>                (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-callback.html#im-add-evalend-callback" title="im_add_evalend_callback ()">im_add_evalend_callback</a>             (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-callback.html#im-add-invalidate-callback" title="im_add_invalidate_callback ()">im_add_invalidate_callback</a>          (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:<a name="libvips-callback.description"></a><h2>Description</h2>
doc/reference/html/libvips-callback.html:Callbacks should return 0 for success, or -1 on error, setting an error
doc/reference/html/libvips-callback.html:message with <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-callback.html:<a name="libvips-callback.details"></a><h2>Details</h2>
doc/reference/html/libvips-callback.html:<a name="im-callback-fn"></a><h3>im_callback_fn ()</h3>
doc/reference/html/libvips-callback.html:<a name="im-add-close-callback"></a><h3>im_add_close_callback ()</h3>
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:See also: <a class="link" href="libvips-memory.html#im-malloc" title="im_malloc ()"><code class="function">im_malloc()</code></a> (implemented with <a class="link" href="libvips-callback.html#im-add-close-callback" title="im_add_close_callback ()"><code class="function">im_add_close_callback()</code></a>),
doc/reference/html/libvips-callback.html:<a class="link" href="libvips-callback.html#im-add-preclose-callback" title="im_add_preclose_callback ()"><code class="function">im_add_preclose_callback()</code></a> (called earlier in the image close process),
doc/reference/html/libvips-callback.html:<a class="link" href="libvips-memory.html#im-free" title="im_free ()"><code class="function">im_free()</code></a>.
doc/reference/html/libvips-callback.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-callback.html:<a name="im-add-preclose-callback"></a><h3>im_add_preclose_callback ()</h3>
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:Attaches a pre-close callback <em class="parameter"><code>fn</code></em> to <em class="parameter"><code>im</code></em>.
doc/reference/html/libvips-callback.html:Pre-close callbacks are triggered exactly once just before an image is
doc/reference/html/libvips-callback.html:Pre-close callbacks are a good place for languae bindings to break as
doc/reference/html/libvips-callback.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-callback.html:<a name="im-add-postclose-callback"></a><h3>im_add_postclose_callback ()</h3>
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:Post-close callbacks are triggered exactly once, just before the memory
doc/reference/html/libvips-callback.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-callback.html:<a name="im-add-written-callback"></a><h3>im_add_written_callback ()</h3>
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-callback.html:<a name="im-add-evalstart-callback"></a><h3>im_add_evalstart_callback ()</h3>
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:See also: <a class="link" href="libvips-callback.html#im-add-eval-callback" title="im_add_eval_callback ()"><code class="function">im_add_eval_callback()</code></a>, <a class="link" href="libvips-callback.html#im-add-evalend-callback" title="im_add_evalend_callback ()"><code class="function">im_add_evalend_callback()</code></a>.
doc/reference/html/libvips-callback.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-callback.html:<a name="im-add-eval-callback"></a><h3>im_add_eval_callback ()</h3>
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:look at the <a class="link" href="libvips-image.html#VipsProgress" title="VipsProgress"><span class="type">VipsProgress</span></a> <span class="type">time</span> member of <span class="type">IMAGE</span> to get information about 
doc/reference/html/libvips-callback.html:See also: <a class="link" href="libvips-callback.html#im-add-evalend-callback" title="im_add_evalend_callback ()"><code class="function">im_add_evalend_callback()</code></a>, <a class="link" href="libvips-callback.html#im-add-evalstart-callback" title="im_add_evalstart_callback ()"><code class="function">im_add_evalstart_callback()</code></a>.
doc/reference/html/libvips-callback.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-callback.html:<a name="im-add-evalend-callback"></a><h3>im_add_evalend_callback ()</h3>
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:See also: <a class="link" href="libvips-callback.html#im-add-eval-callback" title="im_add_eval_callback ()"><code class="function">im_add_eval_callback()</code></a>, <a class="link" href="libvips-callback.html#im-add-evalstart-callback" title="im_add_evalstart_callback ()"><code class="function">im_add_evalstart_callback()</code></a>.
doc/reference/html/libvips-callback.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-callback.html:<a name="im-add-invalidate-callback"></a><h3>im_add_invalidate_callback ()</h3>
doc/reference/html/libvips-callback.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> fn</code></em>,
doc/reference/html/libvips-callback.html:removing images from other, higher-level caches.
doc/reference/html/libvips-callback.html:See also: <a class="link" href="libvips-image.html#im-invalidate" title="im_invalidate ()"><code class="function">im_invalidate()</code></a>.
doc/reference/html/libvips-callback.html:<td> 0 on success, or -1 on error.
doc/reference/html/libvips-callback.html:<a name="libvips-callback.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-callback.html:<a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/libvips-callback.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-type.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-type.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-type.html:<link rel="prev" href="libvips-version.html" title="version">
doc/reference/html/libvips-type.html:<link rel="next" href="libvips-rect.html" title="rect">
doc/reference/html/libvips-type.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-type.html:<td><a accesskey="p" href="libvips-version.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-type.html:<td><a accesskey="n" href="libvips-rect.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-type.html:<a href="#libvips-type.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-type.html:                  <a href="#libvips-type.description" class="shortcut">Description</a>
doc/reference/html/libvips-type.html:<a name="libvips-type"></a><div class="titlepage"></div>
doc/reference/html/libvips-type.html:<h2><span class="refentrytitle"><a name="libvips-type.top_of_page"></a>type</span></h2>
doc/reference/html/libvips-type.html:<a name="libvips-type.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-type.html:<pre class="synopsis">#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-DOUBLE:CAPS" title="IM_TYPE_NAME_DOUBLE">IM_TYPE_NAME_DOUBLE</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-INT:CAPS" title="IM_TYPE_NAME_INT">IM_TYPE_NAME_INT</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-COMPLEX:CAPS" title="IM_TYPE_NAME_COMPLEX">IM_TYPE_NAME_COMPLEX</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-STRING:CAPS" title="IM_TYPE_NAME_STRING">IM_TYPE_NAME_STRING</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-IMASK:CAPS" title="IM_TYPE_NAME_IMASK">IM_TYPE_NAME_IMASK</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-DMASK:CAPS" title="IM_TYPE_NAME_DMASK">IM_TYPE_NAME_DMASK</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-IMAGE:CAPS" title="IM_TYPE_NAME_IMAGE">IM_TYPE_NAME_IMAGE</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-DISPLAY:CAPS" title="IM_TYPE_NAME_DISPLAY">IM_TYPE_NAME_DISPLAY</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-GVALUE:CAPS" title="IM_TYPE_NAME_GVALUE">IM_TYPE_NAME_GVALUE</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-NAME-ARRAY:CAPS" title="IM_TYPE_NAME_ARRAY">IM_TYPE_NAME_ARRAY</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-IM:CAPS" title="IM_TYPE_IM">IM_TYPE_IM</a>
doc/reference/html/libvips-type.html:#define             <a class="link" href="libvips-type.html#IM-TYPE-AR:CAPS" title="IM_TYPE_AR()">IM_TYPE_AR</a>                          (OF)
doc/reference/html/libvips-type.html:                    <a class="link" href="libvips-type.html#im-type-t" title="im_type_t">im_type_t</a>;
doc/reference/html/libvips-type.html:typedef             <a class="link" href="libvips-type.html#im-value-t" title="im_value_t">im_value_t</a>;
doc/reference/html/libvips-type.html:                    <a class="link" href="libvips-type.html#im-value-mask-t" title="im_value_mask_t">im_value_mask_t</a>;
doc/reference/html/libvips-type.html:                    <a class="link" href="libvips-type.html#im-value-array-t" title="im_value_array_t">im_value_array_t</a>;
doc/reference/html/libvips-type.html:enum                <a class="link" href="libvips-type.html#im-argument-flags" title="enum im_argument_flags">im_argument_flags</a>;
doc/reference/html/libvips-type.html:                    <a class="link" href="libvips-type.html#im-argument-t" title="im_argument_t">im_argument_t</a>;
doc/reference/html/libvips-type.html:enum                <a class="link" href="libvips-type.html#im-operation-flags" title="enum im_operation_flags">im_operation_flags</a>;
doc/reference/html/libvips-type.html:<span class="returnvalue">int</span>                 (<a class="link" href="libvips-type.html#im-operation-dispatch-fn" title="im_operation_dispatch_fn ()">*im_operation_dispatch_fn</a>)         (<em class="parameter"><code><a class="link" href="libvips-type.html#im-value-t" title="im_value_t"><span class="type">im_value_t</span></a> **argv</code></em>);
doc/reference/html/libvips-type.html:                    <a class="link" href="libvips-type.html#im-operation-t" title="im_operation_t">im_operation_t</a>;
doc/reference/html/libvips-type.html:<a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="returnvalue">im_type_t</span></a> *         <a class="link" href="libvips-type.html#im-type-register" title="im_type_register ()">im_type_register</a>                    (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="type">im_type_t</span></a> *type_param</code></em>,
doc/reference/html/libvips-type.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-type.html#im-type-map" title="im_type_map ()">im_type_map</a>                         (<em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-type.html:<a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="returnvalue">im_type_t</span></a> *         <a class="link" href="libvips-type.html#im-type-lookup" title="im_type_lookup ()">im_type_lookup</a>                      (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="type">im_type_t</span></a> *type_param</code></em>);
doc/reference/html/libvips-type.html:<a class="link" href="libvips-type.html#im-operation-t" title="im_operation_t"><span class="returnvalue">im_operation_t</span></a> *    <a class="link" href="libvips-type.html#im-operation-register" title="im_operation_register ()">im_operation_register</a>               (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-operation-flags" title="enum im_operation_flags"><span class="type">im_operation_flags</span></a> flags</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-operation-dispatch-fn" title="im_operation_dispatch_fn ()"><span class="type">im_operation_dispatch_fn</span></a> disp</code></em>,
doc/reference/html/libvips-type.html:<a class="link" href="libvips-type.html#im-operation-t" title="im_operation_t"><span class="returnvalue">im_operation_t</span></a> *    <a class="link" href="libvips-type.html#im-operation-registerv" title="im_operation_registerv ()">im_operation_registerv</a>              (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-operation-flags" title="enum im_operation_flags"><span class="type">im_operation_flags</span></a> flags</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-operation-dispatch-fn" title="im_operation_dispatch_fn ()"><span class="type">im_operation_dispatch_fn</span></a> disp</code></em>,
doc/reference/html/libvips-type.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-type.html#im-operation-map" title="im_operation_map ()">im_operation_map</a>                    (<em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-type.html:<a class="link" href="libvips-type.html#im-operation-t" title="im_operation_t"><span class="returnvalue">im_operation_t</span></a> *    <a class="link" href="libvips-type.html#im-operation-lookup" title="im_operation_lookup ()">im_operation_lookup</a>                 (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
doc/reference/html/libvips-type.html:<a class="link" href="libvips-type.html#im-argument-t" title="im_argument_t"><span class="returnvalue">im_argument_t</span></a> *     <a class="link" href="libvips-type.html#im-argument-new" title="im_argument_new ()">im_argument_new</a>                     (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="type">im_type_t</span></a> *type</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-argument-flags" title="enum im_argument_flags"><span class="type">im_argument_flags</span></a> flags</code></em>);
doc/reference/html/libvips-type.html:<a name="libvips-type.description"></a><h2>Description</h2>
doc/reference/html/libvips-type.html:<a name="libvips-type.details"></a><h2>Details</h2>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-DOUBLE:CAPS"></a><h3>IM_TYPE_NAME_DOUBLE</h3>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-INT:CAPS"></a><h3>IM_TYPE_NAME_INT</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting">#define IM_TYPE_NAME_INT "integer" /* 32-bit integer */
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-COMPLEX:CAPS"></a><h3>IM_TYPE_NAME_COMPLEX</h3>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-STRING:CAPS"></a><h3>IM_TYPE_NAME_STRING</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting">#define IM_TYPE_NAME_STRING "string" /* Zero-terminated char array */
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-IMASK:CAPS"></a><h3>IM_TYPE_NAME_IMASK</h3>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-DMASK:CAPS"></a><h3>IM_TYPE_NAME_DMASK</h3>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-IMAGE:CAPS"></a><h3>IM_TYPE_NAME_IMAGE</h3>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-DISPLAY:CAPS"></a><h3>IM_TYPE_NAME_DISPLAY</h3>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-GVALUE:CAPS"></a><h3>IM_TYPE_NAME_GVALUE</h3>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-NAME-ARRAY:CAPS"></a><h3>IM_TYPE_NAME_ARRAY</h3>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-IM:CAPS"></a><h3>IM_TYPE_IM</h3>
doc/reference/html/libvips-type.html:<a name="IM-TYPE-AR:CAPS"></a><h3>IM_TYPE_AR()</h3>
doc/reference/html/libvips-type.html:<a name="im-type-t"></a><h3>im_type_t</h3>
doc/reference/html/libvips-type.html:<a name="im-value-t"></a><h3>im_value_t</h3>
doc/reference/html/libvips-type.html:<a name="im-value-mask-t"></a><h3>im_value_mask_t</h3>
doc/reference/html/libvips-type.html:	char *name;			/* Command-line name in */
doc/reference/html/libvips-type.html:	void *mask;			/* Mask --- DOUBLE or INT */
doc/reference/html/libvips-type.html:<a name="im-value-array-t"></a><h3>im_value_array_t</h3>
doc/reference/html/libvips-type.html:<a name="im-argument-flags"></a><h3>enum im_argument_flags</h3>
doc/reference/html/libvips-type.html:<a name="im-argument-t"></a><h3>im_argument_t</h3>
doc/reference/html/libvips-type.html:<a name="im-operation-flags"></a><h3>enum im_operation_flags</h3>
doc/reference/html/libvips-type.html:	IM_OPERATION_PTOP = 0x4, /* Point-to-point ... can be LUTted */
doc/reference/html/libvips-type.html:<a name="im-operation-dispatch-fn"></a><h3>im_operation_dispatch_fn ()</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting"><span class="returnvalue">int</span>                 (*im_operation_dispatch_fn)         (<em class="parameter"><code><a class="link" href="libvips-type.html#im-value-t" title="im_value_t"><span class="type">im_value_t</span></a> **argv</code></em>);</pre>
doc/reference/html/libvips-type.html:<a name="im-operation-t"></a><h3>im_operation_t</h3>
doc/reference/html/libvips-type.html:<a name="im-type-register"></a><h3>im_type_register ()</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting"><a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="returnvalue">im_type_t</span></a> *         im_type_register                    (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="type">im_type_t</span></a> *type_param</code></em>,
doc/reference/html/libvips-type.html:<a name="im-type-map"></a><h3>im_type_map ()</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting"><span class="returnvalue">void</span> *              im_type_map                         (<em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-type.html:<a name="im-type-lookup"></a><h3>im_type_lookup ()</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting"><a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="returnvalue">im_type_t</span></a> *         im_type_lookup                      (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="type">im_type_t</span></a> *type_param</code></em>);</pre>
doc/reference/html/libvips-type.html:<a name="im-operation-register"></a><h3>im_operation_register ()</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting"><a class="link" href="libvips-type.html#im-operation-t" title="im_operation_t"><span class="returnvalue">im_operation_t</span></a> *    im_operation_register               (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-operation-flags" title="enum im_operation_flags"><span class="type">im_operation_flags</span></a> flags</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-operation-dispatch-fn" title="im_operation_dispatch_fn ()"><span class="type">im_operation_dispatch_fn</span></a> disp</code></em>,
doc/reference/html/libvips-type.html:<a name="im-operation-registerv"></a><h3>im_operation_registerv ()</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting"><a class="link" href="libvips-type.html#im-operation-t" title="im_operation_t"><span class="returnvalue">im_operation_t</span></a> *    im_operation_registerv              (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-operation-flags" title="enum im_operation_flags"><span class="type">im_operation_flags</span></a> flags</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-operation-dispatch-fn" title="im_operation_dispatch_fn ()"><span class="type">im_operation_dispatch_fn</span></a> disp</code></em>,
doc/reference/html/libvips-type.html:<a name="im-operation-map"></a><h3>im_operation_map ()</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting"><span class="returnvalue">void</span> *              im_operation_map                    (<em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/libvips-type.html:<a name="im-operation-lookup"></a><h3>im_operation_lookup ()</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting"><a class="link" href="libvips-type.html#im-operation-t" title="im_operation_t"><span class="returnvalue">im_operation_t</span></a> *    im_operation_lookup                 (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
doc/reference/html/libvips-type.html:<a name="im-argument-new"></a><h3>im_argument_new ()</h3>
doc/reference/html/libvips-type.html:<pre class="programlisting"><a class="link" href="libvips-type.html#im-argument-t" title="im_argument_t"><span class="returnvalue">im_argument_t</span></a> *     im_argument_new                     (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-type-t" title="im_type_t"><span class="type">im_type_t</span></a> *type</code></em>,
doc/reference/html/libvips-type.html:                                                         <em class="parameter"><code><a class="link" href="libvips-type.html#im-argument-flags" title="enum im_argument_flags"><span class="type">im_argument_flags</span></a> flags</code></em>);</pre>
doc/reference/html/libvips-type.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-resample.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-resample.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-resample.html:<link rel="prev" href="libvips-morphology.html" title="morphology">
doc/reference/html/libvips-resample.html:<link rel="next" href="libvips-mask.html" title="mask">
doc/reference/html/libvips-resample.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-resample.html:<td><a accesskey="p" href="libvips-morphology.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-resample.html:<td><a accesskey="n" href="libvips-mask.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-resample.html:<a href="#libvips-resample.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-resample.html:                  <a href="#libvips-resample.description" class="shortcut">Description</a>
doc/reference/html/libvips-resample.html:<a name="libvips-resample"></a><div class="titlepage"></div>
doc/reference/html/libvips-resample.html:<h2><span class="refentrytitle"><a name="libvips-resample.top_of_page"></a>resample</span></h2>
doc/reference/html/libvips-resample.html:<a name="libvips-resample.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-resample.html:<a name="libvips-resample.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-resample.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-resample.html#im-affinei" title="im_affinei ()">im_affinei</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-resample.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-resample.html#im-affinei-all" title="im_affinei_all ()">im_affinei_all</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-resample.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-resample.html#im-stretch3" title="im_stretch3 ()">im_stretch3</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-resample.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-resample.html#im-shrink" title="im_shrink ()">im_shrink</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-resample.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-resample.html#im-rightshift-size" title="im_rightshift_size ()">im_rightshift_size</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-resample.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-resample.html#im-match-linear" title="im_match_linear ()">im_match_linear</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-resample.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-resample.html#im-match-linear-search" title="im_match_linear_search ()">im_match_linear_search</a>              (<em class="parameter"><code><span class="type">IMAGE</span> *ref</code></em>,
doc/reference/html/libvips-resample.html:<a name="libvips-resample.description"></a><h2>Description</h2>
doc/reference/html/libvips-resample.html:<a name="libvips-resample.details"></a><h2>Details</h2>
doc/reference/html/libvips-resample.html:<a name="im-affinei"></a><h3>im_affinei ()</h3>
doc/reference/html/libvips-resample.html:<a name="im-affinei-all"></a><h3>im_affinei_all ()</h3>
doc/reference/html/libvips-resample.html:<a name="im-stretch3"></a><h3>im_stretch3 ()</h3>
doc/reference/html/libvips-resample.html:<a name="im-shrink"></a><h3>im_shrink ()</h3>
doc/reference/html/libvips-resample.html:<a name="im-rightshift-size"></a><h3>im_rightshift_size ()</h3>
doc/reference/html/libvips-resample.html:<a name="im-match-linear"></a><h3>im_match_linear ()</h3>
doc/reference/html/libvips-resample.html:<a name="im-match-linear-search"></a><h3>im_match_linear_search ()</h3>
doc/reference/html/libvips-resample.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-cimg-funcs.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-cimg-funcs.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-cimg-funcs.html:<link rel="prev" href="libvips-video.html" title="video">
doc/reference/html/libvips-cimg-funcs.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-cimg-funcs.html:<td><a accesskey="p" href="libvips-video.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-cimg-funcs.html:<a href="#libvips-cimg-funcs.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-cimg-funcs.html:                  <a href="#libvips-cimg-funcs.description" class="shortcut">Description</a>
doc/reference/html/libvips-cimg-funcs.html:<a name="libvips-cimg-funcs"></a><div class="titlepage"></div>
doc/reference/html/libvips-cimg-funcs.html:<h2><span class="refentrytitle"><a name="libvips-cimg-funcs.top_of_page"></a>cimg_funcs</span></h2>
doc/reference/html/libvips-cimg-funcs.html:<a name="libvips-cimg-funcs.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-cimg-funcs.html:<a name="libvips-cimg-funcs.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-cimg-funcs.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-cimg-funcs.html#im-greyc-mask" title="im_greyc_mask ()">im_greyc_mask</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-cimg-funcs.html:<a name="libvips-cimg-funcs.description"></a><h2>Description</h2>
doc/reference/html/libvips-cimg-funcs.html:<a name="libvips-cimg-funcs.details"></a><h2>Details</h2>
doc/reference/html/libvips-cimg-funcs.html:<a name="im-greyc-mask"></a><h3>im_greyc_mask ()</h3>
doc/reference/html/libvips-cimg-funcs.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-relational.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-relational.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-relational.html:<link rel="prev" href="libvips-boolean.html" title="boolean">
doc/reference/html/libvips-relational.html:<link rel="next" href="libvips-colour.html" title="colour">
doc/reference/html/libvips-relational.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-relational.html:<td><a accesskey="p" href="libvips-boolean.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-relational.html:<td><a accesskey="n" href="libvips-colour.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-relational.html:<a href="#libvips-relational.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-relational.html:                  <a href="#libvips-relational.description" class="shortcut">Description</a>
doc/reference/html/libvips-relational.html:<a name="libvips-relational"></a><div class="titlepage"></div>
doc/reference/html/libvips-relational.html:<h2><span class="refentrytitle"><a name="libvips-relational.top_of_page"></a>relational</span></h2>
doc/reference/html/libvips-relational.html:<a name="libvips-relational.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-relational.html:<a name="libvips-relational.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-equal" title="im_equal ()">im_equal</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-notequal" title="im_notequal ()">im_notequal</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-less" title="im_less ()">im_less</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()">im_lesseq</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-more" title="im_more ()">im_more</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-moreeq" title="im_moreeq ()">im_moreeq</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-equal-vec" title="im_equal_vec ()">im_equal_vec</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-notequal-vec" title="im_notequal_vec ()">im_notequal_vec</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-less-vec" title="im_less_vec ()">im_less_vec</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-lesseq-vec" title="im_lesseq_vec ()">im_lesseq_vec</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-more-vec" title="im_more_vec ()">im_more_vec</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-moreeq-vec" title="im_moreeq_vec ()">im_moreeq_vec</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-equalconst" title="im_equalconst ()">im_equalconst</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-notequalconst" title="im_notequalconst ()">im_notequalconst</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-lessconst" title="im_lessconst ()">im_lessconst</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()">im_lesseqconst</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-moreconst" title="im_moreconst ()">im_moreconst</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-moreeqconst" title="im_moreeqconst ()">im_moreeqconst</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-ifthenelse" title="im_ifthenelse ()">im_ifthenelse</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *c</code></em>,
doc/reference/html/libvips-relational.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-relational.html#im-blend" title="im_blend ()">im_blend</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *c</code></em>,
doc/reference/html/libvips-relational.html:<a name="libvips-relational.description"></a><h2>Description</h2>
doc/reference/html/libvips-relational.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-relational.html:one-band image by joining n copies of the one-band image together and then
doc/reference/html/libvips-relational.html:the two n-band images are operated upon.
doc/reference/html/libvips-relational.html:<a class="link" href="libvips-relational.html#im-equal-vec" title="im_equal_vec ()"><code class="function">im_equal_vec()</code></a>, you can mix single-element arrays or single-band images
doc/reference/html/libvips-relational.html:<a name="libvips-relational.details"></a><h2>Details</h2>
doc/reference/html/libvips-relational.html:<a name="im-equal"></a><h3>im_equal ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-notequal" title="im_notequal ()"><code class="function">im_notequal()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-notequal"></a><h3>im_notequal ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-notequal" title="im_notequal ()"><code class="function">im_notequal()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-less"></a><h3>im_less ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-more" title="im_more ()"><code class="function">im_more()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-lesseq"></a><h3>im_lesseq ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-more" title="im_more ()"><code class="function">im_more()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-more"></a><h3>im_more ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-less" title="im_less ()"><code class="function">im_less()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-moreeq"></a><h3>im_moreeq ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-more" title="im_more ()"><code class="function">im_more()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-equal-vec"></a><h3>im_equal_vec ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-equal" title="im_equal ()"><code class="function">im_equal()</code></a>, <a class="link" href="libvips-relational.html#im-equalconst" title="im_equalconst ()"><code class="function">im_equalconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-notequal-vec"></a><h3>im_notequal_vec ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-equal" title="im_equal ()"><code class="function">im_equal()</code></a>, <a class="link" href="libvips-relational.html#im-equal-vec" title="im_equal_vec ()"><code class="function">im_equal_vec()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-less-vec"></a><h3>im_less_vec ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-less" title="im_less ()"><code class="function">im_less()</code></a>, <a class="link" href="libvips-relational.html#im-lessconst" title="im_lessconst ()"><code class="function">im_lessconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-lesseq-vec"></a><h3>im_lesseq_vec ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()"><code class="function">im_lesseq()</code></a>, <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()"><code class="function">im_lesseqconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-more-vec"></a><h3>im_more_vec ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()"><code class="function">im_lesseq()</code></a>, <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()"><code class="function">im_lesseqconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-moreeq-vec"></a><h3>im_moreeq_vec ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()"><code class="function">im_lesseq()</code></a>, <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()"><code class="function">im_lesseqconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-equalconst"></a><h3>im_equalconst ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()"><code class="function">im_lesseq()</code></a>, <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()"><code class="function">im_lesseqconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-notequalconst"></a><h3>im_notequalconst ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()"><code class="function">im_lesseq()</code></a>, <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()"><code class="function">im_lesseqconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-lessconst"></a><h3>im_lessconst ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()"><code class="function">im_lesseq()</code></a>, <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()"><code class="function">im_lesseqconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-lesseqconst"></a><h3>im_lesseqconst ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()"><code class="function">im_lesseq()</code></a>, <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()"><code class="function">im_lesseqconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-moreconst"></a><h3>im_moreconst ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()"><code class="function">im_lesseq()</code></a>, <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()"><code class="function">im_lesseqconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-moreeqconst"></a><h3>im_moreeqconst ()</h3>
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-lesseq" title="im_lesseq ()"><code class="function">im_lesseq()</code></a>, <a class="link" href="libvips-relational.html#im-lesseqconst" title="im_lesseqconst ()"><code class="function">im_lesseqconst()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-ifthenelse"></a><h3>im_ifthenelse ()</h3>
doc/reference/html/libvips-relational.html:image <em class="parameter"><code>b</code></em>. Non-zero means <em class="parameter"><code>a</code></em>, 0 means <em class="parameter"><code>b</code></em>.
doc/reference/html/libvips-relational.html:the non-1-band images. Single band images are then effectively copied to 
doc/reference/html/libvips-relational.html:make n-band images.
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-blend" title="im_blend ()"><code class="function">im_blend()</code></a>, <a class="link" href="libvips-relational.html#im-equal" title="im_equal ()"><code class="function">im_equal()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="im-blend"></a><h3>im_blend ()</h3>
doc/reference/html/libvips-relational.html:the non-1-band images. Single band images are then effectively copied to 
doc/reference/html/libvips-relational.html:make n-band images.
doc/reference/html/libvips-relational.html:See also: <a class="link" href="libvips-relational.html#im-ifthenelse" title="im_ifthenelse ()"><code class="function">im_ifthenelse()</code></a>, <a class="link" href="libvips-relational.html#im-equal" title="im_equal ()"><code class="function">im_equal()</code></a>.
doc/reference/html/libvips-relational.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-relational.html:<a name="libvips-relational.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-relational.html:<a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/libvips-relational.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/VipsThreadState.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/VipsThreadState.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/VipsThreadState.html:<link rel="prev" href="libvips-generate.html" title="generate">
doc/reference/html/VipsThreadState.html:<link rel="next" href="libvips-error.html" title="error">
doc/reference/html/VipsThreadState.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/VipsThreadState.html:<td><a accesskey="p" href="libvips-generate.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/VipsThreadState.html:<td><a accesskey="n" href="libvips-error.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/VipsThreadState.html:                  <a href="#VipsThreadState.object-hierarchy" class="shortcut">Object Hierarchy</a>
doc/reference/html/VipsThreadState.html:<a name="VipsThreadState.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/VipsThreadState.html:                    <a class="link" href="VipsThreadState.html#VipsThreadState-struct" title="VipsThreadState">VipsThreadState</a>;
doc/reference/html/VipsThreadState.html:<span class="returnvalue">void</span> *              <a class="link" href="VipsThreadState.html#vips-thread-state-set" title="vips_thread_state_set ()">vips_thread_state_set</a>               (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>,
doc/reference/html/VipsThreadState.html:<a class="link" href="VipsThreadState.html" title="VipsThreadState"><span class="returnvalue">VipsThreadState</span></a> *   <a class="link" href="VipsThreadState.html#vips-thread-state-new" title="vips_thread_state_new ()">vips_thread_state_new</a>               (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<a class="link" href="VipsThreadState.html" title="VipsThreadState"><span class="returnvalue">VipsThreadState</span></a> *   (<a class="link" href="VipsThreadState.html#VipsThreadStart" title="VipsThreadStart ()">*VipsThreadStart</a>)                  (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()">vips_threadpool_run</a>                 (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">void</span>                <a class="link" href="VipsThreadState.html#vips-get-tile-size" title="vips_get_tile_size ()">vips_get_tile_size</a>                  (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">int</span>                 (<a class="link" href="VipsThreadState.html#VipsRegionWrite" title="VipsRegionWrite ()">*VipsRegionWrite</a>)                  (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *region</code></em>,
doc/reference/html/VipsThreadState.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *area</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsThreadState.html#vips-sink-disc" title="vips_sink_disc ()">vips_sink_disc</a>                      (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">void</span> *              (<a class="link" href="VipsThreadState.html#VipsStart" title="VipsStart ()">*VipsStart</a>)                        (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">int</span>                 (<a class="link" href="VipsThreadState.html#VipsGenerate" title="VipsGenerate ()">*VipsGenerate</a>)                     (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *out</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsThreadState.html#vips-sink" title="vips_sink ()">vips_sink</a>                           (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsThreadState.html#vips-sink-tile" title="vips_sink_tile ()">vips_sink_tile</a>                      (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">void</span>                (<a class="link" href="VipsThreadState.html#VipsSinkNotify" title="VipsSinkNotify ()">*VipsSinkNotify</a>)                   (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *rect</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsThreadState.html#vips-sink-screen" title="vips_sink_screen ()">vips_sink_screen</a>                    (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *in</code></em>,
doc/reference/html/VipsThreadState.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/VipsThreadState.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *mask</code></em>,
doc/reference/html/VipsThreadState.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsThreadState.html#vips-sink-memory" title="vips_sink_memory ()">vips_sink_memory</a>                    (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>);
doc/reference/html/VipsThreadState.html:<span class="returnvalue">void</span>                <a class="link" href="VipsThreadState.html#im--print-renders" title="im__print_renders ()">im__print_renders</a>                   (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/VipsThreadState.html:<span class="returnvalue">void</span>                <a class="link" href="VipsThreadState.html#im-concurrency-set" title="im_concurrency_set ()">im_concurrency_set</a>                  (<em class="parameter"><code><span class="type">int</span> concurrency</code></em>);
doc/reference/html/VipsThreadState.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsThreadState.html#im-concurrency-get" title="im_concurrency_get ()">im_concurrency_get</a>                  (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/VipsThreadState.html:<a name="VipsThreadState.object-hierarchy"></a><h2>Object Hierarchy</h2>
doc/reference/html/VipsThreadState.html:   +----<a class="link" href="libvips-VipsArgument.html#VipsObject">VipsObject</a>
doc/reference/html/VipsThreadState.html:         +----VipsThreadState
doc/reference/html/VipsThreadState.html:<a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()"><code class="function">vips_threadpool_run()</code></a> loops a set of threads over an image. Threads take it
doc/reference/html/VipsThreadState.html:<a name="VipsThreadState-struct"></a><h3>VipsThreadState</h3>
doc/reference/html/VipsThreadState.html:These per-thread values are carried around for your use by
doc/reference/html/VipsThreadState.html:<a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()"><code class="function">vips_threadpool_run()</code></a>. They are private to each thread, so they are a
doc/reference/html/VipsThreadState.html:<a name="vips-thread-state-set"></a><h3>vips_thread_state_set ()</h3>
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">void</span> *              vips_thread_state_set               (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>,
doc/reference/html/VipsThreadState.html:<a name="vips-thread-state-new"></a><h3>vips_thread_state_new ()</h3>
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><a class="link" href="VipsThreadState.html" title="VipsThreadState"><span class="returnvalue">VipsThreadState</span></a> *   vips_thread_state_new               (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><a class="link" href="VipsThreadState.html" title="VipsThreadState"><span class="returnvalue">VipsThreadState</span></a> *   (*VipsThreadStart)                  (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:always single-threaded, so it can modify per-pool state (such as a
doc/reference/html/VipsThreadState.html:<a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()"><code class="function">vips_threadpool_run()</code></a>.
doc/reference/html/VipsThreadState.html:See also: <a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()"><code class="function">vips_threadpool_run()</code></a>.
doc/reference/html/VipsThreadState.html:<td>per-thread state
doc/reference/html/VipsThreadState.html:<td> 0 on success, or -1 on error
doc/reference/html/VipsThreadState.html:at once, so it should not write to the per-pool state. It can write to
doc/reference/html/VipsThreadState.html:per-thread state.
doc/reference/html/VipsThreadState.html:<a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()"><code class="function">vips_threadpool_run()</code></a>.
doc/reference/html/VipsThreadState.html:See also: <a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()"><code class="function">vips_threadpool_run()</code></a>.
doc/reference/html/VipsThreadState.html:<td>per-thread state
doc/reference/html/VipsThreadState.html:<td> 0 on success, or -1 on error
doc/reference/html/VipsThreadState.html:See also: <a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()"><code class="function">vips_threadpool_run()</code></a>.
doc/reference/html/VipsThreadState.html:<td> 0 on success, or -1 on error
doc/reference/html/VipsThreadState.html:<a name="vips-threadpool-run"></a><h3>vips_threadpool_run ()</h3>
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">int</span>                 vips_threadpool_run                 (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<em class="parameter"><code>start</code></em> to create new per-thread state, then runs
doc/reference/html/VipsThreadState.html:<em class="parameter"><code>allocate</code></em> and <em class="parameter"><code>start</code></em> are always single-threaded (so they can write to the 
doc/reference/html/VipsThreadState.html:per-pool state), whereas <em class="parameter"><code>work</code></em> can be executed concurrently. <em class="parameter"><code>progress</code></em> is 
doc/reference/html/VipsThreadState.html:the main thread (ie. the thread which called <a class="link" href="VipsThreadState.html#vips-threadpool-run" title="vips_threadpool_run ()"><code class="function">vips_threadpool_run()</code></a>).
doc/reference/html/VipsThreadState.html:See also: <code class="function">im_wbuffer2()</code>, <a class="link" href="VipsThreadState.html#im-concurrency-set" title="im_concurrency_set ()"><code class="function">im_concurrency_set()</code></a>.
doc/reference/html/VipsThreadState.html:<td>allocate per-thread state
doc/reference/html/VipsThreadState.html:<td> 0 on success, or -1 on error.
doc/reference/html/VipsThreadState.html:<a name="vips-get-tile-size"></a><h3>vips_get_tile_size ()</h3>
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_get_tile_size                  (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:value of <a class="link" href="VipsThreadState.html#im-concurrency-get" title="im_concurrency_get ()"><code class="function">im_concurrency_get()</code></a>. The buffer height 
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">int</span>                 (*VipsRegionWrite)                  (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *region</code></em>,
doc/reference/html/VipsThreadState.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *area</code></em>,
doc/reference/html/VipsThreadState.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsThreadState.html:<a name="vips-sink-disc"></a><h3>vips_sink_disc ()</h3>
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">int</span>                 vips_sink_disc                      (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<a class="link" href="VipsThreadState.html#vips-sink-disc" title="vips_sink_disc ()"><code class="function">vips_sink_disc()</code></a> loops over <em class="parameter"><code>im</code></em>, top-to-bottom, generating it in sections.
doc/reference/html/VipsThreadState.html:<em class="parameter"><code>write_fn</code></em> is always called single-threaded (though not always from the same
doc/reference/html/VipsThreadState.html:sections in top-to-bottom order, and there are never any gaps.
doc/reference/html/VipsThreadState.html:See also: <a class="link" href="VipsThreadState.html#im-concurrency-set" title="im_concurrency_set ()"><code class="function">im_concurrency_set()</code></a>.
doc/reference/html/VipsThreadState.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">void</span> *              (*VipsStart)                        (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">int</span>                 (*VipsGenerate)                     (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *out</code></em>,
doc/reference/html/VipsThreadState.html:<a name="vips-sink"></a><h3>vips_sink ()</h3>
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">int</span>                 vips_sink                           (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:the <em class="parameter"><code>reg</code></em> argument being a region of pixels for processing. <a class="link" href="VipsThreadState.html#vips-sink" title="vips_sink ()"><code class="function">vips_sink()</code></a> is
doc/reference/html/VipsThreadState.html:used to implement operations like <a class="link" href="libvips-arithmetic.html#im-avg" title="im_avg ()"><code class="function">im_avg()</code></a> which have no image output.
doc/reference/html/VipsThreadState.html:See also: <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>, <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>.
doc/reference/html/VipsThreadState.html:<td> 0 on success, or -1 on error.
doc/reference/html/VipsThreadState.html:<a name="vips-sink-tile"></a><h3>vips_sink_tile ()</h3>
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">int</span>                 vips_sink_tile                      (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:<a class="link" href="VipsThreadState.html#vips-sink-tile" title="vips_sink_tile ()"><code class="function">vips_sink_tile()</code></a> is
doc/reference/html/VipsThreadState.html:used to implement operations like <a class="link" href="libvips-arithmetic.html#im-avg" title="im_avg ()"><code class="function">im_avg()</code></a> which have no image output.
doc/reference/html/VipsThreadState.html:See also: <a class="link" href="VipsThreadState.html#vips-sink" title="vips_sink ()"><code class="function">vips_sink()</code></a>, <a class="link" href="VipsThreadState.html#vips-get-tile-size" title="vips_get_tile_size ()"><code class="function">vips_get_tile_size()</code></a>.
doc/reference/html/VipsThreadState.html:<td> 0 on success, or -1 on error.
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">void</span>                (*VipsSinkNotify)                   (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>,
doc/reference/html/VipsThreadState.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *rect</code></em>,
doc/reference/html/VipsThreadState.html:<a name="vips-sink-screen"></a><h3>vips_sink_screen ()</h3>
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">int</span>                 vips_sink_screen                    (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *in</code></em>,
doc/reference/html/VipsThreadState.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/VipsThreadState.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *mask</code></em>,
doc/reference/html/VipsThreadState.html:If <em class="parameter"><code>max_tiles</code></em> is -1, the cache is of unlimited size (up to the maximum image
doc/reference/html/VipsThreadState.html:The <em class="parameter"><code>mask</code></em> image is a one-band uchar image and has 255 for pixels which are 
doc/reference/html/VipsThreadState.html:Calls to <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a> on <em class="parameter"><code>out</code></em> return immediately and hold whatever is
doc/reference/html/VipsThreadState.html:currently in cache for that <a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> (check <em class="parameter"><code>mask</code></em> to see which parts of the
doc/reference/html/VipsThreadState.html:<a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> are valid). Any pixels in the <a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> which are not in cache are added
doc/reference/html/VipsThreadState.html:ready. In a glib-based application, this is easily done with <code class="function">g_idle_add()</code>.
doc/reference/html/VipsThreadState.html:If <em class="parameter"><code>notify</code></em> is <code class="literal">NULL</code> then <a class="link" href="libvips-generate.html#im-render-priority" title="im_render_priority ()"><code class="function">im_render_priority()</code></a> runs synchronously.
doc/reference/html/VipsThreadState.html:<a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a> on <em class="parameter"><code>out</code></em> will always block until the pixels have been
doc/reference/html/VipsThreadState.html:See also: <a class="link" href="libvips-generate.html#im-cache" title="im_cache ()"><code class="function">im_cache()</code></a>, <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>, <a class="link" href="VipsThreadState.html#vips-sink-disc" title="vips_sink_disc ()"><code class="function">vips_sink_disc()</code></a>, <a class="link" href="VipsThreadState.html#vips-sink" title="vips_sink ()"><code class="function">vips_sink()</code></a>.
doc/reference/html/VipsThreadState.html:<td> 0 on sucess, -1 on error.
doc/reference/html/VipsThreadState.html:<a name="vips-sink-memory"></a><h3>vips_sink_memory ()</h3>
doc/reference/html/VipsThreadState.html:<pre class="programlisting"><span class="returnvalue">int</span>                 vips_sink_memory                    (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>);</pre>
doc/reference/html/VipsThreadState.html:See also: <a class="link" href="VipsThreadState.html#vips-sink" title="vips_sink ()"><code class="function">vips_sink()</code></a>, <a class="link" href="VipsThreadState.html#vips-get-tile-size" title="vips_get_tile_size ()"><code class="function">vips_get_tile_size()</code></a>.
doc/reference/html/VipsThreadState.html:<td> 0 on success, or -1 on error.
doc/reference/html/VipsThreadState.html:<a name="im--print-renders"></a><h3>im__print_renders ()</h3>
doc/reference/html/VipsThreadState.html:<a name="im-concurrency-set"></a><h3>im_concurrency_set ()</h3>
doc/reference/html/VipsThreadState.html:<a name="im-concurrency-get"></a><h3>im_concurrency_get ()</h3>
doc/reference/html/VipsThreadState.html:<a name="VipsThreadState.see-also"></a><h2>See Also</h2>
doc/reference/html/VipsThreadState.html:<a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/VipsThreadState.html:          Generated by GTK-Doc V1.14</div>
Coincidencia en el archivo binario doc/reference/html/right.png
doc/reference/html/libvips-arithmetic.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-arithmetic.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-arithmetic.html:<link rel="next" href="libvips-boolean.html" title="boolean">
doc/reference/html/libvips-arithmetic.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-arithmetic.html:<td><a accesskey="n" href="libvips-boolean.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-arithmetic.html:<a href="#libvips-arithmetic.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-arithmetic.html:                  <a href="#libvips-arithmetic.description" class="shortcut">Description</a>
doc/reference/html/libvips-arithmetic.html:<a name="libvips-arithmetic"></a><div class="titlepage"></div>
doc/reference/html/libvips-arithmetic.html:<h2><span class="refentrytitle"><a name="libvips-arithmetic.top_of_page"></a>arithmetic</span></h2>
doc/reference/html/libvips-arithmetic.html:<a name="libvips-arithmetic.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-arithmetic.html:<a name="libvips-arithmetic.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-arithmetic.html#im-measure-area" title="im_measure_area ()">im_measure_area</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()">im_stats</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>);
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-max" title="im_max ()">im_max</a>                              (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()">im_min</a>                              (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-avg" title="im_avg ()">im_avg</a>                              (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-deviate" title="im_deviate ()">im_deviate</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-maxpos" title="im_maxpos ()">im_maxpos</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-minpos" title="im_minpos ()">im_minpos</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-maxpos-avg" title="im_maxpos_avg ()">im_maxpos_avg</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-maxpos-vec" title="im_maxpos_vec ()">im_maxpos_vec</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-minpos-vec" title="im_minpos_vec ()">im_minpos_vec</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-bandmean" title="im_bandmean ()">im_bandmean</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-add" title="im_add ()">im_add</a>                              (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-subtract" title="im_subtract ()">im_subtract</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-invert" title="im_invert ()">im_invert</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-lintra" title="im_lintra ()">im_lintra</a>                           (<em class="parameter"><code><span class="type">double</span> a</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-lintra-vec" title="im_lintra_vec ()">im_lintra_vec</a>                       (<em class="parameter"><code><span class="type">int</span> n</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-multiply" title="im_multiply ()">im_multiply</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-divide" title="im_divide ()">im_divide</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-remainder" title="im_remainder ()">im_remainder</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-remainder-vec" title="im_remainder_vec ()">im_remainder_vec</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-remainderconst" title="im_remainderconst ()">im_remainderconst</a>                   (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-recomb" title="im_recomb ()">im_recomb</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *recomb</code></em>);
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-sign" title="im_sign ()">im_sign</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-abs" title="im_abs ()">im_abs</a>                              (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-floor" title="im_floor ()">im_floor</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-rint" title="im_rint ()">im_rint</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-ceil" title="im_ceil ()">im_ceil</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-linreg" title="im_linreg ()">im_linreg</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> **ins</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-point" title="im_point ()">im_point</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-point-bilinear" title="im_point_bilinear ()">im_point_bilinear</a>                   (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-powtra" title="im_powtra ()">im_powtra</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-powtra-vec" title="im_powtra_vec ()">im_powtra_vec</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-exptra" title="im_exptra ()">im_exptra</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-exp10tra" title="im_exp10tra ()">im_exp10tra</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-expntra" title="im_expntra ()">im_expntra</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-expntra-vec" title="im_expntra_vec ()">im_expntra_vec</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-logtra" title="im_logtra ()">im_logtra</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-log10tra" title="im_log10tra ()">im_log10tra</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-sintra" title="im_sintra ()">im_sintra</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-costra" title="im_costra ()">im_costra</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-tantra" title="im_tantra ()">im_tantra</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-asintra" title="im_asintra ()">im_asintra</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-acostra" title="im_acostra ()">im_acostra</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-atantra" title="im_atantra ()">im_atantra</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-arithmetic.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-arithmetic.html#im-cross-phase" title="im_cross_phase ()">im_cross_phase</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *a</code></em>,
doc/reference/html/libvips-arithmetic.html:<a name="libvips-arithmetic.description"></a><h2>Description</h2>
doc/reference/html/libvips-arithmetic.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-arithmetic.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-arithmetic.html:the two n-band images are operated upon.
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-arithmetic.html#im-remainder-vec" title="im_remainder_vec ()"><code class="function">im_remainder_vec()</code></a>, you can mix single-element arrays or single-band 
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-image.html#IM-BANDFMT-UCHAR:CAPS"><code class="literal">IM_BANDFMT_UCHAR</code></a> images together, for example, produces a 
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-image.html#IM-BANDFMT-USHORT:CAPS"><code class="literal">IM_BANDFMT_USHORT</code></a> image, and taking the <a class="link" href="libvips-arithmetic.html#im-costra" title="im_costra ()"><code class="function">im_costra()</code></a> of a 
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-image.html#IM-BANDFMT-USHORT:CAPS"><code class="literal">IM_BANDFMT_USHORT</code></a> image produces <a class="link" href="libvips-image.html#IM-BANDFMT-FLOAT:CAPS"><code class="literal">IM_BANDFMT_FLOAT</code></a> image. 
doc/reference/html/libvips-arithmetic.html:<div class="table-contents"><table summary="Smallest common format" border="1">
doc/reference/html/libvips-arithmetic.html:<p><br class="table-break">
doc/reference/html/libvips-arithmetic.html:<a name="libvips-arithmetic.details"></a><h2>Details</h2>
doc/reference/html/libvips-arithmetic.html:<a name="im-measure-area"></a><h3>im_measure_area ()</h3>
doc/reference/html/libvips-arithmetic.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_measure_area                     (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-arithmetic.html:Analyse a grid of colour patches, producing a <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> of patch averages.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-avg" title="im_avg ()"><code class="function">im_avg()</code></a>, <a class="link" href="libvips-arithmetic.html#im-deviate" title="im_deviate ()"><code class="function">im_deviate()</code></a>, <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td>array of patch numbers to measure (numbered from 1 in row-major order)
doc/reference/html/libvips-arithmetic.html:<td> <a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> of measurements.
doc/reference/html/libvips-arithmetic.html:<a name="im-stats"></a><h3>im_stats ()</h3>
doc/reference/html/libvips-arithmetic.html:<pre class="programlisting"><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="returnvalue">DOUBLEMASK</span></a> *        im_stats                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>);</pre>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> of 6 columns by n + 1 (where n is number of bands in image <em class="parameter"><code>in</code></em>) 
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-maxpos" title="im_maxpos ()"><code class="function">im_maxpos()</code></a>, <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()"><code class="function">im_min()</code></a>, <a class="link" href="libvips-arithmetic.html#im-deviate" title="im_deviate ()"><code class="function">im_deviate()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-max"></a><h3>im_max ()</h3>
doc/reference/html/libvips-arithmetic.html:is returned. <a class="link" href="libvips-arithmetic.html#im-max" title="im_max ()"><code class="function">im_max()</code></a> finds the maximum of all bands: if you
doc/reference/html/libvips-arithmetic.html:want to find the maximum of each band separately, use <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-maxpos" title="im_maxpos ()"><code class="function">im_maxpos()</code></a>, <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()"><code class="function">im_min()</code></a>, <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-min"></a><h3>im_min ()</h3>
doc/reference/html/libvips-arithmetic.html:is returned. <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()"><code class="function">im_min()</code></a> finds the minimum of all bands: if you
doc/reference/html/libvips-arithmetic.html:want to find the minimum of each band separately, use <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-minpos" title="im_minpos ()"><code class="function">im_minpos()</code></a>, <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()"><code class="function">im_min()</code></a>, <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-avg"></a><h3>im_avg ()</h3>
doc/reference/html/libvips-arithmetic.html:bands of the input image: use <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a> if you need to calculate an 
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>, <a class="link" href="libvips-arithmetic.html#im-bandmean" title="im_bandmean ()"><code class="function">im_bandmean()</code></a>, <a class="link" href="libvips-arithmetic.html#im-deviate" title="im_deviate ()"><code class="function">im_deviate()</code></a>, <a class="link" href="libvips-morphology.html#im-rank" title="im_rank ()"><code class="function">im_rank()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-deviate"></a><h3>im_deviate ()</h3>
doc/reference/html/libvips-arithmetic.html:operates on all bands of the input image: use <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a> if you need 
doc/reference/html/libvips-arithmetic.html:Non-complex images only.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>, <a class="link" href="libvips-arithmetic.html#im-bandmean" title="im_bandmean ()"><code class="function">im_bandmean()</code></a>, <a class="link" href="libvips-arithmetic.html#im-avg" title="im_avg ()"><code class="function">im_avg()</code></a>, <a class="link" href="libvips-morphology.html#im-rank" title="im_rank ()"><code class="function">im_rank()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-maxpos"></a><h3>im_maxpos ()</h3>
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-minpos" title="im_minpos ()"><code class="function">im_minpos()</code></a>, <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()"><code class="function">im_min()</code></a>, <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>, <a class="link" href="libvips-arithmetic.html#im-maxpos-avg" title="im_maxpos_avg ()"><code class="function">im_maxpos_avg()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-minpos"></a><h3>im_minpos ()</h3>
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-maxpos" title="im_maxpos ()"><code class="function">im_maxpos()</code></a>, <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()"><code class="function">im_min()</code></a>, <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>, <a class="link" href="libvips-arithmetic.html#im-maxpos-avg" title="im_maxpos_avg ()"><code class="function">im_maxpos_avg()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-maxpos-avg"></a><h3>im_maxpos_avg ()</h3>
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-maxpos" title="im_maxpos ()"><code class="function">im_maxpos()</code></a>, <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()"><code class="function">im_min()</code></a>, <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-maxpos-vec"></a><h3>im_maxpos_vec ()</h3>
doc/reference/html/libvips-arithmetic.html:For 8 and 16-bit images, it's much faster to find the histogram and then
doc/reference/html/libvips-arithmetic.html:calculate a threshold from that. See <a class="link" href="libvips-histograms-lut.html#im-mpercent" title="im_mpercent ()"><code class="function">im_mpercent()</code></a>.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-minpos" title="im_minpos ()"><code class="function">im_minpos()</code></a>, <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()"><code class="function">im_min()</code></a>, <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>, <a class="link" href="libvips-arithmetic.html#im-maxpos-avg" title="im_maxpos_avg ()"><code class="function">im_maxpos_avg()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-minpos-vec"></a><h3>im_minpos_vec ()</h3>
doc/reference/html/libvips-arithmetic.html:For 8 and 16-bit images, it's much faster to find the histogram and then
doc/reference/html/libvips-arithmetic.html:calculate a threshold from that. See <a class="link" href="libvips-histograms-lut.html#im-mpercent" title="im_mpercent ()"><code class="function">im_mpercent()</code></a>.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-minpos" title="im_minpos ()"><code class="function">im_minpos()</code></a>, <a class="link" href="libvips-arithmetic.html#im-min" title="im_min ()"><code class="function">im_min()</code></a>, <a class="link" href="libvips-arithmetic.html#im-stats" title="im_stats ()"><code class="function">im_stats()</code></a>, <a class="link" href="libvips-arithmetic.html#im-maxpos-avg" title="im_maxpos_avg ()"><code class="function">im_maxpos_avg()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-bandmean"></a><h3>im_bandmean ()</h3>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-arithmetic.html#im-bandmean" title="im_bandmean ()"><code class="function">im_bandmean()</code></a> writes a one-band image where each pixel is the average of 
doc/reference/html/libvips-arithmetic.html:the same as the input band format. Integer types use round-to-nearest
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-add" title="im_add ()"><code class="function">im_add()</code></a>, <a class="link" href="libvips-arithmetic.html#im-avg" title="im_avg ()"><code class="function">im_avg()</code></a>, <a class="link" href="libvips-arithmetic.html#im-recomb" title="im_recomb ()"><code class="function">im_recomb()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-add"></a><h3>im_add ()</h3>
doc/reference/html/libvips-arithmetic.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-arithmetic.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-arithmetic.html:the two n-band images are operated upon.
doc/reference/html/libvips-arithmetic.html:<a name="id489595"></a><p class="title"><b>Table 2. <a class="link" href="libvips-arithmetic.html#im-add" title="im_add ()"><code class="function">im_add()</code></a> type promotion</b></p>
doc/reference/html/libvips-arithmetic.html:<div class="table-contents"><table summary="im_add() type promotion" border="1">
doc/reference/html/libvips-arithmetic.html:<p><br class="table-break">
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-subtract" title="im_subtract ()"><code class="function">im_subtract()</code></a>, <a class="link" href="libvips-arithmetic.html#im-lintra" title="im_lintra ()"><code class="function">im_lintra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-subtract"></a><h3>im_subtract ()</h3>
doc/reference/html/libvips-arithmetic.html:This operation calculates <em class="parameter"><code>in1</code></em> - <em class="parameter"><code>in2</code></em> and writes the result to <em class="parameter"><code>out</code></em>. 
doc/reference/html/libvips-arithmetic.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-arithmetic.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-arithmetic.html:the two n-band images are operated upon.
doc/reference/html/libvips-arithmetic.html:<a name="id489968"></a><p class="title"><b>Table 3. <a class="link" href="libvips-arithmetic.html#im-subtract" title="im_subtract ()"><code class="function">im_subtract()</code></a> type promotion</b></p>
doc/reference/html/libvips-arithmetic.html:<div class="table-contents"><table summary="im_subtract() type promotion" border="1">
doc/reference/html/libvips-arithmetic.html:<p><br class="table-break">
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-add" title="im_add ()"><code class="function">im_add()</code></a>, <a class="link" href="libvips-arithmetic.html#im-lintra" title="im_lintra ()"><code class="function">im_lintra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-invert"></a><h3>im_invert ()</h3>
doc/reference/html/libvips-arithmetic.html:this operation calculates (255 - <em class="parameter"><code>in</code></em>).
doc/reference/html/libvips-arithmetic.html:This is not a generally useful program -- it is included as an example of 
doc/reference/html/libvips-arithmetic.html:a very simple new-style IO function. 
doc/reference/html/libvips-arithmetic.html:See <a class="link" href="libvips-arithmetic.html#im-exptra" title="im_exptra ()"><code class="function">im_exptra()</code></a> for an example of a VIPS function which can process
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-exptra" title="im_exptra ()"><code class="function">im_exptra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-lintra" title="im_lintra ()"><code class="function">im_lintra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-lintra"></a><h3>im_lintra ()</h3>
doc/reference/html/libvips-arithmetic.html:Pass an image through a linear transform - ie. <em class="parameter"><code>out</code></em> = <em class="parameter"><code>in</code></em> * <em class="parameter"><code>a</code></em> + <em class="parameter"><code>b</code></em>. Output
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-add" title="im_add ()"><code class="function">im_add()</code></a>, <a class="link" href="libvips-arithmetic.html#im-lintra-vec" title="im_lintra_vec ()"><code class="function">im_lintra_vec()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-lintra-vec"></a><h3>im_lintra_vec ()</h3>
doc/reference/html/libvips-arithmetic.html:Pass an image through a linear transform - ie. <em class="parameter"><code>out</code></em> = <em class="parameter"><code>in</code></em> * <em class="parameter"><code>a</code></em> + <em class="parameter"><code>b</code></em>. Output
doc/reference/html/libvips-arithmetic.html:element and the image only has a single band, the result is a many-band
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-add" title="im_add ()"><code class="function">im_add()</code></a>, <a class="link" href="libvips-arithmetic.html#im-lintra" title="im_lintra ()"><code class="function">im_lintra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-multiply"></a><h3>im_multiply ()</h3>
doc/reference/html/libvips-arithmetic.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-arithmetic.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-arithmetic.html:the two n-band images are operated upon.
doc/reference/html/libvips-arithmetic.html:<a name="id491000"></a><p class="title"><b>Table 4. <a class="link" href="libvips-arithmetic.html#im-multiply" title="im_multiply ()"><code class="function">im_multiply()</code></a> type promotion</b></p>
doc/reference/html/libvips-arithmetic.html:<div class="table-contents"><table summary="im_multiply() type promotion" border="1">
doc/reference/html/libvips-arithmetic.html:<p><br class="table-break">
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-divide" title="im_divide ()"><code class="function">im_divide()</code></a>, <a class="link" href="libvips-arithmetic.html#im-lintra" title="im_lintra ()"><code class="function">im_lintra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-divide"></a><h3>im_divide ()</h3>
doc/reference/html/libvips-arithmetic.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-arithmetic.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-arithmetic.html:the two n-band images are operated upon.
doc/reference/html/libvips-arithmetic.html:<a name="id491394"></a><p class="title"><b>Table 5. <a class="link" href="libvips-arithmetic.html#im-divide" title="im_divide ()"><code class="function">im_divide()</code></a> type promotion</b></p>
doc/reference/html/libvips-arithmetic.html:<div class="table-contents"><table summary="im_divide() type promotion" border="1">
doc/reference/html/libvips-arithmetic.html:<p><br class="table-break">
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-multiply" title="im_multiply ()"><code class="function">im_multiply()</code></a>, <a class="link" href="libvips-arithmetic.html#im-lintra" title="im_lintra ()"><code class="function">im_lintra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-remainder"></a><h3>im_remainder ()</h3>
doc/reference/html/libvips-arithmetic.html:non-complex format. For float formats, <a class="link" href="libvips-arithmetic.html#im-remainder" title="im_remainder ()"><code class="function">im_remainder()</code></a> calculates <em class="parameter"><code>in1</code></em> -
doc/reference/html/libvips-arithmetic.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-arithmetic.html:one-band image by joining n copies of the one-band image together, and then
doc/reference/html/libvips-arithmetic.html:the two n-band images are operated upon.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-remainderconst" title="im_remainderconst ()"><code class="function">im_remainderconst()</code></a>, <a class="link" href="libvips-arithmetic.html#im-divide" title="im_divide ()"><code class="function">im_divide()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-remainder-vec"></a><h3>im_remainder_vec ()</h3>
doc/reference/html/libvips-arithmetic.html:non-complex format. For float formats, <a class="link" href="libvips-arithmetic.html#im-remainder" title="im_remainder ()"><code class="function">im_remainder()</code></a> calculates <em class="parameter"><code>in</code></em> -
doc/reference/html/libvips-arithmetic.html:must have one band. Either the image is up-banded by joining n copies of
doc/reference/html/libvips-arithmetic.html:the one-band image together, or the array is upbanded by copying the single
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-remainder" title="im_remainder ()"><code class="function">im_remainder()</code></a>, <a class="link" href="libvips-arithmetic.html#im-remainderconst" title="im_remainderconst ()"><code class="function">im_remainderconst()</code></a>, <a class="link" href="libvips-arithmetic.html#im-divide" title="im_divide ()"><code class="function">im_divide()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-remainderconst"></a><h3>im_remainderconst ()</h3>
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-remainder-vec" title="im_remainder_vec ()"><code class="function">im_remainder_vec()</code></a>, <a class="link" href="libvips-arithmetic.html#im-divide" title="im_divide ()"><code class="function">im_divide()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-recomb"></a><h3>im_recomb ()</h3>
doc/reference/html/libvips-arithmetic.html:                                                         <em class="parameter"><code><a class="link" href="libvips-mask.html#DOUBLEMASK:CAPS" title="DOUBLEMASK"><span class="type">DOUBLEMASK</span></a> *recomb</code></em>);</pre>
doc/reference/html/libvips-arithmetic.html:an n-element vector, where n is the number of bands in <em class="parameter"><code>in</code></em>, and multipled by
doc/reference/html/libvips-arithmetic.html:the n x m matrix <em class="parameter"><code>recomb</code></em> to produce the m-band image <em class="parameter"><code>out</code></em>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-arithmetic.html:<a name="im-sign"></a><h3>im_sign ()</h3>
doc/reference/html/libvips-arithmetic.html:Finds the unit vector in the direction of the pixel value. For non-complex
doc/reference/html/libvips-arithmetic.html:images, it returns a signed char image with values -1, 0, and 1 for negative,
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-abs" title="im_abs ()"><code class="function">im_abs()</code></a>, <code class="function">im_cmulnorm()</code>, <a class="link" href="libvips-conversion.html#im-c2amph" title="im_c2amph ()"><code class="function">im_c2amph()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-abs"></a><h3>im_abs ()</h3>
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-exp10tra" title="im_exp10tra ()"><code class="function">im_exp10tra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-sign" title="im_sign ()"><code class="function">im_sign()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-floor"></a><h3>im_floor ()</h3>
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-ceil" title="im_ceil ()"><code class="function">im_ceil()</code></a>, <a class="link" href="libvips-arithmetic.html#im-rint" title="im_rint ()"><code class="function">im_rint()</code></a>, <a class="link" href="libvips-conversion.html#im-clip2fmt" title="im_clip2fmt ()"><code class="function">im_clip2fmt()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-rint"></a><h3>im_rint ()</h3>
doc/reference/html/libvips-arithmetic.html:call <a class="link" href="libvips-util.html#IM-RINT:CAPS" title="IM_RINT()"><code class="function">IM_RINT()</code></a> for float and complex types. Output type == input type.
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-util.html#IM-RINT:CAPS" title="IM_RINT()"><code class="function">IM_RINT()</code></a> is a pseudo-round-to-nearest. It is much faster than
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-ceil" title="im_ceil ()"><code class="function">im_ceil()</code></a>, <a class="link" href="libvips-arithmetic.html#im-floor" title="im_floor ()"><code class="function">im_floor()</code></a>, <a class="link" href="libvips-conversion.html#im-clip2fmt" title="im_clip2fmt ()"><code class="function">im_clip2fmt()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-ceil"></a><h3>im_ceil ()</h3>
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-floor" title="im_floor ()"><code class="function">im_floor()</code></a>, <a class="link" href="libvips-arithmetic.html#im-rint" title="im_rint ()"><code class="function">im_rint()</code></a>, <a class="link" href="libvips-conversion.html#im-clip2fmt" title="im_clip2fmt ()"><code class="function">im_clip2fmt()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-linreg"></a><h3>im_linreg ()</h3>
doc/reference/html/libvips-arithmetic.html:single band images. The output is a seven-band douuble image
doc/reference/html/libvips-arithmetic.html:<td>NULL-terminated array of input images
doc/reference/html/libvips-arithmetic.html:<a name="im-point"></a><h3>im_point ()</h3>
doc/reference/html/libvips-arithmetic.html:Non-integral values are calculated using the supplied <em class="parameter"><code>interpolate</code></em>.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-avg" title="im_avg ()"><code class="function">im_avg()</code></a>, <a class="link" href="VipsInterpolate.html" title="VipsInterpolate"><span class="type">VipsInterpolate</span></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-point-bilinear"></a><h3>im_point_bilinear ()</h3>
doc/reference/html/libvips-arithmetic.html:Use bilinear interpolation if <em class="parameter"><code>x</code></em> or <em class="parameter"><code>y</code></em> are non-integral. 
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-avg" title="im_avg ()"><code class="function">im_avg()</code></a>, <a class="link" href="libvips-arithmetic.html#im-point" title="im_point ()"><code class="function">im_point()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-powtra"></a><h3>im_powtra ()</h3>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-arithmetic.html#im-powtra" title="im_powtra ()"><code class="function">im_powtra()</code></a> transforms element x of input to 
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-logtra" title="im_logtra ()"><code class="function">im_logtra()</code></a>, <code class="function">im_powntra_vec()</code>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-powtra-vec"></a><h3>im_powtra_vec ()</h3>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-arithmetic.html#im-powtra-vec" title="im_powtra_vec ()"><code class="function">im_powtra_vec()</code></a> transforms element x of input to 
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-logtra" title="im_logtra ()"><code class="function">im_logtra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-expntra-vec" title="im_expntra_vec ()"><code class="function">im_expntra_vec()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-exptra"></a><h3>im_exptra ()</h3>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-arithmetic.html#im-exptra" title="im_exptra ()"><code class="function">im_exptra()</code></a> transforms element x of input to 
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-logtra" title="im_logtra ()"><code class="function">im_logtra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-powtra" title="im_powtra ()"><code class="function">im_powtra()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-exp10tra"></a><h3>im_exp10tra ()</h3>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-arithmetic.html#im-exptra" title="im_exptra ()"><code class="function">im_exptra()</code></a> transforms element x of input to 
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-logtra" title="im_logtra ()"><code class="function">im_logtra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-powtra" title="im_powtra ()"><code class="function">im_powtra()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-expntra"></a><h3>im_expntra ()</h3>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-arithmetic.html#im-expntra" title="im_expntra ()"><code class="function">im_expntra()</code></a> transforms element x of input to 
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-logtra" title="im_logtra ()"><code class="function">im_logtra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-powtra" title="im_powtra ()"><code class="function">im_powtra()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-expntra-vec"></a><h3>im_expntra_vec ()</h3>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-arithmetic.html#im-expntra-vec" title="im_expntra_vec ()"><code class="function">im_expntra_vec()</code></a> transforms element x of input to 
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-logtra" title="im_logtra ()"><code class="function">im_logtra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-powtra" title="im_powtra ()"><code class="function">im_powtra()</code></a>
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-logtra"></a><h3>im_logtra ()</h3>
doc/reference/html/libvips-arithmetic.html:double, in which case the output is double.  Non-complex images only.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-exp10tra" title="im_exp10tra ()"><code class="function">im_exp10tra()</code></a>, <code class="function">im_logntra()</code>, <a class="link" href="libvips-arithmetic.html#im-sintra" title="im_sintra ()"><code class="function">im_sintra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-log10tra"></a><h3>im_log10tra ()</h3>
doc/reference/html/libvips-arithmetic.html:double, in which case the output is double.  Non-complex images only.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-exp10tra" title="im_exp10tra ()"><code class="function">im_exp10tra()</code></a>, <code class="function">im_logntra()</code>, <a class="link" href="libvips-arithmetic.html#im-sintra" title="im_sintra ()"><code class="function">im_sintra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-sintra"></a><h3>im_sintra ()</h3>
doc/reference/html/libvips-arithmetic.html:double, in which case the output is double.  Non-complex images only.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-asintra" title="im_asintra ()"><code class="function">im_asintra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-costra" title="im_costra ()"><code class="function">im_costra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-tantra" title="im_tantra ()"><code class="function">im_tantra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-costra"></a><h3>im_costra ()</h3>
doc/reference/html/libvips-arithmetic.html:double, in which case the output is double.  Non-complex images only.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-acostra" title="im_acostra ()"><code class="function">im_acostra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-sintra" title="im_sintra ()"><code class="function">im_sintra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-tantra" title="im_tantra ()"><code class="function">im_tantra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-tantra"></a><h3>im_tantra ()</h3>
doc/reference/html/libvips-arithmetic.html:double, in which case the output is double.  Non-complex images only.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-atantra" title="im_atantra ()"><code class="function">im_atantra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-sintra" title="im_sintra ()"><code class="function">im_sintra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-tantra" title="im_tantra ()"><code class="function">im_tantra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-asintra"></a><h3>im_asintra ()</h3>
doc/reference/html/libvips-arithmetic.html:double, in which case the output is double.  Non-complex images only.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-asintra" title="im_asintra ()"><code class="function">im_asintra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-costra" title="im_costra ()"><code class="function">im_costra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-tantra" title="im_tantra ()"><code class="function">im_tantra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-acostra"></a><h3>im_acostra ()</h3>
doc/reference/html/libvips-arithmetic.html:case the output is double.  Non-complex images only.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-costra" title="im_costra ()"><code class="function">im_costra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-asintra" title="im_asintra ()"><code class="function">im_asintra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-atantra" title="im_atantra ()"><code class="function">im_atantra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-atantra"></a><h3>im_atantra ()</h3>
doc/reference/html/libvips-arithmetic.html:case the output is double.  Non-complex images only.
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-tantra" title="im_tantra ()"><code class="function">im_tantra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-asintra" title="im_asintra ()"><code class="function">im_asintra()</code></a>, <a class="link" href="libvips-arithmetic.html#im-atantra" title="im_atantra ()"><code class="function">im_atantra()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="im-cross-phase"></a><h3>im_cross_phase ()</h3>
doc/reference/html/libvips-arithmetic.html:See also: <a class="link" href="libvips-arithmetic.html#im-multiply" title="im_multiply ()"><code class="function">im_multiply()</code></a>, <a class="link" href="libvips-arithmetic.html#im-sign" title="im_sign ()"><code class="function">im_sign()</code></a>.
doc/reference/html/libvips-arithmetic.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-arithmetic.html:<a name="libvips-arithmetic.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-arithmetic.html:<a class="link" href="libvips-boolean.html" title="boolean">boolean</a>
doc/reference/html/libvips-arithmetic.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-boolean.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-boolean.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-boolean.html:<link rel="prev" href="libvips-arithmetic.html" title="arithmetic">
doc/reference/html/libvips-boolean.html:<link rel="next" href="libvips-relational.html" title="relational">
doc/reference/html/libvips-boolean.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-boolean.html:<td><a accesskey="p" href="libvips-arithmetic.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-boolean.html:<td><a accesskey="n" href="libvips-relational.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-boolean.html:<a href="#libvips-boolean.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-boolean.html:                  <a href="#libvips-boolean.description" class="shortcut">Description</a>
doc/reference/html/libvips-boolean.html:<a name="libvips-boolean"></a><div class="titlepage"></div>
doc/reference/html/libvips-boolean.html:<h2><span class="refentrytitle"><a name="libvips-boolean.top_of_page"></a>boolean</span></h2>
doc/reference/html/libvips-boolean.html:<a name="libvips-boolean.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-boolean.html:<a name="libvips-boolean.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()">im_andimage</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-orimage" title="im_orimage ()">im_orimage</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-eorimage" title="im_eorimage ()">im_eorimage</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-andimage-vec" title="im_andimage_vec ()">im_andimage_vec</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-andimageconst" title="im_andimageconst ()">im_andimageconst</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-orimage-vec" title="im_orimage_vec ()">im_orimage_vec</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-orimageconst" title="im_orimageconst ()">im_orimageconst</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-eorimage-vec" title="im_eorimage_vec ()">im_eorimage_vec</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-eorimageconst" title="im_eorimageconst ()">im_eorimageconst</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-shiftleft-vec" title="im_shiftleft_vec ()">im_shiftleft_vec</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-shiftleft" title="im_shiftleft ()">im_shiftleft</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-shiftright-vec" title="im_shiftright_vec ()">im_shiftright_vec</a>                   (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-boolean.html#im-shiftright" title="im_shiftright ()">im_shiftright</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-boolean.html:<a name="libvips-boolean.description"></a><h2>Description</h2>
doc/reference/html/libvips-boolean.html:These operations perform boolean operations, such as bitwise-and, on
doc/reference/html/libvips-boolean.html:must have one band. In this case, an n-band image is formed from the 
doc/reference/html/libvips-boolean.html:one-band image by joining n copies of the one-band image together and then
doc/reference/html/libvips-boolean.html:the two n-band images are operated upon.
doc/reference/html/libvips-boolean.html:<a class="link" href="libvips-boolean.html#im-andimage-vec" title="im_andimage_vec ()"><code class="function">im_andimage_vec()</code></a>, you can mix single-element arrays or single-band images
doc/reference/html/libvips-boolean.html:You might think <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a> would be called "im_and", but that causes
doc/reference/html/libvips-boolean.html:<a name="libvips-boolean.details"></a><h2>Details</h2>
doc/reference/html/libvips-boolean.html:<a name="im-andimage"></a><h3>im_andimage ()</h3>
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-orimage" title="im_orimage ()"><code class="function">im_orimage()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-orimage"></a><h3>im_orimage ()</h3>
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-eorimage" title="im_eorimage ()"><code class="function">im_eorimage()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-eorimage"></a><h3>im_eorimage ()</h3>
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-eorimage-vec" title="im_eorimage_vec ()"><code class="function">im_eorimage_vec()</code></a>, <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-andimage-vec"></a><h3>im_andimage_vec ()</h3>
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimage-vec" title="im_orimage_vec ()"><code class="function">im_orimage_vec()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-andimageconst"></a><h3>im_andimageconst ()</h3>
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimage-vec" title="im_orimage_vec ()"><code class="function">im_orimage_vec()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-orimage-vec"></a><h3>im_orimage_vec ()</h3>
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimageconst" title="im_orimageconst ()"><code class="function">im_orimageconst()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-orimageconst"></a><h3>im_orimageconst ()</h3>
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimage-vec" title="im_orimage_vec ()"><code class="function">im_orimage_vec()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-eorimage-vec"></a><h3>im_eorimage_vec ()</h3>
doc/reference/html/libvips-boolean.html:This operation calculates <em class="parameter"><code>in</code></em> ^ <em class="parameter"><code>c</code></em> (bitwise exclusive-or of image pixels 
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimageconst" title="im_orimageconst ()"><code class="function">im_orimageconst()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-eorimageconst"></a><h3>im_eorimageconst ()</h3>
doc/reference/html/libvips-boolean.html:This operation calculates <em class="parameter"><code>in</code></em> ^ <em class="parameter"><code>c</code></em> (bitwise exclusive-or of image pixels 
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimage-vec" title="im_orimage_vec ()"><code class="function">im_orimage_vec()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-shiftleft-vec"></a><h3>im_shiftleft_vec ()</h3>
doc/reference/html/libvips-boolean.html:This operation calculates <em class="parameter"><code>in</code></em> &lt;&lt; <em class="parameter"><code>c</code></em> (left-shift by <em class="parameter"><code>c</code></em> bits
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimageconst" title="im_orimageconst ()"><code class="function">im_orimageconst()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-shiftleft"></a><h3>im_shiftleft ()</h3>
doc/reference/html/libvips-boolean.html:This operation calculates <em class="parameter"><code>in</code></em> &lt;&lt; <em class="parameter"><code>n</code></em> (left-shift by <em class="parameter"><code>n</code></em> bits)
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimageconst" title="im_orimageconst ()"><code class="function">im_orimageconst()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-shiftright-vec"></a><h3>im_shiftright_vec ()</h3>
doc/reference/html/libvips-boolean.html:This operation calculates <em class="parameter"><code>in</code></em> &lt;&lt; <em class="parameter"><code>c</code></em> (right-shift by <em class="parameter"><code>c</code></em> bits
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimageconst" title="im_orimageconst ()"><code class="function">im_orimageconst()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="im-shiftright"></a><h3>im_shiftright ()</h3>
doc/reference/html/libvips-boolean.html:This operation calculates <em class="parameter"><code>in</code></em> &gt;&gt; <em class="parameter"><code>n</code></em> (right-shift by <em class="parameter"><code>n</code></em> bits)
doc/reference/html/libvips-boolean.html:See also: <a class="link" href="libvips-boolean.html#im-andimage" title="im_andimage ()"><code class="function">im_andimage()</code></a>, <a class="link" href="libvips-boolean.html#im-orimageconst" title="im_orimageconst ()"><code class="function">im_orimageconst()</code></a>.
doc/reference/html/libvips-boolean.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-boolean.html:<a name="libvips-boolean.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-boolean.html:<a class="link" href="libvips-arithmetic.html" title="arithmetic">arithmetic</a>
doc/reference/html/libvips-boolean.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-freq-filt.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-freq-filt.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-freq-filt.html:<link rel="next" href="libvips-histograms-lut.html" title="histograms_lut">
doc/reference/html/libvips-freq-filt.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-freq-filt.html:<td><a accesskey="n" href="libvips-histograms-lut.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-freq-filt.html:<a href="#libvips-freq-filt.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-freq-filt.html:                  <a href="#libvips-freq-filt.description" class="shortcut">Description</a>
doc/reference/html/libvips-freq-filt.html:<a name="libvips-freq-filt"></a><div class="titlepage"></div>
doc/reference/html/libvips-freq-filt.html:<h2><span class="refentrytitle"><a name="libvips-freq-filt.top_of_page"></a>freq_filt</span></h2>
doc/reference/html/libvips-freq-filt.html:<p>freq_filt — fourier transforms and frequency-domin filters</p>
doc/reference/html/libvips-freq-filt.html:<a name="libvips-freq-filt.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-freq-filt.html:<a name="libvips-freq-filt.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-freq-filt.html:enum                <a class="link" href="libvips-freq-filt.html#VipsMaskType" title="enum VipsMaskType">VipsMaskType</a>;
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-fwfft" title="im_fwfft ()">im_fwfft</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-invfft" title="im_invfft ()">im_invfft</a>                           (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-invfftr" title="im_invfftr ()">im_invfftr</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-freqflt" title="im_freqflt ()">im_freqflt</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-disp-ps" title="im_disp_ps ()">im_disp_ps</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-rotquad" title="im_rotquad ()">im_rotquad</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-phasecor-fft" title="im_phasecor_fft ()">im_phasecor_fft</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in1</code></em>,
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-flt-image-freq" title="im_flt_image_freq ()">im_flt_image_freq</a>                   (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-freq-filt.html:                                                         <em class="parameter"><code><a class="link" href="libvips-freq-filt.html#VipsMaskType" title="enum VipsMaskType"><span class="type">VipsMaskType</span></a> flag</code></em>,
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-create-fmask" title="im_create_fmask ()">im_create_fmask</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-freq-filt.html:                                                         <em class="parameter"><code><a class="link" href="libvips-freq-filt.html#VipsMaskType" title="enum VipsMaskType"><span class="type">VipsMaskType</span></a> flag</code></em>,
doc/reference/html/libvips-freq-filt.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-freq-filt.html#im-fractsurf" title="im_fractsurf ()">im_fractsurf</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-freq-filt.html:<a name="libvips-freq-filt.description"></a><h2>Description</h2>
doc/reference/html/libvips-freq-filt.html:To and from Fourier space, filter in Fourier space, convert Fourier-space
doc/reference/html/libvips-freq-filt.html:<a name="libvips-freq-filt.details"></a><h2>Details</h2>
doc/reference/html/libvips-freq-filt.html:<a name="im-fwfft"></a><h3>im_fwfft ()</h3>
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-freq-filt.html#im-invfft" title="im_invfft ()"><code class="function">im_invfft()</code></a>, <a class="link" href="libvips-freq-filt.html#im-disp-ps" title="im_disp_ps ()"><code class="function">im_disp_ps()</code></a>.
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-freq-filt.html:<a name="im-invfft"></a><h3>im_invfft ()</h3>
doc/reference/html/libvips-freq-filt.html:If you are OK with a real result, use <a class="link" href="libvips-freq-filt.html#im-invfftr" title="im_invfftr ()"><code class="function">im_invfftr()</code></a> instead, it's quicker.
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-freq-filt.html#im-invfftr" title="im_invfftr ()"><code class="function">im_invfftr()</code></a>, <a class="link" href="libvips-freq-filt.html#im-fwfft" title="im_fwfft ()"><code class="function">im_fwfft()</code></a>, <a class="link" href="libvips-freq-filt.html#im-disp-ps" title="im_disp_ps ()"><code class="function">im_disp_ps()</code></a>.
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-freq-filt.html:<a name="im-invfftr"></a><h3>im_invfftr ()</h3>
doc/reference/html/libvips-freq-filt.html:This is faster than <a class="link" href="libvips-freq-filt.html#im-invfft" title="im_invfft ()"><code class="function">im_invfft()</code></a>, which gives a complex result. 
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-freq-filt.html#im-invfft" title="im_invfft ()"><code class="function">im_invfft()</code></a>, <a class="link" href="libvips-freq-filt.html#im-fwfft" title="im_fwfft ()"><code class="function">im_fwfft()</code></a>, <a class="link" href="libvips-freq-filt.html#im-disp-ps" title="im_disp_ps ()"><code class="function">im_disp_ps()</code></a>.
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-freq-filt.html:<a name="im-freqflt"></a><h3>im_freqflt ()</h3>
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-freq-filt.html#im-invfftr" title="im_invfftr ()"><code class="function">im_invfftr()</code></a>, <a class="link" href="libvips-freq-filt.html#im-create-fmask" title="im_create_fmask ()"><code class="function">im_create_fmask()</code></a>.
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-freq-filt.html:<a name="im-disp-ps"></a><h3>im_disp_ps ()</h3>
doc/reference/html/libvips-freq-filt.html:Make a displayable (ie. 8-bit unsigned int) power spectrum. 
doc/reference/html/libvips-freq-filt.html:If <em class="parameter"><code>in</code></em> is non-complex, it is transformed to Fourier space. Then the
doc/reference/html/libvips-freq-filt.html:absolute value is passed through <a class="link" href="libvips-conversion.html#im-scaleps" title="im_scaleps ()"><code class="function">im_scaleps()</code></a>, and <a class="link" href="libvips-freq-filt.html#im-rotquad" title="im_rotquad ()"><code class="function">im_rotquad()</code></a>.
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-conversion.html#im-scaleps" title="im_scaleps ()"><code class="function">im_scaleps()</code></a>, <a class="link" href="libvips-freq-filt.html#im-rotquad" title="im_rotquad ()"><code class="function">im_rotquad()</code></a>.
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-freq-filt.html:<a name="im-rotquad"></a><h3>im_rotquad ()</h3>
doc/reference/html/libvips-freq-filt.html:top-left is now in the centre. Handy for moving Fourier images to optical
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-conversion.html#im-wrap" title="im_wrap ()"><code class="function">im_wrap()</code></a>.
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-freq-filt.html:<a name="im-phasecor-fft"></a><h3>im_phasecor_fft ()</h3>
doc/reference/html/libvips-freq-filt.html:Convert the two input images to Fourier space, calculate phase-correlation,
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-freq-filt.html#im-fwfft" title="im_fwfft ()"><code class="function">im_fwfft()</code></a>, <a class="link" href="libvips-arithmetic.html#im-cross-phase" title="im_cross_phase ()"><code class="function">im_cross_phase()</code></a>,
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-freq-filt.html:<a name="im-flt-image-freq"></a><h3>im_flt_image_freq ()</h3>
doc/reference/html/libvips-freq-filt.html:                                                         <em class="parameter"><code><a class="link" href="libvips-freq-filt.html#VipsMaskType" title="enum VipsMaskType"><span class="type">VipsMaskType</span></a> flag</code></em>,
doc/reference/html/libvips-freq-filt.html:Creates a mask (see <a class="link" href="libvips-freq-filt.html#im-create-fmask" title="im_create_fmask ()"><code class="function">im_create_fmask()</code></a>) and filters an image with it (see
doc/reference/html/libvips-freq-filt.html:<a class="link" href="libvips-freq-filt.html#im-freqflt" title="im_freqflt ()"><code class="function">im_freqflt()</code></a>).
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-freq-filt.html#im-create-fmask" title="im_create_fmask ()"><code class="function">im_create_fmask()</code></a>, <a class="link" href="libvips-freq-filt.html#im-freqflt" title="im_freqflt ()"><code class="function">im_freqflt()</code></a>,
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-freq-filt.html:<a name="im-create-fmask"></a><h3>im_create_fmask ()</h3>
doc/reference/html/libvips-freq-filt.html:                                                         <em class="parameter"><code><a class="link" href="libvips-freq-filt.html#VipsMaskType" title="enum VipsMaskType"><span class="type">VipsMaskType</span></a> flag</code></em>,
doc/reference/html/libvips-freq-filt.html:This operation creates a one-band float image of the specified size. The
doc/reference/html/libvips-freq-filt.html:rotate the quadrants with <a class="link" href="libvips-freq-filt.html#im-rotquad" title="im_rotquad ()"><code class="function">im_rotquad()</code></a> before viewing. The DC pixel always
doc/reference/html/libvips-freq-filt.html:<a name="id517714"></a><p class="title"><b>Table 6. Parameters for <a class="link" href="libvips-freq-filt.html#im-create-fmask" title="im_create_fmask ()"><code class="function">im_create_fmask()</code></a></b></p>
doc/reference/html/libvips-freq-filt.html:<div class="table-contents"><table summary="Parameters for im_create_fmask()" border="1">
doc/reference/html/libvips-freq-filt.html:<th align="left"><a class="link" href="libvips-freq-filt.html#VipsMaskType" title="enum VipsMaskType"><span class="type">VipsMaskType</span></a></th>
doc/reference/html/libvips-freq-filt.html:<p><br class="table-break">
doc/reference/html/libvips-freq-filt.html:<span class="emphasis"><em>High-pass, low-pass masks:</em></span> A high pass filter 
doc/reference/html/libvips-freq-filt.html:<span class="emphasis"><em>Ring-pass, ring-reject masks:</em></span> A ring filter passes or
doc/reference/html/libvips-freq-filt.html:<span class="emphasis"><em>Band-pass, band-reject masks:</em></span> These masks are used to
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-freq-filt.html#im-flt-image-freq" title="im_flt_image_freq ()"><code class="function">im_flt_image_freq()</code></a>, <a class="link" href="libvips-freq-filt.html#im-rotquad" title="im_rotquad ()"><code class="function">im_rotquad()</code></a>,
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error
doc/reference/html/libvips-freq-filt.html:<a name="im-fractsurf"></a><h3>im_fractsurf ()</h3>
doc/reference/html/libvips-freq-filt.html:See also: <a class="link" href="libvips-conversion.html#im-gaussnoise" title="im_gaussnoise ()"><code class="function">im_gaussnoise()</code></a>, <a class="link" href="libvips-freq-filt.html#im-flt-image-freq" title="im_flt_image_freq ()"><code class="function">im_flt_image_freq()</code></a>.
doc/reference/html/libvips-freq-filt.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-freq-filt.html:<a name="libvips-freq-filt.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-freq-filt.html:<a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/libvips-freq-filt.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-image.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-image.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-image.html:<link rel="next" href="libvips-header.html" title="header">
doc/reference/html/libvips-image.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-image.html:<td><a accesskey="n" href="libvips-header.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-image.html:<a href="#libvips-image.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-image.html:                  <a href="#libvips-image.description" class="shortcut">Description</a>
doc/reference/html/libvips-image.html:<a name="libvips-image"></a><div class="titlepage"></div>
doc/reference/html/libvips-image.html:<h2><span class="refentrytitle"><a name="libvips-image.top_of_page"></a>image</span></h2>
doc/reference/html/libvips-image.html:<a name="libvips-image.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-image.html:<a name="libvips-image.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-image.html:#define             <a class="link" href="libvips-image.html#IM-MAGIC-INTEL:CAPS" title="IM_MAGIC_INTEL">IM_MAGIC_INTEL</a>
doc/reference/html/libvips-image.html:#define             <a class="link" href="libvips-image.html#IM-MAGIC-SPARC:CAPS" title="IM_MAGIC_SPARC">IM_MAGIC_SPARC</a>
doc/reference/html/libvips-image.html:enum                <a class="link" href="libvips-image.html#VipsDemandStyle" title="enum VipsDemandStyle">VipsDemandStyle</a>;
doc/reference/html/libvips-image.html:enum                <a class="link" href="libvips-image.html#VipsType" title="enum VipsType">VipsType</a>;
doc/reference/html/libvips-image.html:enum                <a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt">VipsBandFmt</a>;
doc/reference/html/libvips-image.html:enum                <a class="link" href="libvips-image.html#VipsCoding" title="enum VipsCoding">VipsCoding</a>;
doc/reference/html/libvips-image.html:                    <a class="link" href="libvips-image.html#VipsProgress" title="VipsProgress">VipsProgress</a>;
doc/reference/html/libvips-image.html:                    <a class="link" href="libvips-image.html#VipsImage" title="VipsImage">VipsImage</a>;
doc/reference/html/libvips-image.html:#define             <a class="link" href="libvips-image.html#IM-IMAGE-SIZEOF-ELEMENT:CAPS" title="IM_IMAGE_SIZEOF_ELEMENT()">IM_IMAGE_SIZEOF_ELEMENT</a>             (I)
doc/reference/html/libvips-image.html:#define             <a class="link" href="libvips-image.html#IM-IMAGE-SIZEOF-PEL:CAPS" title="IM_IMAGE_SIZEOF_PEL()">IM_IMAGE_SIZEOF_PEL</a>                 (I)
doc/reference/html/libvips-image.html:#define             <a class="link" href="libvips-image.html#IM-IMAGE-SIZEOF-LINE:CAPS" title="IM_IMAGE_SIZEOF_LINE()">IM_IMAGE_SIZEOF_LINE</a>                (I)
doc/reference/html/libvips-image.html:#define             <a class="link" href="libvips-image.html#IM-IMAGE-N-ELEMENTS:CAPS" title="IM_IMAGE_N_ELEMENTS()">IM_IMAGE_N_ELEMENTS</a>                 (I)
doc/reference/html/libvips-image.html:#define             <a class="link" href="libvips-image.html#IM-IMAGE-ADDR:CAPS" title="IM_IMAGE_ADDR()">IM_IMAGE_ADDR</a>                       (I,
doc/reference/html/libvips-image.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-image.html#im-get-argv0" title="im_get_argv0 ()">im_get_argv0</a>                        (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-image.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-image.html#im-init-world" title="im_init_world ()">im_init_world</a>                       (<em class="parameter"><code>const <span class="type">char</span> *argv0</code></em>);
doc/reference/html/libvips-image.html:<span class="returnvalue">GOptionGroup</span> *      <a class="link" href="libvips-image.html#im-get-option-group" title="im_get_option_group ()">im_get_option_group</a>                 (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-image.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-image.html#im-version-string" title="im_version_string ()">im_version_string</a>                   (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-image.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-image.html#im-version" title="im_version ()">im_version</a>                          (<em class="parameter"><code><span class="type">int</span> flag</code></em>);
doc/reference/html/libvips-image.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-image.html#im-guess-prefix" title="im_guess_prefix ()">im_guess_prefix</a>                     (<em class="parameter"><code>const <span class="type">char</span> *argv0</code></em>,
doc/reference/html/libvips-image.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-image.html#im-guess-libdir" title="im_guess_libdir ()">im_guess_libdir</a>                     (<em class="parameter"><code>const <span class="type">char</span> *argv0</code></em>,
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="returnvalue">VipsImage</span></a> *         <a class="link" href="libvips-image.html#im-open" title="im_open ()">im_open</a>                             (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-image.html:#define             <a class="link" href="libvips-image.html#im-open-local" title="im_open_local()">im_open_local</a>                       (IM,
doc/reference/html/libvips-image.html:#define             <a class="link" href="libvips-image.html#im-open-local-array" title="im_open_local_array()">im_open_local_array</a>                 (IM,
doc/reference/html/libvips-image.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-image.html#im-close" title="im_close ()">im_close</a>                            (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>);
doc/reference/html/libvips-image.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-image.html#im-invalidate" title="im_invalidate ()">im_invalidate</a>                       (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>);
doc/reference/html/libvips-image.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-image.html#im-initdesc" title="im_initdesc ()">im_initdesc</a>                         (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *image</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> bandfmt</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsCoding" title="enum VipsCoding"><span class="type">VipsCoding</span></a> coding</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsType" title="enum VipsType"><span class="type">VipsType</span></a> type</code></em>,
doc/reference/html/libvips-image.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-image.html#im-cp-desc" title="im_cp_desc ()">im_cp_desc</a>                          (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *in</code></em>);
doc/reference/html/libvips-image.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-image.html#im-cp-descv" title="im_cp_descv ()">im_cp_descv</a>                         (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *in1</code></em>,
doc/reference/html/libvips-image.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-image.html#im-cp-desc-array" title="im_cp_desc_array ()">im_cp_desc_array</a>                    (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *in[]</code></em>);
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="returnvalue">VipsImage</span></a> *         <a class="link" href="libvips-image.html#im-binfile" title="im_binfile ()">im_binfile</a>                          (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="returnvalue">VipsImage</span></a> *         <a class="link" href="libvips-image.html#im-image" title="im_image ()">im_image</a>                            (<em class="parameter"><code><span class="type">void</span> *buffer</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> bandfmt</code></em>);
doc/reference/html/libvips-image.html:<a name="libvips-image.description"></a><h2>Description</h2>
doc/reference/html/libvips-image.html:<a name="libvips-image.details"></a><h2>Details</h2>
doc/reference/html/libvips-image.html:<a name="IM-MAGIC-INTEL:CAPS"></a><h3>IM_MAGIC_INTEL</h3>
doc/reference/html/libvips-image.html:<a name="IM-MAGIC-SPARC:CAPS"></a><h3>IM_MAGIC_SPARC</h3>
doc/reference/html/libvips-image.html:See <a class="link" href="libvips-generate.html#im-demand-hint" title="im_demand_hint ()"><code class="function">im_demand_hint()</code></a>. Operations can hint to the VIPS image IO system about
doc/reference/html/libvips-image.html:restrictiveness.  When demanding output from a pipeline, <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a>
doc/reference/html/libvips-image.html:IM_THINSTRIP --- This operation would like to output strips the width 
doc/reference/html/libvips-image.html:point-to-point operations, such as those in the arithmetic package.
doc/reference/html/libvips-image.html:IM_FATSTRIP --- This operation would like to output strips the width 
doc/reference/html/libvips-image.html:operations which do not violently transform coordinates, such as <a class="link" href="libvips-convolution.html#im-conv" title="im_conv ()"><code class="function">im_conv()</code></a>. 
doc/reference/html/libvips-image.html:IM_SMALLTILE --- This is the most general demand format.
doc/reference/html/libvips-image.html:IM_ANY --- This image is not being demand-read from a disc file (even 
doc/reference/html/libvips-image.html:<a class="link" href="libvips-conversion.html#im-black" title="im_black ()"><code class="function">im_black()</code></a> where the pixels are calculated.
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-generate.html#im-demand-hint" title="im_demand_hint ()"><code class="function">im_demand_hint()</code></a>.
doc/reference/html/libvips-image.html:<td><p><a name="IM-SMALLTILE:CAPS"></a><span class="term"><code class="literal">IM_SMALLTILE</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-FATSTRIP:CAPS"></a><span class="term"><code class="literal">IM_FATSTRIP</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-THINSTRIP:CAPS"></a><span class="term"><code class="literal">IM_THINSTRIP</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-ANY:CAPS"></a><span class="term"><code class="literal">IM_ANY</code></span></p></td>
doc/reference/html/libvips-image.html:These values are set by operations as hints to user-interfaces built on top 
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-MULTIBAND:CAPS"></a><span class="term"><code class="literal">IM_TYPE_MULTIBAND</code></span></p></td>
doc/reference/html/libvips-image.html:<td>generic many-band image
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-B-W:CAPS"></a><span class="term"><code class="literal">IM_TYPE_B_W</code></span></p></td>
doc/reference/html/libvips-image.html:<td>some kind of single-band image
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-HISTOGRAM:CAPS"></a><span class="term"><code class="literal">IM_TYPE_HISTOGRAM</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-FOURIER:CAPS"></a><span class="term"><code class="literal">IM_TYPE_FOURIER</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-XYZ:CAPS"></a><span class="term"><code class="literal">IM_TYPE_XYZ</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-LAB:CAPS"></a><span class="term"><code class="literal">IM_TYPE_LAB</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-CMYK:CAPS"></a><span class="term"><code class="literal">IM_TYPE_CMYK</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-LABQ:CAPS"></a><span class="term"><code class="literal">IM_TYPE_LABQ</code></span></p></td>
doc/reference/html/libvips-image.html:<td>implies <a class="link" href="libvips-image.html#IM-CODING-LABQ:CAPS"><code class="literal">IM_CODING_LABQ</code></a>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-RGB:CAPS"></a><span class="term"><code class="literal">IM_TYPE_RGB</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-UCS:CAPS"></a><span class="term"><code class="literal">IM_TYPE_UCS</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-LCH:CAPS"></a><span class="term"><code class="literal">IM_TYPE_LCH</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-LABS:CAPS"></a><span class="term"><code class="literal">IM_TYPE_LABS</code></span></p></td>
doc/reference/html/libvips-image.html:<td>pixels are CIE LAB coded as three signed 16-bit values
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-sRGB"></a><span class="term"><code class="literal">IM_TYPE_sRGB</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-YXY:CAPS"></a><span class="term"><code class="literal">IM_TYPE_YXY</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-RGB16:CAPS"></a><span class="term"><code class="literal">IM_TYPE_RGB16</code></span></p></td>
doc/reference/html/libvips-image.html:<td>generic 16-bit RGB
doc/reference/html/libvips-image.html:<td><p><a name="IM-TYPE-GREY16:CAPS"></a><span class="term"><code class="literal">IM_TYPE_GREY16</code></span></p></td>
doc/reference/html/libvips-image.html:<td>generic 16-bit mono
doc/reference/html/libvips-image.html:	IM_BANDFMT_NOTSET = -1,
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#IM-BANDFMT-USHORT:CAPS"><code class="literal">IM_BANDFMT_USHORT</code></a> is <span class="type">unsigned short</span>.
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-NOTSET:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_NOTSET</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-UCHAR:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_UCHAR</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-CHAR:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_CHAR</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-USHORT:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_USHORT</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-SHORT:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_SHORT</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-UINT:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_UINT</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-INT:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_INT</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-FLOAT:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_FLOAT</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-COMPLEX:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_COMPLEX</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-DOUBLE:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_DOUBLE</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-BANDFMT-DPCOMPLEX:CAPS"></a><span class="term"><code class="literal">IM_BANDFMT_DPCOMPLEX</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-CODING-NONE:CAPS"></a><span class="term"><code class="literal">IM_CODING_NONE</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-CODING-LABQ:CAPS"></a><span class="term"><code class="literal">IM_CODING_LABQ</code></span></p></td>
doc/reference/html/libvips-image.html:<td><p><a name="IM-CODING-RAD:CAPS"></a><span class="term"><code class="literal">IM_CODING_RAD</code></span></p></td>
doc/reference/html/libvips-image.html:progress. See <a class="link" href="libvips-callback.html#im-add-eval-callback" title="im_add_eval_callback ()"><code class="function">im_add_eval_callback()</code></a>.
doc/reference/html/libvips-image.html:	int kill;		/* set to non-zero to block partial eval */
doc/reference/html/libvips-image.html:<td><p><span class="term"><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> <em class="structfield"><code><a name="VipsImage.BandFmt"></a>BandFmt</code></em>;</span></p></td>
doc/reference/html/libvips-image.html:<td><p><span class="term"><a class="link" href="libvips-image.html#VipsCoding" title="enum VipsCoding"><span class="type">VipsCoding</span></a> <em class="structfield"><code><a name="VipsImage.Coding"></a>Coding</code></em>;</span></p></td>
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#VipsCoding" title="enum VipsCoding"><span class="type">VipsCoding</span></a> describing the pixel coding type
doc/reference/html/libvips-image.html:<td><p><span class="term"><a class="link" href="libvips-image.html#VipsType" title="enum VipsType"><span class="type">VipsType</span></a> <em class="structfield"><code><a name="VipsImage.Type"></a>Type</code></em>;</span></p></td>
doc/reference/html/libvips-image.html:<td>a <a class="link" href="libvips-image.html#VipsType" title="enum VipsType"><span class="type">VipsType</span></a> hinting how the image pixels should be interpreted
doc/reference/html/libvips-image.html:<td><p><span class="term"><a class="link" href="libvips-image.html#VipsProgress" title="VipsProgress"><span class="type">VipsProgress</span></a> *<em class="structfield"><code><a name="VipsImage.time"></a>time</code></em>;</span></p></td>
doc/reference/html/libvips-image.html:<td>set this to non-zero to block evaluation of this image
doc/reference/html/libvips-image.html:<a name="IM-IMAGE-SIZEOF-ELEMENT:CAPS"></a><h3>IM_IMAGE_SIZEOF_ELEMENT()</h3>
doc/reference/html/libvips-image.html:<td>a <a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a>
doc/reference/html/libvips-image.html:<a name="IM-IMAGE-SIZEOF-PEL:CAPS"></a><h3>IM_IMAGE_SIZEOF_PEL()</h3>
doc/reference/html/libvips-image.html:<td>a <a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a>
doc/reference/html/libvips-image.html:<a name="IM-IMAGE-SIZEOF-LINE:CAPS"></a><h3>IM_IMAGE_SIZEOF_LINE()</h3>
doc/reference/html/libvips-image.html:<td>a <a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a>
doc/reference/html/libvips-image.html:<a name="IM-IMAGE-N-ELEMENTS:CAPS"></a><h3>IM_IMAGE_N_ELEMENTS()</h3>
doc/reference/html/libvips-image.html:<td>a <a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a>
doc/reference/html/libvips-image.html:<a name="IM-IMAGE-ADDR:CAPS"></a><h3>IM_IMAGE_ADDR()</h3>
doc/reference/html/libvips-image.html:<td>a <a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a>
doc/reference/html/libvips-image.html:<a name="im-get-argv0"></a><h3>im_get_argv0 ()</h3>
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-init-world" title="im_init_world ()"><code class="function">im_init_world()</code></a>.
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-init-world" title="im_init_world ()"><code class="function">im_init_world()</code></a>. Do not free this value
doc/reference/html/libvips-image.html:<a name="im-init-world"></a><h3>im_init_world ()</h3>
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-init-world" title="im_init_world ()"><code class="function">im_init_world()</code></a> starts up the world of VIPS. You should call this on
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-init-world" title="im_init_world ()"><code class="function">im_init_world()</code></a>, VIPS will call it for you when you use your first VIPS 
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-init-world" title="im_init_world ()"><code class="function">im_init_world()</code></a> does approximately the following:
doc/reference/html/libvips-image.html:    internationalisation --- see <a class="link" href="libvips-image.html#im-guess-prefix" title="im_guess_prefix ()"><code class="function">im_guess_prefix()</code></a>
doc/reference/html/libvips-image.html:<li class="listitem"><p>loads any plugins from $libdir/vips-x.y, where x and y are the
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-get-option-group" title="im_get_option_group ()"><code class="function">im_get_option_group()</code></a>, <a class="link" href="libvips-image.html#im-version" title="im_version ()"><code class="function">im_version()</code></a>, <a class="link" href="libvips-image.html#im-guess-prefix" title="im_guess_prefix ()"><code class="function">im_guess_prefix()</code></a>,
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-guess-libdir" title="im_guess_libdir ()"><code class="function">im_guess_libdir()</code></a>.
doc/reference/html/libvips-image.html:<td> 0 on success, -1 otherwise
doc/reference/html/libvips-image.html:<a name="im-get-option-group"></a><h3>im_get_option_group ()</h3>
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-get-option-group" title="im_get_option_group ()"><code class="function">im_get_option_group()</code></a>  returns  a GOptionGroup containing various VIPS
doc/reference/html/libvips-image.html:command-line options. It  can  be  used  with  GOption  to  help
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-version" title="im_version ()"><code class="function">im_version()</code></a>, <a class="link" href="libvips-image.html#im-guess-prefix" title="im_guess_prefix ()"><code class="function">im_guess_prefix()</code></a>,
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-guess-libdir" title="im_guess_libdir ()"><code class="function">im_guess_libdir()</code></a>, <a class="link" href="libvips-image.html#im-init-world" title="im_init_world ()"><code class="function">im_init_world()</code></a>.
doc/reference/html/libvips-image.html:<a name="im-version-string"></a><h3>im_version_string ()</h3>
doc/reference/html/libvips-image.html:<a name="im-version"></a><h3>im_version ()</h3>
doc/reference/html/libvips-image.html:<a name="im-guess-prefix"></a><h3>im_guess_prefix ()</h3>
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-guess-prefix" title="im_guess_prefix ()"><code class="function">im_guess_prefix()</code></a> tries to guess the install directory. You should pass 
doc/reference/html/libvips-image.html:On success, <a class="link" href="libvips-image.html#im-guess-prefix" title="im_guess_prefix ()"><code class="function">im_guess_prefix()</code></a> returns the prefix it discovered, and as a 
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-guess-libdir" title="im_guess_libdir ()"><code class="function">im_guess_libdir()</code></a>.
doc/reference/html/libvips-image.html:<a name="im-guess-libdir"></a><h3>im_guess_libdir ()</h3>
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-guess-libdir" title="im_guess_libdir ()"><code class="function">im_guess_libdir()</code></a> tries to guess the install directory (usually the 
doc/reference/html/libvips-image.html:On success, <a class="link" href="libvips-image.html#im-guess-libdir" title="im_guess_libdir ()"><code class="function">im_guess_libdir()</code></a> returns the libdir it discovered, and as a 
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-guess-prefix" title="im_guess_prefix ()"><code class="function">im_guess_prefix()</code></a>.
doc/reference/html/libvips-image.html:<a name="im-open"></a><h3>im_open ()</h3>
doc/reference/html/libvips-image.html:<pre class="programlisting"><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="returnvalue">VipsImage</span></a> *         im_open                             (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a> examines the mode string, and creates an appropriate <span class="type">IMAGE</span>.
doc/reference/html/libvips-image.html:      VIPS format for your machine, <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a> automatically converts the 
doc/reference/html/libvips-image.html:      <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a> can read files in most formats.
doc/reference/html/libvips-image.html:      suffix to determine the type to write -- for example:
doc/reference/html/libvips-image.html:      paintbox-type applications.
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-close" title="im_close ()"><code class="function">im_close()</code></a>, <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>
doc/reference/html/libvips-image.html:<a name="im-open-local"></a><h3>im_open_local()</h3>
doc/reference/html/libvips-image.html:Just like <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>, but the <span class="type">IMAGE</span> will be closed for you automatically
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>, <a class="link" href="libvips-image.html#im-close" title="im_close ()"><code class="function">im_close()</code></a>, <a class="link" href="libvips-util.html#im-local" title="im_local ()"><code class="function">im_local()</code></a>.
doc/reference/html/libvips-image.html:<a name="im-open-local-array"></a><h3>im_open_local_array()</h3>
doc/reference/html/libvips-image.html:Just like <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>, but opens an array of images. Handy for creating a set
doc/reference/html/libvips-image.html:if( im_open_local_array( out, t, 5, "some-temps", "p" ) ||
doc/reference/html/libvips-image.html:  return( -1 );
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>, <a class="link" href="libvips-image.html#im-open-local" title="im_open_local()"><code class="function">im_open_local()</code></a>, <a class="link" href="libvips-util.html#im-local-array" title="im_local_array ()"><code class="function">im_local_array()</code></a>.
doc/reference/html/libvips-image.html:<td> 0 on sucess, or -1 on error
doc/reference/html/libvips-image.html:<a name="im-close"></a><h3>im_close ()</h3>
doc/reference/html/libvips-image.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_close                            (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>);</pre>
doc/reference/html/libvips-image.html:If there are open <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> s on <em class="parameter"><code>im</code></em>, close is delayed until the last region
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>.
doc/reference/html/libvips-image.html:<a name="im-invalidate"></a><h3>im_invalidate ()</h3>
doc/reference/html/libvips-image.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_invalidate                       (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *im</code></em>);</pre>
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-callback.html#im-add-invalidate-callback" title="im_add_invalidate_callback ()"><code class="function">im_add_invalidate_callback()</code></a>.
doc/reference/html/libvips-image.html:<a name="im-initdesc"></a><h3>im_initdesc ()</h3>
doc/reference/html/libvips-image.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_initdesc                         (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *image</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> bandfmt</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsCoding" title="enum VipsCoding"><span class="type">VipsCoding</span></a> coding</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsType" title="enum VipsType"><span class="type">VipsType</span></a> type</code></em>,
doc/reference/html/libvips-image.html:<a class="link" href="libvips-image.html#im-cp-desc" title="im_cp_desc ()"><code class="function">im_cp_desc()</code></a> and then make
doc/reference/html/libvips-image.html:for example <a class="link" href="libvips-conversion.html#im-black" title="im_black ()"><code class="function">im_black()</code></a> or <a class="link" href="VipsFormat.html#im-jpeg2vips" title="im_jpeg2vips ()"><code class="function">im_jpeg2vips()</code></a>, you do need to set all the
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-cp-desc" title="im_cp_desc ()"><code class="function">im_cp_desc()</code></a>.
doc/reference/html/libvips-image.html:<a name="im-cp-desc"></a><h3>im_cp_desc ()</h3>
doc/reference/html/libvips-image.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_cp_desc                          (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *in</code></em>);</pre>
doc/reference/html/libvips-image.html:function over <a class="link" href="libvips-image.html#im-cp-desc-array" title="im_cp_desc_array ()"><code class="function">im_cp_desc_array()</code></a>. 
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-cp-desc-array" title="im_cp_desc_array ()"><code class="function">im_cp_desc_array()</code></a>, <a class="link" href="libvips-image.html#im-cp-descv" title="im_cp_descv ()"><code class="function">im_cp_descv()</code></a>.
doc/reference/html/libvips-image.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-image.html:<a name="im-cp-descv"></a><h3>im_cp_descv ()</h3>
doc/reference/html/libvips-image.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_cp_descv                         (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *in1</code></em>,
doc/reference/html/libvips-image.html:function over <a class="link" href="libvips-image.html#im-cp-desc-array" title="im_cp_desc_array ()"><code class="function">im_cp_desc_array()</code></a>. 
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-cp-desc-array" title="im_cp_desc_array ()"><code class="function">im_cp_desc_array()</code></a>, <a class="link" href="libvips-image.html#im-cp-desc" title="im_cp_desc ()"><code class="function">im_cp_desc()</code></a>.
doc/reference/html/libvips-image.html:<code class="literal">NULL</code>-terminated list of images to copy from
doc/reference/html/libvips-image.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-image.html:<a name="im-cp-desc-array"></a><h3>im_cp_desc_array ()</h3>
doc/reference/html/libvips-image.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_cp_desc_array                    (<em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *out</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="type">VipsImage</span></a> *in[]</code></em>);</pre>
doc/reference/html/libvips-image.html:(for example, <a class="link" href="libvips-conversion.html#im-black" title="im_black ()"><code class="function">im_black()</code></a> or <a class="link" href="VipsFormat.html#im-vips2jpeg" title="im_vips2jpeg ()"><code class="function">im_vips2jpeg()</code></a>), use <a class="link" href="libvips-image.html#im-initdesc" title="im_initdesc ()"><code class="function">im_initdesc()</code></a> instead.
doc/reference/html/libvips-image.html:Metadata from all the image is merged on to <em class="parameter"><code>out</code></em>, with lower-numbered items 
doc/reference/html/libvips-image.html:called "icc-profile", it's the profile attached to <em class="parameter"><code>in</code></em>[0] that will end up
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-cp-descv" title="im_cp_descv ()"><code class="function">im_cp_descv()</code></a>, <a class="link" href="libvips-image.html#im-cp-desc" title="im_cp_desc ()"><code class="function">im_cp_desc()</code></a>.
doc/reference/html/libvips-image.html:<code class="literal">NULL</code>-terminated array of images to copy from
doc/reference/html/libvips-image.html:<td> 0 on success, -1 on error.
doc/reference/html/libvips-image.html:<a name="im-binfile"></a><h3>im_binfile ()</h3>
doc/reference/html/libvips-image.html:<pre class="programlisting"><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="returnvalue">VipsImage</span></a> *         im_binfile                          (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
doc/reference/html/libvips-image.html:It returns an 8-bit image with <em class="parameter"><code>bands</code></em> bands. If the image is not 8-bit, use 
doc/reference/html/libvips-image.html:<a class="link" href="libvips-conversion.html#im-copy-set" title="im_copy_set ()"><code class="function">im_copy_set()</code></a> to transform the descriptor after loading it.
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-conversion.html#im-copy-set" title="im_copy_set ()"><code class="function">im_copy_set()</code></a>, <a class="link" href="VipsFormat.html#im-raw2vips" title="im_raw2vips ()"><code class="function">im_raw2vips()</code></a>, <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>.
doc/reference/html/libvips-image.html:<a name="im-image"></a><h3>im_image ()</h3>
doc/reference/html/libvips-image.html:<pre class="programlisting"><a class="link" href="libvips-image.html#VipsImage" title="VipsImage"><span class="returnvalue">VipsImage</span></a> *         im_image                            (<em class="parameter"><code><span class="type">void</span> *buffer</code></em>,
doc/reference/html/libvips-image.html:                                                         <em class="parameter"><code><a class="link" href="libvips-image.html#VipsBandFmt" title="enum VipsBandFmt"><span class="type">VipsBandFmt</span></a> bandfmt</code></em>);</pre>
doc/reference/html/libvips-image.html:freed when the image is closed. See for example <a class="link" href="libvips-callback.html#im-add-close-callback" title="im_add_close_callback ()"><code class="function">im_add_close_callback()</code></a>.
doc/reference/html/libvips-image.html:See also: <a class="link" href="libvips-image.html#im-binfile" title="im_binfile ()"><code class="function">im_binfile()</code></a>, <a class="link" href="VipsFormat.html#im-raw2vips" title="im_raw2vips ()"><code class="function">im_raw2vips()</code></a>, <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>.
doc/reference/html/libvips-image.html:<a name="libvips-image.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-image.html:<a class="link" href="libvips-region.html" title="region">region</a>
doc/reference/html/libvips-image.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-other.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-other.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-other.html:<link rel="prev" href="libvips-mosaicing.html" title="mosaicing">
doc/reference/html/libvips-other.html:<link rel="next" href="libvips-video.html" title="video">
doc/reference/html/libvips-other.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-other.html:<td><a accesskey="p" href="libvips-mosaicing.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-other.html:<td><a accesskey="n" href="libvips-video.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-other.html:<a href="#libvips-other.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-other.html:                  <a href="#libvips-other.description" class="shortcut">Description</a>
doc/reference/html/libvips-other.html:<a name="libvips-other"></a><div class="titlepage"></div>
doc/reference/html/libvips-other.html:<h2><span class="refentrytitle"><a name="libvips-other.top_of_page"></a>other</span></h2>
doc/reference/html/libvips-other.html:<a name="libvips-other.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-other.html:<a name="libvips-other.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-feye" title="im_feye ()">im_feye</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *image</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-eye" title="im_eye ()">im_eye</a>                              (<em class="parameter"><code><span class="type">IMAGE</span> *image</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-zone" title="im_zone ()">im_zone</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-fzone" title="im_fzone ()">im_fzone</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-grey" title="im_grey ()">im_grey</a>                             (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-fgrey" title="im_fgrey ()">im_fgrey</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-make-xy" title="im_make_xy ()">im_make_xy</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *out</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-benchmarkn" title="im_benchmarkn ()">im_benchmarkn</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-benchmark2" title="im_benchmark2 ()">im_benchmark2</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-cooc-matrix" title="im_cooc_matrix ()">im_cooc_matrix</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-cooc-asm" title="im_cooc_asm ()">im_cooc_asm</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *m</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-cooc-contrast" title="im_cooc_contrast ()">im_cooc_contrast</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *m</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-cooc-correlation" title="im_cooc_correlation ()">im_cooc_correlation</a>                 (<em class="parameter"><code><span class="type">IMAGE</span> *m</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-cooc-entropy" title="im_cooc_entropy ()">im_cooc_entropy</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *m</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-glds-matrix" title="im_glds_matrix ()">im_glds_matrix</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-glds-asm" title="im_glds_asm ()">im_glds_asm</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *m</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-glds-contrast" title="im_glds_contrast ()">im_glds_contrast</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *m</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-glds-entropy" title="im_glds_entropy ()">im_glds_entropy</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *m</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-glds-mean" title="im_glds_mean ()">im_glds_mean</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *m</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-simcontr" title="im_simcontr ()">im_simcontr</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *image</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-sines" title="im_sines ()">im_sines</a>                            (<em class="parameter"><code><span class="type">IMAGE</span> *image</code></em>,
doc/reference/html/libvips-other.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-other.html#im-spatres" title="im_spatres ()">im_spatres</a>                          (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/libvips-other.html:<a name="libvips-other.description"></a><h2>Description</h2>
doc/reference/html/libvips-other.html:<a name="libvips-other.details"></a><h2>Details</h2>
doc/reference/html/libvips-other.html:<a name="im-feye"></a><h3>im_feye ()</h3>
doc/reference/html/libvips-other.html:<a name="im-eye"></a><h3>im_eye ()</h3>
doc/reference/html/libvips-other.html:<a name="im-zone"></a><h3>im_zone ()</h3>
doc/reference/html/libvips-other.html:<a name="im-fzone"></a><h3>im_fzone ()</h3>
doc/reference/html/libvips-other.html:<a name="im-grey"></a><h3>im_grey ()</h3>
doc/reference/html/libvips-other.html:<a name="im-fgrey"></a><h3>im_fgrey ()</h3>
doc/reference/html/libvips-other.html:<a name="im-make-xy"></a><h3>im_make_xy ()</h3>
doc/reference/html/libvips-other.html:<a name="im-benchmarkn"></a><h3>im_benchmarkn ()</h3>
doc/reference/html/libvips-other.html:<a name="im-benchmark2"></a><h3>im_benchmark2 ()</h3>
doc/reference/html/libvips-other.html:<a name="im-cooc-matrix"></a><h3>im_cooc_matrix ()</h3>
doc/reference/html/libvips-other.html:<a name="im-cooc-asm"></a><h3>im_cooc_asm ()</h3>
doc/reference/html/libvips-other.html:<a name="im-cooc-contrast"></a><h3>im_cooc_contrast ()</h3>
doc/reference/html/libvips-other.html:<a name="im-cooc-correlation"></a><h3>im_cooc_correlation ()</h3>
doc/reference/html/libvips-other.html:<a name="im-cooc-entropy"></a><h3>im_cooc_entropy ()</h3>
doc/reference/html/libvips-other.html:<a name="im-glds-matrix"></a><h3>im_glds_matrix ()</h3>
doc/reference/html/libvips-other.html:<a name="im-glds-asm"></a><h3>im_glds_asm ()</h3>
doc/reference/html/libvips-other.html:<a name="im-glds-contrast"></a><h3>im_glds_contrast ()</h3>
doc/reference/html/libvips-other.html:<a name="im-glds-entropy"></a><h3>im_glds_entropy ()</h3>
doc/reference/html/libvips-other.html:<a name="im-glds-mean"></a><h3>im_glds_mean ()</h3>
doc/reference/html/libvips-other.html:<a name="im-simcontr"></a><h3>im_simcontr ()</h3>
doc/reference/html/libvips-other.html:<a name="im-sines"></a><h3>im_sines ()</h3>
doc/reference/html/libvips-other.html:<a name="im-spatres"></a><h3>im_spatres ()</h3>
doc/reference/html/libvips-other.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-region.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-region.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-region.html:<link rel="prev" href="libvips-meta.html" title="meta">
doc/reference/html/libvips-region.html:<link rel="next" href="libvips-generate.html" title="generate">
doc/reference/html/libvips-region.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-region.html:<td><a accesskey="p" href="libvips-meta.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-region.html:<td><a accesskey="n" href="libvips-generate.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-region.html:<a href="#libvips-region.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-region.html:                  <a href="#libvips-region.description" class="shortcut">Description</a>
doc/reference/html/libvips-region.html:<a name="libvips-region"></a><div class="titlepage"></div>
doc/reference/html/libvips-region.html:<h2><span class="refentrytitle"><a name="libvips-region.top_of_page"></a>region</span></h2>
doc/reference/html/libvips-region.html:<a name="libvips-region.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-region.html:<a name="libvips-region.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-region.html:                    <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION">REGION</a>;
doc/reference/html/libvips-region.html:<a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="returnvalue">REGION</span></a> *            <a class="link" href="libvips-region.html#im-region-create" title="im_region_create ()">im_region_create</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);
doc/reference/html/libvips-region.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-region.html#im-region-free" title="im_region_free ()">im_region_free</a>                      (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>);
doc/reference/html/libvips-region.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-region.html#im-region-buffer" title="im_region_buffer ()">im_region_buffer</a>                    (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);
doc/reference/html/libvips-region.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-region.html#im-region-image" title="im_region_image ()">im_region_image</a>                     (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);
doc/reference/html/libvips-region.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-region.html#im-region-region" title="im_region_region ()">im_region_region</a>                    (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *to</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-region.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-region.html#im-region-equalsregion" title="im_region_equalsregion ()">im_region_equalsregion</a>              (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg1</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg2</code></em>);
doc/reference/html/libvips-region.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-region.html#im-region-position" title="im_region_position ()">im_region_position</a>                  (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg1</code></em>,
doc/reference/html/libvips-region.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-region.html#im-region-paint" title="im_region_paint ()">im_region_paint</a>                     (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-region.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-region.html#im-region-black" title="im_region_black ()">im_region_black</a>                     (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>);
doc/reference/html/libvips-region.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-region.html#im-region-copy" title="im_region_copy ()">im_region_copy</a>                      (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *dest</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-region.html:#define             <a class="link" href="libvips-region.html#IM-REGION-LSKIP:CAPS" title="IM_REGION_LSKIP()">IM_REGION_LSKIP</a>                     (R)
doc/reference/html/libvips-region.html:#define             <a class="link" href="libvips-region.html#IM-REGION-N-ELEMENTS:CAPS" title="IM_REGION_N_ELEMENTS()">IM_REGION_N_ELEMENTS</a>                (R)
doc/reference/html/libvips-region.html:#define             <a class="link" href="libvips-region.html#IM-REGION-SIZEOF-LINE:CAPS" title="IM_REGION_SIZEOF_LINE()">IM_REGION_SIZEOF_LINE</a>               (R)
doc/reference/html/libvips-region.html:#define             <a class="link" href="libvips-region.html#IM-REGION-ADDR:CAPS" title="IM_REGION_ADDR()">IM_REGION_ADDR</a>                      (B,
doc/reference/html/libvips-region.html:#define             <a class="link" href="libvips-region.html#IM-REGION-ADDR-TOPLEFT:CAPS" title="IM_REGION_ADDR_TOPLEFT()">IM_REGION_ADDR_TOPLEFT</a>              (B)
doc/reference/html/libvips-region.html:<a name="libvips-region.description"></a><h2>Description</h2>
doc/reference/html/libvips-region.html:A <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> is a small part of an image and some pixels. You use regions to
doc/reference/html/libvips-region.html:A region can be a memory buffer, part of a memory-mapped file, part of some
doc/reference/html/libvips-region.html:they can reference private per-thread caches. VIPS sanity-checks region
doc/reference/html/libvips-region.html:<a name="libvips-region.details"></a><h2>Details</h2>
doc/reference/html/libvips-region.html:See also: <a class="link" href="libvips-region.html#IM-REGION-ADDR:CAPS" title="IM_REGION_ADDR()"><code class="function">IM_REGION_ADDR()</code></a>, <a class="link" href="libvips-region.html#im-region-create" title="im_region_create ()"><code class="function">im_region_create()</code></a>, <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>.
doc/reference/html/libvips-region.html:<td><p><span class="term"><span class="type">IMAGE</span> *<em class="structfield"><code><a name="REGION--CAPS.im"></a>im</code></em>;</span></p></td>
doc/reference/html/libvips-region.html:<td><p><span class="term"><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> <em class="structfield"><code><a name="REGION--CAPS.valid"></a>valid</code></em>;</span></p></td>
doc/reference/html/libvips-region.html:<td>the <a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> of pixels that this region represents
doc/reference/html/libvips-region.html:<a name="im-region-create"></a><h3>im_region_create ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="returnvalue">REGION</span></a> *            im_region_create                    (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>);</pre>
doc/reference/html/libvips-region.html:Create a region. <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> s start out empty, you need to call <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a> to
doc/reference/html/libvips-region.html:See also: <a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>, <a class="link" href="libvips-region.html#im-region-free" title="im_region_free ()"><code class="function">im_region_free()</code></a>.
doc/reference/html/libvips-region.html:<a name="im-region-free"></a><h3>im_region_free ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_region_free                      (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>);</pre>
doc/reference/html/libvips-region.html:If <em class="parameter"><code>im</code></em> has previously been closed, then freeing the last <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> on <em class="parameter"><code>in</code></em> can
doc/reference/html/libvips-region.html:<a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> to free
doc/reference/html/libvips-region.html:<a name="im-region-buffer"></a><h3>im_region_buffer ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_region_buffer                    (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);</pre>
doc/reference/html/libvips-region.html:<a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> of pixels you need to be able to address
doc/reference/html/libvips-region.html:<td> 0 on success, or -1 for error.
doc/reference/html/libvips-region.html:<a name="im-region-image"></a><h3>im_region_image ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_region_image                     (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>);</pre>
doc/reference/html/libvips-region.html:<a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> of pixels you need to be able to address
doc/reference/html/libvips-region.html:<td> 0 on success, or -1 for error.
doc/reference/html/libvips-region.html:<a name="im-region-region"></a><h3>im_region_region ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_region_region                    (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *to</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-region.html:Make <a class="link" href="libvips-region.html#IM-REGION-ADDR:CAPS" title="IM_REGION_ADDR()"><code class="function">IM_REGION_ADDR()</code></a> on <em class="parameter"><code>reg</code></em> go to <em class="parameter"><code>dest</code></em> instead. 
doc/reference/html/libvips-region.html:Performs all clipping necessary to ensure that <em class="parameter"><code>reg-&gt;valid</code></em> is indeed
doc/reference/html/libvips-region.html:<a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> of pixels you need to be able to address
doc/reference/html/libvips-region.html:<td> 0 on success, or -1 for error.
doc/reference/html/libvips-region.html:<a name="im-region-equalsregion"></a><h3>im_region_equalsregion ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_region_equalsregion              (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg1</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg2</code></em>);</pre>
doc/reference/html/libvips-region.html:<td> non-zero on equality.
doc/reference/html/libvips-region.html:<a name="im-region-position"></a><h3>im_region_position ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><span class="returnvalue">int</span>                 im_region_position                  (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg1</code></em>,
doc/reference/html/libvips-region.html:Set the position of a region. This only affects reg-&gt;valid, ie. the way
doc/reference/html/libvips-region.html:pixels are addressed, not reg-&gt;data, the pixels which are addressed. Clip
doc/reference/html/libvips-region.html:<td> 0 on success, or -1 for error.
doc/reference/html/libvips-region.html:<a name="im-region-paint"></a><h3>im_region_paint ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_region_paint                     (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-region.html:<em class="parameter"><code>reg-&gt;valid</code></em>.
doc/reference/html/libvips-region.html:See also: <a class="link" href="libvips-region.html#im-region-black" title="im_region_black ()"><code class="function">im_region_black()</code></a>.
doc/reference/html/libvips-region.html:<a name="im-region-black"></a><h3>im_region_black ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_region_black                     (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>);</pre>
doc/reference/html/libvips-region.html:See also: <a class="link" href="libvips-region.html#im-region-paint" title="im_region_paint ()"><code class="function">im_region_paint()</code></a>.
doc/reference/html/libvips-region.html:<a name="im-region-copy"></a><h3>im_region_copy ()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting"><span class="returnvalue">void</span>                im_region_copy                      (<em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *reg</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a> *dest</code></em>,
doc/reference/html/libvips-region.html:                                                         <em class="parameter"><code><a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> *r</code></em>,
doc/reference/html/libvips-region.html:See also: <a class="link" href="libvips-region.html#im-region-paint" title="im_region_paint ()"><code class="function">im_region_paint()</code></a>.
doc/reference/html/libvips-region.html:<a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> of pixels you need to copy
doc/reference/html/libvips-region.html:<a name="IM-REGION-LSKIP:CAPS"></a><h3>IM_REGION_LSKIP()</h3>
doc/reference/html/libvips-region.html:<td>a <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a>
doc/reference/html/libvips-region.html:<a name="IM-REGION-N-ELEMENTS:CAPS"></a><h3>IM_REGION_N_ELEMENTS()</h3>
doc/reference/html/libvips-region.html:<td>a <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a>
doc/reference/html/libvips-region.html:<a name="IM-REGION-SIZEOF-LINE:CAPS"></a><h3>IM_REGION_SIZEOF_LINE()</h3>
doc/reference/html/libvips-region.html:<td>a <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a>
doc/reference/html/libvips-region.html:<a name="IM-REGION-ADDR:CAPS"></a><h3>IM_REGION_ADDR()</h3>
doc/reference/html/libvips-region.html:need to be within the <a class="link" href="libvips-rect.html#Rect" title="Rect"><span class="type">Rect</span></a> (<em class="parameter"><code>R-&gt;valid</code></em>).
doc/reference/html/libvips-region.html:<td>a <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a>
doc/reference/html/libvips-region.html:<a name="IM-REGION-ADDR-TOPLEFT:CAPS"></a><h3>IM_REGION_ADDR_TOPLEFT()</h3>
doc/reference/html/libvips-region.html:<pre class="programlisting">#define IM_REGION_ADDR_TOPLEFT(B)   ( (B)-&gt;data )
doc/reference/html/libvips-region.html:This macro returns a pointer to the top-left pixel in the <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a>, that is,
doc/reference/html/libvips-region.html:the pixel at (<em class="parameter"><code>R-&gt;valid.left</code></em>, <em class="parameter"><code>R-&gt;valid.top</code></em>).
doc/reference/html/libvips-region.html:<td>a <a class="link" href="libvips-region.html#REGION:CAPS" title="REGION"><span class="type">REGION</span></a>
doc/reference/html/libvips-region.html:<td> The address of the top-left pixel in the region.
doc/reference/html/libvips-region.html:<a name="libvips-region.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-region.html:<a class="link" href="libvips-image.html" title="image">image</a>, 
doc/reference/html/libvips-region.html:<a class="link" href="libvips-generate.html" title="generate">generate</a>
doc/reference/html/libvips-region.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips.devhelp2:<?xml version="1.0" encoding="utf-8" standalone="no"?>
doc/reference/html/libvips.devhelp2:<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
doc/reference/html/libvips.devhelp2:      <sub name="image" link="libvips-image.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="header" link="libvips-header.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="check" link="libvips-check.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="callback" link="libvips-callback.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="meta" link="libvips-meta.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="region" link="libvips-region.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="generate" link="libvips-generate.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="error" link="libvips-error.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="memory" link="libvips-memory.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="buf" link="libvips-buf.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="arithmetic" link="libvips-arithmetic.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="boolean" link="libvips-boolean.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="relational" link="libvips-relational.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="colour" link="libvips-colour.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="conversion" link="libvips-conversion.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="convolution" link="libvips-convolution.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="freq_filt" link="libvips-freq-filt.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="histograms_lut" link="libvips-histograms-lut.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="morphology" link="libvips-morphology.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="resample" link="libvips-resample.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="mask" link="libvips-mask.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="inplace" link="libvips-inplace.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="mosaicing" link="libvips-mosaicing.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="other" link="libvips-other.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="video" link="libvips-video.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="cimg_funcs" link="libvips-cimg-funcs.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="VipsArgument" link="libvips-VipsArgument.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="transform" link="libvips-transform.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="util" link="libvips-util.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="version" link="libvips-version.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="type" link="libvips-type.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="rect" link="libvips-rect.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="semaphore" link="libvips-semaphore.html"/>
doc/reference/html/libvips.devhelp2:      <sub name="dispatch" link="libvips-dispatch.html"/>
doc/reference/html/libvips.devhelp2:    <sub name="Object Hierarchy" link="object-tree.html"/>
doc/reference/html/libvips.devhelp2:    <sub name="API Index" link="api-index-full.html"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_MAGIC_INTEL" link="libvips-image.html#IM-MAGIC-INTEL:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_MAGIC_SPARC" link="libvips-image.html#IM-MAGIC-SPARC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum VipsDemandStyle" link="libvips-image.html#VipsDemandStyle"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum VipsType" link="libvips-image.html#VipsType"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum VipsBandFmt" link="libvips-image.html#VipsBandFmt"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum VipsCoding" link="libvips-image.html#VipsCoding"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsProgress" link="libvips-image.html#VipsProgress"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsImage" link="libvips-image.html#VipsImage"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_IMAGE_SIZEOF_ELEMENT()" link="libvips-image.html#IM-IMAGE-SIZEOF-ELEMENT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_IMAGE_SIZEOF_PEL()" link="libvips-image.html#IM-IMAGE-SIZEOF-PEL:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_IMAGE_SIZEOF_LINE()" link="libvips-image.html#IM-IMAGE-SIZEOF-LINE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_IMAGE_N_ELEMENTS()" link="libvips-image.html#IM-IMAGE-N-ELEMENTS:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_IMAGE_ADDR()" link="libvips-image.html#IM-IMAGE-ADDR:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_get_argv0 ()" link="libvips-image.html#im-get-argv0"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_init_world ()" link="libvips-image.html#im-init-world"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_get_option_group ()" link="libvips-image.html#im-get-option-group"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_version_string ()" link="libvips-image.html#im-version-string"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_version ()" link="libvips-image.html#im-version"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_guess_prefix ()" link="libvips-image.html#im-guess-prefix"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_guess_libdir ()" link="libvips-image.html#im-guess-libdir"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_open ()" link="libvips-image.html#im-open"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="im_open_local()" link="libvips-image.html#im-open-local"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="im_open_local_array()" link="libvips-image.html#im-open-local-array"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_close ()" link="libvips-image.html#im-close"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_invalidate ()" link="libvips-image.html#im-invalidate"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_initdesc ()" link="libvips-image.html#im-initdesc"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cp_desc ()" link="libvips-image.html#im-cp-desc"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cp_descv ()" link="libvips-image.html#im-cp-descv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cp_desc_array ()" link="libvips-image.html#im-cp-desc-array"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_binfile ()" link="libvips-image.html#im-binfile"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_image ()" link="libvips-image.html#im-image"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_header_int ()" link="libvips-header.html#im-header-int"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_header_double ()" link="libvips-header.html#im-header-double"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_header_string ()" link="libvips-header.html#im-header-string"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_header_as_string ()" link="libvips-header.html#im-header-as-string"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_header_get_typeof ()" link="libvips-header.html#im-header-get-typeof"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_header_get ()" link="libvips-header.html#im-header-get"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_header_map_fn ()" link="libvips-header.html#im-header-map-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_header_map ()" link="libvips-header.html#im-header-map"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_histlin ()" link="libvips-header.html#im-histlin"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_updatehist ()" link="libvips-header.html#im-updatehist"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_history_get ()" link="libvips-header.html#im-history-get"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rwcheck ()" link="libvips-check.html#im-rwcheck"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_iocheck ()" link="libvips-check.html#im-iocheck"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_incheck ()" link="libvips-check.html#im-incheck"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_outcheck ()" link="libvips-check.html#im-outcheck"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_piocheck ()" link="libvips-check.html#im-piocheck"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_pincheck ()" link="libvips-check.html#im-pincheck"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_poutcheck ()" link="libvips-check.html#im-poutcheck"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_uncoded ()" link="libvips-check.html#im-check-uncoded"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_coding_known ()" link="libvips-check.html#im-check-coding-known"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_coding_labq ()" link="libvips-check.html#im-check-coding-labq"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_coding_rad ()" link="libvips-check.html#im-check-coding-rad"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_coding_same ()" link="libvips-check.html#im-check-coding-same"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_mono ()" link="libvips-check.html#im-check-mono"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_bands_1or3 ()" link="libvips-check.html#im-check-bands-1or3"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_bands ()" link="libvips-check.html#im-check-bands"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_bands_1orn ()" link="libvips-check.html#im-check-bands-1orn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_bands_same ()" link="libvips-check.html#im-check-bands-same"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_bandno ()" link="libvips-check.html#im-check-bandno"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_int ()" link="libvips-check.html#im-check-int"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_uint ()" link="libvips-check.html#im-check-uint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_uintorf ()" link="libvips-check.html#im-check-uintorf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_noncomplex ()" link="libvips-check.html#im-check-noncomplex"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_complex ()" link="libvips-check.html#im-check-complex"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_format ()" link="libvips-check.html#im-check-format"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_u8or16 ()" link="libvips-check.html#im-check-u8or16"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_8or16 ()" link="libvips-check.html#im-check-8or16"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_u8or16orf ()" link="libvips-check.html#im-check-u8or16orf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_format_same ()" link="libvips-check.html#im-check-format-same"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_size_same ()" link="libvips-check.html#im-check-size-same"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_vector ()" link="libvips-check.html#im-check-vector"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_hist ()" link="libvips-check.html#im-check-hist"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_imask ()" link="libvips-check.html#im-check-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_check_dmask ()" link="libvips-check.html#im-check-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_bandfmt_isint ()" link="libvips-check.html#vips-bandfmt-isint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_bandfmt_isuint ()" link="libvips-check.html#vips-bandfmt-isuint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_bandfmt_isfloat ()" link="libvips-check.html#vips-bandfmt-isfloat"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_bandfmt_iscomplex ()" link="libvips-check.html#vips-bandfmt-iscomplex"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_isfile ()" link="libvips-check.html#im-isfile"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ispartial ()" link="libvips-check.html#im-ispartial"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_isMSBfirst ()" link="libvips-check.html#im-isMSBfirst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_callback_fn ()" link="libvips-callback.html#im-callback-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_add_close_callback ()" link="libvips-callback.html#im-add-close-callback"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_add_preclose_callback ()" link="libvips-callback.html#im-add-preclose-callback"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_add_postclose_callback ()" link="libvips-callback.html#im-add-postclose-callback"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_add_written_callback ()" link="libvips-callback.html#im-add-written-callback"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_add_evalstart_callback ()" link="libvips-callback.html#im-add-evalstart-callback"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_add_eval_callback ()" link="libvips-callback.html#im-add-eval-callback"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_add_evalend_callback ()" link="libvips-callback.html#im-add-evalend-callback"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_add_invalidate_callback ()" link="libvips-callback.html#im-add-invalidate-callback"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_META_EXIF_NAME" link="libvips-meta.html#IM-META-EXIF-NAME:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_META_ICC_NAME" link="libvips-meta.html#IM-META-ICC-NAME:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_META_XML" link="libvips-meta.html#IM-META-XML:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_META_RESOLUTION_UNIT" link="libvips-meta.html#IM-META-RESOLUTION-UNIT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_SAVE_STRING" link="libvips-meta.html#IM-TYPE-SAVE-STRING:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_save_string_get_type ()" link="libvips-meta.html#im-save-string-get-type"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_save_string_get ()" link="libvips-meta.html#im-save-string-get"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_save_string_set ()" link="libvips-meta.html#im-save-string-set"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_save_string_setf ()" link="libvips-meta.html#im-save-string-setf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_AREA" link="libvips-meta.html#IM-TYPE-AREA:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_area_get_type ()" link="libvips-meta.html#im-area-get-type"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_REF_STRING" link="libvips-meta.html#IM-TYPE-REF-STRING:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ref_string_get_type ()" link="libvips-meta.html#im-ref-string-get-type"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ref_string_set ()" link="libvips-meta.html#im-ref-string-set"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ref_string_get ()" link="libvips-meta.html#im-ref-string-get"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ref_string_get_length ()" link="libvips-meta.html#im-ref-string-get-length"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_BLOB" link="libvips-meta.html#IM-TYPE-BLOB:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_blob_get_type ()" link="libvips-meta.html#im-blob-get-type"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_blob_get ()" link="libvips-meta.html#im-blob-get"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_blob_set ()" link="libvips-meta.html#im-blob-set"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_set ()" link="libvips-meta.html#im-meta-set"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_remove ()" link="libvips-meta.html#im-meta-remove"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_get ()" link="libvips-meta.html#im-meta-get"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_get_typeof ()" link="libvips-meta.html#im-meta-get-typeof"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_set_int ()" link="libvips-meta.html#im-meta-set-int"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_get_int ()" link="libvips-meta.html#im-meta-get-int"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_set_double ()" link="libvips-meta.html#im-meta-set-double"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_get_double ()" link="libvips-meta.html#im-meta-get-double"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_set_area ()" link="libvips-meta.html#im-meta-set-area"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_get_area ()" link="libvips-meta.html#im-meta-get-area"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_set_string ()" link="libvips-meta.html#im-meta-set-string"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_get_string ()" link="libvips-meta.html#im-meta-get-string"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_set_blob ()" link="libvips-meta.html#im-meta-set-blob"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_meta_get_blob ()" link="libvips-meta.html#im-meta-get-blob"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="REGION" link="libvips-region.html#REGION:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_create ()" link="libvips-region.html#im-region-create"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_free ()" link="libvips-region.html#im-region-free"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_buffer ()" link="libvips-region.html#im-region-buffer"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_image ()" link="libvips-region.html#im-region-image"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_region ()" link="libvips-region.html#im-region-region"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_equalsregion ()" link="libvips-region.html#im-region-equalsregion"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_position ()" link="libvips-region.html#im-region-position"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_paint ()" link="libvips-region.html#im-region-paint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_black ()" link="libvips-region.html#im-region-black"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_region_copy ()" link="libvips-region.html#im-region-copy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_REGION_LSKIP()" link="libvips-region.html#IM-REGION-LSKIP:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_REGION_N_ELEMENTS()" link="libvips-region.html#IM-REGION-N-ELEMENTS:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_REGION_SIZEOF_LINE()" link="libvips-region.html#IM-REGION-SIZEOF-LINE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_REGION_ADDR()" link="libvips-region.html#IM-REGION-ADDR:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_REGION_ADDR_TOPLEFT()" link="libvips-region.html#IM-REGION-ADDR-TOPLEFT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_prepare ()" link="libvips-generate.html#im-prepare"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_prepare_to ()" link="libvips-generate.html#im-prepare-to"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_start_fn ()" link="libvips-generate.html#im-start-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_generate_fn ()" link="libvips-generate.html#im-generate-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_stop_fn ()" link="libvips-generate.html#im-stop-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_start_one ()" link="libvips-generate.html#im-start-one"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_stop_one ()" link="libvips-generate.html#im-stop-one"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_start_many ()" link="libvips-generate.html#im-start-many"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_stop_many ()" link="libvips-generate.html#im-stop-many"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_allocate_input_array ()" link="libvips-generate.html#im-allocate-input-array"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_generate ()" link="libvips-generate.html#im-generate"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_iterate ()" link="libvips-generate.html#im-iterate"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_demand_hint_array ()" link="libvips-generate.html#im-demand-hint-array"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_demand_hint ()" link="libvips-generate.html#im-demand-hint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_wrapone_fn ()" link="libvips-generate.html#im-wrapone-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_wrapone ()" link="libvips-generate.html#im-wrapone"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_wraptwo_fn ()" link="libvips-generate.html#im-wraptwo-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_wraptwo ()" link="libvips-generate.html#im-wraptwo"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_wrapmany_fn ()" link="libvips-generate.html#im-wrapmany-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_wrapmany ()" link="libvips-generate.html#im-wrapmany"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_render_priority ()" link="libvips-generate.html#im-render-priority"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cache ()" link="libvips-generate.html#im-cache"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_setupout ()" link="libvips-generate.html#im-setupout"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_writeline ()" link="libvips-generate.html#im-writeline"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsThreadState" link="VipsThreadState.html#VipsThreadState-struct"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_thread_state_set ()" link="VipsThreadState.html#vips-thread-state-set"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_thread_state_new ()" link="VipsThreadState.html#vips-thread-state-new"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_threadpool_run ()" link="VipsThreadState.html#vips-threadpool-run"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_get_tile_size ()" link="VipsThreadState.html#vips-get-tile-size"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_sink_disc ()" link="VipsThreadState.html#vips-sink-disc"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_sink ()" link="VipsThreadState.html#vips-sink"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_sink_tile ()" link="VipsThreadState.html#vips-sink-tile"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_sink_screen ()" link="VipsThreadState.html#vips-sink-screen"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_sink_memory ()" link="VipsThreadState.html#vips-sink-memory"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__print_renders ()" link="VipsThreadState.html#im--print-renders"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_concurrency_set ()" link="VipsThreadState.html#im-concurrency-set"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_concurrency_get ()" link="VipsThreadState.html#im-concurrency-get"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_error_buffer ()" link="libvips-error.html#im-error-buffer"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_error_clear ()" link="libvips-error.html#im-error-clear"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_error ()" link="libvips-error.html#im-error"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_verror ()" link="libvips-error.html#im-verror"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_error_system ()" link="libvips-error.html#im-error-system"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_verror_system ()" link="libvips-error.html#im-verror-system"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_warn ()" link="libvips-error.html#im-warn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vwarn ()" link="libvips-error.html#im-vwarn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_diag ()" link="libvips-error.html#im-diag"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vdiag ()" link="libvips-error.html#im-vdiag"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="error_exit ()" link="libvips-error.html#error-exit"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_NEW()" link="libvips-memory.html#IM-NEW:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_ARRAY()" link="libvips-memory.html#IM-ARRAY:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_malloc ()" link="libvips-memory.html#im-malloc"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_free ()" link="libvips-memory.html#im-free"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsBuf" link="libvips-buf.html#VipsBuf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="VIPS_BUF_STATIC()" link="libvips-buf.html#VIPS-BUF-STATIC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_rewind ()" link="libvips-buf.html#vips-buf-rewind"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_destroy ()" link="libvips-buf.html#vips-buf-destroy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_init ()" link="libvips-buf.html#vips-buf-init"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_set_static ()" link="libvips-buf.html#vips-buf-set-static"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_set_dynamic ()" link="libvips-buf.html#vips-buf-set-dynamic"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_init_static ()" link="libvips-buf.html#vips-buf-init-static"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_init_dynamic ()" link="libvips-buf.html#vips-buf-init-dynamic"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_appendns ()" link="libvips-buf.html#vips-buf-appendns"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_appends ()" link="libvips-buf.html#vips-buf-appends"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_appendf ()" link="libvips-buf.html#vips-buf-appendf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_vappendf ()" link="libvips-buf.html#vips-buf-vappendf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_appendc ()" link="libvips-buf.html#vips-buf-appendc"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_appendsc ()" link="libvips-buf.html#vips-buf-appendsc"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_appendgv ()" link="libvips-buf.html#vips-buf-appendgv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_removec ()" link="libvips-buf.html#vips-buf-removec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_change ()" link="libvips-buf.html#vips-buf-change"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_is_empty ()" link="libvips-buf.html#vips-buf-is-empty"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_is_full ()" link="libvips-buf.html#vips-buf-is-full"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_all ()" link="libvips-buf.html#vips-buf-all"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_firstline ()" link="libvips-buf.html#vips-buf-firstline"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_appendg ()" link="libvips-buf.html#vips-buf-appendg"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_appendd ()" link="libvips-buf.html#vips-buf-appendd"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_buf_len ()" link="libvips-buf.html#vips-buf-len"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_measure_area ()" link="libvips-arithmetic.html#im-measure-area"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_stats ()" link="libvips-arithmetic.html#im-stats"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_max ()" link="libvips-arithmetic.html#im-max"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_min ()" link="libvips-arithmetic.html#im-min"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_avg ()" link="libvips-arithmetic.html#im-avg"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_deviate ()" link="libvips-arithmetic.html#im-deviate"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_maxpos ()" link="libvips-arithmetic.html#im-maxpos"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_minpos ()" link="libvips-arithmetic.html#im-minpos"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_maxpos_avg ()" link="libvips-arithmetic.html#im-maxpos-avg"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_maxpos_vec ()" link="libvips-arithmetic.html#im-maxpos-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_minpos_vec ()" link="libvips-arithmetic.html#im-minpos-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_bandmean ()" link="libvips-arithmetic.html#im-bandmean"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_add ()" link="libvips-arithmetic.html#im-add"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_subtract ()" link="libvips-arithmetic.html#im-subtract"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_invert ()" link="libvips-arithmetic.html#im-invert"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lintra ()" link="libvips-arithmetic.html#im-lintra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lintra_vec ()" link="libvips-arithmetic.html#im-lintra-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_multiply ()" link="libvips-arithmetic.html#im-multiply"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_divide ()" link="libvips-arithmetic.html#im-divide"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_remainder ()" link="libvips-arithmetic.html#im-remainder"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_remainder_vec ()" link="libvips-arithmetic.html#im-remainder-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_remainderconst ()" link="libvips-arithmetic.html#im-remainderconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_recomb ()" link="libvips-arithmetic.html#im-recomb"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_sign ()" link="libvips-arithmetic.html#im-sign"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_abs ()" link="libvips-arithmetic.html#im-abs"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_floor ()" link="libvips-arithmetic.html#im-floor"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rint ()" link="libvips-arithmetic.html#im-rint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ceil ()" link="libvips-arithmetic.html#im-ceil"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_linreg ()" link="libvips-arithmetic.html#im-linreg"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_point ()" link="libvips-arithmetic.html#im-point"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_point_bilinear ()" link="libvips-arithmetic.html#im-point-bilinear"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_powtra ()" link="libvips-arithmetic.html#im-powtra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_powtra_vec ()" link="libvips-arithmetic.html#im-powtra-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_exptra ()" link="libvips-arithmetic.html#im-exptra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_exp10tra ()" link="libvips-arithmetic.html#im-exp10tra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_expntra ()" link="libvips-arithmetic.html#im-expntra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_expntra_vec ()" link="libvips-arithmetic.html#im-expntra-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_logtra ()" link="libvips-arithmetic.html#im-logtra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_log10tra ()" link="libvips-arithmetic.html#im-log10tra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_sintra ()" link="libvips-arithmetic.html#im-sintra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_costra ()" link="libvips-arithmetic.html#im-costra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tantra ()" link="libvips-arithmetic.html#im-tantra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_asintra ()" link="libvips-arithmetic.html#im-asintra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_acostra ()" link="libvips-arithmetic.html#im-acostra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_atantra ()" link="libvips-arithmetic.html#im-atantra"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cross_phase ()" link="libvips-arithmetic.html#im-cross-phase"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_andimage ()" link="libvips-boolean.html#im-andimage"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_orimage ()" link="libvips-boolean.html#im-orimage"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_eorimage ()" link="libvips-boolean.html#im-eorimage"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_andimage_vec ()" link="libvips-boolean.html#im-andimage-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_andimageconst ()" link="libvips-boolean.html#im-andimageconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_orimage_vec ()" link="libvips-boolean.html#im-orimage-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_orimageconst ()" link="libvips-boolean.html#im-orimageconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_eorimage_vec ()" link="libvips-boolean.html#im-eorimage-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_eorimageconst ()" link="libvips-boolean.html#im-eorimageconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_shiftleft_vec ()" link="libvips-boolean.html#im-shiftleft-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_shiftleft ()" link="libvips-boolean.html#im-shiftleft"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_shiftright_vec ()" link="libvips-boolean.html#im-shiftright-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_shiftright ()" link="libvips-boolean.html#im-shiftright"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_equal ()" link="libvips-relational.html#im-equal"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_notequal ()" link="libvips-relational.html#im-notequal"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_less ()" link="libvips-relational.html#im-less"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lesseq ()" link="libvips-relational.html#im-lesseq"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_more ()" link="libvips-relational.html#im-more"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_moreeq ()" link="libvips-relational.html#im-moreeq"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_equal_vec ()" link="libvips-relational.html#im-equal-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_notequal_vec ()" link="libvips-relational.html#im-notequal-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_less_vec ()" link="libvips-relational.html#im-less-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lesseq_vec ()" link="libvips-relational.html#im-lesseq-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_more_vec ()" link="libvips-relational.html#im-more-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_moreeq_vec ()" link="libvips-relational.html#im-moreeq-vec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_equalconst ()" link="libvips-relational.html#im-equalconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_notequalconst ()" link="libvips-relational.html#im-notequalconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lessconst ()" link="libvips-relational.html#im-lessconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lesseqconst ()" link="libvips-relational.html#im-lesseqconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_moreconst ()" link="libvips-relational.html#im-moreconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_moreeqconst ()" link="libvips-relational.html#im-moreeqconst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ifthenelse ()" link="libvips-relational.html#im-ifthenelse"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_blend ()" link="libvips-relational.html#im-blend"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D93_X0" link="libvips-colour.html#IM-D93-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D93_Y0" link="libvips-colour.html#IM-D93-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D93_Z0" link="libvips-colour.html#IM-D93-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D75_X0" link="libvips-colour.html#IM-D75-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D75_Y0" link="libvips-colour.html#IM-D75-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D75_Z0" link="libvips-colour.html#IM-D75-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D65_X0" link="libvips-colour.html#IM-D65-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D65_Y0" link="libvips-colour.html#IM-D65-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D65_Z0" link="libvips-colour.html#IM-D65-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D55_X0" link="libvips-colour.html#IM-D55-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D55_Y0" link="libvips-colour.html#IM-D55-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D55_Z0" link="libvips-colour.html#IM-D55-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D50_X0" link="libvips-colour.html#IM-D50-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D50_Y0" link="libvips-colour.html#IM-D50-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D50_Z0" link="libvips-colour.html#IM-D50-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_A_X0" link="libvips-colour.html#IM-A-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_A_Y0" link="libvips-colour.html#IM-A-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_A_Z0" link="libvips-colour.html#IM-A-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_B_X0" link="libvips-colour.html#IM-B-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_B_Y0" link="libvips-colour.html#IM-B-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_B_Z0" link="libvips-colour.html#IM-B-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_C_X0" link="libvips-colour.html#IM-C-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_C_Y0" link="libvips-colour.html#IM-C-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_C_Z0" link="libvips-colour.html#IM-C-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_E_X0" link="libvips-colour.html#IM-E-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_E_Y0" link="libvips-colour.html#IM-E-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_E_Z0" link="libvips-colour.html#IM-E-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D3250_X0" link="libvips-colour.html#IM-D3250-X0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D3250_Y0" link="libvips-colour.html#IM-D3250-Y0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_D3250_Z0" link="libvips-colour.html#IM-D3250-Z0:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_ab2Ch ()" link="libvips-colour.html#im-col-ab2Ch"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_Ch2ab ()" link="libvips-colour.html#im-col-Ch2ab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_XYZ2Lab ()" link="libvips-colour.html#im-col-XYZ2Lab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_Lab2XYZ ()" link="libvips-colour.html#im-col-Lab2XYZ"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_pythagoras ()" link="libvips-colour.html#im-col-pythagoras"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_make_tables_UCS ()" link="libvips-colour.html#im-col-make-tables-UCS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_L2Lucs ()" link="libvips-colour.html#im-col-L2Lucs"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_Lucs2L ()" link="libvips-colour.html#im-col-Lucs2L"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_C2Cucs ()" link="libvips-colour.html#im-col-C2Cucs"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_Cucs2C ()" link="libvips-colour.html#im-col-Cucs2C"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_Ch2hucs ()" link="libvips-colour.html#im-col-Ch2hucs"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_Chucs2h ()" link="libvips-colour.html#im-col-Chucs2h"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_ab2h ()" link="libvips-colour.html#im-col-ab2h"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_dECMC ()" link="libvips-colour.html#im-col-dECMC"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_col_dE00 ()" link="libvips-colour.html#im-col-dE00"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_Lab2LCh ()" link="libvips-colour.html#im-Lab2LCh"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_LCh2Lab ()" link="libvips-colour.html#im-LCh2Lab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_LabQ2XYZ ()" link="libvips-colour.html#im-LabQ2XYZ"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rad2float ()" link="libvips-colour.html#im-rad2float"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_float2rad ()" link="libvips-colour.html#im-float2rad"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_LCh2UCS ()" link="libvips-colour.html#im-LCh2UCS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_Lab2LabQ ()" link="libvips-colour.html#im-Lab2LabQ"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_Lab2LabS ()" link="libvips-colour.html#im-Lab2LabS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_Lab2XYZ ()" link="libvips-colour.html#im-Lab2XYZ"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_Lab2XYZ_temp ()" link="libvips-colour.html#im-Lab2XYZ-temp"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_Lab2UCS ()" link="libvips-colour.html#im-Lab2UCS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_LabQ2Lab ()" link="libvips-colour.html#im-LabQ2Lab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_LabQ2LabS ()" link="libvips-colour.html#im-LabQ2LabS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_LabS2LabQ ()" link="libvips-colour.html#im-LabS2LabQ"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_LabS2Lab ()" link="libvips-colour.html#im-LabS2Lab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_UCS2XYZ ()" link="libvips-colour.html#im-UCS2XYZ"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_UCS2LCh ()" link="libvips-colour.html#im-UCS2LCh"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_UCS2Lab ()" link="libvips-colour.html#im-UCS2Lab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_XYZ2Lab ()" link="libvips-colour.html#im-XYZ2Lab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_XYZ2Lab_temp ()" link="libvips-colour.html#im-XYZ2Lab-temp"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_XYZ2UCS ()" link="libvips-colour.html#im-XYZ2UCS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_sRGB2XYZ ()" link="libvips-colour.html#im-sRGB2XYZ"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_XYZ2sRGB ()" link="libvips-colour.html#im-XYZ2sRGB"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_Yxy2XYZ ()" link="libvips-colour.html#im-Yxy2XYZ"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_XYZ2Yxy ()" link="libvips-colour.html#im-XYZ2Yxy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_dECMC_fromLab ()" link="libvips-colour.html#im-dECMC-fromLab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_dE00_fromLab ()" link="libvips-colour.html#im-dE00-fromLab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_dE_fromXYZ ()" link="libvips-colour.html#im-dE-fromXYZ"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_dE_fromLab ()" link="libvips-colour.html#im-dE-fromLab"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lab_morph ()" link="libvips-colour.html#im-lab-morph"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum VipsIntent" link="libvips-colour.html#VipsIntent"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_icc_present ()" link="libvips-colour.html#im-icc-present"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_icc_transform ()" link="libvips-colour.html#im-icc-transform"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_icc_import ()" link="libvips-colour.html#im-icc-import"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_icc_import_embedded ()" link="libvips-colour.html#im-icc-import-embedded"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_icc_export_depth ()" link="libvips-colour.html#im-icc-export-depth"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_icc_ac2rc ()" link="libvips-colour.html#im-icc-ac2rc"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2mask ()" link="libvips-conversion.html#im-vips2mask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_mask2vips ()" link="libvips-conversion.html#im-mask2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_copy ()" link="libvips-conversion.html#im-copy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_copy_set ()" link="libvips-conversion.html#im-copy-set"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_copy_set_meta ()" link="libvips-conversion.html#im-copy-set-meta"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_copy_morph ()" link="libvips-conversion.html#im-copy-morph"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_copy_swap ()" link="libvips-conversion.html#im-copy-swap"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_copy_native ()" link="libvips-conversion.html#im-copy-native"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_copy_file ()" link="libvips-conversion.html#im-copy-file"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_clip2fmt ()" link="libvips-conversion.html#im-clip2fmt"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_scale ()" link="libvips-conversion.html#im-scale"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_msb ()" link="libvips-conversion.html#im-msb"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_msb_band ()" link="libvips-conversion.html#im-msb-band"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_c2amph ()" link="libvips-conversion.html#im-c2amph"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_c2rect ()" link="libvips-conversion.html#im-c2rect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ri2c ()" link="libvips-conversion.html#im-ri2c"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_c2imag ()" link="libvips-conversion.html#im-c2imag"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_c2real ()" link="libvips-conversion.html#im-c2real"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_scaleps ()" link="libvips-conversion.html#im-scaleps"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_falsecolour ()" link="libvips-conversion.html#im-falsecolour"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_gaussnoise ()" link="libvips-conversion.html#im-gaussnoise"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_black ()" link="libvips-conversion.html#im-black"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_text ()" link="libvips-conversion.html#im-text"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_extract_band ()" link="libvips-conversion.html#im-extract-band"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_extract_bands ()" link="libvips-conversion.html#im-extract-bands"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_extract_area ()" link="libvips-conversion.html#im-extract-area"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_extract_areabands ()" link="libvips-conversion.html#im-extract-areabands"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_embed ()" link="libvips-conversion.html#im-embed"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_bandjoin ()" link="libvips-conversion.html#im-bandjoin"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_gbandjoin ()" link="libvips-conversion.html#im-gbandjoin"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_insert ()" link="libvips-conversion.html#im-insert"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_insert_noexpand ()" link="libvips-conversion.html#im-insert-noexpand"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_insertset ()" link="libvips-conversion.html#im-insertset"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lrjoin ()" link="libvips-conversion.html#im-lrjoin"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tbjoin ()" link="libvips-conversion.html#im-tbjoin"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_replicate ()" link="libvips-conversion.html#im-replicate"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_grid ()" link="libvips-conversion.html#im-grid"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_wrap ()" link="libvips-conversion.html#im-wrap"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_fliphor ()" link="libvips-conversion.html#im-fliphor"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_flipver ()" link="libvips-conversion.html#im-flipver"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rot90 ()" link="libvips-conversion.html#im-rot90"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rot180 ()" link="libvips-conversion.html#im-rot180"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rot270 ()" link="libvips-conversion.html#im-rot270"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_subsample ()" link="libvips-conversion.html#im-subsample"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_zoom ()" link="libvips-conversion.html#im-zoom"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_system ()" link="libvips-conversion.html#im-system"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_system_image ()" link="libvips-conversion.html#im-system-image"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_conv ()" link="libvips-convolution.html#im-conv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_conv_f ()" link="libvips-convolution.html#im-conv-f"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_convsep ()" link="libvips-convolution.html#im-convsep"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_convsep_f ()" link="libvips-convolution.html#im-convsep-f"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_compass ()" link="libvips-convolution.html#im-compass"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_gradient ()" link="libvips-convolution.html#im-gradient"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lindetect ()" link="libvips-convolution.html#im-lindetect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_sharpen ()" link="libvips-convolution.html#im-sharpen"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_grad_x ()" link="libvips-convolution.html#im-grad-x"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_grad_y ()" link="libvips-convolution.html#im-grad-y"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_fastcor ()" link="libvips-convolution.html#im-fastcor"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_spcor ()" link="libvips-convolution.html#im-spcor"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_gradcor ()" link="libvips-convolution.html#im-gradcor"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_contrast_surface ()" link="libvips-convolution.html#im-contrast-surface"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_addgnoise ()" link="libvips-convolution.html#im-addgnoise"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsFormat" link="VipsFormat.html#VipsFormat-struct"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_format_map ()" link="VipsFormat.html#vips-format-map"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_format_for_file ()" link="VipsFormat.html#vips-format-for-file"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_format_for_name ()" link="VipsFormat.html#vips-format-for-name"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_format_get_flags ()" link="VipsFormat.html#vips-format-get-flags"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_format_read ()" link="VipsFormat.html#vips-format-read"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_format_write ()" link="VipsFormat.html#vips-format-write"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_jpeg2vips ()" link="VipsFormat.html#im-jpeg2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2jpeg ()" link="VipsFormat.html#im-vips2jpeg"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2mimejpeg ()" link="VipsFormat.html#im-vips2mimejpeg"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2bufjpeg ()" link="VipsFormat.html#im-vips2bufjpeg"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tiff2vips ()" link="VipsFormat.html#im-tiff2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2tiff ()" link="VipsFormat.html#im-vips2tiff"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tile_cache ()" link="VipsFormat.html#im-tile-cache"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_magick2vips ()" link="VipsFormat.html#im-magick2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_exr2vips ()" link="VipsFormat.html#im-exr2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ppm2vips ()" link="VipsFormat.html#im-ppm2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2ppm ()" link="VipsFormat.html#im-vips2ppm"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_analyze2vips ()" link="VipsFormat.html#im-analyze2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_csv2vips ()" link="VipsFormat.html#im-csv2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2csv ()" link="VipsFormat.html#im-vips2csv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_png2vips ()" link="VipsFormat.html#im-png2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2png ()" link="VipsFormat.html#im-vips2png"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_raw2vips ()" link="VipsFormat.html#im-raw2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2raw ()" link="VipsFormat.html#im-vips2raw"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_mat2vips ()" link="VipsFormat.html#im-mat2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rad2vips ()" link="VipsFormat.html#im-rad2vips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vips2rad ()" link="VipsFormat.html#im-vips2rad"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum VipsMaskType" link="libvips-freq-filt.html#VipsMaskType"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_fwfft ()" link="libvips-freq-filt.html#im-fwfft"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_invfft ()" link="libvips-freq-filt.html#im-invfft"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_invfftr ()" link="libvips-freq-filt.html#im-invfftr"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_freqflt ()" link="libvips-freq-filt.html#im-freqflt"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_disp_ps ()" link="libvips-freq-filt.html#im-disp-ps"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rotquad ()" link="libvips-freq-filt.html#im-rotquad"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_phasecor_fft ()" link="libvips-freq-filt.html#im-phasecor-fft"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_flt_image_freq ()" link="libvips-freq-filt.html#im-flt-image-freq"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_create_fmask ()" link="libvips-freq-filt.html#im-create-fmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_fractsurf ()" link="libvips-freq-filt.html#im-fractsurf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_histgr ()" link="libvips-histograms-lut.html#im-histgr"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_histnD ()" link="libvips-histograms-lut.html#im-histnD"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_hist_indexed ()" link="libvips-histograms-lut.html#im-hist-indexed"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_identity ()" link="libvips-histograms-lut.html#im-identity"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_identity_ushort ()" link="libvips-histograms-lut.html#im-identity-ushort"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_invertlut ()" link="libvips-histograms-lut.html#im-invertlut"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_buildlut ()" link="libvips-histograms-lut.html#im-buildlut"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_project ()" link="libvips-histograms-lut.html#im-project"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_histnorm ()" link="libvips-histograms-lut.html#im-histnorm"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_histcum ()" link="libvips-histograms-lut.html#im-histcum"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_histeq ()" link="libvips-histograms-lut.html#im-histeq"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_histspec ()" link="libvips-histograms-lut.html#im-histspec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ismonotonic ()" link="libvips-histograms-lut.html#im-ismonotonic"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_histplot ()" link="libvips-histograms-lut.html#im-histplot"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_maplut ()" link="libvips-histograms-lut.html#im-maplut"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_hist ()" link="libvips-histograms-lut.html#im-hist"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_hsp ()" link="libvips-histograms-lut.html#im-hsp"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_gammacorrect ()" link="libvips-histograms-lut.html#im-gammacorrect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_mpercent ()" link="libvips-histograms-lut.html#im-mpercent"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_mpercent_hist ()" link="libvips-histograms-lut.html#im-mpercent-hist"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_heq ()" link="libvips-histograms-lut.html#im-heq"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lhisteq ()" link="libvips-histograms-lut.html#im-lhisteq"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_stdif ()" link="libvips-histograms-lut.html#im-stdif"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tone_build_range ()" link="libvips-histograms-lut.html#im-tone-build-range"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tone_build ()" link="libvips-histograms-lut.html#im-tone-build"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tone_analyse ()" link="libvips-histograms-lut.html#im-tone-analyse"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tone_map ()" link="libvips-histograms-lut.html#im-tone-map"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_dilate ()" link="libvips-morphology.html#im-dilate"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_erode ()" link="libvips-morphology.html#im-erode"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rank ()" link="libvips-morphology.html#im-rank"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rank_image ()" link="libvips-morphology.html#im-rank-image"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_maxvalue ()" link="libvips-morphology.html#im-maxvalue"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cntlines ()" link="libvips-morphology.html#im-cntlines"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_zerox ()" link="libvips-morphology.html#im-zerox"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_profile ()" link="libvips-morphology.html#im-profile"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_label_regions ()" link="libvips-morphology.html#im-label-regions"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_affinei ()" link="libvips-resample.html#im-affinei"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_affinei_all ()" link="libvips-resample.html#im-affinei-all"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_stretch3 ()" link="libvips-resample.html#im-stretch3"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_shrink ()" link="libvips-resample.html#im-shrink"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rightshift_size ()" link="libvips-resample.html#im-rightshift-size"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_match_linear ()" link="libvips-resample.html#im-match-linear"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_match_linear_search ()" link="libvips-resample.html#im-match-linear-search"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="INTMASK" link="libvips-mask.html#INTMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="DOUBLEMASK" link="libvips-mask.html#DOUBLEMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_create_imask ()" link="libvips-mask.html#im-create-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_create_imaskv ()" link="libvips-mask.html#im-create-imaskv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_create_dmask ()" link="libvips-mask.html#im-create-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_create_dmaskv ()" link="libvips-mask.html#im-create-dmaskv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_read_imask ()" link="libvips-mask.html#im-read-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_read_dmask ()" link="libvips-mask.html#im-read-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_print_imask ()" link="libvips-mask.html#im-print-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_print_dmask ()" link="libvips-mask.html#im-print-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_write_imask ()" link="libvips-mask.html#im-write-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_write_dmask ()" link="libvips-mask.html#im-write-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_write_imask_name ()" link="libvips-mask.html#im-write-imask-name"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_write_dmask_name ()" link="libvips-mask.html#im-write-dmask-name"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_free_imask ()" link="libvips-mask.html#im-free-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_free_dmask ()" link="libvips-mask.html#im-free-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_log_imask ()" link="libvips-mask.html#im-log-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_log_dmask ()" link="libvips-mask.html#im-log-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_gauss_imask ()" link="libvips-mask.html#im-gauss-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_gauss_imask_sep ()" link="libvips-mask.html#im-gauss-imask-sep"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_gauss_dmask ()" link="libvips-mask.html#im-gauss-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_dup_imask ()" link="libvips-mask.html#im-dup-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_dup_dmask ()" link="libvips-mask.html#im-dup-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_scale_dmask ()" link="libvips-mask.html#im-scale-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_norm_dmask ()" link="libvips-mask.html#im-norm-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_offsets45 ()" link="libvips-mask.html#im-offsets45"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_offsets90 ()" link="libvips-mask.html#im-offsets90"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rotate_imask90 ()" link="libvips-mask.html#im-rotate-imask90"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rotate_imask45 ()" link="libvips-mask.html#im-rotate-imask45"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rotate_dmask90 ()" link="libvips-mask.html#im-rotate-dmask90"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rotate_dmask45 ()" link="libvips-mask.html#im-rotate-dmask45"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_mattrn ()" link="libvips-mask.html#im-mattrn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_matcat ()" link="libvips-mask.html#im-matcat"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_matmul ()" link="libvips-mask.html#im-matmul"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lu_decomp ()" link="libvips-mask.html#im-lu-decomp"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lu_solve ()" link="libvips-mask.html#im-lu-solve"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_matinv ()" link="libvips-mask.html#im-matinv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_matinv_inplace ()" link="libvips-mask.html#im-matinv-inplace"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_local_dmask ()" link="libvips-mask.html#im-local-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_local_imask ()" link="libvips-mask.html#im-local-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_plotmask ()" link="libvips-inplace.html#im-plotmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_smear ()" link="libvips-inplace.html#im-smear"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_smudge ()" link="libvips-inplace.html#im-smudge"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_paintrect ()" link="libvips-inplace.html#im-paintrect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_circle ()" link="libvips-inplace.html#im-circle"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_insertplace ()" link="libvips-inplace.html#im-insertplace"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_fastline ()" link="libvips-inplace.html#im-fastline"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_fastlineuser ()" link="libvips-inplace.html#im-fastlineuser"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_readpoint ()" link="libvips-inplace.html#im-readpoint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_flood ()" link="libvips-inplace.html#im-flood"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_flood_blob ()" link="libvips-inplace.html#im-flood-blob"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_flood_other ()" link="libvips-inplace.html#im-flood-other"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_flood_copy ()" link="libvips-inplace.html#im-flood-copy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_flood_blob_copy ()" link="libvips-inplace.html#im-flood-blob-copy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_flood_other_copy ()" link="libvips-inplace.html#im-flood-other-copy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lineset ()" link="libvips-inplace.html#im-lineset"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lrmerge ()" link="libvips-mosaicing.html#im-lrmerge"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tbmerge ()" link="libvips-mosaicing.html#im-tbmerge"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lrmerge1 ()" link="libvips-mosaicing.html#im-lrmerge1"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tbmerge1 ()" link="libvips-mosaicing.html#im-tbmerge1"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lrmosaic ()" link="libvips-mosaicing.html#im-lrmosaic"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tbmosaic ()" link="libvips-mosaicing.html#im-tbmosaic"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_lrmosaic1 ()" link="libvips-mosaicing.html#im-lrmosaic1"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_tbmosaic1 ()" link="libvips-mosaicing.html#im-tbmosaic1"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_global_balance ()" link="libvips-mosaicing.html#im-global-balance"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_global_balancef ()" link="libvips-mosaicing.html#im-global-balancef"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_correl ()" link="libvips-mosaicing.html#im-correl"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_remosaic ()" link="libvips-mosaicing.html#im-remosaic"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_align_bands ()" link="libvips-mosaicing.html#im-align-bands"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_maxpos_subpel ()" link="libvips-mosaicing.html#im-maxpos-subpel"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_feye ()" link="libvips-other.html#im-feye"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_eye ()" link="libvips-other.html#im-eye"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_zone ()" link="libvips-other.html#im-zone"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_fzone ()" link="libvips-other.html#im-fzone"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_grey ()" link="libvips-other.html#im-grey"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_fgrey ()" link="libvips-other.html#im-fgrey"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_make_xy ()" link="libvips-other.html#im-make-xy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_benchmarkn ()" link="libvips-other.html#im-benchmarkn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_benchmark2 ()" link="libvips-other.html#im-benchmark2"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cooc_matrix ()" link="libvips-other.html#im-cooc-matrix"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cooc_asm ()" link="libvips-other.html#im-cooc-asm"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cooc_contrast ()" link="libvips-other.html#im-cooc-contrast"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cooc_correlation ()" link="libvips-other.html#im-cooc-correlation"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_cooc_entropy ()" link="libvips-other.html#im-cooc-entropy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_glds_matrix ()" link="libvips-other.html#im-glds-matrix"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_glds_asm ()" link="libvips-other.html#im-glds-asm"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_glds_contrast ()" link="libvips-other.html#im-glds-contrast"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_glds_entropy ()" link="libvips-other.html#im-glds-entropy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_glds_mean ()" link="libvips-other.html#im-glds-mean"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_simcontr ()" link="libvips-other.html#im-simcontr"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_sines ()" link="libvips-other.html#im-sines"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_spatres ()" link="libvips-other.html#im-spatres"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_video_v4l1 ()" link="libvips-video.html#im-video-v4l1"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_video_test ()" link="libvips-video.html#im-video-test"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_greyc_mask ()" link="libvips-cimg-funcs.html#im-greyc-mask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsInterpolate" link="VipsInterpolate.html#VipsInterpolate-struct"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_interpolate ()" link="VipsInterpolate.html#vips-interpolate"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_interpolate_get_method ()" link="VipsInterpolate.html#vips-interpolate-get-method"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_interpolate_get_window_size ()" link="VipsInterpolate.html#vips-interpolate-get-window-size"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_interpolate_get_window_offset ()" link="VipsInterpolate.html#vips-interpolate-get-window-offset"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="VIPS_TRANSFORM_SHIFT" link="VipsInterpolate.html#VIPS-TRANSFORM-SHIFT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="VIPS_TRANSFORM_SCALE" link="VipsInterpolate.html#VIPS-TRANSFORM-SCALE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="VIPS_INTERPOLATE_SHIFT" link="VipsInterpolate.html#VIPS-INTERPOLATE-SHIFT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="VIPS_INTERPOLATE_SCALE" link="VipsInterpolate.html#VIPS-INTERPOLATE-SCALE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_interpolate_nearest_static ()" link="VipsInterpolate.html#vips-interpolate-nearest-static"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_interpolate_bilinear_static ()" link="VipsInterpolate.html#vips-interpolate-bilinear-static"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_interpolate_bicubic_static ()" link="VipsInterpolate.html#vips-interpolate-bicubic-static"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_interpolate_new ()" link="VipsInterpolate.html#vips-interpolate-new"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips__interpolate_init ()" link="VipsInterpolate.html#vips--interpolate-init"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsObject" link="libvips-VipsArgument.html#VipsObject-struct"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsObjectClass" link="libvips-VipsArgument.html#VipsObjectClass"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum VipsArgumentFlags" link="libvips-VipsArgument.html#VipsArgumentFlags"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="VIPS_ARGUMENT_REQUIRED_INPUT" link="libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-INPUT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="VIPS_ARGUMENT_OPTIONAL_INPUT" link="libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-INPUT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="VIPS_ARGUMENT_REQUIRED_OUTPUT" link="libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-OUTPUT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="VIPS_ARGUMENT_OPTIONAL_OUTPUT" link="libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-OUTPUT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsArgument" link="libvips-VipsArgument.html#VipsArgument"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsArgumentClass" link="libvips-VipsArgument.html#VipsArgumentClass"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="VipsArgumentInstance" link="libvips-VipsArgument.html#VipsArgumentInstance"/>
doc/reference/html/libvips.devhelp2:    <keyword type="typedef" name="VipsArgumentTable" link="libvips-VipsArgument.html#VipsArgumentTable"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips__argument_get_instance ()" link="libvips-VipsArgument.html#vips--argument-get-instance"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips__argument_table_lookup ()" link="libvips-VipsArgument.html#vips--argument-table-lookup"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="VipsArgumentMapFn ()" link="libvips-VipsArgument.html#VipsArgumentMapFn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_argument_map ()" link="libvips-VipsArgument.html#vips-argument-map"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_object_set_property ()" link="libvips-VipsArgument.html#vips-object-set-property"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_object_get_property ()" link="libvips-VipsArgument.html#vips-object-get-property"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_object_build ()" link="libvips-VipsArgument.html#vips-object-build"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_object_print_class ()" link="libvips-VipsArgument.html#vips-object-print-class"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_object_print ()" link="libvips-VipsArgument.html#vips-object-print"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_object_class_install_argument ()" link="libvips-VipsArgument.html#vips-object-class-install-argument"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="VipsObjectSetArguments ()" link="libvips-VipsArgument.html#VipsObjectSetArguments"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_object_new ()" link="libvips-VipsArgument.html#vips-object-new"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_object_new_from_string ()" link="libvips-VipsArgument.html#vips-object-new-from-string"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_object_to_string ()" link="libvips-VipsArgument.html#vips-object-to-string"/>
doc/reference/html/libvips.devhelp2:    <keyword type="property" name="The &quot;description&quot; property" link="libvips-VipsArgument.html#VipsObject--description"/>
doc/reference/html/libvips.devhelp2:    <keyword type="property" name="The &quot;nickname&quot; property" link="libvips-VipsArgument.html#VipsObject--nickname"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="Transformation" link="libvips-transform.html#Transformation"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_init ()" link="libvips-transform.html#im--transform-init"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_calc_inverse ()" link="libvips-transform.html#im--transform-calc-inverse"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_isidentity ()" link="libvips-transform.html#im--transform-isidentity"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_add ()" link="libvips-transform.html#im--transform-add"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_print ()" link="libvips-transform.html#im--transform-print"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_forward_point ()" link="libvips-transform.html#im--transform-forward-point"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_invert_point ()" link="libvips-transform.html#im--transform-invert-point"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_forward_rect ()" link="libvips-transform.html#im--transform-forward-rect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_invert_rect ()" link="libvips-transform.html#im--transform-invert-rect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__transform_set_area ()" link="libvips-transform.html#im--transform-set-area"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__affine ()" link="libvips-transform.html#im--affine"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_PI" link="libvips-util.html#IM-PI:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_RAD()" link="libvips-util.html#IM-RAD:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_DEG()" link="libvips-util.html#IM-DEG:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_MAX()" link="libvips-util.html#IM-MAX:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_MIN()" link="libvips-util.html#IM-MIN:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_ABS()" link="libvips-util.html#IM-ABS:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_CLIP()" link="libvips-util.html#IM-CLIP:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_NUMBER()" link="libvips-util.html#IM-NUMBER:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_FREEF()" link="libvips-util.html#IM-FREEF:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_FREE()" link="libvips-util.html#IM-FREE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_SETSTR()" link="libvips-util.html#IM-SETSTR:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_UNROLL()" link="libvips-util.html#IM-UNROLL:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_RINT()" link="libvips-util.html#IM-RINT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_CLIP_UCHAR()" link="libvips-util.html#IM-CLIP-UCHAR:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_CLIP_USHORT()" link="libvips-util.html#IM-CLIP-USHORT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_CLIP_CHAR()" link="libvips-util.html#IM-CLIP-CHAR:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_CLIP_SHORT()" link="libvips-util.html#IM-CLIP-SHORT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_CLIP_NONE()" link="libvips-util.html#IM-CLIP-NONE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_construct_fn ()" link="libvips-util.html#im-construct-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_local ()" link="libvips-util.html#im-local"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_local_array ()" link="libvips-util.html#im-local-array"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__break_token ()" link="libvips-util.html#im--break-token"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="VSListMap2Fn ()" link="libvips-util.html#VSListMap2Fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="VSListMap4Fn ()" link="libvips-util.html#VSListMap4Fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="VSListFold2Fn ()" link="libvips-util.html#VSListFold2Fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_slist_equal ()" link="libvips-util.html#im-slist-equal"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_slist_map2 ()" link="libvips-util.html#im-slist-map2"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_slist_map2_rev ()" link="libvips-util.html#im-slist-map2-rev"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_slist_map4 ()" link="libvips-util.html#im-slist-map4"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_slist_fold2 ()" link="libvips-util.html#im-slist-fold2"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_slist_filter ()" link="libvips-util.html#im-slist-filter"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_slist_free_all ()" link="libvips-util.html#im-slist-free-all"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_map_equal ()" link="libvips-util.html#im-map-equal"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_hash_table_map ()" link="libvips-util.html#im-hash-table-map"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="VipsTypeMap ()" link="libvips-util.html#VipsTypeMap"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="VipsTypeMap2 ()" link="libvips-util.html#VipsTypeMap2"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="VipsClassMap ()" link="libvips-util.html#VipsClassMap"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_type_map ()" link="libvips-util.html#vips-type-map"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_type_map_concrete_all ()" link="libvips-util.html#vips-type-map-concrete-all"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_class_map_concrete_all ()" link="libvips-util.html#vips-class-map-concrete-all"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_class_find ()" link="libvips-util.html#vips-class-find"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips_type_find ()" link="libvips-util.html#vips-type-find"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_strncpy ()" link="libvips-util.html#im-strncpy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_strrstr ()" link="libvips-util.html#im-strrstr"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_strdup ()" link="libvips-util.html#im-strdup"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ispostfix ()" link="libvips-util.html#im-ispostfix"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_isprefix ()" link="libvips-util.html#im-isprefix"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_vsnprintf ()" link="libvips-util.html#im-vsnprintf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_snprintf ()" link="libvips-util.html#im-snprintf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_break_token ()" link="libvips-util.html#im-break-token"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_skip_dir ()" link="libvips-util.html#im-skip-dir"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_filename_split ()" link="libvips-util.html#im-filename-split"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_filename_suffix ()" link="libvips-util.html#im-filename-suffix"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_filename_suffix_match ()" link="libvips-util.html#im-filename-suffix-match"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_getnextoption ()" link="libvips-util.html#im-getnextoption"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_getsuboption ()" link="libvips-util.html#im-getsuboption"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_file_length ()" link="libvips-util.html#im-file-length"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__write ()" link="libvips-util.html#im--write"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__file_open_read ()" link="libvips-util.html#im--file-open-read"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__file_open_write ()" link="libvips-util.html#im--file-open-write"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__file_read ()" link="libvips-util.html#im--file-read"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__file_read_name ()" link="libvips-util.html#im--file-read-name"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__file_write ()" link="libvips-util.html#im--file-write"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum VipsToken" link="libvips-util.html#VipsToken"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips__token_get ()" link="libvips-util.html#vips--token-get"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips__token_must ()" link="libvips-util.html#vips--token-must"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="vips__token_need ()" link="libvips-util.html#vips--token-need"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_existsf ()" link="libvips-util.html#im-existsf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_popenf ()" link="libvips-util.html#im-popenf"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_ispoweroftwo ()" link="libvips-util.html#im-ispoweroftwo"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_isvips ()" link="libvips-util.html#im-isvips"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_amiMSBfirst ()" link="libvips-util.html#im-amiMSBfirst"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__temp_name ()" link="libvips-util.html#im--temp-name"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__open_temp ()" link="libvips-util.html#im--open-temp"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_bits_of_fmt ()" link="libvips-util.html#im-bits-of-fmt"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_VERSION" link="libvips-version.html#IM-VERSION:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_VERSION_STRING" link="libvips-version.html#IM-VERSION-STRING:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_MAJOR_VERSION" link="libvips-version.html#IM-MAJOR-VERSION:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_MINOR_VERSION" link="libvips-version.html#IM-MINOR-VERSION:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_MICRO_VERSION" link="libvips-version.html#IM-MICRO-VERSION:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INTERFACE_AGE" link="libvips-version.html#IM-INTERFACE-AGE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_BINARY_AGE" link="libvips-version.html#IM-BINARY-AGE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_DOUBLE" link="libvips-type.html#IM-TYPE-NAME-DOUBLE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_INT" link="libvips-type.html#IM-TYPE-NAME-INT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_COMPLEX" link="libvips-type.html#IM-TYPE-NAME-COMPLEX:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_STRING" link="libvips-type.html#IM-TYPE-NAME-STRING:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_IMASK" link="libvips-type.html#IM-TYPE-NAME-IMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_DMASK" link="libvips-type.html#IM-TYPE-NAME-DMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_IMAGE" link="libvips-type.html#IM-TYPE-NAME-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_DISPLAY" link="libvips-type.html#IM-TYPE-NAME-DISPLAY:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_GVALUE" link="libvips-type.html#IM-TYPE-NAME-GVALUE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_NAME_ARRAY" link="libvips-type.html#IM-TYPE-NAME-ARRAY:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_IM" link="libvips-type.html#IM-TYPE-IM:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_AR()" link="libvips-type.html#IM-TYPE-AR:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_type_t" link="libvips-type.html#im-type-t"/>
doc/reference/html/libvips.devhelp2:    <keyword type="typedef" name="im_value_t" link="libvips-type.html#im-value-t"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_value_mask_t" link="libvips-type.html#im-value-mask-t"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_value_array_t" link="libvips-type.html#im-value-array-t"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum im_argument_flags" link="libvips-type.html#im-argument-flags"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_argument_t" link="libvips-type.html#im-argument-t"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum im_operation_flags" link="libvips-type.html#im-operation-flags"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_operation_dispatch_fn ()" link="libvips-type.html#im-operation-dispatch-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_operation_t" link="libvips-type.html#im-operation-t"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_type_register ()" link="libvips-type.html#im-type-register"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_type_map ()" link="libvips-type.html#im-type-map"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_type_lookup ()" link="libvips-type.html#im-type-lookup"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_operation_register ()" link="libvips-type.html#im-operation-register"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_operation_registerv ()" link="libvips-type.html#im-operation-registerv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_operation_map ()" link="libvips-type.html#im-operation-map"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_operation_lookup ()" link="libvips-type.html#im-operation-lookup"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_argument_new ()" link="libvips-type.html#im-argument-new"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="Rect" link="libvips-rect.html#Rect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_RECT_RIGHT()" link="libvips-rect.html#IM-RECT-RIGHT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_RECT_BOTTOM()" link="libvips-rect.html#IM-RECT-BOTTOM:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_RECT_HCENTRE()" link="libvips-rect.html#IM-RECT-HCENTRE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_RECT_VCENTRE()" link="libvips-rect.html#IM-RECT-VCENTRE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rect_marginadjust ()" link="libvips-rect.html#im-rect-marginadjust"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rect_includespoint ()" link="libvips-rect.html#im-rect-includespoint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rect_includesrect ()" link="libvips-rect.html#im-rect-includesrect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rect_intersectrect ()" link="libvips-rect.html#im-rect-intersectrect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rect_isempty ()" link="libvips-rect.html#im-rect-isempty"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rect_unionrect ()" link="libvips-rect.html#im-rect-unionrect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rect_equalsrect ()" link="libvips-rect.html#im-rect-equalsrect"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rect_dup ()" link="libvips-rect.html#im-rect-dup"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_rect_normalise ()" link="libvips-rect.html#im-rect-normalise"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_semaphore_t" link="libvips-semaphore.html#im-semaphore-t"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_semaphore_up ()" link="libvips-semaphore.html#im-semaphore-up"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_semaphore_down ()" link="libvips-semaphore.html#im-semaphore-down"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_semaphore_upn ()" link="libvips-semaphore.html#im-semaphore-upn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_semaphore_downn ()" link="libvips-semaphore.html#im-semaphore-downn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_semaphore_destroy ()" link="libvips-semaphore.html#im-semaphore-destroy"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_semaphore_init ()" link="libvips-semaphore.html#im-semaphore-init"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_IMAGEVEC" link="libvips-dispatch.html#IM-TYPE-IMAGEVEC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_DOUBLEVEC" link="libvips-dispatch.html#IM-TYPE-DOUBLEVEC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_INTVEC" link="libvips-dispatch.html#IM-TYPE-INTVEC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_DOUBLE" link="libvips-dispatch.html#IM-TYPE-DOUBLE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_INT" link="libvips-dispatch.html#IM-TYPE-INT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_COMPLEX" link="libvips-dispatch.html#IM-TYPE-COMPLEX:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_STRING" link="libvips-dispatch.html#IM-TYPE-STRING:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_IMASK" link="libvips-dispatch.html#IM-TYPE-IMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_DMASK" link="libvips-dispatch.html#IM-TYPE-DMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_IMAGE" link="libvips-dispatch.html#IM-TYPE-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_DISPLAY" link="libvips-dispatch.html#IM-TYPE-DISPLAY:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_GVALUE" link="libvips-dispatch.html#IM-TYPE-GVALUE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_TYPE_INTERPOLATE" link="libvips-dispatch.html#IM-TYPE-INTERPOLATE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="typedef" name="im_arg_type" link="libvips-dispatch.html#im-arg-type"/>
doc/reference/html/libvips.devhelp2:    <keyword type="typedef" name="im_object" link="libvips-dispatch.html#im-object"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum im_type_flags" link="libvips-dispatch.html#im-type-flags"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_init_obj_fn ()" link="libvips-dispatch.html#im-init-obj-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_dest_obj_fn ()" link="libvips-dispatch.html#im-dest-obj-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_type_desc" link="libvips-dispatch.html#im-type-desc"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_print_obj_fn ()" link="libvips-dispatch.html#im-print-obj-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_arg_desc" link="libvips-dispatch.html#im-arg-desc"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_dispatch_fn ()" link="libvips-dispatch.html#im-dispatch-fn"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_MAX_ARGS" link="libvips-dispatch.html#IM-MAX-ARGS:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="enum" name="enum im_fn_flags" link="libvips-dispatch.html#im-fn-flags"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_function" link="libvips-dispatch.html#im-function"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_package" link="libvips-dispatch.html#im-package"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_mask_object" link="libvips-dispatch.html#im-mask-object"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_doublevec_object" link="libvips-dispatch.html#im-doublevec-object"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_intvec_object" link="libvips-dispatch.html#im-intvec-object"/>
doc/reference/html/libvips.devhelp2:    <keyword type="struct" name="im_imagevec_object" link="libvips-dispatch.html#im-imagevec-object"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_int" link="libvips-dispatch.html#im--input-int"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_intvec" link="libvips-dispatch.html#im--input-intvec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_imask" link="libvips-dispatch.html#im--input-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_int" link="libvips-dispatch.html#im--output-int"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_intvec" link="libvips-dispatch.html#im--output-intvec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_imask" link="libvips-dispatch.html#im--output-imask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_double" link="libvips-dispatch.html#im--input-double"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_doublevec" link="libvips-dispatch.html#im--input-doublevec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_dmask" link="libvips-dispatch.html#im--input-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_double" link="libvips-dispatch.html#im--output-double"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_doublevec" link="libvips-dispatch.html#im--output-doublevec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_dmask" link="libvips-dispatch.html#im--output-dmask"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_dmask_screen" link="libvips-dispatch.html#im--output-dmask-screen"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_complex" link="libvips-dispatch.html#im--output-complex"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_string" link="libvips-dispatch.html#im--input-string"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_string" link="libvips-dispatch.html#im--output-string"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_imagevec" link="libvips-dispatch.html#im--input-imagevec"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_image" link="libvips-dispatch.html#im--input-image"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_image" link="libvips-dispatch.html#im--output-image"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__rw_image" link="libvips-dispatch.html#im--rw-image"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_display" link="libvips-dispatch.html#im--input-display"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_display" link="libvips-dispatch.html#im--output-display"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_gvalue" link="libvips-dispatch.html#im--input-gvalue"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__output_gvalue" link="libvips-dispatch.html#im--output-gvalue"/>
doc/reference/html/libvips.devhelp2:    <keyword type="variable" name="im__input_interpolate" link="libvips-dispatch.html#im--input-interpolate"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__iprint ()" link="libvips-dispatch.html#im--iprint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__ivprint ()" link="libvips-dispatch.html#im--ivprint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__dprint ()" link="libvips-dispatch.html#im--dprint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__dvprint ()" link="libvips-dispatch.html#im--dvprint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__dmsprint ()" link="libvips-dispatch.html#im--dmsprint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__cprint ()" link="libvips-dispatch.html#im--cprint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__sprint ()" link="libvips-dispatch.html#im--sprint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__displayprint ()" link="libvips-dispatch.html#im--displayprint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im__gprint ()" link="libvips-dispatch.html#im--gprint"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_INT()" link="libvips-dispatch.html#IM-INPUT-INT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_INTVEC()" link="libvips-dispatch.html#IM-INPUT-INTVEC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_IMASK()" link="libvips-dispatch.html#IM-INPUT-IMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_INT()" link="libvips-dispatch.html#IM-OUTPUT-INT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_INTVEC()" link="libvips-dispatch.html#IM-OUTPUT-INTVEC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_IMASK()" link="libvips-dispatch.html#IM-OUTPUT-IMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_DOUBLE()" link="libvips-dispatch.html#IM-INPUT-DOUBLE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_DOUBLEVEC()" link="libvips-dispatch.html#IM-INPUT-DOUBLEVEC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_DMASK()" link="libvips-dispatch.html#IM-INPUT-DMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_DOUBLE()" link="libvips-dispatch.html#IM-OUTPUT-DOUBLE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_DOUBLEVEC()" link="libvips-dispatch.html#IM-OUTPUT-DOUBLEVEC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_DMASK()" link="libvips-dispatch.html#IM-OUTPUT-DMASK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_DMASK_STATS()" link="libvips-dispatch.html#IM-OUTPUT-DMASK-STATS:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_COMPLEX()" link="libvips-dispatch.html#IM-OUTPUT-COMPLEX:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_STRING()" link="libvips-dispatch.html#IM-INPUT-STRING:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_STRING()" link="libvips-dispatch.html#IM-OUTPUT-STRING:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_IMAGE()" link="libvips-dispatch.html#IM-INPUT-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_IMAGEVEC()" link="libvips-dispatch.html#IM-INPUT-IMAGEVEC:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_IMAGE()" link="libvips-dispatch.html#IM-OUTPUT-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_RW_IMAGE()" link="libvips-dispatch.html#IM-RW-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_DISPLAY()" link="libvips-dispatch.html#IM-INPUT-DISPLAY:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_DISPLAY()" link="libvips-dispatch.html#IM-OUTPUT-DISPLAY:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_GVALUE()" link="libvips-dispatch.html#IM-INPUT-GVALUE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_OUTPUT_GVALUE()" link="libvips-dispatch.html#IM-OUTPUT-GVALUE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="macro" name="IM_INPUT_INTERPOLATE()" link="libvips-dispatch.html#IM-INPUT-INTERPOLATE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_load_plugin ()" link="libvips-dispatch.html#im-load-plugin"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_load_plugins ()" link="libvips-dispatch.html#im-load-plugins"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_close_plugins ()" link="libvips-dispatch.html#im-close-plugins"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_map_packages ()" link="libvips-dispatch.html#im-map-packages"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_find_function ()" link="libvips-dispatch.html#im-find-function"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_find_package ()" link="libvips-dispatch.html#im-find-package"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_package_of_function ()" link="libvips-dispatch.html#im-package-of-function"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_free_vargv ()" link="libvips-dispatch.html#im-free-vargv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_allocate_vargv ()" link="libvips-dispatch.html#im-allocate-vargv"/>
doc/reference/html/libvips.devhelp2:    <keyword type="function" name="im_run_command ()" link="libvips-dispatch.html#im-run-command"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_SMALLTILE" link="libvips-image.html#IM-SMALLTILE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_FATSTRIP" link="libvips-image.html#IM-FATSTRIP:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_THINSTRIP" link="libvips-image.html#IM-THINSTRIP:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_ANY" link="libvips-image.html#IM-ANY:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_MULTIBAND" link="libvips-image.html#IM-TYPE-MULTIBAND:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_B_W" link="libvips-image.html#IM-TYPE-B-W:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_HISTOGRAM" link="libvips-image.html#IM-TYPE-HISTOGRAM:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_FOURIER" link="libvips-image.html#IM-TYPE-FOURIER:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_XYZ" link="libvips-image.html#IM-TYPE-XYZ:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_LAB" link="libvips-image.html#IM-TYPE-LAB:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_CMYK" link="libvips-image.html#IM-TYPE-CMYK:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_LABQ" link="libvips-image.html#IM-TYPE-LABQ:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_RGB" link="libvips-image.html#IM-TYPE-RGB:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_UCS" link="libvips-image.html#IM-TYPE-UCS:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_LCH" link="libvips-image.html#IM-TYPE-LCH:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_LABS" link="libvips-image.html#IM-TYPE-LABS:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_sRGB" link="libvips-image.html#IM-TYPE-sRGB"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_YXY" link="libvips-image.html#IM-TYPE-YXY:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_RGB16" link="libvips-image.html#IM-TYPE-RGB16:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_TYPE_GREY16" link="libvips-image.html#IM-TYPE-GREY16:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_NOTSET" link="libvips-image.html#IM-BANDFMT-NOTSET:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_UCHAR" link="libvips-image.html#IM-BANDFMT-UCHAR:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_CHAR" link="libvips-image.html#IM-BANDFMT-CHAR:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_USHORT" link="libvips-image.html#IM-BANDFMT-USHORT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_SHORT" link="libvips-image.html#IM-BANDFMT-SHORT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_UINT" link="libvips-image.html#IM-BANDFMT-UINT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_INT" link="libvips-image.html#IM-BANDFMT-INT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_FLOAT" link="libvips-image.html#IM-BANDFMT-FLOAT:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_COMPLEX" link="libvips-image.html#IM-BANDFMT-COMPLEX:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_DOUBLE" link="libvips-image.html#IM-BANDFMT-DOUBLE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_BANDFMT_DPCOMPLEX" link="libvips-image.html#IM-BANDFMT-DPCOMPLEX:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_CODING_NONE" link="libvips-image.html#IM-CODING-NONE:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_CODING_LABQ" link="libvips-image.html#IM-CODING-LABQ:CAPS"/>
doc/reference/html/libvips.devhelp2:    <keyword type="constant" name="IM_CODING_RAD" link="libvips-image.html#IM-CODING-RAD:CAPS"/>
doc/reference/html/libvips-error.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-error.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-error.html:<link rel="next" href="libvips-memory.html" title="memory">
doc/reference/html/libvips-error.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-error.html:<td><a accesskey="n" href="libvips-memory.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-error.html:<a href="#libvips-error.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-error.html:                  <a href="#libvips-error.description" class="shortcut">Description</a>
doc/reference/html/libvips-error.html:<a name="libvips-error"></a><div class="titlepage"></div>
doc/reference/html/libvips-error.html:<h2><span class="refentrytitle"><a name="libvips-error.top_of_page"></a>error</span></h2>
doc/reference/html/libvips-error.html:<a name="libvips-error.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-error.html:<a name="libvips-error.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-error.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-error.html#im-error-buffer" title="im_error_buffer ()">im_error_buffer</a>                     (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#im-error-clear" title="im_error_clear ()">im_error_clear</a>                      (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#im-error" title="im_error ()">im_error</a>                            (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#im-verror" title="im_verror ()">im_verror</a>                           (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#im-error-system" title="im_error_system ()">im_error_system</a>                     (<em class="parameter"><code><span class="type">int</span> err</code></em>,
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#im-verror-system" title="im_verror_system ()">im_verror_system</a>                    (<em class="parameter"><code><span class="type">int</span> err</code></em>,
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#im-warn" title="im_warn ()">im_warn</a>                             (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#im-vwarn" title="im_vwarn ()">im_vwarn</a>                            (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#im-diag" title="im_diag ()">im_diag</a>                             (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#im-vdiag" title="im_vdiag ()">im_vdiag</a>                            (<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
doc/reference/html/libvips-error.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-error.html#error-exit" title="error_exit ()">error_exit</a>                          (<em class="parameter"><code>const <span class="type">char</span> *fmt</code></em>,
doc/reference/html/libvips-error.html:<a name="libvips-error.description"></a><h2>Description</h2>
doc/reference/html/libvips-error.html:  return( -1 );
doc/reference/html/libvips-error.html:if( im-&gt;Xsize &lt; 100 ) {
doc/reference/html/libvips-error.html:  return( -1 );
doc/reference/html/libvips-error.html:<a name="libvips-error.details"></a><h2>Details</h2>
doc/reference/html/libvips-error.html:<a name="im-error-buffer"></a><h3>im_error_buffer ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-error-clear" title="im_error_clear ()"><code class="function">im_error_clear()</code></a>.
doc/reference/html/libvips-error.html:<a name="im-error-clear"></a><h3>im_error_clear ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-error-buffer" title="im_error_buffer ()"><code class="function">im_error_buffer()</code></a>.
doc/reference/html/libvips-error.html:<a name="im-error"></a><h3>im_error ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-error-system" title="im_error_system ()"><code class="function">im_error_system()</code></a>, <a class="link" href="libvips-error.html#im-verror" title="im_verror ()"><code class="function">im_verror()</code></a>.
doc/reference/html/libvips-error.html:<td>printf()-style format string for the error
doc/reference/html/libvips-error.html:<a name="im-verror"></a><h3>im_verror ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-error.html:<td>printf()-style format string for the error
doc/reference/html/libvips-error.html:<a name="im-error-system"></a><h3>im_error_system ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-verror-system" title="im_verror_system ()"><code class="function">im_verror_system()</code></a>.
doc/reference/html/libvips-error.html:<td>printf()-style format string for the error
doc/reference/html/libvips-error.html:<a name="im-verror-system"></a><h3>im_verror_system ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-error-system" title="im_error_system ()"><code class="function">im_error_system()</code></a>.
doc/reference/html/libvips-error.html:<td>printf()-style format string for the error
doc/reference/html/libvips-error.html:<a name="im-warn"></a><h3>im_warn ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-diag" title="im_diag ()"><code class="function">im_diag()</code></a>, <a class="link" href="libvips-error.html#im-vwarn" title="im_vwarn ()"><code class="function">im_vwarn()</code></a>.
doc/reference/html/libvips-error.html:<td>printf()-style format string for the message
doc/reference/html/libvips-error.html:<a name="im-vwarn"></a><h3>im_vwarn ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-diag" title="im_diag ()"><code class="function">im_diag()</code></a>, <a class="link" href="libvips-error.html#im-warn" title="im_warn ()"><code class="function">im_warn()</code></a>.
doc/reference/html/libvips-error.html:<td>printf()-style format string for the message
doc/reference/html/libvips-error.html:<a name="im-diag"></a><h3>im_diag ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-vdiag" title="im_vdiag ()"><code class="function">im_vdiag()</code></a>, <a class="link" href="libvips-error.html#im-warn" title="im_warn ()"><code class="function">im_warn()</code></a>.
doc/reference/html/libvips-error.html:<td>printf()-style format string for the message
doc/reference/html/libvips-error.html:<a name="im-vdiag"></a><h3>im_vdiag ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-diag" title="im_diag ()"><code class="function">im_diag()</code></a>, <a class="link" href="libvips-error.html#im-warn" title="im_warn ()"><code class="function">im_warn()</code></a>.
doc/reference/html/libvips-error.html:<td>printf()-style format string for the message
doc/reference/html/libvips-error.html:<a name="error-exit"></a><h3>error_exit ()</h3>
doc/reference/html/libvips-error.html:See also: <a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/libvips-error.html:<td>printf()-style format string for the message
doc/reference/html/libvips-error.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-VipsArgument.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-VipsArgument.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-VipsArgument.html:<link rel="next" href="libvips-transform.html" title="transform">
doc/reference/html/libvips-VipsArgument.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-VipsArgument.html:<td><a accesskey="n" href="libvips-transform.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-VipsArgument.html:<a href="#libvips-VipsArgument.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-VipsArgument.html:                  <a href="#libvips-VipsArgument.description" class="shortcut">Description</a>
doc/reference/html/libvips-VipsArgument.html:                  <a href="#libvips-VipsArgument.object-hierarchy" class="shortcut">Object Hierarchy</a>
doc/reference/html/libvips-VipsArgument.html:                  <a href="#libvips-VipsArgument.properties" class="shortcut">Properties</a>
doc/reference/html/libvips-VipsArgument.html:<a name="libvips-VipsArgument"></a><div class="titlepage"></div>
doc/reference/html/libvips-VipsArgument.html:<h2><span class="refentrytitle"><a name="libvips-VipsArgument.top_of_page"></a>VipsArgument</span></h2>
doc/reference/html/libvips-VipsArgument.html:<a name="libvips-VipsArgument.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-VipsArgument.html:<a name="VipsObject"></a><pre class="synopsis">                    <a class="link" href="libvips-VipsArgument.html#VipsObject-struct" title="VipsObject">VipsObject</a>;
doc/reference/html/libvips-VipsArgument.html:                    <a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass">VipsObjectClass</a>;
doc/reference/html/libvips-VipsArgument.html:enum                <a class="link" href="libvips-VipsArgument.html#VipsArgumentFlags" title="enum VipsArgumentFlags">VipsArgumentFlags</a>;
doc/reference/html/libvips-VipsArgument.html:#define             <a class="link" href="libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-INPUT:CAPS" title="VIPS_ARGUMENT_REQUIRED_INPUT">VIPS_ARGUMENT_REQUIRED_INPUT</a>
doc/reference/html/libvips-VipsArgument.html:#define             <a class="link" href="libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-INPUT:CAPS" title="VIPS_ARGUMENT_OPTIONAL_INPUT">VIPS_ARGUMENT_OPTIONAL_INPUT</a>
doc/reference/html/libvips-VipsArgument.html:#define             <a class="link" href="libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-OUTPUT:CAPS" title="VIPS_ARGUMENT_REQUIRED_OUTPUT">VIPS_ARGUMENT_REQUIRED_OUTPUT</a>
doc/reference/html/libvips-VipsArgument.html:#define             <a class="link" href="libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-OUTPUT:CAPS" title="VIPS_ARGUMENT_OPTIONAL_OUTPUT">VIPS_ARGUMENT_OPTIONAL_OUTPUT</a>
doc/reference/html/libvips-VipsArgument.html:                    <a class="link" href="libvips-VipsArgument.html#VipsArgument" title="VipsArgument">VipsArgument</a>;
doc/reference/html/libvips-VipsArgument.html:                    <a class="link" href="libvips-VipsArgument.html#VipsArgumentClass" title="VipsArgumentClass">VipsArgumentClass</a>;
doc/reference/html/libvips-VipsArgument.html:                    <a class="link" href="libvips-VipsArgument.html#VipsArgumentInstance" title="VipsArgumentInstance">VipsArgumentInstance</a>;
doc/reference/html/libvips-VipsArgument.html:typedef             <a class="link" href="libvips-VipsArgument.html#VipsArgumentTable" title="VipsArgumentTable">VipsArgumentTable</a>;
doc/reference/html/libvips-VipsArgument.html:<a class="link" href="libvips-VipsArgument.html#VipsArgumentInstance" title="VipsArgumentInstance"><span class="returnvalue">VipsArgumentInstance</span></a> * <a class="link" href="libvips-VipsArgument.html#vips--argument-get-instance" title="vips__argument_get_instance ()">vips__argument_get_instance</a>      (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentClass" title="VipsArgumentClass"><span class="type">VipsArgumentClass</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *Param2</code></em>);
doc/reference/html/libvips-VipsArgument.html:<a class="link" href="libvips-VipsArgument.html#VipsArgument" title="VipsArgument"><span class="returnvalue">VipsArgument</span></a> *      <a class="link" href="libvips-VipsArgument.html#vips--argument-table-lookup" title="vips__argument_table_lookup ()">vips__argument_table_lookup</a>         (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentTable" title="VipsArgumentTable"><span class="type">VipsArgumentTable</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-VipsArgument.html#VipsArgumentMapFn" title="VipsArgumentMapFn ()">*VipsArgumentMapFn</a>)                (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentClass" title="VipsArgumentClass"><span class="type">VipsArgumentClass</span></a> *Param3</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentInstance" title="VipsArgumentInstance"><span class="type">VipsArgumentInstance</span></a> *Param4</code></em>,
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-VipsArgument.html#vips-argument-map" title="vips_argument_map ()">vips_argument_map</a>                   (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentMapFn" title="VipsArgumentMapFn ()"><span class="type">VipsArgumentMapFn</span></a> fn</code></em>,
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-VipsArgument.html#vips-object-set-property" title="vips_object_set_property ()">vips_object_set_property</a>            (<em class="parameter"><code><span class="type">GObject</span> *gobject</code></em>,
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-VipsArgument.html#vips-object-get-property" title="vips_object_get_property ()">vips_object_get_property</a>            (<em class="parameter"><code><span class="type">GObject</span> *gobject</code></em>,
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-VipsArgument.html#vips-object-build" title="vips_object_build ()">vips_object_build</a>                   (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>);
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-VipsArgument.html#vips-object-print-class" title="vips_object_print_class ()">vips_object_print_class</a>             (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass"><span class="type">VipsObjectClass</span></a> *klass</code></em>);
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-VipsArgument.html#vips-object-print" title="vips_object_print ()">vips_object_print</a>                   (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>);
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-VipsArgument.html#vips-object-class-install-argument" title="vips_object_class_install_argument ()">vips_object_class_install_argument</a>  (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass"><span class="type">VipsObjectClass</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentFlags" title="enum VipsArgumentFlags"><span class="type">VipsArgumentFlags</span></a> flags</code></em>,
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">void</span> *              (<a class="link" href="libvips-VipsArgument.html#VipsObjectSetArguments" title="VipsObjectSetArguments ()">*VipsObjectSetArguments</a>)           (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:<a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="returnvalue">VipsObject</span></a> *        <a class="link" href="libvips-VipsArgument.html#vips-object-new" title="vips_object_new ()">vips_object_new</a>                     (<em class="parameter"><code><span class="type">GType</span> type</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObjectSetArguments" title="VipsObjectSetArguments ()"><span class="type">VipsObjectSetArguments</span></a> set</code></em>,
doc/reference/html/libvips-VipsArgument.html:<a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="returnvalue">VipsObject</span></a> *        <a class="link" href="libvips-VipsArgument.html#vips-object-new-from-string" title="vips_object_new_from_string ()">vips_object_new_from_string</a>         (<em class="parameter"><code>const <span class="type">char</span> *base</code></em>,
doc/reference/html/libvips-VipsArgument.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-VipsArgument.html#vips-object-to-string" title="vips_object_to_string ()">vips_object_to_string</a>               (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);
doc/reference/html/libvips-VipsArgument.html:<a name="libvips-VipsArgument.object-hierarchy"></a><h2>Object Hierarchy</h2>
doc/reference/html/libvips-VipsArgument.html:   +----VipsObject
doc/reference/html/libvips-VipsArgument.html:         +----<a class="link" href="VipsFormat.html" title="VipsFormat">VipsFormat</a>
doc/reference/html/libvips-VipsArgument.html:         +----<a class="link" href="VipsInterpolate.html" title="VipsInterpolate">VipsInterpolate</a>
doc/reference/html/libvips-VipsArgument.html:         +----<a class="link" href="VipsThreadState.html" title="VipsThreadState">VipsThreadState</a>
doc/reference/html/libvips-VipsArgument.html:<a name="libvips-VipsArgument.properties"></a><h2>Properties</h2>
doc/reference/html/libvips-VipsArgument.html:  "<a class="link" href="libvips-VipsArgument.html#VipsObject--description" title='The "description" property'>description</a>"              <span class="type">gchar</span>*                : Read / Write
doc/reference/html/libvips-VipsArgument.html:  "<a class="link" href="libvips-VipsArgument.html#VipsObject--nickname" title='The "nickname" property'>nickname</a>"                 <span class="type">gchar</span>*                : Read / Write
doc/reference/html/libvips-VipsArgument.html:<a name="libvips-VipsArgument.description"></a><h2>Description</h2>
doc/reference/html/libvips-VipsArgument.html:<a name="libvips-VipsArgument.details"></a><h2>Details</h2>
doc/reference/html/libvips-VipsArgument.html:<a name="VipsObject-struct"></a><h3>VipsObject</h3>
doc/reference/html/libvips-VipsArgument.html:	 * from a hash :-(
doc/reference/html/libvips-VipsArgument.html:<a name="VIPS-ARGUMENT-REQUIRED-INPUT:CAPS"></a><h3>VIPS_ARGUMENT_REQUIRED_INPUT</h3>
doc/reference/html/libvips-VipsArgument.html:<a name="VIPS-ARGUMENT-OPTIONAL-INPUT:CAPS"></a><h3>VIPS_ARGUMENT_OPTIONAL_INPUT</h3>
doc/reference/html/libvips-VipsArgument.html:<a name="VIPS-ARGUMENT-REQUIRED-OUTPUT:CAPS"></a><h3>VIPS_ARGUMENT_REQUIRED_OUTPUT</h3>
doc/reference/html/libvips-VipsArgument.html:<a name="VIPS-ARGUMENT-OPTIONAL-OUTPUT:CAPS"></a><h3>VIPS_ARGUMENT_OPTIONAL_OUTPUT</h3>
doc/reference/html/libvips-VipsArgument.html:<a name="vips--argument-get-instance"></a><h3>vips__argument_get_instance ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><a class="link" href="libvips-VipsArgument.html#VipsArgumentInstance" title="VipsArgumentInstance"><span class="returnvalue">VipsArgumentInstance</span></a> * vips__argument_get_instance      (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentClass" title="VipsArgumentClass"><span class="type">VipsArgumentClass</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *Param2</code></em>);</pre>
doc/reference/html/libvips-VipsArgument.html:<a name="vips--argument-table-lookup"></a><h3>vips__argument_table_lookup ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><a class="link" href="libvips-VipsArgument.html#VipsArgument" title="VipsArgument"><span class="returnvalue">VipsArgument</span></a> *      vips__argument_table_lookup         (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentTable" title="VipsArgumentTable"><span class="type">VipsArgumentTable</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><span class="returnvalue">void</span> *              (*VipsArgumentMapFn)                (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentClass" title="VipsArgumentClass"><span class="type">VipsArgumentClass</span></a> *Param3</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentInstance" title="VipsArgumentInstance"><span class="type">VipsArgumentInstance</span></a> *Param4</code></em>,
doc/reference/html/libvips-VipsArgument.html:<a name="vips-argument-map"></a><h3>vips_argument_map ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><span class="returnvalue">void</span> *              vips_argument_map                   (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentMapFn" title="VipsArgumentMapFn ()"><span class="type">VipsArgumentMapFn</span></a> fn</code></em>,
doc/reference/html/libvips-VipsArgument.html:<a name="vips-object-set-property"></a><h3>vips_object_set_property ()</h3>
doc/reference/html/libvips-VipsArgument.html:<a name="vips-object-get-property"></a><h3>vips_object_get_property ()</h3>
doc/reference/html/libvips-VipsArgument.html:<a name="vips-object-build"></a><h3>vips_object_build ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><span class="returnvalue">int</span>                 vips_object_build                   (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>);</pre>
doc/reference/html/libvips-VipsArgument.html:<a name="vips-object-print-class"></a><h3>vips_object_print_class ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_object_print_class             (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass"><span class="type">VipsObjectClass</span></a> *klass</code></em>);</pre>
doc/reference/html/libvips-VipsArgument.html:<a name="vips-object-print"></a><h3>vips_object_print ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_object_print                   (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>);</pre>
doc/reference/html/libvips-VipsArgument.html:<a name="vips-object-class-install-argument"></a><h3>vips_object_class_install_argument ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_object_class_install_argument  (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObjectClass" title="VipsObjectClass"><span class="type">VipsObjectClass</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsArgumentFlags" title="enum VipsArgumentFlags"><span class="type">VipsArgumentFlags</span></a> flags</code></em>,
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><span class="returnvalue">void</span> *              (*VipsObjectSetArguments)           (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *Param1</code></em>,
doc/reference/html/libvips-VipsArgument.html:<a name="vips-object-new"></a><h3>vips_object_new ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="returnvalue">VipsObject</span></a> *        vips_object_new                     (<em class="parameter"><code><span class="type">GType</span> type</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObjectSetArguments" title="VipsObjectSetArguments ()"><span class="type">VipsObjectSetArguments</span></a> set</code></em>,
doc/reference/html/libvips-VipsArgument.html:<a name="vips-object-new-from-string"></a><h3>vips_object_new_from_string ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="returnvalue">VipsObject</span></a> *        vips_object_new_from_string         (<em class="parameter"><code>const <span class="type">char</span> *base</code></em>,
doc/reference/html/libvips-VipsArgument.html:<a name="vips-object-to-string"></a><h3>vips_object_to_string ()</h3>
doc/reference/html/libvips-VipsArgument.html:<pre class="programlisting"><span class="returnvalue">void</span>                vips_object_to_string               (<em class="parameter"><code><a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a> *object</code></em>,
doc/reference/html/libvips-VipsArgument.html:                                                         <em class="parameter"><code><a class="link" href="libvips-buf.html#VipsBuf" title="VipsBuf"><span class="type">VipsBuf</span></a> *buf</code></em>);</pre>
doc/reference/html/libvips-VipsArgument.html:<a name="libvips-VipsArgument.property-details"></a><h2>Property Details</h2>
doc/reference/html/libvips-VipsArgument.html:<a name="VipsObject--description"></a><h3>The <code class="literal">"description"</code> property</h3>
doc/reference/html/libvips-VipsArgument.html:<a name="VipsObject--nickname"></a><h3>The <code class="literal">"nickname"</code> property</h3>
doc/reference/html/libvips-VipsArgument.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips.devhelp:<?xml version="1.0" encoding="utf-8" standalone="no"?>
doc/reference/html/libvips.devhelp:<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
doc/reference/html/libvips.devhelp:      <sub name="image" link="libvips-image.html"/>
doc/reference/html/libvips.devhelp:      <sub name="header" link="libvips-header.html"/>
doc/reference/html/libvips.devhelp:      <sub name="check" link="libvips-check.html"/>
doc/reference/html/libvips.devhelp:      <sub name="callback" link="libvips-callback.html"/>
doc/reference/html/libvips.devhelp:      <sub name="meta" link="libvips-meta.html"/>
doc/reference/html/libvips.devhelp:      <sub name="region" link="libvips-region.html"/>
doc/reference/html/libvips.devhelp:      <sub name="generate" link="libvips-generate.html"/>
doc/reference/html/libvips.devhelp:      <sub name="error" link="libvips-error.html"/>
doc/reference/html/libvips.devhelp:      <sub name="memory" link="libvips-memory.html"/>
doc/reference/html/libvips.devhelp:      <sub name="buf" link="libvips-buf.html"/>
doc/reference/html/libvips.devhelp:      <sub name="arithmetic" link="libvips-arithmetic.html"/>
doc/reference/html/libvips.devhelp:      <sub name="boolean" link="libvips-boolean.html"/>
doc/reference/html/libvips.devhelp:      <sub name="relational" link="libvips-relational.html"/>
doc/reference/html/libvips.devhelp:      <sub name="colour" link="libvips-colour.html"/>
doc/reference/html/libvips.devhelp:      <sub name="conversion" link="libvips-conversion.html"/>
doc/reference/html/libvips.devhelp:      <sub name="convolution" link="libvips-convolution.html"/>
doc/reference/html/libvips.devhelp:      <sub name="freq_filt" link="libvips-freq-filt.html"/>
doc/reference/html/libvips.devhelp:      <sub name="histograms_lut" link="libvips-histograms-lut.html"/>
doc/reference/html/libvips.devhelp:      <sub name="morphology" link="libvips-morphology.html"/>
doc/reference/html/libvips.devhelp:      <sub name="resample" link="libvips-resample.html"/>
doc/reference/html/libvips.devhelp:      <sub name="mask" link="libvips-mask.html"/>
doc/reference/html/libvips.devhelp:      <sub name="inplace" link="libvips-inplace.html"/>
doc/reference/html/libvips.devhelp:      <sub name="mosaicing" link="libvips-mosaicing.html"/>
doc/reference/html/libvips.devhelp:      <sub name="other" link="libvips-other.html"/>
doc/reference/html/libvips.devhelp:      <sub name="video" link="libvips-video.html"/>
doc/reference/html/libvips.devhelp:      <sub name="cimg_funcs" link="libvips-cimg-funcs.html"/>
doc/reference/html/libvips.devhelp:      <sub name="VipsArgument" link="libvips-VipsArgument.html"/>
doc/reference/html/libvips.devhelp:      <sub name="transform" link="libvips-transform.html"/>
doc/reference/html/libvips.devhelp:      <sub name="util" link="libvips-util.html"/>
doc/reference/html/libvips.devhelp:      <sub name="version" link="libvips-version.html"/>
doc/reference/html/libvips.devhelp:      <sub name="type" link="libvips-type.html"/>
doc/reference/html/libvips.devhelp:      <sub name="rect" link="libvips-rect.html"/>
doc/reference/html/libvips.devhelp:      <sub name="semaphore" link="libvips-semaphore.html"/>
doc/reference/html/libvips.devhelp:      <sub name="dispatch" link="libvips-dispatch.html"/>
doc/reference/html/libvips.devhelp:    <sub name="Object Hierarchy" link="object-tree.html"/>
doc/reference/html/libvips.devhelp:    <sub name="API Index" link="api-index-full.html"/>
doc/reference/html/libvips.devhelp:    <function name="IM_MAGIC_INTEL" link="libvips-image.html#IM-MAGIC-INTEL:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_MAGIC_SPARC" link="libvips-image.html#IM-MAGIC-SPARC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="enum VipsDemandStyle" link="libvips-image.html#VipsDemandStyle"/>
doc/reference/html/libvips.devhelp:    <function name="enum VipsType" link="libvips-image.html#VipsType"/>
doc/reference/html/libvips.devhelp:    <function name="enum VipsBandFmt" link="libvips-image.html#VipsBandFmt"/>
doc/reference/html/libvips.devhelp:    <function name="enum VipsCoding" link="libvips-image.html#VipsCoding"/>
doc/reference/html/libvips.devhelp:    <function name="VipsProgress" link="libvips-image.html#VipsProgress"/>
doc/reference/html/libvips.devhelp:    <function name="VipsImage" link="libvips-image.html#VipsImage"/>
doc/reference/html/libvips.devhelp:    <function name="IM_IMAGE_SIZEOF_ELEMENT()" link="libvips-image.html#IM-IMAGE-SIZEOF-ELEMENT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_IMAGE_SIZEOF_PEL()" link="libvips-image.html#IM-IMAGE-SIZEOF-PEL:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_IMAGE_SIZEOF_LINE()" link="libvips-image.html#IM-IMAGE-SIZEOF-LINE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_IMAGE_N_ELEMENTS()" link="libvips-image.html#IM-IMAGE-N-ELEMENTS:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_IMAGE_ADDR()" link="libvips-image.html#IM-IMAGE-ADDR:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_get_argv0 ()" link="libvips-image.html#im-get-argv0"/>
doc/reference/html/libvips.devhelp:    <function name="im_init_world ()" link="libvips-image.html#im-init-world"/>
doc/reference/html/libvips.devhelp:    <function name="im_get_option_group ()" link="libvips-image.html#im-get-option-group"/>
doc/reference/html/libvips.devhelp:    <function name="im_version_string ()" link="libvips-image.html#im-version-string"/>
doc/reference/html/libvips.devhelp:    <function name="im_version ()" link="libvips-image.html#im-version"/>
doc/reference/html/libvips.devhelp:    <function name="im_guess_prefix ()" link="libvips-image.html#im-guess-prefix"/>
doc/reference/html/libvips.devhelp:    <function name="im_guess_libdir ()" link="libvips-image.html#im-guess-libdir"/>
doc/reference/html/libvips.devhelp:    <function name="im_open ()" link="libvips-image.html#im-open"/>
doc/reference/html/libvips.devhelp:    <function name="im_open_local()" link="libvips-image.html#im-open-local"/>
doc/reference/html/libvips.devhelp:    <function name="im_open_local_array()" link="libvips-image.html#im-open-local-array"/>
doc/reference/html/libvips.devhelp:    <function name="im_close ()" link="libvips-image.html#im-close"/>
doc/reference/html/libvips.devhelp:    <function name="im_invalidate ()" link="libvips-image.html#im-invalidate"/>
doc/reference/html/libvips.devhelp:    <function name="im_initdesc ()" link="libvips-image.html#im-initdesc"/>
doc/reference/html/libvips.devhelp:    <function name="im_cp_desc ()" link="libvips-image.html#im-cp-desc"/>
doc/reference/html/libvips.devhelp:    <function name="im_cp_descv ()" link="libvips-image.html#im-cp-descv"/>
doc/reference/html/libvips.devhelp:    <function name="im_cp_desc_array ()" link="libvips-image.html#im-cp-desc-array"/>
doc/reference/html/libvips.devhelp:    <function name="im_binfile ()" link="libvips-image.html#im-binfile"/>
doc/reference/html/libvips.devhelp:    <function name="im_image ()" link="libvips-image.html#im-image"/>
doc/reference/html/libvips.devhelp:    <function name="im_header_int ()" link="libvips-header.html#im-header-int"/>
doc/reference/html/libvips.devhelp:    <function name="im_header_double ()" link="libvips-header.html#im-header-double"/>
doc/reference/html/libvips.devhelp:    <function name="im_header_string ()" link="libvips-header.html#im-header-string"/>
doc/reference/html/libvips.devhelp:    <function name="im_header_as_string ()" link="libvips-header.html#im-header-as-string"/>
doc/reference/html/libvips.devhelp:    <function name="im_header_get_typeof ()" link="libvips-header.html#im-header-get-typeof"/>
doc/reference/html/libvips.devhelp:    <function name="im_header_get ()" link="libvips-header.html#im-header-get"/>
doc/reference/html/libvips.devhelp:    <function name="im_header_map_fn ()" link="libvips-header.html#im-header-map-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_header_map ()" link="libvips-header.html#im-header-map"/>
doc/reference/html/libvips.devhelp:    <function name="im_histlin ()" link="libvips-header.html#im-histlin"/>
doc/reference/html/libvips.devhelp:    <function name="im_updatehist ()" link="libvips-header.html#im-updatehist"/>
doc/reference/html/libvips.devhelp:    <function name="im_history_get ()" link="libvips-header.html#im-history-get"/>
doc/reference/html/libvips.devhelp:    <function name="im_rwcheck ()" link="libvips-check.html#im-rwcheck"/>
doc/reference/html/libvips.devhelp:    <function name="im_iocheck ()" link="libvips-check.html#im-iocheck"/>
doc/reference/html/libvips.devhelp:    <function name="im_incheck ()" link="libvips-check.html#im-incheck"/>
doc/reference/html/libvips.devhelp:    <function name="im_outcheck ()" link="libvips-check.html#im-outcheck"/>
doc/reference/html/libvips.devhelp:    <function name="im_piocheck ()" link="libvips-check.html#im-piocheck"/>
doc/reference/html/libvips.devhelp:    <function name="im_pincheck ()" link="libvips-check.html#im-pincheck"/>
doc/reference/html/libvips.devhelp:    <function name="im_poutcheck ()" link="libvips-check.html#im-poutcheck"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_uncoded ()" link="libvips-check.html#im-check-uncoded"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_coding_known ()" link="libvips-check.html#im-check-coding-known"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_coding_labq ()" link="libvips-check.html#im-check-coding-labq"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_coding_rad ()" link="libvips-check.html#im-check-coding-rad"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_coding_same ()" link="libvips-check.html#im-check-coding-same"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_mono ()" link="libvips-check.html#im-check-mono"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_bands_1or3 ()" link="libvips-check.html#im-check-bands-1or3"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_bands ()" link="libvips-check.html#im-check-bands"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_bands_1orn ()" link="libvips-check.html#im-check-bands-1orn"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_bands_same ()" link="libvips-check.html#im-check-bands-same"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_bandno ()" link="libvips-check.html#im-check-bandno"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_int ()" link="libvips-check.html#im-check-int"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_uint ()" link="libvips-check.html#im-check-uint"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_uintorf ()" link="libvips-check.html#im-check-uintorf"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_noncomplex ()" link="libvips-check.html#im-check-noncomplex"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_complex ()" link="libvips-check.html#im-check-complex"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_format ()" link="libvips-check.html#im-check-format"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_u8or16 ()" link="libvips-check.html#im-check-u8or16"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_8or16 ()" link="libvips-check.html#im-check-8or16"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_u8or16orf ()" link="libvips-check.html#im-check-u8or16orf"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_format_same ()" link="libvips-check.html#im-check-format-same"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_size_same ()" link="libvips-check.html#im-check-size-same"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_vector ()" link="libvips-check.html#im-check-vector"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_hist ()" link="libvips-check.html#im-check-hist"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_imask ()" link="libvips-check.html#im-check-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_check_dmask ()" link="libvips-check.html#im-check-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="vips_bandfmt_isint ()" link="libvips-check.html#vips-bandfmt-isint"/>
doc/reference/html/libvips.devhelp:    <function name="vips_bandfmt_isuint ()" link="libvips-check.html#vips-bandfmt-isuint"/>
doc/reference/html/libvips.devhelp:    <function name="vips_bandfmt_isfloat ()" link="libvips-check.html#vips-bandfmt-isfloat"/>
doc/reference/html/libvips.devhelp:    <function name="vips_bandfmt_iscomplex ()" link="libvips-check.html#vips-bandfmt-iscomplex"/>
doc/reference/html/libvips.devhelp:    <function name="im_isfile ()" link="libvips-check.html#im-isfile"/>
doc/reference/html/libvips.devhelp:    <function name="im_ispartial ()" link="libvips-check.html#im-ispartial"/>
doc/reference/html/libvips.devhelp:    <function name="im_isMSBfirst ()" link="libvips-check.html#im-isMSBfirst"/>
doc/reference/html/libvips.devhelp:    <function name="im_callback_fn ()" link="libvips-callback.html#im-callback-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_add_close_callback ()" link="libvips-callback.html#im-add-close-callback"/>
doc/reference/html/libvips.devhelp:    <function name="im_add_preclose_callback ()" link="libvips-callback.html#im-add-preclose-callback"/>
doc/reference/html/libvips.devhelp:    <function name="im_add_postclose_callback ()" link="libvips-callback.html#im-add-postclose-callback"/>
doc/reference/html/libvips.devhelp:    <function name="im_add_written_callback ()" link="libvips-callback.html#im-add-written-callback"/>
doc/reference/html/libvips.devhelp:    <function name="im_add_evalstart_callback ()" link="libvips-callback.html#im-add-evalstart-callback"/>
doc/reference/html/libvips.devhelp:    <function name="im_add_eval_callback ()" link="libvips-callback.html#im-add-eval-callback"/>
doc/reference/html/libvips.devhelp:    <function name="im_add_evalend_callback ()" link="libvips-callback.html#im-add-evalend-callback"/>
doc/reference/html/libvips.devhelp:    <function name="im_add_invalidate_callback ()" link="libvips-callback.html#im-add-invalidate-callback"/>
doc/reference/html/libvips.devhelp:    <function name="IM_META_EXIF_NAME" link="libvips-meta.html#IM-META-EXIF-NAME:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_META_ICC_NAME" link="libvips-meta.html#IM-META-ICC-NAME:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_META_XML" link="libvips-meta.html#IM-META-XML:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_META_RESOLUTION_UNIT" link="libvips-meta.html#IM-META-RESOLUTION-UNIT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_SAVE_STRING" link="libvips-meta.html#IM-TYPE-SAVE-STRING:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_save_string_get_type ()" link="libvips-meta.html#im-save-string-get-type"/>
doc/reference/html/libvips.devhelp:    <function name="im_save_string_get ()" link="libvips-meta.html#im-save-string-get"/>
doc/reference/html/libvips.devhelp:    <function name="im_save_string_set ()" link="libvips-meta.html#im-save-string-set"/>
doc/reference/html/libvips.devhelp:    <function name="im_save_string_setf ()" link="libvips-meta.html#im-save-string-setf"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_AREA" link="libvips-meta.html#IM-TYPE-AREA:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_area_get_type ()" link="libvips-meta.html#im-area-get-type"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_REF_STRING" link="libvips-meta.html#IM-TYPE-REF-STRING:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_ref_string_get_type ()" link="libvips-meta.html#im-ref-string-get-type"/>
doc/reference/html/libvips.devhelp:    <function name="im_ref_string_set ()" link="libvips-meta.html#im-ref-string-set"/>
doc/reference/html/libvips.devhelp:    <function name="im_ref_string_get ()" link="libvips-meta.html#im-ref-string-get"/>
doc/reference/html/libvips.devhelp:    <function name="im_ref_string_get_length ()" link="libvips-meta.html#im-ref-string-get-length"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_BLOB" link="libvips-meta.html#IM-TYPE-BLOB:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_blob_get_type ()" link="libvips-meta.html#im-blob-get-type"/>
doc/reference/html/libvips.devhelp:    <function name="im_blob_get ()" link="libvips-meta.html#im-blob-get"/>
doc/reference/html/libvips.devhelp:    <function name="im_blob_set ()" link="libvips-meta.html#im-blob-set"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_set ()" link="libvips-meta.html#im-meta-set"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_remove ()" link="libvips-meta.html#im-meta-remove"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_get ()" link="libvips-meta.html#im-meta-get"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_get_typeof ()" link="libvips-meta.html#im-meta-get-typeof"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_set_int ()" link="libvips-meta.html#im-meta-set-int"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_get_int ()" link="libvips-meta.html#im-meta-get-int"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_set_double ()" link="libvips-meta.html#im-meta-set-double"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_get_double ()" link="libvips-meta.html#im-meta-get-double"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_set_area ()" link="libvips-meta.html#im-meta-set-area"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_get_area ()" link="libvips-meta.html#im-meta-get-area"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_set_string ()" link="libvips-meta.html#im-meta-set-string"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_get_string ()" link="libvips-meta.html#im-meta-get-string"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_set_blob ()" link="libvips-meta.html#im-meta-set-blob"/>
doc/reference/html/libvips.devhelp:    <function name="im_meta_get_blob ()" link="libvips-meta.html#im-meta-get-blob"/>
doc/reference/html/libvips.devhelp:    <function name="REGION" link="libvips-region.html#REGION:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_create ()" link="libvips-region.html#im-region-create"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_free ()" link="libvips-region.html#im-region-free"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_buffer ()" link="libvips-region.html#im-region-buffer"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_image ()" link="libvips-region.html#im-region-image"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_region ()" link="libvips-region.html#im-region-region"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_equalsregion ()" link="libvips-region.html#im-region-equalsregion"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_position ()" link="libvips-region.html#im-region-position"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_paint ()" link="libvips-region.html#im-region-paint"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_black ()" link="libvips-region.html#im-region-black"/>
doc/reference/html/libvips.devhelp:    <function name="im_region_copy ()" link="libvips-region.html#im-region-copy"/>
doc/reference/html/libvips.devhelp:    <function name="IM_REGION_LSKIP()" link="libvips-region.html#IM-REGION-LSKIP:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_REGION_N_ELEMENTS()" link="libvips-region.html#IM-REGION-N-ELEMENTS:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_REGION_SIZEOF_LINE()" link="libvips-region.html#IM-REGION-SIZEOF-LINE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_REGION_ADDR()" link="libvips-region.html#IM-REGION-ADDR:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_REGION_ADDR_TOPLEFT()" link="libvips-region.html#IM-REGION-ADDR-TOPLEFT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_prepare ()" link="libvips-generate.html#im-prepare"/>
doc/reference/html/libvips.devhelp:    <function name="im_prepare_to ()" link="libvips-generate.html#im-prepare-to"/>
doc/reference/html/libvips.devhelp:    <function name="im_start_fn ()" link="libvips-generate.html#im-start-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_generate_fn ()" link="libvips-generate.html#im-generate-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_stop_fn ()" link="libvips-generate.html#im-stop-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_start_one ()" link="libvips-generate.html#im-start-one"/>
doc/reference/html/libvips.devhelp:    <function name="im_stop_one ()" link="libvips-generate.html#im-stop-one"/>
doc/reference/html/libvips.devhelp:    <function name="im_start_many ()" link="libvips-generate.html#im-start-many"/>
doc/reference/html/libvips.devhelp:    <function name="im_stop_many ()" link="libvips-generate.html#im-stop-many"/>
doc/reference/html/libvips.devhelp:    <function name="im_allocate_input_array ()" link="libvips-generate.html#im-allocate-input-array"/>
doc/reference/html/libvips.devhelp:    <function name="im_generate ()" link="libvips-generate.html#im-generate"/>
doc/reference/html/libvips.devhelp:    <function name="im_iterate ()" link="libvips-generate.html#im-iterate"/>
doc/reference/html/libvips.devhelp:    <function name="im_demand_hint_array ()" link="libvips-generate.html#im-demand-hint-array"/>
doc/reference/html/libvips.devhelp:    <function name="im_demand_hint ()" link="libvips-generate.html#im-demand-hint"/>
doc/reference/html/libvips.devhelp:    <function name="im_wrapone_fn ()" link="libvips-generate.html#im-wrapone-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_wrapone ()" link="libvips-generate.html#im-wrapone"/>
doc/reference/html/libvips.devhelp:    <function name="im_wraptwo_fn ()" link="libvips-generate.html#im-wraptwo-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_wraptwo ()" link="libvips-generate.html#im-wraptwo"/>
doc/reference/html/libvips.devhelp:    <function name="im_wrapmany_fn ()" link="libvips-generate.html#im-wrapmany-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_wrapmany ()" link="libvips-generate.html#im-wrapmany"/>
doc/reference/html/libvips.devhelp:    <function name="im_render_priority ()" link="libvips-generate.html#im-render-priority"/>
doc/reference/html/libvips.devhelp:    <function name="im_cache ()" link="libvips-generate.html#im-cache"/>
doc/reference/html/libvips.devhelp:    <function name="im_setupout ()" link="libvips-generate.html#im-setupout"/>
doc/reference/html/libvips.devhelp:    <function name="im_writeline ()" link="libvips-generate.html#im-writeline"/>
doc/reference/html/libvips.devhelp:    <function name="VipsThreadState" link="VipsThreadState.html#VipsThreadState-struct"/>
doc/reference/html/libvips.devhelp:    <function name="vips_thread_state_set ()" link="VipsThreadState.html#vips-thread-state-set"/>
doc/reference/html/libvips.devhelp:    <function name="vips_thread_state_new ()" link="VipsThreadState.html#vips-thread-state-new"/>
doc/reference/html/libvips.devhelp:    <function name="vips_threadpool_run ()" link="VipsThreadState.html#vips-threadpool-run"/>
doc/reference/html/libvips.devhelp:    <function name="vips_get_tile_size ()" link="VipsThreadState.html#vips-get-tile-size"/>
doc/reference/html/libvips.devhelp:    <function name="vips_sink_disc ()" link="VipsThreadState.html#vips-sink-disc"/>
doc/reference/html/libvips.devhelp:    <function name="vips_sink ()" link="VipsThreadState.html#vips-sink"/>
doc/reference/html/libvips.devhelp:    <function name="vips_sink_tile ()" link="VipsThreadState.html#vips-sink-tile"/>
doc/reference/html/libvips.devhelp:    <function name="vips_sink_screen ()" link="VipsThreadState.html#vips-sink-screen"/>
doc/reference/html/libvips.devhelp:    <function name="vips_sink_memory ()" link="VipsThreadState.html#vips-sink-memory"/>
doc/reference/html/libvips.devhelp:    <function name="im__print_renders ()" link="VipsThreadState.html#im--print-renders"/>
doc/reference/html/libvips.devhelp:    <function name="im_concurrency_set ()" link="VipsThreadState.html#im-concurrency-set"/>
doc/reference/html/libvips.devhelp:    <function name="im_concurrency_get ()" link="VipsThreadState.html#im-concurrency-get"/>
doc/reference/html/libvips.devhelp:    <function name="im_error_buffer ()" link="libvips-error.html#im-error-buffer"/>
doc/reference/html/libvips.devhelp:    <function name="im_error_clear ()" link="libvips-error.html#im-error-clear"/>
doc/reference/html/libvips.devhelp:    <function name="im_error ()" link="libvips-error.html#im-error"/>
doc/reference/html/libvips.devhelp:    <function name="im_verror ()" link="libvips-error.html#im-verror"/>
doc/reference/html/libvips.devhelp:    <function name="im_error_system ()" link="libvips-error.html#im-error-system"/>
doc/reference/html/libvips.devhelp:    <function name="im_verror_system ()" link="libvips-error.html#im-verror-system"/>
doc/reference/html/libvips.devhelp:    <function name="im_warn ()" link="libvips-error.html#im-warn"/>
doc/reference/html/libvips.devhelp:    <function name="im_vwarn ()" link="libvips-error.html#im-vwarn"/>
doc/reference/html/libvips.devhelp:    <function name="im_diag ()" link="libvips-error.html#im-diag"/>
doc/reference/html/libvips.devhelp:    <function name="im_vdiag ()" link="libvips-error.html#im-vdiag"/>
doc/reference/html/libvips.devhelp:    <function name="error_exit ()" link="libvips-error.html#error-exit"/>
doc/reference/html/libvips.devhelp:    <function name="IM_NEW()" link="libvips-memory.html#IM-NEW:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_ARRAY()" link="libvips-memory.html#IM-ARRAY:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_malloc ()" link="libvips-memory.html#im-malloc"/>
doc/reference/html/libvips.devhelp:    <function name="im_free ()" link="libvips-memory.html#im-free"/>
doc/reference/html/libvips.devhelp:    <function name="VipsBuf" link="libvips-buf.html#VipsBuf"/>
doc/reference/html/libvips.devhelp:    <function name="VIPS_BUF_STATIC()" link="libvips-buf.html#VIPS-BUF-STATIC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_rewind ()" link="libvips-buf.html#vips-buf-rewind"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_destroy ()" link="libvips-buf.html#vips-buf-destroy"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_init ()" link="libvips-buf.html#vips-buf-init"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_set_static ()" link="libvips-buf.html#vips-buf-set-static"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_set_dynamic ()" link="libvips-buf.html#vips-buf-set-dynamic"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_init_static ()" link="libvips-buf.html#vips-buf-init-static"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_init_dynamic ()" link="libvips-buf.html#vips-buf-init-dynamic"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_appendns ()" link="libvips-buf.html#vips-buf-appendns"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_appends ()" link="libvips-buf.html#vips-buf-appends"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_appendf ()" link="libvips-buf.html#vips-buf-appendf"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_vappendf ()" link="libvips-buf.html#vips-buf-vappendf"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_appendc ()" link="libvips-buf.html#vips-buf-appendc"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_appendsc ()" link="libvips-buf.html#vips-buf-appendsc"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_appendgv ()" link="libvips-buf.html#vips-buf-appendgv"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_removec ()" link="libvips-buf.html#vips-buf-removec"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_change ()" link="libvips-buf.html#vips-buf-change"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_is_empty ()" link="libvips-buf.html#vips-buf-is-empty"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_is_full ()" link="libvips-buf.html#vips-buf-is-full"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_all ()" link="libvips-buf.html#vips-buf-all"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_firstline ()" link="libvips-buf.html#vips-buf-firstline"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_appendg ()" link="libvips-buf.html#vips-buf-appendg"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_appendd ()" link="libvips-buf.html#vips-buf-appendd"/>
doc/reference/html/libvips.devhelp:    <function name="vips_buf_len ()" link="libvips-buf.html#vips-buf-len"/>
doc/reference/html/libvips.devhelp:    <function name="im_measure_area ()" link="libvips-arithmetic.html#im-measure-area"/>
doc/reference/html/libvips.devhelp:    <function name="im_stats ()" link="libvips-arithmetic.html#im-stats"/>
doc/reference/html/libvips.devhelp:    <function name="im_max ()" link="libvips-arithmetic.html#im-max"/>
doc/reference/html/libvips.devhelp:    <function name="im_min ()" link="libvips-arithmetic.html#im-min"/>
doc/reference/html/libvips.devhelp:    <function name="im_avg ()" link="libvips-arithmetic.html#im-avg"/>
doc/reference/html/libvips.devhelp:    <function name="im_deviate ()" link="libvips-arithmetic.html#im-deviate"/>
doc/reference/html/libvips.devhelp:    <function name="im_maxpos ()" link="libvips-arithmetic.html#im-maxpos"/>
doc/reference/html/libvips.devhelp:    <function name="im_minpos ()" link="libvips-arithmetic.html#im-minpos"/>
doc/reference/html/libvips.devhelp:    <function name="im_maxpos_avg ()" link="libvips-arithmetic.html#im-maxpos-avg"/>
doc/reference/html/libvips.devhelp:    <function name="im_maxpos_vec ()" link="libvips-arithmetic.html#im-maxpos-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_minpos_vec ()" link="libvips-arithmetic.html#im-minpos-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_bandmean ()" link="libvips-arithmetic.html#im-bandmean"/>
doc/reference/html/libvips.devhelp:    <function name="im_add ()" link="libvips-arithmetic.html#im-add"/>
doc/reference/html/libvips.devhelp:    <function name="im_subtract ()" link="libvips-arithmetic.html#im-subtract"/>
doc/reference/html/libvips.devhelp:    <function name="im_invert ()" link="libvips-arithmetic.html#im-invert"/>
doc/reference/html/libvips.devhelp:    <function name="im_lintra ()" link="libvips-arithmetic.html#im-lintra"/>
doc/reference/html/libvips.devhelp:    <function name="im_lintra_vec ()" link="libvips-arithmetic.html#im-lintra-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_multiply ()" link="libvips-arithmetic.html#im-multiply"/>
doc/reference/html/libvips.devhelp:    <function name="im_divide ()" link="libvips-arithmetic.html#im-divide"/>
doc/reference/html/libvips.devhelp:    <function name="im_remainder ()" link="libvips-arithmetic.html#im-remainder"/>
doc/reference/html/libvips.devhelp:    <function name="im_remainder_vec ()" link="libvips-arithmetic.html#im-remainder-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_remainderconst ()" link="libvips-arithmetic.html#im-remainderconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_recomb ()" link="libvips-arithmetic.html#im-recomb"/>
doc/reference/html/libvips.devhelp:    <function name="im_sign ()" link="libvips-arithmetic.html#im-sign"/>
doc/reference/html/libvips.devhelp:    <function name="im_abs ()" link="libvips-arithmetic.html#im-abs"/>
doc/reference/html/libvips.devhelp:    <function name="im_floor ()" link="libvips-arithmetic.html#im-floor"/>
doc/reference/html/libvips.devhelp:    <function name="im_rint ()" link="libvips-arithmetic.html#im-rint"/>
doc/reference/html/libvips.devhelp:    <function name="im_ceil ()" link="libvips-arithmetic.html#im-ceil"/>
doc/reference/html/libvips.devhelp:    <function name="im_linreg ()" link="libvips-arithmetic.html#im-linreg"/>
doc/reference/html/libvips.devhelp:    <function name="im_point ()" link="libvips-arithmetic.html#im-point"/>
doc/reference/html/libvips.devhelp:    <function name="im_point_bilinear ()" link="libvips-arithmetic.html#im-point-bilinear"/>
doc/reference/html/libvips.devhelp:    <function name="im_powtra ()" link="libvips-arithmetic.html#im-powtra"/>
doc/reference/html/libvips.devhelp:    <function name="im_powtra_vec ()" link="libvips-arithmetic.html#im-powtra-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_exptra ()" link="libvips-arithmetic.html#im-exptra"/>
doc/reference/html/libvips.devhelp:    <function name="im_exp10tra ()" link="libvips-arithmetic.html#im-exp10tra"/>
doc/reference/html/libvips.devhelp:    <function name="im_expntra ()" link="libvips-arithmetic.html#im-expntra"/>
doc/reference/html/libvips.devhelp:    <function name="im_expntra_vec ()" link="libvips-arithmetic.html#im-expntra-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_logtra ()" link="libvips-arithmetic.html#im-logtra"/>
doc/reference/html/libvips.devhelp:    <function name="im_log10tra ()" link="libvips-arithmetic.html#im-log10tra"/>
doc/reference/html/libvips.devhelp:    <function name="im_sintra ()" link="libvips-arithmetic.html#im-sintra"/>
doc/reference/html/libvips.devhelp:    <function name="im_costra ()" link="libvips-arithmetic.html#im-costra"/>
doc/reference/html/libvips.devhelp:    <function name="im_tantra ()" link="libvips-arithmetic.html#im-tantra"/>
doc/reference/html/libvips.devhelp:    <function name="im_asintra ()" link="libvips-arithmetic.html#im-asintra"/>
doc/reference/html/libvips.devhelp:    <function name="im_acostra ()" link="libvips-arithmetic.html#im-acostra"/>
doc/reference/html/libvips.devhelp:    <function name="im_atantra ()" link="libvips-arithmetic.html#im-atantra"/>
doc/reference/html/libvips.devhelp:    <function name="im_cross_phase ()" link="libvips-arithmetic.html#im-cross-phase"/>
doc/reference/html/libvips.devhelp:    <function name="im_andimage ()" link="libvips-boolean.html#im-andimage"/>
doc/reference/html/libvips.devhelp:    <function name="im_orimage ()" link="libvips-boolean.html#im-orimage"/>
doc/reference/html/libvips.devhelp:    <function name="im_eorimage ()" link="libvips-boolean.html#im-eorimage"/>
doc/reference/html/libvips.devhelp:    <function name="im_andimage_vec ()" link="libvips-boolean.html#im-andimage-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_andimageconst ()" link="libvips-boolean.html#im-andimageconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_orimage_vec ()" link="libvips-boolean.html#im-orimage-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_orimageconst ()" link="libvips-boolean.html#im-orimageconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_eorimage_vec ()" link="libvips-boolean.html#im-eorimage-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_eorimageconst ()" link="libvips-boolean.html#im-eorimageconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_shiftleft_vec ()" link="libvips-boolean.html#im-shiftleft-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_shiftleft ()" link="libvips-boolean.html#im-shiftleft"/>
doc/reference/html/libvips.devhelp:    <function name="im_shiftright_vec ()" link="libvips-boolean.html#im-shiftright-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_shiftright ()" link="libvips-boolean.html#im-shiftright"/>
doc/reference/html/libvips.devhelp:    <function name="im_equal ()" link="libvips-relational.html#im-equal"/>
doc/reference/html/libvips.devhelp:    <function name="im_notequal ()" link="libvips-relational.html#im-notequal"/>
doc/reference/html/libvips.devhelp:    <function name="im_less ()" link="libvips-relational.html#im-less"/>
doc/reference/html/libvips.devhelp:    <function name="im_lesseq ()" link="libvips-relational.html#im-lesseq"/>
doc/reference/html/libvips.devhelp:    <function name="im_more ()" link="libvips-relational.html#im-more"/>
doc/reference/html/libvips.devhelp:    <function name="im_moreeq ()" link="libvips-relational.html#im-moreeq"/>
doc/reference/html/libvips.devhelp:    <function name="im_equal_vec ()" link="libvips-relational.html#im-equal-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_notequal_vec ()" link="libvips-relational.html#im-notequal-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_less_vec ()" link="libvips-relational.html#im-less-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_lesseq_vec ()" link="libvips-relational.html#im-lesseq-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_more_vec ()" link="libvips-relational.html#im-more-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_moreeq_vec ()" link="libvips-relational.html#im-moreeq-vec"/>
doc/reference/html/libvips.devhelp:    <function name="im_equalconst ()" link="libvips-relational.html#im-equalconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_notequalconst ()" link="libvips-relational.html#im-notequalconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_lessconst ()" link="libvips-relational.html#im-lessconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_lesseqconst ()" link="libvips-relational.html#im-lesseqconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_moreconst ()" link="libvips-relational.html#im-moreconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_moreeqconst ()" link="libvips-relational.html#im-moreeqconst"/>
doc/reference/html/libvips.devhelp:    <function name="im_ifthenelse ()" link="libvips-relational.html#im-ifthenelse"/>
doc/reference/html/libvips.devhelp:    <function name="im_blend ()" link="libvips-relational.html#im-blend"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D93_X0" link="libvips-colour.html#IM-D93-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D93_Y0" link="libvips-colour.html#IM-D93-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D93_Z0" link="libvips-colour.html#IM-D93-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D75_X0" link="libvips-colour.html#IM-D75-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D75_Y0" link="libvips-colour.html#IM-D75-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D75_Z0" link="libvips-colour.html#IM-D75-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D65_X0" link="libvips-colour.html#IM-D65-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D65_Y0" link="libvips-colour.html#IM-D65-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D65_Z0" link="libvips-colour.html#IM-D65-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D55_X0" link="libvips-colour.html#IM-D55-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D55_Y0" link="libvips-colour.html#IM-D55-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D55_Z0" link="libvips-colour.html#IM-D55-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D50_X0" link="libvips-colour.html#IM-D50-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D50_Y0" link="libvips-colour.html#IM-D50-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D50_Z0" link="libvips-colour.html#IM-D50-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_A_X0" link="libvips-colour.html#IM-A-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_A_Y0" link="libvips-colour.html#IM-A-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_A_Z0" link="libvips-colour.html#IM-A-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_B_X0" link="libvips-colour.html#IM-B-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_B_Y0" link="libvips-colour.html#IM-B-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_B_Z0" link="libvips-colour.html#IM-B-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_C_X0" link="libvips-colour.html#IM-C-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_C_Y0" link="libvips-colour.html#IM-C-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_C_Z0" link="libvips-colour.html#IM-C-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_E_X0" link="libvips-colour.html#IM-E-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_E_Y0" link="libvips-colour.html#IM-E-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_E_Z0" link="libvips-colour.html#IM-E-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D3250_X0" link="libvips-colour.html#IM-D3250-X0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D3250_Y0" link="libvips-colour.html#IM-D3250-Y0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_D3250_Z0" link="libvips-colour.html#IM-D3250-Z0:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_ab2Ch ()" link="libvips-colour.html#im-col-ab2Ch"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_Ch2ab ()" link="libvips-colour.html#im-col-Ch2ab"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_XYZ2Lab ()" link="libvips-colour.html#im-col-XYZ2Lab"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_Lab2XYZ ()" link="libvips-colour.html#im-col-Lab2XYZ"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_pythagoras ()" link="libvips-colour.html#im-col-pythagoras"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_make_tables_UCS ()" link="libvips-colour.html#im-col-make-tables-UCS"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_L2Lucs ()" link="libvips-colour.html#im-col-L2Lucs"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_Lucs2L ()" link="libvips-colour.html#im-col-Lucs2L"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_C2Cucs ()" link="libvips-colour.html#im-col-C2Cucs"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_Cucs2C ()" link="libvips-colour.html#im-col-Cucs2C"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_Ch2hucs ()" link="libvips-colour.html#im-col-Ch2hucs"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_Chucs2h ()" link="libvips-colour.html#im-col-Chucs2h"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_ab2h ()" link="libvips-colour.html#im-col-ab2h"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_dECMC ()" link="libvips-colour.html#im-col-dECMC"/>
doc/reference/html/libvips.devhelp:    <function name="im_col_dE00 ()" link="libvips-colour.html#im-col-dE00"/>
doc/reference/html/libvips.devhelp:    <function name="im_Lab2LCh ()" link="libvips-colour.html#im-Lab2LCh"/>
doc/reference/html/libvips.devhelp:    <function name="im_LCh2Lab ()" link="libvips-colour.html#im-LCh2Lab"/>
doc/reference/html/libvips.devhelp:    <function name="im_LabQ2XYZ ()" link="libvips-colour.html#im-LabQ2XYZ"/>
doc/reference/html/libvips.devhelp:    <function name="im_rad2float ()" link="libvips-colour.html#im-rad2float"/>
doc/reference/html/libvips.devhelp:    <function name="im_float2rad ()" link="libvips-colour.html#im-float2rad"/>
doc/reference/html/libvips.devhelp:    <function name="im_LCh2UCS ()" link="libvips-colour.html#im-LCh2UCS"/>
doc/reference/html/libvips.devhelp:    <function name="im_Lab2LabQ ()" link="libvips-colour.html#im-Lab2LabQ"/>
doc/reference/html/libvips.devhelp:    <function name="im_Lab2LabS ()" link="libvips-colour.html#im-Lab2LabS"/>
doc/reference/html/libvips.devhelp:    <function name="im_Lab2XYZ ()" link="libvips-colour.html#im-Lab2XYZ"/>
doc/reference/html/libvips.devhelp:    <function name="im_Lab2XYZ_temp ()" link="libvips-colour.html#im-Lab2XYZ-temp"/>
doc/reference/html/libvips.devhelp:    <function name="im_Lab2UCS ()" link="libvips-colour.html#im-Lab2UCS"/>
doc/reference/html/libvips.devhelp:    <function name="im_LabQ2Lab ()" link="libvips-colour.html#im-LabQ2Lab"/>
doc/reference/html/libvips.devhelp:    <function name="im_LabQ2LabS ()" link="libvips-colour.html#im-LabQ2LabS"/>
doc/reference/html/libvips.devhelp:    <function name="im_LabS2LabQ ()" link="libvips-colour.html#im-LabS2LabQ"/>
doc/reference/html/libvips.devhelp:    <function name="im_LabS2Lab ()" link="libvips-colour.html#im-LabS2Lab"/>
doc/reference/html/libvips.devhelp:    <function name="im_UCS2XYZ ()" link="libvips-colour.html#im-UCS2XYZ"/>
doc/reference/html/libvips.devhelp:    <function name="im_UCS2LCh ()" link="libvips-colour.html#im-UCS2LCh"/>
doc/reference/html/libvips.devhelp:    <function name="im_UCS2Lab ()" link="libvips-colour.html#im-UCS2Lab"/>
doc/reference/html/libvips.devhelp:    <function name="im_XYZ2Lab ()" link="libvips-colour.html#im-XYZ2Lab"/>
doc/reference/html/libvips.devhelp:    <function name="im_XYZ2Lab_temp ()" link="libvips-colour.html#im-XYZ2Lab-temp"/>
doc/reference/html/libvips.devhelp:    <function name="im_XYZ2UCS ()" link="libvips-colour.html#im-XYZ2UCS"/>
doc/reference/html/libvips.devhelp:    <function name="im_sRGB2XYZ ()" link="libvips-colour.html#im-sRGB2XYZ"/>
doc/reference/html/libvips.devhelp:    <function name="im_XYZ2sRGB ()" link="libvips-colour.html#im-XYZ2sRGB"/>
doc/reference/html/libvips.devhelp:    <function name="im_Yxy2XYZ ()" link="libvips-colour.html#im-Yxy2XYZ"/>
doc/reference/html/libvips.devhelp:    <function name="im_XYZ2Yxy ()" link="libvips-colour.html#im-XYZ2Yxy"/>
doc/reference/html/libvips.devhelp:    <function name="im_dECMC_fromLab ()" link="libvips-colour.html#im-dECMC-fromLab"/>
doc/reference/html/libvips.devhelp:    <function name="im_dE00_fromLab ()" link="libvips-colour.html#im-dE00-fromLab"/>
doc/reference/html/libvips.devhelp:    <function name="im_dE_fromXYZ ()" link="libvips-colour.html#im-dE-fromXYZ"/>
doc/reference/html/libvips.devhelp:    <function name="im_dE_fromLab ()" link="libvips-colour.html#im-dE-fromLab"/>
doc/reference/html/libvips.devhelp:    <function name="im_lab_morph ()" link="libvips-colour.html#im-lab-morph"/>
doc/reference/html/libvips.devhelp:    <function name="enum VipsIntent" link="libvips-colour.html#VipsIntent"/>
doc/reference/html/libvips.devhelp:    <function name="im_icc_present ()" link="libvips-colour.html#im-icc-present"/>
doc/reference/html/libvips.devhelp:    <function name="im_icc_transform ()" link="libvips-colour.html#im-icc-transform"/>
doc/reference/html/libvips.devhelp:    <function name="im_icc_import ()" link="libvips-colour.html#im-icc-import"/>
doc/reference/html/libvips.devhelp:    <function name="im_icc_import_embedded ()" link="libvips-colour.html#im-icc-import-embedded"/>
doc/reference/html/libvips.devhelp:    <function name="im_icc_export_depth ()" link="libvips-colour.html#im-icc-export-depth"/>
doc/reference/html/libvips.devhelp:    <function name="im_icc_ac2rc ()" link="libvips-colour.html#im-icc-ac2rc"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2mask ()" link="libvips-conversion.html#im-vips2mask"/>
doc/reference/html/libvips.devhelp:    <function name="im_mask2vips ()" link="libvips-conversion.html#im-mask2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_copy ()" link="libvips-conversion.html#im-copy"/>
doc/reference/html/libvips.devhelp:    <function name="im_copy_set ()" link="libvips-conversion.html#im-copy-set"/>
doc/reference/html/libvips.devhelp:    <function name="im_copy_set_meta ()" link="libvips-conversion.html#im-copy-set-meta"/>
doc/reference/html/libvips.devhelp:    <function name="im_copy_morph ()" link="libvips-conversion.html#im-copy-morph"/>
doc/reference/html/libvips.devhelp:    <function name="im_copy_swap ()" link="libvips-conversion.html#im-copy-swap"/>
doc/reference/html/libvips.devhelp:    <function name="im_copy_native ()" link="libvips-conversion.html#im-copy-native"/>
doc/reference/html/libvips.devhelp:    <function name="im_copy_file ()" link="libvips-conversion.html#im-copy-file"/>
doc/reference/html/libvips.devhelp:    <function name="im_clip2fmt ()" link="libvips-conversion.html#im-clip2fmt"/>
doc/reference/html/libvips.devhelp:    <function name="im_scale ()" link="libvips-conversion.html#im-scale"/>
doc/reference/html/libvips.devhelp:    <function name="im_msb ()" link="libvips-conversion.html#im-msb"/>
doc/reference/html/libvips.devhelp:    <function name="im_msb_band ()" link="libvips-conversion.html#im-msb-band"/>
doc/reference/html/libvips.devhelp:    <function name="im_c2amph ()" link="libvips-conversion.html#im-c2amph"/>
doc/reference/html/libvips.devhelp:    <function name="im_c2rect ()" link="libvips-conversion.html#im-c2rect"/>
doc/reference/html/libvips.devhelp:    <function name="im_ri2c ()" link="libvips-conversion.html#im-ri2c"/>
doc/reference/html/libvips.devhelp:    <function name="im_c2imag ()" link="libvips-conversion.html#im-c2imag"/>
doc/reference/html/libvips.devhelp:    <function name="im_c2real ()" link="libvips-conversion.html#im-c2real"/>
doc/reference/html/libvips.devhelp:    <function name="im_scaleps ()" link="libvips-conversion.html#im-scaleps"/>
doc/reference/html/libvips.devhelp:    <function name="im_falsecolour ()" link="libvips-conversion.html#im-falsecolour"/>
doc/reference/html/libvips.devhelp:    <function name="im_gaussnoise ()" link="libvips-conversion.html#im-gaussnoise"/>
doc/reference/html/libvips.devhelp:    <function name="im_black ()" link="libvips-conversion.html#im-black"/>
doc/reference/html/libvips.devhelp:    <function name="im_text ()" link="libvips-conversion.html#im-text"/>
doc/reference/html/libvips.devhelp:    <function name="im_extract_band ()" link="libvips-conversion.html#im-extract-band"/>
doc/reference/html/libvips.devhelp:    <function name="im_extract_bands ()" link="libvips-conversion.html#im-extract-bands"/>
doc/reference/html/libvips.devhelp:    <function name="im_extract_area ()" link="libvips-conversion.html#im-extract-area"/>
doc/reference/html/libvips.devhelp:    <function name="im_extract_areabands ()" link="libvips-conversion.html#im-extract-areabands"/>
doc/reference/html/libvips.devhelp:    <function name="im_embed ()" link="libvips-conversion.html#im-embed"/>
doc/reference/html/libvips.devhelp:    <function name="im_bandjoin ()" link="libvips-conversion.html#im-bandjoin"/>
doc/reference/html/libvips.devhelp:    <function name="im_gbandjoin ()" link="libvips-conversion.html#im-gbandjoin"/>
doc/reference/html/libvips.devhelp:    <function name="im_insert ()" link="libvips-conversion.html#im-insert"/>
doc/reference/html/libvips.devhelp:    <function name="im_insert_noexpand ()" link="libvips-conversion.html#im-insert-noexpand"/>
doc/reference/html/libvips.devhelp:    <function name="im_insertset ()" link="libvips-conversion.html#im-insertset"/>
doc/reference/html/libvips.devhelp:    <function name="im_lrjoin ()" link="libvips-conversion.html#im-lrjoin"/>
doc/reference/html/libvips.devhelp:    <function name="im_tbjoin ()" link="libvips-conversion.html#im-tbjoin"/>
doc/reference/html/libvips.devhelp:    <function name="im_replicate ()" link="libvips-conversion.html#im-replicate"/>
doc/reference/html/libvips.devhelp:    <function name="im_grid ()" link="libvips-conversion.html#im-grid"/>
doc/reference/html/libvips.devhelp:    <function name="im_wrap ()" link="libvips-conversion.html#im-wrap"/>
doc/reference/html/libvips.devhelp:    <function name="im_fliphor ()" link="libvips-conversion.html#im-fliphor"/>
doc/reference/html/libvips.devhelp:    <function name="im_flipver ()" link="libvips-conversion.html#im-flipver"/>
doc/reference/html/libvips.devhelp:    <function name="im_rot90 ()" link="libvips-conversion.html#im-rot90"/>
doc/reference/html/libvips.devhelp:    <function name="im_rot180 ()" link="libvips-conversion.html#im-rot180"/>
doc/reference/html/libvips.devhelp:    <function name="im_rot270 ()" link="libvips-conversion.html#im-rot270"/>
doc/reference/html/libvips.devhelp:    <function name="im_subsample ()" link="libvips-conversion.html#im-subsample"/>
doc/reference/html/libvips.devhelp:    <function name="im_zoom ()" link="libvips-conversion.html#im-zoom"/>
doc/reference/html/libvips.devhelp:    <function name="im_system ()" link="libvips-conversion.html#im-system"/>
doc/reference/html/libvips.devhelp:    <function name="im_system_image ()" link="libvips-conversion.html#im-system-image"/>
doc/reference/html/libvips.devhelp:    <function name="im_conv ()" link="libvips-convolution.html#im-conv"/>
doc/reference/html/libvips.devhelp:    <function name="im_conv_f ()" link="libvips-convolution.html#im-conv-f"/>
doc/reference/html/libvips.devhelp:    <function name="im_convsep ()" link="libvips-convolution.html#im-convsep"/>
doc/reference/html/libvips.devhelp:    <function name="im_convsep_f ()" link="libvips-convolution.html#im-convsep-f"/>
doc/reference/html/libvips.devhelp:    <function name="im_compass ()" link="libvips-convolution.html#im-compass"/>
doc/reference/html/libvips.devhelp:    <function name="im_gradient ()" link="libvips-convolution.html#im-gradient"/>
doc/reference/html/libvips.devhelp:    <function name="im_lindetect ()" link="libvips-convolution.html#im-lindetect"/>
doc/reference/html/libvips.devhelp:    <function name="im_sharpen ()" link="libvips-convolution.html#im-sharpen"/>
doc/reference/html/libvips.devhelp:    <function name="im_grad_x ()" link="libvips-convolution.html#im-grad-x"/>
doc/reference/html/libvips.devhelp:    <function name="im_grad_y ()" link="libvips-convolution.html#im-grad-y"/>
doc/reference/html/libvips.devhelp:    <function name="im_fastcor ()" link="libvips-convolution.html#im-fastcor"/>
doc/reference/html/libvips.devhelp:    <function name="im_spcor ()" link="libvips-convolution.html#im-spcor"/>
doc/reference/html/libvips.devhelp:    <function name="im_gradcor ()" link="libvips-convolution.html#im-gradcor"/>
doc/reference/html/libvips.devhelp:    <function name="im_contrast_surface ()" link="libvips-convolution.html#im-contrast-surface"/>
doc/reference/html/libvips.devhelp:    <function name="im_addgnoise ()" link="libvips-convolution.html#im-addgnoise"/>
doc/reference/html/libvips.devhelp:    <function name="VipsFormat" link="VipsFormat.html#VipsFormat-struct"/>
doc/reference/html/libvips.devhelp:    <function name="vips_format_map ()" link="VipsFormat.html#vips-format-map"/>
doc/reference/html/libvips.devhelp:    <function name="vips_format_for_file ()" link="VipsFormat.html#vips-format-for-file"/>
doc/reference/html/libvips.devhelp:    <function name="vips_format_for_name ()" link="VipsFormat.html#vips-format-for-name"/>
doc/reference/html/libvips.devhelp:    <function name="vips_format_get_flags ()" link="VipsFormat.html#vips-format-get-flags"/>
doc/reference/html/libvips.devhelp:    <function name="vips_format_read ()" link="VipsFormat.html#vips-format-read"/>
doc/reference/html/libvips.devhelp:    <function name="vips_format_write ()" link="VipsFormat.html#vips-format-write"/>
doc/reference/html/libvips.devhelp:    <function name="im_jpeg2vips ()" link="VipsFormat.html#im-jpeg2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2jpeg ()" link="VipsFormat.html#im-vips2jpeg"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2mimejpeg ()" link="VipsFormat.html#im-vips2mimejpeg"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2bufjpeg ()" link="VipsFormat.html#im-vips2bufjpeg"/>
doc/reference/html/libvips.devhelp:    <function name="im_tiff2vips ()" link="VipsFormat.html#im-tiff2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2tiff ()" link="VipsFormat.html#im-vips2tiff"/>
doc/reference/html/libvips.devhelp:    <function name="im_tile_cache ()" link="VipsFormat.html#im-tile-cache"/>
doc/reference/html/libvips.devhelp:    <function name="im_magick2vips ()" link="VipsFormat.html#im-magick2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_exr2vips ()" link="VipsFormat.html#im-exr2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_ppm2vips ()" link="VipsFormat.html#im-ppm2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2ppm ()" link="VipsFormat.html#im-vips2ppm"/>
doc/reference/html/libvips.devhelp:    <function name="im_analyze2vips ()" link="VipsFormat.html#im-analyze2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_csv2vips ()" link="VipsFormat.html#im-csv2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2csv ()" link="VipsFormat.html#im-vips2csv"/>
doc/reference/html/libvips.devhelp:    <function name="im_png2vips ()" link="VipsFormat.html#im-png2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2png ()" link="VipsFormat.html#im-vips2png"/>
doc/reference/html/libvips.devhelp:    <function name="im_raw2vips ()" link="VipsFormat.html#im-raw2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2raw ()" link="VipsFormat.html#im-vips2raw"/>
doc/reference/html/libvips.devhelp:    <function name="im_mat2vips ()" link="VipsFormat.html#im-mat2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_rad2vips ()" link="VipsFormat.html#im-rad2vips"/>
doc/reference/html/libvips.devhelp:    <function name="im_vips2rad ()" link="VipsFormat.html#im-vips2rad"/>
doc/reference/html/libvips.devhelp:    <function name="enum VipsMaskType" link="libvips-freq-filt.html#VipsMaskType"/>
doc/reference/html/libvips.devhelp:    <function name="im_fwfft ()" link="libvips-freq-filt.html#im-fwfft"/>
doc/reference/html/libvips.devhelp:    <function name="im_invfft ()" link="libvips-freq-filt.html#im-invfft"/>
doc/reference/html/libvips.devhelp:    <function name="im_invfftr ()" link="libvips-freq-filt.html#im-invfftr"/>
doc/reference/html/libvips.devhelp:    <function name="im_freqflt ()" link="libvips-freq-filt.html#im-freqflt"/>
doc/reference/html/libvips.devhelp:    <function name="im_disp_ps ()" link="libvips-freq-filt.html#im-disp-ps"/>
doc/reference/html/libvips.devhelp:    <function name="im_rotquad ()" link="libvips-freq-filt.html#im-rotquad"/>
doc/reference/html/libvips.devhelp:    <function name="im_phasecor_fft ()" link="libvips-freq-filt.html#im-phasecor-fft"/>
doc/reference/html/libvips.devhelp:    <function name="im_flt_image_freq ()" link="libvips-freq-filt.html#im-flt-image-freq"/>
doc/reference/html/libvips.devhelp:    <function name="im_create_fmask ()" link="libvips-freq-filt.html#im-create-fmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_fractsurf ()" link="libvips-freq-filt.html#im-fractsurf"/>
doc/reference/html/libvips.devhelp:    <function name="im_histgr ()" link="libvips-histograms-lut.html#im-histgr"/>
doc/reference/html/libvips.devhelp:    <function name="im_histnD ()" link="libvips-histograms-lut.html#im-histnD"/>
doc/reference/html/libvips.devhelp:    <function name="im_hist_indexed ()" link="libvips-histograms-lut.html#im-hist-indexed"/>
doc/reference/html/libvips.devhelp:    <function name="im_identity ()" link="libvips-histograms-lut.html#im-identity"/>
doc/reference/html/libvips.devhelp:    <function name="im_identity_ushort ()" link="libvips-histograms-lut.html#im-identity-ushort"/>
doc/reference/html/libvips.devhelp:    <function name="im_invertlut ()" link="libvips-histograms-lut.html#im-invertlut"/>
doc/reference/html/libvips.devhelp:    <function name="im_buildlut ()" link="libvips-histograms-lut.html#im-buildlut"/>
doc/reference/html/libvips.devhelp:    <function name="im_project ()" link="libvips-histograms-lut.html#im-project"/>
doc/reference/html/libvips.devhelp:    <function name="im_histnorm ()" link="libvips-histograms-lut.html#im-histnorm"/>
doc/reference/html/libvips.devhelp:    <function name="im_histcum ()" link="libvips-histograms-lut.html#im-histcum"/>
doc/reference/html/libvips.devhelp:    <function name="im_histeq ()" link="libvips-histograms-lut.html#im-histeq"/>
doc/reference/html/libvips.devhelp:    <function name="im_histspec ()" link="libvips-histograms-lut.html#im-histspec"/>
doc/reference/html/libvips.devhelp:    <function name="im_ismonotonic ()" link="libvips-histograms-lut.html#im-ismonotonic"/>
doc/reference/html/libvips.devhelp:    <function name="im_histplot ()" link="libvips-histograms-lut.html#im-histplot"/>
doc/reference/html/libvips.devhelp:    <function name="im_maplut ()" link="libvips-histograms-lut.html#im-maplut"/>
doc/reference/html/libvips.devhelp:    <function name="im_hist ()" link="libvips-histograms-lut.html#im-hist"/>
doc/reference/html/libvips.devhelp:    <function name="im_hsp ()" link="libvips-histograms-lut.html#im-hsp"/>
doc/reference/html/libvips.devhelp:    <function name="im_gammacorrect ()" link="libvips-histograms-lut.html#im-gammacorrect"/>
doc/reference/html/libvips.devhelp:    <function name="im_mpercent ()" link="libvips-histograms-lut.html#im-mpercent"/>
doc/reference/html/libvips.devhelp:    <function name="im_mpercent_hist ()" link="libvips-histograms-lut.html#im-mpercent-hist"/>
doc/reference/html/libvips.devhelp:    <function name="im_heq ()" link="libvips-histograms-lut.html#im-heq"/>
doc/reference/html/libvips.devhelp:    <function name="im_lhisteq ()" link="libvips-histograms-lut.html#im-lhisteq"/>
doc/reference/html/libvips.devhelp:    <function name="im_stdif ()" link="libvips-histograms-lut.html#im-stdif"/>
doc/reference/html/libvips.devhelp:    <function name="im_tone_build_range ()" link="libvips-histograms-lut.html#im-tone-build-range"/>
doc/reference/html/libvips.devhelp:    <function name="im_tone_build ()" link="libvips-histograms-lut.html#im-tone-build"/>
doc/reference/html/libvips.devhelp:    <function name="im_tone_analyse ()" link="libvips-histograms-lut.html#im-tone-analyse"/>
doc/reference/html/libvips.devhelp:    <function name="im_tone_map ()" link="libvips-histograms-lut.html#im-tone-map"/>
doc/reference/html/libvips.devhelp:    <function name="im_dilate ()" link="libvips-morphology.html#im-dilate"/>
doc/reference/html/libvips.devhelp:    <function name="im_erode ()" link="libvips-morphology.html#im-erode"/>
doc/reference/html/libvips.devhelp:    <function name="im_rank ()" link="libvips-morphology.html#im-rank"/>
doc/reference/html/libvips.devhelp:    <function name="im_rank_image ()" link="libvips-morphology.html#im-rank-image"/>
doc/reference/html/libvips.devhelp:    <function name="im_maxvalue ()" link="libvips-morphology.html#im-maxvalue"/>
doc/reference/html/libvips.devhelp:    <function name="im_cntlines ()" link="libvips-morphology.html#im-cntlines"/>
doc/reference/html/libvips.devhelp:    <function name="im_zerox ()" link="libvips-morphology.html#im-zerox"/>
doc/reference/html/libvips.devhelp:    <function name="im_profile ()" link="libvips-morphology.html#im-profile"/>
doc/reference/html/libvips.devhelp:    <function name="im_label_regions ()" link="libvips-morphology.html#im-label-regions"/>
doc/reference/html/libvips.devhelp:    <function name="im_affinei ()" link="libvips-resample.html#im-affinei"/>
doc/reference/html/libvips.devhelp:    <function name="im_affinei_all ()" link="libvips-resample.html#im-affinei-all"/>
doc/reference/html/libvips.devhelp:    <function name="im_stretch3 ()" link="libvips-resample.html#im-stretch3"/>
doc/reference/html/libvips.devhelp:    <function name="im_shrink ()" link="libvips-resample.html#im-shrink"/>
doc/reference/html/libvips.devhelp:    <function name="im_rightshift_size ()" link="libvips-resample.html#im-rightshift-size"/>
doc/reference/html/libvips.devhelp:    <function name="im_match_linear ()" link="libvips-resample.html#im-match-linear"/>
doc/reference/html/libvips.devhelp:    <function name="im_match_linear_search ()" link="libvips-resample.html#im-match-linear-search"/>
doc/reference/html/libvips.devhelp:    <function name="INTMASK" link="libvips-mask.html#INTMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="DOUBLEMASK" link="libvips-mask.html#DOUBLEMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_create_imask ()" link="libvips-mask.html#im-create-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_create_imaskv ()" link="libvips-mask.html#im-create-imaskv"/>
doc/reference/html/libvips.devhelp:    <function name="im_create_dmask ()" link="libvips-mask.html#im-create-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_create_dmaskv ()" link="libvips-mask.html#im-create-dmaskv"/>
doc/reference/html/libvips.devhelp:    <function name="im_read_imask ()" link="libvips-mask.html#im-read-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_read_dmask ()" link="libvips-mask.html#im-read-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_print_imask ()" link="libvips-mask.html#im-print-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_print_dmask ()" link="libvips-mask.html#im-print-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_write_imask ()" link="libvips-mask.html#im-write-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_write_dmask ()" link="libvips-mask.html#im-write-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_write_imask_name ()" link="libvips-mask.html#im-write-imask-name"/>
doc/reference/html/libvips.devhelp:    <function name="im_write_dmask_name ()" link="libvips-mask.html#im-write-dmask-name"/>
doc/reference/html/libvips.devhelp:    <function name="im_free_imask ()" link="libvips-mask.html#im-free-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_free_dmask ()" link="libvips-mask.html#im-free-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_log_imask ()" link="libvips-mask.html#im-log-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_log_dmask ()" link="libvips-mask.html#im-log-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_gauss_imask ()" link="libvips-mask.html#im-gauss-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_gauss_imask_sep ()" link="libvips-mask.html#im-gauss-imask-sep"/>
doc/reference/html/libvips.devhelp:    <function name="im_gauss_dmask ()" link="libvips-mask.html#im-gauss-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_dup_imask ()" link="libvips-mask.html#im-dup-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_dup_dmask ()" link="libvips-mask.html#im-dup-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_scale_dmask ()" link="libvips-mask.html#im-scale-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_norm_dmask ()" link="libvips-mask.html#im-norm-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_offsets45 ()" link="libvips-mask.html#im-offsets45"/>
doc/reference/html/libvips.devhelp:    <function name="im_offsets90 ()" link="libvips-mask.html#im-offsets90"/>
doc/reference/html/libvips.devhelp:    <function name="im_rotate_imask90 ()" link="libvips-mask.html#im-rotate-imask90"/>
doc/reference/html/libvips.devhelp:    <function name="im_rotate_imask45 ()" link="libvips-mask.html#im-rotate-imask45"/>
doc/reference/html/libvips.devhelp:    <function name="im_rotate_dmask90 ()" link="libvips-mask.html#im-rotate-dmask90"/>
doc/reference/html/libvips.devhelp:    <function name="im_rotate_dmask45 ()" link="libvips-mask.html#im-rotate-dmask45"/>
doc/reference/html/libvips.devhelp:    <function name="im_mattrn ()" link="libvips-mask.html#im-mattrn"/>
doc/reference/html/libvips.devhelp:    <function name="im_matcat ()" link="libvips-mask.html#im-matcat"/>
doc/reference/html/libvips.devhelp:    <function name="im_matmul ()" link="libvips-mask.html#im-matmul"/>
doc/reference/html/libvips.devhelp:    <function name="im_lu_decomp ()" link="libvips-mask.html#im-lu-decomp"/>
doc/reference/html/libvips.devhelp:    <function name="im_lu_solve ()" link="libvips-mask.html#im-lu-solve"/>
doc/reference/html/libvips.devhelp:    <function name="im_matinv ()" link="libvips-mask.html#im-matinv"/>
doc/reference/html/libvips.devhelp:    <function name="im_matinv_inplace ()" link="libvips-mask.html#im-matinv-inplace"/>
doc/reference/html/libvips.devhelp:    <function name="im_local_dmask ()" link="libvips-mask.html#im-local-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_local_imask ()" link="libvips-mask.html#im-local-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im_plotmask ()" link="libvips-inplace.html#im-plotmask"/>
doc/reference/html/libvips.devhelp:    <function name="im_smear ()" link="libvips-inplace.html#im-smear"/>
doc/reference/html/libvips.devhelp:    <function name="im_smudge ()" link="libvips-inplace.html#im-smudge"/>
doc/reference/html/libvips.devhelp:    <function name="im_paintrect ()" link="libvips-inplace.html#im-paintrect"/>
doc/reference/html/libvips.devhelp:    <function name="im_circle ()" link="libvips-inplace.html#im-circle"/>
doc/reference/html/libvips.devhelp:    <function name="im_insertplace ()" link="libvips-inplace.html#im-insertplace"/>
doc/reference/html/libvips.devhelp:    <function name="im_fastline ()" link="libvips-inplace.html#im-fastline"/>
doc/reference/html/libvips.devhelp:    <function name="im_fastlineuser ()" link="libvips-inplace.html#im-fastlineuser"/>
doc/reference/html/libvips.devhelp:    <function name="im_readpoint ()" link="libvips-inplace.html#im-readpoint"/>
doc/reference/html/libvips.devhelp:    <function name="im_flood ()" link="libvips-inplace.html#im-flood"/>
doc/reference/html/libvips.devhelp:    <function name="im_flood_blob ()" link="libvips-inplace.html#im-flood-blob"/>
doc/reference/html/libvips.devhelp:    <function name="im_flood_other ()" link="libvips-inplace.html#im-flood-other"/>
doc/reference/html/libvips.devhelp:    <function name="im_flood_copy ()" link="libvips-inplace.html#im-flood-copy"/>
doc/reference/html/libvips.devhelp:    <function name="im_flood_blob_copy ()" link="libvips-inplace.html#im-flood-blob-copy"/>
doc/reference/html/libvips.devhelp:    <function name="im_flood_other_copy ()" link="libvips-inplace.html#im-flood-other-copy"/>
doc/reference/html/libvips.devhelp:    <function name="im_lineset ()" link="libvips-inplace.html#im-lineset"/>
doc/reference/html/libvips.devhelp:    <function name="im_lrmerge ()" link="libvips-mosaicing.html#im-lrmerge"/>
doc/reference/html/libvips.devhelp:    <function name="im_tbmerge ()" link="libvips-mosaicing.html#im-tbmerge"/>
doc/reference/html/libvips.devhelp:    <function name="im_lrmerge1 ()" link="libvips-mosaicing.html#im-lrmerge1"/>
doc/reference/html/libvips.devhelp:    <function name="im_tbmerge1 ()" link="libvips-mosaicing.html#im-tbmerge1"/>
doc/reference/html/libvips.devhelp:    <function name="im_lrmosaic ()" link="libvips-mosaicing.html#im-lrmosaic"/>
doc/reference/html/libvips.devhelp:    <function name="im_tbmosaic ()" link="libvips-mosaicing.html#im-tbmosaic"/>
doc/reference/html/libvips.devhelp:    <function name="im_lrmosaic1 ()" link="libvips-mosaicing.html#im-lrmosaic1"/>
doc/reference/html/libvips.devhelp:    <function name="im_tbmosaic1 ()" link="libvips-mosaicing.html#im-tbmosaic1"/>
doc/reference/html/libvips.devhelp:    <function name="im_global_balance ()" link="libvips-mosaicing.html#im-global-balance"/>
doc/reference/html/libvips.devhelp:    <function name="im_global_balancef ()" link="libvips-mosaicing.html#im-global-balancef"/>
doc/reference/html/libvips.devhelp:    <function name="im_correl ()" link="libvips-mosaicing.html#im-correl"/>
doc/reference/html/libvips.devhelp:    <function name="im_remosaic ()" link="libvips-mosaicing.html#im-remosaic"/>
doc/reference/html/libvips.devhelp:    <function name="im_align_bands ()" link="libvips-mosaicing.html#im-align-bands"/>
doc/reference/html/libvips.devhelp:    <function name="im_maxpos_subpel ()" link="libvips-mosaicing.html#im-maxpos-subpel"/>
doc/reference/html/libvips.devhelp:    <function name="im_feye ()" link="libvips-other.html#im-feye"/>
doc/reference/html/libvips.devhelp:    <function name="im_eye ()" link="libvips-other.html#im-eye"/>
doc/reference/html/libvips.devhelp:    <function name="im_zone ()" link="libvips-other.html#im-zone"/>
doc/reference/html/libvips.devhelp:    <function name="im_fzone ()" link="libvips-other.html#im-fzone"/>
doc/reference/html/libvips.devhelp:    <function name="im_grey ()" link="libvips-other.html#im-grey"/>
doc/reference/html/libvips.devhelp:    <function name="im_fgrey ()" link="libvips-other.html#im-fgrey"/>
doc/reference/html/libvips.devhelp:    <function name="im_make_xy ()" link="libvips-other.html#im-make-xy"/>
doc/reference/html/libvips.devhelp:    <function name="im_benchmarkn ()" link="libvips-other.html#im-benchmarkn"/>
doc/reference/html/libvips.devhelp:    <function name="im_benchmark2 ()" link="libvips-other.html#im-benchmark2"/>
doc/reference/html/libvips.devhelp:    <function name="im_cooc_matrix ()" link="libvips-other.html#im-cooc-matrix"/>
doc/reference/html/libvips.devhelp:    <function name="im_cooc_asm ()" link="libvips-other.html#im-cooc-asm"/>
doc/reference/html/libvips.devhelp:    <function name="im_cooc_contrast ()" link="libvips-other.html#im-cooc-contrast"/>
doc/reference/html/libvips.devhelp:    <function name="im_cooc_correlation ()" link="libvips-other.html#im-cooc-correlation"/>
doc/reference/html/libvips.devhelp:    <function name="im_cooc_entropy ()" link="libvips-other.html#im-cooc-entropy"/>
doc/reference/html/libvips.devhelp:    <function name="im_glds_matrix ()" link="libvips-other.html#im-glds-matrix"/>
doc/reference/html/libvips.devhelp:    <function name="im_glds_asm ()" link="libvips-other.html#im-glds-asm"/>
doc/reference/html/libvips.devhelp:    <function name="im_glds_contrast ()" link="libvips-other.html#im-glds-contrast"/>
doc/reference/html/libvips.devhelp:    <function name="im_glds_entropy ()" link="libvips-other.html#im-glds-entropy"/>
doc/reference/html/libvips.devhelp:    <function name="im_glds_mean ()" link="libvips-other.html#im-glds-mean"/>
doc/reference/html/libvips.devhelp:    <function name="im_simcontr ()" link="libvips-other.html#im-simcontr"/>
doc/reference/html/libvips.devhelp:    <function name="im_sines ()" link="libvips-other.html#im-sines"/>
doc/reference/html/libvips.devhelp:    <function name="im_spatres ()" link="libvips-other.html#im-spatres"/>
doc/reference/html/libvips.devhelp:    <function name="im_video_v4l1 ()" link="libvips-video.html#im-video-v4l1"/>
doc/reference/html/libvips.devhelp:    <function name="im_video_test ()" link="libvips-video.html#im-video-test"/>
doc/reference/html/libvips.devhelp:    <function name="im_greyc_mask ()" link="libvips-cimg-funcs.html#im-greyc-mask"/>
doc/reference/html/libvips.devhelp:    <function name="VipsInterpolate" link="VipsInterpolate.html#VipsInterpolate-struct"/>
doc/reference/html/libvips.devhelp:    <function name="vips_interpolate ()" link="VipsInterpolate.html#vips-interpolate"/>
doc/reference/html/libvips.devhelp:    <function name="vips_interpolate_get_method ()" link="VipsInterpolate.html#vips-interpolate-get-method"/>
doc/reference/html/libvips.devhelp:    <function name="vips_interpolate_get_window_size ()" link="VipsInterpolate.html#vips-interpolate-get-window-size"/>
doc/reference/html/libvips.devhelp:    <function name="vips_interpolate_get_window_offset ()" link="VipsInterpolate.html#vips-interpolate-get-window-offset"/>
doc/reference/html/libvips.devhelp:    <function name="VIPS_TRANSFORM_SHIFT" link="VipsInterpolate.html#VIPS-TRANSFORM-SHIFT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="VIPS_TRANSFORM_SCALE" link="VipsInterpolate.html#VIPS-TRANSFORM-SCALE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="VIPS_INTERPOLATE_SHIFT" link="VipsInterpolate.html#VIPS-INTERPOLATE-SHIFT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="VIPS_INTERPOLATE_SCALE" link="VipsInterpolate.html#VIPS-INTERPOLATE-SCALE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="vips_interpolate_nearest_static ()" link="VipsInterpolate.html#vips-interpolate-nearest-static"/>
doc/reference/html/libvips.devhelp:    <function name="vips_interpolate_bilinear_static ()" link="VipsInterpolate.html#vips-interpolate-bilinear-static"/>
doc/reference/html/libvips.devhelp:    <function name="vips_interpolate_bicubic_static ()" link="VipsInterpolate.html#vips-interpolate-bicubic-static"/>
doc/reference/html/libvips.devhelp:    <function name="vips_interpolate_new ()" link="VipsInterpolate.html#vips-interpolate-new"/>
doc/reference/html/libvips.devhelp:    <function name="vips__interpolate_init ()" link="VipsInterpolate.html#vips--interpolate-init"/>
doc/reference/html/libvips.devhelp:    <function name="VipsObject" link="libvips-VipsArgument.html#VipsObject-struct"/>
doc/reference/html/libvips.devhelp:    <function name="VipsObjectClass" link="libvips-VipsArgument.html#VipsObjectClass"/>
doc/reference/html/libvips.devhelp:    <function name="enum VipsArgumentFlags" link="libvips-VipsArgument.html#VipsArgumentFlags"/>
doc/reference/html/libvips.devhelp:    <function name="VIPS_ARGUMENT_REQUIRED_INPUT" link="libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-INPUT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="VIPS_ARGUMENT_OPTIONAL_INPUT" link="libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-INPUT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="VIPS_ARGUMENT_REQUIRED_OUTPUT" link="libvips-VipsArgument.html#VIPS-ARGUMENT-REQUIRED-OUTPUT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="VIPS_ARGUMENT_OPTIONAL_OUTPUT" link="libvips-VipsArgument.html#VIPS-ARGUMENT-OPTIONAL-OUTPUT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="VipsArgument" link="libvips-VipsArgument.html#VipsArgument"/>
doc/reference/html/libvips.devhelp:    <function name="VipsArgumentClass" link="libvips-VipsArgument.html#VipsArgumentClass"/>
doc/reference/html/libvips.devhelp:    <function name="VipsArgumentInstance" link="libvips-VipsArgument.html#VipsArgumentInstance"/>
doc/reference/html/libvips.devhelp:    <function name="VipsArgumentTable" link="libvips-VipsArgument.html#VipsArgumentTable"/>
doc/reference/html/libvips.devhelp:    <function name="vips__argument_get_instance ()" link="libvips-VipsArgument.html#vips--argument-get-instance"/>
doc/reference/html/libvips.devhelp:    <function name="vips__argument_table_lookup ()" link="libvips-VipsArgument.html#vips--argument-table-lookup"/>
doc/reference/html/libvips.devhelp:    <function name="VipsArgumentMapFn ()" link="libvips-VipsArgument.html#VipsArgumentMapFn"/>
doc/reference/html/libvips.devhelp:    <function name="vips_argument_map ()" link="libvips-VipsArgument.html#vips-argument-map"/>
doc/reference/html/libvips.devhelp:    <function name="vips_object_set_property ()" link="libvips-VipsArgument.html#vips-object-set-property"/>
doc/reference/html/libvips.devhelp:    <function name="vips_object_get_property ()" link="libvips-VipsArgument.html#vips-object-get-property"/>
doc/reference/html/libvips.devhelp:    <function name="vips_object_build ()" link="libvips-VipsArgument.html#vips-object-build"/>
doc/reference/html/libvips.devhelp:    <function name="vips_object_print_class ()" link="libvips-VipsArgument.html#vips-object-print-class"/>
doc/reference/html/libvips.devhelp:    <function name="vips_object_print ()" link="libvips-VipsArgument.html#vips-object-print"/>
doc/reference/html/libvips.devhelp:    <function name="vips_object_class_install_argument ()" link="libvips-VipsArgument.html#vips-object-class-install-argument"/>
doc/reference/html/libvips.devhelp:    <function name="VipsObjectSetArguments ()" link="libvips-VipsArgument.html#VipsObjectSetArguments"/>
doc/reference/html/libvips.devhelp:    <function name="vips_object_new ()" link="libvips-VipsArgument.html#vips-object-new"/>
doc/reference/html/libvips.devhelp:    <function name="vips_object_new_from_string ()" link="libvips-VipsArgument.html#vips-object-new-from-string"/>
doc/reference/html/libvips.devhelp:    <function name="vips_object_to_string ()" link="libvips-VipsArgument.html#vips-object-to-string"/>
doc/reference/html/libvips.devhelp:    <function name="The &quot;description&quot; property" link="libvips-VipsArgument.html#VipsObject--description"/>
doc/reference/html/libvips.devhelp:    <function name="The &quot;nickname&quot; property" link="libvips-VipsArgument.html#VipsObject--nickname"/>
doc/reference/html/libvips.devhelp:    <function name="Transformation" link="libvips-transform.html#Transformation"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_init ()" link="libvips-transform.html#im--transform-init"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_calc_inverse ()" link="libvips-transform.html#im--transform-calc-inverse"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_isidentity ()" link="libvips-transform.html#im--transform-isidentity"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_add ()" link="libvips-transform.html#im--transform-add"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_print ()" link="libvips-transform.html#im--transform-print"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_forward_point ()" link="libvips-transform.html#im--transform-forward-point"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_invert_point ()" link="libvips-transform.html#im--transform-invert-point"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_forward_rect ()" link="libvips-transform.html#im--transform-forward-rect"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_invert_rect ()" link="libvips-transform.html#im--transform-invert-rect"/>
doc/reference/html/libvips.devhelp:    <function name="im__transform_set_area ()" link="libvips-transform.html#im--transform-set-area"/>
doc/reference/html/libvips.devhelp:    <function name="im__affine ()" link="libvips-transform.html#im--affine"/>
doc/reference/html/libvips.devhelp:    <function name="IM_PI" link="libvips-util.html#IM-PI:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_RAD()" link="libvips-util.html#IM-RAD:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_DEG()" link="libvips-util.html#IM-DEG:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_MAX()" link="libvips-util.html#IM-MAX:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_MIN()" link="libvips-util.html#IM-MIN:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_ABS()" link="libvips-util.html#IM-ABS:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_CLIP()" link="libvips-util.html#IM-CLIP:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_NUMBER()" link="libvips-util.html#IM-NUMBER:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_FREEF()" link="libvips-util.html#IM-FREEF:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_FREE()" link="libvips-util.html#IM-FREE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_SETSTR()" link="libvips-util.html#IM-SETSTR:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_UNROLL()" link="libvips-util.html#IM-UNROLL:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_RINT()" link="libvips-util.html#IM-RINT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_CLIP_UCHAR()" link="libvips-util.html#IM-CLIP-UCHAR:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_CLIP_USHORT()" link="libvips-util.html#IM-CLIP-USHORT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_CLIP_CHAR()" link="libvips-util.html#IM-CLIP-CHAR:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_CLIP_SHORT()" link="libvips-util.html#IM-CLIP-SHORT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_CLIP_NONE()" link="libvips-util.html#IM-CLIP-NONE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_construct_fn ()" link="libvips-util.html#im-construct-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_local ()" link="libvips-util.html#im-local"/>
doc/reference/html/libvips.devhelp:    <function name="im_local_array ()" link="libvips-util.html#im-local-array"/>
doc/reference/html/libvips.devhelp:    <function name="im__break_token ()" link="libvips-util.html#im--break-token"/>
doc/reference/html/libvips.devhelp:    <function name="VSListMap2Fn ()" link="libvips-util.html#VSListMap2Fn"/>
doc/reference/html/libvips.devhelp:    <function name="VSListMap4Fn ()" link="libvips-util.html#VSListMap4Fn"/>
doc/reference/html/libvips.devhelp:    <function name="VSListFold2Fn ()" link="libvips-util.html#VSListFold2Fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_slist_equal ()" link="libvips-util.html#im-slist-equal"/>
doc/reference/html/libvips.devhelp:    <function name="im_slist_map2 ()" link="libvips-util.html#im-slist-map2"/>
doc/reference/html/libvips.devhelp:    <function name="im_slist_map2_rev ()" link="libvips-util.html#im-slist-map2-rev"/>
doc/reference/html/libvips.devhelp:    <function name="im_slist_map4 ()" link="libvips-util.html#im-slist-map4"/>
doc/reference/html/libvips.devhelp:    <function name="im_slist_fold2 ()" link="libvips-util.html#im-slist-fold2"/>
doc/reference/html/libvips.devhelp:    <function name="im_slist_filter ()" link="libvips-util.html#im-slist-filter"/>
doc/reference/html/libvips.devhelp:    <function name="im_slist_free_all ()" link="libvips-util.html#im-slist-free-all"/>
doc/reference/html/libvips.devhelp:    <function name="im_map_equal ()" link="libvips-util.html#im-map-equal"/>
doc/reference/html/libvips.devhelp:    <function name="im_hash_table_map ()" link="libvips-util.html#im-hash-table-map"/>
doc/reference/html/libvips.devhelp:    <function name="VipsTypeMap ()" link="libvips-util.html#VipsTypeMap"/>
doc/reference/html/libvips.devhelp:    <function name="VipsTypeMap2 ()" link="libvips-util.html#VipsTypeMap2"/>
doc/reference/html/libvips.devhelp:    <function name="VipsClassMap ()" link="libvips-util.html#VipsClassMap"/>
doc/reference/html/libvips.devhelp:    <function name="vips_type_map ()" link="libvips-util.html#vips-type-map"/>
doc/reference/html/libvips.devhelp:    <function name="vips_type_map_concrete_all ()" link="libvips-util.html#vips-type-map-concrete-all"/>
doc/reference/html/libvips.devhelp:    <function name="vips_class_map_concrete_all ()" link="libvips-util.html#vips-class-map-concrete-all"/>
doc/reference/html/libvips.devhelp:    <function name="vips_class_find ()" link="libvips-util.html#vips-class-find"/>
doc/reference/html/libvips.devhelp:    <function name="vips_type_find ()" link="libvips-util.html#vips-type-find"/>
doc/reference/html/libvips.devhelp:    <function name="im_strncpy ()" link="libvips-util.html#im-strncpy"/>
doc/reference/html/libvips.devhelp:    <function name="im_strrstr ()" link="libvips-util.html#im-strrstr"/>
doc/reference/html/libvips.devhelp:    <function name="im_strdup ()" link="libvips-util.html#im-strdup"/>
doc/reference/html/libvips.devhelp:    <function name="im_ispostfix ()" link="libvips-util.html#im-ispostfix"/>
doc/reference/html/libvips.devhelp:    <function name="im_isprefix ()" link="libvips-util.html#im-isprefix"/>
doc/reference/html/libvips.devhelp:    <function name="im_vsnprintf ()" link="libvips-util.html#im-vsnprintf"/>
doc/reference/html/libvips.devhelp:    <function name="im_snprintf ()" link="libvips-util.html#im-snprintf"/>
doc/reference/html/libvips.devhelp:    <function name="im_break_token ()" link="libvips-util.html#im-break-token"/>
doc/reference/html/libvips.devhelp:    <function name="im_skip_dir ()" link="libvips-util.html#im-skip-dir"/>
doc/reference/html/libvips.devhelp:    <function name="im_filename_split ()" link="libvips-util.html#im-filename-split"/>
doc/reference/html/libvips.devhelp:    <function name="im_filename_suffix ()" link="libvips-util.html#im-filename-suffix"/>
doc/reference/html/libvips.devhelp:    <function name="im_filename_suffix_match ()" link="libvips-util.html#im-filename-suffix-match"/>
doc/reference/html/libvips.devhelp:    <function name="im_getnextoption ()" link="libvips-util.html#im-getnextoption"/>
doc/reference/html/libvips.devhelp:    <function name="im_getsuboption ()" link="libvips-util.html#im-getsuboption"/>
doc/reference/html/libvips.devhelp:    <function name="im_file_length ()" link="libvips-util.html#im-file-length"/>
doc/reference/html/libvips.devhelp:    <function name="im__write ()" link="libvips-util.html#im--write"/>
doc/reference/html/libvips.devhelp:    <function name="im__file_open_read ()" link="libvips-util.html#im--file-open-read"/>
doc/reference/html/libvips.devhelp:    <function name="im__file_open_write ()" link="libvips-util.html#im--file-open-write"/>
doc/reference/html/libvips.devhelp:    <function name="im__file_read ()" link="libvips-util.html#im--file-read"/>
doc/reference/html/libvips.devhelp:    <function name="im__file_read_name ()" link="libvips-util.html#im--file-read-name"/>
doc/reference/html/libvips.devhelp:    <function name="im__file_write ()" link="libvips-util.html#im--file-write"/>
doc/reference/html/libvips.devhelp:    <function name="enum VipsToken" link="libvips-util.html#VipsToken"/>
doc/reference/html/libvips.devhelp:    <function name="vips__token_get ()" link="libvips-util.html#vips--token-get"/>
doc/reference/html/libvips.devhelp:    <function name="vips__token_must ()" link="libvips-util.html#vips--token-must"/>
doc/reference/html/libvips.devhelp:    <function name="vips__token_need ()" link="libvips-util.html#vips--token-need"/>
doc/reference/html/libvips.devhelp:    <function name="im_existsf ()" link="libvips-util.html#im-existsf"/>
doc/reference/html/libvips.devhelp:    <function name="im_popenf ()" link="libvips-util.html#im-popenf"/>
doc/reference/html/libvips.devhelp:    <function name="im_ispoweroftwo ()" link="libvips-util.html#im-ispoweroftwo"/>
doc/reference/html/libvips.devhelp:    <function name="im_isvips ()" link="libvips-util.html#im-isvips"/>
doc/reference/html/libvips.devhelp:    <function name="im_amiMSBfirst ()" link="libvips-util.html#im-amiMSBfirst"/>
doc/reference/html/libvips.devhelp:    <function name="im__temp_name ()" link="libvips-util.html#im--temp-name"/>
doc/reference/html/libvips.devhelp:    <function name="im__open_temp ()" link="libvips-util.html#im--open-temp"/>
doc/reference/html/libvips.devhelp:    <function name="im_bits_of_fmt ()" link="libvips-util.html#im-bits-of-fmt"/>
doc/reference/html/libvips.devhelp:    <function name="IM_VERSION" link="libvips-version.html#IM-VERSION:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_VERSION_STRING" link="libvips-version.html#IM-VERSION-STRING:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_MAJOR_VERSION" link="libvips-version.html#IM-MAJOR-VERSION:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_MINOR_VERSION" link="libvips-version.html#IM-MINOR-VERSION:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_MICRO_VERSION" link="libvips-version.html#IM-MICRO-VERSION:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INTERFACE_AGE" link="libvips-version.html#IM-INTERFACE-AGE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_BINARY_AGE" link="libvips-version.html#IM-BINARY-AGE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_DOUBLE" link="libvips-type.html#IM-TYPE-NAME-DOUBLE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_INT" link="libvips-type.html#IM-TYPE-NAME-INT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_COMPLEX" link="libvips-type.html#IM-TYPE-NAME-COMPLEX:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_STRING" link="libvips-type.html#IM-TYPE-NAME-STRING:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_IMASK" link="libvips-type.html#IM-TYPE-NAME-IMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_DMASK" link="libvips-type.html#IM-TYPE-NAME-DMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_IMAGE" link="libvips-type.html#IM-TYPE-NAME-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_DISPLAY" link="libvips-type.html#IM-TYPE-NAME-DISPLAY:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_GVALUE" link="libvips-type.html#IM-TYPE-NAME-GVALUE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_NAME_ARRAY" link="libvips-type.html#IM-TYPE-NAME-ARRAY:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_IM" link="libvips-type.html#IM-TYPE-IM:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_AR()" link="libvips-type.html#IM-TYPE-AR:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_type_t" link="libvips-type.html#im-type-t"/>
doc/reference/html/libvips.devhelp:    <function name="im_value_t" link="libvips-type.html#im-value-t"/>
doc/reference/html/libvips.devhelp:    <function name="im_value_mask_t" link="libvips-type.html#im-value-mask-t"/>
doc/reference/html/libvips.devhelp:    <function name="im_value_array_t" link="libvips-type.html#im-value-array-t"/>
doc/reference/html/libvips.devhelp:    <function name="enum im_argument_flags" link="libvips-type.html#im-argument-flags"/>
doc/reference/html/libvips.devhelp:    <function name="im_argument_t" link="libvips-type.html#im-argument-t"/>
doc/reference/html/libvips.devhelp:    <function name="enum im_operation_flags" link="libvips-type.html#im-operation-flags"/>
doc/reference/html/libvips.devhelp:    <function name="im_operation_dispatch_fn ()" link="libvips-type.html#im-operation-dispatch-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_operation_t" link="libvips-type.html#im-operation-t"/>
doc/reference/html/libvips.devhelp:    <function name="im_type_register ()" link="libvips-type.html#im-type-register"/>
doc/reference/html/libvips.devhelp:    <function name="im_type_map ()" link="libvips-type.html#im-type-map"/>
doc/reference/html/libvips.devhelp:    <function name="im_type_lookup ()" link="libvips-type.html#im-type-lookup"/>
doc/reference/html/libvips.devhelp:    <function name="im_operation_register ()" link="libvips-type.html#im-operation-register"/>
doc/reference/html/libvips.devhelp:    <function name="im_operation_registerv ()" link="libvips-type.html#im-operation-registerv"/>
doc/reference/html/libvips.devhelp:    <function name="im_operation_map ()" link="libvips-type.html#im-operation-map"/>
doc/reference/html/libvips.devhelp:    <function name="im_operation_lookup ()" link="libvips-type.html#im-operation-lookup"/>
doc/reference/html/libvips.devhelp:    <function name="im_argument_new ()" link="libvips-type.html#im-argument-new"/>
doc/reference/html/libvips.devhelp:    <function name="Rect" link="libvips-rect.html#Rect"/>
doc/reference/html/libvips.devhelp:    <function name="IM_RECT_RIGHT()" link="libvips-rect.html#IM-RECT-RIGHT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_RECT_BOTTOM()" link="libvips-rect.html#IM-RECT-BOTTOM:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_RECT_HCENTRE()" link="libvips-rect.html#IM-RECT-HCENTRE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_RECT_VCENTRE()" link="libvips-rect.html#IM-RECT-VCENTRE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_rect_marginadjust ()" link="libvips-rect.html#im-rect-marginadjust"/>
doc/reference/html/libvips.devhelp:    <function name="im_rect_includespoint ()" link="libvips-rect.html#im-rect-includespoint"/>
doc/reference/html/libvips.devhelp:    <function name="im_rect_includesrect ()" link="libvips-rect.html#im-rect-includesrect"/>
doc/reference/html/libvips.devhelp:    <function name="im_rect_intersectrect ()" link="libvips-rect.html#im-rect-intersectrect"/>
doc/reference/html/libvips.devhelp:    <function name="im_rect_isempty ()" link="libvips-rect.html#im-rect-isempty"/>
doc/reference/html/libvips.devhelp:    <function name="im_rect_unionrect ()" link="libvips-rect.html#im-rect-unionrect"/>
doc/reference/html/libvips.devhelp:    <function name="im_rect_equalsrect ()" link="libvips-rect.html#im-rect-equalsrect"/>
doc/reference/html/libvips.devhelp:    <function name="im_rect_dup ()" link="libvips-rect.html#im-rect-dup"/>
doc/reference/html/libvips.devhelp:    <function name="im_rect_normalise ()" link="libvips-rect.html#im-rect-normalise"/>
doc/reference/html/libvips.devhelp:    <function name="im_semaphore_t" link="libvips-semaphore.html#im-semaphore-t"/>
doc/reference/html/libvips.devhelp:    <function name="im_semaphore_up ()" link="libvips-semaphore.html#im-semaphore-up"/>
doc/reference/html/libvips.devhelp:    <function name="im_semaphore_down ()" link="libvips-semaphore.html#im-semaphore-down"/>
doc/reference/html/libvips.devhelp:    <function name="im_semaphore_upn ()" link="libvips-semaphore.html#im-semaphore-upn"/>
doc/reference/html/libvips.devhelp:    <function name="im_semaphore_downn ()" link="libvips-semaphore.html#im-semaphore-downn"/>
doc/reference/html/libvips.devhelp:    <function name="im_semaphore_destroy ()" link="libvips-semaphore.html#im-semaphore-destroy"/>
doc/reference/html/libvips.devhelp:    <function name="im_semaphore_init ()" link="libvips-semaphore.html#im-semaphore-init"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_IMAGEVEC" link="libvips-dispatch.html#IM-TYPE-IMAGEVEC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_DOUBLEVEC" link="libvips-dispatch.html#IM-TYPE-DOUBLEVEC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_INTVEC" link="libvips-dispatch.html#IM-TYPE-INTVEC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_DOUBLE" link="libvips-dispatch.html#IM-TYPE-DOUBLE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_INT" link="libvips-dispatch.html#IM-TYPE-INT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_COMPLEX" link="libvips-dispatch.html#IM-TYPE-COMPLEX:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_STRING" link="libvips-dispatch.html#IM-TYPE-STRING:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_IMASK" link="libvips-dispatch.html#IM-TYPE-IMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_DMASK" link="libvips-dispatch.html#IM-TYPE-DMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_IMAGE" link="libvips-dispatch.html#IM-TYPE-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_DISPLAY" link="libvips-dispatch.html#IM-TYPE-DISPLAY:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_GVALUE" link="libvips-dispatch.html#IM-TYPE-GVALUE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_TYPE_INTERPOLATE" link="libvips-dispatch.html#IM-TYPE-INTERPOLATE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_arg_type" link="libvips-dispatch.html#im-arg-type"/>
doc/reference/html/libvips.devhelp:    <function name="im_object" link="libvips-dispatch.html#im-object"/>
doc/reference/html/libvips.devhelp:    <function name="enum im_type_flags" link="libvips-dispatch.html#im-type-flags"/>
doc/reference/html/libvips.devhelp:    <function name="im_init_obj_fn ()" link="libvips-dispatch.html#im-init-obj-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_dest_obj_fn ()" link="libvips-dispatch.html#im-dest-obj-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_type_desc" link="libvips-dispatch.html#im-type-desc"/>
doc/reference/html/libvips.devhelp:    <function name="im_print_obj_fn ()" link="libvips-dispatch.html#im-print-obj-fn"/>
doc/reference/html/libvips.devhelp:    <function name="im_arg_desc" link="libvips-dispatch.html#im-arg-desc"/>
doc/reference/html/libvips.devhelp:    <function name="im_dispatch_fn ()" link="libvips-dispatch.html#im-dispatch-fn"/>
doc/reference/html/libvips.devhelp:    <function name="IM_MAX_ARGS" link="libvips-dispatch.html#IM-MAX-ARGS:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="enum im_fn_flags" link="libvips-dispatch.html#im-fn-flags"/>
doc/reference/html/libvips.devhelp:    <function name="im_function" link="libvips-dispatch.html#im-function"/>
doc/reference/html/libvips.devhelp:    <function name="im_package" link="libvips-dispatch.html#im-package"/>
doc/reference/html/libvips.devhelp:    <function name="im_mask_object" link="libvips-dispatch.html#im-mask-object"/>
doc/reference/html/libvips.devhelp:    <function name="im_doublevec_object" link="libvips-dispatch.html#im-doublevec-object"/>
doc/reference/html/libvips.devhelp:    <function name="im_intvec_object" link="libvips-dispatch.html#im-intvec-object"/>
doc/reference/html/libvips.devhelp:    <function name="im_imagevec_object" link="libvips-dispatch.html#im-imagevec-object"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_int" link="libvips-dispatch.html#im--input-int"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_intvec" link="libvips-dispatch.html#im--input-intvec"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_imask" link="libvips-dispatch.html#im--input-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_int" link="libvips-dispatch.html#im--output-int"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_intvec" link="libvips-dispatch.html#im--output-intvec"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_imask" link="libvips-dispatch.html#im--output-imask"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_double" link="libvips-dispatch.html#im--input-double"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_doublevec" link="libvips-dispatch.html#im--input-doublevec"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_dmask" link="libvips-dispatch.html#im--input-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_double" link="libvips-dispatch.html#im--output-double"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_doublevec" link="libvips-dispatch.html#im--output-doublevec"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_dmask" link="libvips-dispatch.html#im--output-dmask"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_dmask_screen" link="libvips-dispatch.html#im--output-dmask-screen"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_complex" link="libvips-dispatch.html#im--output-complex"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_string" link="libvips-dispatch.html#im--input-string"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_string" link="libvips-dispatch.html#im--output-string"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_imagevec" link="libvips-dispatch.html#im--input-imagevec"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_image" link="libvips-dispatch.html#im--input-image"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_image" link="libvips-dispatch.html#im--output-image"/>
doc/reference/html/libvips.devhelp:    <function name="im__rw_image" link="libvips-dispatch.html#im--rw-image"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_display" link="libvips-dispatch.html#im--input-display"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_display" link="libvips-dispatch.html#im--output-display"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_gvalue" link="libvips-dispatch.html#im--input-gvalue"/>
doc/reference/html/libvips.devhelp:    <function name="im__output_gvalue" link="libvips-dispatch.html#im--output-gvalue"/>
doc/reference/html/libvips.devhelp:    <function name="im__input_interpolate" link="libvips-dispatch.html#im--input-interpolate"/>
doc/reference/html/libvips.devhelp:    <function name="im__iprint ()" link="libvips-dispatch.html#im--iprint"/>
doc/reference/html/libvips.devhelp:    <function name="im__ivprint ()" link="libvips-dispatch.html#im--ivprint"/>
doc/reference/html/libvips.devhelp:    <function name="im__dprint ()" link="libvips-dispatch.html#im--dprint"/>
doc/reference/html/libvips.devhelp:    <function name="im__dvprint ()" link="libvips-dispatch.html#im--dvprint"/>
doc/reference/html/libvips.devhelp:    <function name="im__dmsprint ()" link="libvips-dispatch.html#im--dmsprint"/>
doc/reference/html/libvips.devhelp:    <function name="im__cprint ()" link="libvips-dispatch.html#im--cprint"/>
doc/reference/html/libvips.devhelp:    <function name="im__sprint ()" link="libvips-dispatch.html#im--sprint"/>
doc/reference/html/libvips.devhelp:    <function name="im__displayprint ()" link="libvips-dispatch.html#im--displayprint"/>
doc/reference/html/libvips.devhelp:    <function name="im__gprint ()" link="libvips-dispatch.html#im--gprint"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_INT()" link="libvips-dispatch.html#IM-INPUT-INT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_INTVEC()" link="libvips-dispatch.html#IM-INPUT-INTVEC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_IMASK()" link="libvips-dispatch.html#IM-INPUT-IMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_INT()" link="libvips-dispatch.html#IM-OUTPUT-INT:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_INTVEC()" link="libvips-dispatch.html#IM-OUTPUT-INTVEC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_IMASK()" link="libvips-dispatch.html#IM-OUTPUT-IMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_DOUBLE()" link="libvips-dispatch.html#IM-INPUT-DOUBLE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_DOUBLEVEC()" link="libvips-dispatch.html#IM-INPUT-DOUBLEVEC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_DMASK()" link="libvips-dispatch.html#IM-INPUT-DMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_DOUBLE()" link="libvips-dispatch.html#IM-OUTPUT-DOUBLE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_DOUBLEVEC()" link="libvips-dispatch.html#IM-OUTPUT-DOUBLEVEC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_DMASK()" link="libvips-dispatch.html#IM-OUTPUT-DMASK:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_DMASK_STATS()" link="libvips-dispatch.html#IM-OUTPUT-DMASK-STATS:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_COMPLEX()" link="libvips-dispatch.html#IM-OUTPUT-COMPLEX:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_STRING()" link="libvips-dispatch.html#IM-INPUT-STRING:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_STRING()" link="libvips-dispatch.html#IM-OUTPUT-STRING:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_IMAGE()" link="libvips-dispatch.html#IM-INPUT-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_IMAGEVEC()" link="libvips-dispatch.html#IM-INPUT-IMAGEVEC:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_IMAGE()" link="libvips-dispatch.html#IM-OUTPUT-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_RW_IMAGE()" link="libvips-dispatch.html#IM-RW-IMAGE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_DISPLAY()" link="libvips-dispatch.html#IM-INPUT-DISPLAY:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_DISPLAY()" link="libvips-dispatch.html#IM-OUTPUT-DISPLAY:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_GVALUE()" link="libvips-dispatch.html#IM-INPUT-GVALUE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_OUTPUT_GVALUE()" link="libvips-dispatch.html#IM-OUTPUT-GVALUE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="IM_INPUT_INTERPOLATE()" link="libvips-dispatch.html#IM-INPUT-INTERPOLATE:CAPS"/>
doc/reference/html/libvips.devhelp:    <function name="im_load_plugin ()" link="libvips-dispatch.html#im-load-plugin"/>
doc/reference/html/libvips.devhelp:    <function name="im_load_plugins ()" link="libvips-dispatch.html#im-load-plugins"/>
doc/reference/html/libvips.devhelp:    <function name="im_close_plugins ()" link="libvips-dispatch.html#im-close-plugins"/>
doc/reference/html/libvips.devhelp:    <function name="im_map_packages ()" link="libvips-dispatch.html#im-map-packages"/>
doc/reference/html/libvips.devhelp:    <function name="im_find_function ()" link="libvips-dispatch.html#im-find-function"/>
doc/reference/html/libvips.devhelp:    <function name="im_find_package ()" link="libvips-dispatch.html#im-find-package"/>
doc/reference/html/libvips.devhelp:    <function name="im_package_of_function ()" link="libvips-dispatch.html#im-package-of-function"/>
doc/reference/html/libvips.devhelp:    <function name="im_free_vargv ()" link="libvips-dispatch.html#im-free-vargv"/>
doc/reference/html/libvips.devhelp:    <function name="im_allocate_vargv ()" link="libvips-dispatch.html#im-allocate-vargv"/>
doc/reference/html/libvips.devhelp:    <function name="im_run_command ()" link="libvips-dispatch.html#im-run-command"/>
doc/reference/html/VipsFormat.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/VipsFormat.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/VipsFormat.html:<link rel="prev" href="libvips-convolution.html" title="convolution">
doc/reference/html/VipsFormat.html:<link rel="next" href="libvips-freq-filt.html" title="freq_filt">
doc/reference/html/VipsFormat.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/VipsFormat.html:<td><a accesskey="p" href="libvips-convolution.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/VipsFormat.html:<td><a accesskey="n" href="libvips-freq-filt.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/VipsFormat.html:                  <a href="#VipsFormat.object-hierarchy" class="shortcut">Object Hierarchy</a>
doc/reference/html/VipsFormat.html:<a name="VipsFormat.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/VipsFormat.html:                    <a class="link" href="VipsFormat.html#VipsFormat-struct" title="VipsFormat">VipsFormat</a>;
doc/reference/html/VipsFormat.html:<span class="returnvalue">void</span> *              <a class="link" href="VipsFormat.html#vips-format-map" title="vips_format_map ()">vips_format_map</a>                     (<em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/VipsFormat.html:<a class="link" href="VipsFormat.html#VipsFormatClass" title="VipsFormatClass"><span class="returnvalue">VipsFormatClass</span></a> *   <a class="link" href="VipsFormat.html#vips-format-for-file" title="vips_format_for_file ()">vips_format_for_file</a>                (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
doc/reference/html/VipsFormat.html:<a class="link" href="VipsFormat.html#VipsFormatClass" title="VipsFormatClass"><span class="returnvalue">VipsFormatClass</span></a> *   <a class="link" href="VipsFormat.html#vips-format-for-name" title="vips_format_for_name ()">vips_format_for_name</a>                (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
doc/reference/html/VipsFormat.html:<a class="link" href="VipsFormat.html#VipsFormatFlags" title="enum VipsFormatFlags"><span class="returnvalue">VipsFormatFlags</span></a>     <a class="link" href="VipsFormat.html#vips-format-get-flags" title="vips_format_get_flags ()">vips_format_get_flags</a>               (<em class="parameter"><code><a class="link" href="VipsFormat.html#VipsFormatClass" title="VipsFormatClass"><span class="type">VipsFormatClass</span></a> *format</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#vips-format-read" title="vips_format_read ()">vips_format_read</a>                    (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#vips-format-write" title="vips_format_write ()">vips_format_write</a>                   (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-jpeg2vips" title="im_jpeg2vips ()">im_jpeg2vips</a>                        (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-vips2jpeg" title="im_vips2jpeg ()">im_vips2jpeg</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-vips2mimejpeg" title="im_vips2mimejpeg ()">im_vips2mimejpeg</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-vips2bufjpeg" title="im_vips2bufjpeg ()">im_vips2bufjpeg</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-tiff2vips" title="im_tiff2vips ()">im_tiff2vips</a>                        (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-vips2tiff" title="im_vips2tiff ()">im_vips2tiff</a>                        (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-tile-cache" title="im_tile_cache ()">im_tile_cache</a>                       (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-magick2vips" title="im_magick2vips ()">im_magick2vips</a>                      (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-exr2vips" title="im_exr2vips ()">im_exr2vips</a>                         (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-ppm2vips" title="im_ppm2vips ()">im_ppm2vips</a>                         (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-vips2ppm" title="im_vips2ppm ()">im_vips2ppm</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-analyze2vips" title="im_analyze2vips ()">im_analyze2vips</a>                     (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-csv2vips" title="im_csv2vips ()">im_csv2vips</a>                         (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-vips2csv" title="im_vips2csv ()">im_vips2csv</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-png2vips" title="im_png2vips ()">im_png2vips</a>                         (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-vips2png" title="im_vips2png ()">im_vips2png</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-raw2vips" title="im_raw2vips ()">im_raw2vips</a>                         (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-vips2raw" title="im_vips2raw ()">im_vips2raw</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-mat2vips" title="im_mat2vips ()">im_mat2vips</a>                         (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-rad2vips" title="im_rad2vips ()">im_rad2vips</a>                         (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
doc/reference/html/VipsFormat.html:<span class="returnvalue">int</span>                 <a class="link" href="VipsFormat.html#im-vips2rad" title="im_vips2rad ()">im_vips2rad</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *in</code></em>,
doc/reference/html/VipsFormat.html:<a name="VipsFormat.object-hierarchy"></a><h2>Object Hierarchy</h2>
doc/reference/html/VipsFormat.html:   +----<a class="link" href="libvips-VipsArgument.html#VipsObject">VipsObject</a>
doc/reference/html/VipsFormat.html:         +----VipsFormat
doc/reference/html/VipsFormat.html:it automatically appears in all VIPS user-interfaces. It will also be
doc/reference/html/VipsFormat.html:transparently supported by <a class="link" href="libvips-image.html#im-open" title="im_open ()"><code class="function">im_open()</code></a>.
doc/reference/html/VipsFormat.html:<a name="VipsFormat-struct"></a><h3>VipsFormat</h3>
doc/reference/html/VipsFormat.html:<code class="function">load()</code> method instead. Return 0 for success, -1 for error, setting
doc/reference/html/VipsFormat.html:<a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/VipsFormat.html:<code class="function">load()</code> This function should load the image, or perhaps use <a class="link" href="libvips-generate.html#im-generate" title="im_generate ()"><code class="function">im_generate()</code></a> to
doc/reference/html/VipsFormat.html:load options in the filename, see (for example) <a class="link" href="VipsFormat.html#im-jpeg2vips" title="im_jpeg2vips ()"><code class="function">im_jpeg2vips()</code></a>.
doc/reference/html/VipsFormat.html:define this method, you can still define <code class="function">save()</code> and have a save-only
doc/reference/html/VipsFormat.html:Return 0 for success, -1 for error, setting
doc/reference/html/VipsFormat.html:<a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/VipsFormat.html:save options in the filename, see (for example) <a class="link" href="VipsFormat.html#im-vips2tiff" title="im_vips2tiff ()"><code class="function">im_vips2tiff()</code></a>.
doc/reference/html/VipsFormat.html:define this method, you can still define <code class="function">load()</code> and have a load-only
doc/reference/html/VipsFormat.html:Return 0 for success, -1 for error, setting
doc/reference/html/VipsFormat.html:<a class="link" href="libvips-error.html#im-error" title="im_error ()"><code class="function">im_error()</code></a>.
doc/reference/html/VipsFormat.html:<em class="structfield"><code>suffs</code></em> A <code class="literal">NULL</code>-terminated list of possible file 
doc/reference/html/VipsFormat.html:<em class="structfield"><code>description</code></em> in <a class="link" href="libvips-VipsArgument.html#VipsObject"><span class="type">VipsObject</span></a>. 
doc/reference/html/VipsFormat.html:At the command-line, use:
doc/reference/html/VipsFormat.html:vips --list classes | grep Format
doc/reference/html/VipsFormat.html:	object_class-&gt;nickname = "tiff";
doc/reference/html/VipsFormat.html:	object_class-&gt;description = _( "TIFF" );
doc/reference/html/VipsFormat.html:	format_class-&gt;is_a = istiff;
doc/reference/html/VipsFormat.html:	format_class-&gt;header = tiff2vips_header;
doc/reference/html/VipsFormat.html:	format_class-&gt;load = im_tiff2vips;
doc/reference/html/VipsFormat.html:	format_class-&gt;save = im_vips2tiff;
doc/reference/html/VipsFormat.html:	format_class-&gt;get_flags = tiff_flags;
doc/reference/html/VipsFormat.html:	format_class-&gt;suffs = tiff_suffs;
doc/reference/html/VipsFormat.html:	/* Null-terminated list of allowed suffixes, eg. ".tif", ".tiff".
doc/reference/html/VipsFormat.html:<a name="vips-format-map"></a><h3>vips_format_map ()</h3>
doc/reference/html/VipsFormat.html:<pre class="programlisting"><span class="returnvalue">void</span> *              vips_format_map                     (<em class="parameter"><code><a class="link" href="libvips-util.html#VSListMap2Fn" title="VSListMap2Fn ()"><span class="type">VSListMap2Fn</span></a> fn</code></em>,
doc/reference/html/VipsFormat.html:it returns non-<code class="literal">NULL</code>, iteration terminates and that value is returned. The
doc/reference/html/VipsFormat.html:<a name="vips-format-for-file"></a><h3>vips_format_for_file ()</h3>
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html#vips-format-read" title="vips_format_read ()"><code class="function">vips_format_read()</code></a>, <a class="link" href="VipsFormat.html#vips-format-for-name" title="vips_format_for_name ()"><code class="function">vips_format_for_name()</code></a>.
doc/reference/html/VipsFormat.html:<a name="vips-format-for-name"></a><h3>vips_format_for_name ()</h3>
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html#vips-format-write" title="vips_format_write ()"><code class="function">vips_format_write()</code></a>, <a class="link" href="VipsFormat.html#vips-format-for-file" title="vips_format_for_file ()"><code class="function">vips_format_for_file()</code></a>.
doc/reference/html/VipsFormat.html:<a name="vips-format-get-flags"></a><h3>vips_format_get_flags ()</h3>
doc/reference/html/VipsFormat.html:<a name="vips-format-read"></a><h3>vips_format_read ()</h3>
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html#vips-format-write" title="vips_format_write ()"><code class="function">vips_format_write()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error
doc/reference/html/VipsFormat.html:<a name="vips-format-write"></a><h3>vips_format_write ()</h3>
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html#vips-format-read" title="vips_format_read ()"><code class="function">vips_format_read()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error
doc/reference/html/VipsFormat.html:<a name="im-jpeg2vips"></a><h3>im_jpeg2vips ()</h3>
doc/reference/html/VipsFormat.html:Read a JPEG file into a VIPS image. It can read most 8-bit JPEG images, 
doc/reference/html/VipsFormat.html:filename.jpg:<span class="emphasis"><em>shrink-factor</em></span>,<span class="emphasis"><em>fail</em></span>
doc/reference/html/VipsFormat.html:<span class="emphasis"><em>shrink-factor</em></span> 
doc/reference/html/VipsFormat.html:metadata.  You need to use something like <a class="link" href="libvips-colour.html#im-icc-import" title="im_icc_import ()"><code class="function">im_icc_import()</code></a> to get CIE 
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-vips2jpeg" title="im_vips2jpeg ()"><code class="function">im_vips2jpeg()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-vips2jpeg"></a><h3>im_vips2jpeg ()</h3>
doc/reference/html/VipsFormat.html:contains an ICC profile named IM_META_ICC_NAME ("icc-profile-data"), the
doc/reference/html/VipsFormat.html:Will write "fred.jpg" at high-quality with no ICC profile.
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-jpeg2vips" title="im_jpeg2vips ()"><code class="function">im_jpeg2vips()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-vips2mimejpeg"></a><h3>im_vips2mimejpeg ()</h3>
doc/reference/html/VipsFormat.html:As <a class="link" href="VipsFormat.html#im-vips2jpeg" title="im_vips2jpeg ()"><code class="function">im_vips2jpeg()</code></a>, but save as a mime jpeg on stdout.
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-vips2jpeg" title="im_vips2jpeg ()"><code class="function">im_vips2jpeg()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-vips2bufjpeg"></a><h3>im_vips2bufjpeg ()</h3>
doc/reference/html/VipsFormat.html:As <a class="link" href="VipsFormat.html#im-vips2jpeg" title="im_vips2jpeg ()"><code class="function">im_vips2jpeg()</code></a>, but save as a memory buffer. The memory is allocated
doc/reference/html/VipsFormat.html:<em class="parameter"><code>olen</code></em>. <em class="parameter"><code>olen</code></em> should really be a size_t rather than an int :-(
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-vips2jpeg" title="im_vips2jpeg ()"><code class="function">im_vips2jpeg()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-tiff2vips"></a><h3>im_tiff2vips ()</h3>
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-vips2tiff" title="im_vips2tiff ()"><code class="function">im_vips2tiff()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-vips2tiff"></a><h3>im_vips2tiff ()</h3>
doc/reference/html/VipsFormat.html:filename.tif:<span class="emphasis"><em>compression</em></span>,<span class="emphasis"><em>layout</em></span>,<span class="emphasis"><em>multi-res</em></span>,<span class="emphasis"><em>format</em></span>,<span class="emphasis"><em>resolution</em></span>,<span class="emphasis"><em>icc</em></span>, <span class="emphasis"><em>bigtiff</em></span>
doc/reference/html/VipsFormat.html:"ccittfax4" (CCITT Group 4 fax encoding), "lzw"  (Lempel-Ziv compression).
doc/reference/html/VipsFormat.html:good for 1-bit images, and deflate is the best lossless compression TIFF 
doc/reference/html/VipsFormat.html:<span class="emphasis"><em>multi-res</em></span> 
doc/reference/html/VipsFormat.html:pyramid). The default multi-res mode is "flat".
doc/reference/html/VipsFormat.html:shoiuld be "manybit" (don't bit-reduce images) or "onebit" (one band 8 
doc/reference/html/VipsFormat.html:resolution unit is taken from the header field "resolution-unit"
doc/reference/html/VipsFormat.html:(<a class="link" href="libvips-meta.html#IM-META-RESOLUTION-UNIT:CAPS" title="IM_META_RESOLUTION_UNIT"><span class="type">IM_META_RESOLUTION_UNIT</span></a> in C). If this field is not set, then 
doc/reference/html/VipsFormat.html:Will write "fred.tif" as a tiled jpeg-compressed pyramid.
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-tiff2vips" title="im_tiff2vips ()"><code class="function">im_tiff2vips()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-tile-cache"></a><h3>im_tile_cache ()</h3>
doc/reference/html/VipsFormat.html:This operation behaves rather like <a class="link" href="libvips-conversion.html#im-copy" title="im_copy ()"><code class="function">im_copy()</code></a> between images
doc/reference/html/VipsFormat.html:This cache is made of up to <em class="parameter"><code>max_tiles</code></em> tiles (a value of -1 for
doc/reference/html/VipsFormat.html:<a class="link" href="libvips-generate.html#im-prepare" title="im_prepare ()"><code class="function">im_prepare()</code></a>.
doc/reference/html/VipsFormat.html:This is a lower-level operation than <a class="link" href="libvips-generate.html#im-cache" title="im_cache ()"><code class="function">im_cache()</code></a> since it does no 
doc/reference/html/VipsFormat.html:<a class="link" href="VipsFormat.html#im-exr2vips" title="im_exr2vips ()"><code class="function">im_exr2vips()</code></a> on tiled images.
doc/reference/html/VipsFormat.html:See also: <a class="link" href="libvips-generate.html#im-cache" title="im_cache ()"><code class="function">im_cache()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-magick2vips"></a><h3>im_magick2vips ()</h3>
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-exr2vips"></a><h3>im_exr2vips ()</h3>
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-ppm2vips"></a><h3>im_ppm2vips ()</h3>
doc/reference/html/VipsFormat.html:PFM images have the scale factor attached as "pfm-scale".
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-vips2ppm" title="im_vips2ppm ()"><code class="function">im_vips2ppm()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get-double" title="im_meta_get_double ()"><code class="function">im_meta_get_double()</code></a>
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-vips2ppm"></a><h3>im_vips2ppm ()</h3>
doc/reference/html/VipsFormat.html:"pfm-scale" metadata.
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-ppm2vips" title="im_ppm2vips ()"><code class="function">im_ppm2vips()</code></a>, <a class="link" href="libvips-meta.html#im-meta-set-double" title="im_meta_set_double ()"><code class="function">im_meta_set_double()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-analyze2vips"></a><h3>im_analyze2vips ()</h3>
doc/reference/html/VipsFormat.html:loaded lazilly and byte-swapped, if necessary. The Analyze metadata is read
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>, <a class="link" href="libvips-conversion.html#im-grid" title="im_grid ()"><code class="function">im_grid()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-csv2vips"></a><h3>im_csv2vips ()</h3>
doc/reference/html/VipsFormat.html:Load a CSV (comma-separated values) file. The output image is always 1 
doc/reference/html/VipsFormat.html:band (monochrome), <a class="link" href="libvips-image.html#IM-BANDFMT-DOUBLE:CAPS"><code class="literal">IM_BANDFMT_DOUBLE</code></a>. 
doc/reference/html/VipsFormat.html:<span class="emphasis"><em>skip:lines-to-skip</em></span> The number of lines to skip at 
doc/reference/html/VipsFormat.html:<span class="emphasis"><em>line:lines-to-read</em></span> 
doc/reference/html/VipsFormat.html:The number of lines to read from the file. Default -1, meaning read to end of
doc/reference/html/VipsFormat.html:<span class="emphasis"><em>whi:whitespace-characters</em></span> 
doc/reference/html/VipsFormat.html:<span class="emphasis"><em>sep:separator-characters</em></span> 
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-vips2csv" title="im_vips2csv ()"><code class="function">im_vips2csv()</code></a>, <a class="link" href="libvips-mask.html#im-read-dmask" title="im_read_dmask ()"><code class="function">im_read_dmask()</code></a>, <a class="link" href="VipsFormat.html#im-ppm2vips" title="im_ppm2vips ()"><code class="function">im_ppm2vips()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-vips2csv"></a><h3>im_vips2csv ()</h3>
doc/reference/html/VipsFormat.html:Save a CSV (comma-separated values) file. The image is written
doc/reference/html/VipsFormat.html:<span class="emphasis"><em>sep:separator-string</em></span> 
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-csv2vips" title="im_csv2vips ()"><code class="function">im_csv2vips()</code></a>, <a class="link" href="libvips-mask.html#im-write-dmask" title="im_write_dmask ()"><code class="function">im_write_dmask()</code></a>, <a class="link" href="VipsFormat.html#im-vips2ppm" title="im_vips2ppm ()"><code class="function">im_vips2ppm()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-png2vips"></a><h3>im_png2vips ()</h3>
doc/reference/html/VipsFormat.html:Read a PNG file into a VIPS image. It can read all png images, including 8-
doc/reference/html/VipsFormat.html:and 16-bit images, 1 and 3 channel, with and without an alpha channel.
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-vips2png" title="im_vips2png ()"><code class="function">im_vips2png()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-vips2png"></a><h3>im_vips2png ()</h3>
doc/reference/html/VipsFormat.html:Compress with this much effort (0 - 9). Default 6.
doc/reference/html/VipsFormat.html:non-interlaced image.
doc/reference/html/VipsFormat.html:saved as 16-bit PNG, others are saved as 8-bit PNG.
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-png2vips" title="im_png2vips ()"><code class="function">im_png2vips()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-raw2vips"></a><h3>im_raw2vips ()</h3>
doc/reference/html/VipsFormat.html:Use functions like <a class="link" href="libvips-conversion.html#im-copy-morph" title="im_copy_morph ()"><code class="function">im_copy_morph()</code></a> to set the pixel type, byte ordering 
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-vips2raw" title="im_vips2raw ()"><code class="function">im_vips2raw()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-vips2raw"></a><h3>im_vips2raw ()</h3>
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="VipsFormat.html#im-raw2vips" title="im_raw2vips ()"><code class="function">im_raw2vips()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-mat2vips"></a><h3>im_mat2vips ()</h3>
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-rad2vips"></a><h3>im_rad2vips ()</h3>
doc/reference/html/VipsFormat.html:Radiance files are read as <a class="link" href="libvips-image.html#IM-CODING-RAD:CAPS"><span class="type">IM_CODING_RAD</span></a>. They have one byte for each of
doc/reference/html/VipsFormat.html:<a class="link" href="libvips-conversion.html#im-extract-area" title="im_extract_area ()"><code class="function">im_extract_area()</code></a>) can work directly with images in this format, but 
doc/reference/html/VipsFormat.html:<a class="link" href="libvips-image.html#IM-CODING-RAD:CAPS"><span class="type">IM_CODING_RAD</span></a> images to 3 band float with <a class="link" href="libvips-colour.html#im-rad2float" title="im_rad2float ()"><code class="function">im_rad2float()</code></a> if you want to do
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="libvips-colour.html#im-rad2float" title="im_rad2float ()"><code class="function">im_rad2float()</code></a>, <a class="link" href="VipsFormat.html#im-vips2rad" title="im_vips2rad ()"><code class="function">im_vips2rad()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="im-vips2rad"></a><h3>im_vips2rad ()</h3>
doc/reference/html/VipsFormat.html:This operation needs an <a class="link" href="libvips-image.html#IM-CODING-RAD:CAPS"><span class="type">IM_CODING_RAD</span></a> image, or a three-band float image.
doc/reference/html/VipsFormat.html:See also: <a class="link" href="VipsFormat.html" title="VipsFormat"><span class="type">VipsFormat</span></a>, <a class="link" href="libvips-colour.html#im-float2rad" title="im_float2rad ()"><code class="function">im_float2rad()</code></a>, <a class="link" href="VipsFormat.html#im-rad2vips" title="im_rad2vips ()"><code class="function">im_rad2vips()</code></a>.
doc/reference/html/VipsFormat.html:<td> 0 on success, -1 on error.
doc/reference/html/VipsFormat.html:<a name="VipsFormat.see-also"></a><h2>See Also</h2>
doc/reference/html/VipsFormat.html:<a class="link" href="libvips-image.html" title="image">image</a>
doc/reference/html/VipsFormat.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-meta.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-meta.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-meta.html:<link rel="prev" href="libvips-callback.html" title="callback">
doc/reference/html/libvips-meta.html:<link rel="next" href="libvips-region.html" title="region">
doc/reference/html/libvips-meta.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-meta.html:<td><a accesskey="p" href="libvips-callback.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-meta.html:<td><a accesskey="n" href="libvips-region.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-meta.html:<a href="#libvips-meta.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-meta.html:                  <a href="#libvips-meta.description" class="shortcut">Description</a>
doc/reference/html/libvips-meta.html:<a name="libvips-meta"></a><div class="titlepage"></div>
doc/reference/html/libvips-meta.html:<h2><span class="refentrytitle"><a name="libvips-meta.top_of_page"></a>meta</span></h2>
doc/reference/html/libvips-meta.html:<a name="libvips-meta.stability-level"></a><h2>Stability Level</h2>
doc/reference/html/libvips-meta.html:<a name="libvips-meta.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-meta.html:#define             <a class="link" href="libvips-meta.html#IM-META-EXIF-NAME:CAPS" title="IM_META_EXIF_NAME">IM_META_EXIF_NAME</a>
doc/reference/html/libvips-meta.html:#define             <a class="link" href="libvips-meta.html#IM-META-ICC-NAME:CAPS" title="IM_META_ICC_NAME">IM_META_ICC_NAME</a>
doc/reference/html/libvips-meta.html:#define             <a class="link" href="libvips-meta.html#IM-META-XML:CAPS" title="IM_META_XML">IM_META_XML</a>
doc/reference/html/libvips-meta.html:#define             <a class="link" href="libvips-meta.html#IM-META-RESOLUTION-UNIT:CAPS" title="IM_META_RESOLUTION_UNIT">IM_META_RESOLUTION_UNIT</a>
doc/reference/html/libvips-meta.html:#define             <a class="link" href="libvips-meta.html#IM-TYPE-SAVE-STRING:CAPS" title="IM_TYPE_SAVE_STRING">IM_TYPE_SAVE_STRING</a>
doc/reference/html/libvips-meta.html:<span class="returnvalue">GType</span>               <a class="link" href="libvips-meta.html#im-save-string-get-type" title="im_save_string_get_type ()">im_save_string_get_type</a>             (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-meta.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-meta.html#im-save-string-get" title="im_save_string_get ()">im_save_string_get</a>                  (<em class="parameter"><code>const <span class="type">GValue</span> *value</code></em>);
doc/reference/html/libvips-meta.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-meta.html#im-save-string-set" title="im_save_string_set ()">im_save_string_set</a>                  (<em class="parameter"><code><span class="type">GValue</span> *value</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">void</span>                <a class="link" href="libvips-meta.html#im-save-string-setf" title="im_save_string_setf ()">im_save_string_setf</a>                 (<em class="parameter"><code><span class="type">GValue</span> *value</code></em>,
doc/reference/html/libvips-meta.html:#define             <a class="link" href="libvips-meta.html#IM-TYPE-AREA:CAPS" title="IM_TYPE_AREA">IM_TYPE_AREA</a>
doc/reference/html/libvips-meta.html:<span class="returnvalue">GType</span>               <a class="link" href="libvips-meta.html#im-area-get-type" title="im_area_get_type ()">im_area_get_type</a>                    (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-meta.html:#define             <a class="link" href="libvips-meta.html#IM-TYPE-REF-STRING:CAPS" title="IM_TYPE_REF_STRING">IM_TYPE_REF_STRING</a>
doc/reference/html/libvips-meta.html:<span class="returnvalue">GType</span>               <a class="link" href="libvips-meta.html#im-ref-string-get-type" title="im_ref_string_get_type ()">im_ref_string_get_type</a>              (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-ref-string-set" title="im_ref_string_set ()">im_ref_string_set</a>                   (<em class="parameter"><code><span class="type">GValue</span> *value</code></em>,
doc/reference/html/libvips-meta.html:const <span class="returnvalue">char</span> *        <a class="link" href="libvips-meta.html#im-ref-string-get" title="im_ref_string_get ()">im_ref_string_get</a>                   (<em class="parameter"><code>const <span class="type">GValue</span> *value</code></em>);
doc/reference/html/libvips-meta.html:<span class="returnvalue">size_t</span>              <a class="link" href="libvips-meta.html#im-ref-string-get-length" title="im_ref_string_get_length ()">im_ref_string_get_length</a>            (<em class="parameter"><code>const <span class="type">GValue</span> *value</code></em>);
doc/reference/html/libvips-meta.html:#define             <a class="link" href="libvips-meta.html#IM-TYPE-BLOB:CAPS" title="IM_TYPE_BLOB">IM_TYPE_BLOB</a>
doc/reference/html/libvips-meta.html:<span class="returnvalue">GType</span>               <a class="link" href="libvips-meta.html#im-blob-get-type" title="im_blob_get_type ()">im_blob_get_type</a>                    (<em class="parameter"><code><span class="type">void</span></code></em>);
doc/reference/html/libvips-meta.html:<span class="returnvalue">void</span> *              <a class="link" href="libvips-meta.html#im-blob-get" title="im_blob_get ()">im_blob_get</a>                         (<em class="parameter"><code>const <span class="type">GValue</span> *value</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-blob-set" title="im_blob_set ()">im_blob_set</a>                         (<em class="parameter"><code><span class="type">GValue</span> *value</code></em>,
doc/reference/html/libvips-meta.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> free_fn</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()">im_meta_set</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">gboolean</span>            <a class="link" href="libvips-meta.html#im-meta-remove" title="im_meta_remove ()">im_meta_remove</a>                      (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()">im_meta_get</a>                         (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">GType</span>               <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()">im_meta_get_typeof</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-set-int" title="im_meta_set_int ()">im_meta_set_int</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-get-int" title="im_meta_get_int ()">im_meta_get_int</a>                     (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-set-double" title="im_meta_set_double ()">im_meta_set_double</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-get-double" title="im_meta_get_double ()">im_meta_get_double</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-set-area" title="im_meta_set_area ()">im_meta_set_area</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> Param3</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-get-area" title="im_meta_get_area ()">im_meta_get_area</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-set-string" title="im_meta_set_string ()">im_meta_set_string</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-get-string" title="im_meta_get_string ()">im_meta_get_string</a>                  (<em class="parameter"><code><span class="type">IMAGE</span> *Param1</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-set-blob" title="im_meta_set_blob ()">im_meta_set_blob</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-meta.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> free_fn</code></em>,
doc/reference/html/libvips-meta.html:<span class="returnvalue">int</span>                 <a class="link" href="libvips-meta.html#im-meta-get-blob" title="im_meta_get_blob ()">im_meta_get_blob</a>                    (<em class="parameter"><code><span class="type">IMAGE</span> *im</code></em>,
doc/reference/html/libvips-meta.html:<a name="libvips-meta.description"></a><h2>Description</h2>
doc/reference/html/libvips-meta.html:is implemented with reference-counted pointers, so it is efficient, even for
doc/reference/html/libvips-meta.html:Various convenience functions (eg. <a class="link" href="libvips-meta.html#im-meta-set-int" title="im_meta_set_int ()"><code class="function">im_meta_set_int()</code></a>) let you easily attach 
doc/reference/html/libvips-meta.html:numbers, strings and memory blocks to images. Use <a class="link" href="libvips-header.html#im-header-map" title="im_header_map ()"><code class="function">im_header_map()</code></a> to loop
doc/reference/html/libvips-meta.html:"icc-profile-data".
doc/reference/html/libvips-meta.html:'edvips' command-line tool to extract or replace this block of XML.
doc/reference/html/libvips-meta.html:reference-counted areas of memory. If you base your metadata on one of
doc/reference/html/libvips-meta.html:<a name="libvips-meta.details"></a><h2>Details</h2>
doc/reference/html/libvips-meta.html:<a name="IM-META-EXIF-NAME:CAPS"></a><h3>IM_META_EXIF_NAME</h3>
doc/reference/html/libvips-meta.html:<pre class="programlisting">#define IM_META_EXIF_NAME "exif-data"
doc/reference/html/libvips-meta.html:<a name="IM-META-ICC-NAME:CAPS"></a><h3>IM_META_ICC_NAME</h3>
doc/reference/html/libvips-meta.html:<pre class="programlisting">#define IM_META_ICC_NAME "icc-profile-data"
doc/reference/html/libvips-meta.html:<a class="link" href="libvips-colour.html#im-icc-transform" title="im_icc_transform ()"><code class="function">im_icc_transform()</code></a> operations.
doc/reference/html/libvips-meta.html:<a name="IM-META-XML:CAPS"></a><h3>IM_META_XML</h3>
doc/reference/html/libvips-meta.html:<pre class="programlisting">#define IM_META_XML "xml-header"
doc/reference/html/libvips-meta.html:<a name="IM-META-RESOLUTION-UNIT:CAPS"></a><h3>IM_META_RESOLUTION_UNIT</h3>
doc/reference/html/libvips-meta.html:<pre class="programlisting">#define IM_META_RESOLUTION_UNIT "resolution-unit"
doc/reference/html/libvips-meta.html:<a name="IM-TYPE-SAVE-STRING:CAPS"></a><h3>IM_TYPE_SAVE_STRING</h3>
doc/reference/html/libvips-meta.html:<a name="im-save-string-get-type"></a><h3>im_save_string_get_type ()</h3>
doc/reference/html/libvips-meta.html:<a name="im-save-string-get"></a><h3>im_save_string_get ()</h3>
doc/reference/html/libvips-meta.html:<a name="im-save-string-set"></a><h3>im_save_string_set ()</h3>
doc/reference/html/libvips-meta.html:<a name="im-save-string-setf"></a><h3>im_save_string_setf ()</h3>
doc/reference/html/libvips-meta.html:<td>printf()-style format string
doc/reference/html/libvips-meta.html:<td>arguments to <code class="function">printf()</code>-formatted <em class="parameter"><code>fmt</code></em>
doc/reference/html/libvips-meta.html:<a name="IM-TYPE-AREA:CAPS"></a><h3>IM_TYPE_AREA</h3>
doc/reference/html/libvips-meta.html:<a name="im-area-get-type"></a><h3>im_area_get_type ()</h3>
doc/reference/html/libvips-meta.html:<a name="IM-TYPE-REF-STRING:CAPS"></a><h3>IM_TYPE_REF_STRING</h3>
doc/reference/html/libvips-meta.html:<a name="im-ref-string-get-type"></a><h3>im_ref_string_get_type ()</h3>
doc/reference/html/libvips-meta.html:<a name="im-ref-string-set"></a><h3>im_ref_string_set ()</h3>
doc/reference/html/libvips-meta.html:copying reference-counted pointers, making the much more efficient than
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-ref-string-get"></a><h3>im_ref_string_get ()</h3>
doc/reference/html/libvips-meta.html:<a name="im-ref-string-get-length"></a><h3>im_ref_string_get_length ()</h3>
doc/reference/html/libvips-meta.html:<a name="IM-TYPE-BLOB:CAPS"></a><h3>IM_TYPE_BLOB</h3>
doc/reference/html/libvips-meta.html:<a name="im-blob-get-type"></a><h3>im_blob_get_type ()</h3>
doc/reference/html/libvips-meta.html:<a name="im-blob-get"></a><h3>im_blob_get ()</h3>
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-blob-set" title="im_blob_set ()"><code class="function">im_blob_set()</code></a>
doc/reference/html/libvips-meta.html:<a name="im-blob-set"></a><h3>im_blob_set ()</h3>
doc/reference/html/libvips-meta.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> free_fn</code></em>,
doc/reference/html/libvips-meta.html:copied by copying reference-counted pointers.
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-blob-get" title="im_blob_get ()"><code class="function">im_blob_get()</code></a>
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-set"></a><h3>im_meta_set ()</h3>
doc/reference/html/libvips-meta.html:convenience function <a class="link" href="libvips-meta.html#im-meta-set-int" title="im_meta_set_int ()"><code class="function">im_meta_set_int()</code></a> in practice), you would need:
doc/reference/html/libvips-meta.html:  return( -1 );
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>.
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-remove"></a><h3>im_meta_remove ()</h3>
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a>.
doc/reference/html/libvips-meta.html:<a name="im-meta-get"></a><h3>im_meta_get ()</h3>
doc/reference/html/libvips-meta.html:This will return -1 and add a message to the error buffer if the item
doc/reference/html/libvips-meta.html:of metadata does not exist. Use <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a> to test for the 
doc/reference/html/libvips-meta.html:<a class="link" href="libvips-meta.html#im-meta-get-double" title="im_meta_get_double ()"><code class="function">im_meta_get_double()</code></a> in practice):
doc/reference/html/libvips-meta.html:  return( -1 );
doc/reference/html/libvips-meta.html:  return( -1 );
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a>, <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a>.
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-get-typeof"></a><h3>im_meta_get_typeof ()</h3>
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>.
doc/reference/html/libvips-meta.html:<a name="im-meta-set-int"></a><h3>im_meta_set_int ()</h3>
doc/reference/html/libvips-meta.html:function over <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a>.
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-get-int" title="im_meta_get_int ()"><code class="function">im_meta_get_int()</code></a>, <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a>
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-get-int"></a><h3>im_meta_get_int ()</h3>
doc/reference/html/libvips-meta.html:function over <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>. Use <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a> to test for the 
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-set-int" title="im_meta_set_int ()"><code class="function">im_meta_set_int()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a>
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-set-double"></a><h3>im_meta_set_double ()</h3>
doc/reference/html/libvips-meta.html:function over <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a>.
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-get-double" title="im_meta_get_double ()"><code class="function">im_meta_get_double()</code></a>, <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a>
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-get-double"></a><h3>im_meta_get_double ()</h3>
doc/reference/html/libvips-meta.html:function over <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>. Use <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a> to test for the 
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-set-double" title="im_meta_set_double ()"><code class="function">im_meta_set_double()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a>
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-set-area"></a><h3>im_meta_set_area ()</h3>
doc/reference/html/libvips-meta.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> Param3</code></em>,
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-get-double" title="im_meta_get_double ()"><code class="function">im_meta_get_double()</code></a>, <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a>
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-get-area"></a><h3>im_meta_get_area ()</h3>
doc/reference/html/libvips-meta.html:function over <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>. Use <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a> to test for the 
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-set-area" title="im_meta_set_area ()"><code class="function">im_meta_set_area()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a>
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-set-string"></a><h3>im_meta_set_string ()</h3>
doc/reference/html/libvips-meta.html:function over <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a> using an im_ref_string.
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-get-double" title="im_meta_get_double ()"><code class="function">im_meta_get_double()</code></a>, <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a>, im_ref_string
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-get-string"></a><h3>im_meta_get_string ()</h3>
doc/reference/html/libvips-meta.html:function over <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>. Use <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a> to test for the 
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-set-string" title="im_meta_set_string ()"><code class="function">im_meta_set_string()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a>,
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-set-blob"></a><h3>im_meta_set_blob ()</h3>
doc/reference/html/libvips-meta.html:                                                         <em class="parameter"><code><a class="link" href="libvips-callback.html#im-callback-fn" title="im_callback_fn ()"><span class="type">im_callback_fn</span></a> free_fn</code></em>,
doc/reference/html/libvips-meta.html:function over <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a> using an im_blob.
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-get-blob" title="im_meta_get_blob ()"><code class="function">im_meta_get_blob()</code></a>, <a class="link" href="libvips-meta.html#im-meta-set" title="im_meta_set ()"><code class="function">im_meta_set()</code></a>, im_blob
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="im-meta-get-blob"></a><h3>im_meta_get_blob ()</h3>
doc/reference/html/libvips-meta.html:function over <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>. Use <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a> to test for the 
doc/reference/html/libvips-meta.html:See also: <a class="link" href="libvips-meta.html#im-meta-get" title="im_meta_get ()"><code class="function">im_meta_get()</code></a>, <a class="link" href="libvips-meta.html#im-meta-get-typeof" title="im_meta_get_typeof ()"><code class="function">im_meta_get_typeof()</code></a>, <a class="link" href="libvips-meta.html#im-blob-get" title="im_blob_get ()"><code class="function">im_blob_get()</code></a>, im_blob
doc/reference/html/libvips-meta.html:<td> 0 on success, -1 otherwise.
doc/reference/html/libvips-meta.html:<a name="libvips-meta.see-also"></a><h2>See Also</h2>
doc/reference/html/libvips-meta.html:<a class="link" href="libvips-header.html" title="header">header</a>
doc/reference/html/libvips-meta.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/ch01.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/ch01.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/ch01.html:<link rel="next" href="libvips-image.html" title="image">
doc/reference/html/ch01.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/ch01.html:<td><a accesskey="n" href="libvips-image.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-image.html">image</a></span><span class="refpurpose"> — the VIPS image class</span>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-header.html">header</a></span><span class="refpurpose"> — get, set and walk image headers</span>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-check.html">check</a></span><span class="refpurpose"> — test images for various properties</span>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-callback.html">callback</a></span><span class="refpurpose"> — image callbacks</span>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-meta.html">meta</a></span><span class="refpurpose"> — get and set image metadata</span>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-region.html">region</a></span><span class="refpurpose"> — small, rectangular parts of images</span>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-generate.html">generate</a></span><span class="refpurpose"> — calculate pixels and pixel buffers</span>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-error.html">error</a></span><span class="refpurpose"> — error messages and error handling</span>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-memory.html">memory</a></span><span class="refpurpose"> — memory utilities</span>
doc/reference/html/ch01.html:<span class="refentrytitle"><a href="libvips-buf.html">buf</a></span><span class="refpurpose"> — a string you can append to</span>
doc/reference/html/ch01.html:          Generated by GTK-Doc V1.14</div>
doc/reference/html/libvips-version.html:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
doc/reference/html/libvips-version.html:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
doc/reference/html/libvips-version.html:<link rel="prev" href="libvips-util.html" title="util">
doc/reference/html/libvips-version.html:<link rel="next" href="libvips-type.html" title="type">
doc/reference/html/libvips-version.html:<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
doc/reference/html/libvips-version.html:<td><a accesskey="p" href="libvips-util.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
doc/reference/html/libvips-version.html:<td><a accesskey="n" href="libvips-type.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
doc/reference/html/libvips-version.html:<a href="#libvips-version.synopsis" class="shortcut">Top</a>
doc/reference/html/libvips-version.html:                  <a href="#libvips-version.description" class="shortcut">Description</a>
doc/reference/html/libvips-version.html:<a name="libvips-version"></a><div class="titlepage"></div>
doc/reference/html/libvips-version.html:<h2><span class="refentrytitle"><a name="libvips-version.top_of_page"></a>version</span></h2>
doc/reference/html/libvips-version.html:<a name="libvips-version.synopsis"></a><h2>Synopsis</h2>
doc/reference/html/libvips-version.html:<pre class="synopsis">#define             <a class="link" href="libvips-version.html#IM-VERSION:CAPS" title="IM_VERSION">IM_VERSION</a>
doc/reference/html/libvips-version.html:#define             <a class="link" href="libvips-version.html#IM-VERSION-STRING:CAPS" title="IM_VERSION_STRING">IM_VERSION_STRING</a>
doc/reference/html/libvips-version.html:#define             <a class="link" href="libvips-version.html#IM-MAJOR-VERSION:CAPS" title="IM_MAJOR_VERSION">IM_MAJOR_VERSION</a>
doc/reference/html/libvips-version.html:#define             <a class="link" href="libvips-version.html#IM-MINOR-VERSION:CAPS" title="IM_MINOR_VERSION">IM_MINOR_VERSION</a>
doc/reference/html/libvips-version.html:#define             <a class="link" href="libvips-version.html#IM-MICRO-VERSION:CAPS" title="IM_MICRO_VERSION">IM_MICRO_VERSION</a>
doc/reference/html/libvips-version.html:#define             <a class="link" href="libvips-version.html#IM-INTERFACE-AGE:CAPS" title="IM_INTERFACE_AGE">IM_INTERFACE_AGE</a>
doc/reference/html/libvips-version.html:#define             <a class="link" href="libvips-version.html#IM-BINARY-AGE:CAPS" title="IM_BINARY_AGE">IM_BINARY_AGE</a>
doc/reference/html/libvips-version.html:<a name="libvips-version.description"></a><h2>Description</h2>
doc/reference/html/libvips-version.html:<a name="libvips-version.details"></a><h2>Details</h2>
doc/reference/html/libvips-version.html:<a name="IM-VERSION:CAPS"></a><h3>IM_VERSION</h3>
doc/reference/html/libvips-version.html:<a name="IM-VERSION-STRING:CAPS"></a><h3>IM_VERSION_STRING</h3>
doc/reference/html/libvips-version.html:<pre class="programlisting">#define IM_VERSION_STRING "7.22.1-Thu Jun 24 20:46:16 BST 2010"
doc/reference/html/libvips-version.html:<a name="IM-MAJOR-VERSION:CAPS"></a><h3>IM_MAJOR_VERSION</h3>
doc/reference/html/libvips-version.html:<a name="IM-MINOR-VERSION:CAPS"></a><h3>IM_MINOR_VERSION</h3>
doc/reference/html/libvips-version.html:<a name="IM-MICRO-VERSION:CAPS"></a><h3>IM_MICRO_VERSION</h3>
doc/reference/html/libvips-version.html:<a name="IM-INTERFACE-AGE:CAPS"></a><h3>IM_INTERFACE_AGE</h3>
doc/reference/html/libvips-version.html:<a name="IM-BINARY-AGE:CAPS"></a><h3>IM_BINARY_AGE</h3>
doc/reference/html/libvips-version.html:          Generated by GTK-Doc V1.14</div>
gtk-doc.make:# -*- mode: makefile -*-
gtk-doc.make:GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
gtk-doc.make:GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
gtk-doc.make:GTKDOC_RUN = $(LIBTOOL) --mode=execute
gtk-doc.make:GTKDOC_RUN = sh -c
gtk-doc.make:	$(DOC_MODULE)-sections.txt	\
gtk-doc.make:	$(DOC_MODULE)-overrides.txt
gtk-doc.make:DOC_STAMPS=scan-build.stamp sgml-build.stamp html-build.stamp \
gtk-doc.make:	$(DOC_MODULE)-undocumented.txt \
gtk-doc.make:	$(DOC_MODULE)-undeclared.txt \
gtk-doc.make:	$(DOC_MODULE)-unused.txt
gtk-doc.make:all-local: html-build.stamp
gtk-doc.make:all-local:
gtk-doc.make:docs: html-build.stamp
gtk-doc.make:$(REPORT_FILES): sgml-build.stamp
gtk-doc.make:scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
gtk-doc.make:	@echo 'gtk-doc: Scanning header files'
gtk-doc.make:	@-chmod -R u+w $(srcdir)
gtk-doc.make:	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
gtk-doc.make:	if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
gtk-doc.make:	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
gtk-doc.make:               test -f $$i || touch $$i ; \
gtk-doc.make:	touch scan-build.stamp
gtk-doc.make:$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
gtk-doc.make:sgml-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files)
gtk-doc.make:	@echo 'gtk-doc: Building XML'
gtk-doc.make:	@-chmod -R u+w $(srcdir)
gtk-doc.make:	gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
gtk-doc.make:	touch sgml-build.stamp
gtk-doc.make:sgml.stamp: sgml-build.stamp
gtk-doc.make:html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
gtk-doc.make:	@echo 'gtk-doc: Building HTML'
gtk-doc.make:	@-chmod -R u+w $(srcdir)
gtk-doc.make:	rm -rf $(srcdir)/html
gtk-doc.make:	gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-path"; \
gtk-doc.make:	  mkhtml_options=--path="$(srcdir)"; \
gtk-doc.make:	cd $(srcdir)/html && gtkdoc-mkhtml $(mkhtml_options) $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
gtk-doc.make:	@echo 'gtk-doc: Fixing cross-references'
gtk-doc.make:	cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
gtk-doc.make:	touch html-build.stamp
gtk-doc.make:clean-local:
gtk-doc.make:	rm -f *~ *.bak
gtk-doc.make:	rm -rf .libs
gtk-doc.make:distclean-local:
gtk-doc.make:	  rm -rf xml $(REPORT_FILES) \
gtk-doc.make:	         $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
gtk-doc.make:maintainer-clean-local: clean
gtk-doc.make:	cd $(srcdir) && rm -rf html
gtk-doc.make:install-data-local:
gtk-doc.make:	then echo '-- Nothing to install' ; \
gtk-doc.make:	  if test -n "$(DOC_MODULE_VERSION)"; then \
gtk-doc.make:	    installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
gtk-doc.make:	    echo '-- Installing '$$i ; \
gtk-doc.make:	  if test -n "$(DOC_MODULE_VERSION)"; then \
gtk-doc.make:	    mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
gtk-doc.make:	      $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
gtk-doc.make:	    mv -f $${installdir}/$(DOC_MODULE).devhelp \
gtk-doc.make:	      $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \
gtk-doc.make:	  ! which gtkdoc-rebase >/dev/null 2>&1 || \
gtk-doc.make:	    gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir} ; \
gtk-doc.make:uninstall-local:
gtk-doc.make:	if test -n "$(DOC_MODULE_VERSION)"; then \
gtk-doc.make:	  installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
gtk-doc.make:	rm -rf $${installdir}
gtk-doc.make:# Require gtk-doc when making dist
gtk-doc.make:dist-check-gtkdoc:
gtk-doc.make:dist-check-gtkdoc:
gtk-doc.make:	@echo "*** gtk-doc must be installed and enabled in order to make dist"
gtk-doc.make:dist-hook: dist-check-gtkdoc dist-hook-local
gtk-doc.make:	-cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
gtk-doc.make:	-cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
gtk-doc.make:	cd $(distdir) && rm -f $(DISTCLEANFILES)
gtk-doc.make:	! which gtkdoc-rebase >/dev/null 2>&1 || \
gtk-doc.make:	  gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
gtk-doc.make:.PHONY : dist-hook-local docs
INSTALL:various system-dependent variables used during compilation.  It uses
INSTALL:It may also create one or more `.h' files containing system-dependent
INSTALL:  3. Optionally, type `make check' to run any self-tests that come with
INSTALL:     also a `make maintainer-clean' target, but that is intended mainly
INSTALL:a Bourne-compatible shell, you can do that on the command line like
INSTALL:     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
INSTALL:     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
INSTALL:option `--prefix=PATH'.
INSTALL:architecture-specific files and architecture-independent files.  If you
INSTALL:give `configure' the option `--exec-prefix=PATH', the package will use
INSTALL:options like `--bindir=PATH' to specify different values for particular
INSTALL:kinds of files.  Run `configure --help' for a list of the directories
INSTALL:option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
INSTALL:   Some packages pay attention to `--enable-FEATURE' options to
INSTALL:They may also pay attention to `--with-PACKAGE' options, where PACKAGE
INSTALL:is something like `gnu-as' or `x' (for the X Window System).  The
INSTALL:`README' should mention any `--enable-' and `--with-' options that the
INSTALL:you can use the `configure' options `--x-includes=DIR' and
INSTALL:`--x-libraries=DIR' to specify their locations.
INSTALL:`--host=TYPE' option.  TYPE can either be a short name for the system
INSTALL:     CPU-COMPANY-SYSTEM
INSTALL:   If you are building compiler tools for cross-compiling, you can also
INSTALL:use the `--target=TYPE' option to select the type of system they will
INSTALL:produce code for and the `--build=TYPE' option to select the type of
INSTALL:`--cache-file=FILE'
INSTALL:`--help'
INSTALL:`--quiet'
INSTALL:`--silent'
INSTALL:`-q'
INSTALL:`--srcdir=DIR'
INSTALL:`--version'
install-sh:# install - install a program, script, or datafile
install-sh:scriptversion=2009-04-28.21; # UTC
install-sh:# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
install-sh:# be used in advertising or otherwise to promote the sale, use or other deal-
install-sh:# ings in this Software without prior written authorization from the X Consor-
install-sh:# Calling this script install-sh is preferred over install.sh, to prevent
install-sh:# Don't use :- since 4.3BSD and earlier shells don't like it.
install-sh:doit=${DOITPROG-}
install-sh:if test -z "$doit"; then
install-sh:chgrpprog=${CHGRPPROG-chgrp}
install-sh:chmodprog=${CHMODPROG-chmod}
install-sh:chownprog=${CHOWNPROG-chown}
install-sh:cmpprog=${CMPPROG-cmp}
install-sh:cpprog=${CPPROG-cp}
install-sh:mkdirprog=${MKDIRPROG-mkdir}
install-sh:mvprog=${MVPROG-mv}
install-sh:rmprog=${RMPROG-rm}
install-sh:stripprog=${STRIPPROG-strip}
install-sh:    if (set -f) 2>/dev/null; then
install-sh:rmcmd="$rmprog -f"
install-sh:Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
install-sh:   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
install-sh:   or: $0 [OPTION]... -d DIRECTORIES...
install-sh:     --help     display this help and exit.
install-sh:     --version  display version info and exit.
install-sh:  -c            (ignored)
install-sh:  -C            install only if different (preserve the last data modification time)
install-sh:  -d            create directories instead of installing files.
install-sh:  -g GROUP      $chgrpprog installed files to GROUP.
install-sh:  -m MODE       $chmodprog installed files to MODE.
install-sh:  -o USER       $chownprog installed files to USER.
install-sh:  -s            $stripprog installed files.
install-sh:  -t DIRECTORY  install into DIRECTORY.
install-sh:  -T            report an error if DSTFILE is a directory.
install-sh:while test $# -ne 0; do
install-sh:    -c) ;;
install-sh:    -C) copy_on_change=true;;
install-sh:    -d) dir_arg=true;;
install-sh:    -g) chgrpcmd="$chgrpprog $2"
install-sh:    --help) echo "$usage"; exit $?;;
install-sh:    -m) mode=$2
install-sh:    -o) chowncmd="$chownprog $2"
install-sh:    -s) stripcmd=$stripprog;;
install-sh:    -t) dst_arg=$2
install-sh:    -T) no_target_directory=true;;
install-sh:    --version) echo "$0 $scriptversion"; exit $?;;
install-sh:    --)	shift
install-sh:    -*)	echo "$0: invalid option: $1" >&2
install-sh:if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
install-sh:  # When -d is used, all remaining arguments are directories to create.
install-sh:  # When -t is used, the destination is already specified.
install-sh:    if test -n "$dst_arg"; then
install-sh:if test $# -eq 0; then
install-sh:  if test -z "$dir_arg"; then
install-sh:  # It's OK to call `install-sh -d' without argument.
install-sh:if test -z "$dir_arg"; then
install-sh:  # Set umask so as not to create temps with too-generous modes.
install-sh:    *[0-7])
install-sh:      if test -z "$stripcmd"; then
install-sh:      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
install-sh:      if test -z "$stripcmd"; then
install-sh:  # Protect names starting with `-'.
install-sh:    -*) src=./$src;;
install-sh:  if test -n "$dir_arg"; then
install-sh:    test -d "$dstdir"
install-sh:    if test ! -f "$src" && test ! -d "$src"; then
install-sh:    if test -z "$dst_arg"; then
install-sh:    # Protect names starting with `-'.
install-sh:      -*) dst=./$dst;;
install-sh:    if test -d "$dst"; then
install-sh:      if test -n "$no_target_directory"; then
install-sh:      test -d "$dstdir"
install-sh:	# This is like FreeBSD 'install' as of 1997-10-28.
install-sh:	  *[0-7])
install-sh:	      - $umask % 100 % 40 + $umask % 20 \
install-sh:	      - $umask % 10 % 4 + $umask % 2
install-sh:	  *) mkdir_umask=$umask,go-w;;
install-sh:	# With -d, create the new directory with the user-specified mode.
install-sh:	if test -n "$dir_arg"; then
install-sh:	  mkdir_mode=-m$mode
install-sh:	  *[123567][0-7][0-7])
install-sh:	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
install-sh:	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
install-sh:		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
install-sh:	      if test -z "$dir_arg" || {
install-sh:		   # Check for POSIX incompatibilities with -m.
install-sh:		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
install-sh:		   # other-writeable bit of parent directory when it shouldn't.
install-sh:		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
install-sh:		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
install-sh:		     d????-?r-*) different_mode=700;;
install-sh:		     d????-?--*) different_mode=755;;
install-sh:		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
install-sh:		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
install-sh:	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
install-sh:	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
install-sh:	-*) prefix='./';;
install-sh:      $posix_glob set -f
install-sh:	test -z "$d" && continue
install-sh:	if test -d "$prefix"; then
install-sh:	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
install-sh:	    test -d "$prefix" || exit 1
install-sh:      if test -n "$prefixes"; then
install-sh:	  test -d "$dstdir" || exit 1
install-sh:  if test -n "$dir_arg"; then
install-sh:    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
install-sh:    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
install-sh:      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
install-sh:    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
install-sh:    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
install-sh:    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
install-sh:    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
install-sh:    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
install-sh:    # If -C, don't bother to copy if it wouldn't change the file.
install-sh:       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
install-sh:       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
install-sh:       $posix_glob set -f &&
install-sh:      rm -f "$dsttmp"
install-sh:      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
install-sh:      # support -f.
install-sh:	  test ! -f "$dst" ||
install-sh:	  $doit $rmcmd -f "$dst" 2>/dev/null ||
install-sh:	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
install-sh:	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
install-sh:# eval: (add-hook 'write-file-hooks 'time-stamp)
install-sh:# time-stamp-start: "scriptversion="
install-sh:# time-stamp-format: "%:y-%02m-%02d.%02H"
install-sh:# time-stamp-time-zone: "UTC"
install-sh:# time-stamp-end: "; # UTC"
libvips/morphology/im_erode.c: * @(#) The center of the mask is at location (m->xsize/2, m->ysize/2)
libvips/morphology/im_erode.c: * @(#) Returns either 0 (sucess) or -1 (fail)
libvips/morphology/im_erode.c: *	- rewrite
libvips/morphology/im_erode.c: *	- checks and small tidies
libvips/morphology/im_erode.c: *	- now uses im_embed() with edge stretching on the input, not
libvips/morphology/im_erode.c: *	- sets Xoffset / Yoffset
libvips/morphology/im_erode.c: * 	- only rebuild the buffer offsets if bpl changes
libvips/morphology/im_erode.c: * 	- small cleanups
libvips/morphology/im_erode.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/morphology/im_erode.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/morphology/im_erode.c:	IM_FREEF( im_region_free, seq->ir );
libvips/morphology/im_erode.c:	int sz = msk->xsize * msk->ysize;
libvips/morphology/im_erode.c:	seq->ir = NULL;
libvips/morphology/im_erode.c:	seq->soff = NULL;
libvips/morphology/im_erode.c:	seq->ss = 0;
libvips/morphology/im_erode.c:	seq->coff = NULL;
libvips/morphology/im_erode.c:	seq->cs = 0;
libvips/morphology/im_erode.c:	seq->last_bpl = -1;
libvips/morphology/im_erode.c:	seq->ir = im_region_create( in );
libvips/morphology/im_erode.c:	seq->soff = IM_ARRAY( out, sz, int );
libvips/morphology/im_erode.c:	seq->coff = IM_ARRAY( out, sz, int );
libvips/morphology/im_erode.c:	if( !seq->ir || !seq->soff || !seq->coff ) {
libvips/morphology/im_erode.c:	REGION *ir = seq->ir;
libvips/morphology/im_erode.c:	int *soff = seq->soff;
libvips/morphology/im_erode.c:	int *coff = seq->coff;
libvips/morphology/im_erode.c:	Rect *r = &or->valid;
libvips/morphology/im_erode.c:	int le = r->left;
libvips/morphology/im_erode.c:	int to = r->top;
libvips/morphology/im_erode.c:	s.width += msk->xsize - 1;
libvips/morphology/im_erode.c:	s.height += msk->ysize - 1;
libvips/morphology/im_erode.c:		return( -1 );
libvips/morphology/im_erode.c:	if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) {
libvips/morphology/im_erode.c:		seq->last_bpl = IM_REGION_LSKIP( ir );
libvips/morphology/im_erode.c:		seq->ss = 0;
libvips/morphology/im_erode.c:		seq->cs = 0;
libvips/morphology/im_erode.c:		for( t = msk->coeff, y = 0; y < msk->ysize; y++ )
libvips/morphology/im_erode.c:			for( x = 0; x < msk->xsize; x++, t++ )
libvips/morphology/im_erode.c:					soff[seq->ss++] = 
libvips/morphology/im_erode.c:							x + le, y + to ) - 
libvips/morphology/im_erode.c:					coff[seq->cs++] = 
libvips/morphology/im_erode.c:							x + le, y + to ) - 
libvips/morphology/im_erode.c:					return( -1 ); 
libvips/morphology/im_erode.c:			for( i = 0; i < seq->ss; i++ )
libvips/morphology/im_erode.c:				for( i = 0; i < seq->cs; i++ )
libvips/morphology/im_erode.c:	if( m->xsize < 1 || !(m->xsize & 0x1) ||
libvips/morphology/im_erode.c:		m->ysize < 1 || !(m->ysize & 0x1) ) {
libvips/morphology/im_erode.c:		return( -1 ); 
libvips/morphology/im_erode.c:		return( -1 ); 
libvips/morphology/im_erode.c:	if( in->Coding != IM_CODING_NONE || 
libvips/morphology/im_erode.c:		in->BandFmt != IM_BANDFMT_UCHAR ) {
libvips/morphology/im_erode.c:		im_error( "im_erode", "%s", _( "1-band uchar uncoded only" ) );
libvips/morphology/im_erode.c:		return( -1 );
libvips/morphology/im_erode.c:		return( -1 ); 
libvips/morphology/im_erode.c:	/* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output
libvips/morphology/im_erode.c:		return( -1 );
libvips/morphology/im_erode.c:	out->Xsize -= m->xsize - 1;
libvips/morphology/im_erode.c:	out->Ysize -= m->ysize - 1;
libvips/morphology/im_erode.c:	if( out->Xsize <= 0 || out->Ysize <= 0 ) {
libvips/morphology/im_erode.c:		return( -1 );
libvips/morphology/im_erode.c:		return( -1 );
libvips/morphology/im_erode.c:		return( -1 );
libvips/morphology/im_erode.c:		return( -1 );
libvips/morphology/im_erode.c:		return( -1 );
libvips/morphology/im_erode.c:	out->Xoffset = -m->xsize / 2;
libvips/morphology/im_erode.c:	out->Yoffset = -m->ysize / 2;
libvips/morphology/im_erode.c:		im_embed( in, t1, 1, m->xsize / 2, m->ysize / 2, 
libvips/morphology/im_erode.c:			in->Xsize + m->xsize - 1, 
libvips/morphology/im_erode.c:			in->Ysize + m->ysize - 1 ) ||
libvips/morphology/im_erode.c:		return( -1 );
libvips/morphology/im_erode.c:	out->Xoffset = 0;
libvips/morphology/im_erode.c:	out->Yoffset = 0;
libvips/morphology/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/morphology/morph_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/morphology/morph_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/morphology/morph_dispatch.c: * @see_also: <link linkend="libvips-boolean">boolean</link>
libvips/morphology/morph_dispatch.c:	return( im_dilate( argv[0], argv[1], mo->mask ) );
libvips/morphology/morph_dispatch.c:	return( im_erode( argv[0], argv[1], mo->mask ) );
libvips/morphology/morph_dispatch.c:	"find +ve or -ve zero crossings in image",
libvips/morphology/morph_dispatch.c:	return( im_maxvalue( iv->vec, argv[1], iv->n ) );
libvips/morphology/morph_dispatch.c:	"point-wise maximum value",	/* Description */
libvips/morphology/morph_dispatch.c:	return( im_rank_image( iv->vec, argv[1], iv->n, index ) );
libvips/morphology/morph_dispatch.c:	"point-wise pixel rank",	/* Description */
libvips/morphology/im_dilate.c: * @(#) The center of the mask is at location (m->xsize/2, m->ysize/2)
libvips/morphology/im_dilate.c: * @(#) Returns either 0 (sucess) or -1 (fail)
libvips/morphology/im_dilate.c: *	- rewritten
libvips/morphology/im_dilate.c: *	- small tidies
libvips/morphology/im_dilate.c: *	- now uses im_embed() with edge stretching on the input, not
libvips/morphology/im_dilate.c: *	- sets Xoffset / Yoffset
libvips/morphology/im_dilate.c: * 	- only rebuild the buffer offsets if bpl changes
libvips/morphology/im_dilate.c: * 	- small cleanups
libvips/morphology/im_dilate.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/morphology/im_dilate.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/morphology/im_dilate.c:	IM_FREEF( im_region_free, seq->ir );
libvips/morphology/im_dilate.c:	int sz = msk->xsize * msk->ysize;
libvips/morphology/im_dilate.c:	seq->ir = NULL;
libvips/morphology/im_dilate.c:	seq->soff = NULL;
libvips/morphology/im_dilate.c:	seq->ss = 0;
libvips/morphology/im_dilate.c:	seq->coff = NULL;
libvips/morphology/im_dilate.c:	seq->cs = 0;
libvips/morphology/im_dilate.c:	seq->last_bpl = -1;
libvips/morphology/im_dilate.c:	seq->ir = im_region_create( in );
libvips/morphology/im_dilate.c:	seq->soff = IM_ARRAY( out, sz, int );
libvips/morphology/im_dilate.c:	seq->coff = IM_ARRAY( out, sz, int );
libvips/morphology/im_dilate.c:	if( !seq->ir || !seq->soff || !seq->coff ) {
libvips/morphology/im_dilate.c:	REGION *ir = seq->ir;
libvips/morphology/im_dilate.c:	int *soff = seq->soff;
libvips/morphology/im_dilate.c:	int *coff = seq->coff;
libvips/morphology/im_dilate.c:	Rect *r = &or->valid;
libvips/morphology/im_dilate.c:	int le = r->left;
libvips/morphology/im_dilate.c:	int to = r->top;
libvips/morphology/im_dilate.c:	s.width += msk->xsize - 1;
libvips/morphology/im_dilate.c:	s.height += msk->ysize - 1;
libvips/morphology/im_dilate.c:		return( -1 );
libvips/morphology/im_dilate.c:	if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) {
libvips/morphology/im_dilate.c:		seq->last_bpl = IM_REGION_LSKIP( ir );
libvips/morphology/im_dilate.c:		seq->ss = 0;
libvips/morphology/im_dilate.c:		seq->cs = 0;
libvips/morphology/im_dilate.c:		for( t = msk->coeff, y = 0; y < msk->ysize; y++ )
libvips/morphology/im_dilate.c:			for( x = 0; x < msk->xsize; x++, t++ )
libvips/morphology/im_dilate.c:					soff[seq->ss++] = 
libvips/morphology/im_dilate.c:							x + le, y + to ) - 
libvips/morphology/im_dilate.c:					coff[seq->cs++] = 
libvips/morphology/im_dilate.c:							x + le, y + to ) - 
libvips/morphology/im_dilate.c:					return( -1 ); 
libvips/morphology/im_dilate.c:			for( i = 0; i < seq->ss; i++ )
libvips/morphology/im_dilate.c:				for( i = 0; i < seq->cs; i++ )
libvips/morphology/im_dilate.c:	if( m->xsize < 1 || !(m->xsize & 0x1) ||
libvips/morphology/im_dilate.c:		m->ysize < 1 || !(m->ysize & 0x1) ) {
libvips/morphology/im_dilate.c:		return( -1 ); 
libvips/morphology/im_dilate.c:		return( -1 ); 
libvips/morphology/im_dilate.c:	if( in->Coding != IM_CODING_NONE || 
libvips/morphology/im_dilate.c:		in->BandFmt != IM_BANDFMT_UCHAR ) {
libvips/morphology/im_dilate.c:		return( -1 );
libvips/morphology/im_dilate.c:		return( -1 ); 
libvips/morphology/im_dilate.c:	/* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output
libvips/morphology/im_dilate.c:		return( -1 );
libvips/morphology/im_dilate.c:	out->Xsize -= m->xsize - 1;
libvips/morphology/im_dilate.c:	out->Ysize -= m->ysize - 1;
libvips/morphology/im_dilate.c:	if( out->Xsize <= 0 || out->Ysize <= 0 ) {
libvips/morphology/im_dilate.c:		return( -1 );
libvips/morphology/im_dilate.c:		return( -1 );
libvips/morphology/im_dilate.c:		return( -1 );
libvips/morphology/im_dilate.c:		return( -1 );
libvips/morphology/im_dilate.c:		return( -1 );
libvips/morphology/im_dilate.c:	out->Xoffset = -m->xsize / 2;
libvips/morphology/im_dilate.c:	out->Yoffset = -m->ysize / 2;
libvips/morphology/im_dilate.c:		im_embed( in, t1, 1, m->xsize / 2, m->ysize / 2, 
libvips/morphology/im_dilate.c:			in->Xsize + m->xsize - 1, 
libvips/morphology/im_dilate.c:			in->Ysize + m->ysize - 1 ) ||
libvips/morphology/im_dilate.c:		return( -1 );
libvips/morphology/im_dilate.c:	out->Xoffset = 0;
libvips/morphology/im_dilate.c:	out->Yoffset = 0;
libvips/morphology/im_cntlines.c: * @(#) Returns 0 on success and -1 on error
libvips/morphology/im_cntlines.c: *	- tidied up
libvips/morphology/im_cntlines.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/morphology/im_cntlines.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/morphology/im_cntlines.c:		return( -1 );
libvips/morphology/im_cntlines.c:	if( im->Coding != IM_CODING_NONE || im->BandFmt != IM_BANDFMT_UCHAR ||
libvips/morphology/im_cntlines.c:		im->Bands != 1 ) {
libvips/morphology/im_cntlines.c:			_( "1-band uchar uncoded only" ) );
libvips/morphology/im_cntlines.c:		return( -1 ); 
libvips/morphology/im_cntlines.c:		return( -1 ); 
libvips/morphology/im_cntlines.c:	line = (PEL *) im->data;
libvips/morphology/im_cntlines.c:		for( cnt = 0, y = 0; y < im->Ysize; y++ ) {
libvips/morphology/im_cntlines.c:			for( x = 0; x < im->Xsize - 1; x++ ) {
libvips/morphology/im_cntlines.c:			line += im->Xsize;
libvips/morphology/im_cntlines.c:		*nolines = (float) cnt / (2.0 * im->Ysize);
libvips/morphology/im_cntlines.c:		for( cnt = 0, y = 0; y < im->Ysize - 1; y++ ) {
libvips/morphology/im_cntlines.c:			PEL *p2 = line + im->Xsize;
libvips/morphology/im_cntlines.c:			for( x = 0; x < im->Xsize; x++ ) {
libvips/morphology/im_cntlines.c:			line += im->Xsize;
libvips/morphology/im_cntlines.c:		*nolines = (float)cnt / (2.0 * im->Xsize);
libvips/morphology/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/morphology/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/morphology/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/morphology/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/morphology/Makefile.in:am__mv = mv -f
libvips/morphology/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/morphology/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/morphology/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/morphology/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/morphology/Makefile.in:	$(LDFLAGS) -o $@
libvips/morphology/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/morphology/Makefile.in:all: all-am
libvips/morphology/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/morphology/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/morphology/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/morphology/Makefile'; \
libvips/morphology/Makefile.in:	  $(AUTOMAKE) --gnu libvips/morphology/Makefile
libvips/morphology/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/morphology/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/morphology/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/morphology/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/morphology/Makefile.in:clean-noinstLTLIBRARIES:
libvips/morphology/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/morphology/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/morphology/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/morphology/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/morphology/Makefile.in:mostlyclean-compile:
libvips/morphology/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/morphology/Makefile.in:distclean-compile:
libvips/morphology/Makefile.in:	-rm -f *.tab.c
libvips/morphology/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/morphology/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/morphology/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/morphology/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/morphology/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/morphology/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/morphology/Makefile.in:mostlyclean-libtool:
libvips/morphology/Makefile.in:	-rm -f *.lo
libvips/morphology/Makefile.in:clean-libtool:
libvips/morphology/Makefile.in:	-rm -rf .libs _libs
libvips/morphology/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/morphology/Makefile.in:	mkid -fID $$unique
libvips/morphology/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/morphology/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/morphology/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/morphology/Makefile.in:	  if test $$# -gt 0; then \
libvips/morphology/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/morphology/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/morphology/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/morphology/Makefile.in:distclean-tags:
libvips/morphology/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/morphology/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/morphology/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/morphology/Makefile.in:			   sort -u` ;; \
libvips/morphology/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/morphology/Makefile.in:	  if test -d $$d/$$file; then \
libvips/morphology/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/morphology/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/morphology/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/morphology/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/morphology/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/morphology/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/morphology/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/morphology/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/morphology/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/morphology/Makefile.in:check-am: all-am
libvips/morphology/Makefile.in:check: check-am
libvips/morphology/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/morphology/Makefile.in:install: install-am
libvips/morphology/Makefile.in:install-exec: install-exec-am
libvips/morphology/Makefile.in:install-data: install-data-am
libvips/morphology/Makefile.in:uninstall: uninstall-am
libvips/morphology/Makefile.in:install-am: all-am
libvips/morphology/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/morphology/Makefile.in:installcheck: installcheck-am
libvips/morphology/Makefile.in:install-strip:
libvips/morphology/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/morphology/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/morphology/Makefile.in:mostlyclean-generic:
libvips/morphology/Makefile.in:clean-generic:
libvips/morphology/Makefile.in:distclean-generic:
libvips/morphology/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/morphology/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/morphology/Makefile.in:maintainer-clean-generic:
libvips/morphology/Makefile.in:clean: clean-am
libvips/morphology/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/morphology/Makefile.in:	mostlyclean-am
libvips/morphology/Makefile.in:distclean: distclean-am
libvips/morphology/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/morphology/Makefile.in:	-rm -f Makefile
libvips/morphology/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/morphology/Makefile.in:	distclean-tags
libvips/morphology/Makefile.in:dvi: dvi-am
libvips/morphology/Makefile.in:dvi-am:
libvips/morphology/Makefile.in:html: html-am
libvips/morphology/Makefile.in:html-am:
libvips/morphology/Makefile.in:info: info-am
libvips/morphology/Makefile.in:info-am:
libvips/morphology/Makefile.in:install-data-am:
libvips/morphology/Makefile.in:install-dvi: install-dvi-am
libvips/morphology/Makefile.in:install-dvi-am:
libvips/morphology/Makefile.in:install-exec-am:
libvips/morphology/Makefile.in:install-html: install-html-am
libvips/morphology/Makefile.in:install-html-am:
libvips/morphology/Makefile.in:install-info: install-info-am
libvips/morphology/Makefile.in:install-info-am:
libvips/morphology/Makefile.in:install-man:
libvips/morphology/Makefile.in:install-pdf: install-pdf-am
libvips/morphology/Makefile.in:install-pdf-am:
libvips/morphology/Makefile.in:install-ps: install-ps-am
libvips/morphology/Makefile.in:install-ps-am:
libvips/morphology/Makefile.in:installcheck-am:
libvips/morphology/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/morphology/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/morphology/Makefile.in:	-rm -f Makefile
libvips/morphology/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/morphology/Makefile.in:mostlyclean: mostlyclean-am
libvips/morphology/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/morphology/Makefile.in:	mostlyclean-libtool
libvips/morphology/Makefile.in:pdf: pdf-am
libvips/morphology/Makefile.in:pdf-am:
libvips/morphology/Makefile.in:ps: ps-am
libvips/morphology/Makefile.in:ps-am:
libvips/morphology/Makefile.in:uninstall-am:
libvips/morphology/Makefile.in:.MAKE: install-am install-strip
libvips/morphology/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/morphology/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/morphology/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/morphology/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/morphology/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/morphology/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/morphology/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/morphology/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/morphology/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/morphology/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/morphology/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/morphology/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/morphology/im_rank.c: * @(#) Returns either 0 (success) or -1 (fail)
libvips/morphology/im_rank.c: *	- now uses insert-sort rather than bubble-sort
libvips/morphology/im_rank.c: *	- now works for any non-complex type
libvips/morphology/im_rank.c: *	- oops, sanity check on n wrong
libvips/morphology/im_rank.c: *	- cleanups
libvips/morphology/im_rank.c: *	- better selection algorithm ... same speed for 3x3, about 3x faster
libvips/morphology/im_rank.c: *	- index from zero for consistency with other parts of vips
libvips/morphology/im_rank.c: *	- now uses im_embed() with edge stretching on the input, not
libvips/morphology/im_rank.c: *	- sets Xoffset / Yoffset
libvips/morphology/im_rank.c: *	- oops, im_embed() size was wrong
libvips/morphology/im_rank.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/morphology/im_rank.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/morphology/im_rank.c:	IM_FREEF( im_region_free, seq->ir );
libvips/morphology/im_rank.c:	seq->ir = NULL;
libvips/morphology/im_rank.c:	seq->sort = NULL;
libvips/morphology/im_rank.c:	seq->ir = im_region_create( in );
libvips/morphology/im_rank.c:	seq->sort = IM_ARRAY( out, 
libvips/morphology/im_rank.c:		IM_IMAGE_SIZEOF_ELEMENT( in ) * rnk->n, PEL );
libvips/morphology/im_rank.c:	if( !seq->ir || !seq->sort ) {
libvips/morphology/im_rank.c:/* Inner loop for select-sorting TYPE.
libvips/morphology/im_rank.c:	TYPE *sort = (TYPE *) seq->sort; \
libvips/morphology/im_rank.c:		for( k = 0, j = 0; j < rnk->ysize; j++ ) { \
libvips/morphology/im_rank.c:		/* Rearrange sort[] to make the order-th element the order-th 
libvips/morphology/im_rank.c:		upper = rnk->n - 1; \
libvips/morphology/im_rank.c:			if( upper - lower < 2 ) { \
libvips/morphology/im_rank.c:				if( upper - lower == 1 &&  \
libvips/morphology/im_rank.c:				/* Pick mid-point of remaining elements. 
libvips/morphology/im_rank.c:						j--; \
libvips/morphology/im_rank.c:				if( j >= rnk->order ) \
libvips/morphology/im_rank.c:					upper = j - 1; \
libvips/morphology/im_rank.c:				if( j <= rnk->order ) \
libvips/morphology/im_rank.c:		q[x] = sort[rnk->order]; \
libvips/morphology/im_rank.c:		for( j = 0; j < rnk->ysize; j++ ) { \
libvips/morphology/im_rank.c:			for( i = 0; i < rnk->xsize; i++ ) { \
libvips/morphology/im_rank.c:		for( j = 0; j < rnk->ysize; j++ ) { \
libvips/morphology/im_rank.c:			for( i = 0; i < rnk->xsize; i++ ) { \
libvips/morphology/im_rank.c:	switch( rnk->out->BandFmt ) { \
libvips/morphology/im_rank.c:	REGION *ir = seq->ir;
libvips/morphology/im_rank.c:	Rect *r = &or->valid;
libvips/morphology/im_rank.c:	int le = r->left;
libvips/morphology/im_rank.c:	int to = r->top;
libvips/morphology/im_rank.c:	int bands = in->Bands;
libvips/morphology/im_rank.c:	int eaw = rnk->xsize * bands;		/* elements across window */
libvips/morphology/im_rank.c:	s.width += rnk->xsize - 1;
libvips/morphology/im_rank.c:	s.height += rnk->ysize - 1;
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:		if( rnk->order == 0 )
libvips/morphology/im_rank.c:		else if( rnk->order == rnk->n - 1 ) 
libvips/morphology/im_rank.c:		in->Coding != IM_CODING_NONE || 
libvips/morphology/im_rank.c:		vips_bandfmt_iscomplex( in->BandFmt ) ) {
libvips/morphology/im_rank.c:			_( "input non-complex uncoded only" ) );
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:		order < 0 || order > xsize * ysize - 1 ) {
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:	rnk->in = in;
libvips/morphology/im_rank.c:	rnk->out = out;
libvips/morphology/im_rank.c:	rnk->xsize = xsize;
libvips/morphology/im_rank.c:	rnk->ysize = ysize;
libvips/morphology/im_rank.c:	rnk->order = order;
libvips/morphology/im_rank.c:	rnk->n = xsize * ysize;
libvips/morphology/im_rank.c:	/* Prepare output. Consider a 7x7 window and a 7x7 image --- the output
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:	out->Xsize -= xsize - 1;
libvips/morphology/im_rank.c:	out->Ysize -= ysize - 1;
libvips/morphology/im_rank.c:	if( out->Xsize <= 0 || out->Ysize <= 0 ) {
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:	out->Xoffset = -xsize / 2;
libvips/morphology/im_rank.c:	out->Yoffset = -ysize / 2;
libvips/morphology/im_rank.c:			in->Xsize + xsize - 1, in->Ysize + ysize - 1 ) ||
libvips/morphology/im_rank.c:		return( -1 );
libvips/morphology/im_rank.c:	out->Xoffset = 0;
libvips/morphology/im_rank.c:	out->Yoffset = 0;
libvips/morphology/im_profile.c: * @(#)		non-zero pixel from the top. Output is USHORT with 
libvips/morphology/im_profile.c: * @(#)		non-zero pixel from the left. Output is USHORT with 
libvips/morphology/im_profile.c: * @(#) Returns 0 on success and non-zero on error
libvips/morphology/im_profile.c: *	- from im_cntlines()
libvips/morphology/im_profile.c: *	- now outputs horizontal/vertical image
libvips/morphology/im_profile.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/morphology/im_profile.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/morphology/im_profile.c:		return( -1 );
libvips/morphology/im_profile.c:	if( in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_UCHAR ||
libvips/morphology/im_profile.c:		in->Bands != 1 ) {
libvips/morphology/im_profile.c:			_( "1-band uchar uncoded only" ) );
libvips/morphology/im_profile.c:		return( -1 ); 
libvips/morphology/im_profile.c:		return( -1 ); 
libvips/morphology/im_profile.c:		return( -1 );
libvips/morphology/im_profile.c:	out->Type = IM_TYPE_HISTOGRAM;
libvips/morphology/im_profile.c:		out->Xsize = in->Xsize;
libvips/morphology/im_profile.c:		out->Ysize = 1;
libvips/morphology/im_profile.c:		out->Xsize = 1;
libvips/morphology/im_profile.c:		out->Ysize = in->Ysize;
libvips/morphology/im_profile.c:	out->BandFmt = IM_BANDFMT_USHORT;
libvips/morphology/im_profile.c:		return( -1 );
libvips/morphology/im_profile.c:	if( !(buf = IM_ARRAY( out, out->Xsize, unsigned short )) )
libvips/morphology/im_profile.c:		return( -1 );
libvips/morphology/im_profile.c:		for( x = 0; x < in->Xsize; x++ ) {
libvips/morphology/im_profile.c:			for( y = 0; y < in->Ysize; y++ ) 
libvips/morphology/im_profile.c:			return( -1 );
libvips/morphology/im_profile.c:		for( y = 0; y < in->Ysize; y++ ) {
libvips/morphology/im_profile.c:			for( x = 0; x < in->Xsize; x++ ) 
libvips/morphology/im_profile.c:				return( -1 );
libvips/morphology/im_label_regions.c: *	- renamed from im_segment()
libvips/morphology/im_label_regions.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/morphology/im_label_regions.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/morphology/im_label_regions.c: * The @test image is repeatedly scanned and regions of 4-connected pixels
libvips/morphology/im_label_regions.c: * @mask is always a 1-band %IM_BANDFMT_UINT image of the same dimensions as
libvips/morphology/im_label_regions.c: * Returns: 0 on success, -1 on error.
libvips/morphology/im_label_regions.c:		im_black( t[0], test->Xsize, test->Ysize, 1 ) ||
libvips/morphology/im_label_regions.c:		return( -1 );
libvips/morphology/im_label_regions.c:		return( -1 );
libvips/morphology/im_label_regions.c:	m = (int *) t[1]->data;
libvips/morphology/im_label_regions.c:	for( y = 0; y < test->Ysize; y++ ) {
libvips/morphology/im_label_regions.c:		for( x = 0; x < test->Xsize; x++ ) {
libvips/morphology/im_label_regions.c:					return( -1 );
libvips/morphology/im_label_regions.c:		m += test->Xsize;
libvips/morphology/im_label_regions.c:		return( -1 );
libvips/morphology/im_rank_image.c: * @(#) All functions return 0 on success and -1 on error
libvips/morphology/im_rank_image.c: *	- from im_maxvalue(), via im_gbandjoin()
libvips/morphology/im_rank_image.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/morphology/im_rank_image.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/morphology/im_rank_image.c:	IMAGE **in;		/* Array of input images, NULL-terminated */
libvips/morphology/im_rank_image.c:	rank->n = n;
libvips/morphology/im_rank_image.c:	rank->index = index;
libvips/morphology/im_rank_image.c:	rank->out = out;
libvips/morphology/im_rank_image.c:	if( !(rank->in = IM_ARRAY( out, n + 1, IMAGE * )) ) 
libvips/morphology/im_rank_image.c:		rank->in[i] = in[i];
libvips/morphology/im_rank_image.c:	rank->in[n] = NULL;
libvips/morphology/im_rank_image.c:	PEL **pts;		/* Per-input region data pointer */
libvips/morphology/im_rank_image.c:	for( i = 0; i < rank->n; i++ ) 
libvips/morphology/im_rank_image.c:		IM_FREEF( im_region_free, seq->ir[i] );
libvips/morphology/im_rank_image.c:	seq->rank = rank;
libvips/morphology/im_rank_image.c:	seq->ir = NULL;
libvips/morphology/im_rank_image.c:	seq->pts = NULL;
libvips/morphology/im_rank_image.c:	seq->ir = IM_ARRAY( out, rank->n + 1, REGION * );
libvips/morphology/im_rank_image.c:	seq->pts = IM_ARRAY( out, rank->n + 1, PEL * );
libvips/morphology/im_rank_image.c:	seq->sort = IM_ARRAY( out, 
libvips/morphology/im_rank_image.c:		rank->n * IM_IMAGE_SIZEOF_ELEMENT( in[0] ), PEL );
libvips/morphology/im_rank_image.c:	if( !seq->ir || !seq->pts || !seq->sort ) {
libvips/morphology/im_rank_image.c:	for( i = 0; i < rank->n; i++ )
libvips/morphology/im_rank_image.c:		if( !(seq->ir[i] = im_region_create( in[i] )) ) {
libvips/morphology/im_rank_image.c:	seq->ir[i] = NULL;
libvips/morphology/im_rank_image.c:/* Special-case max and min (rather common).
libvips/morphology/im_rank_image.c:		TYPE top = ((TYPE *) seq->pts[0])[x]; \
libvips/morphology/im_rank_image.c:		for( i = 1; i < rank->n; i++ ) { \
libvips/morphology/im_rank_image.c:			TYPE v = ((TYPE *) seq->pts[i])[x]; \
libvips/morphology/im_rank_image.c:		TYPE bot = ((TYPE *) seq->pts[0])[x]; \
libvips/morphology/im_rank_image.c:		for( i = 1; i < rank->n; i++ ) { \
libvips/morphology/im_rank_image.c:			TYPE v = ((TYPE *) seq->pts[i])[x]; \
libvips/morphology/im_rank_image.c:	TYPE *sort = (TYPE *) seq->sort; \
libvips/morphology/im_rank_image.c:		for( i = 0; i < rank->n; i++ ) { \
libvips/morphology/im_rank_image.c:			TYPE v = ((TYPE *) seq->pts[i])[x]; \
libvips/morphology/im_rank_image.c:			for( k = i; k > j; k-- ) \
libvips/morphology/im_rank_image.c:				sort[k] = sort[k - 1]; \
libvips/morphology/im_rank_image.c:		((TYPE *) q)[x] = sort[rank->index]; \
libvips/morphology/im_rank_image.c:	switch( rank->out->BandFmt ) { \
libvips/morphology/im_rank_image.c:	Rect *r = &or->valid;
libvips/morphology/im_rank_image.c:        int le = r->left;
libvips/morphology/im_rank_image.c:        int to = r->top;
libvips/morphology/im_rank_image.c:	for( i = 0; i < rank->n; i++ )
libvips/morphology/im_rank_image.c:		if( im_prepare( seq->ir[i], r ) )
libvips/morphology/im_rank_image.c:			return( -1 );
libvips/morphology/im_rank_image.c:		for( i = 0; i < rank->n; i++ )
libvips/morphology/im_rank_image.c:			seq->pts[i] = (PEL *) 
libvips/morphology/im_rank_image.c:				IM_REGION_ADDR( seq->ir[i], le, y );
libvips/morphology/im_rank_image.c:		/* Special-case max and min.
libvips/morphology/im_rank_image.c:		if( rank->index == 0 ) 
libvips/morphology/im_rank_image.c:		else if( rank->index == rank->n - 1 )
libvips/morphology/im_rank_image.c:/* pair-wise rank of a vector of image descriptors.
libvips/morphology/im_rank_image.c:		return( -1 );
libvips/morphology/im_rank_image.c:	if( index < 0 || index > n - 1 ) {
libvips/morphology/im_rank_image.c:			_( "index should be in range 0 - %d" ), n - 1 );
libvips/morphology/im_rank_image.c:		return( -1 );
libvips/morphology/im_rank_image.c:		return( -1 );
libvips/morphology/im_rank_image.c:			return( -1 );
libvips/morphology/im_rank_image.c:		if( in[i]->Coding != IM_CODING_NONE || 
libvips/morphology/im_rank_image.c:			vips_bandfmt_iscomplex( in[i]->BandFmt ) ) {
libvips/morphology/im_rank_image.c:				_( "uncoded non-complex only" ) );
libvips/morphology/im_rank_image.c:			return( -1 );
libvips/morphology/im_rank_image.c:		if( in[0]->BandFmt != in[i]->BandFmt ) {
libvips/morphology/im_rank_image.c:			return( -1 );
libvips/morphology/im_rank_image.c:		if( in[0]->Xsize != in[i]->Xsize ||
libvips/morphology/im_rank_image.c:			in[0]->Ysize != in[i]->Ysize ) {
libvips/morphology/im_rank_image.c:			return( -1 );
libvips/morphology/im_rank_image.c:		if( in[0]->Bands != in[i]->Bands ) {
libvips/morphology/im_rank_image.c:			return( -1 );
libvips/morphology/im_rank_image.c:		im_cp_desc_array( out, rank->in ) ||
libvips/morphology/im_rank_image.c:		im_demand_hint_array( out, IM_THINSTRIP, rank->in )  ||
libvips/morphology/im_rank_image.c:			rank_start, rank_gen, rank_stop, rank->in, rank ) )
libvips/morphology/im_rank_image.c:		return( -1 );
libvips/morphology/im_rank_image.c:	return( im_rank_image( in, out, n, n - 1 ) );
libvips/morphology/im_zerox.c:/* @(#) Functions which detects the +ve and -ve edges of
libvips/morphology/im_zerox.c: * @(#) All functions return 0 on success and -1 on error
libvips/morphology/im_zerox.c: *	- rewritten for PIO
libvips/morphology/im_zerox.c: *	- some bugs removed
libvips/morphology/im_zerox.c: * 	- small clean ups
libvips/morphology/im_zerox.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/morphology/im_zerox.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/morphology/im_zerox.c:		else if( flag == -1 && p1 < 0 && p2 >= 0 ) \
libvips/morphology/im_zerox.c:	Rect *r = &or->valid;
libvips/morphology/im_zerox.c:	int le = r->left;
libvips/morphology/im_zerox.c:	int to = r->top;
libvips/morphology/im_zerox.c:	int ba = in->Bands;
libvips/morphology/im_zerox.c:	int ne = ba * r->width;
libvips/morphology/im_zerox.c:	irect.top = r->top;
libvips/morphology/im_zerox.c:	irect.left = r->left;
libvips/morphology/im_zerox.c:	irect.width = r->width + 1;
libvips/morphology/im_zerox.c:	irect.height = r->height;
libvips/morphology/im_zerox.c:		return( -1 );
libvips/morphology/im_zerox.c:		switch( in->BandFmt ) {
libvips/morphology/im_zerox.c:		return( -1 );
libvips/morphology/im_zerox.c:	if( flag != -1 && flag != 1 ) {
libvips/morphology/im_zerox.c:		im_error( "im_zerox", "%s", _( "flag not -1 or 1" ) );
libvips/morphology/im_zerox.c:		return( -1 );
libvips/morphology/im_zerox.c:		return( -1 );
libvips/morphology/im_zerox.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) || 
libvips/morphology/im_zerox.c:		in->Coding != IM_CODING_NONE ) {
libvips/morphology/im_zerox.c:		im_error( "im_zerox", "%s", _( "non-complex uncoded only" ) );
libvips/morphology/im_zerox.c:		return( -1 );
libvips/morphology/im_zerox.c:	if( in->Xsize < 2 ) {
libvips/morphology/im_zerox.c:		return( -1 );
libvips/morphology/im_zerox.c:	if( vips_bandfmt_isuint( in->BandFmt ) )
libvips/morphology/im_zerox.c:		/* Unsigned type, therefore there will be no zero-crossings.
libvips/morphology/im_zerox.c:		return( im_black( out, in->Xsize, in->Ysize, in->Bands ) );
libvips/morphology/im_zerox.c:		return( -1 );
libvips/morphology/im_zerox.c:	t1->BandFmt = IM_BANDFMT_UCHAR;
libvips/morphology/im_zerox.c:	t1->Xsize -= 1;
libvips/morphology/im_zerox.c:	/* Set hints - THINSTRIP is ok with us.
libvips/morphology/im_zerox.c:		return( -1 );
libvips/morphology/im_zerox.c:		return( -1 );
libvips/morphology/im_zerox.c:	if( im_embed( t1, out, 0, 0, 0, in->Xsize, in->Ysize ) )
libvips/morphology/im_zerox.c:		return( -1 );
libvips/inplace/im_paintrect.c: *	- im_incheck() added
libvips/inplace/im_paintrect.c: *	- im_incheck() changed to im_makerw()
libvips/inplace/im_paintrect.c: * 	- im_invalidate() after paint
libvips/inplace/im_paintrect.c: * 	- don't im_invalidate() after paint, this now needs to be at a higher
libvips/inplace/im_paintrect.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/inplace/im_paintrect.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/inplace/im_paintrect.c:	int ps = es * im->Bands;
libvips/inplace/im_paintrect.c:	int ls = ps * im->Xsize;
libvips/inplace/im_paintrect.c:		return( -1 );
libvips/inplace/im_paintrect.c:	image.width = im->Xsize;
libvips/inplace/im_paintrect.c:	image.height = im->Ysize;
libvips/inplace/im_paintrect.c:	to = (PEL *) im->data + clipped.left * ps + clipped.top * ls;
libvips/inplace/plot_point.c: *	- im_incheck() added
libvips/inplace/plot_point.c: *	- im_incheck() changed to im_makerw()
libvips/inplace/plot_point.c: * 	- im_invalidate() after paint
libvips/inplace/plot_point.c: * 	- don't im_invalidate() after paint, this now needs to be at a higher
libvips/inplace/plot_point.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/inplace/plot_point.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/inplace/plot_point.c:	int ps = es * im->Bands;
libvips/inplace/plot_point.c:	int ls = ps * im->Xsize;
libvips/inplace/plot_point.c:		return( -1 );
libvips/inplace/plot_point.c:	if(  x > im->Xsize || x < 0 || y > im->Ysize || y < 0 ) {
libvips/inplace/plot_point.c:	from = (PEL *) im->data + x * ps + y * ls;
libvips/inplace/plot_point.c:	int ps = es * im->Bands;
libvips/inplace/plot_point.c:	int ls = ps * im->Xsize;
libvips/inplace/plot_point.c:		return( -1 );
libvips/inplace/plot_point.c:	if(  x > im->Xsize || x < 0 || y > im->Ysize || y < 0 )
libvips/inplace/plot_point.c:	to = (PEL *) im->data + x * ps + y * ls;
libvips/inplace/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/inplace/inplace_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/inplace/inplace_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/inplace/inplace_dispatch.c: * @short_description: in-place paintbox operations: flood, paste, line,
libvips/inplace/inplace_dispatch.c: * pipelines, but they are useful for paintbox-style programs.
libvips/inplace/inplace_dispatch.c:	if( x1v->n != y1v->n || x1v->n != x2v->n || x1v->n != y2v->n ) {
libvips/inplace/inplace_dispatch.c:		return( -1 );
libvips/inplace/inplace_dispatch.c:		x1v->n, x1v->vec, y1v->vec, x2v->vec, y2v->vec ) );
libvips/inplace/inplace_dispatch.c:	const int n = im->Bands;
libvips/inplace/inplace_dispatch.c:		im_clip2fmt( t[1], t[2], im->BandFmt ) )
libvips/inplace/inplace_dispatch.c:	return( (PEL *) t[2]->data );
libvips/inplace/inplace_dispatch.c:	if( dv->n != in->Bands ) {
libvips/inplace/inplace_dispatch.c:		return( -1 );
libvips/inplace/inplace_dispatch.c:	if( !(ink = vector_to_ink( in, dv->vec )) )
libvips/inplace/inplace_dispatch.c:		return( -1 );
libvips/inplace/inplace_dispatch.c:	if( dv->n != in->Bands ) {
libvips/inplace/inplace_dispatch.c:		return( -1 );
libvips/inplace/inplace_dispatch.c:	if( !(ink = vector_to_ink( in, dv->vec )) )
libvips/inplace/inplace_dispatch.c:		return( -1 );
libvips/inplace/smudge_area.c:/* @(#) Smudge and smear a piece of image. Smudge is a low-pass filter,
libvips/inplace/smudge_area.c: *	- im_incheck() added
libvips/inplace/smudge_area.c: *	- im_incheck() changed to im_makerw()
libvips/inplace/smudge_area.c: *	- im_makerw() changed to im_rwcheck()
libvips/inplace/smudge_area.c: * 	- im_invalidate() after paint
libvips/inplace/smudge_area.c: * 	- don't im_invalidate() after paint, this now needs to be at a higher
libvips/inplace/smudge_area.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/inplace/smudge_area.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/inplace/smudge_area.c:	int ba = im->Bands;
libvips/inplace/smudge_area.c:	int el = ba * im->Xsize;
libvips/inplace/smudge_area.c:		return( -1 );
libvips/inplace/smudge_area.c:	image.width = im->Xsize;
libvips/inplace/smudge_area.c:	image.height = im->Ysize;
libvips/inplace/smudge_area.c:	im_rect_marginadjust( &image, -1 );
libvips/inplace/smudge_area.c:			TYPE *to = (TYPE *) im->data + x * ba + y * el; \
libvips/inplace/smudge_area.c:			TYPE *from = to - el - ba; \
libvips/inplace/smudge_area.c:	switch( im->BandFmt ) {
libvips/inplace/smudge_area.c:		return( -1 );
libvips/inplace/smudge_area.c:	int ba = im->Bands;
libvips/inplace/smudge_area.c:	int el = ba * im->Xsize;
libvips/inplace/smudge_area.c:		return( -1 );
libvips/inplace/smudge_area.c:	image.width = im->Xsize;
libvips/inplace/smudge_area.c:	image.height = im->Ysize;
libvips/inplace/smudge_area.c:	im_rect_marginadjust( &image, -1 );
libvips/inplace/smudge_area.c:	image.left--;
libvips/inplace/smudge_area.c:			TYPE *to = (TYPE *) im->data + x * ba + y * el; \
libvips/inplace/smudge_area.c:			TYPE *from = to - el; \
libvips/inplace/smudge_area.c:	switch( im->BandFmt ) {
libvips/inplace/smudge_area.c:		return( -1 );
libvips/inplace/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/inplace/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/inplace/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/inplace/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/inplace/Makefile.in:am__mv = mv -f
libvips/inplace/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/inplace/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/inplace/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/inplace/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/inplace/Makefile.in:	$(LDFLAGS) -o $@
libvips/inplace/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/inplace/Makefile.in:all: all-am
libvips/inplace/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/inplace/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/inplace/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/inplace/Makefile'; \
libvips/inplace/Makefile.in:	  $(AUTOMAKE) --gnu libvips/inplace/Makefile
libvips/inplace/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/inplace/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/inplace/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/inplace/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/inplace/Makefile.in:clean-noinstLTLIBRARIES:
libvips/inplace/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/inplace/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/inplace/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/inplace/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/inplace/Makefile.in:mostlyclean-compile:
libvips/inplace/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/inplace/Makefile.in:distclean-compile:
libvips/inplace/Makefile.in:	-rm -f *.tab.c
libvips/inplace/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/inplace/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/inplace/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/inplace/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/inplace/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/inplace/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/inplace/Makefile.in:mostlyclean-libtool:
libvips/inplace/Makefile.in:	-rm -f *.lo
libvips/inplace/Makefile.in:clean-libtool:
libvips/inplace/Makefile.in:	-rm -rf .libs _libs
libvips/inplace/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/inplace/Makefile.in:	mkid -fID $$unique
libvips/inplace/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/inplace/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/inplace/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/inplace/Makefile.in:	  if test $$# -gt 0; then \
libvips/inplace/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/inplace/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/inplace/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/inplace/Makefile.in:distclean-tags:
libvips/inplace/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/inplace/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/inplace/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/inplace/Makefile.in:			   sort -u` ;; \
libvips/inplace/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/inplace/Makefile.in:	  if test -d $$d/$$file; then \
libvips/inplace/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/inplace/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/inplace/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/inplace/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/inplace/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/inplace/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/inplace/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/inplace/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/inplace/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/inplace/Makefile.in:check-am: all-am
libvips/inplace/Makefile.in:check: check-am
libvips/inplace/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/inplace/Makefile.in:install: install-am
libvips/inplace/Makefile.in:install-exec: install-exec-am
libvips/inplace/Makefile.in:install-data: install-data-am
libvips/inplace/Makefile.in:uninstall: uninstall-am
libvips/inplace/Makefile.in:install-am: all-am
libvips/inplace/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/inplace/Makefile.in:installcheck: installcheck-am
libvips/inplace/Makefile.in:install-strip:
libvips/inplace/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/inplace/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/inplace/Makefile.in:mostlyclean-generic:
libvips/inplace/Makefile.in:clean-generic:
libvips/inplace/Makefile.in:distclean-generic:
libvips/inplace/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/inplace/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/inplace/Makefile.in:maintainer-clean-generic:
libvips/inplace/Makefile.in:clean: clean-am
libvips/inplace/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/inplace/Makefile.in:	mostlyclean-am
libvips/inplace/Makefile.in:distclean: distclean-am
libvips/inplace/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/inplace/Makefile.in:	-rm -f Makefile
libvips/inplace/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/inplace/Makefile.in:	distclean-tags
libvips/inplace/Makefile.in:dvi: dvi-am
libvips/inplace/Makefile.in:dvi-am:
libvips/inplace/Makefile.in:html: html-am
libvips/inplace/Makefile.in:html-am:
libvips/inplace/Makefile.in:info: info-am
libvips/inplace/Makefile.in:info-am:
libvips/inplace/Makefile.in:install-data-am:
libvips/inplace/Makefile.in:install-dvi: install-dvi-am
libvips/inplace/Makefile.in:install-dvi-am:
libvips/inplace/Makefile.in:install-exec-am:
libvips/inplace/Makefile.in:install-html: install-html-am
libvips/inplace/Makefile.in:install-html-am:
libvips/inplace/Makefile.in:install-info: install-info-am
libvips/inplace/Makefile.in:install-info-am:
libvips/inplace/Makefile.in:install-man:
libvips/inplace/Makefile.in:install-pdf: install-pdf-am
libvips/inplace/Makefile.in:install-pdf-am:
libvips/inplace/Makefile.in:install-ps: install-ps-am
libvips/inplace/Makefile.in:install-ps-am:
libvips/inplace/Makefile.in:installcheck-am:
libvips/inplace/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/inplace/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/inplace/Makefile.in:	-rm -f Makefile
libvips/inplace/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/inplace/Makefile.in:mostlyclean: mostlyclean-am
libvips/inplace/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/inplace/Makefile.in:	mostlyclean-libtool
libvips/inplace/Makefile.in:pdf: pdf-am
libvips/inplace/Makefile.in:pdf-am:
libvips/inplace/Makefile.in:ps: ps-am
libvips/inplace/Makefile.in:ps-am:
libvips/inplace/Makefile.in:uninstall-am:
libvips/inplace/Makefile.in:.MAKE: install-am install-strip
libvips/inplace/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/inplace/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/inplace/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/inplace/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/inplace/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/inplace/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/inplace/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/inplace/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/inplace/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/inplace/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/inplace/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/inplace/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/inplace/im_circle.c: * @(#) Return -1 on error 0 on sucess.
libvips/inplace/im_circle.c: *	- im_incheck() call added
libvips/inplace/im_circle.c: *	- im_incheck() changed to im_makerw()
libvips/inplace/im_circle.c: * 	- im_invalidate() after paint
libvips/inplace/im_circle.c: * 	- don't im_invalidate() after paint, this now needs to be at a higher
libvips/inplace/im_circle.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/inplace/im_circle.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/inplace/im_circle.c:		return( -1 );
libvips/inplace/im_circle.c:	if ( (im->data == NULL)||(im->BandFmt != IM_BANDFMT_UCHAR)||
libvips/inplace/im_circle.c:	   (im->Bands != 1))
libvips/inplace/im_circle.c:		return(-1);
libvips/inplace/im_circle.c:		return(-1);
libvips/inplace/im_circle.c:	if ( ((radius+cy)> im->Ysize - 1) || ((cy-radius)< 0 ) ||
libvips/inplace/im_circle.c:	     ((radius+cx)> im->Xsize - 1) || ((cx-radius) < 0 )   )
libvips/inplace/im_circle.c:		return(-1);
libvips/inplace/im_circle.c:	size = im->Xsize;
libvips/inplace/im_circle.c:	start = (PEL*)im->data;
libvips/inplace/im_circle.c:	offset = cy * im->Xsize + cx; /* point at the center of the circle */
libvips/inplace/im_circle.c:	d = 3 - 2 * radius;
libvips/inplace/im_circle.c:		*(start + offset + size * y - x) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset + size * x - y) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset - size * y - x) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset - size * x - y) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset - size * y + x) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset - size * x + y) = (PEL)intensity;
libvips/inplace/im_circle.c:			d += ( 4 * ( x - y ) + 10 );
libvips/inplace/im_circle.c:			y--;
libvips/inplace/im_circle.c:		*(start + offset + size * y - x) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset + size * x - y) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset - size * y - x) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset - size * x - y) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset - size * y + x) = (PEL)intensity;
libvips/inplace/im_circle.c:		*(start + offset - size * x + y) = (PEL)intensity;
libvips/inplace/flood.c:/* flood-fill
libvips/inplace/flood.c: *	- VIPSified, cleaned up, from "John Robinson's prog to fill 
libvips/inplace/flood.c: *	- something Kirk gave me, so thanks John 
libvips/inplace/flood.c: *	- swapped inner memcmp/cpy for a loop ... faster for small pixels
libvips/inplace/flood.c: *	- im_flood_blob() added
libvips/inplace/flood.c: * 	- im_invalidate() after paint
libvips/inplace/flood.c: * 	- added IM_CODING_RAD support
libvips/inplace/flood.c: * 	- ooops, tiny memleak
libvips/inplace/flood.c: * 	- use inline rather than defines, so we can add scanline fills more
libvips/inplace/flood.c: * 	- gtk-doc comments
libvips/inplace/flood.c: * 	- rewrite for a scanline based fill, about 4x faster!
libvips/inplace/flood.c: * 	- allow separate test and mark images
libvips/inplace/flood.c: * 	- flood_blob could loop if start point == ink
libvips/inplace/flood.c: * 	- don't im_invalidate() after paint, this now needs to be at a higher
libvips/inplace/flood.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/inplace/flood.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/inplace/flood.c: * above this one is filled. -1 if y is decreasing.
libvips/inplace/flood.c:/* A buffer of scanlines, and how many of them have been used. If ->next is
libvips/inplace/flood.c: * non-NULL, the next block could contain more of them.
libvips/inplace/flood.c:	buf->next = NULL;
libvips/inplace/flood.c:	buf->n = 0;
libvips/inplace/flood.c:		p = buf->next;
libvips/inplace/flood.c:	if( y < 0 || y >= flood->test->Ysize )
libvips/inplace/flood.c:	x1 = IM_CLIP( 0, x1, flood->test->Xsize - 1 );
libvips/inplace/flood.c:	x2 = IM_CLIP( 0, x2, flood->test->Xsize - 1 );
libvips/inplace/flood.c:	if( x2 - x1 < 0 )
libvips/inplace/flood.c:	buf->scan[buf->n].x1 = x1;
libvips/inplace/flood.c:	buf->scan[buf->n].x2 = x2;
libvips/inplace/flood.c:	buf->scan[buf->n].y = y;
libvips/inplace/flood.c:	buf->scan[buf->n].dir = dir;
libvips/inplace/flood.c:	buf->n += 1; 
libvips/inplace/flood.c:	if( buf->n == PBUFSIZE ) { 
libvips/inplace/flood.c:		new->next = buf;
libvips/inplace/flood.c:/* Is p "connected"? ie. is equal to or not equal to flood->edge, depending on
libvips/inplace/flood.c: * whether we are flooding to the edge boundary or flooding edge-coloured
libvips/inplace/flood.c:	for( j = 0; j < flood->tsize; j++ ) 
libvips/inplace/flood.c:		if( tp[j] != flood->edge[j] ) 
libvips/inplace/flood.c:	/* If flood->equal, true if point == edge.
libvips/inplace/flood.c:	return( flood->equal ^ (j < flood->tsize) );
libvips/inplace/flood.c:	for( j = 0; j < flood->msize; j++ ) 
libvips/inplace/flood.c:		if( mp[j] != flood->ink[j] ) 
libvips/inplace/flood.c:	return( j == flood->msize );
libvips/inplace/flood.c:	for( j = 0; j < flood->msize; j++ ) 
libvips/inplace/flood.c:		q[j] = flood->ink[j];
libvips/inplace/flood.c:	const int width = flood->mark->Xsize;
libvips/inplace/flood.c:		(PEL *) IM_IMAGE_ADDR( flood->test, x, y ) ) );
libvips/inplace/flood.c:		(PEL *) IM_IMAGE_ADDR( flood->mark, x, y ) ) );
libvips/inplace/flood.c:	/* Search to the right for the first non-connected pixel. If the start
libvips/inplace/flood.c:	tp = (PEL *) IM_IMAGE_ADDR( flood->test, x + 1, y );
libvips/inplace/flood.c:		tp += flood->tsize;
libvips/inplace/flood.c:	*x2 = i - 1;
libvips/inplace/flood.c:	tp = (PEL *) IM_IMAGE_ADDR( flood->test, x - 1, y );
libvips/inplace/flood.c:	for( i = x - 1; i >= 0; i-- ) {
libvips/inplace/flood.c:		tp -= flood->tsize;
libvips/inplace/flood.c:	mp = (PEL *) IM_IMAGE_ADDR( flood->mark, *x1, y );
libvips/inplace/flood.c:	len = *x2 - *x1 + 1;
libvips/inplace/flood.c:		mp += flood->msize;
libvips/inplace/flood.c:	if( flood->dout ) {
libvips/inplace/flood.c:		flood->left = IM_MIN( flood->left, *x1 );
libvips/inplace/flood.c:		flood->right = IM_MAX( flood->right, *x2 );
libvips/inplace/flood.c:		flood->top = IM_MIN( flood->top, y );
libvips/inplace/flood.c:		flood->bottom = IM_MAX( flood->bottom, y );
libvips/inplace/flood.c:	g_assert( scan->dir == 1 || scan->dir == -1 );
libvips/inplace/flood.c:	for( tp = (PEL *) IM_IMAGE_ADDR( flood->test, scan->x1, scan->y ), 
libvips/inplace/flood.c:		x = scan->x1; 
libvips/inplace/flood.c:		x <= scan->x2; 
libvips/inplace/flood.c:		tp += flood->tsize, x++ ) {
libvips/inplace/flood.c:			if( flood->mark != flood->test ) {
libvips/inplace/flood.c:					flood->mark, x, scan->y );
libvips/inplace/flood.c:			flood_scanline( flood, x, scan->y, &x1a, &x2a );
libvips/inplace/flood.c:			if( x1a < scan->x1 - 1 )
libvips/inplace/flood.c:				flood->out = buffer_add( flood->out, flood,
libvips/inplace/flood.c:					x1a, scan->x1 - 2, 
libvips/inplace/flood.c:					scan->y - scan->dir, -scan->dir );
libvips/inplace/flood.c:			if( x2a > scan->x2 + 1 )
libvips/inplace/flood.c:				flood->out = buffer_add( flood->out, flood,
libvips/inplace/flood.c:					scan->x2 + 2, x2a, 
libvips/inplace/flood.c:					scan->y - scan->dir, -scan->dir );
libvips/inplace/flood.c:			flood->out = buffer_add( flood->out, flood,
libvips/inplace/flood.c:				x1a, x2a, scan->y + scan->dir, 
libvips/inplace/flood.c:				scan->dir );
libvips/inplace/flood.c:			tp = (PEL *) IM_IMAGE_ADDR( flood->test, x, scan->y );
libvips/inplace/flood.c:		(PEL *) IM_IMAGE_ADDR( flood->test, x, y ) ) ) 
libvips/inplace/flood.c:	flood->in = buffer_add( flood->in, flood, x1, x2, y + 1, 1 );
libvips/inplace/flood.c:	flood->in = buffer_add( flood->in, flood, x1, x2, y - 1, -1 );
libvips/inplace/flood.c:	while( flood->in->n ) {
libvips/inplace/flood.c:		for( p = flood->in; p; p = p->next ) {
libvips/inplace/flood.c:			for( i = 0; i < p->n; i++ )
libvips/inplace/flood.c:				flood_around( flood, &p->scan[i] );
libvips/inplace/flood.c:			p->n = 0;
libvips/inplace/flood.c:		SWAP( Buffer *, flood->in, flood->out );
libvips/inplace/flood.c:	if( flood->dout ) {
libvips/inplace/flood.c:		flood->dout->left = flood->left;
libvips/inplace/flood.c:		flood->dout->top = flood->top;
libvips/inplace/flood.c:		flood->dout->width = flood->right - flood->left + 1;
libvips/inplace/flood.c:		flood->dout->height = flood->bottom - flood->top + 1;
libvips/inplace/flood.c:	IM_FREE( flood->ink );
libvips/inplace/flood.c:	IM_FREE( flood->edge );
libvips/inplace/flood.c:	IM_FREEF( buffer_free, flood->in );
libvips/inplace/flood.c:	IM_FREEF( buffer_free, flood->out );
libvips/inplace/flood.c:	flood->test = test;
libvips/inplace/flood.c:	flood->mark = mark;
libvips/inplace/flood.c:	flood->x = x;
libvips/inplace/flood.c:	flood->y = y;
libvips/inplace/flood.c:	flood->ink = NULL;
libvips/inplace/flood.c:	flood->dout = dout;
libvips/inplace/flood.c:	flood->edge = NULL;
libvips/inplace/flood.c:	flood->tsize = IM_IMAGE_SIZEOF_PEL( test );
libvips/inplace/flood.c:	flood->msize = IM_IMAGE_SIZEOF_PEL( mark );
libvips/inplace/flood.c:	flood->left = x;
libvips/inplace/flood.c:	flood->top = y;
libvips/inplace/flood.c:	flood->right = x;
libvips/inplace/flood.c:	flood->bottom = y;
libvips/inplace/flood.c:	flood->in = NULL;
libvips/inplace/flood.c:	flood->out = NULL;
libvips/inplace/flood.c:	if( !(flood->ink = (PEL *) im_malloc( NULL, flood->msize )) ||
libvips/inplace/flood.c:		!(flood->edge = (PEL *) im_malloc( NULL, flood->tsize )) ||
libvips/inplace/flood.c:		!(flood->in = buffer_build()) ||
libvips/inplace/flood.c:		!(flood->out = buffer_build()) ) {
libvips/inplace/flood.c:	memcpy( flood->ink, ink, flood->msize );
libvips/inplace/flood.c: * Flood-fill @im with @ink, starting at position @x, @y. The filled area is
libvips/inplace/flood.c: * not work well as part of a pipeline. On 32-bit machines, it will be limited
libvips/inplace/flood.c: * Returns: 0 on success, or -1 on error.
libvips/inplace/flood.c:		return( -1 );
libvips/inplace/flood.c:		return( -1 );
libvips/inplace/flood.c:	memcpy( flood->edge, ink, flood->tsize );
libvips/inplace/flood.c:	flood->equal = 0;
libvips/inplace/flood.c: * Flood-fill @im with @ink, starting at position @x, @y. The filled area is
libvips/inplace/flood.c: * searches for a blob of same-coloured pixels.
libvips/inplace/flood.c: * not work well as part of a pipeline. On 32-bit machines, it will be limited
libvips/inplace/flood.c: * Returns: 0 on success, or -1 on error.
libvips/inplace/flood.c:		return( -1 );
libvips/inplace/flood.c:		return( -1 );
libvips/inplace/flood.c:	memcpy( flood->edge, IM_IMAGE_ADDR( im, x, y ), flood->tsize );
libvips/inplace/flood.c:	flood->equal = 1;
libvips/inplace/flood.c:	/* If edge == ink, we'll never stop :-( or rather, there's nothing to
libvips/inplace/flood.c:	for( j = 0; j < flood->tsize; j++ ) 
libvips/inplace/flood.c:		if( flood->edge[j] != flood->ink[j] ) 
libvips/inplace/flood.c:	if( j == flood->tsize )
libvips/inplace/flood.c: * Flood-fill @mark with @serial, starting at position @x, @y. The filled 
libvips/inplace/flood.c: * other words, it searches @test for a blob of same-coloured pixels, marking 
libvips/inplace/flood.c: * not work well as part of a pipeline. On 32-bit machines, it will be limited
libvips/inplace/flood.c: * Returns: 0 on success, or -1 on error.
libvips/inplace/flood.c:		return( -1 );
libvips/inplace/flood.c:		return( -1 );
libvips/inplace/flood.c:	memcpy( flood->edge, IM_IMAGE_ADDR( test, x, y ), flood->tsize );
libvips/inplace/flood.c:	flood->equal = 1;
libvips/inplace/flood.c:		return( -1 );
libvips/inplace/flood.c:		return( -1 );
libvips/inplace/flood.c:		return( -1 );
libvips/inplace/im_plotmask.c: * @(#) can be any size, any position - we clip against the edges of the
libvips/inplace/im_plotmask.c: *	- im_incheck() added
libvips/inplace/im_plotmask.c: *	- im_incheck() changed to im_makerw()
libvips/inplace/im_plotmask.c: *	- now blends with 0-255 mask
libvips/inplace/im_plotmask.c: * 	- im_invalidate() after paint
libvips/inplace/im_plotmask.c: * 	- don't im_invalidate() after paint, this now needs to be at a higher
libvips/inplace/im_plotmask.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/inplace/im_plotmask.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/inplace/im_plotmask.c:				tto[j] * (255 - mask_line[x])) / 255; \
libvips/inplace/im_plotmask.c:				(double) tto[j] * (255 - mask_line[x])) / 255;\
libvips/inplace/im_plotmask.c:				(double) tto[j] * (255 - mask_line[x])) / 255;\
libvips/inplace/im_plotmask.c:				(double) tto[j + 1] * (255 - mask_line[x])) / \
libvips/inplace/im_plotmask.c:		return( -1 );
libvips/inplace/im_plotmask.c:	image.width = im->Xsize;
libvips/inplace/im_plotmask.c:	image.height = im->Ysize;
libvips/inplace/im_plotmask.c:	mx = IM_MAX( 0, clipped.left - area.left );
libvips/inplace/im_plotmask.c:	my = IM_MAX( 0, clipped.top - area.top );
libvips/inplace/im_plotmask.c:	if( im->Coding == IM_CODING_LABQ ) {
libvips/inplace/im_plotmask.c:			return( -1 );
libvips/inplace/im_plotmask.c:			switch( im->BandFmt ) {
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:					to, ink, im->Bands, clipped.width ); 
libvips/inplace/im_plotmask.c:				return( -1 );
libvips/inplace/line_draw.c: * @(#) If the passed function returns non-zero, im_fastlineuser stops and
libvips/inplace/line_draw.c: * @(#) returns non-zero. Start and end points may be outside the image -
libvips/inplace/line_draw.c: * Modified : 22/10/92 - clipping constraints changed
libvips/inplace/line_draw.c: *	- im_incheck() added
libvips/inplace/line_draw.c: *	- im_incheck() changed to im_makerw()
libvips/inplace/line_draw.c: * 	- im_invalidate() after paint
libvips/inplace/line_draw.c: * 	- oops, lineset needs to ask for WIO of mask and ink
libvips/inplace/line_draw.c: * 	- don't im_invalidate() after paint, this now needs to be at a higher
libvips/inplace/line_draw.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/inplace/line_draw.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/inplace/line_draw.c:	int ps = es * im->Bands;
libvips/inplace/line_draw.c:	int ls = ps * im->Xsize;
libvips/inplace/line_draw.c:		return( -1 );
libvips/inplace/line_draw.c:	if(  x1 > im->Xsize || x1 < 0 || 
libvips/inplace/line_draw.c:		y1 > im->Ysize || y1 < 0 || 
libvips/inplace/line_draw.c:	        x2 > im->Xsize || x2 < 0 || 
libvips/inplace/line_draw.c:		y2 > im->Ysize || y2 < 0 ) { 
libvips/inplace/line_draw.c:		return( -1 ); 
libvips/inplace/line_draw.c:	dx = x2 - x1;
libvips/inplace/line_draw.c:	dy = y2 - y1;
libvips/inplace/line_draw.c:	dx = x2 - x1;
libvips/inplace/line_draw.c:	dy = y2 - y1;
libvips/inplace/line_draw.c:	p = (PEL *) im->data + x * ps + y * ls;
libvips/inplace/line_draw.c:			p += ps - ls;
libvips/inplace/line_draw.c:		/* Between -45 and 0 degrees.
libvips/inplace/line_draw.c:				err -= dx;
libvips/inplace/line_draw.c:			err -= dy;
libvips/inplace/line_draw.c:				err -= dx;
libvips/inplace/line_draw.c:				p -= ls;
libvips/inplace/line_draw.c:		/* Between -45 and -90 degrees.
libvips/inplace/line_draw.c:				err -= dy;
libvips/inplace/line_draw.c:		/* Between -90 and -135 degrees.
libvips/inplace/line_draw.c:			err -= dx;
libvips/inplace/line_draw.c:				err -= dy;
libvips/inplace/line_draw.c:				p -= ps;
libvips/inplace/line_draw.c:		return( -1 );
libvips/inplace/line_draw.c:	dx = x2 - x1;
libvips/inplace/line_draw.c:	dy = y2 - y1;
libvips/inplace/line_draw.c:	dx = x2 - x1;
libvips/inplace/line_draw.c:	dy = y2 - y1;
libvips/inplace/line_draw.c:		for( ; x <= x2; x++, y-- ) {
libvips/inplace/line_draw.c:		/* Between -45 and 0 degrees.
libvips/inplace/line_draw.c:				err -= dx;
libvips/inplace/line_draw.c:			err -= dy;
libvips/inplace/line_draw.c:				err -= dx;
libvips/inplace/line_draw.c:				y--;
libvips/inplace/line_draw.c:		/* Between -45 and -90 degrees.
libvips/inplace/line_draw.c:				err -= dy;
libvips/inplace/line_draw.c:		/* Between -90 and -135 degrees.
libvips/inplace/line_draw.c:			err -= dx;
libvips/inplace/line_draw.c:				err -= dy;
libvips/inplace/line_draw.c:				x--;
libvips/inplace/line_draw.c:/* Draw a set of lines with an ink and a mask. A non-inplace operation, handy
libvips/inplace/line_draw.c:	if( mask->Bands != 1 || mask->BandFmt != IM_BANDFMT_UCHAR ||
libvips/inplace/line_draw.c:		mask->Coding != IM_CODING_NONE ) {
libvips/inplace/line_draw.c:		return( -1 );
libvips/inplace/line_draw.c:	if( ink->Bands != in->Bands || ink->BandFmt != in->BandFmt ||
libvips/inplace/line_draw.c:		ink->Coding != in->Coding ) {
libvips/inplace/line_draw.c:		return( -1 );
libvips/inplace/line_draw.c:	if( ink->Xsize != 1 || ink->Ysize != 1 ) {
libvips/inplace/line_draw.c:		return( -1 );
libvips/inplace/line_draw.c:		return( -1 );
libvips/inplace/line_draw.c:	mask_rect.left = mask->Xsize / 2;
libvips/inplace/line_draw.c:	mask_rect.top = mask->Ysize / 2;
libvips/inplace/line_draw.c:	mask_rect.width = mask->Xsize;
libvips/inplace/line_draw.c:	mask_rect.height = mask->Ysize;
libvips/inplace/line_draw.c:		return( -1 );
libvips/inplace/line_draw.c:			im_plotmask, ink->data, mask->data, &mask_rect ) )
libvips/inplace/line_draw.c:			return( -1 );
libvips/inplace/im_insertplace.c:/* in-place insert
libvips/inplace/im_insertplace.c: *	- im_incheck() added
libvips/inplace/im_insertplace.c: *	- im_incheck() changed to im_makerw()
libvips/inplace/im_insertplace.c: *	- checks bands/types/etc match (thanks Matt)
libvips/inplace/im_insertplace.c: *	- smarter pixel size calculations
libvips/inplace/im_insertplace.c: * 	- im_invalidate() after paint
libvips/inplace/im_insertplace.c: * 	- added IM_CODING_RAD support
libvips/inplace/im_insertplace.c: * 	- allow sub to be outside main
libvips/inplace/im_insertplace.c: * 	- gtkdoc
libvips/inplace/im_insertplace.c: * 	- don't im_invalidate() after paint, this now needs to be at a higher
libvips/inplace/im_insertplace.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/inplace/im_insertplace.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/inplace/im_insertplace.c: * @sub: sub-image to insert
libvips/inplace/im_insertplace.c: * Returns: 0 on success, or -1 on error.
libvips/inplace/im_insertplace.c:		return( -1 );
libvips/inplace/im_insertplace.c:	br.width = main->Xsize;
libvips/inplace/im_insertplace.c:	br.height = main->Ysize;
libvips/inplace/im_insertplace.c:	sr.width = sub->Xsize;
libvips/inplace/im_insertplace.c:	sr.height = sub->Ysize;
libvips/inplace/im_insertplace.c:	p = (PEL *) IM_IMAGE_ADDR( sub, clip.left - x, clip.top - y );
libvips/Makefile.am:	-no-undefined \
libvips/Makefile.am:	-version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ 
libvips/histograms_lut/im_histgr.c: *	- test for Coding type added
libvips/histograms_lut/im_histgr.c: *	- rewritten for ANSI
libvips/histograms_lut/im_histgr.c: *	- now does USHORT too
libvips/histograms_lut/im_histgr.c: *	- 5 x faster!
libvips/histograms_lut/im_histgr.c: *	- rewritten for partials
libvips/histograms_lut/im_histgr.c: *	- tiny speed ups
libvips/histograms_lut/im_histgr.c: * 	- number bands from zero
libvips/histograms_lut/im_histgr.c: * 	- gtkdoc
libvips/histograms_lut/im_histgr.c: * 	- small celanups
libvips/histograms_lut/im_histgr.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_histgr.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_histgr.c:	if( !hist || !(hist->bins = IM_ARRAY( out, bands, unsigned int * )) )
libvips/histograms_lut/im_histgr.c:		if( !(hist->bins[i] = IM_ARRAY( out, size, unsigned int )) )
libvips/histograms_lut/im_histgr.c:		memset( hist->bins[i], 0, size * sizeof( unsigned int ) );
libvips/histograms_lut/im_histgr.c:	hist->bands = bands;
libvips/histograms_lut/im_histgr.c:	hist->which = which;
libvips/histograms_lut/im_histgr.c:	hist->size = size;
libvips/histograms_lut/im_histgr.c:	hist->mx = 0;
libvips/histograms_lut/im_histgr.c:/* Build a sub-hist, based on the main hist.
libvips/histograms_lut/im_histgr.c:		build_hist( out, mhist->bands, mhist->which, mhist->size ) );
libvips/histograms_lut/im_histgr.c:/* Join a sub-hist onto the main hist.
libvips/histograms_lut/im_histgr.c:	g_assert( shist->bands == mhist->bands && shist->size == mhist->size );
libvips/histograms_lut/im_histgr.c:	/* Add on sub-data.
libvips/histograms_lut/im_histgr.c:	mhist->mx = IM_MAX( mhist->mx, shist->mx );
libvips/histograms_lut/im_histgr.c:	for( i = 0; i < mhist->bands; i++ )
libvips/histograms_lut/im_histgr.c:		for( j = 0; j < mhist->size; j++ )
libvips/histograms_lut/im_histgr.c:			mhist->bins[i][j] += shist->bins[i][j];
libvips/histograms_lut/im_histgr.c:	/* Blank out sub-hist to make sure we can't add it again.
libvips/histograms_lut/im_histgr.c:	shist->mx = 0;
libvips/histograms_lut/im_histgr.c:	for( i = 0; i < shist->bands; i++ )
libvips/histograms_lut/im_histgr.c:		shist->bins[i] = NULL;
libvips/histograms_lut/im_histgr.c:	Rect *r = &reg->valid;
libvips/histograms_lut/im_histgr.c:	IMAGE *im = reg->im;
libvips/histograms_lut/im_histgr.c:	int le = r->left;
libvips/histograms_lut/im_histgr.c:	int to = r->top;
libvips/histograms_lut/im_histgr.c:	int nb = im->Bands;
libvips/histograms_lut/im_histgr.c:		for( i = 0, x = 0; x < r->width; x++ )
libvips/histograms_lut/im_histgr.c:				hist->bins[z][p[i]]++;
libvips/histograms_lut/im_histgr.c:	hist->mx = 255;
libvips/histograms_lut/im_histgr.c:	Rect *r = &reg->valid;
libvips/histograms_lut/im_histgr.c:	IMAGE *im = reg->im;
libvips/histograms_lut/im_histgr.c:	int le = r->left;
libvips/histograms_lut/im_histgr.c:	int to = r->top;
libvips/histograms_lut/im_histgr.c:	unsigned int *bins = hist->bins[0];
libvips/histograms_lut/im_histgr.c:	int nb = im->Bands;
libvips/histograms_lut/im_histgr.c:	int max = r->width * nb;
libvips/histograms_lut/im_histgr.c:		for( x = hist->which; x < max; x += nb ) 
libvips/histograms_lut/im_histgr.c:	hist->mx = 255;
libvips/histograms_lut/im_histgr.c:	Rect *r = &reg->valid;
libvips/histograms_lut/im_histgr.c:	IMAGE *im = reg->im;
libvips/histograms_lut/im_histgr.c:	int le = r->left;
libvips/histograms_lut/im_histgr.c:	int to = r->top;
libvips/histograms_lut/im_histgr.c:	int mx = hist->mx;
libvips/histograms_lut/im_histgr.c:	int nb = im->Bands;
libvips/histograms_lut/im_histgr.c:		for( i = 0, x = 0; x < r->width; x++ )
libvips/histograms_lut/im_histgr.c:				hist->bins[z][v]++;
libvips/histograms_lut/im_histgr.c:	hist->mx = mx;
libvips/histograms_lut/im_histgr.c:	Rect *r = &reg->valid;
libvips/histograms_lut/im_histgr.c:	IMAGE *im = reg->im;
libvips/histograms_lut/im_histgr.c:	int le = r->left;
libvips/histograms_lut/im_histgr.c:	int to = r->top;
libvips/histograms_lut/im_histgr.c:	int mx = hist->mx;
libvips/histograms_lut/im_histgr.c:	unsigned int *bins = hist->bins[0];
libvips/histograms_lut/im_histgr.c:	int nb = im->Bands;
libvips/histograms_lut/im_histgr.c:	int max = nb * r->width;
libvips/histograms_lut/im_histgr.c:			IM_REGION_ADDR( reg, le, y ) + hist->which;
libvips/histograms_lut/im_histgr.c:		for( x = hist->which; x < max; x += nb ) {
libvips/histograms_lut/im_histgr.c:	hist->mx = mx;
libvips/histograms_lut/im_histgr.c: * one-band histogram), or for all bands (producing an n-band histogram) if 
libvips/histograms_lut/im_histgr.c: * @bandno is -1. 
libvips/histograms_lut/im_histgr.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_histgr.c:		return( -1 );
libvips/histograms_lut/im_histgr.c:	size = in->BandFmt == IM_BANDFMT_UCHAR ? 256 : 65536;
libvips/histograms_lut/im_histgr.c:	if( bandno == -1 ) 
libvips/histograms_lut/im_histgr.c:		bands = in->Bands;
libvips/histograms_lut/im_histgr.c:		return( -1 );
libvips/histograms_lut/im_histgr.c:	if( in->BandFmt == IM_BANDFMT_UCHAR && bandno == -1 ) 
libvips/histograms_lut/im_histgr.c:	else if( in->BandFmt == IM_BANDFMT_UCHAR )
libvips/histograms_lut/im_histgr.c:	else if( in->BandFmt == IM_BANDFMT_USHORT && bandno == -1 )
libvips/histograms_lut/im_histgr.c:		return( -1 );
libvips/histograms_lut/im_histgr.c:		return( -1 );
libvips/histograms_lut/im_histgr.c:		mhist->mx + 1, 1, bands, IM_BBITS_INT, IM_BANDFMT_UINT, 
libvips/histograms_lut/im_histgr.c:		return( -1 );
libvips/histograms_lut/im_histgr.c:		return( -1 );
libvips/histograms_lut/im_histgr.c:	for( q = obuffer, j = 0; j < out->Xsize; j++ )
libvips/histograms_lut/im_histgr.c:		for( i = 0; i < out->Bands; i++ )
libvips/histograms_lut/im_histgr.c:			*q++ = mhist->bins[i][j];
libvips/histograms_lut/im_histgr.c:		return( -1 );
libvips/histograms_lut/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/histograms_lut/im_hist.c: *	- im_ioflag() call changed to im_iocheck()
libvips/histograms_lut/im_hist.c: *	- ANSIfied and tidied up
libvips/histograms_lut/im_hist.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_hist.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_hist.c: * Find and plot the histogram of @in. If @bandno is -1, plot all bands. 
libvips/histograms_lut/im_hist.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_hist.c:		return( -1 );
libvips/histograms_lut/im_mpercent.c: *	- now returns result through parameter
libvips/histograms_lut/im_mpercent.c: *	- ANSIfied a little
libvips/histograms_lut/im_mpercent.c: * 	- redone with the vips hist operators
libvips/histograms_lut/im_mpercent.c: * 	- gtkdoc
libvips/histograms_lut/im_mpercent.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_mpercent.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_mpercent.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_mpercent.c:		return( -1 );
libvips/histograms_lut/im_mpercent.c:		return( -1 );
libvips/histograms_lut/im_mpercent.c:		return( -1 );
libvips/histograms_lut/im_mpercent.c:		im_lessconst( t[2], t[3], percent * t[2]->Xsize ) ||
libvips/histograms_lut/im_mpercent.c:		return( -1 );
libvips/histograms_lut/im_mpercent.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_mpercent.c:		return( -1 );
libvips/histograms_lut/im_mpercent.c:	if( im_histgr( in, t, -1 ) ||
libvips/histograms_lut/im_mpercent.c:		return( -1 );
libvips/histograms_lut/im_stdif.c: *	- now works for odd window sizes
libvips/histograms_lut/im_stdif.c: *	- ANSIfication
libvips/histograms_lut/im_stdif.c: *	- new IM_ARRAY() macro
libvips/histograms_lut/im_stdif.c: *	- im_lhisteq() adapted to make new im_stdif()
libvips/histograms_lut/im_stdif.c: *	- now partial, plus rolling window
libvips/histograms_lut/im_stdif.c: *	- 5x faster, amazingly
libvips/histograms_lut/im_stdif.c: *	- works
libvips/histograms_lut/im_stdif.c: *	- now uses im_embed() with edge stretching on the input, not
libvips/histograms_lut/im_stdif.c: * 	- gtkdoc
libvips/histograms_lut/im_stdif.c: * 	- small cleanups
libvips/histograms_lut/im_stdif.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_stdif.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_stdif.c:	int npel = inf->xwin * inf->ywin;
libvips/histograms_lut/im_stdif.c:	Rect *r = &or->valid;
libvips/histograms_lut/im_stdif.c:	irect.left = or->valid.left;
libvips/histograms_lut/im_stdif.c:	irect.top = or->valid.top;
libvips/histograms_lut/im_stdif.c:	irect.width = or->valid.width + inf->xwin;
libvips/histograms_lut/im_stdif.c:	irect.height = or->valid.height + inf->ywin;
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_stdif.c:	centre = lsk * (inf->ywin / 2) + inf->xwin / 2;
libvips/histograms_lut/im_stdif.c:	for( y = 0; y < r->height; y++ ) {
libvips/histograms_lut/im_stdif.c:		PEL *p = (PEL *) IM_REGION_ADDR( ir, r->left, r->top + y );
libvips/histograms_lut/im_stdif.c:		PEL *q = (PEL *) IM_REGION_ADDR( or, r->left, r->top + y );
libvips/histograms_lut/im_stdif.c:		double f1 = inf->a * inf->m0;
libvips/histograms_lut/im_stdif.c:		double f2 = 1.0 - inf->a;
libvips/histograms_lut/im_stdif.c:		double f3 = inf->b * inf->s0;
libvips/histograms_lut/im_stdif.c:		for( j = 0; j < inf->ywin; j++ ) {
libvips/histograms_lut/im_stdif.c:			for( i = 0; i < inf->xwin; i++ ) {
libvips/histograms_lut/im_stdif.c:		for( x = 0; x < r->width; x++ ) {
libvips/histograms_lut/im_stdif.c:			double var = (double) sum2 / npel - (mean * mean);
libvips/histograms_lut/im_stdif.c:				((double) p[centre] - mean) * 
libvips/histograms_lut/im_stdif.c:				(f3 / (inf->s0 + inf->b * sig));
libvips/histograms_lut/im_stdif.c:			/* Adapt sums - remove the pels from the left hand
libvips/histograms_lut/im_stdif.c:			 * column, add in pels for a new right-hand column.
libvips/histograms_lut/im_stdif.c:			for( j = 0; j < inf->ywin; j++ ) {
libvips/histograms_lut/im_stdif.c:				int t2 = p1[inf->xwin];
libvips/histograms_lut/im_stdif.c:				sum -= t1;
libvips/histograms_lut/im_stdif.c:				sum2 -= t1 * t1;
libvips/histograms_lut/im_stdif.c:	if( xwin > in->Xsize || 
libvips/histograms_lut/im_stdif.c:		ywin > in->Ysize ) {
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_stdif.c:	out->Xsize -= xwin;
libvips/histograms_lut/im_stdif.c:	out->Ysize -= ywin;
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_stdif.c:	inf->xwin = xwin;
libvips/histograms_lut/im_stdif.c:	inf->ywin = ywin;
libvips/histograms_lut/im_stdif.c:	inf->a = a;
libvips/histograms_lut/im_stdif.c:	inf->m0 = m0;
libvips/histograms_lut/im_stdif.c:	inf->b = b;
libvips/histograms_lut/im_stdif.c:	inf->s0 = s0;
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_stdif.c: * enhancing low-contrast images with lots of detail, such as X-ray plates.
libvips/histograms_lut/im_stdif.c: * vout(i,j) = @a * @m0 + (1 - @a) * meanv + 
libvips/histograms_lut/im_stdif.c: *       (vin(i,j) - meanv) * (@b * @s0) / (@s0 + @b * stdv)
libvips/histograms_lut/im_stdif.c: * The operation works on one-band uchar images only, and writes a one-band 
libvips/histograms_lut/im_stdif.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_stdif.c:			in->Xsize + xwin - 1, 
libvips/histograms_lut/im_stdif.c:			in->Ysize + ywin - 1 ) ||
libvips/histograms_lut/im_stdif.c:		return( -1 );
libvips/histograms_lut/im_invertlut.c: * 	- generate image rather than doublemask (arrg)
libvips/histograms_lut/im_invertlut.c: * 	- gtkdoc
libvips/histograms_lut/im_invertlut.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_invertlut.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_invertlut.c:	double diff = r1[0][0] - r2[0][0];
libvips/histograms_lut/im_invertlut.c:		return( -1 );
libvips/histograms_lut/im_invertlut.c:	if( state->data ) {
libvips/histograms_lut/im_invertlut.c:		for( i = 0; i < state->input->ysize; i++ )
libvips/histograms_lut/im_invertlut.c:			if( state->data[i] ) {
libvips/histograms_lut/im_invertlut.c:				im_free( state->data[i] );
libvips/histograms_lut/im_invertlut.c:				state->data[i] = NULL;
libvips/histograms_lut/im_invertlut.c:		im_free( state->data );
libvips/histograms_lut/im_invertlut.c:		state->data = NULL;
libvips/histograms_lut/im_invertlut.c:	state->input = input;
libvips/histograms_lut/im_invertlut.c:	state->output = output;
libvips/histograms_lut/im_invertlut.c:	state->lut_size = lut_size;
libvips/histograms_lut/im_invertlut.c:	state->data = NULL;
libvips/histograms_lut/im_invertlut.c:	if( !(state->data = IM_ARRAY( NULL, input->ysize, double * )) )
libvips/histograms_lut/im_invertlut.c:		return( -1 );
libvips/histograms_lut/im_invertlut.c:	for( y = 0; y < input->ysize; y++ ) 
libvips/histograms_lut/im_invertlut.c:		state->data[y] = NULL;
libvips/histograms_lut/im_invertlut.c:	for( y = 0; y < input->ysize; y++ ) 
libvips/histograms_lut/im_invertlut.c:		if( !(state->data[y] = IM_ARRAY( NULL, input->xsize, double )) )
libvips/histograms_lut/im_invertlut.c:			return( -1 );
libvips/histograms_lut/im_invertlut.c:	for( i = 0, y = 0; y < input->ysize; y++ ) 
libvips/histograms_lut/im_invertlut.c:		for( x = 0; x < input->xsize; x++, i++ ) 
libvips/histograms_lut/im_invertlut.c:			state->data[y][x] = input->coeff[i];
libvips/histograms_lut/im_invertlut.c:	for( y = 0; y < input->ysize; y++ ) 
libvips/histograms_lut/im_invertlut.c:		for( x = 0; x < input->xsize; x++ ) 
libvips/histograms_lut/im_invertlut.c:			if( state->data[y][x] > 1.0 || 
libvips/histograms_lut/im_invertlut.c:				state->data[y][x] < 0.0 ) {
libvips/histograms_lut/im_invertlut.c:				return( -1 );
libvips/histograms_lut/im_invertlut.c:	qsort( state->data, input->ysize, sizeof( double * ), compare );
libvips/histograms_lut/im_invertlut.c:	for( y = 0; y < input->ysize; y++ ) {
libvips/histograms_lut/im_invertlut.c:		for( x = 0; x < input->xsize; x++ )
libvips/histograms_lut/im_invertlut.c:			printf( "%.9f ", state->data[y][x] );
libvips/histograms_lut/im_invertlut.c:	DOUBLEMASK *input = state->input;
libvips/histograms_lut/im_invertlut.c:	int ysize = input->ysize;
libvips/histograms_lut/im_invertlut.c:	int xsize = input->xsize;
libvips/histograms_lut/im_invertlut.c:	IMAGE *output = state->output;
libvips/histograms_lut/im_invertlut.c:	double *odata = (double *) output->data;
libvips/histograms_lut/im_invertlut.c:	int bands = xsize - 1;
libvips/histograms_lut/im_invertlut.c:	double **data = state->data;
libvips/histograms_lut/im_invertlut.c:	int lut_size = state->lut_size;
libvips/histograms_lut/im_invertlut.c:		int first = data[0][i + 1] * (lut_size - 1);
libvips/histograms_lut/im_invertlut.c:		int last = data[ysize - 1][i + 1] * (lut_size - 1);
libvips/histograms_lut/im_invertlut.c:		fac = (1 - data[ysize - 1][0]) / ((lut_size - 1) - last);
libvips/histograms_lut/im_invertlut.c:				data[ysize - 1][0] + (k - last) * fac;
libvips/histograms_lut/im_invertlut.c:			double ki = (double) k / (lut_size - 1);
libvips/histograms_lut/im_invertlut.c:			for( j = ysize - 1; j >= 0; j-- )
libvips/histograms_lut/im_invertlut.c:			if( j == -1 )
libvips/histograms_lut/im_invertlut.c:			irange = data[j + 1][i + 1] - data[j][i + 1];
libvips/histograms_lut/im_invertlut.c:			orange = data[j + 1][0] - data[j][0];
libvips/histograms_lut/im_invertlut.c:				orange * ((ki - data[j][i + 1]) / irange);
libvips/histograms_lut/im_invertlut.c: * It won't work too well for non-monotonic camera responses 
libvips/histograms_lut/im_invertlut.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_invertlut.c:		input->xsize < 2 || 
libvips/histograms_lut/im_invertlut.c:		input->ysize < 1 ) {
libvips/histograms_lut/im_invertlut.c:		return( -1 );
libvips/histograms_lut/im_invertlut.c:		return( -1 );
libvips/histograms_lut/im_invertlut.c:                lut_size, 1, input->xsize - 1, 
libvips/histograms_lut/im_invertlut.c:                return( -1 );
libvips/histograms_lut/im_invertlut.c:		return( -1 );
libvips/histograms_lut/im_maplut.c: *	- oops! im_incheck() added for LUT image
libvips/histograms_lut/im_maplut.c: * 	- some ANSIfication
libvips/histograms_lut/im_maplut.c: *	- adapted for partial v2
libvips/histograms_lut/im_maplut.c: *	- ANSIfied
libvips/histograms_lut/im_maplut.c: *	- now does complex LUTs too
libvips/histograms_lut/im_maplut.c: *	- more helpful error messages, slight reformatting
libvips/histograms_lut/im_maplut.c: *	- now allows non-uchar image input
libvips/histograms_lut/im_maplut.c: *	- uses im_malloc(), IM_NEW() etc.
libvips/histograms_lut/im_maplut.c: *	- now takes a private copy of LUT, so user can im_close() LUT image
libvips/histograms_lut/im_maplut.c: *	- lut may now have many bands if image has just one band
libvips/histograms_lut/im_maplut.c: *	- small speed ups
libvips/histograms_lut/im_maplut.c: *	- heh, 1 band image + 3 band lut + >8bit output has been broken for 9
libvips/histograms_lut/im_maplut.c: *	  years :-)
libvips/histograms_lut/im_maplut.c: * 	- new eval start/end system
libvips/histograms_lut/im_maplut.c: * 	- gtkdoc
libvips/histograms_lut/im_maplut.c: * 	- small cleanups
libvips/histograms_lut/im_maplut.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_maplut.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_maplut.c:	int overflow;		/* Number of overflows for non-uchar lut */
libvips/histograms_lut/im_maplut.c:	st->overflow = 0;
libvips/histograms_lut/im_maplut.c:	if( st->overflow ) 
libvips/histograms_lut/im_maplut.c:			st->overflow );
libvips/histograms_lut/im_maplut.c:	st->fmt = lut->BandFmt;
libvips/histograms_lut/im_maplut.c:	st->es = IM_IMAGE_SIZEOF_ELEMENT( lut );
libvips/histograms_lut/im_maplut.c:	st->nb = lut->Bands;
libvips/histograms_lut/im_maplut.c:	st->sz = lut->Xsize * lut->Ysize;
libvips/histograms_lut/im_maplut.c:	st->clp = st->sz - 1;
libvips/histograms_lut/im_maplut.c:	st->overflow = 0;
libvips/histograms_lut/im_maplut.c:	st->table = NULL;
libvips/histograms_lut/im_maplut.c:	if( !(st->table = IM_ARRAY( out, lut->Bands, PEL * )) ) 
libvips/histograms_lut/im_maplut.c:	for( i = 0; i < lut->Bands; i++ )
libvips/histograms_lut/im_maplut.c:		if( !(st->table[i] = IM_ARRAY( out, st->sz * st->es, PEL )) )
libvips/histograms_lut/im_maplut.c:	q = (PEL *) lut->data;
libvips/histograms_lut/im_maplut.c:	for( x = 0; x < st->sz; x++ )
libvips/histograms_lut/im_maplut.c:		for( i = 0; i < st->nb; i++ ) {
libvips/histograms_lut/im_maplut.c:			memcpy( st->table[i] + x * st->es, q, st->es );
libvips/histograms_lut/im_maplut.c:			q += st->es;
libvips/histograms_lut/im_maplut.c:	st->overflow += seq->overflow;
libvips/histograms_lut/im_maplut.c:	IM_FREEF( im_region_free, seq->ir );
libvips/histograms_lut/im_maplut.c:	seq->ir = NULL;
libvips/histograms_lut/im_maplut.c:	seq->overflow = 0;
libvips/histograms_lut/im_maplut.c:	if( !(seq->ir = im_region_create( in )) ) 
libvips/histograms_lut/im_maplut.c:/* Map through n non-complex luts.
libvips/histograms_lut/im_maplut.c:	int b = st->nb; \
libvips/histograms_lut/im_maplut.c:			OUT *tlut = (OUT *) st->table[z]; \
libvips/histograms_lut/im_maplut.c:	int b = in->Bands; \
libvips/histograms_lut/im_maplut.c:			OUT *tlut = (OUT *) st->table[z]; \
libvips/histograms_lut/im_maplut.c:	int b = st->nb; \
libvips/histograms_lut/im_maplut.c:			OUT *tlut = (OUT *) st->table[z]; \
libvips/histograms_lut/im_maplut.c:				if( index > st->clp ) { \
libvips/histograms_lut/im_maplut.c:					index = st->clp; \
libvips/histograms_lut/im_maplut.c:					seq->overflow++; \
libvips/histograms_lut/im_maplut.c:	int b = in->Bands; \
libvips/histograms_lut/im_maplut.c:			OUT *tlut = (OUT *) st->table[z]; \
libvips/histograms_lut/im_maplut.c:				if( index > st->clp ) { \
libvips/histograms_lut/im_maplut.c:					index = st->clp; \
libvips/histograms_lut/im_maplut.c:					seq->overflow++; \
libvips/histograms_lut/im_maplut.c:/* Map image through one non-complex lut.
libvips/histograms_lut/im_maplut.c:	OUT *tlut = (OUT *) st->table[0]; \
libvips/histograms_lut/im_maplut.c:	OUT *tlut = (OUT *) st->table[0]; \
libvips/histograms_lut/im_maplut.c:	OUT *tlut = (OUT *) st->table[0]; \
libvips/histograms_lut/im_maplut.c:			if( index > st->clp ) { \
libvips/histograms_lut/im_maplut.c:				index = st->clp; \
libvips/histograms_lut/im_maplut.c:				seq->overflow++; \
libvips/histograms_lut/im_maplut.c:	OUT *tlut = (OUT *) st->table[0]; \
libvips/histograms_lut/im_maplut.c:			if( index > st->clp ) { \
libvips/histograms_lut/im_maplut.c:				index = st->clp; \
libvips/histograms_lut/im_maplut.c:				seq->overflow++; \
libvips/histograms_lut/im_maplut.c:/* Map 1-band image through a many-band non-complex lut.
libvips/histograms_lut/im_maplut.c:	OUT **tlut = (OUT **) st->table; \
libvips/histograms_lut/im_maplut.c:			for( z = 0; z < st->nb; z++, i++ ) \
libvips/histograms_lut/im_maplut.c:/* Map 1-band image through many-band complex lut.
libvips/histograms_lut/im_maplut.c:	OUT **tlut = (OUT **) st->table; \
libvips/histograms_lut/im_maplut.c:			for( z = 0; z < st->nb; z++ ) { \
libvips/histograms_lut/im_maplut.c:/* Map 1-band uint or ushort image through a many-band non-complex LUT.
libvips/histograms_lut/im_maplut.c:	OUT **tlut = (OUT **) st->table; \
libvips/histograms_lut/im_maplut.c:			if( n > st->clp ) { \
libvips/histograms_lut/im_maplut.c:				n = st->clp; \
libvips/histograms_lut/im_maplut.c:				seq->overflow++; \
libvips/histograms_lut/im_maplut.c:			for( z = 0; z < st->nb; z++, i++ ) \
libvips/histograms_lut/im_maplut.c:/* Map 1-band uint or ushort image through a many-band complex LUT.
libvips/histograms_lut/im_maplut.c:	OUT **tlut = (OUT **) st->table; \
libvips/histograms_lut/im_maplut.c:			if( n > st->clp ) { \
libvips/histograms_lut/im_maplut.c:				n = st->clp; \
libvips/histograms_lut/im_maplut.c:				seq->overflow++; \
libvips/histograms_lut/im_maplut.c:			for( z = 0; z < st->nb; z++ ) { \
libvips/histograms_lut/im_maplut.c:	switch( ir->im->BandFmt ) { \
libvips/histograms_lut/im_maplut.c:/* Switch for LUT types. One function for non-complex images, a
libvips/histograms_lut/im_maplut.c:	switch( st->fmt ) { \
libvips/histograms_lut/im_maplut.c:	REGION *ir = seq->ir;
libvips/histograms_lut/im_maplut.c:	Rect *r = &or->valid;
libvips/histograms_lut/im_maplut.c:	int le = r->left;
libvips/histograms_lut/im_maplut.c:	int to = r->top;
libvips/histograms_lut/im_maplut.c:	int np = r->width;			/* Pels across region */
libvips/histograms_lut/im_maplut.c:		return( -1 );
libvips/histograms_lut/im_maplut.c:	if( st->nb == 1 )
libvips/histograms_lut/im_maplut.c:		if( ir->im->Bands == 1 )
libvips/histograms_lut/im_maplut.c: * @lut: look-up table
libvips/histograms_lut/im_maplut.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_maplut.c:	/* Check input output. Old-style IO from lut, for simplicity.
libvips/histograms_lut/im_maplut.c:		return( -1 );
libvips/histograms_lut/im_maplut.c:		im_clip2fmt( in, t, bandfmt_maplut[in->BandFmt] ) )
libvips/histograms_lut/im_maplut.c:		return( -1 );
libvips/histograms_lut/im_maplut.c:                return( -1 );
libvips/histograms_lut/im_maplut.c:	out->BandFmt = lut->BandFmt;
libvips/histograms_lut/im_maplut.c:	if( lut->Bands != 1 )
libvips/histograms_lut/im_maplut.c:		out->Bands = lut->Bands;
libvips/histograms_lut/im_maplut.c:		return( -1 );
libvips/histograms_lut/im_maplut.c:		return( -1 );
libvips/histograms_lut/im_maplut.c:                return( -1 );
libvips/histograms_lut/im_buildlut.c: * 	- from im_invertlut()
libvips/histograms_lut/im_buildlut.c: * 	- don't output x values
libvips/histograms_lut/im_buildlut.c: * 	- saner limit and rounding behaviour
libvips/histograms_lut/im_buildlut.c: * 	- argh, fixed again
libvips/histograms_lut/im_buildlut.c: *	- more fixes for tables that don't start at zero (thanks Jack)
libvips/histograms_lut/im_buildlut.c: * 	- gtkdoc
libvips/histograms_lut/im_buildlut.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_buildlut.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_buildlut.c:	double diff = r1[0][0] - r2[0][0];
libvips/histograms_lut/im_buildlut.c:		return( -1 );
libvips/histograms_lut/im_buildlut.c:	if( state->data )
libvips/histograms_lut/im_buildlut.c:		for( i = 0; i < state->input->ysize; i++ ) 
libvips/histograms_lut/im_buildlut.c:			IM_FREE( state->data[i] );
libvips/histograms_lut/im_buildlut.c:	IM_FREE( state->data );
libvips/histograms_lut/im_buildlut.c:	IM_FREE( state->buf );
libvips/histograms_lut/im_buildlut.c:	state->input = input;
libvips/histograms_lut/im_buildlut.c:	state->data = NULL;
libvips/histograms_lut/im_buildlut.c:	xlow = xhigh = input->coeff[0];
libvips/histograms_lut/im_buildlut.c:	for( y = 0; y < input->ysize; y++ ) {
libvips/histograms_lut/im_buildlut.c:		double v = input->coeff[y * input->xsize];
libvips/histograms_lut/im_buildlut.c:			return( -1 );
libvips/histograms_lut/im_buildlut.c:	state->xlow = xlow;
libvips/histograms_lut/im_buildlut.c:	state->lut_size = xhigh - xlow + 1;
libvips/histograms_lut/im_buildlut.c:	if( state->lut_size < 1 ) {
libvips/histograms_lut/im_buildlut.c:		return( -1 );
libvips/histograms_lut/im_buildlut.c:	if( !(state->data = IM_ARRAY( NULL, input->ysize, double * )) )
libvips/histograms_lut/im_buildlut.c:		return( -1 );
libvips/histograms_lut/im_buildlut.c:	for( y = 0; y < input->ysize; y++ ) 
libvips/histograms_lut/im_buildlut.c:		state->data[y] = NULL;
libvips/histograms_lut/im_buildlut.c:	for( y = 0; y < input->ysize; y++ ) 
libvips/histograms_lut/im_buildlut.c:		if( !(state->data[y] = IM_ARRAY( NULL, input->xsize, double )) )
libvips/histograms_lut/im_buildlut.c:			return( -1 );
libvips/histograms_lut/im_buildlut.c:	for( i = 0, y = 0; y < input->ysize; y++ ) 
libvips/histograms_lut/im_buildlut.c:		for( x = 0; x < input->xsize; x++, i++ ) 
libvips/histograms_lut/im_buildlut.c:			state->data[y][x] = input->coeff[i];
libvips/histograms_lut/im_buildlut.c:	if( !(state->buf = IM_ARRAY( NULL, 
libvips/histograms_lut/im_buildlut.c:		state->lut_size * (input->xsize - 1), double )) )
libvips/histograms_lut/im_buildlut.c:		return( -1 );
libvips/histograms_lut/im_buildlut.c:	qsort( state->data, input->ysize, sizeof( double * ), compare );
libvips/histograms_lut/im_buildlut.c:	for( y = 0; y < input->ysize; y++ ) {
libvips/histograms_lut/im_buildlut.c:		for( x = 0; x < input->xsize; x++ )
libvips/histograms_lut/im_buildlut.c:			printf( "%.9f ", state->data[y][x] );
libvips/histograms_lut/im_buildlut.c:	const int xlow = state->xlow;
libvips/histograms_lut/im_buildlut.c:	const DOUBLEMASK *input = state->input;
libvips/histograms_lut/im_buildlut.c:	const int ysize = input->ysize;
libvips/histograms_lut/im_buildlut.c:	const int xsize = input->xsize;
libvips/histograms_lut/im_buildlut.c:	const int bands = xsize - 1;
libvips/histograms_lut/im_buildlut.c:	const int xlast = state->data[ysize - 1][0];
libvips/histograms_lut/im_buildlut.c:		for( i = 0; i < ysize - 1; i++ ) {
libvips/histograms_lut/im_buildlut.c:			const int x1 = state->data[i][0];
libvips/histograms_lut/im_buildlut.c:			const int x2 = state->data[i + 1][0];
libvips/histograms_lut/im_buildlut.c:			const int dx = x2 - x1;
libvips/histograms_lut/im_buildlut.c:			const double y1 = state->data[i][b + 1];
libvips/histograms_lut/im_buildlut.c:			const double y2 = state->data[i + 1][b + 1];
libvips/histograms_lut/im_buildlut.c:			const double dy = y2 - y1;
libvips/histograms_lut/im_buildlut.c:				state->buf[b + (x + x1 - xlow) * bands] = 
libvips/histograms_lut/im_buildlut.c:		state->buf[b + (xlast - xlow) * bands] =
libvips/histograms_lut/im_buildlut.c:			state->data[ysize - 1][b + 1];
libvips/histograms_lut/im_buildlut.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_buildlut.c:	if( !input || input->xsize < 2 || input->ysize < 1 ) {
libvips/histograms_lut/im_buildlut.c:		return( -1 );
libvips/histograms_lut/im_buildlut.c:                return( -1 );
libvips/histograms_lut/im_buildlut.c:                state.lut_size, 1, input->xsize - 1, 
libvips/histograms_lut/im_buildlut.c:		return( -1 );
libvips/histograms_lut/im_histspec.c: * 	- bleurg! rewritten, now does 16 bits as well, bugs removed, faster,
libvips/histograms_lut/im_histspec.c: * 	- gtkdoc
libvips/histograms_lut/im_histspec.c: * 	- small cleanups
libvips/histograms_lut/im_histspec.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_histspec.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_histspec.c:	const int inpx = in->Xsize * in->Ysize;
libvips/histograms_lut/im_histspec.c:	const int refpx = ref->Xsize * ref->Ysize;
libvips/histograms_lut/im_histspec.c:	const int bands = in->Bands;	
libvips/histograms_lut/im_histspec.c:                return( -1 );
libvips/histograms_lut/im_histspec.c:	/* Unpack to equal-sized buffers.
libvips/histograms_lut/im_histspec.c:		return( -1 );
libvips/histograms_lut/im_histspec.c:		inbuf[i] = ((unsigned int *)in->data)[i];
libvips/histograms_lut/im_histspec.c:		refbuf[i] = ((unsigned int *)ref->data)[i];
libvips/histograms_lut/im_histspec.c:		int limit = max - bands;
libvips/histograms_lut/im_histspec.c:		return( -1 );
libvips/histograms_lut/im_histspec.c:	out->Xsize = px;
libvips/histograms_lut/im_histspec.c:	out->Ysize = 1;
libvips/histograms_lut/im_histspec.c:	out->Type = IM_TYPE_HISTOGRAM;
libvips/histograms_lut/im_histspec.c:		return( -1 );
libvips/histograms_lut/im_histspec.c:		return( -1 );
libvips/histograms_lut/im_histspec.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_histspec.c:		return( -1 );
libvips/histograms_lut/im_histspec.c:		return( -1 );
libvips/histograms_lut/im_histspec.c:	px = t[4]->Xsize * t[4]->Ysize;
libvips/histograms_lut/im_histspec.c:		return( -1 );
libvips/histograms_lut/im_heq.c:/* Histogram-equalise an image.
libvips/histograms_lut/im_heq.c: *	- im_ioflag() changed to im_iocheck()
libvips/histograms_lut/im_heq.c: *	- ANSIfied and tidied up
libvips/histograms_lut/im_heq.c: *	- more cleanup
libvips/histograms_lut/im_heq.c: * 	- gtkdoc
libvips/histograms_lut/im_heq.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_heq.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_heq.c: * Histogram-equalise @in. Equalise using band @bandno, or if @bandno is -1,
libvips/histograms_lut/im_heq.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_heq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c: *	- rewritten, adapting im_spcor()
libvips/histograms_lut/im_lhisteq.c: *	- correct result, 2x faster, partial, simpler, better arg checking
libvips/histograms_lut/im_lhisteq.c: *	- expand input rather than output with new im_embed() mode
libvips/histograms_lut/im_lhisteq.c: *	- _raw() output is one pixel larger
libvips/histograms_lut/im_lhisteq.c: *	- sets Xoffset/Yoffset
libvips/histograms_lut/im_lhisteq.c: * 	- check for window too small as well
libvips/histograms_lut/im_lhisteq.c: * 	- gtkdoc
libvips/histograms_lut/im_lhisteq.c: * 	- small cleanups
libvips/histograms_lut/im_lhisteq.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_lhisteq.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_lhisteq.c:	Rect *r = &or->valid;
libvips/histograms_lut/im_lhisteq.c:	irect.left = or->valid.left;
libvips/histograms_lut/im_lhisteq.c:	irect.top = or->valid.top;
libvips/histograms_lut/im_lhisteq.c:	irect.width = or->valid.width + inf->xwin;
libvips/histograms_lut/im_lhisteq.c:	irect.height = or->valid.height + inf->ywin;
libvips/histograms_lut/im_lhisteq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c:	centre = lsk * (inf->ywin / 2) + inf->xwin / 2;
libvips/histograms_lut/im_lhisteq.c:	for( y = 0; y < r->height; y++ ) {
libvips/histograms_lut/im_lhisteq.c:		PEL *p = (PEL *) IM_REGION_ADDR( ir, r->left, r->top + y );
libvips/histograms_lut/im_lhisteq.c:		PEL *q = (PEL *) IM_REGION_ADDR( or, r->left, r->top + y );
libvips/histograms_lut/im_lhisteq.c:		for( j = 0; j < inf->ywin; j++ ) {
libvips/histograms_lut/im_lhisteq.c:			for( i = 0; i < inf->xwin; i++ )
libvips/histograms_lut/im_lhisteq.c:		for( x = 0; x < r->width; x++ ) {
libvips/histograms_lut/im_lhisteq.c:			q[x] = sum * 256 / inf->npels;
libvips/histograms_lut/im_lhisteq.c:			/* Adapt histogram - remove the pels from the left hand
libvips/histograms_lut/im_lhisteq.c:			 * column, add in pels for a new right-hand column.
libvips/histograms_lut/im_lhisteq.c:			for( j = 0; j < inf->ywin; j++ ) {
libvips/histograms_lut/im_lhisteq.c:				hist[p1[0]] -= 1;
libvips/histograms_lut/im_lhisteq.c:				hist[p1[inf->xwin]] += 1;
libvips/histograms_lut/im_lhisteq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c:	if( xwin > in->Xsize || 
libvips/histograms_lut/im_lhisteq.c:		ywin > in->Ysize ) {
libvips/histograms_lut/im_lhisteq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c:	out->Xsize -= xwin - 1;
libvips/histograms_lut/im_lhisteq.c:	out->Ysize -= ywin - 1;
libvips/histograms_lut/im_lhisteq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c:	inf->xwin = xwin;
libvips/histograms_lut/im_lhisteq.c:	inf->ywin = ywin;
libvips/histograms_lut/im_lhisteq.c:	inf->npels = xwin * ywin;
libvips/histograms_lut/im_lhisteq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c:	out->Xoffset = -xwin / 2;
libvips/histograms_lut/im_lhisteq.c:	out->Yoffset = -xwin / 2;
libvips/histograms_lut/im_lhisteq.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_lhisteq.c:			in->Xsize + xwin - 1, in->Ysize + ywin - 1 ) ||
libvips/histograms_lut/im_lhisteq.c:		return( -1 );
libvips/histograms_lut/im_lhisteq.c:	out->Xoffset = 0;
libvips/histograms_lut/im_lhisteq.c:	out->Yoffset = 0;
libvips/histograms_lut/im_project.c: *	- from im_histgr()
libvips/histograms_lut/im_project.c: * 	- gtkdoc
libvips/histograms_lut/im_project.c: * 	- small celanups
libvips/histograms_lut/im_project.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_project.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_project.c:	project->in = in;
libvips/histograms_lut/im_project.c:	project->hout = hout;
libvips/histograms_lut/im_project.c:	project->vout = vout;
libvips/histograms_lut/im_project.c:	project->columns = IM_ARRAY( hout, psize * in->Xsize, guchar );
libvips/histograms_lut/im_project.c:	project->rows = IM_ARRAY( hout, psize * in->Ysize, guchar );
libvips/histograms_lut/im_project.c:	if( !project->columns || !project->rows )
libvips/histograms_lut/im_project.c:	memset( project->columns, 0, psize * in->Xsize );
libvips/histograms_lut/im_project.c:	memset( project->rows, 0, psize * in->Ysize );
libvips/histograms_lut/im_project.c:/* Build a sub-project, based on the main project.
libvips/histograms_lut/im_project.c:	return( project_new( mproject->in, mproject->hout, mproject->vout ) );
libvips/histograms_lut/im_project.c:/* Join a sub-project onto the main project.
libvips/histograms_lut/im_project.c:	IMAGE *in = mproject->in;
libvips/histograms_lut/im_project.c:	IMAGE *out = mproject->hout;
libvips/histograms_lut/im_project.c:	int hsz = in->Xsize * in->Bands;
libvips/histograms_lut/im_project.c:	int vsz = in->Ysize * in->Bands;
libvips/histograms_lut/im_project.c:	g_assert( sproject->hout == mproject->hout );
libvips/histograms_lut/im_project.c:	g_assert( sproject->vout == mproject->vout );
libvips/histograms_lut/im_project.c:	/* Add on sub-data.
libvips/histograms_lut/im_project.c:	switch( out->BandFmt ) {
libvips/histograms_lut/im_project.c:		ADD_BUFFER( guint, mproject->columns, sproject->columns, hsz );
libvips/histograms_lut/im_project.c:		ADD_BUFFER( guint, mproject->rows, sproject->rows, vsz );
libvips/histograms_lut/im_project.c:		ADD_BUFFER( int, mproject->columns, sproject->columns, hsz );
libvips/histograms_lut/im_project.c:		ADD_BUFFER( int, mproject->rows, sproject->rows, vsz );
libvips/histograms_lut/im_project.c:		ADD_BUFFER( double, mproject->columns, sproject->columns, hsz );
libvips/histograms_lut/im_project.c:		ADD_BUFFER( double, mproject->rows, sproject->rows, vsz );
libvips/histograms_lut/im_project.c:	/* Blank out sub-project to make sure we can't add it again.
libvips/histograms_lut/im_project.c:	memset( sproject->columns, 0, IM_IMAGE_SIZEOF_ELEMENT( out ) * hsz );
libvips/histograms_lut/im_project.c:	memset( sproject->rows, 0, IM_IMAGE_SIZEOF_ELEMENT( out ) * vsz );
libvips/histograms_lut/im_project.c:	rows = ((OUTTYPE *) project->rows) + to * nb; \
libvips/histograms_lut/im_project.c:	for( y = 0; y < r->height; y++ ) { \
libvips/histograms_lut/im_project.c:		columns = ((OUTTYPE *) project->columns) + le * nb; \
libvips/histograms_lut/im_project.c:		for( x = 0; x < r->width; x++ ) { \
libvips/histograms_lut/im_project.c:	Rect *r = &reg->valid;
libvips/histograms_lut/im_project.c:	int le = r->left;
libvips/histograms_lut/im_project.c:	int to = r->top;
libvips/histograms_lut/im_project.c:	int nb = project->in->Bands;
libvips/histograms_lut/im_project.c:	switch( project->in->BandFmt ) {
libvips/histograms_lut/im_project.c: * Non-complex images only.
libvips/histograms_lut/im_project.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_project.c:		return( -1 );
libvips/histograms_lut/im_project.c:		return( -1 );
libvips/histograms_lut/im_project.c:	hout->Xsize = 1;
libvips/histograms_lut/im_project.c:	hout->BandFmt = project_type[in->BandFmt];
libvips/histograms_lut/im_project.c:	hout->Type = IM_TYPE_HISTOGRAM;
libvips/histograms_lut/im_project.c:	vout->Ysize = 1;
libvips/histograms_lut/im_project.c:	vout->BandFmt = project_type[in->BandFmt];
libvips/histograms_lut/im_project.c:	vout->Type = IM_TYPE_HISTOGRAM;
libvips/histograms_lut/im_project.c:		return( -1 );
libvips/histograms_lut/im_project.c:		return( -1 );
libvips/histograms_lut/im_project.c:		return( -1 );
libvips/histograms_lut/im_project.c:	if( im_writeline( 0, vout, (PEL *) mproject->columns ) )
libvips/histograms_lut/im_project.c:		return( -1 );
libvips/histograms_lut/im_project.c:	for( y = 0; y < in->Ysize; y++ )
libvips/histograms_lut/im_project.c:		if( im_writeline( y, hout, (PEL *) mproject->rows + 
libvips/histograms_lut/im_project.c:			return( -1 );
libvips/histograms_lut/im_hsp.c: *	- im_ioflag() call changed to im_iocheck()
libvips/histograms_lut/im_hsp.c: *	- revised
libvips/histograms_lut/im_hsp.c: * 	- gtkdoc
libvips/histograms_lut/im_hsp.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_hsp.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_hsp.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_hsp.c:		im_histgr( in, t[0], -1 ) || 
libvips/histograms_lut/im_hsp.c:		im_histgr( ref, t[1], -1 ) ||
libvips/histograms_lut/im_hsp.c:		return( -1 );
libvips/histograms_lut/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/histograms_lut/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/histograms_lut/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/histograms_lut/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/histograms_lut/Makefile.in:am__mv = mv -f
libvips/histograms_lut/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/histograms_lut/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/histograms_lut/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/histograms_lut/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/histograms_lut/Makefile.in:	$(LDFLAGS) -o $@
libvips/histograms_lut/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/histograms_lut/Makefile.in:all: all-am
libvips/histograms_lut/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/histograms_lut/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/histograms_lut/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/histograms_lut/Makefile'; \
libvips/histograms_lut/Makefile.in:	  $(AUTOMAKE) --gnu libvips/histograms_lut/Makefile
libvips/histograms_lut/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/histograms_lut/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/histograms_lut/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/histograms_lut/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/histograms_lut/Makefile.in:clean-noinstLTLIBRARIES:
libvips/histograms_lut/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/histograms_lut/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/histograms_lut/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/histograms_lut/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/histograms_lut/Makefile.in:mostlyclean-compile:
libvips/histograms_lut/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/histograms_lut/Makefile.in:distclean-compile:
libvips/histograms_lut/Makefile.in:	-rm -f *.tab.c
libvips/histograms_lut/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/histograms_lut/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/histograms_lut/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/histograms_lut/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/histograms_lut/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/histograms_lut/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/histograms_lut/Makefile.in:mostlyclean-libtool:
libvips/histograms_lut/Makefile.in:	-rm -f *.lo
libvips/histograms_lut/Makefile.in:clean-libtool:
libvips/histograms_lut/Makefile.in:	-rm -rf .libs _libs
libvips/histograms_lut/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/histograms_lut/Makefile.in:	mkid -fID $$unique
libvips/histograms_lut/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/histograms_lut/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/histograms_lut/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/histograms_lut/Makefile.in:	  if test $$# -gt 0; then \
libvips/histograms_lut/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/histograms_lut/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/histograms_lut/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/histograms_lut/Makefile.in:distclean-tags:
libvips/histograms_lut/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/histograms_lut/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/histograms_lut/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/histograms_lut/Makefile.in:			   sort -u` ;; \
libvips/histograms_lut/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/histograms_lut/Makefile.in:	  if test -d $$d/$$file; then \
libvips/histograms_lut/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/histograms_lut/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/histograms_lut/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/histograms_lut/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/histograms_lut/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/histograms_lut/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/histograms_lut/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/histograms_lut/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/histograms_lut/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/histograms_lut/Makefile.in:check-am: all-am
libvips/histograms_lut/Makefile.in:check: check-am
libvips/histograms_lut/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/histograms_lut/Makefile.in:install: install-am
libvips/histograms_lut/Makefile.in:install-exec: install-exec-am
libvips/histograms_lut/Makefile.in:install-data: install-data-am
libvips/histograms_lut/Makefile.in:uninstall: uninstall-am
libvips/histograms_lut/Makefile.in:install-am: all-am
libvips/histograms_lut/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/histograms_lut/Makefile.in:installcheck: installcheck-am
libvips/histograms_lut/Makefile.in:install-strip:
libvips/histograms_lut/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/histograms_lut/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/histograms_lut/Makefile.in:mostlyclean-generic:
libvips/histograms_lut/Makefile.in:clean-generic:
libvips/histograms_lut/Makefile.in:distclean-generic:
libvips/histograms_lut/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/histograms_lut/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/histograms_lut/Makefile.in:maintainer-clean-generic:
libvips/histograms_lut/Makefile.in:clean: clean-am
libvips/histograms_lut/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/histograms_lut/Makefile.in:	mostlyclean-am
libvips/histograms_lut/Makefile.in:distclean: distclean-am
libvips/histograms_lut/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/histograms_lut/Makefile.in:	-rm -f Makefile
libvips/histograms_lut/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/histograms_lut/Makefile.in:	distclean-tags
libvips/histograms_lut/Makefile.in:dvi: dvi-am
libvips/histograms_lut/Makefile.in:dvi-am:
libvips/histograms_lut/Makefile.in:html: html-am
libvips/histograms_lut/Makefile.in:html-am:
libvips/histograms_lut/Makefile.in:info: info-am
libvips/histograms_lut/Makefile.in:info-am:
libvips/histograms_lut/Makefile.in:install-data-am:
libvips/histograms_lut/Makefile.in:install-dvi: install-dvi-am
libvips/histograms_lut/Makefile.in:install-dvi-am:
libvips/histograms_lut/Makefile.in:install-exec-am:
libvips/histograms_lut/Makefile.in:install-html: install-html-am
libvips/histograms_lut/Makefile.in:install-html-am:
libvips/histograms_lut/Makefile.in:install-info: install-info-am
libvips/histograms_lut/Makefile.in:install-info-am:
libvips/histograms_lut/Makefile.in:install-man:
libvips/histograms_lut/Makefile.in:install-pdf: install-pdf-am
libvips/histograms_lut/Makefile.in:install-pdf-am:
libvips/histograms_lut/Makefile.in:install-ps: install-ps-am
libvips/histograms_lut/Makefile.in:install-ps-am:
libvips/histograms_lut/Makefile.in:installcheck-am:
libvips/histograms_lut/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/histograms_lut/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/histograms_lut/Makefile.in:	-rm -f Makefile
libvips/histograms_lut/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/histograms_lut/Makefile.in:mostlyclean: mostlyclean-am
libvips/histograms_lut/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/histograms_lut/Makefile.in:	mostlyclean-libtool
libvips/histograms_lut/Makefile.in:pdf: pdf-am
libvips/histograms_lut/Makefile.in:pdf-am:
libvips/histograms_lut/Makefile.in:ps: ps-am
libvips/histograms_lut/Makefile.in:ps-am:
libvips/histograms_lut/Makefile.in:uninstall-am:
libvips/histograms_lut/Makefile.in:.MAKE: install-am install-strip
libvips/histograms_lut/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/histograms_lut/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/histograms_lut/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/histograms_lut/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/histograms_lut/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/histograms_lut/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/histograms_lut/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/histograms_lut/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/histograms_lut/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/histograms_lut/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/histograms_lut/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/histograms_lut/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/histograms_lut/im_identity.c: *	- im_outcheck() call added
libvips/histograms_lut/im_identity.c: *	- ANSIfied
libvips/histograms_lut/im_identity.c: *	- im_identity_ushort() added
libvips/histograms_lut/im_identity.c: * 	- gtkdoc
libvips/histograms_lut/im_identity.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_identity.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_identity.c: * The created image consist a @bands-bands linear lut and is the basis 
libvips/histograms_lut/im_identity.c: * for building up look-up tables.
libvips/histograms_lut/im_identity.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_identity.c:		return( -1 );
libvips/histograms_lut/im_identity.c:		return( -1 ); 
libvips/histograms_lut/im_identity.c:		return( -1 );
libvips/histograms_lut/im_identity.c:		return( -1 ); 
libvips/histograms_lut/im_identity.c:		return( -1 );
libvips/histograms_lut/im_identity.c: * elements - @sz is the number of elements required.
libvips/histograms_lut/im_identity.c: * The created image consist a @bands-bands linear lut and is the basis 
libvips/histograms_lut/im_identity.c: * for building up look-up tables.
libvips/histograms_lut/im_identity.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_identity.c:		return( -1 );
libvips/histograms_lut/im_identity.c:		return( -1 ); 
libvips/histograms_lut/im_identity.c:		return( -1 ); 
libvips/histograms_lut/im_identity.c:		return( -1 );
libvips/histograms_lut/im_identity.c:		return( -1 ); 
libvips/histograms_lut/im_identity.c:		return( -1 );
libvips/histograms_lut/tone.c: *	- restrictions on Ps, Pm, Ph relaxed
libvips/histograms_lut/tone.c: *	- restrictions on S, M, H relaxed
libvips/histograms_lut/tone.c: *	- patched for im_extract_band() change
libvips/histograms_lut/tone.c: *	- generalised to im_tone_build_range() ... so you can use it for any
libvips/histograms_lut/tone.c: * 	- cleanups
libvips/histograms_lut/tone.c: * 	- gtkdoc
libvips/histograms_lut/tone.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/tone.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/tone.c:	double x1 = (x - ts->Lb) / (ts->Ls - ts->Lb);
libvips/histograms_lut/tone.c:	double x2 = (x - ts->Ls) / (ts->Lm - ts->Ls);
libvips/histograms_lut/tone.c:	if( x < ts->Lb )
libvips/histograms_lut/tone.c:	else if( x < ts->Ls )
libvips/histograms_lut/tone.c:		out = 3.0 * x1 * x1 - 2.0 * x1 * x1 * x1;
libvips/histograms_lut/tone.c:	else if( x < ts->Lm )
libvips/histograms_lut/tone.c:		out = 1.0 - 3.0 * x2 * x2 + 2.0 * x2 * x2 * x2;
libvips/histograms_lut/tone.c:/* Calculate mid-tone curve.
libvips/histograms_lut/tone.c:	double x1 = (x - ts->Ls) / (ts->Lm - ts->Ls);
libvips/histograms_lut/tone.c:	double x2 = (x - ts->Lm) / (ts->Lh - ts->Lm);
libvips/histograms_lut/tone.c:	if( x < ts->Ls )
libvips/histograms_lut/tone.c:	else if( x < ts->Lm )
libvips/histograms_lut/tone.c:		out = 3.0 * x1 * x1 - 2.0 * x1 * x1 * x1;
libvips/histograms_lut/tone.c:	else if( x < ts->Lh )
libvips/histograms_lut/tone.c:		out = 1.0 - 3.0 * x2 * x2 + 2.0 * x2 * x2 * x2;
libvips/histograms_lut/tone.c:	double x1 = (x - ts->Lm) / (ts->Lh - ts->Lm);
libvips/histograms_lut/tone.c:	double x2 = (x - ts->Lh) / (ts->Lw - ts->Lh);
libvips/histograms_lut/tone.c:	if( x < ts->Lm )
libvips/histograms_lut/tone.c:	else if( x < ts->Lh )
libvips/histograms_lut/tone.c:		out = 3.0 * x1 * x1 - 2.0 * x1 * x1 * x1;
libvips/histograms_lut/tone.c:	else if( x < ts->Lw )
libvips/histograms_lut/tone.c:		out = 1.0 - 3.0 * x2 * x2 + 2.0 * x2 * x2 * x2;
libvips/histograms_lut/tone.c:/* Generate a point on the tone curve. Everything is 0-100.
libvips/histograms_lut/tone.c:		ts->S * shad( ts, x ) + ts->M * mid( ts, x ) + 
libvips/histograms_lut/tone.c:		ts->H * high( ts, x );
libvips/histograms_lut/tone.c: * Lb: black-point [0-100]
libvips/histograms_lut/tone.c: * Lw: white-point [0-100]
libvips/histograms_lut/tone.c: * Pm: mid-tone point (eg. 0.5)
libvips/histograms_lut/tone.c: * S: shadow adjustment (+/- 30)
libvips/histograms_lut/tone.c: * M: mid-tone adjustment (+/- 30)
libvips/histograms_lut/tone.c: * H: highlight adjustment (+/- 30)
libvips/histograms_lut/tone.c: * The curve is an unsigned 16-bit image with (@in_max + 1) entries, 
libvips/histograms_lut/tone.c: * @Lb, @Lw are expressed as 0-100, as in LAB colour space. You 
libvips/histograms_lut/tone.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	if( S < -30 || S > 30 ) {
libvips/histograms_lut/tone.c:			"%s", _( "S not in range [-30,+30]" ) );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	if( M < -30 || M > 30 ) {
libvips/histograms_lut/tone.c:			"%s", _( "M not in range [-30,+30]" ) );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	if( H < -30 || H > 30 ) {
libvips/histograms_lut/tone.c:			"%s", _( "H not in range [-30,+30]" ) );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	ts->Lb = Lb; 
libvips/histograms_lut/tone.c:	ts->Lw = Lw;
libvips/histograms_lut/tone.c:	ts->Ps = Ps; 
libvips/histograms_lut/tone.c:	ts->Pm = Pm; 
libvips/histograms_lut/tone.c:	ts->Ph = Ph;
libvips/histograms_lut/tone.c:	ts->S = S; 
libvips/histograms_lut/tone.c:	ts->M = M; 
libvips/histograms_lut/tone.c:	ts->H = H;
libvips/histograms_lut/tone.c:	ts->Ls = Lb + Ps * (Lw - Lb);
libvips/histograms_lut/tone.c:	ts->Lm = Lb + Pm * (Lw - Lb);
libvips/histograms_lut/tone.c:	ts->Lh = Lb + Ph * (Lw - Lb);
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c: * Lb: black-point [0-100]
libvips/histograms_lut/tone.c: * Lw: white-point [0-100]
libvips/histograms_lut/tone.c: * Pm: mid-tone point (eg. 0.5)
libvips/histograms_lut/tone.c: * S: shadow adjustment (+/- 30)
libvips/histograms_lut/tone.c: * M: mid-tone adjustment (+/- 30)
libvips/histograms_lut/tone.c: * H: highlight adjustment (+/- 30)
libvips/histograms_lut/tone.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c: * @lut: lookup-table to test
libvips/histograms_lut/tone.c: * @out: set non-zero if @lut is monotonic 
libvips/histograms_lut/tone.c: * Test @lut for monotonicity. @out is set non-zero if @lut is monotonic.
libvips/histograms_lut/tone.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	if( lut->Xsize == 1 ) 
libvips/histograms_lut/tone.c:		mask = im_create_imaskv( "im_ismonotonic", 1, 2, -1, 1 );
libvips/histograms_lut/tone.c:		mask = im_create_imaskv( "im_ismonotonic", 2, 1, -1, 1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	mask->offset = 128;
libvips/histograms_lut/tone.c:	/* We want >=128 everywhere, ie. no -ve transitions.
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c: * @lut: look-up table
libvips/histograms_lut/tone.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/histograms_lut/tone.c:			return( -1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	if( t[0]->Bands > 1 ) {
libvips/histograms_lut/tone.c:		if( im_extract_bands( t[0], t[2], 1, t[0]->Bands - 1 ) )
libvips/histograms_lut/tone.c:			return( -1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	if( t[0]->Bands > 1 ) {
libvips/histograms_lut/tone.c:			return( -1 );
libvips/histograms_lut/tone.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/histograms_lut/tone.c:			return( -1 );
libvips/histograms_lut/tone.c: * Pm: mid-tone point (eg. 0.5)
libvips/histograms_lut/tone.c: * S: shadow adjustment (+/- 30)
libvips/histograms_lut/tone.c: * M: mid-tone adjustment (+/- 30)
libvips/histograms_lut/tone.c: * H: highlight adjustment (+/- 30)
libvips/histograms_lut/tone.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/histograms_lut/tone.c:			return( -1 );
libvips/histograms_lut/tone.c:	/* Should now be 3-band short.
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:		im_histgr( t[2], t[3], -1 ) )
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/tone.c:		return( -1 );
libvips/histograms_lut/im_histplot.c: *	- rules rationalised
libvips/histograms_lut/im_histplot.c: *	- im_lineprof removed
libvips/histograms_lut/im_histplot.c: *	- rewritten
libvips/histograms_lut/im_histplot.c: *	- rewritten again for partial, rules redone
libvips/histograms_lut/im_histplot.c: *	- oooops, broken for >1 band
libvips/histograms_lut/im_histplot.c: *	- oooops, graph float was wrong
libvips/histograms_lut/im_histplot.c: *	- oops, failed for all 0's histogram 
libvips/histograms_lut/im_histplot.c: * 	- redone plot function in C, also use incheck() to cache calcs
libvips/histograms_lut/im_histplot.c: * 	- much, much faster!
libvips/histograms_lut/im_histplot.c: *	- fix signed/unsigned warning
libvips/histograms_lut/im_histplot.c: * 	- gtkdoc
libvips/histograms_lut/im_histplot.c: * 	- small cleanups
libvips/histograms_lut/im_histplot.c: * 	- oop, would fail for signed int histograms
libvips/histograms_lut/im_histplot.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_histplot.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_histplot.c:		return( -1 );
libvips/histograms_lut/im_histplot.c:	if( vips_bandfmt_isuint( in->BandFmt ) ) {
libvips/histograms_lut/im_histplot.c:			return( -1 );
libvips/histograms_lut/im_histplot.c:	else if( vips_bandfmt_isint( in->BandFmt ) ) {
libvips/histograms_lut/im_histplot.c:			im_lintra( 1.0, in, -min, t1 ) )
libvips/histograms_lut/im_histplot.c:			return( -1 );
libvips/histograms_lut/im_histplot.c:		/* Float image: scale min--max to 0--any. Output square
libvips/histograms_lut/im_histplot.c:		if( in->Xsize == 1 )
libvips/histograms_lut/im_histplot.c:			any = in->Ysize;
libvips/histograms_lut/im_histplot.c:			any = in->Xsize;
libvips/histograms_lut/im_histplot.c:			return( -1 );
libvips/histograms_lut/im_histplot.c:		min = stats->coeff[0];
libvips/histograms_lut/im_histplot.c:		max = stats->coeff[1];
libvips/histograms_lut/im_histplot.c:			im_lintra( any / (max - min), in, 
libvips/histograms_lut/im_histplot.c:				-min * any / (max - min), out ) )
libvips/histograms_lut/im_histplot.c:			return( -1 );
libvips/histograms_lut/im_histplot.c:	Rect *r = &or->valid;
libvips/histograms_lut/im_histplot.c:	int le = r->left;
libvips/histograms_lut/im_histplot.c:	int to = r->top;
libvips/histograms_lut/im_histplot.c:	int nb = in->Bands;
libvips/histograms_lut/im_histplot.c:		switch( in->BandFmt ) {
libvips/histograms_lut/im_histplot.c:			q[z] = p1[z] < ((TYPE) (ht - y)) ? 0 : 255; \
libvips/histograms_lut/im_histplot.c:	Rect *r = &or->valid;
libvips/histograms_lut/im_histplot.c:	int le = r->left;
libvips/histograms_lut/im_histplot.c:	int to = r->top;
libvips/histograms_lut/im_histplot.c:	int nb = in->Bands;
libvips/histograms_lut/im_histplot.c:	int ht = or->im->Ysize;
libvips/histograms_lut/im_histplot.c:		switch( in->BandFmt ) {
libvips/histograms_lut/im_histplot.c:		return( -1 );
libvips/histograms_lut/im_histplot.c:		return( -1 );
libvips/histograms_lut/im_histplot.c:	if( in->BandFmt == IM_BANDFMT_UCHAR )
libvips/histograms_lut/im_histplot.c:	if( in->Xsize == 1 ) {
libvips/histograms_lut/im_histplot.c:		ysize = in->Ysize;
libvips/histograms_lut/im_histplot.c:		xsize = in->Xsize;
libvips/histograms_lut/im_histplot.c:	im_initdesc( out, xsize, ysize, in->Bands, 
libvips/histograms_lut/im_histplot.c:	/* Set hints - ANY is ok with us.
libvips/histograms_lut/im_histplot.c:		return( -1 );
libvips/histograms_lut/im_histplot.c:	if( in->Xsize == 1 ) {
libvips/histograms_lut/im_histplot.c:			return( -1 );
libvips/histograms_lut/im_histplot.c:			return( -1 );
libvips/histograms_lut/im_histplot.c: * <emphasis>other unsigned integer types</emphasis> output 0 - maxium 
libvips/histograms_lut/im_histplot.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_histplot.c:		return( -1 );
libvips/histograms_lut/im_histplot.c:		return( -1 );
libvips/histograms_lut/im_histeq.c: *	- tidied up and ANSIfied
libvips/histograms_lut/im_histeq.c: *	- smartened up again
libvips/histograms_lut/im_histeq.c: *	- now works for hists >256 elements
libvips/histograms_lut/im_histeq.c: *	- broken into cum and norm ... helps im_histspec()
libvips/histograms_lut/im_histeq.c: *	- better behaviour for >8 bit hists
libvips/histograms_lut/im_histeq.c: * 	- was broken for vertical histograms, gah
libvips/histograms_lut/im_histeq.c: * 	- neater im_histnorm()
libvips/histograms_lut/im_histeq.c: * 	- eek, off by 1 for more than 1 band hists
libvips/histograms_lut/im_histeq.c: * 	- histcum works for signed hists now as well
libvips/histograms_lut/im_histeq.c: * 	- gtkdoc
libvips/histograms_lut/im_histeq.c: * 	- small cleanups
libvips/histograms_lut/im_histeq.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_histeq.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_histeq.c:		ITYPE *p = (ITYPE *) in->data; \
libvips/histograms_lut/im_histeq.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_histeq.c:	const int px = in->Xsize * in->Ysize;
libvips/histograms_lut/im_histeq.c:	const int nb = vips_bandfmt_iscomplex( in->BandFmt ) ? 
libvips/histograms_lut/im_histeq.c:		in->Bands * 2 : in->Bands;
libvips/histograms_lut/im_histeq.c:		return( -1 );
libvips/histograms_lut/im_histeq.c:		return( -1 );
libvips/histograms_lut/im_histeq.c:	out->Xsize = px;
libvips/histograms_lut/im_histeq.c:	out->Ysize = 1;
libvips/histograms_lut/im_histeq.c:	if( vips_bandfmt_isuint( in->BandFmt ) )
libvips/histograms_lut/im_histeq.c:		out->BandFmt = IM_BANDFMT_UINT;
libvips/histograms_lut/im_histeq.c:	else if( vips_bandfmt_isint( in->BandFmt ) )
libvips/histograms_lut/im_histeq.c:		out->BandFmt = IM_BANDFMT_INT;
libvips/histograms_lut/im_histeq.c:		return( -1 );
libvips/histograms_lut/im_histeq.c:                return( -1 );
libvips/histograms_lut/im_histeq.c:        switch( in->BandFmt ) {
libvips/histograms_lut/im_histeq.c:		return( -1 );
libvips/histograms_lut/im_histeq.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_histeq.c:	const int px = in->Xsize * in->Ysize;
libvips/histograms_lut/im_histeq.c:	if( !(a = IM_ARRAY( out, in->Bands, double )) ||
libvips/histograms_lut/im_histeq.c:		!(b = IM_ARRAY( out, in->Bands, double )) ||
libvips/histograms_lut/im_histeq.c:		return( -1 );
libvips/histograms_lut/im_histeq.c:	for( i = 0; i < in->Bands; i++ ) {
libvips/histograms_lut/im_histeq.c:		a[i] = px / stats->coeff[6 + 1 + 6*i];
libvips/histograms_lut/im_histeq.c:		im_lintra_vec( in->Bands, a, in, b, t1 ) )
libvips/histograms_lut/im_histeq.c:		return( -1 );
libvips/histograms_lut/im_histeq.c:		return( -1 );
libvips/histograms_lut/im_histeq.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_histeq.c:		return( -1 );
libvips/histograms_lut/im_gammacorrect.c:/* Gamma-correct image with factor gammafactor.
libvips/histograms_lut/im_gammacorrect.c: *	- redone as library function
libvips/histograms_lut/im_gammacorrect.c: * 	- gtkdoc
libvips/histograms_lut/im_gammacorrect.c: * 	- 16 bit as well
libvips/histograms_lut/im_gammacorrect.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_gammacorrect.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_gammacorrect.c: * Gamma-correct an 8- or 16-bit unsigned image with a lookup table. The
libvips/histograms_lut/im_gammacorrect.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_gammacorrect.c:		(in->BandFmt == IM_BANDFMT_UCHAR ?
libvips/histograms_lut/im_gammacorrect.c:		im_clip2fmt( t[2], t[3], in->BandFmt ) ||
libvips/histograms_lut/im_gammacorrect.c:		return( -1 );
libvips/histograms_lut/im_histindexed.c: * 	- from im_histgr.c
libvips/histograms_lut/im_histindexed.c: * 	- gtkdoc
libvips/histograms_lut/im_histindexed.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_histindexed.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_histindexed.c:	IM_FREE( hist->bins );
libvips/histograms_lut/im_histindexed.c:	IM_FREEF( im_region_free, hist->vreg );
libvips/histograms_lut/im_histindexed.c:	hist->index = index;
libvips/histograms_lut/im_histindexed.c:	hist->value = value;
libvips/histograms_lut/im_histindexed.c:	hist->out = out;
libvips/histograms_lut/im_histindexed.c:	hist->vreg = NULL;
libvips/histograms_lut/im_histindexed.c:	hist->bands = bands;
libvips/histograms_lut/im_histindexed.c:	hist->size = size;
libvips/histograms_lut/im_histindexed.c:	hist->mx = 0;
libvips/histograms_lut/im_histindexed.c:	hist->bins = NULL;
libvips/histograms_lut/im_histindexed.c:	if( !(hist->bins = IM_ARRAY( NULL, bands * size, double )) ||
libvips/histograms_lut/im_histindexed.c:		!(hist->vreg = im_region_create( value )) ) {
libvips/histograms_lut/im_histindexed.c:	memset( hist->bins, 0, bands * size * sizeof( double ) );
libvips/histograms_lut/im_histindexed.c:/* Build a sub-hist, based on the main hist.
libvips/histograms_lut/im_histindexed.c:		hist_build( mhist->index, mhist->value, mhist->out, 
libvips/histograms_lut/im_histindexed.c:			mhist->bands, mhist->size ) );
libvips/histograms_lut/im_histindexed.c:/* Join a sub-hist onto the main hist, then free it.
libvips/histograms_lut/im_histindexed.c:	g_assert( shist->bands == mhist->bands && shist->size == mhist->size );
libvips/histograms_lut/im_histindexed.c:	/* Add on sub-data.
libvips/histograms_lut/im_histindexed.c:	mhist->mx = IM_MAX( mhist->mx, shist->mx );
libvips/histograms_lut/im_histindexed.c:	for( i = 0; i < mhist->bands * mhist->size; i++ )
libvips/histograms_lut/im_histindexed.c:		mhist->bins[i] += shist->bins[i];
libvips/histograms_lut/im_histindexed.c:		double *bin = hist->bins + i[x] * bands; \
libvips/histograms_lut/im_histindexed.c:	Rect *r = &reg->valid;
libvips/histograms_lut/im_histindexed.c:	IMAGE *value = hist->value;
libvips/histograms_lut/im_histindexed.c:	int bands = value->Bands;
libvips/histograms_lut/im_histindexed.c:	int width = r->width;
libvips/histograms_lut/im_histindexed.c:	if( im_prepare( hist->vreg, r ) )
libvips/histograms_lut/im_histindexed.c:		return( -1 );
libvips/histograms_lut/im_histindexed.c:	for( y = 0; y < r->height; y++ ) {
libvips/histograms_lut/im_histindexed.c:		PEL *i = (PEL *) IM_REGION_ADDR( reg, r->left, r->top + y );
libvips/histograms_lut/im_histindexed.c:		PEL *v = (PEL *) IM_REGION_ADDR( hist->vreg, 
libvips/histograms_lut/im_histindexed.c:			r->left, r->top + y );
libvips/histograms_lut/im_histindexed.c:		switch( value->BandFmt ) {
libvips/histograms_lut/im_histindexed.c:	hist->mx = 255;
libvips/histograms_lut/im_histindexed.c:		double *bin = hist->bins + ix * bands; \
libvips/histograms_lut/im_histindexed.c:	Rect *r = &reg->valid;
libvips/histograms_lut/im_histindexed.c:	IMAGE *value = hist->value;
libvips/histograms_lut/im_histindexed.c:	int bands = value->Bands;
libvips/histograms_lut/im_histindexed.c:	int width = r->width;
libvips/histograms_lut/im_histindexed.c:	if( im_prepare( hist->vreg, r ) )
libvips/histograms_lut/im_histindexed.c:		return( -1 );
libvips/histograms_lut/im_histindexed.c:	mx = hist->mx;
libvips/histograms_lut/im_histindexed.c:	for( y = 0; y < r->height; y++ ) {
libvips/histograms_lut/im_histindexed.c:				r->left, r->top + y );
libvips/histograms_lut/im_histindexed.c:		PEL *v = (PEL *) IM_REGION_ADDR( hist->vreg, 
libvips/histograms_lut/im_histindexed.c:			r->left, r->top + y );
libvips/histograms_lut/im_histindexed.c:		switch( value->BandFmt ) {
libvips/histograms_lut/im_histindexed.c:	hist->mx = mx;
libvips/histograms_lut/im_histindexed.c:	if( im_cp_descv( out, hist->index, hist->value, NULL ) ) 
libvips/histograms_lut/im_histindexed.c:		return( -1 );
libvips/histograms_lut/im_histindexed.c:		hist->mx + 1, 1, hist->value->Bands, 
libvips/histograms_lut/im_histindexed.c:		return( -1 );
libvips/histograms_lut/im_histindexed.c:	if( im_writeline( 0, out, (PEL *) hist->bins ) )
libvips/histograms_lut/im_histindexed.c:		return( -1 );
libvips/histograms_lut/im_histindexed.c: * non-complex. @out always has the same size and format as @value.
libvips/histograms_lut/im_histindexed.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_histindexed.c:		return( -1 );
libvips/histograms_lut/im_histindexed.c:	if( index->BandFmt == IM_BANDFMT_UCHAR ) {
libvips/histograms_lut/im_histindexed.c:	if( !(mhist = hist_build( index, value, out, value->Bands, size )) )
libvips/histograms_lut/im_histindexed.c:		return( -1 );
libvips/histograms_lut/im_histindexed.c:		return( -1 );
libvips/histograms_lut/hist_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/hist_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/hist_dispatch.c: * @see_also: <link linkend="libvips-image">image</link>
libvips/histograms_lut/hist_dispatch.c: * Histograms and look-up tables are 1xn or nx1 images, where n is less than
libvips/histograms_lut/hist_dispatch.c: * 256 or less than 65536, corresponding to 8- and 16-bit unsigned int images. 
libvips/histograms_lut/hist_dispatch.c: * user-interfaces such as nip2 as plots rather than images.
libvips/histograms_lut/hist_dispatch.c: * pre-press work for adjusting the appearance of images. They are designed
libvips/histograms_lut/hist_dispatch.c:	"gamma-correct image",		/* Description */
libvips/histograms_lut/hist_dispatch.c:	"histogram-equalise image",	/* Description */
libvips/histograms_lut/hist_dispatch.c:	return( im_buildlut( mi->mask, argv[1] ) );
libvips/histograms_lut/hist_dispatch.c:	return( im_invertlut( mi->mask, argv[1], lut_size ) );
libvips/histograms_lut/im_histnD.c:/* n-dimensional histogram
libvips/histograms_lut/im_histnD.c: *	- oops, was not checking the bandfmt coming in
libvips/histograms_lut/im_histnD.c: * 	- gtkdoc
libvips/histograms_lut/im_histnD.c: * 	- small celanups
libvips/histograms_lut/im_histnD.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/histograms_lut/im_histnD.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/histograms_lut/im_histnD.c:	int ilimit = in->Bands > 2 ? bins : 1;
libvips/histograms_lut/im_histnD.c:	int jlimit = in->Bands > 1 ? bins : 1;
libvips/histograms_lut/im_histnD.c:	hist->in = in;
libvips/histograms_lut/im_histnD.c:	hist->out = out;
libvips/histograms_lut/im_histnD.c:	hist->bins = bins;
libvips/histograms_lut/im_histnD.c:	if( !(hist->data = IM_ARRAY( out, bins, unsigned int ** )) )
libvips/histograms_lut/im_histnD.c:	memset( hist->data, 0, bins * sizeof( unsigned int ** ) );
libvips/histograms_lut/im_histnD.c:		if( !(hist->data[i] = IM_ARRAY( out, bins, unsigned int * )) )
libvips/histograms_lut/im_histnD.c:		memset( hist->data[i], 0, bins * sizeof( unsigned int * ) );
libvips/histograms_lut/im_histnD.c:			if( !(hist->data[i][j] = IM_ARRAY( out, 
libvips/histograms_lut/im_histnD.c:			memset( hist->data[i][j], 
libvips/histograms_lut/im_histnD.c:/* Build a sub-hist, based on the main hist.
libvips/histograms_lut/im_histnD.c:		build_hist( mhist->in, mhist->out, mhist->bins ) );
libvips/histograms_lut/im_histnD.c:/* Join a sub-hist onto the main hist.
libvips/histograms_lut/im_histnD.c:	if( shist->in != mhist->in || shist->out != mhist->out )
libvips/histograms_lut/im_histnD.c:	/* Add on sub-data.
libvips/histograms_lut/im_histnD.c:	for( i = 0; i < mhist->bins; i++ )
libvips/histograms_lut/im_histnD.c:		for( j = 0; j < mhist->bins; j++ )
libvips/histograms_lut/im_histnD.c:			for( k = 0; k < mhist->bins; k++ )
libvips/histograms_lut/im_histnD.c:				if( mhist->data[i] && mhist->data[i][j] ) {
libvips/histograms_lut/im_histnD.c:					mhist->data[i][j][k] += 
libvips/histograms_lut/im_histnD.c:						shist->data[i][j][k];
libvips/histograms_lut/im_histnD.c:					/* Zap sub-hist to make sure we 
libvips/histograms_lut/im_histnD.c:					shist->data[i][j][k] = 0;
libvips/histograms_lut/im_histnD.c:	for( i = 0, x = 0; x < r->width; x++ ) { \
libvips/histograms_lut/im_histnD.c:		hist->data[index[2]][index[1]][index[0]]++; \
libvips/histograms_lut/im_histnD.c:	Rect *r = &reg->valid;
libvips/histograms_lut/im_histnD.c:	IMAGE *im = reg->im;
libvips/histograms_lut/im_histnD.c:	int le = r->left;
libvips/histograms_lut/im_histnD.c:	int to = r->top;
libvips/histograms_lut/im_histnD.c:	int nb = im->Bands;
libvips/histograms_lut/im_histnD.c:	int max_val = im->BandFmt == IM_BANDFMT_UCHAR ? 256 : 65536;
libvips/histograms_lut/im_histnD.c:	int scale = max_val / hist->bins;
libvips/histograms_lut/im_histnD.c:		switch( im->BandFmt ) {
libvips/histograms_lut/im_histnD.c: * Returns: 0 on success, -1 on error
libvips/histograms_lut/im_histnD.c:		return( -1 );
libvips/histograms_lut/im_histnD.c:	max_val = in->BandFmt == IM_BANDFMT_UCHAR ? 256 : 65536;
libvips/histograms_lut/im_histnD.c:		return( -1 );
libvips/histograms_lut/im_histnD.c:		return( -1 );
libvips/histograms_lut/im_histnD.c:		return( -1 );
libvips/histograms_lut/im_histnD.c:		return( -1 );
libvips/histograms_lut/im_histnD.c:		bins, in->Bands > 1 ? bins : 1, in->Bands > 2 ? bins : 1,
libvips/histograms_lut/im_histnD.c:		return( -1 );
libvips/histograms_lut/im_histnD.c:		return( -1 );
libvips/histograms_lut/im_histnD.c:	for( y = 0; y < out->Ysize; y++ ) {
libvips/histograms_lut/im_histnD.c:		for( i = 0, x = 0; x < out->Xsize; x++ ) 
libvips/histograms_lut/im_histnD.c:			for( z = 0; z < out->Bands; z++, i++ )
libvips/histograms_lut/im_histnD.c:				obuffer[i] = mhist->data[z][y][x];
libvips/histograms_lut/im_histnD.c:			return( -1 );
libvips/resample/lbb.cpp: * N. Robidoux, C. Racette and J. Cupitt, 23-28/03/2010
libvips/resample/lbb.cpp: * N. Robidoux, 16-19/05/2010
libvips/resample/lbb.cpp:    02111-1307 USA
libvips/resample/lbb.cpp:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/lbb.cpp: * (20-61098).
libvips/resample/lbb.cpp: * the following three pre-processor code lines:
libvips/resample/lbb.cpp: * of Catmull-Rom. Images resampled with LBB have much smaller halos
libvips/resample/lbb.cpp: * Catmull-Rom).
libvips/resample/lbb.cpp: * final clamping is needed to stay "in range" (e.g., 0-255 for
libvips/resample/lbb.cpp: * standard 8-bit images).
libvips/resample/lbb.cpp: * --LBB is a Hermite bicubic method: The bicubic surface is defined,
libvips/resample/lbb.cpp: *   point values, four x-derivatives, four y-derivatives, and four
libvips/resample/lbb.cpp: *   cross-derivatives.
libvips/resample/lbb.cpp: * --The stencil for values in a square patch is the usual 4x4.
libvips/resample/lbb.cpp: * --LBB is interpolatory.
libvips/resample/lbb.cpp: * --It is C^1 with continuous cross derivatives.
libvips/resample/lbb.cpp: * --When the limiters are inactive, LBB gives the same result as
libvips/resample/lbb.cpp: *   Catmull-Rom.
libvips/resample/lbb.cpp: * --When used on binary images, LBB gives results similar to bicubic
libvips/resample/lbb.cpp: *   Hermite with all first derivatives---but not necessarily the
libvips/resample/lbb.cpp: *   checked)--at input pixel locations set to zero.
libvips/resample/lbb.cpp: * --The LBB reconstruction is locally bounded: Over each square
libvips/resample/lbb.cpp: * --Consequently, the LBB reconstruction is globally bounded between
libvips/resample/lbb.cpp: *   585-594, 1995. DOI: 10.1016/0097-8493(95)00036-C.
libvips/resample/lbb.cpp:#define LBB_ABS(x)  ( ((x)>=0.) ? (x) : -(x) )
libvips/resample/lbb.cpp:#define LBB_SIGN(x) ( ((x)>=0.) ? 1.0 : -1.0 )
libvips/resample/lbb.cpp:   * bicubic (e.g., Catmull-Rom):
libvips/resample/lbb.cpp:   *  (ix-1,iy-1)  (ix,iy-1)    (ix+1,iy-1)  (ix+2,iy-1)
libvips/resample/lbb.cpp:   *  (ix-1,iy)    (ix,iy)      (ix+1,iy)    (ix+2,iy)
libvips/resample/lbb.cpp:   *  (ix-1,iy+1)  (ix,iy+1)    (ix+1,iy+1)  (ix+2,iy+1)
libvips/resample/lbb.cpp:   *  (ix-1,iy+2)  (ix,iy+2)    (ix+1,iy+2)  (ix+2,iy+2)
libvips/resample/lbb.cpp:   * where ix is the (pseudo-)floor of the requested left-to-right
libvips/resample/lbb.cpp:   * location ("X"), and iy is the floor of the requested up-to-down
libvips/resample/lbb.cpp:   * sub-crosses of the 4x4 input stencil, performed with only 22
libvips/resample/lbb.cpp:   * sub-blocks of the 4x4 input stencil, performed with only 28
libvips/resample/lbb.cpp:   * --8 conditional moves,
libvips/resample/lbb.cpp:   * --8 signs (in which the sign of zero is unimportant),
libvips/resample/lbb.cpp:   * --12 minima of two values,
libvips/resample/lbb.cpp:   * --8 maxima of two values,
libvips/resample/lbb.cpp:   * --8 absolute values,
libvips/resample/lbb.cpp:   * arithmetic operations (54 *, 21 +, 42 -).
libvips/resample/lbb.cpp:  const double u00 = dos_two - min00;
libvips/resample/lbb.cpp:  const double v00 = max00 - dos_two;
libvips/resample/lbb.cpp:  const double u10 = dos_thr - min10;
libvips/resample/lbb.cpp:  const double v10 = max10 - dos_thr;
libvips/resample/lbb.cpp:  const double u01 = tre_two - min01;
libvips/resample/lbb.cpp:  const double v01 = max01 - tre_two;
libvips/resample/lbb.cpp:  const double u11 = tre_thr - min11;
libvips/resample/lbb.cpp:  const double v11 = max11 - tre_thr;
libvips/resample/lbb.cpp:  const double dble_dzdx00i = dos_thr - dos_one;
libvips/resample/lbb.cpp:  const double dble_dzdy11i = qua_thr - dos_thr;
libvips/resample/lbb.cpp:  const double dble_dzdx10i = dos_fou - dos_two;
libvips/resample/lbb.cpp:  const double dble_dzdy01i = qua_two - dos_two;
libvips/resample/lbb.cpp:  const double dble_dzdx01i = tre_thr - tre_one;
libvips/resample/lbb.cpp:  const double dble_dzdy10i = tre_thr - uno_thr;
libvips/resample/lbb.cpp:  const double dble_dzdx11i = tre_fou - tre_two;
libvips/resample/lbb.cpp:  const double dble_dzdy00i = tre_two - uno_two;
libvips/resample/lbb.cpp:   * Initial values of the cross-derivatives. Factors of 1/4 are left
libvips/resample/lbb.cpp:  const double quad_d2zdxdy00i = uno_one - uno_thr + dble_dzdx01i;
libvips/resample/lbb.cpp:  const double quad_d2zdxdy10i = uno_two - uno_fou + dble_dzdx11i;
libvips/resample/lbb.cpp:  const double quad_d2zdxdy01i = qua_thr - qua_one - dble_dzdx00i;
libvips/resample/lbb.cpp:  const double quad_d2zdxdy11i = qua_fou - qua_two - dble_dzdx10i;
libvips/resample/lbb.cpp:  const double twelve_dif00 = 6.0 * ( dble_dzdx00 - dble_dzdy00 );
libvips/resample/lbb.cpp:  const double twelve_dif10 = 6.0 * ( dble_dzdx10 - dble_dzdy10 );
libvips/resample/lbb.cpp:  const double twelve_dif01 = 6.0 * ( dble_dzdx01 - dble_dzdy01 );
libvips/resample/lbb.cpp:  const double twelve_dif11 = 6.0 * ( dble_dzdx11 - dble_dzdy11 );
libvips/resample/lbb.cpp:   * First cross-derivative limiter:
libvips/resample/lbb.cpp:  const double first_limit00 = twelve_abs_sum00 - u00_times_36;
libvips/resample/lbb.cpp:  const double first_limit10 = twelve_abs_sum10 - u10_times_36;
libvips/resample/lbb.cpp:  const double first_limit01 = twelve_abs_sum01 - u01_times_36;
libvips/resample/lbb.cpp:  const double first_limit11 = twelve_abs_sum11 - u11_times_36;
libvips/resample/lbb.cpp:   * Second cross-derivative limiter:
libvips/resample/lbb.cpp:  const double second_limit00 = v00_times_36 - twelve_abs_sum00;
libvips/resample/lbb.cpp:  const double second_limit10 = v10_times_36 - twelve_abs_sum10;
libvips/resample/lbb.cpp:  const double second_limit01 = v01_times_36 - twelve_abs_sum01;
libvips/resample/lbb.cpp:  const double second_limit11 = v11_times_36 - twelve_abs_sum11;
libvips/resample/lbb.cpp:   * Third cross-derivative limiter:
libvips/resample/lbb.cpp:  const double third_limit00 = twelve_abs_dif00 - v00_times_36;
libvips/resample/lbb.cpp:  const double third_limit10 = twelve_abs_dif10 - v10_times_36;
libvips/resample/lbb.cpp:  const double third_limit01 = twelve_abs_dif01 - v01_times_36;
libvips/resample/lbb.cpp:  const double third_limit11 = twelve_abs_dif11 - v11_times_36;
libvips/resample/lbb.cpp:   * Fourth cross-derivative limiter:
libvips/resample/lbb.cpp:  const double fourth_limit00 = u00_times_36 - twelve_abs_dif00;
libvips/resample/lbb.cpp:  const double fourth_limit10 = u10_times_36 - twelve_abs_dif10;
libvips/resample/lbb.cpp:  const double fourth_limit01 = u01_times_36 - twelve_abs_dif01;
libvips/resample/lbb.cpp:  const double fourth_limit11 = u11_times_36 - twelve_abs_dif11;
libvips/resample/lbb.cpp:    const int one_shift     =  -bands; \
libvips/resample/lbb.cpp:    const int uno_two_shift =  -lskip; \
libvips/resample/lbb.cpp:    const double xm1over2   = xp1over2 - 1.0; \
libvips/resample/lbb.cpp:    const double onemx      = 1.5 - xp1over2; \
libvips/resample/lbb.cpp:    const double ym1over2   = yp1over2 - 1.0; \
libvips/resample/lbb.cpp:    const double onemy      = 1.5 - yp1over2; \
libvips/resample/lbb.cpp:      } while (--band); \
libvips/resample/lbb.cpp:   * and absolute_y will never be less than 0, plain cast---that is,
libvips/resample/lbb.cpp:   * const int ix = absolute_x---should be used instead.  Actually,
libvips/resample/lbb.cpp:   * any function which agrees with floor for non-integer values, and
libvips/resample/lbb.cpp:   * Then, x is the x-coordinate of the sampling point relative to the
libvips/resample/lbb.cpp:  const double relative_x = absolute_x - ix;
libvips/resample/lbb.cpp:  const double relative_y = absolute_y - iy;
libvips/resample/lbb.cpp:  const int actual_bands = in->im->Bands;
libvips/resample/lbb.cpp:  const int lskip = IM_REGION_LSKIP( in ) / IM_IMAGE_SIZEOF_ELEMENT( in->im );
libvips/resample/lbb.cpp:    vips_bandfmt_iscomplex( in->im->BandFmt ) ? 2 * actual_bands : actual_bands;
libvips/resample/lbb.cpp:  switch( in->im->BandFmt ) {
libvips/resample/lbb.cpp:  object_class->nickname    = "lbb";
libvips/resample/lbb.cpp:  object_class->description = _( "Reduced halo bicubic" );
libvips/resample/lbb.cpp:  interpolate_class->interpolate   = vips_interpolate_lbb_interpolate;
libvips/resample/lbb.cpp:  interpolate_class->window_size   = 4;
libvips/resample/lbb.cpp:  interpolate_class->window_offset = 2;
libvips/resample/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/resample/nohalo.cpp: * N. Robidoux and J. Cupitt, 4-17/3/09
libvips/resample/nohalo.cpp: * N. Robidoux, 1/4-29/5/2009
libvips/resample/nohalo.cpp: * C. Racette, 11-18/5/2010
libvips/resample/nohalo.cpp:    02111-1307 USA
libvips/resample/nohalo.cpp:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/nohalo.cpp: * 2009-2010 (c) Nicolas Robidoux, Chantal Racette, John Cupitt and
libvips/resample/nohalo.cpp: * Discovery Grant awarded to him (298424--2004).
libvips/resample/nohalo.cpp: * (20-61098).
libvips/resample/nohalo.cpp: * following three pre-processor code lines:
libvips/resample/nohalo.cpp: * oblique lines without undesirable side-effects. In particular,
libvips/resample/nohalo.cpp: * it. (Nohalo is not smoothing like, say, B-Spline
libvips/resample/nohalo.cpp: * pseudo-interpolation.)
libvips/resample/nohalo.cpp: * Nohalo subdivision is co-monotone (this is why it's called "no-halo")
libvips/resample/nohalo.cpp: * nearest neighbour are also co-monotone.) LBB is also locally
libvips/resample/nohalo.cpp: * Note: If the abyss policy is an extrapolating one---for example,
libvips/resample/nohalo.cpp: * linear or bilinear extrapolation---clamping is still unnecessary
libvips/resample/nohalo.cpp: * policy---linear extrapolation, say---or building the boundary
libvips/resample/nohalo.cpp: * the value of f(x,y) at the asked-for sampling location. The
libvips/resample/nohalo.cpp: * extension of the input image---this corresponds to the nearest
libvips/resample/nohalo.cpp: * neighbour abyss policy---does NOT make this resampler exact on
libvips/resample/nohalo.cpp: * If a region is bi-chromatic, the nonlinear component of Nohalo
libvips/resample/nohalo.cpp: * co-convex antialiasing image resampler by Nicolas Robidoux, Minglun
libvips/resample/nohalo.cpp: * Software Engineering, p. 185--195, ACM, New York, NY, USA, 2009.
libvips/resample/nohalo.cpp: * pixel values which vary bilinearly, which may arise from dirt-cheap
libvips/resample/nohalo.cpp: * "if-then-else" because gcc does not always rewrite the latter using
libvips/resample/nohalo.cpp:#define NOHALO_ABS(x)  ( ((x)>=0.) ? (x) : -(x) )
libvips/resample/nohalo.cpp:#define NOHALO_SIGN(x) ( ((x)>=0.) ? 1.  : -1.  )
libvips/resample/nohalo.cpp:   * stencil about tre_thr---assumed closer to the sampling location
libvips/resample/nohalo.cpp:   * than other pixels (ties are OK)---in such a way that after
libvips/resample/nohalo.cpp:   *               (ix-1,iy-2)  (ix,iy-2)    (ix+1,iy-2)
libvips/resample/nohalo.cpp:   *  (ix-2,iy-1)  (ix-1,iy-1)  (ix,iy-1)    (ix+1,iy-1)  (ix+2,iy-1)
libvips/resample/nohalo.cpp:   *  (ix-2,iy)    (ix-1,iy)    (ix,iy)      (ix+1,iy)    (ix+2,iy)
libvips/resample/nohalo.cpp:   *  (ix-2,iy+1)  (ix-1,iy+1)  (ix,iy+1)    (ix+1,iy+1)  (ix+2,iy+1)
libvips/resample/nohalo.cpp:   *               (ix-1,iy+2)  (ix,iy+2)    (ix+1,iy+2)
libvips/resample/nohalo.cpp:   *  (ix-1/2,iy-1/2)  (ix,iy-1/2)  (ix+1/2,iy-1/2)  (ix+1,iy-1/2)
libvips/resample/nohalo.cpp:   *  (ix-1/2,iy)      (ix,iy)      (ix+1/2,iy)      (ix+1,iy)
libvips/resample/nohalo.cpp:   *  (ix-1/2,iy+1/2)  (ix,iy+1/2)  (ix+1/2,iy+1/2)  (ix+1,iy+1/2)
libvips/resample/nohalo.cpp:   *  (ix-1/2,iy+1)    (ix,iy+1)    (ix+1/2,iy+1)    (ix+1,iy+1)
libvips/resample/nohalo.cpp:  const double d_unodos_two = dos_two - uno_two;
libvips/resample/nohalo.cpp:  const double d_dostre_two = tre_two - dos_two;
libvips/resample/nohalo.cpp:  const double d_trequa_two = qua_two - tre_two;
libvips/resample/nohalo.cpp:  const double d_quacin_two = cin_two - qua_two;
libvips/resample/nohalo.cpp:  const double d_unodos_thr = dos_thr - uno_thr;
libvips/resample/nohalo.cpp:  const double d_dostre_thr = tre_thr - dos_thr;
libvips/resample/nohalo.cpp:  const double d_trequa_thr = qua_thr - tre_thr;
libvips/resample/nohalo.cpp:  const double d_quacin_thr = cin_thr - qua_thr;
libvips/resample/nohalo.cpp:  const double d_unodos_fou = dos_fou - uno_fou;
libvips/resample/nohalo.cpp:  const double d_dostre_fou = tre_fou - dos_fou;
libvips/resample/nohalo.cpp:  const double d_trequa_fou = qua_fou - tre_fou;
libvips/resample/nohalo.cpp:  const double d_quacin_fou = cin_fou - qua_fou;
libvips/resample/nohalo.cpp:  const double d_dos_onetwo = dos_two - dos_one;
libvips/resample/nohalo.cpp:  const double d_dos_twothr = dos_thr - dos_two;
libvips/resample/nohalo.cpp:  const double d_dos_thrfou = dos_fou - dos_thr;
libvips/resample/nohalo.cpp:  const double d_dos_foufiv = dos_fiv - dos_fou;
libvips/resample/nohalo.cpp:  const double d_tre_onetwo = tre_two - tre_one;
libvips/resample/nohalo.cpp:  const double d_tre_twothr = tre_thr - tre_two;
libvips/resample/nohalo.cpp:  const double d_tre_thrfou = tre_fou - tre_thr;
libvips/resample/nohalo.cpp:  const double d_tre_foufiv = tre_fiv - tre_fou;
libvips/resample/nohalo.cpp:  const double d_qua_onetwo = qua_two - qua_one;
libvips/resample/nohalo.cpp:  const double d_qua_twothr = qua_thr - qua_two;
libvips/resample/nohalo.cpp:  const double d_qua_thrfou = qua_fou - qua_thr;
libvips/resample/nohalo.cpp:  const double d_qua_foufiv = qua_fiv - qua_fou;
libvips/resample/nohalo.cpp:    .25 * ( dos_thr_y - tre_thr_y );
libvips/resample/nohalo.cpp:    .25 * ( tre_thr_y - qua_thr_y );
libvips/resample/nohalo.cpp:    .25 * ( tre_fou_y - qua_fou_y );
libvips/resample/nohalo.cpp:     .25 * (dos_fou_y - tre_fou_y );
libvips/resample/nohalo.cpp:    .25 * ( tre_two_x - tre_thr_x );
libvips/resample/nohalo.cpp:    tre_thr_x - tre_fou_x;
libvips/resample/nohalo.cpp:    qua_thr_x - qua_fou_x;
libvips/resample/nohalo.cpp:    .25 * ( qua_two_x - qua_thr_x );
libvips/resample/nohalo.cpp:    .25 * ( dos_fou - tre_thr )
libvips/resample/nohalo.cpp:    .125 * ( dos_fou_y - tre_fou_y + dos_thr_x - dos_fou_x )
libvips/resample/nohalo.cpp:    .25 * ( qua_two - tre_thr )
libvips/resample/nohalo.cpp:    .125 * ( qua_two_x - qua_thr_x + tre_two_y - qua_two_y )
libvips/resample/nohalo.cpp:    .125 * ( dos_two_x - dos_thr_x + tre_two_x - tre_thr_x
libvips/resample/nohalo.cpp:             dos_two_y + dos_thr_y - tre_two_y - tre_thr_y );
libvips/resample/nohalo.cpp: * of Catmull-Rom. Images resampled with LBB have much smaller halos
libvips/resample/nohalo.cpp: * to Catmull-Rom).
libvips/resample/nohalo.cpp: * final clamping is needed to stay "in range" (e.g., 0-255 for
libvips/resample/nohalo.cpp: * standard 8-bit images).
libvips/resample/nohalo.cpp: * --LBB is a Hermite bicubic method: The bicubic surface is defined,
libvips/resample/nohalo.cpp: *   point values, four x-derivatives, four y-derivatives, and four
libvips/resample/nohalo.cpp: *   cross-derivatives.
libvips/resample/nohalo.cpp: * --The stencil for values in a square patch is the usual 4x4.
libvips/resample/nohalo.cpp: * --LBB is interpolatory.
libvips/resample/nohalo.cpp: * --It is C^1 with continuous cross derivatives.
libvips/resample/nohalo.cpp: * --When the limiters are inactive, LBB gives the same results as
libvips/resample/nohalo.cpp: *   Catmull-Rom.
libvips/resample/nohalo.cpp: * --When used on binary images, LBB gives results similar to bicubic
libvips/resample/nohalo.cpp: *   Hermite with all first derivatives---but not necessarily the
libvips/resample/nohalo.cpp: *   cross derivatives--at the input pixel locations set to zero.
libvips/resample/nohalo.cpp: * --The LBB reconstruction is locally bounded: Over each square
libvips/resample/nohalo.cpp: * --Consequently, the LBB reconstruction is globally bounded between
libvips/resample/nohalo.cpp: *   585-594, 1995. DOI: 10.1016/0097-8493(95)00036-C.
libvips/resample/nohalo.cpp:   * bicubic (e.g., Catmull-Rom):
libvips/resample/nohalo.cpp:   *  (ix-1,iy-1)  (ix,iy-1)    (ix+1,iy-1)  (ix+2,iy-1)
libvips/resample/nohalo.cpp:   *  (ix-1,iy)    (ix,iy)      (ix+1,iy)    (ix+2,iy)
libvips/resample/nohalo.cpp:   *  (ix-1,iy+1)  (ix,iy+1)    (ix+1,iy+1)  (ix+2,iy+1)
libvips/resample/nohalo.cpp:   *  (ix-1,iy+2)  (ix,iy+2)    (ix+1,iy+2)  (ix+2,iy+2)
libvips/resample/nohalo.cpp:   * where ix is the (pseudo-)floor of the requested left-to-right
libvips/resample/nohalo.cpp:   * location ("X"), and iy is the floor of the requested up-to-down
libvips/resample/nohalo.cpp:   * sub-crosses of the 4x4 input stencil.
libvips/resample/nohalo.cpp:   * We exploit the fact that the data comes from the (co-monotone)
libvips/resample/nohalo.cpp:   * sub-blocks of the 4x4 input stencil.
libvips/resample/nohalo.cpp:   * (co-monotone) method Nohalo so that it is known ahead of time
libvips/resample/nohalo.cpp:   * --8 conditional moves,
libvips/resample/nohalo.cpp:   * --8 signs (in which the sign of zero is unimportant),
libvips/resample/nohalo.cpp:   * --12 minima of two values,
libvips/resample/nohalo.cpp:   * --8 maxima of two values,
libvips/resample/nohalo.cpp:   * --8 absolute values,
libvips/resample/nohalo.cpp:   * arithmetic operations (54 *, 21 +, 42 -).
libvips/resample/nohalo.cpp:  const double u11 = tre_thr - min11;
libvips/resample/nohalo.cpp:  const double v11 = max11 - tre_thr;
libvips/resample/nohalo.cpp:  const double u01 = tre_two - min01;
libvips/resample/nohalo.cpp:  const double v01 = max01 - tre_two;
libvips/resample/nohalo.cpp:  const double u00 = dos_two - min00;
libvips/resample/nohalo.cpp:  const double v00 = max00 - dos_two;
libvips/resample/nohalo.cpp:  const double u10 = dos_thr - min10;
libvips/resample/nohalo.cpp:  const double v10 = max10 - dos_thr;
libvips/resample/nohalo.cpp:  const double dble_dzdx00i = dos_thr - dos_one;
libvips/resample/nohalo.cpp:  const double dble_dzdy11i = qua_thr - dos_thr;
libvips/resample/nohalo.cpp:  const double dble_dzdx10i = dos_fou - dos_two;
libvips/resample/nohalo.cpp:  const double dble_dzdy01i = qua_two - dos_two;
libvips/resample/nohalo.cpp:  const double dble_dzdx01i = tre_thr - tre_one;
libvips/resample/nohalo.cpp:  const double dble_dzdy10i = tre_thr - uno_thr;
libvips/resample/nohalo.cpp:  const double dble_dzdx11i = tre_fou - tre_two;
libvips/resample/nohalo.cpp:  const double dble_dzdy00i = tre_two - uno_two;
libvips/resample/nohalo.cpp:   * Initial values of the cross-derivatives. Factors of 1/4 are left
libvips/resample/nohalo.cpp:  const double quad_d2zdxdy00i = uno_one - uno_thr + dble_dzdx01i;
libvips/resample/nohalo.cpp:  const double quad_d2zdxdy10i = uno_two - uno_fou + dble_dzdx11i;
libvips/resample/nohalo.cpp:  const double quad_d2zdxdy01i = qua_thr - qua_one - dble_dzdx00i;
libvips/resample/nohalo.cpp:  const double quad_d2zdxdy11i = qua_fou - qua_two - dble_dzdx10i;
libvips/resample/nohalo.cpp:  const double twelve_dif00 = 6.0 * ( dble_dzdx00 - dble_dzdy00 );
libvips/resample/nohalo.cpp:  const double twelve_dif10 = 6.0 * ( dble_dzdx10 - dble_dzdy10 );
libvips/resample/nohalo.cpp:  const double twelve_dif01 = 6.0 * ( dble_dzdx01 - dble_dzdy01 );
libvips/resample/nohalo.cpp:  const double twelve_dif11 = 6.0 * ( dble_dzdx11 - dble_dzdy11 );
libvips/resample/nohalo.cpp:   * First cross-derivative limiter:
libvips/resample/nohalo.cpp:  const double first_limit00 = twelve_abs_sum00 - u00_times_36;
libvips/resample/nohalo.cpp:  const double first_limit10 = twelve_abs_sum10 - u10_times_36;
libvips/resample/nohalo.cpp:  const double first_limit01 = twelve_abs_sum01 - u01_times_36;
libvips/resample/nohalo.cpp:  const double first_limit11 = twelve_abs_sum11 - u11_times_36;
libvips/resample/nohalo.cpp:   * Second cross-derivative limiter:
libvips/resample/nohalo.cpp:  const double second_limit00 = v00_times_36 - twelve_abs_sum00;
libvips/resample/nohalo.cpp:  const double second_limit10 = v10_times_36 - twelve_abs_sum10;
libvips/resample/nohalo.cpp:  const double second_limit01 = v01_times_36 - twelve_abs_sum01;
libvips/resample/nohalo.cpp:  const double second_limit11 = v11_times_36 - twelve_abs_sum11;
libvips/resample/nohalo.cpp:   * Third cross-derivative limiter:
libvips/resample/nohalo.cpp:  const double third_limit00 = twelve_abs_dif00 - v00_times_36;
libvips/resample/nohalo.cpp:  const double third_limit10 = twelve_abs_dif10 - v10_times_36;
libvips/resample/nohalo.cpp:  const double third_limit01 = twelve_abs_dif01 - v01_times_36;
libvips/resample/nohalo.cpp:  const double third_limit11 = twelve_abs_dif11 - v11_times_36;
libvips/resample/nohalo.cpp:   * Fourth cross-derivative limiter:
libvips/resample/nohalo.cpp:  const double fourth_limit00 = u00_times_36 - twelve_abs_dif00;
libvips/resample/nohalo.cpp:  const double fourth_limit10 = u10_times_36 - twelve_abs_dif10;
libvips/resample/nohalo.cpp:  const double fourth_limit01 = u01_times_36 - twelve_abs_dif01;
libvips/resample/nohalo.cpp:  const double fourth_limit11 = u11_times_36 - twelve_abs_dif11;
libvips/resample/nohalo.cpp: * It would be nice to do this with templates somehow---for one thing
libvips/resample/nohalo.cpp: * this would allow code comments!---but we can't figure a clean way
libvips/resample/nohalo.cpp:    const int sign_of_x_0 = 2 * ( x_0 >= 0. ) - 1; \
libvips/resample/nohalo.cpp:    const int sign_of_y_0 = 2 * ( y_0 >= 0. ) - 1; \
libvips/resample/nohalo.cpp:    const int shift_back_1_pix = -shift_forw_1_pix; \
libvips/resample/nohalo.cpp:    const int shift_back_1_row = -shift_forw_1_row; \
libvips/resample/nohalo.cpp:    const double xm1over2   = xp1over2 - 1.0; \
libvips/resample/nohalo.cpp:    const double onemx      = 1.5 - xp1over2; \
libvips/resample/nohalo.cpp:    const double ym1over2   = yp1over2 - 1.0; \
libvips/resample/nohalo.cpp:    const double onemy      = 1.5 - yp1over2; \
libvips/resample/nohalo.cpp:      } while (--band); \
libvips/resample/nohalo.cpp:   * and absolute_y will never be less than 0, plain cast---that is,
libvips/resample/nohalo.cpp:   * const int ix = absolute_x---should be used instead.  Actually,
libvips/resample/nohalo.cpp:   * any function which agrees with floor for non-integer values, and
libvips/resample/nohalo.cpp:   * Then, x is the x-coordinate of the sampling point relative to the
libvips/resample/nohalo.cpp:   * closest pixels. Similarly for y. Range of values: [-.5,.5).
libvips/resample/nohalo.cpp:  const double relative_x = absolute_x - ix;
libvips/resample/nohalo.cpp:  const double relative_y = absolute_y - iy;
libvips/resample/nohalo.cpp:  const int actual_bands = in->im->Bands;
libvips/resample/nohalo.cpp:  const int lskip = IM_REGION_LSKIP( in ) / IM_IMAGE_SIZEOF_ELEMENT( in->im );
libvips/resample/nohalo.cpp:    vips_bandfmt_iscomplex( in->im->BandFmt ) ? 2 * actual_bands : actual_bands;
libvips/resample/nohalo.cpp:  switch( in->im->BandFmt ) {
libvips/resample/nohalo.cpp:  gobject_class->set_property = vips_object_set_property;
libvips/resample/nohalo.cpp:  gobject_class->get_property = vips_object_get_property;
libvips/resample/nohalo.cpp:  object_class->nickname    = "nohalo";
libvips/resample/nohalo.cpp:  object_class->description =
libvips/resample/nohalo.cpp:  interpolate_class->interpolate   = vips_interpolate_nohalo_interpolate;
libvips/resample/nohalo.cpp:  interpolate_class->window_size   = 5;
libvips/resample/nohalo.cpp:  interpolate_class->window_offset = 2;
libvips/resample/im_stretch3.c: * August-1994
libvips/resample/im_stretch3.c: *	out->Xsize = 34*(in->Xsize / 33) + in->Xsize%33 - 3;
libvips/resample/im_stretch3.c: *	out->Ysize = in->Ysize - 3;
libvips/resample/im_stretch3.c: *	- was not freeing regions correctly
libvips/resample/im_stretch3.c: *	- tidied up
libvips/resample/im_stretch3.c: *	- completely rewritten ... now produces correct result, and is 2x
libvips/resample/im_stretch3.c: *	- added to VIPS library as im_stretch3
libvips/resample/im_stretch3.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/im_stretch3.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/im_stretch3.c:	int mask[34][4];	/* Fixed-point masks for each output pixel */
libvips/resample/im_stretch3.c:/* Per-thread info.
libvips/resample/im_stretch3.c:	IM_FREEF( im_region_free, seq->ir );
libvips/resample/im_stretch3.c:        seq->sin = sin;
libvips/resample/im_stretch3.c:	seq->ir = im_region_create( in );
libvips/resample/im_stretch3.c:	seq->lsk = IM_IMAGE_N_ELEMENTS( out );
libvips/resample/im_stretch3.c:        seq->buf = IM_ARRAY( out, 4*seq->lsk, unsigned short );
libvips/resample/im_stretch3.c:        if( !seq->buf || !seq->ir ) {
libvips/resample/im_stretch3.c:	int bands = sin->in->Bands;
libvips/resample/im_stretch3.c:		int *mask = &sin->mask[m][0];
libvips/resample/im_stretch3.c:	int bands = sin->in->Bands;
libvips/resample/im_stretch3.c:	int *mask = &sin->mask[m][0];
libvips/resample/im_stretch3.c:	REGION *ir = seq->ir;
libvips/resample/im_stretch3.c:	Rect *r = &or->valid;
libvips/resample/im_stretch3.c:	int xstart = (r->left + sin->xoff) % 34;
libvips/resample/im_stretch3.c:	r1.left = r->left - (r->left + sin->xoff) / 34;
libvips/resample/im_stretch3.c:	r1.top = r->top;
libvips/resample/im_stretch3.c:	x = x - (x + sin->xoff) / 34 + 3;
libvips/resample/im_stretch3.c:	r1.width = x - r1.left;
libvips/resample/im_stretch3.c:	r1.height = r->height + 3;
libvips/resample/im_stretch3.c:        	return( -1 );
libvips/resample/im_stretch3.c:		unsigned short *q = seq->buf + seq->lsk*y;
libvips/resample/im_stretch3.c:		make_xline( sin, p, q, r->width, xstart );
libvips/resample/im_stretch3.c:	for( y = 0; y < r->height; y++ ) {
libvips/resample/im_stretch3.c:		unsigned short *q = seq->buf + boff*seq->lsk;
libvips/resample/im_stretch3.c:			IM_REGION_ADDR( or, r->left, y + r->top );
libvips/resample/im_stretch3.c:		make_xline( sin, p, q, r->width, xstart );
libvips/resample/im_stretch3.c:		make_yline( sin, seq->lsk, boff, 
libvips/resample/im_stretch3.c:			seq->buf, q1, r->width, sin->yoff );
libvips/resample/im_stretch3.c:        if( in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_USHORT ) {
libvips/resample/im_stretch3.c:        	return( -1 );
libvips/resample/im_stretch3.c:		return( -1 );
libvips/resample/im_stretch3.c:		return( -1 );
libvips/resample/im_stretch3.c:		return( -1 );
libvips/resample/im_stretch3.c: 	out->Xsize = 34*(in->Xsize / 33) + in->Xsize%33 - 3;
libvips/resample/im_stretch3.c:        out->Ysize = in->Ysize - 3;
libvips/resample/im_stretch3.c:        	return( -1 );
libvips/resample/im_stretch3.c:        	return( -1 );
libvips/resample/im_stretch3.c:	sin->in = in;
libvips/resample/im_stretch3.c:	sin->dx = dx;
libvips/resample/im_stretch3.c:	sin->dy = dy;
libvips/resample/im_stretch3.c:        	double d = (34.0 - i)/34.0;
libvips/resample/im_stretch3.c:		double y0 = 2.0*d*d - d - d*d*d;
libvips/resample/im_stretch3.c:		double y1 = 1.0 - 2.0*d*d + d*d*d;
libvips/resample/im_stretch3.c:		double y2 = d + d*d - d*d*d;
libvips/resample/im_stretch3.c:		double y3 = -d*d + d*d*d;
libvips/resample/im_stretch3.c:		sin->mask[i][0] = IM_RINT( y0 * 32768 );
libvips/resample/im_stretch3.c:		sin->mask[i][1] = IM_RINT( y1 * 32768 );
libvips/resample/im_stretch3.c:		sin->mask[i][2] = IM_RINT( y2 * 32768 );
libvips/resample/im_stretch3.c:		sin->mask[i][3] = IM_RINT( y3 * 32768 );
libvips/resample/im_stretch3.c:	sin->xoff = (dx * 33.0) + 0.5;
libvips/resample/im_stretch3.c:	sin->yoff = (dy * 33.0) + 0.5;
libvips/resample/im_stretch3.c:        	return( -1 );
libvips/resample/im_rightshift_size.c:/* @(#) Decrease the size of an image by a power-of-two factor, summing the
libvips/resample/im_rightshift_size.c: * Written on: 2006-07-26
libvips/resample/im_rightshift_size.c: * 2006-12-17 tcv: 
libvips/resample/im_rightshift_size.c: *  - rewrite generator function macros to produce many smaller functions
libvips/resample/im_rightshift_size.c: *  - remove post-shift-up functionality
libvips/resample/im_rightshift_size.c: * 2007-02-02 jc
libvips/resample/im_rightshift_size.c: *  - added return 0; on success
libvips/resample/im_rightshift_size.c: *  - FUNCTION_NAME updated
libvips/resample/im_rightshift_size.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/im_rightshift_size.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/im_rightshift_size.c:    return -1;
libvips/resample/im_rightshift_size.c:    return -1;
libvips/resample/im_rightshift_size.c:  if( ! in-> Xsize >> xshift || ! in-> Ysize >> yshift ){
libvips/resample/im_rightshift_size.c:    return -1;
libvips/resample/im_rightshift_size.c:  if( ! vips_bandfmt_isint( in->BandFmt ) ){
libvips/resample/im_rightshift_size.c:    return -1;
libvips/resample/im_rightshift_size.c:  if( IM_CODING_NONE != in->Coding ){
libvips/resample/im_rightshift_size.c:    return -1;
libvips/resample/im_rightshift_size.c:  if( vips_bandfmt_isuint( in->BandFmt ) ){
libvips/resample/im_rightshift_size.c:      return -1;
libvips/resample/im_rightshift_size.c:      return -1;
libvips/resample/im_rightshift_size.c:  if( -1 == outbits )
libvips/resample/im_rightshift_size.c:    return -1;
libvips/resample/im_rightshift_size.c:  needbits= im_bits_of_fmt( in-> BandFmt ) + xshift + yshift;
libvips/resample/im_rightshift_size.c:    return -1;
libvips/resample/im_rightshift_size.c:    return -1;
libvips/resample/im_rightshift_size.c:  out-> Xsize >>= xshift;
libvips/resample/im_rightshift_size.c:  out-> Ysize >>= yshift;
libvips/resample/im_rightshift_size.c:  out-> Xres/= ( 1 << xshift ); /* x scale */
libvips/resample/im_rightshift_size.c:  out-> Yres/= ( 1 << yshift ); /* y scale */
libvips/resample/im_rightshift_size.c:  out-> BandFmt= band_fmt;
libvips/resample/im_rightshift_size.c:    return -1;
libvips/resample/im_rightshift_size.c:#define RETURN_MACRO_OUTS( MACRO, SUM_SIZE, OUT_SIZE )   switch( in-> BandFmt ){  \
libvips/resample/im_rightshift_size.c:#define RETURN_MACRO_SUMSS( MACRO, SUM_SIZE )   switch( im_bits_of_fmt( out->BandFmt ) ){  \
libvips/resample/im_rightshift_size.c:    params[ 2 ]= needbits - 64;
libvips/resample/im_rightshift_size.c:    params[ 3 ]= 64 - outbits;
libvips/resample/im_rightshift_size.c:    params[ 3 ]= needbits - outbits;
libvips/resample/im_rightshift_size.c:    params[ 3 ]= needbits - outbits;
libvips/resample/im_rightshift_size.c:    to_make-> valid. left << xshift,                                                              \
libvips/resample/im_rightshift_size.c:    to_make-> valid. top << yshift,                                                               \
libvips/resample/im_rightshift_size.c:    to_make-> valid. width << xshift,                                                             \
libvips/resample/im_rightshift_size.c:    to_make-> valid. height << yshift                                                             \
libvips/resample/im_rightshift_size.c:  TO_T *to_start= (TO_T*) IM_REGION_ADDR( to_make, to_make-> valid. left, to_make-> valid. top ); \
libvips/resample/im_rightshift_size.c:  int tx_max= to_make-> valid. width * to_make-> im-> Bands;                                      \
libvips/resample/im_rightshift_size.c:  int fx_max= to_make-> im-> Bands << xshift;                                                     \
libvips/resample/im_rightshift_size.c:  if( im_prepare( make_from, &need ) || ! im_rect_includesrect( &make_from-> valid, &need ) )     \
libvips/resample/im_rightshift_size.c:    return -1;                                                                                    \
libvips/resample/im_rightshift_size.c:  for( band= 0; band < make_from-> im-> Bands; ++band ){                                          \
libvips/resample/im_rightshift_size.c:    ty_stop= to + t_skip * to_make-> valid. height;                                               \
libvips/resample/im_rightshift_size.c:      for( tx= 0; tx < tx_max; tx+= to_make-> im-> Bands ){                                       \
libvips/resample/im_rightshift_size.c:          for( fx= 0; fx < fx_max; fx+= to_make-> im-> Bands )                                    \
libvips/resample/vsqbs.cpp:/* vertex-split subdivision followed by quadratic b-spline smoothing
libvips/resample/vsqbs.cpp: * C. Racette 23-28/05/2010 based on code by N. Robidoux and J. Cupitt
libvips/resample/vsqbs.cpp: * N. Robidoux 29-30/05/2010
libvips/resample/vsqbs.cpp:    02111-1307 USA
libvips/resample/vsqbs.cpp:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/vsqbs.cpp: * (20-61098).
libvips/resample/vsqbs.cpp: * Vertex-Split Quadratic B-Splines (VSQBS) is a brand new method
libvips/resample/vsqbs.cpp: * which consists of vertex-split subdivision, a subdivision method
libvips/resample/vsqbs.cpp: * constant on diagonals, followed by quadratic B-Spline smoothing.
libvips/resample/vsqbs.cpp: * staircasing. Like cubic B-Spline smoothing, however, VSQBS is not
libvips/resample/vsqbs.cpp: * about dos_two---assumed closer to the sampling location than other
libvips/resample/vsqbs.cpp: * pixels (ties are OK)---in such a way that after reflection the
libvips/resample/vsqbs.cpp: *               (ix,iy-1)    (ix+1,iy-1)
libvips/resample/vsqbs.cpp: *  (ix-1,iy)    (ix,iy)      (ix+1,iy)
libvips/resample/vsqbs.cpp: *  (ix-1,iy+1)  (ix,iy+1)    (ix+1,iy+1)
libvips/resample/vsqbs.cpp: * B-Splines, which is performed on (shifted) double density data:
libvips/resample/vsqbs.cpp: *  (ix-1/4,iy-1/4)  (ix+1/4,iy-1/4)  (ix+3/4,iy-1/4)
libvips/resample/vsqbs.cpp: *  (ix-1/4,iy+1/4)  (ix+1/4,iy+1/4)  (ix+3/4,iy+1/4)
libvips/resample/vsqbs.cpp: *  (ix-1/4,iy+3/4)  (ix+1/4,iy+3/4)  (ix+3/4,iy+3/4)
libvips/resample/vsqbs.cpp: * Call vertex-split + quadratic B-splines with a careful type
libvips/resample/vsqbs.cpp: * templates somehow---for one thing this would allow code
libvips/resample/vsqbs.cpp: * comments---but we can't figure a clean way to do it.)
libvips/resample/vsqbs.cpp:    const int sign_of_x_0 = 2 * ( x_0 >= 0. ) - 1; \
libvips/resample/vsqbs.cpp:    const int sign_of_y_0 = 2 * ( y_0 >= 0. ) - 1; \
libvips/resample/vsqbs.cpp:    const int shift_back_1_pix = -shift_forw_1_pix; \
libvips/resample/vsqbs.cpp:    const int shift_back_1_row = -shift_forw_1_row; \
libvips/resample/vsqbs.cpp:    const double x             = twice_abs_x_0 + -0.5;      \
libvips/resample/vsqbs.cpp:    const double y             = twice_abs_y_0 + -0.5;      \
libvips/resample/vsqbs.cpp:    const double cent          = 0.75 - x * x;              \
libvips/resample/vsqbs.cpp:    const double mid           = 0.75 - y * y;              \
libvips/resample/vsqbs.cpp:    const double left          = -0.5 * ( x + cent ) + 0.5; \
libvips/resample/vsqbs.cpp:    const double top           = -0.5 * ( y + mid  ) + 0.5; \
libvips/resample/vsqbs.cpp:    const double cent_p_rite   = 1.0 - left;                \
libvips/resample/vsqbs.cpp:    const double mid_p_bot     = 1.0 - top;                 \
libvips/resample/vsqbs.cpp:    const double rite          = 1.0 - left_p_cent;         \
libvips/resample/vsqbs.cpp:    const double bot           = 1.0 - top_p_mid;           \
libvips/resample/vsqbs.cpp:    const double four_c_uno_thr = top  - four_c_uno_two;                \
libvips/resample/vsqbs.cpp:    const double four_c_tre_one = left - four_c_dos_one;                \
libvips/resample/vsqbs.cpp:      } while (--band); \
libvips/resample/vsqbs.cpp:   * and absolute_y will never be less than 0, plain cast---that is,
libvips/resample/vsqbs.cpp:   * const int ix = absolute_x---should be used instead.  Actually,
libvips/resample/vsqbs.cpp:   * any function which agrees with floor for non-integer values, and
libvips/resample/vsqbs.cpp:   * Then, x is the x-coordinate of the sampling point relative to the
libvips/resample/vsqbs.cpp:   * closest pixels. Similarly for y. Range of values: [-.5,.5).
libvips/resample/vsqbs.cpp:  const double relative_x = absolute_x - ix;
libvips/resample/vsqbs.cpp:  const double relative_y = absolute_y - iy;
libvips/resample/vsqbs.cpp:  const int actual_bands = in->im->Bands;
libvips/resample/vsqbs.cpp:  const int lskip = IM_REGION_LSKIP( in ) / IM_IMAGE_SIZEOF_ELEMENT( in->im );
libvips/resample/vsqbs.cpp:    vips_bandfmt_iscomplex( in->im->BandFmt ) ? 2 * actual_bands : actual_bands;
libvips/resample/vsqbs.cpp:  switch( in->im->BandFmt ) {
libvips/resample/vsqbs.cpp:  gobject_class->set_property = vips_object_set_property;
libvips/resample/vsqbs.cpp:  gobject_class->get_property = vips_object_get_property;
libvips/resample/vsqbs.cpp:  object_class->nickname    = "vsqbs";
libvips/resample/vsqbs.cpp:  object_class->description = _( "B-Splines with antialiasing smoothing" );
libvips/resample/vsqbs.cpp:  interpolate_class->interpolate   = vips_interpolate_vsqbs_interpolate;
libvips/resample/vsqbs.cpp:  interpolate_class->window_size   = 3;
libvips/resample/vsqbs.cpp:  interpolate_class->window_offset = 1;
libvips/resample/interpolate.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/interpolate.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/interpolate.c: * some non-linear
libvips/resample/interpolate.c: * FAST_PSEUDO_FLOOR(-.5) = -1
libvips/resample/interpolate.c: * FAST_PSEUDO_FLOOR(-1.) = -2
libvips/resample/interpolate.c:#define FAST_PSEUDO_FLOOR(x) ( (int)(x) - ( (x) < 0. ) )
libvips/resample/interpolate.c:	G_OBJECT_CLASS( vips_interpolate_parent_class )->finalize( gobject );
libvips/resample/interpolate.c:	g_assert( class->window_size != -1 );
libvips/resample/interpolate.c:	return( class->window_size );
libvips/resample/interpolate.c:	g_assert( class->window_offset != -1 );
libvips/resample/interpolate.c:	return( class->window_offset );
libvips/resample/interpolate.c:	gobject_class->finalize = vips_interpolate_finalize;
libvips/resample/interpolate.c:	class->interpolate = NULL;
libvips/resample/interpolate.c:	class->get_window_size = vips_interpolate_real_get_window_size;
libvips/resample/interpolate.c:	class->get_window_offset = vips_interpolate_real_get_window_offset;
libvips/resample/interpolate.c:	class->window_size = -1;
libvips/resample/interpolate.c:	class->window_offset = -1;
libvips/resample/interpolate.c:	g_assert( class->interpolate );
libvips/resample/interpolate.c:	class->interpolate( interpolate, out, in, x, y );
libvips/resample/interpolate.c:	g_assert( class->interpolate );
libvips/resample/interpolate.c:	return( class->interpolate );
libvips/resample/interpolate.c:	g_assert( class->get_window_size );
libvips/resample/interpolate.c:	return( class->get_window_size( interpolate ) );
libvips/resample/interpolate.c:	g_assert( class->get_window_offset );
libvips/resample/interpolate.c:	return( class->get_window_offset( interpolate ) );
libvips/resample/interpolate.c:	const int ps = IM_IMAGE_SIZEOF_PEL( in->im );
libvips/resample/interpolate.c:	object_class->nickname = "nearest";
libvips/resample/interpolate.c:	object_class->description = _( "Nearest-neighbour interpolation" );
libvips/resample/interpolate.c:	interpolate_class->interpolate   = vips_interpolate_nearest_interpolate;
libvips/resample/interpolate.c:	interpolate_class->window_size   = 1;
libvips/resample/interpolate.c:	interpolate_class->window_offset = 0;
libvips/resample/interpolate.c: * we can round-to-nearest safely. Don't bother with double, since
libvips/resample/interpolate.c: * factors, fixed-point arithmetic.
libvips/resample/interpolate.c:/* Expand for band types. with a fixed-point interpolator and a float
libvips/resample/interpolate.c:	const int ps = IM_IMAGE_SIZEOF_PEL( in->im );
libvips/resample/interpolate.c:	const int b = in->im->Bands;
libvips/resample/interpolate.c:	/* Find the mask index. We round-to-nearest, so we need to generate
libvips/resample/interpolate.c:	const int six = sx & (VIPS_TRANSFORM_SCALE * 2 - 1);
libvips/resample/interpolate.c:	const int siy = sy & (VIPS_TRANSFORM_SCALE * 2 - 1);
libvips/resample/interpolate.c:	SWITCH_INTERPOLATE( in->im->BandFmt,
libvips/resample/interpolate.c:	object_class->nickname = "bilinear";
libvips/resample/interpolate.c:	object_class->description = _( "Bilinear interpolation" );
libvips/resample/interpolate.c:	interpolate_class->interpolate   = vips_interpolate_bilinear_interpolate;
libvips/resample/interpolate.c:	interpolate_class->window_size   = 2;
libvips/resample/interpolate.c:	interpolate_class->window_offset = 1;
libvips/resample/interpolate.c:			Xd = 1.0 - X;
libvips/resample/interpolate.c:			Yd = 1.0 - Y;
libvips/resample/resample_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/resample_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/resample_dispatch.c:  "decrease size by a power-of-two factor",
libvips/resample/resample_dispatch.c:	"stretch 3%, sub-pixel displace by xdisp/ydisp",
libvips/resample/bicubic.cpp:/* bicubic (catmull-rom) interpolator
libvips/resample/bicubic.cpp:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/bicubic.cpp:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/bicubic.cpp:/* Bicubic (Catmull-Rom) interpolator derived from Nicolas Robidoux's
libvips/resample/bicubic.cpp: * scale + 1 so we can round-to-nearest safely.
libvips/resample/bicubic.cpp:/* Fixed-point version, for 8 and 16-bit types.
libvips/resample/bicubic.cpp:/* Floating-point version, for int/float types.
libvips/resample/bicubic.cpp:/* Ultra-high-quality version for double images.
libvips/resample/bicubic.cpp:	/* Find the mask index. We round-to-nearest, so we need to generate 
libvips/resample/bicubic.cpp:	const int six = sx & (VIPS_TRANSFORM_SCALE * 2 - 1);
libvips/resample/bicubic.cpp:	const int siy = sy & (VIPS_TRANSFORM_SCALE * 2 - 1);
libvips/resample/bicubic.cpp:	/* Back and up one to get the top-left of the 4x4.
libvips/resample/bicubic.cpp:	const PEL *p = (PEL *) IM_REGION_ADDR( in, ix - 1, iy - 1 );
libvips/resample/bicubic.cpp:	const int bands = in->im->Bands;
libvips/resample/bicubic.cpp:		ix - 1, iy - 1, 4, 4 );
libvips/resample/bicubic.cpp:	switch( in->im->BandFmt ) {
libvips/resample/bicubic.cpp:			x - ix, y - iy );
libvips/resample/bicubic.cpp:			x - ix, y - iy );
libvips/resample/bicubic.cpp:			x - ix, y - iy );
libvips/resample/bicubic.cpp:	object_class->nickname    = "bicubic";
libvips/resample/bicubic.cpp:	object_class->description = _( "Bicubic interpolation (Catmull-Rom)" );
libvips/resample/bicubic.cpp:	interpolate_class->interpolate   = vips_interpolate_bicubic_interpolate;
libvips/resample/bicubic.cpp:	interpolate_class->window_size   = 4;
libvips/resample/bicubic.cpp:	interpolate_class->window_offset = 2;
libvips/resample/bicubic.cpp:	/* Build the tables of pre-computed coefficients.
libvips/resample/templates.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/templates.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/templates.h: * FAST_PSEUDO_FLOOR(-.5) = -1
libvips/resample/templates.h: * FAST_PSEUDO_FLOOR(-1.) = -2
libvips/resample/templates.h:#define FAST_PSEUDO_FLOOR(x) ( (int)(x) - ( (x) < 0. ) )
libvips/resample/templates.h:  const int sign_of_val = 2 * ( val >= 0. ) - 1;
libvips/resample/templates.h:	const int sign_of_val = 2 * ( val >= 0. ) - 1;
libvips/resample/templates.h: * Bicubic (Catmull-Rom) interpolation templates:
libvips/resample/templates.h:/* Fixed-point integer bicubic, used for 8 and 16-bit types.
libvips/resample/templates.h:/* Floating-point bicubic, used for int/float/double types.
libvips/resample/templates.h: * calculate c0, c1, c2, c3, the catmull-rom coefficients. This is called
libvips/resample/templates.h:	const double dx = 1. - x;
libvips/resample/templates.h:	const double mx2 = -.5 * x2;
libvips/resample/templates.h:	c[1] = x2 * (-1.5 * x + 1.) + dx;
libvips/resample/templates.h:	c[2] = 1. - (mx2 + c[1]);
libvips/resample/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/resample/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/resample/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/resample/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/resample/Makefile.in:am__mv = mv -f
libvips/resample/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/resample/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/resample/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/resample/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/resample/Makefile.in:	$(LDFLAGS) -o $@
libvips/resample/Makefile.in:LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/resample/Makefile.in:	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/resample/Makefile.in:CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/resample/Makefile.in:	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
libvips/resample/Makefile.in:	$(LDFLAGS) -o $@
libvips/resample/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/resample/Makefile.in:all: all-am
libvips/resample/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/resample/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/resample/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/resample/Makefile'; \
libvips/resample/Makefile.in:	  $(AUTOMAKE) --gnu libvips/resample/Makefile
libvips/resample/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/resample/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/resample/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/resample/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/resample/Makefile.in:clean-noinstLTLIBRARIES:
libvips/resample/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/resample/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/resample/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/resample/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/resample/Makefile.in:mostlyclean-compile:
libvips/resample/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/resample/Makefile.in:distclean-compile:
libvips/resample/Makefile.in:	-rm -f *.tab.c
libvips/resample/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/resample/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/resample/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/resample/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/resample/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/resample/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/resample/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/resample/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
libvips/resample/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/resample/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
libvips/resample/Makefile.in:@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/resample/Makefile.in:@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
libvips/resample/Makefile.in:mostlyclean-libtool:
libvips/resample/Makefile.in:	-rm -f *.lo
libvips/resample/Makefile.in:clean-libtool:
libvips/resample/Makefile.in:	-rm -rf .libs _libs
libvips/resample/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/resample/Makefile.in:	mkid -fID $$unique
libvips/resample/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/resample/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/resample/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/resample/Makefile.in:	  if test $$# -gt 0; then \
libvips/resample/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/resample/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/resample/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/resample/Makefile.in:distclean-tags:
libvips/resample/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/resample/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/resample/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/resample/Makefile.in:			   sort -u` ;; \
libvips/resample/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/resample/Makefile.in:	  if test -d $$d/$$file; then \
libvips/resample/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/resample/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/resample/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/resample/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/resample/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/resample/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/resample/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/resample/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/resample/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/resample/Makefile.in:check-am: all-am
libvips/resample/Makefile.in:check: check-am
libvips/resample/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/resample/Makefile.in:install: install-am
libvips/resample/Makefile.in:install-exec: install-exec-am
libvips/resample/Makefile.in:install-data: install-data-am
libvips/resample/Makefile.in:uninstall: uninstall-am
libvips/resample/Makefile.in:install-am: all-am
libvips/resample/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/resample/Makefile.in:installcheck: installcheck-am
libvips/resample/Makefile.in:install-strip:
libvips/resample/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/resample/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/resample/Makefile.in:mostlyclean-generic:
libvips/resample/Makefile.in:clean-generic:
libvips/resample/Makefile.in:distclean-generic:
libvips/resample/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/resample/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/resample/Makefile.in:maintainer-clean-generic:
libvips/resample/Makefile.in:clean: clean-am
libvips/resample/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/resample/Makefile.in:	mostlyclean-am
libvips/resample/Makefile.in:distclean: distclean-am
libvips/resample/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/resample/Makefile.in:	-rm -f Makefile
libvips/resample/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/resample/Makefile.in:	distclean-tags
libvips/resample/Makefile.in:dvi: dvi-am
libvips/resample/Makefile.in:dvi-am:
libvips/resample/Makefile.in:html: html-am
libvips/resample/Makefile.in:html-am:
libvips/resample/Makefile.in:info: info-am
libvips/resample/Makefile.in:info-am:
libvips/resample/Makefile.in:install-data-am:
libvips/resample/Makefile.in:install-dvi: install-dvi-am
libvips/resample/Makefile.in:install-dvi-am:
libvips/resample/Makefile.in:install-exec-am:
libvips/resample/Makefile.in:install-html: install-html-am
libvips/resample/Makefile.in:install-html-am:
libvips/resample/Makefile.in:install-info: install-info-am
libvips/resample/Makefile.in:install-info-am:
libvips/resample/Makefile.in:install-man:
libvips/resample/Makefile.in:install-pdf: install-pdf-am
libvips/resample/Makefile.in:install-pdf-am:
libvips/resample/Makefile.in:install-ps: install-ps-am
libvips/resample/Makefile.in:install-ps-am:
libvips/resample/Makefile.in:installcheck-am:
libvips/resample/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/resample/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/resample/Makefile.in:	-rm -f Makefile
libvips/resample/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/resample/Makefile.in:mostlyclean: mostlyclean-am
libvips/resample/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/resample/Makefile.in:	mostlyclean-libtool
libvips/resample/Makefile.in:pdf: pdf-am
libvips/resample/Makefile.in:pdf-am:
libvips/resample/Makefile.in:ps: ps-am
libvips/resample/Makefile.in:ps-am:
libvips/resample/Makefile.in:uninstall-am:
libvips/resample/Makefile.in:.MAKE: install-am install-strip
libvips/resample/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/resample/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/resample/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/resample/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/resample/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/resample/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/resample/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/resample/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/resample/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/resample/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/resample/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/resample/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/resample/interpolate.c~:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/interpolate.c~:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/interpolate.c~: * some non-linear
libvips/resample/interpolate.c~: * FAST_PSEUDO_FLOOR(-.5) = -1
libvips/resample/interpolate.c~: * FAST_PSEUDO_FLOOR(-1.) = -2
libvips/resample/interpolate.c~:#define FAST_PSEUDO_FLOOR(x) ( (int)(x) - ( (x) < 0. ) )
libvips/resample/interpolate.c~:	G_OBJECT_CLASS( vips_interpolate_parent_class )->finalize( gobject );
libvips/resample/interpolate.c~:	g_assert( class->window_size != -1 );
libvips/resample/interpolate.c~:	return( class->window_size );
libvips/resample/interpolate.c~:	g_assert( class->window_offset != -1 );
libvips/resample/interpolate.c~:	return( class->window_offset );
libvips/resample/interpolate.c~:	gobject_class->finalize = vips_interpolate_finalize;
libvips/resample/interpolate.c~:	class->interpolate = NULL;
libvips/resample/interpolate.c~:	class->get_window_size = vips_interpolate_real_get_window_size;
libvips/resample/interpolate.c~:	class->get_window_offset = vips_interpolate_real_get_window_offset;
libvips/resample/interpolate.c~:	class->window_size = -1;
libvips/resample/interpolate.c~:	class->window_offset = -1;
libvips/resample/interpolate.c~:	g_assert( class->interpolate );
libvips/resample/interpolate.c~:	class->interpolate( interpolate, out, in, x, y );
libvips/resample/interpolate.c~:	g_assert( class->interpolate );
libvips/resample/interpolate.c~:	return( class->interpolate );
libvips/resample/interpolate.c~:	g_assert( class->get_window_size );
libvips/resample/interpolate.c~:	return( class->get_window_size( interpolate ) );
libvips/resample/interpolate.c~:	g_assert( class->get_window_offset );
libvips/resample/interpolate.c~:	return( class->get_window_offset( interpolate ) );
libvips/resample/interpolate.c~:	const int ps = IM_IMAGE_SIZEOF_PEL( in->im );
libvips/resample/interpolate.c~:	object_class->nickname = "nearest";
libvips/resample/interpolate.c~:	object_class->description = _( "Nearest-neighbour interpolation" );
libvips/resample/interpolate.c~:	interpolate_class->interpolate   = vips_interpolate_nearest_interpolate;
libvips/resample/interpolate.c~:	interpolate_class->window_size   = 1;
libvips/resample/interpolate.c~:	interpolate_class->window_offset = 0;
libvips/resample/interpolate.c~: * we can round-to-nearest safely. Don't bother with double, since
libvips/resample/interpolate.c~: * factors, fixed-point arithmetic.
libvips/resample/interpolate.c~:/* Expand for band types. with a fixed-point interpolator and a float
libvips/resample/interpolate.c~:	const int ps = IM_IMAGE_SIZEOF_PEL( in->im );
libvips/resample/interpolate.c~:	const int b = in->im->Bands;
libvips/resample/interpolate.c~:	/* Find the mask index. We round-to-nearest, so we need to generate 
libvips/resample/interpolate.c~:	const int six = sx & (VIPS_TRANSFORM_SCALE * 2 - 1);
libvips/resample/interpolate.c~:	const int siy = sy & (VIPS_TRANSFORM_SCALE * 2 - 1);
libvips/resample/interpolate.c~:	SWITCH_INTERPOLATE( in->im->BandFmt,
libvips/resample/interpolate.c~:	object_class->nickname = "bilinear";
libvips/resample/interpolate.c~:	object_class->description = _( "Bilinear interpolation" );
libvips/resample/interpolate.c~:	interpolate_class->interpolate   = vips_interpolate_bilinear_interpolate;
libvips/resample/interpolate.c~:	interpolate_class->window_size   = 2;
libvips/resample/interpolate.c~:	interpolate_class->window_offset = 1;
libvips/resample/interpolate.c~:			Xd = 1.0 - X;
libvips/resample/interpolate.c~:			Yd = 1.0 - Y;
libvips/resample/transform.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/transform.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/transform.c:		trn->a, trn->b, trn->c, trn->d )) )
libvips/resample/transform.c:		return( -1 );
libvips/resample/transform.c:		return( -1 );
libvips/resample/transform.c:	trn->ia = msk2->coeff[0];
libvips/resample/transform.c:	trn->ib = msk2->coeff[1];
libvips/resample/transform.c:	trn->ic = msk2->coeff[2];
libvips/resample/transform.c:	trn->id = msk2->coeff[3];
libvips/resample/transform.c:	trn->oarea.left = 0;
libvips/resample/transform.c:	trn->oarea.top = 0;
libvips/resample/transform.c:	trn->oarea.width = -1;
libvips/resample/transform.c:	trn->oarea.height = -1;
libvips/resample/transform.c:	trn->iarea.left = 0;
libvips/resample/transform.c:	trn->iarea.top = 0;
libvips/resample/transform.c:	trn->iarea.width = -1;
libvips/resample/transform.c:	trn->iarea.height = -1;
libvips/resample/transform.c:	trn->a = 1.0;	/* Identity transform */
libvips/resample/transform.c:	trn->b = 0.0;
libvips/resample/transform.c:	trn->c = 0.0;
libvips/resample/transform.c:	trn->d = 1.0;
libvips/resample/transform.c:	trn->dx = 0.0;
libvips/resample/transform.c:	trn->dy = 0.0;
libvips/resample/transform.c:	if( trn->a == 1.0 && trn->b == 0.0 && trn->c == 0.0 &&
libvips/resample/transform.c:		trn->d == 1.0 && trn->dx == 0.0 && trn->dy == 0.0 )
libvips/resample/transform.c:	out->a = in1->a * in2->a + in1->c * in2->b;
libvips/resample/transform.c:	out->b = in1->b * in2->a + in1->d * in2->b;
libvips/resample/transform.c:	out->c = in1->a * in2->c + in1->c * in2->d;
libvips/resample/transform.c:	out->d = in1->b * in2->c + in1->d * in2->d;
libvips/resample/transform.c:	out->dx = in1->dx * in2->a + in1->dy * in2->b + in2->dx;
libvips/resample/transform.c:	out->dy = in1->dx * in2->c + in1->dy * in2->d + in2->dy;
libvips/resample/transform.c:		return( -1 );
libvips/resample/transform.c:		trn->iarea.left,
libvips/resample/transform.c:		trn->iarea.top,
libvips/resample/transform.c:		trn->iarea.width,
libvips/resample/transform.c:		trn->iarea.height );
libvips/resample/transform.c:		trn->oarea.left,
libvips/resample/transform.c:		trn->oarea.top,
libvips/resample/transform.c:		trn->oarea.width,
libvips/resample/transform.c:		trn->oarea.height );
libvips/resample/transform.c:		trn->a, trn->b, trn->c, trn->d );
libvips/resample/transform.c:		trn->dx, trn->dy );
libvips/resample/transform.c:	*ox = trn->a * x + trn->b * y + trn->dx;
libvips/resample/transform.c:	*oy = trn->c * x + trn->d * y + trn->dy;
libvips/resample/transform.c:	double mx = x - trn->dx;
libvips/resample/transform.c:	double my = y - trn->dy;
libvips/resample/transform.c:	*ox = trn->ia * mx + trn->ib * my;
libvips/resample/transform.c:	*oy = trn->ic * mx + trn->id * my;
libvips/resample/transform.c:	transform( trn, in->left, in->top, &x1, &y1 );
libvips/resample/transform.c:	transform( trn, in->left, IM_RECT_BOTTOM( in ), &x3, &y3 );
libvips/resample/transform.c:	transform( trn, IM_RECT_RIGHT( in ), in->top, &x2, &y2 );
libvips/resample/transform.c:	/* Find bounding box for these four corners. Round-to-nearest to try
libvips/resample/transform.c:	out->left = IM_RINT( left );
libvips/resample/transform.c:	out->top = IM_RINT( top );
libvips/resample/transform.c:	out->width = IM_RINT( right - left );
libvips/resample/transform.c:	out->height = IM_RINT( bottom - top );
libvips/resample/transform.c:	im__transform_forward_rect( trn, &trn->iarea, &trn->oarea );
libvips/resample/im_shrink.c:/* @(#) Shrink any non-complex image by some x, y, factor. No interpolation!
libvips/resample/im_shrink.c: * @(#) Returns either 0 (success) or -1 (fail)
libvips/resample/im_shrink.c: * Modified on: 2/11/92, 22/2/93 Kirk Martinez - Xres Yres & cleanup 
libvips/resample/im_shrink.c: *	- rewritten for partial v2
libvips/resample/im_shrink.c: *	- ANSIfied
libvips/resample/im_shrink.c: *	- now shrinks any non-complex type
libvips/resample/im_shrink.c: *	- no longer cloned from im_convsub()
libvips/resample/im_shrink.c: *	- could be much better! see km comments above
libvips/resample/im_shrink.c: *	- rounding bug fixed
libvips/resample/im_shrink.c: *	- problems with .000001 and round up/down ignored! Try shrink 3738
libvips/resample/im_shrink.c: *	- IM_NEW and IM_ARRAY added
libvips/resample/im_shrink.c: *	- more typedef
libvips/resample/im_shrink.c: *	- IM_CODING_LABQ handling added here
libvips/resample/im_shrink.c: * 	- fall back to im_copy() for 1/1 shrink
libvips/resample/im_shrink.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/im_shrink.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/im_shrink.c:/* Our per-sequence parameter struct. We hold an offset for each pel we
libvips/resample/im_shrink.c:	IM_FREEF( im_region_free, seq->ir );
libvips/resample/im_shrink.c:	seq->ir = NULL;
libvips/resample/im_shrink.c:	seq->off = NULL;
libvips/resample/im_shrink.c:	seq->ir = im_region_create( in );
libvips/resample/im_shrink.c:	seq->off = IM_ARRAY( out, st->np, int );
libvips/resample/im_shrink.c:	if( !seq->off || !seq->ir ) {
libvips/resample/im_shrink.c:			int ix = x * st->xshrink; \
libvips/resample/im_shrink.c:			int iy = y * st->yshrink; \
libvips/resample/im_shrink.c:			for( k = 0; k < ir->im->Bands; k++ ) { \
libvips/resample/im_shrink.c:				int *t = seq->off; \
libvips/resample/im_shrink.c:				for( z = 0; z < st->np; z++ ) \
libvips/resample/im_shrink.c:				*q++ = sum / st->np; \
libvips/resample/im_shrink.c:			int ix = x * st->xshrink; \
libvips/resample/im_shrink.c:			int iy = y * st->yshrink; \
libvips/resample/im_shrink.c:			for( k = 0; k < ir->im->Bands; k++ ) { \
libvips/resample/im_shrink.c:				int *t = seq->off; \
libvips/resample/im_shrink.c:				for( z = 0; z < st->np; z++ ) \
libvips/resample/im_shrink.c:				*q++ = sum / st->np; \
libvips/resample/im_shrink.c:	REGION *ir = seq->ir;
libvips/resample/im_shrink.c:	Rect *r = &or->valid;
libvips/resample/im_shrink.c:	int le = r->left;
libvips/resample/im_shrink.c:	int to = r->top;
libvips/resample/im_shrink.c:	s.left = r->left * st->xshrink;
libvips/resample/im_shrink.c:	s.top = r->top * st->yshrink;
libvips/resample/im_shrink.c:	s.width = ceil( IM_RECT_RIGHT( r ) * st->xshrink ) - s.left;
libvips/resample/im_shrink.c:	s.height = ceil( IM_RECT_BOTTOM( r ) * st->yshrink ) - s.top;
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_shrink.c:	for( z = 0, y = 0; y < st->mh; y++ )
libvips/resample/im_shrink.c:		for( x = 0; x < st->mw; x++ )
libvips/resample/im_shrink.c:			seq->off[z++] = (IM_REGION_ADDR( ir, x, y ) - 
libvips/resample/im_shrink.c:				IM_IMAGE_SIZEOF_ELEMENT( ir->im );
libvips/resample/im_shrink.c:	switch( ir->im->BandFmt ) {
libvips/resample/im_shrink.c:                return( -1 );
libvips/resample/im_shrink.c:	if( !in || vips_bandfmt_iscomplex( in->BandFmt ) ) {
libvips/resample/im_shrink.c:		im_error( "im_shrink", "%s", _( "non-complex input only" ) );
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_shrink.c:	out->Xsize = in->Xsize / xshrink;
libvips/resample/im_shrink.c:	out->Ysize = in->Ysize / yshrink;
libvips/resample/im_shrink.c:	out->Xres = in->Xres / xshrink;
libvips/resample/im_shrink.c:	out->Yres = in->Yres / yshrink;
libvips/resample/im_shrink.c:	if( out->Xsize <= 0 || out->Ysize <= 0 ) {
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_shrink.c:	st->xshrink = xshrink;
libvips/resample/im_shrink.c:	st->yshrink = yshrink;
libvips/resample/im_shrink.c:	st->mw = ceil( xshrink );
libvips/resample/im_shrink.c:	st->mh = ceil( yshrink );
libvips/resample/im_shrink.c:	st->np = st->mw * st->mh;
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_shrink.c:	else if( in->Coding == IM_CODING_LABQ ) {
libvips/resample/im_shrink.c:			return( -1 );
libvips/resample/im_shrink.c:	else if( in->Coding == IM_CODING_NONE ) {
libvips/resample/im_shrink.c:			return( -1 );
libvips/resample/im_shrink.c:		return( -1 );
libvips/resample/im_affine.c: *	- rounding error in interpolation routine fixed
libvips/resample/im_affine.c: *	- test for scale=1, angle=0 case fixed
libvips/resample/im_affine.c: *	- clipping of output removed: redundant
libvips/resample/im_affine.c: *	- various little tidies
libvips/resample/im_affine.c: *	- problems remain with scale>20, size<10
libvips/resample/im_affine.c: * Re-written on: 20/08/92, J.Ph Laurent
libvips/resample/im_affine.c: *	- speed-ups
libvips/resample/im_affine.c: * 	- simplifications
libvips/resample/im_affine.c: *	- im_similarity now calculates a window and calls this routine
libvips/resample/im_affine.c: *	- rewritten for partials
libvips/resample/im_affine.c: *	- ANSIfied
libvips/resample/im_affine.c: *	- now rotates any non-complex type
libvips/resample/im_affine.c: *	- C revised in bug search
libvips/resample/im_affine.c: *	- im_prepare() was preparing too small an area! oops
libvips/resample/im_affine.c: *	- added code to detect all-black output area case - helps lazy ip
libvips/resample/im_affine.c: *	- IM_CODING_LABQ handling moved to here
libvips/resample/im_affine.c: * 	- dx/dy sign reversed to be less confusing ... now follows comment at
libvips/resample/im_affine.c: * 	  top ... ax - by + dx etc.
libvips/resample/im_affine.c: *	- tiny speed up, replaced the *++ on interpolation with [z]
libvips/resample/im_affine.c: *	- im_similarity() moved in here
libvips/resample/im_affine.c: *	- args swapped: was whxy, now xywh
libvips/resample/im_affine.c: *	- didn't agree with dispatch fns before :(
libvips/resample/im_affine.c: *	- im_demand_hint() added
libvips/resample/im_affine.c: *	- im_affine() made from im_similarity_area()
libvips/resample/im_affine.c: *	- transform stuff cleaned up a bit
libvips/resample/im_affine.c: *	- oops, invert_point() had a rounding problem
libvips/resample/im_affine.c: *	- pre-calculate interpolation matricies
libvips/resample/im_affine.c: *	- integer interpolation for int8/16 types, double for
libvips/resample/im_affine.c: *	- faster transformation 
libvips/resample/im_affine.c: *	- records Xoffset/Yoffset
libvips/resample/im_affine.c: *	- rounding, clipping and transforming revised, now pixel-perfect (or 
libvips/resample/im_affine.c: *	- all revised again, simpler and more reliable now
libvips/resample/im_affine.c: * 	- gah, still an occasional clipping problem
libvips/resample/im_affine.c: * 	- still more tweaking, gah again
libvips/resample/im_affine.c: * 	- set THINSTRIP for no-rotate affines
libvips/resample/im_affine.c: * 	- version with interpolate parameter, from im_affine()
libvips/resample/im_affine.c: * 	- allow complex image types
libvips/resample/im_affine.c: * 	- take an interpolator as a param
libvips/resample/im_affine.c: * 	- replace im_affine with this, provide an im_affine() compat wrapper
libvips/resample/im_affine.c: * 	- break transform stuff out to transform.c
libvips/resample/im_affine.c: * 	- revise clipping / transform stuff, again
libvips/resample/im_affine.c: * 	- now do corner rather than centre: this way the identity transform
libvips/resample/im_affine.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/resample/im_affine.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/resample/im_affine.c:#define FLOOR( V ) ((V) >= 0 ? (int)(V) : (int)((V) - 1))
libvips/resample/im_affine.c:/* Per-call state.
libvips/resample/im_affine.c:	IM_FREEF( g_object_unref, affine->interpolate );
libvips/resample/im_affine.c: * interpolator. iarea->left/top give the offset. These are the coordinates we
libvips/resample/im_affine.c:		vips_interpolate_get_window_offset( affine->interpolate );
libvips/resample/im_affine.c:		vips_interpolate_get_method( affine->interpolate );
libvips/resample/im_affine.c:	const Rect *r = &or->valid;
libvips/resample/im_affine.c:	const int le = r->left;
libvips/resample/im_affine.c:	const int to = r->top;
libvips/resample/im_affine.c:	const Rect *iarea = &affine->trn.iarea;
libvips/resample/im_affine.c:	const Rect *oarea = &affine->trn.oarea;
libvips/resample/im_affine.c:		r->left,
libvips/resample/im_affine.c:		r->top,
libvips/resample/im_affine.c:		r->width,
libvips/resample/im_affine.c:		r->height );
libvips/resample/im_affine.c:	want.left += oarea->left;
libvips/resample/im_affine.c:	want.top += oarea->top;
libvips/resample/im_affine.c:	im__transform_invert_rect( &affine->trn, &want, &need );
libvips/resample/im_affine.c:	need.left += iarea->left;
libvips/resample/im_affine.c:	need.top += iarea->top;
libvips/resample/im_affine.c:	image.width = in->Xsize;
libvips/resample/im_affine.c:	image.height = in->Ysize;
libvips/resample/im_affine.c:	/* We do need some pixels from the input image to make our output -
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:		const int ile = iarea->left;
libvips/resample/im_affine.c:		const int ito = iarea->top;
libvips/resample/im_affine.c:		const int iri = iarea->left + iarea->width;
libvips/resample/im_affine.c:		const int ibo = iarea->top + iarea->height;
libvips/resample/im_affine.c:		const double ddx = affine->trn.ia;
libvips/resample/im_affine.c:		const double ddy = affine->trn.ic;
libvips/resample/im_affine.c:		const double ox = le + oarea->left - affine->trn.dx;
libvips/resample/im_affine.c:		const double oy = y + oarea->top - affine->trn.dy;
libvips/resample/im_affine.c:		ix = affine->trn.ia * ox + affine->trn.ib * oy;
libvips/resample/im_affine.c:		iy = affine->trn.ic * ox + affine->trn.id * oy;
libvips/resample/im_affine.c:		ix += iarea->left;
libvips/resample/im_affine.c:		iy += iarea->top;
libvips/resample/im_affine.c:				interpolate( affine->interpolate, 
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:	affine->interpolate = NULL;
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:	affine->in = in;
libvips/resample/im_affine.c:	affine->out = out;
libvips/resample/im_affine.c:	affine->interpolate = interpolate;
libvips/resample/im_affine.c:	affine->trn = *trn;
libvips/resample/im_affine.c:	if( im__transform_calc_inverse( &affine->trn ) )
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:	out->Xsize = affine->trn.oarea.width;
libvips/resample/im_affine.c:	out->Ysize = affine->trn.oarea.height;
libvips/resample/im_affine.c:	if( affine->trn.b == 0.0 && affine->trn.c == 0.0 ) {
libvips/resample/im_affine.c:			return( -1 );
libvips/resample/im_affine.c:			return( -1 );
libvips/resample/im_affine.c:	if( affine->trn.oarea.left < -edge || affine->trn.oarea.top < -edge ||
libvips/resample/im_affine.c:		IM_RECT_RIGHT( &affine->trn.oarea ) > edge || 
libvips/resample/im_affine.c:		IM_RECT_BOTTOM( &affine->trn.oarea ) > edge ) {
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:			in->Xsize + window_size, in->Ysize + window_size ) )
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:	printf( "im__affinei: %s\n", in->filename );
libvips/resample/im_affine.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/resample/im_affine.c:			return( -1 );
libvips/resample/im_affine.c:	else if( in->Coding == IM_CODING_NONE ) {
libvips/resample/im_affine.c:			return( -1 );
libvips/resample/im_affine.c:		return( -1 );
libvips/resample/im_affine.c:	out->Xoffset = trn->dx - trn->oarea.left;
libvips/resample/im_affine.c:	out->Yoffset = trn->dy - trn->oarea.top;
libvips/resample/im_affine.c:	trn.iarea.width = in->Xsize;
libvips/resample/im_affine.c:	trn.iarea.height = in->Ysize;
libvips/resample/im_affine.c:	trn.iarea.width = in->Xsize;
libvips/resample/im_affine.c:	trn.iarea.height = in->Ysize;
libvips/video/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/video/im_video_test.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/video/im_video_test.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/video/im_video_test.c:		return( -1 );
libvips/video/video_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/video/video_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/video/video_dispatch.c: * @see_also: <link linkend="libvips-image">image</link>
libvips/video/im_video_v4l1.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/video/im_video_v4l1.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/video/im_video_v4l1.c:		"VID_TYPE_SUBCAPTURE", "Capture sub-image" },
libvips/video/im_video_v4l1.c:                        flags &= -1 ^ decode[i].value;
libvips/video/im_video_v4l1.c:	if( !lg->fd ) {
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	if( ioctl( lg->fd, request, argp ) < 0 ) {
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	if( lg->fd != -1 ) {
libvips/video/im_video_v4l1.c:		close( lg->fd );
libvips/video/im_video_v4l1.c:		lg->fd = -1;
libvips/video/im_video_v4l1.c:	if( lg->capture_buffer ) {
libvips/video/im_video_v4l1.c:		munmap( lg->capture_buffer, lg->capture_size );
libvips/video/im_video_v4l1.c:		lg->capture_buffer = NULL;
libvips/video/im_video_v4l1.c:	FREE( lg->device );
libvips/video/im_video_v4l1.c:	lg->device = NULL;
libvips/video/im_video_v4l1.c:	lg->capture_buffer = NULL;
libvips/video/im_video_v4l1.c:	lg->capture_size = 0;
libvips/video/im_video_v4l1.c:	lg->fd = -1;
libvips/video/im_video_v4l1.c:	lg->c_channel = -1;
libvips/video/im_video_v4l1.c:	lg->c_width = -1;
libvips/video/im_video_v4l1.c:	lg->c_height = -1;
libvips/video/im_video_v4l1.c:	lg->c_ngrabs = 1;
libvips/video/im_video_v4l1.c:	SETSTR( lg->device, device );
libvips/video/im_video_v4l1.c:        if( !lg->device || (lg->fd = open( lg->device, O_RDWR )) == -1 ) {
libvips/video/im_video_v4l1.c:			lg->device );
libvips/video/im_video_v4l1.c:        if( lgrab_ioctl( lg, VIDIOCGCAP, &lg->capability ) ) {
libvips/video/im_video_v4l1.c:        if( !(lg->capability.type & VID_TYPE_CAPTURE) ) {
libvips/video/im_video_v4l1.c:        for( i = 0; i < IM_MIN( lg->capability.channels, IM_MAXCHANNELS ); 
libvips/video/im_video_v4l1.c:                lg->channel[i].channel = i;
libvips/video/im_video_v4l1.c:                if( lgrab_ioctl( lg, VIDIOCGCHAN, &lg->channel[i] ) ) {
libvips/video/im_video_v4l1.c:        if( lgrab_ioctl( lg, VIDIOCGWIN, &lg->window) ||
libvips/video/im_video_v4l1.c:		lgrab_ioctl( lg, VIDIOCGPICT, &lg->picture) ) {
libvips/video/im_video_v4l1.c:	lg->picture.depth = 24;
libvips/video/im_video_v4l1.c:	lg->picture.palette = VIDEO_PALETTE_RGB24;
libvips/video/im_video_v4l1.c:	if( lgrab_ioctl( lg, VIDIOCSPICT, &lg->picture ) ) {
libvips/video/im_video_v4l1.c:        printf( "capability->name = \"%s\"\n", capability->name );
libvips/video/im_video_v4l1.c:        printf( "capability->channels = %d\n", capability->channels );
libvips/video/im_video_v4l1.c:        printf( "capability->audios = %d\n", capability->audios );
libvips/video/im_video_v4l1.c:        printf( "capability->maxwidth = %d\n", capability->maxwidth );
libvips/video/im_video_v4l1.c:        printf( "capability->maxheight = %d\n", capability->maxheight );
libvips/video/im_video_v4l1.c:        printf( "capability->minwidth = %d\n", capability->maxwidth );
libvips/video/im_video_v4l1.c:        printf( "capability->minheight = %d\n", capability->maxheight );
libvips/video/im_video_v4l1.c:	printf( "capability->type = " );
libvips/video/im_video_v4l1.c:                capability->type );
libvips/video/im_video_v4l1.c:	printf( "channel->channel = %d\n", channel->channel );
libvips/video/im_video_v4l1.c:	printf( "channel->name = \"%s\"\n", channel->name );
libvips/video/im_video_v4l1.c:	printf( "channel->tuners = %d\n", channel->tuners );
libvips/video/im_video_v4l1.c:	printf( "channel->flags = " );
libvips/video/im_video_v4l1.c:		channel->flags );
libvips/video/im_video_v4l1.c:	printf( "channel->type = " );
libvips/video/im_video_v4l1.c:                channel->type );
libvips/video/im_video_v4l1.c:	printf( "channel->norm = %d\n", channel->norm );
libvips/video/im_video_v4l1.c:        printf( "picture->brightness = %d\n", picture->brightness );
libvips/video/im_video_v4l1.c:        printf( "picture->hue = %d\n", picture->hue );
libvips/video/im_video_v4l1.c:        printf( "picture->colour = %d\n", picture->colour );
libvips/video/im_video_v4l1.c:        printf( "picture->contrast = %d\n", picture->contrast );
libvips/video/im_video_v4l1.c:        printf( "picture->whiteness = %d\n", picture->whiteness );
libvips/video/im_video_v4l1.c:        printf( "picture->depth = %d\n", picture->depth );
libvips/video/im_video_v4l1.c:        printf( "picture->palette = " );
libvips/video/im_video_v4l1.c:                picture->palette );
libvips/video/im_video_v4l1.c:        printf( "lg->device = \"%s\"\n", lg->device );
libvips/video/im_video_v4l1.c:        printf( "lg->capture_buffer = %p\n",
libvips/video/im_video_v4l1.c:                lg->capture_buffer );
libvips/video/im_video_v4l1.c:        printf( "lg->capture_size = 0x%x\n",
libvips/video/im_video_v4l1.c:                (unsigned int) lg->capture_size );
libvips/video/im_video_v4l1.c:        printf( "lg->fd = %d\n", lg->fd );
libvips/video/im_video_v4l1.c:        printf( "lg->c_channel = %d\n", lg->c_channel );
libvips/video/im_video_v4l1.c:        printf( "lg->c_width = %d\n", lg->c_width );
libvips/video/im_video_v4l1.c:        printf( "lg->c_height = %d\n", lg->c_height );
libvips/video/im_video_v4l1.c:        printf( "lg->c_ngrabs = %d\n", lg->c_ngrabs );
libvips/video/im_video_v4l1.c:	lgrab_dump_capability( &lg->capability );
libvips/video/im_video_v4l1.c:        for( i = 0; i < lg->capability.channels; i++ ) 
libvips/video/im_video_v4l1.c:		lgrab_dump_channel( &lg->channel[i] );
libvips/video/im_video_v4l1.c:	lgrab_dump_picture( &lg->picture );
libvips/video/im_video_v4l1.c:        printf( "mbuf->size = 0x%x\n", (unsigned int) lg->mbuf.size );
libvips/video/im_video_v4l1.c:        printf( "mbuf->frames = %d\n", lg->mbuf.frames );
libvips/video/im_video_v4l1.c:        printf( "mbuf->offsets = " );
libvips/video/im_video_v4l1.c:	for( i = 0; i < lg->mbuf.frames; i++ )
libvips/video/im_video_v4l1.c:		printf( "0x%x ", (unsigned int) lg->mbuf.offsets[i] );
libvips/video/im_video_v4l1.c:	lg->c_width = width;
libvips/video/im_video_v4l1.c:	lg->c_height = height;
libvips/video/im_video_v4l1.c:	lg->window.clipcount = 0;
libvips/video/im_video_v4l1.c:	lg->window.flags = 0;
libvips/video/im_video_v4l1.c:	lg->window.x = 0;
libvips/video/im_video_v4l1.c:	lg->window.y = 0;
libvips/video/im_video_v4l1.c:	lg->window.width = width;
libvips/video/im_video_v4l1.c:	lg->window.height = height;
libvips/video/im_video_v4l1.c:	if( lgrab_ioctl( lg, VIDIOCSWIN, &lg->window ) )
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	if( lgrab_ioctl( lg, VIDIOCGMBUF, &lg->mbuf ) )
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	if( lg->capture_buffer ) {
libvips/video/im_video_v4l1.c:		munmap( lg->capture_buffer, lg->capture_size );
libvips/video/im_video_v4l1.c:		lg->capture_buffer = NULL;
libvips/video/im_video_v4l1.c:	lg->capture_size = lg->mbuf.size;
libvips/video/im_video_v4l1.c:	if( !(lg->capture_buffer = mmap( 0, lg->capture_size, 
libvips/video/im_video_v4l1.c:		PROT_READ | PROT_WRITE, MAP_SHARED, lg->fd, 0 )) ) {
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	if( channel < 0 || channel >= lg->capability.channels ) {
libvips/video/im_video_v4l1.c:			lg->capability.channels - 1 );
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	if( lgrab_ioctl( lg, VIDIOCSCHAN, &lg->channel[channel] ) )
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	lg->c_channel = channel;
libvips/video/im_video_v4l1.c:	lg->picture.brightness = IM_CLIP( 0, brightness, 65535 );
libvips/video/im_video_v4l1.c:	if( lgrab_ioctl( lg, VIDIOCSPICT, &lg->picture ) )
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	lg->picture.colour = IM_CLIP( 0, colour, 65535 );
libvips/video/im_video_v4l1.c:	if( lgrab_ioctl( lg, VIDIOCSPICT, &lg->picture ) )
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	lg->picture.contrast = IM_CLIP( 0, contrast, 65535 );
libvips/video/im_video_v4l1.c:	if( lgrab_ioctl( lg, VIDIOCSPICT, &lg->picture ) )
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	lg->picture.hue = IM_CLIP( 0, hue, 65535 );
libvips/video/im_video_v4l1.c:	if( lgrab_ioctl( lg, VIDIOCSPICT, &lg->picture ) )
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	lg->c_ngrabs = IM_CLIP( 1, ngrabs, 1000 );
libvips/video/im_video_v4l1.c:	lg->mmap.format = lg->picture.palette;
libvips/video/im_video_v4l1.c:	lg->mmap.frame = 0;
libvips/video/im_video_v4l1.c:	lg->mmap.width = lg->c_width;
libvips/video/im_video_v4l1.c:	lg->mmap.height = lg->c_height;
libvips/video/im_video_v4l1.c:	if( lgrab_ioctl( lg, VIDIOCMCAPTURE, &lg->mmap ) ||
libvips/video/im_video_v4l1.c:		lgrab_ioctl( lg, VIDIOCSYNC, &lg->mmap.frame ) )
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	if( lg->c_ngrabs == 1 ) {
libvips/video/im_video_v4l1.c:			return( -1 );
libvips/video/im_video_v4l1.c:		int npx = lg->c_width * lg->c_height * 3;
libvips/video/im_video_v4l1.c:			return( -1 );
libvips/video/im_video_v4l1.c:		for( i = 0; i < lg->c_ngrabs; i++ ) {
libvips/video/im_video_v4l1.c:				return( -1 );
libvips/video/im_video_v4l1.c:				acc[j] += (unsigned char) lg->capture_buffer[j];
libvips/video/im_video_v4l1.c:			int avg = (acc[j] + lg->c_ngrabs / 2) / lg->c_ngrabs;
libvips/video/im_video_v4l1.c:			lg->capture_buffer[j] = IM_CLIP( 0, avg, 255 );
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:        im_initdesc( im, lg->c_width, lg->c_height, 3,
libvips/video/im_video_v4l1.c:                return( -1 );
libvips/video/im_video_v4l1.c:                return( -1 );
libvips/video/im_video_v4l1.c:        for( y = 0; y < lg->c_height; y++ ) {
libvips/video/im_video_v4l1.c:                unsigned char *p = (unsigned char *) lg->capture_buffer + 
libvips/video/im_video_v4l1.c:		for( x = 0; x < lg->c_width; x++ ) {
libvips/video/im_video_v4l1.c:                        return( -1 );
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:		lg->capability.maxwidth, lg->capability.maxheight ) ||
libvips/video/im_video_v4l1.c:		return( -1 );
libvips/video/im_video_v4l1.c:	return( -1 );
libvips/video/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/video/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/video/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/video/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/video/Makefile.in:am__mv = mv -f
libvips/video/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/video/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/video/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/video/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/video/Makefile.in:	$(LDFLAGS) -o $@
libvips/video/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/video/Makefile.in:all: all-am
libvips/video/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/video/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/video/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/video/Makefile'; \
libvips/video/Makefile.in:	  $(AUTOMAKE) --gnu libvips/video/Makefile
libvips/video/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/video/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/video/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/video/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/video/Makefile.in:clean-noinstLTLIBRARIES:
libvips/video/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/video/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/video/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/video/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/video/Makefile.in:mostlyclean-compile:
libvips/video/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/video/Makefile.in:distclean-compile:
libvips/video/Makefile.in:	-rm -f *.tab.c
libvips/video/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/video/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/video/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/video/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/video/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/video/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/video/Makefile.in:mostlyclean-libtool:
libvips/video/Makefile.in:	-rm -f *.lo
libvips/video/Makefile.in:clean-libtool:
libvips/video/Makefile.in:	-rm -rf .libs _libs
libvips/video/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/video/Makefile.in:	mkid -fID $$unique
libvips/video/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/video/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/video/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/video/Makefile.in:	  if test $$# -gt 0; then \
libvips/video/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/video/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/video/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/video/Makefile.in:distclean-tags:
libvips/video/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/video/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/video/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/video/Makefile.in:			   sort -u` ;; \
libvips/video/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/video/Makefile.in:	  if test -d $$d/$$file; then \
libvips/video/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/video/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/video/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/video/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/video/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/video/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/video/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/video/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/video/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/video/Makefile.in:check-am: all-am
libvips/video/Makefile.in:check: check-am
libvips/video/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/video/Makefile.in:install: install-am
libvips/video/Makefile.in:install-exec: install-exec-am
libvips/video/Makefile.in:install-data: install-data-am
libvips/video/Makefile.in:uninstall: uninstall-am
libvips/video/Makefile.in:install-am: all-am
libvips/video/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/video/Makefile.in:installcheck: installcheck-am
libvips/video/Makefile.in:install-strip:
libvips/video/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/video/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/video/Makefile.in:mostlyclean-generic:
libvips/video/Makefile.in:clean-generic:
libvips/video/Makefile.in:distclean-generic:
libvips/video/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/video/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/video/Makefile.in:maintainer-clean-generic:
libvips/video/Makefile.in:clean: clean-am
libvips/video/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/video/Makefile.in:	mostlyclean-am
libvips/video/Makefile.in:distclean: distclean-am
libvips/video/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/video/Makefile.in:	-rm -f Makefile
libvips/video/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/video/Makefile.in:	distclean-tags
libvips/video/Makefile.in:dvi: dvi-am
libvips/video/Makefile.in:dvi-am:
libvips/video/Makefile.in:html: html-am
libvips/video/Makefile.in:html-am:
libvips/video/Makefile.in:info: info-am
libvips/video/Makefile.in:info-am:
libvips/video/Makefile.in:install-data-am:
libvips/video/Makefile.in:install-dvi: install-dvi-am
libvips/video/Makefile.in:install-dvi-am:
libvips/video/Makefile.in:install-exec-am:
libvips/video/Makefile.in:install-html: install-html-am
libvips/video/Makefile.in:install-html-am:
libvips/video/Makefile.in:install-info: install-info-am
libvips/video/Makefile.in:install-info-am:
libvips/video/Makefile.in:install-man:
libvips/video/Makefile.in:install-pdf: install-pdf-am
libvips/video/Makefile.in:install-pdf-am:
libvips/video/Makefile.in:install-ps: install-ps-am
libvips/video/Makefile.in:install-ps-am:
libvips/video/Makefile.in:installcheck-am:
libvips/video/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/video/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/video/Makefile.in:	-rm -f Makefile
libvips/video/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/video/Makefile.in:mostlyclean: mostlyclean-am
libvips/video/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/video/Makefile.in:	mostlyclean-libtool
libvips/video/Makefile.in:pdf: pdf-am
libvips/video/Makefile.in:pdf-am:
libvips/video/Makefile.in:ps: ps-am
libvips/video/Makefile.in:ps-am:
libvips/video/Makefile.in:uninstall-am:
libvips/video/Makefile.in:.MAKE: install-am install-strip
libvips/video/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/video/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/video/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/video/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/video/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/video/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/video/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/video/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/video/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/video/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/video/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/video/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/acquire/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/acquire/im_clamp.c: * @(#)	   - Compute clip(image - (black)) ie subtract black no negatives
libvips/acquire/im_clamp.c: * @(#) Returns 0 on success and -1 on error
libvips/acquire/im_clamp.c: * fiddle at your peril - nasty code
libvips/acquire/im_clamp.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/acquire/im_clamp.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/acquire/im_clamp.c:	return( -1 );
libvips/acquire/im_clamp.c:if( in->Bbits != 8 || 
libvips/acquire/im_clamp.c:	in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_UCHAR ) {
libvips/acquire/im_clamp.c:	return( -1 );
libvips/acquire/im_clamp.c:if(  black->Bbits != 8 || 
libvips/acquire/im_clamp.c:	black->Coding != IM_CODING_NONE || black->BandFmt != IM_BANDFMT_UCHAR ) { 
libvips/acquire/im_clamp.c:	return( -1 );
libvips/acquire/im_clamp.c:	return( -1 );
libvips/acquire/im_clamp.c:	return( -1 );
libvips/acquire/im_clamp.c:if( !(bline = (PEL *) im_malloc( out, black->Bands * hstep * in->Xsize )) )  
libvips/acquire/im_clamp.c:	return( -1 ); 
libvips/acquire/im_clamp.c:if( !(outbuf = (PEL *) im_malloc( out, out->Bands * out->Xsize )) )  
libvips/acquire/im_clamp.c:	return( -1 ); 
libvips/acquire/im_clamp.c:blacky = -1;
libvips/acquire/im_clamp.c:p = (PEL *) in->data;
libvips/acquire/im_clamp.c:for( y = 0; y < in->Ysize; y++ ) {
libvips/acquire/im_clamp.c:	/* calc corresponding black line - get new one if different */
libvips/acquire/im_clamp.c:	newblacky = (vstep * black->Ysize - in->Ysize + y)/vstep;
libvips/acquire/im_clamp.c:		blk = (PEL *) (black->data + 
libvips/acquire/im_clamp.c:			black->Xsize * black->Bands * blacky);
libvips/acquire/im_clamp.c:		for(bexp = bline, x = 0; x < black->Xsize; x++){
libvips/acquire/im_clamp.c:				for(q=blk, bnd = 0; bnd < in->Bands; bnd++)
libvips/acquire/im_clamp.c:		blk += black->Bands;
libvips/acquire/im_clamp.c:	for( x = 0; x < (out->Bands * out->Xsize); x++ ) {
libvips/acquire/im_clamp.c:		temp = ((int) *p++ - *bexp++);
libvips/acquire/im_clamp.c:		return( -1 );
libvips/acquire/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/acquire/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/acquire/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/acquire/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/acquire/Makefile.in:am__mv = mv -f
libvips/acquire/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/acquire/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/acquire/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/acquire/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/acquire/Makefile.in:	$(LDFLAGS) -o $@
libvips/acquire/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/acquire/Makefile.in:all: all-am
libvips/acquire/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/acquire/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/acquire/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/acquire/Makefile'; \
libvips/acquire/Makefile.in:	  $(AUTOMAKE) --gnu libvips/acquire/Makefile
libvips/acquire/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/acquire/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/acquire/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/acquire/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/acquire/Makefile.in:clean-noinstLTLIBRARIES:
libvips/acquire/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/acquire/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/acquire/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/acquire/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/acquire/Makefile.in:mostlyclean-compile:
libvips/acquire/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/acquire/Makefile.in:distclean-compile:
libvips/acquire/Makefile.in:	-rm -f *.tab.c
libvips/acquire/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/acquire/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/acquire/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/acquire/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/acquire/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/acquire/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/acquire/Makefile.in:mostlyclean-libtool:
libvips/acquire/Makefile.in:	-rm -f *.lo
libvips/acquire/Makefile.in:clean-libtool:
libvips/acquire/Makefile.in:	-rm -rf .libs _libs
libvips/acquire/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/acquire/Makefile.in:	mkid -fID $$unique
libvips/acquire/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/acquire/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/acquire/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/acquire/Makefile.in:	  if test $$# -gt 0; then \
libvips/acquire/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/acquire/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/acquire/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/acquire/Makefile.in:distclean-tags:
libvips/acquire/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/acquire/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/acquire/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/acquire/Makefile.in:			   sort -u` ;; \
libvips/acquire/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/acquire/Makefile.in:	  if test -d $$d/$$file; then \
libvips/acquire/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/acquire/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/acquire/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/acquire/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/acquire/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/acquire/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/acquire/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/acquire/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/acquire/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/acquire/Makefile.in:check-am: all-am
libvips/acquire/Makefile.in:check: check-am
libvips/acquire/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/acquire/Makefile.in:install: install-am
libvips/acquire/Makefile.in:install-exec: install-exec-am
libvips/acquire/Makefile.in:install-data: install-data-am
libvips/acquire/Makefile.in:uninstall: uninstall-am
libvips/acquire/Makefile.in:install-am: all-am
libvips/acquire/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/acquire/Makefile.in:installcheck: installcheck-am
libvips/acquire/Makefile.in:install-strip:
libvips/acquire/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/acquire/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/acquire/Makefile.in:mostlyclean-generic:
libvips/acquire/Makefile.in:clean-generic:
libvips/acquire/Makefile.in:distclean-generic:
libvips/acquire/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/acquire/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/acquire/Makefile.in:maintainer-clean-generic:
libvips/acquire/Makefile.in:clean: clean-am
libvips/acquire/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/acquire/Makefile.in:	mostlyclean-am
libvips/acquire/Makefile.in:distclean: distclean-am
libvips/acquire/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/acquire/Makefile.in:	-rm -f Makefile
libvips/acquire/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/acquire/Makefile.in:	distclean-tags
libvips/acquire/Makefile.in:dvi: dvi-am
libvips/acquire/Makefile.in:dvi-am:
libvips/acquire/Makefile.in:html: html-am
libvips/acquire/Makefile.in:html-am:
libvips/acquire/Makefile.in:info: info-am
libvips/acquire/Makefile.in:info-am:
libvips/acquire/Makefile.in:install-data-am:
libvips/acquire/Makefile.in:install-dvi: install-dvi-am
libvips/acquire/Makefile.in:install-dvi-am:
libvips/acquire/Makefile.in:install-exec-am:
libvips/acquire/Makefile.in:install-html: install-html-am
libvips/acquire/Makefile.in:install-html-am:
libvips/acquire/Makefile.in:install-info: install-info-am
libvips/acquire/Makefile.in:install-info-am:
libvips/acquire/Makefile.in:install-man:
libvips/acquire/Makefile.in:install-pdf: install-pdf-am
libvips/acquire/Makefile.in:install-pdf-am:
libvips/acquire/Makefile.in:install-ps: install-ps-am
libvips/acquire/Makefile.in:install-ps-am:
libvips/acquire/Makefile.in:installcheck-am:
libvips/acquire/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/acquire/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/acquire/Makefile.in:	-rm -f Makefile
libvips/acquire/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/acquire/Makefile.in:mostlyclean: mostlyclean-am
libvips/acquire/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/acquire/Makefile.in:	mostlyclean-libtool
libvips/acquire/Makefile.in:pdf: pdf-am
libvips/acquire/Makefile.in:pdf-am:
libvips/acquire/Makefile.in:ps: ps-am
libvips/acquire/Makefile.in:ps-am:
libvips/acquire/Makefile.in:uninstall-am:
libvips/acquire/Makefile.in:.MAKE: install-am install-strip
libvips/acquire/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/acquire/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/acquire/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/acquire/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/acquire/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/acquire/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/acquire/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/acquire/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/acquire/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/acquire/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/acquire/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/acquire/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/relational/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/relational/im_ifthenelse.c:/* im_ifthenelse.c --- use a condition image to join two images together
libvips/relational/im_ifthenelse.c: *	- partialed and ANSIfied
libvips/relational/im_ifthenelse.c: *	- return( 0 ) missing! oops
libvips/relational/im_ifthenelse.c: *	- now just evals left/right if all zero/all one
libvips/relational/im_ifthenelse.c: * 	- set THINSTRIP
libvips/relational/im_ifthenelse.c: * 	- gtkdoc comment
libvips/relational/im_ifthenelse.c: * 	- use im_check*()
libvips/relational/im_ifthenelse.c: * 	- allow many-band conditional and single-band a/b
libvips/relational/im_ifthenelse.c: * 	- allow a/b to differ in format and bands
libvips/relational/im_ifthenelse.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/relational/im_ifthenelse.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/relational/im_ifthenelse.c:	Rect *r = &or->valid;
libvips/relational/im_ifthenelse.c:	int le = r->left;
libvips/relational/im_ifthenelse.c:	int to = r->top;
libvips/relational/im_ifthenelse.c:	IMAGE *c = ir[0]->im;
libvips/relational/im_ifthenelse.c:	IMAGE *a = ir[1]->im;
libvips/relational/im_ifthenelse.c:	if( c->Bands == 1 ) {
libvips/relational/im_ifthenelse.c:		/* Copying PEL-sized units with a one-band conditional.
libvips/relational/im_ifthenelse.c:		width = r->width;
libvips/relational/im_ifthenelse.c:		/* Copying ELEMENT sized-units with an n-band conditional.
libvips/relational/im_ifthenelse.c:		width = r->width * a->Bands;
libvips/relational/im_ifthenelse.c:		return( -1 );
libvips/relational/im_ifthenelse.c:	/* Is the conditional all zero or all non-zero? We can avoid asking
libvips/relational/im_ifthenelse.c:		/* All non-zero. Point or at the then image.
libvips/relational/im_ifthenelse.c:			im_region_region( or, ir[1], r, r->left, r->top ) )
libvips/relational/im_ifthenelse.c:			return( -1 );
libvips/relational/im_ifthenelse.c:			im_region_region( or, ir[2], r, r->left, r->top ) )
libvips/relational/im_ifthenelse.c:			return( -1 );
libvips/relational/im_ifthenelse.c:			return( -1 );
libvips/relational/im_ifthenelse.c:                return( -1 );
libvips/relational/im_ifthenelse.c:		return( -1 );
libvips/relational/im_ifthenelse.c: * image @b. Non-zero means @a, 0 means @b.
libvips/relational/im_ifthenelse.c: * the non-1-band images. Single band images are then effectively copied to 
libvips/relational/im_ifthenelse.c: * make n-band images.
libvips/relational/im_ifthenelse.c: * Returns: 0 on success, -1 on error
libvips/relational/im_ifthenelse.c:		return( -1 );
libvips/relational/im_ifthenelse.c:	 * special-case this in code above ^^^ for speed.
libvips/relational/im_ifthenelse.c:		return( -1 );
libvips/relational/im_ifthenelse.c:		return( -1 );
libvips/relational/im_blend.c:/* im_blend.c --- blend images with a condition image
libvips/relational/im_blend.c: *	- from im_ifthenelse()
libvips/relational/im_blend.c: *	- oops, broken for some combinations of band differences (thanks Joe)
libvips/relational/im_blend.c: * 	- gtkdoc comments
libvips/relational/im_blend.c: * 	- use im_check*()
libvips/relational/im_blend.c: * 	- allow many-band conditional and single-band a/b
libvips/relational/im_blend.c: * 	- allow a/b to differ in format and bands
libvips/relational/im_blend.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/relational/im_blend.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/relational/im_blend.c:			q[z] = (v * a[z] + (255 - v) * b[z] + 128) / 255; \
libvips/relational/im_blend.c:			q[z] = (v * a[z] + (255 - v) * b[z] + 128) / 255; \
libvips/relational/im_blend.c:			q[z] = v * a[z] + (1.0 - v) * b[z]; \
libvips/relational/im_blend.c:			q[z] = v * a[z] + (1.0 - v) * b[z]; \
libvips/relational/im_blend.c:			q[z] = v * a[z] + (1.0 - v) * b[z]; \
libvips/relational/im_blend.c:			q[2 * z] = v * a[2 * z] + (1.0 - v) * b[2 * z]; \
libvips/relational/im_blend.c:				(1.0 - v) * b[2 * z + 1]; \
libvips/relational/im_blend.c:/* Blend with a 1-band conditional image.
libvips/relational/im_blend.c:	const int bands = im->Bands;
libvips/relational/im_blend.c:	switch( im->BandFmt ) {
libvips/relational/im_blend.c:	const int bands = im->Bands;
libvips/relational/im_blend.c:	switch( im->BandFmt ) {
libvips/relational/im_blend.c:	Rect *r = &or->valid;
libvips/relational/im_blend.c:	int le = r->left;
libvips/relational/im_blend.c:	int to = r->top;
libvips/relational/im_blend.c:	IMAGE *c = ir[0]->im;
libvips/relational/im_blend.c:	IMAGE *a = ir[1]->im;
libvips/relational/im_blend.c:	int c_elements = r->width * c->Bands;
libvips/relational/im_blend.c:		return( -1 );
libvips/relational/im_blend.c:	/* Is the conditional all zero or all non-zero? We can avoid asking
libvips/relational/im_blend.c:			im_region_region( or, ir[1], r, r->left, r->top ) )
libvips/relational/im_blend.c:			return( -1 );
libvips/relational/im_blend.c:			im_region_region( or, ir[2], r, r->left, r->top ) )
libvips/relational/im_blend.c:			return( -1 );
libvips/relational/im_blend.c:			return( -1 );
libvips/relational/im_blend.c:			if( c->Bands == 1 ) 
libvips/relational/im_blend.c:				blend1_buffer( q, cp, ap, bp, r->width, a );
libvips/relational/im_blend.c:				blendn_buffer( q, cp, ap, bp, r->width, a );
libvips/relational/im_blend.c:                return( -1 );
libvips/relational/im_blend.c:		return( -1 );
libvips/relational/im_blend.c:	out->Bands = IM_MAX( c->Bands, a->Bands );
libvips/relational/im_blend.c:		return( -1 );
libvips/relational/im_blend.c:		return( -1 );
libvips/relational/im_blend.c: * the non-1-band images. Single band images are then effectively copied to 
libvips/relational/im_blend.c: * make n-band images.
libvips/relational/im_blend.c: * Returns: 0 on success, -1 on error
libvips/relational/im_blend.c:	const int repack = a->Coding == IM_CODING_LABQ && 
libvips/relational/im_blend.c:		b->Coding == IM_CODING_LABQ;
libvips/relational/im_blend.c:		return( -1 );
libvips/relational/im_blend.c:	if( a->Coding == IM_CODING_LABQ ) {
libvips/relational/im_blend.c:			return( -1 );
libvips/relational/im_blend.c:	if( b->Coding == IM_CODING_LABQ ) {
libvips/relational/im_blend.c:			return( -1 );
libvips/relational/im_blend.c:		return( -1 );
libvips/relational/im_blend.c:		return( -1 );
libvips/relational/im_blend.c:			return( -1 );
libvips/relational/im_blend.c:			return( -1 );
libvips/relational/relational_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/relational/relational_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/relational/relational_dispatch.c: * @see_also: <link linkend="libvips-arithmetic">arithmetic</link>
libvips/relational/relational_dispatch.c: * must have one band. In this case, an n-band image is formed from the 
libvips/relational/relational_dispatch.c: * one-band image by joining n copies of the one-band image together and then
libvips/relational/relational_dispatch.c: * the two n-band images are operated upon.
libvips/relational/relational_dispatch.c: * im_equal_vec(), you can mix single-element arrays or single-band images
libvips/relational/relational_dispatch.c:	return( im_equal_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/relational/relational_dispatch.c:	return( im_notequal_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/relational/relational_dispatch.c:	return( im_less_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/relational/relational_dispatch.c:	return( im_more_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/relational/relational_dispatch.c:	return( im_moreeq_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/relational/relational_dispatch.c:	return( im_lesseq_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/relational/relational_dispatch.c:/* If-then-else args.
libvips/relational/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/relational/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/relational/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/relational/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/relational/Makefile.in:am__mv = mv -f
libvips/relational/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/relational/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/relational/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/relational/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/relational/Makefile.in:	$(LDFLAGS) -o $@
libvips/relational/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/relational/Makefile.in:all: all-am
libvips/relational/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/relational/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/relational/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/relational/Makefile'; \
libvips/relational/Makefile.in:	  $(AUTOMAKE) --gnu libvips/relational/Makefile
libvips/relational/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/relational/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/relational/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/relational/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/relational/Makefile.in:clean-noinstLTLIBRARIES:
libvips/relational/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/relational/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/relational/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/relational/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/relational/Makefile.in:mostlyclean-compile:
libvips/relational/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/relational/Makefile.in:distclean-compile:
libvips/relational/Makefile.in:	-rm -f *.tab.c
libvips/relational/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/relational/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/relational/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/relational/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/relational/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/relational/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/relational/Makefile.in:mostlyclean-libtool:
libvips/relational/Makefile.in:	-rm -f *.lo
libvips/relational/Makefile.in:clean-libtool:
libvips/relational/Makefile.in:	-rm -rf .libs _libs
libvips/relational/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/relational/Makefile.in:	mkid -fID $$unique
libvips/relational/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/relational/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/relational/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/relational/Makefile.in:	  if test $$# -gt 0; then \
libvips/relational/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/relational/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/relational/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/relational/Makefile.in:distclean-tags:
libvips/relational/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/relational/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/relational/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/relational/Makefile.in:			   sort -u` ;; \
libvips/relational/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/relational/Makefile.in:	  if test -d $$d/$$file; then \
libvips/relational/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/relational/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/relational/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/relational/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/relational/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/relational/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/relational/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/relational/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/relational/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/relational/Makefile.in:check-am: all-am
libvips/relational/Makefile.in:check: check-am
libvips/relational/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/relational/Makefile.in:install: install-am
libvips/relational/Makefile.in:install-exec: install-exec-am
libvips/relational/Makefile.in:install-data: install-data-am
libvips/relational/Makefile.in:uninstall: uninstall-am
libvips/relational/Makefile.in:install-am: all-am
libvips/relational/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/relational/Makefile.in:installcheck: installcheck-am
libvips/relational/Makefile.in:install-strip:
libvips/relational/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/relational/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/relational/Makefile.in:mostlyclean-generic:
libvips/relational/Makefile.in:clean-generic:
libvips/relational/Makefile.in:distclean-generic:
libvips/relational/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/relational/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/relational/Makefile.in:maintainer-clean-generic:
libvips/relational/Makefile.in:clean: clean-am
libvips/relational/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/relational/Makefile.in:	mostlyclean-am
libvips/relational/Makefile.in:distclean: distclean-am
libvips/relational/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/relational/Makefile.in:	-rm -f Makefile
libvips/relational/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/relational/Makefile.in:	distclean-tags
libvips/relational/Makefile.in:dvi: dvi-am
libvips/relational/Makefile.in:dvi-am:
libvips/relational/Makefile.in:html: html-am
libvips/relational/Makefile.in:html-am:
libvips/relational/Makefile.in:info: info-am
libvips/relational/Makefile.in:info-am:
libvips/relational/Makefile.in:install-data-am:
libvips/relational/Makefile.in:install-dvi: install-dvi-am
libvips/relational/Makefile.in:install-dvi-am:
libvips/relational/Makefile.in:install-exec-am:
libvips/relational/Makefile.in:install-html: install-html-am
libvips/relational/Makefile.in:install-html-am:
libvips/relational/Makefile.in:install-info: install-info-am
libvips/relational/Makefile.in:install-info-am:
libvips/relational/Makefile.in:install-man:
libvips/relational/Makefile.in:install-pdf: install-pdf-am
libvips/relational/Makefile.in:install-pdf-am:
libvips/relational/Makefile.in:install-ps: install-ps-am
libvips/relational/Makefile.in:install-ps-am:
libvips/relational/Makefile.in:installcheck-am:
libvips/relational/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/relational/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/relational/Makefile.in:	-rm -f Makefile
libvips/relational/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/relational/Makefile.in:mostlyclean: mostlyclean-am
libvips/relational/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/relational/Makefile.in:	mostlyclean-libtool
libvips/relational/Makefile.in:pdf: pdf-am
libvips/relational/Makefile.in:pdf-am:
libvips/relational/Makefile.in:ps: ps-am
libvips/relational/Makefile.in:ps-am:
libvips/relational/Makefile.in:uninstall-am:
libvips/relational/Makefile.in:.MAKE: install-am install-strip
libvips/relational/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/relational/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/relational/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/relational/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/relational/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/relational/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/relational/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/relational/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/relational/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/relational/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/relational/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/relational/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/relational/relational.c:/* relational.c --- various relational operation
libvips/relational/relational.c: *	- >,<,>=,<= tests now as (double) to prevent compiler warnings. Should
libvips/relational/relational.c: * 	- partialized
libvips/relational/relational.c: * 	- updated
libvips/relational/relational.c: *	- oops! bug with doubles fixed
libvips/relational/relational.c: *	- vector versions added ... im_equal_vec(), im_lesseq_vec() etc
libvips/relational/relational.c: * 	- small tidies
libvips/relational/relational.c: *	- should be a bit faster, lots of *q++ changed to q[x]
libvips/relational/relational.c: *	- reworked to remove nested #defines: a bit slower, but much smaller
libvips/relational/relational.c: *	- all except _vec forms now work on complex
libvips/relational/relational.c: *	- oops, relational_format was broken for some combinations
libvips/relational/relational.c: * 	- gtkdoc
libvips/relational/relational.c: * 	- use new im__arith_binary*() functions
libvips/relational/relational.c: * 	- more meta-programming
libvips/relational/relational.c: * 	- oops, moreconst and moreeqconst were the same
libvips/relational/relational.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/relational/relational.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/relational/relational.c:	const int ne = n * im->Bands; \
libvips/relational/relational.c:        switch( im->BandFmt ) { \
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c:	const int ne = n * im->Bands; \
libvips/relational/relational.c:        switch( im->BandFmt ) { \
libvips/relational/relational.c:	const int bands = im->Bands; \
libvips/relational/relational.c:        switch( im->BandFmt ) { \
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c:		in, out, n, c, in->BandFmt,
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c:		in, out, n, c, in->BandFmt,
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c:		in, out, n, c, in->BandFmt,
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c:		in, out, n, c, in->BandFmt,
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c:		in, out, n, c, in->BandFmt,
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c:		in, out, n, c, in->BandFmt,
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/relational/relational.c: * Returns: 0 on success, -1 on error
libvips/boolean/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/boolean/boolean.c:/* boolean.c --- various bit operations
libvips/boolean/boolean.c: * 	- ANSIfied
libvips/boolean/boolean.c: * 	- adapted to partials with im_wrap...
libvips/boolean/boolean.c: *	- added check1ary(), check2ary()
libvips/boolean/boolean.c: *	- new im_wrapmany
libvips/boolean/boolean.c: *	- added im_shiftleft() and im_shiftright()
libvips/boolean/boolean.c: *	- added _vec forms
libvips/boolean/boolean.c: * 	- removed *p++ stuff
libvips/boolean/boolean.c: *	- and/or/eor now do all int types
libvips/boolean/boolean.c: *	- renamed im_and() etc. as im_andimage() to remove breakage in the C++
libvips/boolean/boolean.c: *	- now cast float/complex args to int
libvips/boolean/boolean.c: * 	- use new im__cast_and__call()
libvips/boolean/boolean.c: * 	- therefore now supports 1-band $op n-band 
libvips/boolean/boolean.c: * 	- moved to im__arith_binary*()
libvips/boolean/boolean.c: * 	- renamed im_eor_vec() as im_eorimage_vec() for C++ sanity
libvips/boolean/boolean.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/boolean/boolean.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/boolean/boolean.c:	const int ne = n * im->Bands * \
libvips/boolean/boolean.c:		(vips_bandfmt_iscomplex( im->BandFmt ) ? 2 : 1); \
libvips/boolean/boolean.c:        switch( im->BandFmt ) { \
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c:	const int ne = n * im->Bands * \
libvips/boolean/boolean.c:		(vips_bandfmt_iscomplex( im->BandFmt ) ? 2 : 1); \
libvips/boolean/boolean.c:        switch( im->BandFmt ) { \
libvips/boolean/boolean.c:	const int bands = im->Bands; \
libvips/boolean/boolean.c:        switch( im->BandFmt ) { \
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c:		in, out, n, c, in->BandFmt,
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c:		in, out, n, c, in->BandFmt,
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c: * This operation calculates @in ^ @c (bitwise exclusive-or of image pixels 
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c:		in, out, n, c, in->BandFmt,
libvips/boolean/boolean.c: * This operation calculates @in ^ @c (bitwise exclusive-or of image pixels 
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c: * This operation calculates @in << @c (left-shift by @c bits
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c:		in, out, n, c, in->BandFmt,
libvips/boolean/boolean.c: * This operation calculates @in << @n (left-shift by @n bits)
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c: * This operation calculates @in << @c (right-shift by @c bits
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/boolean.c:		in, out, n, c, in->BandFmt,
libvips/boolean/boolean.c: * This operation calculates @in >> @n (right-shift by @n bits)
libvips/boolean/boolean.c: * Returns: 0 on success, -1 on error
libvips/boolean/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/boolean/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/boolean/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/boolean/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/boolean/Makefile.in:am__mv = mv -f
libvips/boolean/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/boolean/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/boolean/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/boolean/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/boolean/Makefile.in:	$(LDFLAGS) -o $@
libvips/boolean/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/boolean/Makefile.in:all: all-am
libvips/boolean/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/boolean/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/boolean/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/boolean/Makefile'; \
libvips/boolean/Makefile.in:	  $(AUTOMAKE) --gnu libvips/boolean/Makefile
libvips/boolean/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/boolean/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/boolean/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/boolean/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/boolean/Makefile.in:clean-noinstLTLIBRARIES:
libvips/boolean/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/boolean/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/boolean/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/boolean/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/boolean/Makefile.in:mostlyclean-compile:
libvips/boolean/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/boolean/Makefile.in:distclean-compile:
libvips/boolean/Makefile.in:	-rm -f *.tab.c
libvips/boolean/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/boolean/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/boolean/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/boolean/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/boolean/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/boolean/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/boolean/Makefile.in:mostlyclean-libtool:
libvips/boolean/Makefile.in:	-rm -f *.lo
libvips/boolean/Makefile.in:clean-libtool:
libvips/boolean/Makefile.in:	-rm -rf .libs _libs
libvips/boolean/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/boolean/Makefile.in:	mkid -fID $$unique
libvips/boolean/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/boolean/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/boolean/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/boolean/Makefile.in:	  if test $$# -gt 0; then \
libvips/boolean/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/boolean/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/boolean/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/boolean/Makefile.in:distclean-tags:
libvips/boolean/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/boolean/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/boolean/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/boolean/Makefile.in:			   sort -u` ;; \
libvips/boolean/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/boolean/Makefile.in:	  if test -d $$d/$$file; then \
libvips/boolean/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/boolean/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/boolean/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/boolean/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/boolean/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/boolean/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/boolean/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/boolean/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/boolean/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/boolean/Makefile.in:check-am: all-am
libvips/boolean/Makefile.in:check: check-am
libvips/boolean/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/boolean/Makefile.in:install: install-am
libvips/boolean/Makefile.in:install-exec: install-exec-am
libvips/boolean/Makefile.in:install-data: install-data-am
libvips/boolean/Makefile.in:uninstall: uninstall-am
libvips/boolean/Makefile.in:install-am: all-am
libvips/boolean/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/boolean/Makefile.in:installcheck: installcheck-am
libvips/boolean/Makefile.in:install-strip:
libvips/boolean/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/boolean/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/boolean/Makefile.in:mostlyclean-generic:
libvips/boolean/Makefile.in:clean-generic:
libvips/boolean/Makefile.in:distclean-generic:
libvips/boolean/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/boolean/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/boolean/Makefile.in:maintainer-clean-generic:
libvips/boolean/Makefile.in:clean: clean-am
libvips/boolean/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/boolean/Makefile.in:	mostlyclean-am
libvips/boolean/Makefile.in:distclean: distclean-am
libvips/boolean/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/boolean/Makefile.in:	-rm -f Makefile
libvips/boolean/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/boolean/Makefile.in:	distclean-tags
libvips/boolean/Makefile.in:dvi: dvi-am
libvips/boolean/Makefile.in:dvi-am:
libvips/boolean/Makefile.in:html: html-am
libvips/boolean/Makefile.in:html-am:
libvips/boolean/Makefile.in:info: info-am
libvips/boolean/Makefile.in:info-am:
libvips/boolean/Makefile.in:install-data-am:
libvips/boolean/Makefile.in:install-dvi: install-dvi-am
libvips/boolean/Makefile.in:install-dvi-am:
libvips/boolean/Makefile.in:install-exec-am:
libvips/boolean/Makefile.in:install-html: install-html-am
libvips/boolean/Makefile.in:install-html-am:
libvips/boolean/Makefile.in:install-info: install-info-am
libvips/boolean/Makefile.in:install-info-am:
libvips/boolean/Makefile.in:install-man:
libvips/boolean/Makefile.in:install-pdf: install-pdf-am
libvips/boolean/Makefile.in:install-pdf-am:
libvips/boolean/Makefile.in:install-ps: install-ps-am
libvips/boolean/Makefile.in:install-ps-am:
libvips/boolean/Makefile.in:installcheck-am:
libvips/boolean/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/boolean/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/boolean/Makefile.in:	-rm -f Makefile
libvips/boolean/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/boolean/Makefile.in:mostlyclean: mostlyclean-am
libvips/boolean/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/boolean/Makefile.in:	mostlyclean-libtool
libvips/boolean/Makefile.in:pdf: pdf-am
libvips/boolean/Makefile.in:pdf-am:
libvips/boolean/Makefile.in:ps: ps-am
libvips/boolean/Makefile.in:ps-am:
libvips/boolean/Makefile.in:uninstall-am:
libvips/boolean/Makefile.in:.MAKE: install-am install-strip
libvips/boolean/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/boolean/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/boolean/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/boolean/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/boolean/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/boolean/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/boolean/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/boolean/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/boolean/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/boolean/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/boolean/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/boolean/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/boolean/bool_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/boolean/bool_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/boolean/bool_dispatch.c: * @see_also: <link linkend="libvips-arithmetic">arithmetic</link>
libvips/boolean/bool_dispatch.c: * These operations perform boolean operations, such as bitwise-and, on
libvips/boolean/bool_dispatch.c: * must have one band. In this case, an n-band image is formed from the 
libvips/boolean/bool_dispatch.c: * one-band image by joining n copies of the one-band image together and then
libvips/boolean/bool_dispatch.c: * the two n-band images are operated upon.
libvips/boolean/bool_dispatch.c: * im_andimage_vec(), you can mix single-element arrays or single-band images
libvips/boolean/bool_dispatch.c:	return( im_andimage_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/boolean/bool_dispatch.c:	return( im_orimage_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/boolean/bool_dispatch.c:	return( im_eorimage_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/boolean/bool_dispatch.c:	return( im_shiftleft_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/boolean/bool_dispatch.c:	return( im_shiftright_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/iofuncs/sinkmemory.c: * 	- from vips_sink()
libvips/iofuncs/sinkmemory.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/sinkmemory.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/sinkmemory.c:/* Per-call state.
libvips/iofuncs/sinkmemory.c:	IM_FREEF( im_region_free, sink->all );
libvips/iofuncs/sinkmemory.c:	sink->im = im; 
libvips/iofuncs/sinkmemory.c:	sink->x = 0;
libvips/iofuncs/sinkmemory.c:	sink->y = 0;
libvips/iofuncs/sinkmemory.c:	all.width = im->Xsize;
libvips/iofuncs/sinkmemory.c:	all.height = im->Ysize;
libvips/iofuncs/sinkmemory.c:	if( !(sink->all = im_region_create( im )) ||
libvips/iofuncs/sinkmemory.c:		im_region_image( sink->all, &all ) ) {
libvips/iofuncs/sinkmemory.c:		return( -1 );
libvips/iofuncs/sinkmemory.c:		&sink->tile_width, &sink->tile_height, &sink->nlines );
libvips/iofuncs/sinkmemory.c:	if( sink->x >= sink->im->Xsize ) {
libvips/iofuncs/sinkmemory.c:		sink->x = 0;
libvips/iofuncs/sinkmemory.c:		sink->y += sink->tile_height;
libvips/iofuncs/sinkmemory.c:		if( sink->y >= sink->im->Ysize ) {
libvips/iofuncs/sinkmemory.c:	image.width = sink->im->Xsize;
libvips/iofuncs/sinkmemory.c:	image.height = sink->im->Ysize;
libvips/iofuncs/sinkmemory.c:	tile.left = sink->x;
libvips/iofuncs/sinkmemory.c:	tile.top = sink->y;
libvips/iofuncs/sinkmemory.c:	tile.width = sink->tile_width;
libvips/iofuncs/sinkmemory.c:	tile.height = sink->tile_height;
libvips/iofuncs/sinkmemory.c:	im_rect_intersectrect( &image, &tile, &state->pos );
libvips/iofuncs/sinkmemory.c:	sink->x += sink->tile_width;
libvips/iofuncs/sinkmemory.c:	if( im_prepare_to( state->reg, sink->all, 
libvips/iofuncs/sinkmemory.c:		&state->pos, state->pos.left, state->pos.top ) )
libvips/iofuncs/sinkmemory.c:		return( -1 );
libvips/iofuncs/sinkmemory.c:		sink->tile_width, sink->tile_height );
libvips/iofuncs/sinkmemory.c:	if( im__handle_eval( sink->im, 
libvips/iofuncs/sinkmemory.c:		sink->tile_width, sink->tile_height ) )
libvips/iofuncs/sinkmemory.c:		return( -1 );
libvips/iofuncs/sinkmemory.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/sinkmemory.c:	im->Bbits = im_bits_of_fmt( im->BandFmt );
libvips/iofuncs/sinkmemory.c:		return( -1 );
libvips/iofuncs/sinkmemory.c:		return( -1 );
libvips/iofuncs/sink.c: * 	- from im_iterate(), reworked for threadpool
libvips/iofuncs/sink.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/sink.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/sink.c:/* Per-call state.
libvips/iofuncs/sink.c:/* Our per-thread state.
libvips/iofuncs/sink.c:	if( state->seq && sink->stop ) {
libvips/iofuncs/sink.c:		if( sink->stop( state->seq, sink->a, sink->b ) ) {
libvips/iofuncs/sink.c:				sink->im->filename );
libvips/iofuncs/sink.c:			return( -1 );
libvips/iofuncs/sink.c:		state->seq = NULL;
libvips/iofuncs/sink.c:	Sink *sink = (Sink *) ((VipsThreadState *) state)->a;
libvips/iofuncs/sink.c:	IM_FREEF( im_region_free, state->reg );
libvips/iofuncs/sink.c:	G_OBJECT_CLASS( sink_thread_state_parent_class )->dispose( gobject );
libvips/iofuncs/sink.c:	if( !state->seq && sink->start ) {
libvips/iofuncs/sink.c:                state->seq = sink->start( sink->t, sink->a, sink->b );
libvips/iofuncs/sink.c:		if( !state->seq ) {
libvips/iofuncs/sink.c:				sink->im->filename );
libvips/iofuncs/sink.c:			return( -1 );
libvips/iofuncs/sink.c:	Sink *sink = (Sink *) ((VipsThreadState *) state)->a;
libvips/iofuncs/sink.c:	if( !(state->reg = im_region_create( sink->t )) ||
libvips/iofuncs/sink.c:		return( -1 );
libvips/iofuncs/sink.c:		sink_thread_state_parent_class )->build( object ) );
libvips/iofuncs/sink.c:	gobject_class->dispose = sink_thread_state_dispose;
libvips/iofuncs/sink.c:	object_class->build = sink_thread_state_build;
libvips/iofuncs/sink.c:	object_class->nickname = "sinkthreadstate";
libvips/iofuncs/sink.c:	object_class->description = _( "per-thread state for sink" );
libvips/iofuncs/sink.c:	state->seq = NULL;
libvips/iofuncs/sink.c:	state->reg = NULL;
libvips/iofuncs/sink.c:	IM_FREEF( im_close, sink->t );
libvips/iofuncs/sink.c:	sink->im = im; 
libvips/iofuncs/sink.c:	sink->t = NULL;
libvips/iofuncs/sink.c:	sink->x = 0;
libvips/iofuncs/sink.c:	sink->y = 0;
libvips/iofuncs/sink.c:	sink->start = start;
libvips/iofuncs/sink.c:	sink->generate = generate;
libvips/iofuncs/sink.c:	sink->stop = stop;
libvips/iofuncs/sink.c:	sink->a = a;
libvips/iofuncs/sink.c:	sink->b = b;
libvips/iofuncs/sink.c:	if( !(sink->t = im_open( "iterate", "p" )) ||
libvips/iofuncs/sink.c:		im_copy( sink->im, sink->t ) ) {
libvips/iofuncs/sink.c:		return( -1 );
libvips/iofuncs/sink.c:		&sink->tile_width, &sink->tile_height, &sink->nlines );
libvips/iofuncs/sink.c:	if( sink->x >= sink->im->Xsize ) {
libvips/iofuncs/sink.c:		sink->x = 0;
libvips/iofuncs/sink.c:		sink->y += sink->tile_height;
libvips/iofuncs/sink.c:		if( sink->y >= sink->im->Ysize ) {
libvips/iofuncs/sink.c:	image.width = sink->im->Xsize;
libvips/iofuncs/sink.c:	image.height = sink->im->Ysize;
libvips/iofuncs/sink.c:	tile.left = sink->x;
libvips/iofuncs/sink.c:	tile.top = sink->y;
libvips/iofuncs/sink.c:	tile.width = sink->tile_width;
libvips/iofuncs/sink.c:	tile.height = sink->tile_height;
libvips/iofuncs/sink.c:	im_rect_intersectrect( &image, &tile, &state->pos );
libvips/iofuncs/sink.c:	sink->x += sink->tile_width;
libvips/iofuncs/sink.c:	if( im_prepare( sstate->reg, &state->pos ) ||
libvips/iofuncs/sink.c:		sink->generate( sstate->reg, sstate->seq, sink->a, sink->b ) ) 
libvips/iofuncs/sink.c:		return( -1 );
libvips/iofuncs/sink.c:	if( im__handle_eval( sink->im, 
libvips/iofuncs/sink.c:		sink->tile_width, sink->tile_height ) )
libvips/iofuncs/sink.c:		return( -1 );
libvips/iofuncs/sink.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/sink.c:	im->Bbits = im_bits_of_fmt( im->BandFmt );
libvips/iofuncs/sink.c:		return( -1 );
libvips/iofuncs/sink.c:		return( -1 );
libvips/iofuncs/sink.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/sink.c:	return( vips_sink_tile( im, -1, -1, start, generate, stop, a, b ) );
libvips/iofuncs/region.c: *	- adapted for partial v2
libvips/iofuncs/region.c: *	- ANSIfied
libvips/iofuncs/region.c: *	- start & stop can now be NULL for no-op
libvips/iofuncs/region.c: *      - threads v2.0 added
libvips/iofuncs/region.c: *	- im_region_region() args changed
libvips/iofuncs/region.c: *	- im_region_local() did not always reset the data pointer
libvips/iofuncs/region.c: *	- init a, b, c also now, to help rtc avoid spurious checks
libvips/iofuncs/region.c: *	- im_region_free() now frees immediately
libvips/iofuncs/region.c: *	- new mmap() window regions
libvips/iofuncs/region.c: *	- fix for mmap a local region
libvips/iofuncs/region.c: *	- shrink local region memory if required much-greater-than allocated
libvips/iofuncs/region.c: *	- im_region_region() allows Bands and BandFmt to differ, provided
libvips/iofuncs/region.c: * 	- switch to im_window_t for mmap window stuff
libvips/iofuncs/region.c: * 	- switch to im_buffer_t for local mem buffer stuff
libvips/iofuncs/region.c: * 	- im_region_image() only sets r, not whole image
libvips/iofuncs/region.c: * 	- gah, im_region_image() could still break (thanks Mikkel)
libvips/iofuncs/region.c: * 	- added im_region_print()
libvips/iofuncs/region.c: * 	- gtkdoc comments
libvips/iofuncs/region.c: * 	- move invalid stuff to region
libvips/iofuncs/region.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/region.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/region.c: * @see_also: <link linkend="libvips-image">image</link>, 
libvips/iofuncs/region.c: * <link linkend="libvips-generate">generate</link>
libvips/iofuncs/region.c: * A region can be a memory buffer, part of a memory-mapped file, part of some
libvips/iofuncs/region.c: * they can reference private per-thread caches. VIPS sanity-checks region
libvips/iofuncs/region.c: * need to be within the #Rect (@R->valid).
libvips/iofuncs/region.c: * This macro returns a pointer to the top-left pixel in the #REGION, that is,
libvips/iofuncs/region.c: * the pixel at (@R->valid.left, @R->valid.top).
libvips/iofuncs/region.c: * Returns: The address of the top-left pixel in the region.
libvips/iofuncs/region.c:	IMAGE *im = reg->im;
libvips/iofuncs/region.c:        if( !reg->seq && im->start ) {
libvips/iofuncs/region.c:                g_mutex_lock( im->sslock );
libvips/iofuncs/region.c:                reg->seq = im->start( im, im->client1, im->client2 );
libvips/iofuncs/region.c:                g_mutex_unlock( im->sslock );
libvips/iofuncs/region.c:                if( !reg->seq ) {
libvips/iofuncs/region.c:                                im->filename );
libvips/iofuncs/region.c:                        return( -1 );
libvips/iofuncs/region.c:	IMAGE *im = reg->im;
libvips/iofuncs/region.c:        if( reg->seq && im->stop ) {
libvips/iofuncs/region.c:                g_mutex_lock( im->sslock );
libvips/iofuncs/region.c:                res = im->stop( reg->seq, im->client1, im->client2 );
libvips/iofuncs/region.c:                g_mutex_unlock( im->sslock );
libvips/iofuncs/region.c:				"for image %s", im->filename );
libvips/iofuncs/region.c:                reg->seq = NULL;
libvips/iofuncs/region.c:	g_mutex_lock( reg->im->sslock );
libvips/iofuncs/region.c:	if( reg->thread != g_thread_self() ) {
libvips/iofuncs/region.c:		g_assert( reg->thread == NULL );
libvips/iofuncs/region.c:		g_assert( !reg->buffer || reg->buffer->ref_count == 1 );
libvips/iofuncs/region.c:		reg->thread = g_thread_self();
libvips/iofuncs/region.c:	g_mutex_unlock( reg->im->sslock );
libvips/iofuncs/region.c:	if( reg->thread ) {
libvips/iofuncs/region.c:		g_assert( reg->thread == g_thread_self() );
libvips/iofuncs/region.c:		if( reg->buffer && reg->buffer->cache )
libvips/iofuncs/region.c:			g_assert( reg->thread == reg->buffer->cache->thread );
libvips/iofuncs/region.c:	g_mutex_lock( reg->im->sslock );
libvips/iofuncs/region.c:	reg->thread = NULL;
libvips/iofuncs/region.c:	if( reg->buffer )
libvips/iofuncs/region.c:		im_buffer_undone( reg->buffer );
libvips/iofuncs/region.c:	g_mutex_unlock( reg->im->sslock );
libvips/iofuncs/region.c:	reg->im = im;
libvips/iofuncs/region.c:	reg->valid.left = 0;
libvips/iofuncs/region.c:	reg->valid.top = 0;
libvips/iofuncs/region.c:	reg->valid.width = 0;
libvips/iofuncs/region.c:	reg->valid.height = 0;
libvips/iofuncs/region.c:	reg->type = IM_REGION_NONE;
libvips/iofuncs/region.c:	reg->data = NULL;
libvips/iofuncs/region.c:	reg->bpl = 0;
libvips/iofuncs/region.c:	reg->seq = NULL;
libvips/iofuncs/region.c:	reg->thread = NULL;
libvips/iofuncs/region.c:	reg->window = NULL;
libvips/iofuncs/region.c:	reg->buffer = NULL;
libvips/iofuncs/region.c:	reg->invalid = FALSE;
libvips/iofuncs/region.c:	g_mutex_lock( im->sslock );
libvips/iofuncs/region.c:	im->regions = g_slist_prepend( im->regions, reg );
libvips/iofuncs/region.c:	g_mutex_unlock( im->sslock );
libvips/iofuncs/region.c:	IM_FREEF( im_window_unref, reg->window );
libvips/iofuncs/region.c:	IM_FREEF( im_buffer_unref, reg->buffer );
libvips/iofuncs/region.c:	reg->invalid = FALSE;
libvips/iofuncs/region.c:        im = reg->im;
libvips/iofuncs/region.c:	g_mutex_lock( im->sslock );
libvips/iofuncs/region.c:	im->regions = g_slist_remove( im->regions, reg );
libvips/iofuncs/region.c:	g_mutex_unlock( im->sslock );
libvips/iofuncs/region.c:	reg->im = NULL;
libvips/iofuncs/region.c:	if( !im->regions && im->close_pending ) {
libvips/iofuncs/region.c:			im->filename );
libvips/iofuncs/region.c:		im->close_pending = 0;
libvips/iofuncs/region.c: * reg->buffer->done to see if there are pixels there already. Otherwise, you
libvips/iofuncs/region.c: * Returns: 0 on success, or -1 for error.
libvips/iofuncs/region.c:	IMAGE *im = reg->im;
libvips/iofuncs/region.c:	image.width = im->Xsize;
libvips/iofuncs/region.c:	image.height = im->Ysize;
libvips/iofuncs/region.c:		return( -1 );
libvips/iofuncs/region.c:	if( reg->invalid ) {
libvips/iofuncs/region.c:		if( !(reg->buffer = im_buffer_new( im, &clipped )) ) 
libvips/iofuncs/region.c:			return( -1 );
libvips/iofuncs/region.c:		IM_FREEF( im_window_unref, reg->window );
libvips/iofuncs/region.c:		if( !(reg->buffer = 
libvips/iofuncs/region.c:			im_buffer_unref_ref( reg->buffer, im, &clipped )) ) 
libvips/iofuncs/region.c:			return( -1 );
libvips/iofuncs/region.c:	reg->valid = reg->buffer->area;
libvips/iofuncs/region.c:	reg->bpl = IM_IMAGE_SIZEOF_PEL( im ) * reg->buffer->area.width;
libvips/iofuncs/region.c:	reg->type = IM_REGION_BUFFER;
libvips/iofuncs/region.c:	reg->data = reg->buffer->buf;
libvips/iofuncs/region.c: * Returns: 0 on success, or -1 for error.
libvips/iofuncs/region.c:	image.width = reg->im->Xsize;
libvips/iofuncs/region.c:	image.height = reg->im->Ysize;
libvips/iofuncs/region.c:		return( -1 );
libvips/iofuncs/region.c:	if( reg->im->data ) {
libvips/iofuncs/region.c:		reg->valid = clipped;
libvips/iofuncs/region.c:		reg->bpl = IM_IMAGE_SIZEOF_LINE( reg->im );
libvips/iofuncs/region.c:		reg->data = reg->im->data +
libvips/iofuncs/region.c:			(gint64) clipped.top * IM_IMAGE_SIZEOF_LINE( reg->im ) +
libvips/iofuncs/region.c:			clipped.left * IM_IMAGE_SIZEOF_PEL( reg->im );
libvips/iofuncs/region.c:		reg->type = IM_REGION_OTHER_IMAGE;
libvips/iofuncs/region.c:	else if( reg->im->dtype == IM_OPENIN ) {
libvips/iofuncs/region.c:		if( reg->type != IM_REGION_WINDOW || !reg->window ||
libvips/iofuncs/region.c:			reg->window->top > clipped.top ||
libvips/iofuncs/region.c:			reg->window->top + reg->window->height < 
libvips/iofuncs/region.c:			if( !(reg->window = im_window_ref( reg->im, 
libvips/iofuncs/region.c:				return( -1 );
libvips/iofuncs/region.c:			reg->type = IM_REGION_WINDOW;
libvips/iofuncs/region.c:		reg->valid.left = 0;
libvips/iofuncs/region.c:		reg->valid.top = reg->window->top;
libvips/iofuncs/region.c:		reg->valid.width = reg->im->Xsize;
libvips/iofuncs/region.c:		reg->valid.height = reg->window->height;
libvips/iofuncs/region.c:		reg->bpl = IM_IMAGE_SIZEOF_LINE( reg->im );
libvips/iofuncs/region.c:		reg->data = reg->window->data;
libvips/iofuncs/region.c:		return( -1 );
libvips/iofuncs/region.c: * Performs all clipping necessary to ensure that @reg->valid is indeed
libvips/iofuncs/region.c: * Returns: 0 on success, or -1 for error.
libvips/iofuncs/region.c:	if( !dest->data || 
libvips/iofuncs/region.c:		IM_IMAGE_SIZEOF_PEL( dest->im ) != 
libvips/iofuncs/region.c:			IM_IMAGE_SIZEOF_PEL( reg->im ) ) {
libvips/iofuncs/region.c:		return( -1 );
libvips/iofuncs/region.c:		g_assert( dest->thread == g_thread_self() );
libvips/iofuncs/region.c:	image.width = reg->im->Xsize;
libvips/iofuncs/region.c:	image.height = reg->im->Ysize;
libvips/iofuncs/region.c:	wanted.left = x + (clipped.left - r->left);
libvips/iofuncs/region.c:	wanted.top = y + (clipped.top - r->top);
libvips/iofuncs/region.c:	/* Test that dest->valid is large enough.
libvips/iofuncs/region.c:	if( !im_rect_includesrect( &dest->valid, &wanted ) ) {
libvips/iofuncs/region.c:		return( -1 );
libvips/iofuncs/region.c:	im_rect_intersectrect( &wanted, &dest->valid, &clipped2 );
libvips/iofuncs/region.c:	final.left = r->left + (clipped2.left - wanted.left);
libvips/iofuncs/region.c:	final.top = r->top + (clipped2.top - wanted.top);
libvips/iofuncs/region.c:		return( -1 );
libvips/iofuncs/region.c:	reg->valid = final;
libvips/iofuncs/region.c:	reg->bpl = dest->bpl;
libvips/iofuncs/region.c:	reg->data = IM_REGION_ADDR( dest, clipped2.left, clipped2.top );
libvips/iofuncs/region.c:	reg->type = IM_REGION_OTHER_REGION;
libvips/iofuncs/region.c: * Returns: non-zero on equality.
libvips/iofuncs/region.c:	return( reg1->im == reg2->im &&
libvips/iofuncs/region.c:		im_rect_equalsrect( &reg1->valid, &reg2->valid ) &&
libvips/iofuncs/region.c:		reg1->data == reg2->data );
libvips/iofuncs/region.c: * Set the position of a region. This only affects reg->valid, ie. the way
libvips/iofuncs/region.c: * pixels are addressed, not reg->data, the pixels which are addressed. Clip
libvips/iofuncs/region.c: * Returns: 0 on success, or -1 for error.
libvips/iofuncs/region.c:	image.width = reg->im->Xsize;
libvips/iofuncs/region.c:	image.height = reg->im->Ysize;
libvips/iofuncs/region.c:	req.width = reg->valid.width;
libvips/iofuncs/region.c:	req.height = reg->valid.height;
libvips/iofuncs/region.c:		return( -1 );
libvips/iofuncs/region.c:	reg->valid = clipped;
libvips/iofuncs/region.c:	reg->invalid = FALSE;
libvips/iofuncs/region.c:	g_assert( reg->im->dtype == IM_PARTIAL );
libvips/iofuncs/region.c:	g_assert( reg->im->generate );
libvips/iofuncs/region.c:		return( -1 );
libvips/iofuncs/region.c:	if( !reg->buffer->done ) {
libvips/iofuncs/region.c:			return( -1 );
libvips/iofuncs/region.c:		if( reg->buffer )
libvips/iofuncs/region.c:			im_buffer_done( reg->buffer );
libvips/iofuncs/region.c:	printf( "im = %p, ", reg->im );
libvips/iofuncs/region.c:	printf( "valid.left = %d, ", reg->valid.left );
libvips/iofuncs/region.c:	printf( "valid.top = %d, ", reg->valid.top );
libvips/iofuncs/region.c:	printf( "valid.width = %d, ", reg->valid.width );
libvips/iofuncs/region.c:	printf( "valid.height = %d, ", reg->valid.height );
libvips/iofuncs/region.c:	printf( "type = %d, ", reg->type );
libvips/iofuncs/region.c:	printf( "data = %p, ", reg->data );
libvips/iofuncs/region.c:	printf( "bpl = %d, ", reg->bpl );
libvips/iofuncs/region.c:	printf( "seq = %p, ", reg->seq );
libvips/iofuncs/region.c:	printf( "thread = %p, ", reg->thread );
libvips/iofuncs/region.c:	printf( "window = %p, ", reg->window );
libvips/iofuncs/region.c:	printf( "buffer = %p\n", reg->buffer );
libvips/iofuncs/region.c:	printf( "invalid = %d\n", reg->invalid );
libvips/iofuncs/region.c: * @reg->valid.
libvips/iofuncs/region.c:	im_rect_intersectrect( r, &reg->valid, &ovl );
libvips/iofuncs/region.c:		int wd = ovl.width * IM_IMAGE_SIZEOF_PEL( reg->im );
libvips/iofuncs/region.c:	im_region_paint( reg, &reg->valid, 0 );
libvips/iofuncs/region.c:	int len = IM_IMAGE_SIZEOF_PEL( reg->im ) * r->width;
libvips/iofuncs/region.c:	char *p = IM_REGION_ADDR( reg, r->left, r->top );
libvips/iofuncs/region.c:	output.width = r->width;
libvips/iofuncs/region.c:	output.height = r->height;
libvips/iofuncs/region.c:	/* Must be inside dest->valid.
libvips/iofuncs/region.c:	g_assert( im_rect_includesrect( &dest->valid, &output ) );
libvips/iofuncs/region.c:	g_assert( im_rect_includesrect( &reg->valid, r ) );
libvips/iofuncs/region.c:	g_assert( IM_IMAGE_SIZEOF_PEL( reg->im ) == 
libvips/iofuncs/region.c:		IM_IMAGE_SIZEOF_PEL( dest->im ) );
libvips/iofuncs/region.c:	for( z = 0; z < r->height; z++ ) {
libvips/iofuncs/threadpool.c: * 	- from threadgroup.c
libvips/iofuncs/threadpool.c: * 	- distributed work allocation idea from Christian Blenia, thank you
libvips/iofuncs/threadpool.c: * 	- progress feedback
libvips/iofuncs/threadpool.c: * 	- only expose VipsThreadState
libvips/iofuncs/threadpool.c: * 	- argh, stopping many threads could sometimes leave allocated work
libvips/iofuncs/threadpool.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/threadpool.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/threadpool.c: * @see_also: <link linkend="libvips-generate">generate</link>
libvips/iofuncs/threadpool.c: * These per-thread values are carried around for your use by
libvips/iofuncs/threadpool.c:	IM_FREEF( im_region_free, state->reg );
libvips/iofuncs/threadpool.c:	G_OBJECT_CLASS( vips_thread_state_parent_class )->dispose( gobject );
libvips/iofuncs/threadpool.c:	if( !(state->reg = im_region_create( state->im )) )
libvips/iofuncs/threadpool.c:		return( -1 );
libvips/iofuncs/threadpool.c:		vips_thread_state_parent_class )->build( object ) );
libvips/iofuncs/threadpool.c:	gobject_class->dispose = vips_thread_state_dispose;
libvips/iofuncs/threadpool.c:	object_class->build = vips_thread_state_build;
libvips/iofuncs/threadpool.c:	object_class->nickname = "threadstate";
libvips/iofuncs/threadpool.c:	object_class->description = _( "per-thread state for vipsthreadpool" );
libvips/iofuncs/threadpool.c:	state->reg = NULL;
libvips/iofuncs/threadpool.c:	state->im = im;
libvips/iofuncs/threadpool.c:	state->a = b;
libvips/iofuncs/threadpool.c:	for( i = 0; i < thr->tpos; i++ )
libvips/iofuncs/threadpool.c:		fprintf( fp, "%g, %g\n", thr->btime[i], thr->etime[i] );
libvips/iofuncs/threadpool.c:        if( thr->thread ) {
libvips/iofuncs/threadpool.c:                thr->exit = 1;
libvips/iofuncs/threadpool.c:		(void) g_thread_join( thr->thread );
libvips/iofuncs/threadpool.c:		thr->thread = NULL;
libvips/iofuncs/threadpool.c:	IM_FREEF( g_object_unref, thr->state );
libvips/iofuncs/threadpool.c:	thr->pool = NULL;
libvips/iofuncs/threadpool.c:	if( thr->btime )
libvips/iofuncs/threadpool.c:	VipsThreadpool *pool = thr->pool;
libvips/iofuncs/threadpool.c:	g_assert( !pool->stop );
libvips/iofuncs/threadpool.c:	if( !thr->state ) {
libvips/iofuncs/threadpool.c:		if( !(thr->state = pool->start( pool->im, pool->a )) ) 
libvips/iofuncs/threadpool.c:			return( -1 );
libvips/iofuncs/threadpool.c:	if( pool->allocate( thr->state, pool->a, &pool->stop ) ) 
libvips/iofuncs/threadpool.c:		return( -1 );
libvips/iofuncs/threadpool.c:	VipsThreadpool *pool = thr->pool;
libvips/iofuncs/threadpool.c:	if( thr->btime && thr->tpos < IM_TBUF_SIZE )
libvips/iofuncs/threadpool.c:		thr->btime[thr->tpos] = 
libvips/iofuncs/threadpool.c:	if( pool->work( thr->state, pool->a ) ) 
libvips/iofuncs/threadpool.c:		result = -1;
libvips/iofuncs/threadpool.c:	if( thr->etime && thr->tpos < IM_TBUF_SIZE ) {
libvips/iofuncs/threadpool.c:		thr->etime[thr->tpos] = 
libvips/iofuncs/threadpool.c:		thr->tpos += 1;
libvips/iofuncs/threadpool.c:	VipsThreadpool *pool = thr->pool;
libvips/iofuncs/threadpool.c:	if( thr->error )
libvips/iofuncs/threadpool.c:	g_mutex_lock( pool->allocate_lock );
libvips/iofuncs/threadpool.c:	if( pool->stop ) {
libvips/iofuncs/threadpool.c:		g_mutex_unlock( pool->allocate_lock );
libvips/iofuncs/threadpool.c:		thr->error = TRUE;
libvips/iofuncs/threadpool.c:		g_mutex_unlock( pool->allocate_lock );
libvips/iofuncs/threadpool.c:	if( pool->stop ) {
libvips/iofuncs/threadpool.c:		g_mutex_unlock( pool->allocate_lock );
libvips/iofuncs/threadpool.c:	g_mutex_unlock( pool->allocate_lock );
libvips/iofuncs/threadpool.c:		thr->error = TRUE;
libvips/iofuncs/threadpool.c:	VipsThreadpool *pool = thr->pool;
libvips/iofuncs/threadpool.c:	g_assert( pool == thr->pool );
libvips/iofuncs/threadpool.c:		im_semaphore_up( &pool->tick );
libvips/iofuncs/threadpool.c:		if( pool->stop || pool->error )
libvips/iofuncs/threadpool.c:	im_semaphore_up( &pool->finish );
libvips/iofuncs/threadpool.c:	if( !(thr = IM_NEW( pool->im, VipsThread )) )
libvips/iofuncs/threadpool.c:	thr->pool = pool;
libvips/iofuncs/threadpool.c:	thr->state = NULL;
libvips/iofuncs/threadpool.c:	thr->thread = NULL;
libvips/iofuncs/threadpool.c:	thr->exit = 0;
libvips/iofuncs/threadpool.c:	thr->error = 0;
libvips/iofuncs/threadpool.c:	thr->btime = NULL;
libvips/iofuncs/threadpool.c:	thr->etime = NULL;
libvips/iofuncs/threadpool.c:	thr->tpos = 0;
libvips/iofuncs/threadpool.c:	thr->btime = IM_ARRAY( pool->im, IM_TBUF_SIZE, double );
libvips/iofuncs/threadpool.c:	thr->etime = IM_ARRAY( pool->im, IM_TBUF_SIZE, double );
libvips/iofuncs/threadpool.c:	if( !thr->btime || !thr->etime ) {
libvips/iofuncs/threadpool.c:	 * we need to insist on a non-tiny stack. Some platforms default to
libvips/iofuncs/threadpool.c:	if( !(thr->thread = g_thread_create_full( vips_thread_main_loop, thr, 
libvips/iofuncs/threadpool.c:	if( pool->thr ) {
libvips/iofuncs/threadpool.c:		for( i = 0; i < pool->nthr; i++ ) 
libvips/iofuncs/threadpool.c:			vips_thread_free( pool->thr[i] );
libvips/iofuncs/threadpool.c:		pool->thr = NULL;
libvips/iofuncs/threadpool.c:			"killed %d threads\n", pool->nthr );
libvips/iofuncs/threadpool.c:		pool->im->filename, pool );
libvips/iofuncs/threadpool.c:	IM_FREEF( g_mutex_free, pool->allocate_lock );
libvips/iofuncs/threadpool.c:	im_semaphore_destroy( &pool->finish );
libvips/iofuncs/threadpool.c:	im_semaphore_destroy( &pool->tick );
libvips/iofuncs/threadpool.c:	pool->im = im;
libvips/iofuncs/threadpool.c:	pool->allocate = NULL;
libvips/iofuncs/threadpool.c:	pool->work = NULL;
libvips/iofuncs/threadpool.c:	pool->allocate_lock = g_mutex_new();
libvips/iofuncs/threadpool.c:	pool->nthr = im_concurrency_get();
libvips/iofuncs/threadpool.c:	pool->thr = NULL;
libvips/iofuncs/threadpool.c:	im_semaphore_init( &pool->finish, 0, "finish" );
libvips/iofuncs/threadpool.c:	im_semaphore_init( &pool->tick, 0, "tick" );
libvips/iofuncs/threadpool.c:	pool->stop = FALSE;
libvips/iofuncs/threadpool.c:	pool->error = FALSE;
libvips/iofuncs/threadpool.c:	/* Attach tidy-up callback.
libvips/iofuncs/threadpool.c:		im->filename, pool, pool->nthr );
libvips/iofuncs/threadpool.c:	g_assert( !pool->thr );
libvips/iofuncs/threadpool.c:	if( !(pool->thr = IM_ARRAY( pool->im, pool->nthr, VipsThread * )) )
libvips/iofuncs/threadpool.c:		return( -1 );
libvips/iofuncs/threadpool.c:	for( i = 0; i < pool->nthr; i++ )
libvips/iofuncs/threadpool.c:		pool->thr[i] = NULL;
libvips/iofuncs/threadpool.c:	for( i = 0; i < pool->nthr; i++ )
libvips/iofuncs/threadpool.c:		if( !(pool->thr[i] = vips_thread_new( pool )) ) {
libvips/iofuncs/threadpool.c:			return( -1 );
libvips/iofuncs/threadpool.c: * is allocated to it to build the per-thread state. Per-thread state is used
libvips/iofuncs/threadpool.c: * from allocate, that is, they are single-threaded.
libvips/iofuncs/threadpool.c: * @state: per-thread state
libvips/iofuncs/threadpool.c: * always single-threaded, so it can modify per-pool state (such as a
libvips/iofuncs/threadpool.c: * Returns: 0 on success, or -1 on error
libvips/iofuncs/threadpool.c: * @state: per-thread state
libvips/iofuncs/threadpool.c: * at once, so it should not write to the per-pool state. It can write to
libvips/iofuncs/threadpool.c: * per-thread state.
libvips/iofuncs/threadpool.c: * Returns: 0 on success, or -1 on error
libvips/iofuncs/threadpool.c: * Returns: 0 on success, or -1 on error
libvips/iofuncs/threadpool.c: * @start: allocate per-thread state
libvips/iofuncs/threadpool.c: * @start to create new per-thread state, then runs
libvips/iofuncs/threadpool.c: * @allocate and @start are always single-threaded (so they can write to the 
libvips/iofuncs/threadpool.c: * per-pool state), whereas @work can be executed concurrently. @progress is 
libvips/iofuncs/threadpool.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/threadpool.c:		return( -1 );
libvips/iofuncs/threadpool.c:	pool->start = start;
libvips/iofuncs/threadpool.c:	pool->allocate = allocate;
libvips/iofuncs/threadpool.c:	pool->work = work;
libvips/iofuncs/threadpool.c:	pool->a = a;
libvips/iofuncs/threadpool.c:		return( -1 );
libvips/iofuncs/threadpool.c:		im_semaphore_down( &pool->tick );
libvips/iofuncs/threadpool.c:		vips_thread_work_unit( pool->thr[0] );
libvips/iofuncs/threadpool.c:		if( pool->stop || pool->error )
libvips/iofuncs/threadpool.c:			progress( pool->a ) ) 
libvips/iofuncs/threadpool.c:			pool->error = TRUE;
libvips/iofuncs/threadpool.c:		if( pool->stop || pool->error )
libvips/iofuncs/threadpool.c:	im_semaphore_downn( &pool->finish, pool->nthr );
libvips/iofuncs/threadpool.c:	result = pool->error ? -1 : 0;
libvips/iofuncs/threadpool.c:	switch( im->dhint ) {
libvips/iofuncs/threadpool.c:			(1 + nthr / IM_MAX( 1, im->Xsize / *tile_width )) * 2;
libvips/iofuncs/threadpool.c:		*tile_width = im->Xsize;
libvips/iofuncs/threadpool.c:		*tile_width = im->Xsize;
libvips/iofuncs/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/iofuncs/im_wrapmany.c: *	- buffer functions now get their own copies of the input pointer
libvips/iofuncs/im_wrapmany.c: *	- amazing error ... only worked if ir and or had same valid
libvips/iofuncs/im_wrapmany.c: * 	- do im_wrapone() in terms of this
libvips/iofuncs/im_wrapmany.c: * 	- gtkdoc comments
libvips/iofuncs/im_wrapmany.c: * 	- move im_wraptwo in here
libvips/iofuncs/im_wrapmany.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_wrapmany.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_wrapmany.c:/* Maximum number of input images -- why not?
libvips/iofuncs/im_wrapmany.c:		if( im_prepare( ir[i], &or->valid ) ) 
libvips/iofuncs/im_wrapmany.c:			return( -1 );
libvips/iofuncs/im_wrapmany.c:			or->valid.left, or->valid.top );
libvips/iofuncs/im_wrapmany.c:	q = (PEL *) IM_REGION_ADDR( or, or->valid.left, or->valid.top );
libvips/iofuncs/im_wrapmany.c:	for( y = 0; y < or->valid.height; y++ ) {
libvips/iofuncs/im_wrapmany.c:		/* Bizarre double-cast stops a bogus gcc 4.1 compiler warning.
libvips/iofuncs/im_wrapmany.c:		bun->fn( (void **) ((void *)p1), q, 
libvips/iofuncs/im_wrapmany.c:			or->valid.width, bun->a, bun->b );
libvips/iofuncs/im_wrapmany.c: * @in: %NULL-terminated array of input buffers
libvips/iofuncs/im_wrapmany.c: * @in: %NULL-terminated array of input images
libvips/iofuncs/im_wrapmany.c: * @fn: buffer-processing function
libvips/iofuncs/im_wrapmany.c: * Wrap-up a buffer processing function as a PIO VIPS function.
libvips/iofuncs/im_wrapmany.c: * Given a NULL-terminated list of input images all of the same size, an
libvips/iofuncs/im_wrapmany.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/im_wrapmany.c:	if( n >= IM_MAX_INPUT_IMAGES - 1 ) {
libvips/iofuncs/im_wrapmany.c:		return( -1 );
libvips/iofuncs/im_wrapmany.c:		return( -1 );
libvips/iofuncs/im_wrapmany.c:	bun->fn = fn;
libvips/iofuncs/im_wrapmany.c:	bun->a = a;
libvips/iofuncs/im_wrapmany.c:	bun->b = b;
libvips/iofuncs/im_wrapmany.c:	/* Check descriptors --- make sure that our caller has done this
libvips/iofuncs/im_wrapmany.c:		if( in[i]->Xsize != out->Xsize || in[i]->Ysize != out->Ysize ) {
libvips/iofuncs/im_wrapmany.c:			return( -1 );
libvips/iofuncs/im_wrapmany.c:			return( -1 );
libvips/iofuncs/im_wrapmany.c:                return( -1 );
libvips/iofuncs/im_wrapmany.c:		return( -1 );
libvips/iofuncs/im_wrapmany.c:	((im_wrapone_fn) (bun->fn)) (ins[0], out, width, bun->a, bun->b );
libvips/iofuncs/im_wrapmany.c: * @fn: buffer-processing function
libvips/iofuncs/im_wrapmany.c: * Wrap-up a buffer processing function as a PIO VIPS function.
libvips/iofuncs/im_wrapmany.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/im_wrapmany.c:	bun->fn = (im_wrapmany_fn) fn;
libvips/iofuncs/im_wrapmany.c:	bun->a = a;
libvips/iofuncs/im_wrapmany.c:	bun->b = b;
libvips/iofuncs/im_wrapmany.c:	((im_wraptwo_fn) (bun->fn)) (ins[0], ins[1], out, 
libvips/iofuncs/im_wrapmany.c:		width, bun->a, bun->b );
libvips/iofuncs/im_wrapmany.c: * @fn: buffer-processing function
libvips/iofuncs/im_wrapmany.c: * Wrap-up a buffer processing function as a PIO VIPS function.
libvips/iofuncs/im_wrapmany.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/im_wrapmany.c:	bun->fn = (im_wrapmany_fn) fn;
libvips/iofuncs/im_wrapmany.c:	bun->a = a;
libvips/iofuncs/im_wrapmany.c:	bun->b = b;
libvips/iofuncs/memory.c: *	- from im_open.c and callback.c
libvips/iofuncs/memory.c: *	- malloc tracking stuff added
libvips/iofuncs/memory.c: * 	- im_strncpy() added
libvips/iofuncs/memory.c: * 	- im_(v)snprintf() added
libvips/iofuncs/memory.c: *	- more tracking for DEBUGM
libvips/iofuncs/memory.c: * 	- return NULL for size <= 0
libvips/iofuncs/memory.c: * 	- abort() on malloc() failure with DEBUG
libvips/iofuncs/memory.c: * 	- gtkdoc comment
libvips/iofuncs/memory.c: *	- im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes 
libvips/iofuncs/memory.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/memory.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/memory.c: * @IM: allocate memory local to @IM, or %NULL for no auto-free
libvips/iofuncs/memory.c: * @IM: allocate memory local to @IM, or %NULL for no auto-free
libvips/iofuncs/memory.c:	s = (void *) ((char*)s - 16);
libvips/iofuncs/memory.c:	total_mem_alloc -= size;
libvips/iofuncs/memory.c:	total_allocs -= 1;
libvips/iofuncs/memory.c:	/* Assume the first im_malloc() is single-threaded.
libvips/iofuncs/memory.c:			_( "out of memory --- size == %dMB" ), 
libvips/iofuncs/memory.c:			_( "out of memory --- size == %dMB" ), 
libvips/iofuncs/im_writeline.c: *	- support for partial images 
libvips/iofuncs/im_writeline.c: *	- now triggers eval callbacks for the output image.
libvips/iofuncs/im_writeline.c: *	- better error messages
libvips/iofuncs/im_writeline.c: *	- stop early on kill
libvips/iofuncs/im_writeline.c: * 	- add eval start/stop
libvips/iofuncs/im_writeline.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_writeline.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_writeline.c: * @ypos: vertical position of scan-line to write
libvips/iofuncs/im_writeline.c: * with @ypos increasing from 0 to @YSize -
libvips/iofuncs/im_writeline.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/im_writeline.c:	switch( im->dtype ) {
libvips/iofuncs/im_writeline.c:		tmp = im->data + ypos * linesize;
libvips/iofuncs/im_writeline.c:		if( im__write( im->fd, linebuffer, linesize ) )
libvips/iofuncs/im_writeline.c:			return( -1 );
libvips/iofuncs/im_writeline.c:			im_dtype2char( im->dtype ) );
libvips/iofuncs/im_writeline.c:		return( -1 );
libvips/iofuncs/im_writeline.c:	if( im__handle_eval( im, im->Xsize, 1 ) )
libvips/iofuncs/im_writeline.c:		return( -1 );
libvips/iofuncs/im_writeline.c:		return( -1 );
libvips/iofuncs/im_writeline.c:	if( ypos == im->Ysize - 1 ) {
libvips/iofuncs/im_writeline.c:			im__trigger_callbacks( im->writtenfns ) )
libvips/iofuncs/im_writeline.c:			return( -1 );
libvips/iofuncs/buf.c:    Copyright (C) 1991-2003 The National Gallery
libvips/iofuncs/buf.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/buf.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/buf.c:	buf->i = 0;
libvips/iofuncs/buf.c:	buf->lasti = 0;
libvips/iofuncs/buf.c:	buf->full = FALSE;
libvips/iofuncs/buf.c:	if( buf->base )
libvips/iofuncs/buf.c:		buf->base[0] = '\0';
libvips/iofuncs/buf.c:	buf->base = NULL;
libvips/iofuncs/buf.c:	buf->mx = 0;
libvips/iofuncs/buf.c:	buf->dynamic = FALSE;
libvips/iofuncs/buf.c:	if( buf->dynamic ) {
libvips/iofuncs/buf.c:		IM_FREE( buf->base );
libvips/iofuncs/buf.c:	buf->base = base;
libvips/iofuncs/buf.c:	buf->mx = mx;
libvips/iofuncs/buf.c:	buf->dynamic = FALSE;
libvips/iofuncs/buf.c: * size must be set at compile-time.
libvips/iofuncs/buf.c:	if( buf->mx == mx && buf->dynamic ) 
libvips/iofuncs/buf.c:		if( !(buf->base = IM_ARRAY( NULL, mx, char )) )
libvips/iofuncs/buf.c:			buf->full = TRUE;
libvips/iofuncs/buf.c:			buf->mx = mx;
libvips/iofuncs/buf.c:			buf->dynamic = TRUE;
libvips/iofuncs/buf.c: * is the low-level append operation: functions like vips_buf_appendf() build
libvips/iofuncs/buf.c:	if( buf->full )
libvips/iofuncs/buf.c:	avail = buf->mx - buf->i - 4;
libvips/iofuncs/buf.c:	strncpy( buf->base + buf->i, str, cpy );
libvips/iofuncs/buf.c:	buf->i += cpy;
libvips/iofuncs/buf.c:	if( buf->i >= buf->mx - 4 ) {
libvips/iofuncs/buf.c:		buf->full = TRUE;
libvips/iofuncs/buf.c:		strcpy( buf->base + buf->mx - 4, "..." );
libvips/iofuncs/buf.c:		buf->i = buf->mx - 1;
libvips/iofuncs/buf.c:	return( vips_buf_appendns( buf, str, -1 ) );
libvips/iofuncs/buf.c:	if( buf->full )
libvips/iofuncs/buf.c:	if( buf->i - olen + nlen > buf->mx - 4 ) {
libvips/iofuncs/buf.c:		buf->full = TRUE;
libvips/iofuncs/buf.c:	for( i = buf->i - olen; i > 0; i-- )
libvips/iofuncs/buf.c:		if( im_isprefix( old, buf->base + i ) )
libvips/iofuncs/buf.c:	/* Move tail of buffer to make right-size space for new.
libvips/iofuncs/buf.c:	memmove( buf->base + i + nlen, buf->base + i + olen,
libvips/iofuncs/buf.c:		buf->i - i - olen );
libvips/iofuncs/buf.c:	memcpy( buf->base + i, new, nlen );
libvips/iofuncs/buf.c:	buf->i = i + nlen + (buf->i - i - olen);
libvips/iofuncs/buf.c:	if( buf->full )
libvips/iofuncs/buf.c:	if( buf->i <= 0 ) 
libvips/iofuncs/buf.c:	if( buf->base[buf->i - 1] == ch )
libvips/iofuncs/buf.c:		buf->i -= 1;
libvips/iofuncs/buf.c: * @fmt: <function>printf()</function>-style format string
libvips/iofuncs/buf.c: * @fmt: <function>printf()</function>-style format string
libvips/iofuncs/buf.c: * Append a double, non-localised. Useful for config files etc.
libvips/iofuncs/buf.c: * Append a number. If the number is -ve, add brackets. Needed for
libvips/iofuncs/buf.c: * Returns: the %NULL-terminated contents of the buffer. This is a pointer to
libvips/iofuncs/buf.c:	buf->base[buf->i] = '\0';
libvips/iofuncs/buf.c:	return( buf->base );
libvips/iofuncs/buf.c: * Returns: the %NULL-terminated contents of the buffer. This is a pointer to
libvips/iofuncs/buf.c:	return( buf->i == 0 );
libvips/iofuncs/buf.c:	return( buf->full );
libvips/iofuncs/buf.c:	return( buf->i );
libvips/iofuncs/im_guess_prefix.c: * 	- better behaviour for relative paths in argv0
libvips/iofuncs/im_guess_prefix.c: * 	- oops, SEGV in some cases for argv0 contains relative path
libvips/iofuncs/im_guess_prefix.c: * 	- reworked for new prefix scheme
libvips/iofuncs/im_guess_prefix.c: *	- grr! added strdup() on putenv() for newer linuxes
libvips/iofuncs/im_guess_prefix.c: *	- now uses realpath() for better relative pathname guessing
libvips/iofuncs/im_guess_prefix.c: * 	- turn off realpath() if not available
libvips/iofuncs/im_guess_prefix.c: * 	- path_is_absolute() from glib
libvips/iofuncs/im_guess_prefix.c: * 	- append ".exe" to name on w32
libvips/iofuncs/im_guess_prefix.c: * 	- prefix cwd() to path on w32
libvips/iofuncs/im_guess_prefix.c: *	- better relative path handling
libvips/iofuncs/im_guess_prefix.c: *	- use g_setenv()/g_getenv()
libvips/iofuncs/im_guess_prefix.c: *	- gah, back to plain setenv() so we work with glib-2.2
libvips/iofuncs/im_guess_prefix.c: * 	- phew, now we can use g_setenv() again
libvips/iofuncs/im_guess_prefix.c: * 	- use IM_EXEEXT
libvips/iofuncs/im_guess_prefix.c: * 	- move trailing '\0' too in extract_prefix
libvips/iofuncs/im_guess_prefix.c: * 	- fall back to configure-time prefix rather than returning an error
libvips/iofuncs/im_guess_prefix.c: * 	- added im_guess_libdir()
libvips/iofuncs/im_guess_prefix.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_guess_prefix.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_guess_prefix.c:                /* Found suffix - test against list of alternatives. Ignore
libvips/iofuncs/im_guess_prefix.c:	im_strncpy( out + len, new, mx - len );
libvips/iofuncs/im_guess_prefix.c: * /home/john/vips-7.6.4/bin/vips-7.6	vips-7.6	/home/john/vips-7.6.4
libvips/iofuncs/im_guess_prefix.c:	vname[strlen( edir ) - strlen( name ) - 1] = '\0';
libvips/iofuncs/im_guess_prefix.c:		vname[strlen( vname ) - 2] = '\0';
libvips/iofuncs/im_guess_prefix.c:		vname[strlen( vname ) - 1] = '\0';
libvips/iofuncs/im_guess_prefix.c:	vname[strlen( vname ) - strlen( G_DIR_SEPARATOR_S "bin" )] = '\0';
libvips/iofuncs/im_guess_prefix.c:	/* Fall back to the configure-time prefix.
libvips/iofuncs/im_guess_prefix.c:	/* Have we been moved since configure? If not, use the configure-time
libvips/iofuncs/init.c: *	- init for partial image buffers added
libvips/iofuncs/init.c: *	- init for type field
libvips/iofuncs/init.c: *	- filename added
libvips/iofuncs/init.c: *	- allocates space for IMAGE too, and returns new data
libvips/iofuncs/init.c: *	- ANSIfied, man page revised
libvips/iofuncs/init.c: *	- evalend callbacks added
libvips/iofuncs/init.c: *	- new compression fields added, thr added
libvips/iofuncs/init.c: *	- now tracks open images ... see also im_close() and debug.c
libvips/iofuncs/init.c: *	- added an im_init_world() to help old progs
libvips/iofuncs/init.c: * 	- added sizeof_header
libvips/iofuncs/init.c: * 	- init magic
libvips/iofuncs/init.c: * 	- init history_list
libvips/iofuncs/init.c: * 	- added preclose and evalstart
libvips/iofuncs/init.c: * 	- lock global image list (thanks lee)
libvips/iofuncs/init.c: *	- add file_length 
libvips/iofuncs/init.c: * 	- add set_hint
libvips/iofuncs/init.c: * 	- added postclose
libvips/iofuncs/init.c: * 	- added writtenfns
libvips/iofuncs/init.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/init.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/init.c:	im->Xsize = -1;
libvips/iofuncs/init.c:	im->Ysize = -1;
libvips/iofuncs/init.c:	im->Bands = -1;
libvips/iofuncs/init.c:	im->Bbits = -1;
libvips/iofuncs/init.c:	im->BandFmt = -1;
libvips/iofuncs/init.c:	im->Coding = -1;
libvips/iofuncs/init.c:	im->Type = -1;
libvips/iofuncs/init.c:	im->Xres = 1.0;
libvips/iofuncs/init.c:	im->Yres = 1.0;
libvips/iofuncs/init.c:	im->Length = 0;
libvips/iofuncs/init.c:	im->Compression = 0;
libvips/iofuncs/init.c:	im->Level = 0;
libvips/iofuncs/init.c:	im->Xoffset = 0;
libvips/iofuncs/init.c:	im->Yoffset = 0;
libvips/iofuncs/init.c:	im->Hist = NULL;
libvips/iofuncs/init.c:	im->data = NULL;
libvips/iofuncs/init.c:	im->time = NULL;
libvips/iofuncs/init.c:	im->kill = 0;
libvips/iofuncs/init.c:	im->dtype = IM_NONE;
libvips/iofuncs/init.c:	im->fd = -1;
libvips/iofuncs/init.c:	im->baseaddr = NULL;
libvips/iofuncs/init.c:	im->length = 0;
libvips/iofuncs/init.c:	im->closefns = NULL;
libvips/iofuncs/init.c:	im->evalfns = NULL;
libvips/iofuncs/init.c:	im->evalendfns = NULL;
libvips/iofuncs/init.c:	im->closing = 0;
libvips/iofuncs/init.c:	im->close_pending = 0;
libvips/iofuncs/init.c:	im->magic = im_amiMSBfirst() ?  IM_MAGIC_SPARC : IM_MAGIC_INTEL;
libvips/iofuncs/init.c:	im->start = NULL;
libvips/iofuncs/init.c:	im->generate = NULL;
libvips/iofuncs/init.c:	im->stop = NULL;
libvips/iofuncs/init.c:	im->client1 = NULL;
libvips/iofuncs/init.c:	im->client2 = NULL;
libvips/iofuncs/init.c:	im->sslock = g_mutex_new();
libvips/iofuncs/init.c:	im->regions = NULL;
libvips/iofuncs/init.c:	im->dhint = IM_SMALLTILE;
libvips/iofuncs/init.c:	im->Meta = NULL;
libvips/iofuncs/init.c:	im->Meta_traverse = NULL;
libvips/iofuncs/init.c:	im->sizeof_header = IM_SIZEOF_HEADER;
libvips/iofuncs/init.c:	im->windows = NULL;
libvips/iofuncs/init.c:	im->upstream = NULL;
libvips/iofuncs/init.c:	im->downstream = NULL;
libvips/iofuncs/init.c:	im->serial = 0;
libvips/iofuncs/init.c:	im->history_list = NULL;
libvips/iofuncs/init.c:	im->progress = NULL;
libvips/iofuncs/init.c:	im->evalstartfns = NULL;
libvips/iofuncs/init.c:	im->preclosefns = NULL;
libvips/iofuncs/init.c:	im->invalidatefns = NULL;
libvips/iofuncs/init.c:	im->file_length = 0;
libvips/iofuncs/init.c:	im->hint_set = FALSE;
libvips/iofuncs/init.c:	im->postclosefns = NULL;
libvips/iofuncs/init.c:	im->writtenfns = NULL;
libvips/iofuncs/init.c:	if( !(im->filename = im_strdup( NULL, filename )) ) {
libvips/iofuncs/init.c:	image->Xsize = xsize;
libvips/iofuncs/init.c:	image->Ysize = ysize;
libvips/iofuncs/init.c:	image->Bands = bands;
libvips/iofuncs/init.c:	image->Bbits = im_bits_of_fmt( bandfmt );
libvips/iofuncs/init.c:	image->BandFmt = bandfmt;
libvips/iofuncs/init.c:	image->Coding = coding;
libvips/iofuncs/init.c:	image->Type = type;
libvips/iofuncs/init.c:	image->Xres = xres;
libvips/iofuncs/init.c:	image->Yres = yres;
libvips/iofuncs/init.c:	image->Xoffset = xo;
libvips/iofuncs/init.c:	image->Yoffset = yo;
libvips/iofuncs/check.c: *	- im_incheck(), im_outcheck() added.
libvips/iofuncs/check.c: *	- type field now checked.
libvips/iofuncs/check.c: *	- auto-fallback to old-style input added
libvips/iofuncs/check.c: *	- revised and improved fallback code
libvips/iofuncs/check.c: *	- checks for partial images added
libvips/iofuncs/check.c: *	- now uses type field
libvips/iofuncs/check.c: *	- returns ok for IM_MMAPINRW type files now too
libvips/iofuncs/check.c: *	- returns -1 rather than 1 on error
libvips/iofuncs/check.c: *	- ANSIfied
libvips/iofuncs/check.c: *	- moved here, and renamed im_rwcheck()
libvips/iofuncs/check.c: *	- im_image_sanity() checks added
libvips/iofuncs/check.c: * 	- im_iocheck() adapted to make im_piocheck()
libvips/iofuncs/check.c: * 	- auto-rewind feature added
libvips/iofuncs/check.c: *	- im_pincheck() on a setbuf now zaps generate function so as not to
libvips/iofuncs/check.c: * 	- all the above rolled into this file
libvips/iofuncs/check.c: * 	- plus chunks of predicate.c
libvips/iofuncs/check.c: * 	- gtkdoc comments
libvips/iofuncs/check.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/check.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/check.c: * @see_also: <link linkend="libvips-imagE">image</link>
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:	im->dtype = IM_SETBUF;
libvips/iofuncs/check.c:	im->data = t1->data; 
libvips/iofuncs/check.c:	t1->data = NULL;
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:	im->data = im->baseaddr + im->sizeof_header;
libvips/iofuncs/check.c:	im->dtype = IM_MMAPIN;
libvips/iofuncs/check.c: * Returns: 0 on succeess, or -1 on error.
libvips/iofuncs/check.c:	printf( "im_incheck: old-style input for %s\n", im->filename );
libvips/iofuncs/check.c:	switch( im->dtype ) {
libvips/iofuncs/check.c:		if( !im->data ) {
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		printf( "im_incheck: converting openin image for old-style input\n" );
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		printf( "im_incheck: auto-rewind of %s\n", im->filename );
libvips/iofuncs/check.c:				_( "auto-rewind for %s failed" ),
libvips/iofuncs/check.c:				im->filename );
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Returns: 0 on succeess, or -1 on error.
libvips/iofuncs/check.c:	printf( "im_outcheck: old-style output for %s\n", im->filename );
libvips/iofuncs/check.c:	switch( im->dtype ) {
libvips/iofuncs/check.c:		if( im->generate ) {
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		/* Cannot do old-style write to PARTIAL. Turn to SETBUF.
libvips/iofuncs/check.c:		im->dtype = IM_SETBUF;
libvips/iofuncs/check.c:		if( im->data ) {
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Returns: 0 on succeess, or -1 on error.
libvips/iofuncs/check.c: * @im: image to make read-write
libvips/iofuncs/check.c: * Gets an image ready for an in-place operation, such as im_insertplace().
libvips/iofuncs/check.c: * Returns: 0 on succeess, or -1 on error.
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:	switch( im->dtype ) {
libvips/iofuncs/check.c:		/* Try to remap read-write.
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Returns: 0 on succeess, or -1 on error.
libvips/iofuncs/check.c:	printf( "im_pincheck: enabling partial input for %s\n", im->filename );
libvips/iofuncs/check.c:	switch( im->dtype ) {
libvips/iofuncs/check.c:		if( !im->data ) {
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		im->start = NULL;
libvips/iofuncs/check.c:		im->generate = NULL;
libvips/iofuncs/check.c:		im->stop = NULL;
libvips/iofuncs/check.c:		if( !im->generate ) {
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		printf( "im_pincheck: auto-rewind of %s\n", im->filename );
libvips/iofuncs/check.c:				_( "auto-rewind for %s failed" ),
libvips/iofuncs/check.c:				im->filename );
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Returns: 0 on succeess, or -1 on error.
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:	printf( "im_pincheck: enabling partial output for %s\n", im->filename );
libvips/iofuncs/check.c:	switch( im->dtype ) {
libvips/iofuncs/check.c:		if( im->data ) {
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		if( im->generate ) {
libvips/iofuncs/check.c:			return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Returns: 0 on succeess, or -1 on error.
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 on OK, or -1 on error.
libvips/iofuncs/check.c:	if( im->Coding != IM_CODING_NONE ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 on OK, or -1 on error.
libvips/iofuncs/check.c:	if( im->Coding != IM_CODING_NONE && 
libvips/iofuncs/check.c:		im->Coding != IM_CODING_LABQ &&
libvips/iofuncs/check.c:		im->Coding != IM_CODING_RAD ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 on OK, or -1 on error.
libvips/iofuncs/check.c:	if( im->Coding != IM_CODING_RAD ||
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_UCHAR || 
libvips/iofuncs/check.c:		im->Bands != 4 ) { 
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 on OK, or -1 on error.
libvips/iofuncs/check.c:	if( im->Coding != IM_CODING_LABQ ||
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_UCHAR || 
libvips/iofuncs/check.c:		im->Bands != 4 ) { 
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im->Bands != 1 ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im->Bands != bands ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im->Bands != 1 && im->Bands != 3 ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 on OK, or -1 on error.
libvips/iofuncs/check.c:	if( im1->Bands != im2->Bands &&
libvips/iofuncs/check.c:		(im1->Bands != 1 && im2->Bands != 1) ) {
libvips/iofuncs/check.c:			"or one must be single-band" ) );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( vips_bandfmt_iscomplex( im->BandFmt ) ) {
libvips/iofuncs/check.c:		im_error( domain, "%s", _( "image must be non-complex" ) );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( !vips_bandfmt_iscomplex( im->BandFmt ) ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im->BandFmt != fmt ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( !vips_bandfmt_isint( im->BandFmt ) ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( !vips_bandfmt_isuint( im->BandFmt ) ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Check that the image is 8 or 16-bit integer, signed or unsigned.
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im->BandFmt != IM_BANDFMT_UCHAR &&
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_USHORT &&
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_CHAR &&
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_SHORT ) {
libvips/iofuncs/check.c:			_( "image must be 8- or 16-bit integer, "
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Check that the image is 8 or 16-bit unsigned integer.
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im->BandFmt != IM_BANDFMT_UCHAR &&
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_USHORT ) {
libvips/iofuncs/check.c:			_( "image must be 8- or 16-bit unsigned integer" ) );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Check that the image is 8 or 16-bit unsigned integer, or float.
libvips/iofuncs/check.c: * Otherwise set an error message and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im->BandFmt != IM_BANDFMT_UCHAR &&
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_USHORT &&
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_FLOAT ) {
libvips/iofuncs/check.c:			_( "image must be 8- or 16-bit unsigned integer, "
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Otherwise set an error message and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im->BandFmt != IM_BANDFMT_UCHAR &&
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_USHORT &&
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_UINT &&
libvips/iofuncs/check.c:		im->BandFmt != IM_BANDFMT_FLOAT ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im1->Xsize != im2->Xsize || im1->Ysize != im2->Ysize ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im1->Bands != im2->Bands ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * @bandno should be a valid band number (ie. 0 to im->Bands - 1), or can be
libvips/iofuncs/check.c: * -1, meaning all bands. 
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( bandno < -1 ||
libvips/iofuncs/check.c:		bandno > im->Bands - 1 ) {
libvips/iofuncs/check.c:		im_error( domain, "bandno must be -1, or less than %d",
libvips/iofuncs/check.c:			im->Bands );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im1->BandFmt != im2->BandFmt ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * and return non-zero.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im1->Coding != im2->Coding ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Operations with a vector constant need a 1-element vector, or a vector with
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( n != 1 && im->Bands != 1 && n != im->Bands ) {
libvips/iofuncs/check.c:			_( "vector must have 1 or %d elements" ), im->Bands );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * 65536 elements. Return 0 if the image will pass as a histogram, or -1 and
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:	if( im->Xsize != 1 && im->Ysize != 1 ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:	if( im->Xsize * im->Ysize > 65536 ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Sanity-check a mask parameter.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:		mask->xsize > 1000 || 
libvips/iofuncs/check.c:		mask->ysize > 1000 || 
libvips/iofuncs/check.c:		mask->xsize <= 0 || 
libvips/iofuncs/check.c:		mask->ysize <= 0 || 
libvips/iofuncs/check.c:		!mask->coeff ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Sanity-check a mask parameter.
libvips/iofuncs/check.c: * Returns: 0 if OK, -1 otherwise.
libvips/iofuncs/check.c:		mask->xsize > 1000 || 
libvips/iofuncs/check.c:		mask->ysize > 1000 || 
libvips/iofuncs/check.c:		mask->xsize <= 0 || 
libvips/iofuncs/check.c:		mask->ysize <= 0 || 
libvips/iofuncs/check.c:		!mask->coeff ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c: * Return %TRUE if @im is in most-significant-
libvips/iofuncs/check.c:	if( im->magic == IM_MAGIC_SPARC )
libvips/iofuncs/check.c:	switch( im->dtype ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/check.c:	switch( im->dtype ) {
libvips/iofuncs/check.c:		return( -1 );
libvips/iofuncs/semaphore.c: *	- return(0) missing from tidy_thread_info()
libvips/iofuncs/semaphore.c: *	- reorganised for POSIX
libvips/iofuncs/semaphore.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/semaphore.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/semaphore.c:	s->v = v;
libvips/iofuncs/semaphore.c:	s->name = name;
libvips/iofuncs/semaphore.c:	s->mutex = g_mutex_new();
libvips/iofuncs/semaphore.c:	s->cond = g_cond_new();
libvips/iofuncs/semaphore.c:	IM_FREEF( g_mutex_free, s->mutex );
libvips/iofuncs/semaphore.c:	IM_FREEF( g_cond_free, s->cond );
libvips/iofuncs/semaphore.c:	g_mutex_lock( s->mutex );
libvips/iofuncs/semaphore.c:	s->v += n;
libvips/iofuncs/semaphore.c:	value_after_op = s->v;
libvips/iofuncs/semaphore.c:	g_mutex_unlock( s->mutex );
libvips/iofuncs/semaphore.c:	g_cond_signal( s->cond );
libvips/iofuncs/semaphore.c:		s->name, n, value_after_op );
libvips/iofuncs/semaphore.c:	g_mutex_lock( s->mutex );
libvips/iofuncs/semaphore.c:	while( s->v < n )
libvips/iofuncs/semaphore.c:		g_cond_wait( s->cond, s->mutex );
libvips/iofuncs/semaphore.c:	s->v -= n;
libvips/iofuncs/semaphore.c:	value_after_op = s->v;
libvips/iofuncs/semaphore.c:	g_mutex_unlock( s->mutex );
libvips/iofuncs/semaphore.c:		s->name, n, value_after_op );
libvips/iofuncs/im_mapfile.c: * @(#) As above, but map read-write.
libvips/iofuncs/im_mapfile.c: * @(#) Return -1 on error, 0 for success.
libvips/iofuncs/im_mapfile.c: *	- im_mapfilerw() added
libvips/iofuncs/im_mapfile.c: *	- ANSIfied
libvips/iofuncs/im_mapfile.c: *	- better error if unable to map rw
libvips/iofuncs/im_mapfile.c: *	- better mmap() fails error
libvips/iofuncs/im_mapfile.c: * 	- added im__mmap()/im__munmap() with windows versions
libvips/iofuncs/im_mapfile.c: * 	- patched for freebsd compatibility
libvips/iofuncs/im_mapfile.c: *	- now records length as well as base, so we unmap the right amount of
libvips/iofuncs/im_mapfile.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_mapfile.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_mapfile.c:		return( -1 );
libvips/iofuncs/im_mapfile.c:		return( -1 );
libvips/iofuncs/im_mapfile.c:	assert( !im->baseaddr );
libvips/iofuncs/im_mapfile.c:	g_assert( im->file_length > 0 );
libvips/iofuncs/im_mapfile.c:	if( im->file_length < 64 ) {
libvips/iofuncs/im_mapfile.c:		return( -1 ); 
libvips/iofuncs/im_mapfile.c:	if( fstat( im->fd, &st ) == -1 ) {
libvips/iofuncs/im_mapfile.c:		return( -1 );
libvips/iofuncs/im_mapfile.c:		return( -1 ); 
libvips/iofuncs/im_mapfile.c:	if( !(im->baseaddr = im__mmap( im->fd, 0, im->file_length, 0 )) )
libvips/iofuncs/im_mapfile.c:		return( -1 );
libvips/iofuncs/im_mapfile.c:	im->length = im->file_length;
libvips/iofuncs/im_mapfile.c:	assert( !im->baseaddr );
libvips/iofuncs/im_mapfile.c:	g_assert( im->file_length > 0 );
libvips/iofuncs/im_mapfile.c:	if( fstat( im->fd, &st ) == -1 ) {
libvips/iofuncs/im_mapfile.c:		return( -1 );
libvips/iofuncs/im_mapfile.c:	if( im->file_length < 64 || !S_ISREG( m ) ) {
libvips/iofuncs/im_mapfile.c:		return( -1 ); 
libvips/iofuncs/im_mapfile.c:	if( !(im->baseaddr = im__mmap( im->fd, 1, im->file_length, 0 )) )
libvips/iofuncs/im_mapfile.c:		return( -1 );
libvips/iofuncs/im_mapfile.c:	im->length = im->file_length;
libvips/iofuncs/im_mapfile.c:/* From im_rwcheck() ... image needs to be a completely mapped read-only file, 
libvips/iofuncs/im_mapfile.c: * we try to remap it read-write. 
libvips/iofuncs/im_mapfile.c:	HANDLE hFile = (HANDLE) _get_osfhandle( image->fd );
libvips/iofuncs/im_mapfile.c:                return( -1 );
libvips/iofuncs/im_mapfile.c:	if( !UnmapViewOfFile( image->baseaddr ) ) {
libvips/iofuncs/im_mapfile.c:		return( -1 );
libvips/iofuncs/im_mapfile.c:		0, 0, 0, image->baseaddr )) ) {
libvips/iofuncs/im_mapfile.c:                return( -1 );
libvips/iofuncs/im_mapfile.c:	assert( image->dtype == IM_MMAPIN );
libvips/iofuncs/im_mapfile.c:	baseaddr = mmap( image->baseaddr, image->length,
libvips/iofuncs/im_mapfile.c:		image->fd, 0 );
libvips/iofuncs/im_mapfile.c:	if( baseaddr == (void *)-1 ) { 
libvips/iofuncs/im_mapfile.c:		im_error( "im_mapfile", _( "unable to mmap: \"%s\" - %s" ),
libvips/iofuncs/im_mapfile.c:			image->filename, strerror( errno ) );
libvips/iofuncs/im_mapfile.c:		return( -1 ); 
libvips/iofuncs/im_mapfile.c:	image->dtype = IM_MMAPINRW;
libvips/iofuncs/im_mapfile.c:	if( baseaddr != image->baseaddr ) {
libvips/iofuncs/im_mapfile.c:			"address" ), image->filename );
libvips/iofuncs/im_mapfile.c:		image->baseaddr = baseaddr;
libvips/iofuncs/im_mapfile.c:		return( -1 ); 
libvips/iofuncs/im_binfile.c:/* im_binfile.c --- load a raw binary file
libvips/iofuncs/im_binfile.c: *	- includes fixed
libvips/iofuncs/im_binfile.c: *	- externs fixed
libvips/iofuncs/im_binfile.c: *	- im_outcheck() added
libvips/iofuncs/im_binfile.c: *	- now uses im_mapfile(), rather than read() and copy
libvips/iofuncs/im_binfile.c: * 	- hence returns a new IMAGE descriptor
libvips/iofuncs/im_binfile.c: *	- oops! mess up with fd on errors
libvips/iofuncs/im_binfile.c: *	- added offset param
libvips/iofuncs/im_binfile.c: *	- data init was broken by im_mapfile() change
libvips/iofuncs/im_binfile.c: * 	- use int64 for size calcs so we can map >31 bit files on 64 bit
libvips/iofuncs/im_binfile.c: * 	- delay mmap() for large files, cf. im_openin()
libvips/iofuncs/im_binfile.c: *	- fix signed/unsigned warnings
libvips/iofuncs/im_binfile.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_binfile.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_binfile.c: * It returns an 8-bit image with @bands bands. If the image is not 8-bit, use 
libvips/iofuncs/im_binfile.c:	if( (im->fd = im__open_image_file( name )) == -1 ) {
libvips/iofuncs/im_binfile.c:	im->dtype = IM_OPENIN;
libvips/iofuncs/im_binfile.c:	im->sizeof_header = offset;
libvips/iofuncs/im_binfile.c:	if( (rsize = im_file_length( im->fd )) == -1 ) {
libvips/iofuncs/im_binfile.c:	im->file_length = rsize;
libvips/iofuncs/im_binfile.c:			"file has been truncated" ), im->filename );
libvips/iofuncs/im_binfile.c:			im->filename );
libvips/iofuncs/im_binfile.c:	im->Xsize = xsize;
libvips/iofuncs/im_binfile.c:	im->Ysize = ysize;
libvips/iofuncs/im_binfile.c:	im->Bands = bands;
libvips/iofuncs/im_binfile.c:	im->BandFmt = IM_BANDFMT_UCHAR;
libvips/iofuncs/im_binfile.c:	im->Bbits = im_bits_of_fmt( im->BandFmt );
libvips/iofuncs/im_binfile.c:	im->Coding = IM_CODING_NONE;
libvips/iofuncs/im_binfile.c:		im->Type = IM_TYPE_B_W;
libvips/iofuncs/im_binfile.c:		im->Type = IM_TYPE_RGB;
libvips/iofuncs/im_binfile.c:		im->Type = IM_TYPE_MULTIBAND;
libvips/iofuncs/im_binfile.c:	im->Xres = 1.0;
libvips/iofuncs/im_binfile.c:	im->Yres = 1.0;
libvips/iofuncs/im_binfile.c:	im->Length = 0;
libvips/iofuncs/im_binfile.c:	im->Compression = 0;
libvips/iofuncs/im_binfile.c:	im->Level = 0;
libvips/iofuncs/im_binfile.c:	im->Xoffset = 0;
libvips/iofuncs/im_binfile.c:	im->Yoffset = 0;
libvips/iofuncs/im_binfile.c:	im->dhint = IM_THINSTRIP;
libvips/iofuncs/im_unmapfile.c: * @(#) Returns 0 on success and -1 on error.
libvips/iofuncs/im_unmapfile.c: *	- ANSIfied
libvips/iofuncs/im_unmapfile.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_unmapfile.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_unmapfile.c:	if( im__munmap( im->baseaddr, im->length ) ) 
libvips/iofuncs/im_unmapfile.c:		return( -1 );
libvips/iofuncs/im_unmapfile.c:	im->baseaddr = NULL;
libvips/iofuncs/im_unmapfile.c:	im->length = 0;
libvips/iofuncs/error.c:/* error.c --- error message handling 
libvips/iofuncs/error.c: *	- i18n added, domain now separate arg
libvips/iofuncs/error.c: * 	- lock around error buffer changes
libvips/iofuncs/error.c: * 	- lock around warnings and diagnostics too, why not
libvips/iofuncs/error.c: * 	- error_exit() moved here
libvips/iofuncs/error.c: * 	- gtkdoc comments
libvips/iofuncs/error.c: * 	- fmt to error_exit() may be NULL
libvips/iofuncs/error.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/error.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/error.c: *   return( -1 );
libvips/iofuncs/error.c: * if( im->Xsize < 100 ) {
libvips/iofuncs/error.c: *   return( -1 );
libvips/iofuncs/error.c: * @fmt: printf()-style format string for the error
libvips/iofuncs/error.c: * @fmt: printf()-style format string for the error
libvips/iofuncs/error.c: * @fmt: printf()-style format string for the error
libvips/iofuncs/error.c:	buf = g_locale_to_utf8( strerror( err ), -1, NULL, NULL, NULL );
libvips/iofuncs/error.c: * @fmt: printf()-style format string for the error
libvips/iofuncs/error.c: * @fmt: printf()-style format string for the message
libvips/iofuncs/error.c: * @fmt: printf()-style format string for the message
libvips/iofuncs/error.c: * @fmt: printf()-style format string for the message
libvips/iofuncs/error.c: * @fmt: printf()-style format string for the message
libvips/iofuncs/error.c: * @fmt: printf()-style format string for the message
libvips/iofuncs/im_close.c:/* im_close.c --- close an image
libvips/iofuncs/im_close.c: *	- im_update_descfile code tidied up
libvips/iofuncs/im_close.c: *     	- free on NULL string when junking Hist fixed
libvips/iofuncs/im_close.c: *     	- now calls im_unmapfile
libvips/iofuncs/im_close.c: *     	- better behaviour if image has been opened and closed with 
libvips/iofuncs/im_close.c: *      - better behaviour for half-made IMAGE descriptors
libvips/iofuncs/im_close.c: *      - additions for freeing partial images
libvips/iofuncs/im_close.c: *      - close callback list added
libvips/iofuncs/im_close.c: *      - im__close() added
libvips/iofuncs/im_close.c: *	- im_update_descfile -> write_descfile
libvips/iofuncs/im_close.c: *	- if Hist is NULL, no longer makes up and writes .desc file
libvips/iofuncs/im_close.c: *	- evalend callbacks added
libvips/iofuncs/im_close.c: *	- ANSIfied
libvips/iofuncs/im_close.c: *	- now tracks open images ... see also im_init() and debug.c
libvips/iofuncs/im_close.c: *	- SETBUF_FOREIGN added
libvips/iofuncs/im_close.c: *	- frees as much as possible on im_close() failure
libvips/iofuncs/im_close.c: *	- free Meta on close
libvips/iofuncs/im_close.c: *	- actually, free Meta on final close, so we carry meta over on an
libvips/iofuncs/im_close.c: *	- call im__writehist() to send history to XML after image data
libvips/iofuncs/im_close.c: * 	- free history_list 
libvips/iofuncs/im_close.c: * 	- added preclose, removed evalend triggers
libvips/iofuncs/im_close.c: * 	- im__close() will no longer free regions
libvips/iofuncs/im_close.c: * 	- lock global image list (thanks Lee)
libvips/iofuncs/im_close.c: * 	- move close callbacks *after* we have released resources --- we
libvips/iofuncs/im_close.c: * 	- use preclose callbacks if you want to run before resources are
libvips/iofuncs/im_close.c: * 	- gtkdoc comment
libvips/iofuncs/im_close.c: * 	- added postclose
libvips/iofuncs/im_close.c: * 	- added written
libvips/iofuncs/im_close.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_close.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_close.c: * call to im_init had just happened - ie. the filename is set, but no other
libvips/iofuncs/im_close.c: * image! On an error, return non-zero and leave the image in an indeterminate
libvips/iofuncs/im_close.c:	printf( "im__close: starting for %s ..\n", im->filename );
libvips/iofuncs/im_close.c:	/* Trigger all pre-close fns.
libvips/iofuncs/im_close.c:	result |= im__trigger_callbacks( im->preclosefns );
libvips/iofuncs/im_close.c:	IM_FREEF( im_slist_free_all, im->preclosefns );
libvips/iofuncs/im_close.c:	if( im->regions ) {
libvips/iofuncs/im_close.c:		for( p = im->regions; p; p = p->next )
libvips/iofuncs/im_close.c:			im_region_print( (REGION *) p->data );
libvips/iofuncs/im_close.c:	if( im->windows ) {
libvips/iofuncs/im_close.c:		for( p = im->windows; p; p = p->next )
libvips/iofuncs/im_close.c:			im_window_print( (im_window_t *) p->data );
libvips/iofuncs/im_close.c:	im->start = NULL;
libvips/iofuncs/im_close.c:	im->generate = NULL;
libvips/iofuncs/im_close.c:	im->stop = NULL;
libvips/iofuncs/im_close.c:	if( im->baseaddr ) {
libvips/iofuncs/im_close.c:			return( -1 );
libvips/iofuncs/im_close.c:		im->data = NULL;
libvips/iofuncs/im_close.c:	if( im->fd != -1 ) {
libvips/iofuncs/im_close.c:		if( im->dtype == IM_OPENOUT && im__writehist( im ) ) 
libvips/iofuncs/im_close.c:			result = -1;
libvips/iofuncs/im_close.c:		if( close( im->fd ) == -1 ) {
libvips/iofuncs/im_close.c:				im->filename );
libvips/iofuncs/im_close.c:			result = -1;
libvips/iofuncs/im_close.c:		im->fd = -1;
libvips/iofuncs/im_close.c:	if( im->data ) {
libvips/iofuncs/im_close.c:		if( im->dtype == IM_SETBUF ) {
libvips/iofuncs/im_close.c:			im_free( im->data );
libvips/iofuncs/im_close.c:			im->dtype = IM_NONE;
libvips/iofuncs/im_close.c:		im->data = NULL;
libvips/iofuncs/im_close.c:	IM_FREEF( im_slist_free_all, im->evalstartfns );
libvips/iofuncs/im_close.c:	IM_FREEF( im_slist_free_all, im->evalfns );
libvips/iofuncs/im_close.c:	IM_FREEF( im_slist_free_all, im->evalendfns );
libvips/iofuncs/im_close.c:	IM_FREEF( im_slist_free_all, im->invalidatefns );
libvips/iofuncs/im_close.c:	IM_FREEF( im_slist_free_all, im->writtenfns );
libvips/iofuncs/im_close.c:	result |= im__trigger_callbacks( im->closefns );
libvips/iofuncs/im_close.c:	IM_FREEF( im_slist_free_all, im->closefns );
libvips/iofuncs/im_close.c:	im->dtype = IM_NONE;
libvips/iofuncs/im_close.c:	im->dhint = IM_SMALLTILE;
libvips/iofuncs/im_close.c:	im->kill = 0;
libvips/iofuncs/im_close.c:	im->close_pending = 0;
libvips/iofuncs/im_close.c:	im->sizeof_header = IM_SIZEOF_HEADER;
libvips/iofuncs/im_close.c:		im->filename, im );
libvips/iofuncs/im_close.c:	if( im->regions ) {
libvips/iofuncs/im_close.c:			im, im->filename );
libvips/iofuncs/im_close.c:		im->close_pending = 1;
libvips/iofuncs/im_close.c:	else if( !im->closing ) {
libvips/iofuncs/im_close.c:		im->closing = 1;
libvips/iofuncs/im_close.c:			result = -1;
libvips/iofuncs/im_close.c:			im, im->filename );
libvips/iofuncs/im_close.c:		result |= im__trigger_callbacks( im->postclosefns );
libvips/iofuncs/im_close.c:		IM_FREEF( im_slist_free_all, im->postclosefns );
libvips/iofuncs/im_close.c:		IM_FREEF( g_mutex_free, im->sslock );
libvips/iofuncs/im_close.c:		IM_FREE( im->filename );
libvips/iofuncs/im_close.c:		IM_FREE( im->Hist );
libvips/iofuncs/im_close.c:		IM_FREEF( im__gslist_gvalue_free, im->history_list );
libvips/iofuncs/util.c:    Copyright (C) 1991-2003 The National Gallery
libvips/iofuncs/util.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/util.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/util.c:		if( l1->data != l2->data )
libvips/iofuncs/util.c:		l1 = l1->next;
libvips/iofuncs/util.c:		l2 = l2->next;
libvips/iofuncs/util.c:	for( i = copy; i && !(result = fn( i->data, a, b )); i = i->next ) 
libvips/iofuncs/util.c:		i && !(result = fn( i->data, a, b, c, d )); i = i->next ) 
libvips/iofuncs/util.c:	for( i = copy; i && !(result = fn( i->data, a, b )); i = i->next ) 
libvips/iofuncs/util.c:                next = this->next;
libvips/iofuncs/util.c:                if( !(c = fn( this->data, c, a, b )) )
libvips/iofuncs/util.c:		if( fn( tmp->data, a, b ) ) {
libvips/iofuncs/util.c:			GSList *next = tmp->next;
libvips/iofuncs/util.c:				prev->next = next;
libvips/iofuncs/util.c:			tmp->next = NULL;
libvips/iofuncs/util.c:			tmp = tmp->next;
libvips/iofuncs/util.c:	return( (pair->result == pair->fn( value, pair->a, pair->b )) );
libvips/iofuncs/util.c:	if( strcasecmp( class->nickname, nickname ) == 0 )
libvips/iofuncs/util.c:/* Like strncpy(), but always NULL-terminate, and don't pad with NULLs.
libvips/iofuncs/util.c:        for( i = 0; i < n - 1; i++ )
libvips/iofuncs/util.c:	for( i = haystack_len - needle_len; i >= 0; i-- )
libvips/iofuncs/util.c:	return( strcmp( a + m - n, b ) == 0 );
libvips/iofuncs/util.c: * - skip initial break characters
libvips/iofuncs/util.c: * - EOS? return NULL
libvips/iofuncs/util.c: * - skip a series of non-break characters
libvips/iofuncs/util.c: * - write a '\0' over the next break character and return a pointer to the
libvips/iofuncs/util.c:                /* Write in an end-of-string mark and return the start of the
libvips/iofuncs/util.c: * rightmost occurence of the regexp ".[A-Za-z0-9]+:". Example: consider the
libvips/iofuncs/util.c:	for( p = name + strlen( name ) - 1; p > name; p -= 1 )
libvips/iofuncs/util.c:			for( q = p - 1; isalnum( *q ) && q > name; q -= 1 )
libvips/iofuncs/util.c: * separator :-(
libvips/iofuncs/util.c:	 * non-native dir sep.
libvips/iofuncs/util.c:	for( q = p; q > name && q[-1] != native_dir_sep; q-- )
libvips/iofuncs/util.c:		for( q = p; q > name && q[-1] != non_native_dir_sep; q-- )
libvips/iofuncs/util.c:        return( path + (q - name) );
libvips/iofuncs/util.c:	while( (p = strchr( p, ',' )) && p[-1] == '\\' )
libvips/iofuncs/util.c:			return( -1 );
libvips/iofuncs/util.c:/* Get file length ... 64-bitally. -1 for error.
libvips/iofuncs/util.c:	if( _fstati64( fd, &st ) == -1 ) {
libvips/iofuncs/util.c:	if( fstat( fd, &st ) == -1 ) {
libvips/iofuncs/util.c:		return( -1 );
libvips/iofuncs/util.c:		if( nwritten == (size_t) -1 ) {
libvips/iofuncs/util.c:                        return( -1 ); 
libvips/iofuncs/util.c:		count -= nwritten;
libvips/iofuncs/util.c:	if( len == -1 ) {
libvips/iofuncs/util.c:			/* -1 to allow space for an extra NULL we add later.
libvips/iofuncs/util.c:				(size - len - 1) / sizeof( char ),
libvips/iofuncs/util.c:	for( p = list; p; p = p->next ) 
libvips/iofuncs/util.c:			im__gvalue_copy( (GValue *) p->data ) );
libvips/iofuncs/util.c:	for( i = b; i; i = i->next ) {
libvips/iofuncs/util.c:		GValue *value = (GValue *) i->data;
libvips/iofuncs/util.c:		for( j = a; j; j = j->next ) {
libvips/iofuncs/util.c:			GValue *value2 = (GValue *) j->data;
libvips/iofuncs/util.c: * free the result. Empty list -> "", not NULL. Join strings with '\n'.
libvips/iofuncs/util.c:	for( p = list; p; p = p->next ) {
libvips/iofuncs/util.c:		GValue *value = (GValue *) p->data;
libvips/iofuncs/util.c:	for( p = list; p; p = p->next ) {
libvips/iofuncs/util.c:		GValue *value = (GValue *) p->data;
libvips/iofuncs/util.c:	g_assert( (size_t) (q - all) == length );
libvips/iofuncs/util.c:		return( -1 );
libvips/iofuncs/util.c:	if( lseek( fd, pos, SEEK_SET ) == (off_t) -1 ) {
libvips/iofuncs/util.c:		return( -1 );
libvips/iofuncs/util.c:		return( -1 );
libvips/iofuncs/util.c:		return( -1 );
libvips/iofuncs/util.c:		return( -1 );
libvips/iofuncs/util.c:/* Like fwrite(), but returns non-zero on error and sets error message.
libvips/iofuncs/util.c:		return( -1 );
libvips/iofuncs/util.c:	if( (fd = open( filename, O_RDONLY | O_BINARY )) == -1 )
libvips/iofuncs/util.c:	if( (fd = open( filename, O_RDONLY )) == -1 )
libvips/iofuncs/util.c:/* Break a command-line argument into tokens separated by whitespace. Strings
libvips/iofuncs/util.c:				n = q - p + 1;
libvips/iofuncs/util.c:				string[n - 1] = ch;
libvips/iofuncs/util.c:			size -= n;
libvips/iofuncs/util.c:		} while( p[0] && p[-1] == '\\' );
libvips/iofuncs/util.c:		/* It's an unquoted string: read up to the next non-string
libvips/iofuncs/util.c:		while( isspace( string[n - 1] ) ) {
libvips/iofuncs/util.c:			string[n - 1] = '\0';
libvips/iofuncs/util.c:			n -= 1;
libvips/iofuncs/util.c:        (void) im_vsnprintf( buf1, PATH_MAX - 1, name, ap );
libvips/iofuncs/util.c:/* Do popen(), with printf-style args.
libvips/iofuncs/util.c:			/* SPARC-order VIPS image.
libvips/iofuncs/util.c:			/* INTEL-order VIPS image.
libvips/iofuncs/util.c: * and will be expanded to something like "/tmp/vips-12-34587.jpg".
libvips/iofuncs/util.c:	im_snprintf( file, FILENAME_MAX, "vips-%d-XXXXXX", serial++ );
libvips/iofuncs/util.c:	if( (fd = g_mkstemp( name )) == -1 ) {
libvips/iofuncs/util.c:		(im_callback_fn) unlink, disc->filename, NULL ) ) {
libvips/iofuncs/util.c:/* Return number of pel bits for band format, or -1 on error.
libvips/iofuncs/util.c:		-1 :
libvips/iofuncs/im_demand_hint.c: *	- IM_ANY added
libvips/iofuncs/im_demand_hint.c: * 	- minor change to rules: don't force ANY on no-input operations ...
libvips/iofuncs/im_demand_hint.c: * 	- build parent/child links as well
libvips/iofuncs/im_demand_hint.c: * 	- gtkdoc comments
libvips/iofuncs/im_demand_hint.c: * 	- move link maintenance to im_demand_hint
libvips/iofuncs/im_demand_hint.c: * 	- rename parent/child as downstream/upstream, much clearer!
libvips/iofuncs/im_demand_hint.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_demand_hint.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_demand_hint.c:	im_up->downstream = g_slist_prepend( im_up->downstream, im_down );
libvips/iofuncs/im_demand_hint.c:	im_down->upstream = g_slist_prepend( im_down->upstream, im_up );
libvips/iofuncs/im_demand_hint.c:	if( im_up->progress && !im_down->progress ) 
libvips/iofuncs/im_demand_hint.c:		im_down->progress = im_up->progress;
libvips/iofuncs/im_demand_hint.c:	g_assert( g_slist_find( im_up->downstream, im_down ) );
libvips/iofuncs/im_demand_hint.c:	g_assert( g_slist_find( im_down->upstream, im_up ) );
libvips/iofuncs/im_demand_hint.c:	im_up->downstream = g_slist_remove( im_up->downstream, im_down );
libvips/iofuncs/im_demand_hint.c:	im_down->upstream = g_slist_remove( im_down->upstream, im_up );
libvips/iofuncs/im_demand_hint.c:	if( im_down->progress && im_down->progress == im_up->progress ) 
libvips/iofuncs/im_demand_hint.c:		im_down->progress = NULL;
libvips/iofuncs/im_demand_hint.c:	im_slist_map2( im->upstream, 
libvips/iofuncs/im_demand_hint.c:	im_slist_map2( im->downstream, 
libvips/iofuncs/im_demand_hint.c:	g_assert( !im->upstream );
libvips/iofuncs/im_demand_hint.c:	g_assert( !im->downstream );
libvips/iofuncs/im_demand_hint.c:	if( im->serial == *serial )
libvips/iofuncs/im_demand_hint.c:	im->serial = *serial;
libvips/iofuncs/im_demand_hint.c:	return( im_slist_map4( im->downstream,
libvips/iofuncs/im_demand_hint.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/im_demand_hint.c:		if( in[i]->dhint == IM_ANY )
libvips/iofuncs/im_demand_hint.c:			hint = find_least( hint, in[i]->dhint );
libvips/iofuncs/im_demand_hint.c:	im->dhint = hint;
libvips/iofuncs/im_demand_hint.c:		im->filename, im_dhint2char( im->dhint ) );
libvips/iofuncs/im_demand_hint.c:	im->hint_set = TRUE;
libvips/iofuncs/im_demand_hint.c: * @Varargs: %NULL-terminated list of input images to this operation
libvips/iofuncs/im_demand_hint.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/im_demand_hint.c:		return( -1 );
libvips/iofuncs/debug.c: *	- first version
libvips/iofuncs/debug.c: *	- print more mem allocation info
libvips/iofuncs/debug.c: * 	- im_image_sanity() moved here
libvips/iofuncs/debug.c: * 	- im_printdesc() moved here
libvips/iofuncs/debug.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/debug.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/debug.c:	if( n < 0 || n > etable->nnames ) 
libvips/iofuncs/debug.c:		return( _( etable->error ) );
libvips/iofuncs/debug.c:		return( etable->names[n] );
libvips/iofuncs/debug.c:	for( i = 0; i < etable->nnames; i++ )
libvips/iofuncs/debug.c:		if( g_ascii_strcasecmp( etable->names[i], name ) == 0 )
libvips/iofuncs/debug.c:	im_error( "char2enum", "%s", _( etable->error ) );
libvips/iofuncs/debug.c:	return( -1 );
libvips/iofuncs/debug.c:	if( r->type == IM_REGION_BUFFER && r->buffer ) {
libvips/iofuncs/debug.c:			*n2, r->buffer->bsize );
libvips/iofuncs/debug.c:		*total += r->buffer->bsize;
libvips/iofuncs/debug.c:/* Print a one-line description of an image, with an index.
libvips/iofuncs/debug.c:		im_dtype2char( im->dtype ), im->filename, 
libvips/iofuncs/debug.c:		im->Xsize, im->Ysize, im->Bands,
libvips/iofuncs/debug.c:		im_BandFmt2char( im->BandFmt ) );
libvips/iofuncs/debug.c:	if( im->dtype == IM_SETBUF && im->data ) {
libvips/iofuncs/debug.c:		gint64 size = (gint64) IM_IMAGE_SIZEOF_LINE( im ) * im->Ysize;
libvips/iofuncs/debug.c:	if( im->regions ) {
libvips/iofuncs/debug.c:		printf( "\t%d regions\n", g_slist_length( im->regions ) );
libvips/iofuncs/debug.c:		(void) im_slist_map2( im->regions, 
libvips/iofuncs/debug.c:			printf( "\n\t*** all-image total = %" G_GINT64_FORMAT 
libvips/iofuncs/debug.c:		printf( " - %s", extra );
libvips/iofuncs/debug.c:		reg->valid.left, reg->valid.top,
libvips/iofuncs/debug.c:		reg->valid.width, reg->valid.height );
libvips/iofuncs/debug.c:	if( reg->seq )
libvips/iofuncs/debug.c:	if( reg->buffer )
libvips/iofuncs/debug.c:	/* Print other (non-header) fields.
libvips/iofuncs/debug.c:	if( image->generate )
libvips/iofuncs/debug.c:	if( image->preclosefns )
libvips/iofuncs/debug.c:	if( image->closefns )
libvips/iofuncs/debug.c:	if( image->postclosefns )
libvips/iofuncs/debug.c:	if( image->writtenfns )
libvips/iofuncs/debug.c:	if( image->evalfns )
libvips/iofuncs/debug.c:	if( image->evalendfns )
libvips/iofuncs/debug.c:	if( image->evalstartfns )
libvips/iofuncs/debug.c:	if( image->invalidatefns )
libvips/iofuncs/debug.c:	if( image->regions ) {
libvips/iofuncs/debug.c:			g_slist_length( image->regions ) );
libvips/iofuncs/debug.c:		im_slist_map2( image->regions, 
libvips/iofuncs/debug.c:	if( image->kill )
libvips/iofuncs/debug.c:	if( image->closing )
libvips/iofuncs/debug.c:	if( image->close_pending )
libvips/iofuncs/debug.c:	printf( "dhint: %s\n", im_dhint2char( image->dhint ) );
libvips/iofuncs/debug.c:	printf( "dtype: %s\n", im_dtype2char( image->dtype ) );
libvips/iofuncs/debug.c:	if( !g_slist_find( im_up->downstream, im_down ) ||
libvips/iofuncs/debug.c:		!g_slist_find( im_down->upstream, im_up ) )
libvips/iofuncs/debug.c:	if( !im->filename ) 
libvips/iofuncs/debug.c:	/* All -1 means im has been inited but never used.
libvips/iofuncs/debug.c:	if( im->Xsize != -1 ||
libvips/iofuncs/debug.c:		im->Ysize != -1 ||
libvips/iofuncs/debug.c:		im->Bands != -1 ||
libvips/iofuncs/debug.c:		im->BandFmt != -1 ) {
libvips/iofuncs/debug.c:		if( im->Xsize <= 0 || im->Ysize <= 0 || im->Bands <= 0 ) 
libvips/iofuncs/debug.c:		if( im->BandFmt < -1 || im->BandFmt > IM_BANDFMT_DPCOMPLEX ||
libvips/iofuncs/debug.c:			(im->Coding != -1 &&
libvips/iofuncs/debug.c:				im->Coding != IM_CODING_NONE && 
libvips/iofuncs/debug.c:				im->Coding != IM_CODING_LABQ &&
libvips/iofuncs/debug.c:				im->Coding != IM_CODING_RAD) ||
libvips/iofuncs/debug.c:			im->Type > IM_TYPE_GREY16 )
libvips/iofuncs/debug.c:		if( im->dtype > IM_PARTIAL || 
libvips/iofuncs/debug.c:			im->dhint > IM_ANY ) 
libvips/iofuncs/debug.c:		if( im->Xres < 0 || im->Xres < 0 ) 
libvips/iofuncs/debug.c:	if( im_slist_map2( im->upstream, 
libvips/iofuncs/debug.c:	if( im_slist_map2( im->downstream, 
libvips/iofuncs/debug.c:			im ? (im->filename ? im->filename : "") : "", 
libvips/iofuncs/debug.c:		return( -1 );
libvips/iofuncs/sinkdisc.c: * 	- from im_wbuffer.c
libvips/iofuncs/sinkdisc.c: * 	- move on top of VipsThreadpool, instead of im_threadgroup_t
libvips/iofuncs/sinkdisc.c: * 	- better buffer handling for single-line images
libvips/iofuncs/sinkdisc.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/sinkdisc.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/sinkdisc.c:/* Per-call state.
libvips/iofuncs/sinkdisc.c:/* Our per-thread state ... we need to also track the buffer that pos is
libvips/iofuncs/sinkdisc.c:	object_class->nickname = "writethreadstate";
libvips/iofuncs/sinkdisc.c:	object_class->description = _( "per-thread state for sinkdisc" );
libvips/iofuncs/sinkdisc.c:	state->buf = NULL;
libvips/iofuncs/sinkdisc.c:        if( wbuffer->thread ) {
libvips/iofuncs/sinkdisc.c:                wbuffer->kill = TRUE;
libvips/iofuncs/sinkdisc.c:		im_semaphore_up( &wbuffer->go );
libvips/iofuncs/sinkdisc.c:		(void) g_thread_join( wbuffer->thread );
libvips/iofuncs/sinkdisc.c:		wbuffer->thread = NULL;
libvips/iofuncs/sinkdisc.c:	IM_FREEF( im_region_free, wbuffer->region );
libvips/iofuncs/sinkdisc.c:	im_semaphore_destroy( &wbuffer->go );
libvips/iofuncs/sinkdisc.c:	im_semaphore_destroy( &wbuffer->nwrite );
libvips/iofuncs/sinkdisc.c:	im_semaphore_destroy( &wbuffer->done );
libvips/iofuncs/sinkdisc.c:	Write *write = wbuffer->write;
libvips/iofuncs/sinkdisc.c:		wbuffer->region->bpl * wbuffer->area.height, wbuffer );
libvips/iofuncs/sinkdisc.c:	wbuffer->write_errno = write->write_fn( wbuffer->region, 
libvips/iofuncs/sinkdisc.c:		&wbuffer->area, write->a );
libvips/iofuncs/sinkdisc.c:		im_semaphore_down( &wbuffer->go );
libvips/iofuncs/sinkdisc.c:		if( wbuffer->kill )
libvips/iofuncs/sinkdisc.c:		im_semaphore_downn( &wbuffer->nwrite, 0 );
libvips/iofuncs/sinkdisc.c:		im_semaphore_up( &wbuffer->done );
libvips/iofuncs/sinkdisc.c:	wbuffer->write = write;
libvips/iofuncs/sinkdisc.c:	wbuffer->region = NULL;
libvips/iofuncs/sinkdisc.c:	im_semaphore_init( &wbuffer->go, 0, "go" );
libvips/iofuncs/sinkdisc.c:	im_semaphore_init( &wbuffer->nwrite, 0, "nwrite" );
libvips/iofuncs/sinkdisc.c:	im_semaphore_init( &wbuffer->done, 0, "done" );
libvips/iofuncs/sinkdisc.c:	wbuffer->write_errno = 0;
libvips/iofuncs/sinkdisc.c:	wbuffer->thread = NULL;
libvips/iofuncs/sinkdisc.c:	wbuffer->kill = FALSE;
libvips/iofuncs/sinkdisc.c:	if( !(wbuffer->region = im_region_create( write->im )) ) {
libvips/iofuncs/sinkdisc.c:	im__region_no_ownership( wbuffer->region );
libvips/iofuncs/sinkdisc.c:	if( !(wbuffer->thread = g_thread_create( wbuffer_write_thread, wbuffer, 
libvips/iofuncs/sinkdisc.c:	if( write->buf->area.top > 0 ) {
libvips/iofuncs/sinkdisc.c:		im_semaphore_down( &write->buf_back->done );
libvips/iofuncs/sinkdisc.c:		if( write->buf_back->write_errno ) {
libvips/iofuncs/sinkdisc.c:			im_error_system( write->buf_back->write_errno,
libvips/iofuncs/sinkdisc.c:			return( -1 ); 
libvips/iofuncs/sinkdisc.c:	im_semaphore_up( &write->buf->go );
libvips/iofuncs/sinkdisc.c:	wbuffer_write( write->buf );
libvips/iofuncs/sinkdisc.c:	image.width = wbuffer->write->im->Xsize;
libvips/iofuncs/sinkdisc.c:	image.height = wbuffer->write->im->Ysize;
libvips/iofuncs/sinkdisc.c:	area.width = wbuffer->write->im->Xsize;
libvips/iofuncs/sinkdisc.c:	im_rect_intersectrect( &area, &image, &wbuffer->area );
libvips/iofuncs/sinkdisc.c:	im__region_take_ownership( wbuffer->region );
libvips/iofuncs/sinkdisc.c:	result = im_region_buffer( wbuffer->region, &wbuffer->area );
libvips/iofuncs/sinkdisc.c:	im__region_no_ownership( wbuffer->region );
libvips/iofuncs/sinkdisc.c:	g_assert( !wbuffer->region->buffer->done );
libvips/iofuncs/sinkdisc.c:	if( write->x >= write->buf->area.width ) {
libvips/iofuncs/sinkdisc.c:		write->x = 0;
libvips/iofuncs/sinkdisc.c:		write->y += write->tile_height;
libvips/iofuncs/sinkdisc.c:		if( write->y >= IM_RECT_BOTTOM( &write->buf->area ) ) {
libvips/iofuncs/sinkdisc.c:				return( -1 );
libvips/iofuncs/sinkdisc.c:			if( write->y >= write->im->Ysize ) {
libvips/iofuncs/sinkdisc.c:				t = write->buf; 
libvips/iofuncs/sinkdisc.c:				write->buf = write->buf_back; 
libvips/iofuncs/sinkdisc.c:				write->buf_back = t;
libvips/iofuncs/sinkdisc.c:			if( wbuffer_position( write->buf, 
libvips/iofuncs/sinkdisc.c:				write->y, write->nlines ) )
libvips/iofuncs/sinkdisc.c:				return( -1 );
libvips/iofuncs/sinkdisc.c:	image.width = write->im->Xsize;
libvips/iofuncs/sinkdisc.c:	image.height = write->im->Ysize;
libvips/iofuncs/sinkdisc.c:	tile.left = write->x;
libvips/iofuncs/sinkdisc.c:	tile.top = write->y;
libvips/iofuncs/sinkdisc.c:	tile.width = write->tile_width;
libvips/iofuncs/sinkdisc.c:	tile.height = write->tile_height;
libvips/iofuncs/sinkdisc.c:	im_rect_intersectrect( &image, &tile, &state->pos );
libvips/iofuncs/sinkdisc.c:	wstate->buf = write->buf;
libvips/iofuncs/sinkdisc.c:	im_semaphore_upn( &write->buf->nwrite, -1 );
libvips/iofuncs/sinkdisc.c:	write->x += write->tile_width;
libvips/iofuncs/sinkdisc.c:	if( im_prepare_to( state->reg, wstate->buf->region, 
libvips/iofuncs/sinkdisc.c:		&state->pos, state->pos.left, state->pos.top ) )
libvips/iofuncs/sinkdisc.c:		return( -1 );
libvips/iofuncs/sinkdisc.c:	im_semaphore_upn( &wstate->buf->nwrite, 1 );
libvips/iofuncs/sinkdisc.c:		write->tile_width, write->tile_height );
libvips/iofuncs/sinkdisc.c:	if( im__handle_eval( write->im, 
libvips/iofuncs/sinkdisc.c:		write->tile_width, write->tile_height ) )
libvips/iofuncs/sinkdisc.c:		return( -1 );
libvips/iofuncs/sinkdisc.c:	write->im = im;
libvips/iofuncs/sinkdisc.c:	write->buf = wbuffer_new( write );
libvips/iofuncs/sinkdisc.c:	write->buf_back = wbuffer_new( write );
libvips/iofuncs/sinkdisc.c:	write->x = 0;
libvips/iofuncs/sinkdisc.c:	write->y = 0;
libvips/iofuncs/sinkdisc.c:	write->write_fn = write_fn;
libvips/iofuncs/sinkdisc.c:	write->a = a;
libvips/iofuncs/sinkdisc.c:		&write->tile_width, &write->tile_height, &write->nlines );
libvips/iofuncs/sinkdisc.c:	IM_FREEF( wbuffer_free, write->buf );
libvips/iofuncs/sinkdisc.c:	IM_FREEF( wbuffer_free, write->buf_back );
libvips/iofuncs/sinkdisc.c: * Returns: 0 on success, -1 on error.
libvips/iofuncs/sinkdisc.c: * vips_sink_disc() loops over @im, top-to-bottom, generating it in sections.
libvips/iofuncs/sinkdisc.c: * @write_fn is always called single-threaded (though not always from the same
libvips/iofuncs/sinkdisc.c: * sections in top-to-bottom order, and there are never any gaps.
libvips/iofuncs/sinkdisc.c: * Returns: 0 on success, -1 on error.
libvips/iofuncs/sinkdisc.c:		return( -1 );
libvips/iofuncs/sinkdisc.c:		result = -1;
libvips/iofuncs/sinkdisc.c:	im_semaphore_down( &write.buf->done );
libvips/iofuncs/sinkscreen.c: * 	- from im_render.c
libvips/iofuncs/sinkscreen.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/sinkscreen.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/sinkscreen.c:/* A have-threads we can test in if().
libvips/iofuncs/sinkscreen.c:/* Per-call state.
libvips/iofuncs/sinkscreen.c:/* Our per-thread state.
libvips/iofuncs/sinkscreen.c:	object_class->nickname = "renderthreadstate";
libvips/iofuncs/sinkscreen.c:	object_class->description = _( "per-thread state for render" );
libvips/iofuncs/sinkscreen.c:	state->tile = NULL;
libvips/iofuncs/sinkscreen.c:	IM_FREEF( im_region_free, tile->region );
libvips/iofuncs/sinkscreen.c:	g_assert( render->ref_count == 0 );
libvips/iofuncs/sinkscreen.c:		/* We could im_semaphore_upn( &render_dirty_sem, -1 ), but
libvips/iofuncs/sinkscreen.c:	g_mutex_free( render->ref_count_lock );
libvips/iofuncs/sinkscreen.c:	g_mutex_free( render->lock );
libvips/iofuncs/sinkscreen.c:	im_slist_map2( render->all, (VSListMap2Fn) tile_free, NULL, NULL );
libvips/iofuncs/sinkscreen.c:	IM_FREEF( g_slist_free, render->all );
libvips/iofuncs/sinkscreen.c:	render->ntiles = 0;
libvips/iofuncs/sinkscreen.c:	IM_FREEF( g_slist_free, render->dirty );
libvips/iofuncs/sinkscreen.c:	IM_FREEF( g_hash_table_destroy, render->tiles );
libvips/iofuncs/sinkscreen.c:	render_num_renders -= 1;
libvips/iofuncs/sinkscreen.c:	g_mutex_lock( render->ref_count_lock );
libvips/iofuncs/sinkscreen.c:	g_assert( render->ref_count != 0 );
libvips/iofuncs/sinkscreen.c:	render->ref_count += 1;
libvips/iofuncs/sinkscreen.c:	g_mutex_unlock( render->ref_count_lock );
libvips/iofuncs/sinkscreen.c:	g_mutex_lock( render->ref_count_lock );
libvips/iofuncs/sinkscreen.c:	g_assert( render->ref_count > 0 );
libvips/iofuncs/sinkscreen.c:	render->ref_count -= 1;
libvips/iofuncs/sinkscreen.c:	kill = render->ref_count == 0;
libvips/iofuncs/sinkscreen.c:	g_mutex_unlock( render->ref_count_lock );
libvips/iofuncs/sinkscreen.c:		render = (Render *) render_dirty_all->data;
libvips/iofuncs/sinkscreen.c:	if( !render->dirty )
libvips/iofuncs/sinkscreen.c:		tile = (Tile *) render->dirty->data;
libvips/iofuncs/sinkscreen.c:		g_assert( tile->dirty );
libvips/iofuncs/sinkscreen.c:		render->dirty = g_slist_remove( render->dirty, tile );
libvips/iofuncs/sinkscreen.c:		tile->dirty = FALSE;
libvips/iofuncs/sinkscreen.c: * render_work() is working on in the background :-( but I don't think we'll
libvips/iofuncs/sinkscreen.c: * get a crash, just a mis-paint. It should be vanishingly impossible anyway.
libvips/iofuncs/sinkscreen.c:	if( !render->dirty )
libvips/iofuncs/sinkscreen.c:		tile = (Tile *) g_slist_last( render->dirty )->data;
libvips/iofuncs/sinkscreen.c:		render->dirty = g_slist_remove( render->dirty, tile );
libvips/iofuncs/sinkscreen.c:		g_assert( tile->dirty );
libvips/iofuncs/sinkscreen.c:		tile->dirty = FALSE;
libvips/iofuncs/sinkscreen.c:	Render *render = tile->render;
libvips/iofuncs/sinkscreen.c:	if( !tile->dirty ) {
libvips/iofuncs/sinkscreen.c:		g_assert( !g_slist_find( render->dirty, tile ) );
libvips/iofuncs/sinkscreen.c:		render->dirty = g_slist_prepend( render->dirty, tile );
libvips/iofuncs/sinkscreen.c:		tile->dirty = TRUE;
libvips/iofuncs/sinkscreen.c:		tile->painted = FALSE;
libvips/iofuncs/sinkscreen.c:		g_assert( g_slist_find( render->dirty, tile ) );
libvips/iofuncs/sinkscreen.c:	Render *render = tile->render;
libvips/iofuncs/sinkscreen.c:	if( tile->dirty ) {
libvips/iofuncs/sinkscreen.c:		g_assert( g_slist_find( render->dirty, tile ) );
libvips/iofuncs/sinkscreen.c:		render->dirty = g_slist_remove( render->dirty, tile );
libvips/iofuncs/sinkscreen.c:		render->dirty = g_slist_prepend( render->dirty, tile );
libvips/iofuncs/sinkscreen.c:		g_assert( !g_slist_find( render->dirty, tile ) );
libvips/iofuncs/sinkscreen.c:	g_mutex_lock( render->lock );
libvips/iofuncs/sinkscreen.c:		rstate->tile = NULL;
libvips/iofuncs/sinkscreen.c:		rstate->tile = tile;
libvips/iofuncs/sinkscreen.c:	g_mutex_unlock( render->lock );
libvips/iofuncs/sinkscreen.c:	Tile *tile = rstate->tile;
libvips/iofuncs/sinkscreen.c:		tile, tile->area.left, tile->area.top );
libvips/iofuncs/sinkscreen.c:	if( im_prepare_to( state->reg, tile->region, 
libvips/iofuncs/sinkscreen.c:		&tile->area, tile->area.left, tile->area.top ) ) {
libvips/iofuncs/sinkscreen.c:		return( -1 );
libvips/iofuncs/sinkscreen.c:	tile->painted = TRUE;
libvips/iofuncs/sinkscreen.c:	if( render->notify ) 
libvips/iofuncs/sinkscreen.c:		render->notify( render->out, &tile->area, render->a );
libvips/iofuncs/sinkscreen.c:	return( b->priority - a->priority );
libvips/iofuncs/sinkscreen.c:	if( render->dirty ) {
libvips/iofuncs/sinkscreen.c:			if( vips_threadpool_run( render->in,
libvips/iofuncs/sinkscreen.c:/* Create our set of RenderThread. Assume we're single-threaded here.
libvips/iofuncs/sinkscreen.c:			return( -1 );
libvips/iofuncs/sinkscreen.c:	int x = rect->left / rect->width;
libvips/iofuncs/sinkscreen.c:	int y = rect->top / rect->height;
libvips/iofuncs/sinkscreen.c:	return( rect1->left == rect2->left &&
libvips/iofuncs/sinkscreen.c:		rect1->top == rect2->top );
libvips/iofuncs/sinkscreen.c:	/* Don't use auto-free for render, we do our own lifetime management
libvips/iofuncs/sinkscreen.c:	render->ref_count = 1;
libvips/iofuncs/sinkscreen.c:	render->ref_count_lock = g_mutex_new();
libvips/iofuncs/sinkscreen.c:	render->in = in;
libvips/iofuncs/sinkscreen.c:	render->out = out;
libvips/iofuncs/sinkscreen.c:	render->mask = mask;
libvips/iofuncs/sinkscreen.c:	render->tile_width = tile_width;
libvips/iofuncs/sinkscreen.c:	render->tile_height = tile_height;
libvips/iofuncs/sinkscreen.c:	render->max_tiles = max_tiles;
libvips/iofuncs/sinkscreen.c:	render->priority = priority;
libvips/iofuncs/sinkscreen.c:	render->notify = notify;
libvips/iofuncs/sinkscreen.c:	render->a = a;
libvips/iofuncs/sinkscreen.c:	render->lock = g_mutex_new();
libvips/iofuncs/sinkscreen.c:	render->all = NULL;
libvips/iofuncs/sinkscreen.c:	render->ntiles = 0;
libvips/iofuncs/sinkscreen.c:	render->ticks = 0;
libvips/iofuncs/sinkscreen.c:	render->tiles = g_hash_table_new( tile_hash, tile_equal ); 
libvips/iofuncs/sinkscreen.c:	render->dirty = NULL;
libvips/iofuncs/sinkscreen.c:	/* Don't use auto-free: we need to make sure we free the tile after
libvips/iofuncs/sinkscreen.c:	tile->render = render;
libvips/iofuncs/sinkscreen.c:	tile->area.left = 0;
libvips/iofuncs/sinkscreen.c:	tile->area.top = 0;
libvips/iofuncs/sinkscreen.c:	tile->area.width = render->tile_width;
libvips/iofuncs/sinkscreen.c:	tile->area.height = render->tile_height;
libvips/iofuncs/sinkscreen.c:	tile->region = NULL;
libvips/iofuncs/sinkscreen.c:	tile->painted = FALSE;
libvips/iofuncs/sinkscreen.c:	tile->dirty = FALSE;
libvips/iofuncs/sinkscreen.c:	tile->ticks = render->ticks;
libvips/iofuncs/sinkscreen.c:	if( !(tile->region = im_region_create( render->in )) ) {
libvips/iofuncs/sinkscreen.c:	render->all = g_slist_prepend( render->all, tile );
libvips/iofuncs/sinkscreen.c:	render->ntiles += 1;
libvips/iofuncs/sinkscreen.c:	return( (Tile *) g_hash_table_lookup( render->tiles, area ) );
libvips/iofuncs/sinkscreen.c:	Render *render = tile->render;
libvips/iofuncs/sinkscreen.c:	tile->area = *area;
libvips/iofuncs/sinkscreen.c:	tile->painted = FALSE;
libvips/iofuncs/sinkscreen.c:	if( im_region_buffer( tile->region, &tile->area ) )
libvips/iofuncs/sinkscreen.c:	g_hash_table_insert( render->tiles, &tile->area, tile );
libvips/iofuncs/sinkscreen.c:	Render *render = tile->render;
libvips/iofuncs/sinkscreen.c:	g_assert( render_tile_lookup( render, &tile->area ) );
libvips/iofuncs/sinkscreen.c:	if( tile->area.left != area->left ||
libvips/iofuncs/sinkscreen.c:		tile->area.top != area->top ) {
libvips/iofuncs/sinkscreen.c:		g_hash_table_remove( render->tiles, &tile->area );
libvips/iofuncs/sinkscreen.c:	Render *render = tile->render;
libvips/iofuncs/sinkscreen.c:	tile->ticks = render->ticks;
libvips/iofuncs/sinkscreen.c:	render->ticks += 1;
libvips/iofuncs/sinkscreen.c:	Render *render = tile->render;
libvips/iofuncs/sinkscreen.c:		tile, tile->area.left, tile->area.top );
libvips/iofuncs/sinkscreen.c:	tile->painted = FALSE;
libvips/iofuncs/sinkscreen.c:	if( render->notify && have_threads ) {
libvips/iofuncs/sinkscreen.c:			tile, tile->area.left, tile->area.top );
libvips/iofuncs/sinkscreen.c:		if( im_prepare( tile->region, &tile->area ) )
libvips/iofuncs/sinkscreen.c:		tile->painted = TRUE;
libvips/iofuncs/sinkscreen.c:	if( value->painted )
libvips/iofuncs/sinkscreen.c:		if( !*best || value->ticks < (*best)->ticks )
libvips/iofuncs/sinkscreen.c:	g_hash_table_foreach( render->tiles,
libvips/iofuncs/sinkscreen.c:		area->left, area->top );
libvips/iofuncs/sinkscreen.c:		if( tile->region->invalid ) 
libvips/iofuncs/sinkscreen.c:	else if( render->ntiles < render->max_tiles || 
libvips/iofuncs/sinkscreen.c:		render->max_tiles == -1 ) {
libvips/iofuncs/sinkscreen.c:	im_rect_intersectrect( &tile->area, &to->valid, &ovlap );
libvips/iofuncs/sinkscreen.c:	if( tile->painted && !tile->region->invalid ) {
libvips/iofuncs/sinkscreen.c:		int len = IM_IMAGE_SIZEOF_PEL( to->im ) * ovlap.width;
libvips/iofuncs/sinkscreen.c:			tile, tile->area.left, tile->area.top ); 
libvips/iofuncs/sinkscreen.c:			PEL *p = (PEL *) IM_REGION_ADDR( tile->region, 
libvips/iofuncs/sinkscreen.c:			tile, tile->area.left, tile->area.top ); 
libvips/iofuncs/sinkscreen.c:	Rect *r = &out->valid;
libvips/iofuncs/sinkscreen.c:	int xs = (r->left / render->tile_width) * render->tile_width;
libvips/iofuncs/sinkscreen.c:	int ys = (r->top / render->tile_height) * render->tile_height;
libvips/iofuncs/sinkscreen.c:                r->left, r->top, r->width, r->height );
libvips/iofuncs/sinkscreen.c:	g_mutex_lock( render->lock );
libvips/iofuncs/sinkscreen.c:	for( y = ys; y < IM_RECT_BOTTOM( r ); y += render->tile_height )
libvips/iofuncs/sinkscreen.c:		for( x = xs; x < IM_RECT_RIGHT( r ); x += render->tile_width ) {
libvips/iofuncs/sinkscreen.c:			area.width = render->tile_width;
libvips/iofuncs/sinkscreen.c:			area.height = render->tile_height;
libvips/iofuncs/sinkscreen.c:	g_mutex_unlock( render->lock );
libvips/iofuncs/sinkscreen.c:	Rect *r = &out->valid;
libvips/iofuncs/sinkscreen.c:	int xs = (r->left / render->tile_width) * render->tile_width;
libvips/iofuncs/sinkscreen.c:	int ys = (r->top / render->tile_height) * render->tile_height;
libvips/iofuncs/sinkscreen.c:                r->left, r->top, r->width, r->height );
libvips/iofuncs/sinkscreen.c:	g_mutex_lock( render->lock );
libvips/iofuncs/sinkscreen.c:	for( y = ys; y < IM_RECT_BOTTOM( r ); y += render->tile_height )
libvips/iofuncs/sinkscreen.c:		for( x = xs; x < IM_RECT_RIGHT( r ); x += render->tile_width ) {
libvips/iofuncs/sinkscreen.c:			area.width = render->tile_width;
libvips/iofuncs/sinkscreen.c:			area.height = render->tile_height;
libvips/iofuncs/sinkscreen.c:                                tile->painted && 
libvips/iofuncs/sinkscreen.c:				!tile->region->invalid) ? 255 : 0;
libvips/iofuncs/sinkscreen.c:	g_mutex_unlock( render->lock );
libvips/iofuncs/sinkscreen.c:	im_region_paint( out, &out->valid, 255 );
libvips/iofuncs/sinkscreen.c: * If @max_tiles is -1, the cache is of unlimited size (up to the maximum image
libvips/iofuncs/sinkscreen.c: * The @mask image is a one-band uchar image and has 255 for pixels which are 
libvips/iofuncs/sinkscreen.c: * ready. In a glib-based application, this is easily done with g_idle_add().
libvips/iofuncs/sinkscreen.c: * Returns: 0 on sucess, -1 on error.
libvips/iofuncs/sinkscreen.c:		return( -1 );
libvips/iofuncs/sinkscreen.c:		max_tiles < -1 ) {
libvips/iofuncs/sinkscreen.c:		return( -1 );
libvips/iofuncs/sinkscreen.c:		return( -1 );
libvips/iofuncs/sinkscreen.c:			return( -1 );
libvips/iofuncs/sinkscreen.c:		mask->Bands = 1;
libvips/iofuncs/sinkscreen.c:		mask->BandFmt = IM_BANDFMT_UCHAR;
libvips/iofuncs/sinkscreen.c:		mask->Type = IM_TYPE_B_W;
libvips/iofuncs/sinkscreen.c:		mask->Coding = IM_CODING_NONE;
libvips/iofuncs/sinkscreen.c:		return( -1 );
libvips/iofuncs/sinkscreen.c:		return( -1 );
libvips/iofuncs/sinkscreen.c:		return( -1 );
libvips/iofuncs/object.c:    Copyright (C) 1991-2003 The National Gallery
libvips/iofuncs/object.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/object.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/object.c:	return( object_class->build( object ) );
libvips/iofuncs/object.c:	class->print_class( class, &buf );
libvips/iofuncs/object.c:	class->print( object, &buf );
libvips/iofuncs/object.c:	if( argument_instance->destroy_id ) {
libvips/iofuncs/object.c:		g_signal_handler_disconnect( argument_instance->object,
libvips/iofuncs/object.c:			argument_instance->destroy_id );
libvips/iofuncs/object.c:		argument_instance->destroy_id = 0;
libvips/iofuncs/object.c:	g_hash_table_replace( table, argument->pspec, argument );
libvips/iofuncs/object.c:	for( p = class->argument_table_traverse; p; p = p->next ) {
libvips/iofuncs/object.c:			(VipsArgumentClass *) p->data;
libvips/iofuncs/object.c:		GParamSpec *pspec = argument->pspec;
libvips/iofuncs/object.c:			pspec->name ) == pspec ) {
libvips/iofuncs/object.c:		pspec->name );
libvips/iofuncs/object.c:	argument->pspec = ((VipsArgument *) argument_class)->pspec;
libvips/iofuncs/object.c:	argument_instance->object = object;
libvips/iofuncs/object.c:	argument_instance->assigned = FALSE;
libvips/iofuncs/object.c:	argument_instance->destroy_id = 0;
libvips/iofuncs/object.c:	vips_argument_table_replace( object->argument_table, argument );
libvips/iofuncs/object.c: * to work then :-( so we have to delay it until first access. See
libvips/iofuncs/object.c:	if( !object->argument_table ) {
libvips/iofuncs/object.c:		object->argument_table = g_hash_table_new_full( g_direct_hash,
libvips/iofuncs/object.c:		vips__argument_table_lookup( object->argument_table,
libvips/iofuncs/object.c:			((VipsArgument *) argument_class)->pspec ) );
libvips/iofuncs/object.c:		vips__argument_table_lookup( class->argument_table, pspec );
libvips/iofuncs/object.c:		argument_class->offset );
libvips/iofuncs/object.c:		if( argument_class->flags & VIPS_ARGUMENT_INPUT ) {
libvips/iofuncs/object.c:				G_OBJECT( *member )->ref_count - 1 );
libvips/iofuncs/object.c:		else if( argument_class->flags & VIPS_ARGUMENT_OUTPUT ) {
libvips/iofuncs/object.c:				G_OBJECT( object )->ref_count - 1 );
libvips/iofuncs/object.c:				argument_instance->destroy_id ) )
libvips/iofuncs/object.c:					argument_instance->destroy_id );
libvips/iofuncs/object.c:			argument_instance->destroy_id = 0;
libvips/iofuncs/object.c:	printf( ".%s\n", pspec->name );
libvips/iofuncs/object.c:	g_assert( ((VipsArgument *) argument_class)->pspec == pspec );
libvips/iofuncs/object.c:	g_assert( ((VipsArgument *) argument_instance)->pspec == pspec );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:	G_OBJECT_CLASS( vips_object_parent_class )->dispose( gobject );
libvips/iofuncs/object.c:	IM_FREEF( vips_argument_table_destroy, object->argument_table );
libvips/iofuncs/object.c:	G_OBJECT_CLASS( vips_object_parent_class )->finalize( gobject );
libvips/iofuncs/object.c:	VipsObject *object = argument_instance->object;
libvips/iofuncs/object.c:	GParamSpec *pspec = ((VipsArgument *) argument_instance)->pspec;
libvips/iofuncs/object.c:		vips__argument_table_lookup( class->argument_table, pspec );
libvips/iofuncs/object.c:		argument_class->offset );
libvips/iofuncs/object.c:		if( argument_class->flags & VIPS_ARGUMENT_INPUT ) {
libvips/iofuncs/object.c:				G_OBJECT( *member )->ref_count );
libvips/iofuncs/object.c:		else if( argument_class->flags & VIPS_ARGUMENT_OUTPUT ) {
libvips/iofuncs/object.c:				G_OBJECT (object)->ref_count );
libvips/iofuncs/object.c:			argument_instance->destroy_id =
libvips/iofuncs/object.c:		vips__argument_table_lookup( class->argument_table, pspec );
libvips/iofuncs/object.c:	g_assert( ((VipsArgument *) argument_class)->pspec == pspec );
libvips/iofuncs/object.c:	g_assert( ((VipsArgument *) argument_instance)->pspec == pspec );
libvips/iofuncs/object.c:	/* If this is a construct-only argument, we can only set before we've
libvips/iofuncs/object.c:	if( argument_class->flags & VIPS_ARGUMENT_CONSTRUCT &&
libvips/iofuncs/object.c:		object->constructed ) {
libvips/iofuncs/object.c:	/* If this is a set-once argument, check we've not set it before.
libvips/iofuncs/object.c:	if( argument_class->flags & VIPS_ARGUMENT_SET_ONCE &&
libvips/iofuncs/object.c:		argument_instance->assigned ) {
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:	argument_instance->assigned = TRUE;
libvips/iofuncs/object.c:		vips__argument_table_lookup( class->argument_table, pspec );
libvips/iofuncs/object.c:	g_assert( ((VipsArgument *) argument_class)->pspec == pspec );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:			argument_class->offset );
libvips/iofuncs/object.c:	if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) &&
libvips/iofuncs/object.c:		(argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) &&
libvips/iofuncs/object.c:		!argument_instance->assigned ) {
libvips/iofuncs/object.c:		*result = -1;
libvips/iofuncs/object.c:	g_assert( !object->constructed );
libvips/iofuncs/object.c:	object->constructed = TRUE;
libvips/iofuncs/object.c:		"nickname", object_class->nickname,
libvips/iofuncs/object.c:		"description", object_class->description, NULL );
libvips/iofuncs/object.c:	if( class->nickname )
libvips/iofuncs/object.c:		vips_buf_appendf( buf, " (%s)", class->nickname );
libvips/iofuncs/object.c:	if( class->description )
libvips/iofuncs/object.c:		vips_buf_appendf( buf, ", %s", class->description );
libvips/iofuncs/object.c:	gobject_class->dispose = vips_object_dispose;
libvips/iofuncs/object.c:	gobject_class->finalize = vips_object_finalize;
libvips/iofuncs/object.c:	gobject_class->set_property = vips_object_set_property;
libvips/iofuncs/object.c:	gobject_class->get_property = vips_object_get_property;
libvips/iofuncs/object.c:	object_class->build = vips_object_real_build;
libvips/iofuncs/object.c:	object_class->print_class = vips_object_real_print_class;
libvips/iofuncs/object.c:	object_class->print = vips_object_real_print;
libvips/iofuncs/object.c:	object_class->nickname = "object";
libvips/iofuncs/object.c:	object_class->description = _( "VIPS base class" );
libvips/iofuncs/object.c:	object_class->argument_table = g_hash_table_new_full(
libvips/iofuncs/object.c:	object_class->argument_table_traverse = NULL;
libvips/iofuncs/object.c:	/* For setting double arguments from the command-line.
libvips/iofuncs/object.c:	printf( "vips_object_class_install_argument: %s\n", pspec->name );
libvips/iofuncs/object.c:	g_assert( !vips__argument_table_lookup( object_class->argument_table,
libvips/iofuncs/object.c:	((VipsArgument *) argument_class)->pspec = pspec;
libvips/iofuncs/object.c:	argument_class->object_class = object_class;
libvips/iofuncs/object.c:	argument_class->flags = flags;
libvips/iofuncs/object.c:	argument_class->offset = offset;
libvips/iofuncs/object.c:	vips_argument_table_replace( object_class->argument_table,
libvips/iofuncs/object.c:	object_class->argument_table_traverse = g_slist_append(
libvips/iofuncs/object.c:		object_class->argument_table_traverse, argument_class );
libvips/iofuncs/object.c:	if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) &&
libvips/iofuncs/object.c:		(argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) &&
libvips/iofuncs/object.c:		!argument_instance->assigned )
libvips/iofuncs/object.c:		return( -1 );
libvips/iofuncs/object.c:	if( vips_object_set_arg( object, pspec->name, value ) )
libvips/iofuncs/object.c:		return( -1 );
libvips/iofuncs/object.c:			return( -1 );
libvips/iofuncs/object.c:			return( -1 );
libvips/iofuncs/object.c:				return( -1 );
libvips/iofuncs/object.c:				return( -1 );
libvips/iofuncs/object.c:				return( -1 );
libvips/iofuncs/object.c:				return( -1 );
libvips/iofuncs/object.c:			return( -1 );
libvips/iofuncs/object.c:		return( -1 );
libvips/iofuncs/object.c:	if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) {
libvips/iofuncs/object.c:	if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) &&
libvips/iofuncs/object.c:		argument_instance->assigned ) {
libvips/iofuncs/im_open.c: *	- ANSIfied
libvips/iofuncs/im_open.c: *	- im_open_local added
libvips/iofuncs/im_open.c: *	- im_malloc() added
libvips/iofuncs/im_open.c: *	- tiff added
libvips/iofuncs/im_open.c: *	- tiff removed again!
libvips/iofuncs/im_open.c: *	- now just im_istiff(), im_tiff2vips() and im_vips2tiff()
libvips/iofuncs/im_open.c: * 	- applications have responsibility for making the translation
libvips/iofuncs/im_open.c: *	- im_open_local() now closes on close, not evalend
libvips/iofuncs/im_open.c: *	- tiff and jpeg added again
libvips/iofuncs/im_open.c: * 	- open for read used im_istiff() and im_isjpeg() to switch
libvips/iofuncs/im_open.c: *	- open for write looks at suffix
libvips/iofuncs/im_open.c: *	- im_strdup() now allows NULL IMAGE parameter
libvips/iofuncs/im_open.c: *	- subsample parameter added to im_tiff2vips()
libvips/iofuncs/im_open.c: *	- byte-swap stuff added
libvips/iofuncs/im_open.c: *	- 8x byte swap added for double/double complex
libvips/iofuncs/im_open.c: *	- better error message if file does not exist
libvips/iofuncs/im_open.c: *	- ignore case when testing suffix for save
libvips/iofuncs/im_open.c: *	- fix im_mmapinrw() return test to stop coredump in edvips if
libvips/iofuncs/im_open.c: *	- malloc/strdup stuff moved to memory.c
libvips/iofuncs/im_open.c: *	- fixes for im_vips2tiff() changes
libvips/iofuncs/im_open.c: *	- ooops, missing 'else'
libvips/iofuncs/im_open.c: * 	- ppm read/write added
libvips/iofuncs/im_open.c: * 	- im__image_sanity() added
libvips/iofuncs/im_open.c: *	- now allows RW for non-native byte order, provided it's an 8-bit
libvips/iofuncs/im_open.c: *	- im_tiff2vips() no longer has subsample option
libvips/iofuncs/im_open.c: *	- better im_open() error message
libvips/iofuncs/im_open.c: *	- sanity no longer returns errors, just warns
libvips/iofuncs/im_open.c: *     - Added PNG support
libvips/iofuncs/im_open.c: *	- added im_open_header() (from header.c)
libvips/iofuncs/im_open.c: *	- im__skip_dir() knows about ':' in filenames for vips2tiff etc.
libvips/iofuncs/im_open.c: *	- im_image_sanity() now insists x/y/bands all >0
libvips/iofuncs/im_open.c: *	- moved util funcs out to util.c
libvips/iofuncs/im_open.c: *	- added an im_init_world() to help old progs
libvips/iofuncs/im_open.c: *	- oop, im_open() didn't know about input options in filenames
libvips/iofuncs/im_open.c: *	- im_open( "r" ) is now lazier ... for non-VIPS formats, we delay 
libvips/iofuncs/im_open.c: *	  read until the first ->generate()
libvips/iofuncs/im_open.c: *	- so im_open_header() is now a no-op
libvips/iofuncs/im_open.c: *	- if TIFF open fails, try going through libmagick
libvips/iofuncs/im_open.c: *	- added analyze read
libvips/iofuncs/im_open.c: * 	- oops, lazy read error recovery didn't clear a pointer
libvips/iofuncs/im_open.c: *	- added OpenEXR read
libvips/iofuncs/im_open.c: * 	- added CSV read/write
libvips/iofuncs/im_open.c: * 	- test for NULL filename/mode, common if you forget to check argc
libvips/iofuncs/im_open.c: * 	- use preclose, not evalend, for delayed save
libvips/iofuncs/im_open.c: * 	- add simple cmd-line progress feedback
libvips/iofuncs/im_open.c: * 	- lock global image list (thanks lee)
libvips/iofuncs/im_open.c: * 	- break file format stuff out to the new pluggable image format system
libvips/iofuncs/im_open.c: * 	- write to non-vips formats with a "written" callback
libvips/iofuncs/im_open.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_open.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_open.c:	if( sb->save_fn( sb->im, sb->filename ) )
libvips/iofuncs/im_open.c:		return( -1 );
libvips/iofuncs/im_open.c:		return( -1 );
libvips/iofuncs/im_open.c:	sb->im = out;
libvips/iofuncs/im_open.c:	sb->save_fn = save_fn;
libvips/iofuncs/im_open.c:	sb->filename = im_strdup( out, filename );
libvips/iofuncs/im_open.c:		return( -1 );
libvips/iofuncs/im_open.c:	if( !lazy->lazy_im ) {
libvips/iofuncs/im_open.c:		if( !(lazy->lazy_im = im_open_local( out, "read", "p" )) || 
libvips/iofuncs/im_open.c:			lazy->read_pixels( lazy->filename, lazy->lazy_im ) ) {
libvips/iofuncs/im_open.c:			IM_FREEF( im_close, lazy->lazy_im );
libvips/iofuncs/im_open.c:	return( im_region_create( lazy->lazy_im ) );
libvips/iofuncs/im_open.c:        Rect *r = &or->valid;
libvips/iofuncs/im_open.c:                return( -1 );
libvips/iofuncs/im_open.c:        if( im_region_region( or, ir, r, r->left, r->top ) )
libvips/iofuncs/im_open.c:                return( -1 );
libvips/iofuncs/im_open.c:		!(lazy->filename = im_strdup( out, filename )) )
libvips/iofuncs/im_open.c:		return( -1 );
libvips/iofuncs/im_open.c:	lazy->read_pixels = read_pixels;
libvips/iofuncs/im_open.c:	lazy->lazy_im = NULL;
libvips/iofuncs/im_open.c:		return( -1 );
libvips/iofuncs/im_open.c:		return( -1 );
libvips/iofuncs/im_open.c:	progress->last_percent = 0;
libvips/iofuncs/im_open.c:	IMAGE *im = progress->im;
libvips/iofuncs/im_open.c:	if( im->time->percent != progress->last_percent ) {
libvips/iofuncs/im_open.c:			g_get_prgname(), im->filename, im->time->percent );
libvips/iofuncs/im_open.c:		progress->last_percent = im->time->percent;
libvips/iofuncs/im_open.c:	IMAGE *im = progress->im;
libvips/iofuncs/im_open.c:		g_get_prgname(), im->filename, im->time->run );
libvips/iofuncs/im_open.c: *       suffix to determine the type to write -- for example:
libvips/iofuncs/im_open.c: *       paintbox-type applications.
libvips/iofuncs/im_open.c:			if( strcmp( VIPS_OBJECT_CLASS( format )->nickname, 
libvips/iofuncs/im_open.c:				format->header, format->load, filename )) )
libvips/iofuncs/im_open.c:			if( strcmp( VIPS_OBJECT_CLASS( format )->nickname, 
libvips/iofuncs/im_open.c:				if( attach_sb( im, format->save, filename ) ) {
libvips/iofuncs/im_open.c:		progress->im = im;
libvips/iofuncs/im_open.c:	printf( "im_open: success for %s (%p)\n", im->filename, im );
libvips/iofuncs/im_partial.c:/* @(#) im_partial: initialise a partial IMAGE. Just set im->dtype.
libvips/iofuncs/im_partial.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_partial.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_partial.c:	im->dtype = IM_PARTIAL;
libvips/iofuncs/im_partial.c:	/* No need to set demand style - im_demand_hint() from application
libvips/iofuncs/im_image.c: * - oops, broken for IM_BANDFMT_UCHAR
libvips/iofuncs/im_image.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_image.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_image.c:	im->Xsize = width;
libvips/iofuncs/im_image.c:	im->Ysize = height;
libvips/iofuncs/im_image.c:	im->Bands = bands;
libvips/iofuncs/im_image.c:	im->BandFmt = bandfmt;
libvips/iofuncs/im_image.c:	im->Bbits = im_bits_of_fmt( bandfmt );
libvips/iofuncs/im_image.c:	im->Coding = IM_CODING_NONE;
libvips/iofuncs/im_image.c:		im->Type = IM_TYPE_B_W;
libvips/iofuncs/im_image.c:		im->Type = IM_TYPE_RGB;
libvips/iofuncs/im_image.c:		im->Type = IM_TYPE_MULTIBAND;
libvips/iofuncs/im_image.c:	im->data = (char *) buffer;
libvips/iofuncs/im_image.c:	im->dtype = IM_SETBUF_FOREIGN;
libvips/iofuncs/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/iofuncs/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/iofuncs/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/iofuncs/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/iofuncs/Makefile.in:am__mv = mv -f
libvips/iofuncs/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/iofuncs/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/iofuncs/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/iofuncs/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/iofuncs/Makefile.in:	$(LDFLAGS) -o $@
libvips/iofuncs/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/iofuncs/Makefile.in:all: all-am
libvips/iofuncs/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/iofuncs/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/iofuncs/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/iofuncs/Makefile'; \
libvips/iofuncs/Makefile.in:	  $(AUTOMAKE) --gnu libvips/iofuncs/Makefile
libvips/iofuncs/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/iofuncs/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/iofuncs/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/iofuncs/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/iofuncs/Makefile.in:clean-noinstLTLIBRARIES:
libvips/iofuncs/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/iofuncs/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/iofuncs/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/iofuncs/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/iofuncs/Makefile.in:mostlyclean-compile:
libvips/iofuncs/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/iofuncs/Makefile.in:distclean-compile:
libvips/iofuncs/Makefile.in:	-rm -f *.tab.c
libvips/iofuncs/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/iofuncs/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/iofuncs/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/iofuncs/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/iofuncs/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/iofuncs/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/iofuncs/Makefile.in:mostlyclean-libtool:
libvips/iofuncs/Makefile.in:	-rm -f *.lo
libvips/iofuncs/Makefile.in:clean-libtool:
libvips/iofuncs/Makefile.in:	-rm -rf .libs _libs
libvips/iofuncs/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/iofuncs/Makefile.in:	mkid -fID $$unique
libvips/iofuncs/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/iofuncs/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/iofuncs/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/iofuncs/Makefile.in:	  if test $$# -gt 0; then \
libvips/iofuncs/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/iofuncs/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/iofuncs/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/iofuncs/Makefile.in:distclean-tags:
libvips/iofuncs/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/iofuncs/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/iofuncs/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/iofuncs/Makefile.in:			   sort -u` ;; \
libvips/iofuncs/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/iofuncs/Makefile.in:	  if test -d $$d/$$file; then \
libvips/iofuncs/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/iofuncs/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/iofuncs/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/iofuncs/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/iofuncs/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/iofuncs/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/iofuncs/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/iofuncs/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/iofuncs/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/iofuncs/Makefile.in:check-am: all-am
libvips/iofuncs/Makefile.in:check: check-am
libvips/iofuncs/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/iofuncs/Makefile.in:install: install-am
libvips/iofuncs/Makefile.in:install-exec: install-exec-am
libvips/iofuncs/Makefile.in:install-data: install-data-am
libvips/iofuncs/Makefile.in:uninstall: uninstall-am
libvips/iofuncs/Makefile.in:install-am: all-am
libvips/iofuncs/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/iofuncs/Makefile.in:installcheck: installcheck-am
libvips/iofuncs/Makefile.in:install-strip:
libvips/iofuncs/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/iofuncs/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/iofuncs/Makefile.in:mostlyclean-generic:
libvips/iofuncs/Makefile.in:clean-generic:
libvips/iofuncs/Makefile.in:distclean-generic:
libvips/iofuncs/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/iofuncs/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/iofuncs/Makefile.in:maintainer-clean-generic:
libvips/iofuncs/Makefile.in:clean: clean-am
libvips/iofuncs/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/iofuncs/Makefile.in:	mostlyclean-am
libvips/iofuncs/Makefile.in:distclean: distclean-am
libvips/iofuncs/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/iofuncs/Makefile.in:	-rm -f Makefile
libvips/iofuncs/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/iofuncs/Makefile.in:	distclean-tags
libvips/iofuncs/Makefile.in:dvi: dvi-am
libvips/iofuncs/Makefile.in:dvi-am:
libvips/iofuncs/Makefile.in:html: html-am
libvips/iofuncs/Makefile.in:html-am:
libvips/iofuncs/Makefile.in:info: info-am
libvips/iofuncs/Makefile.in:info-am:
libvips/iofuncs/Makefile.in:install-data-am:
libvips/iofuncs/Makefile.in:install-dvi: install-dvi-am
libvips/iofuncs/Makefile.in:install-dvi-am:
libvips/iofuncs/Makefile.in:install-exec-am:
libvips/iofuncs/Makefile.in:install-html: install-html-am
libvips/iofuncs/Makefile.in:install-html-am:
libvips/iofuncs/Makefile.in:install-info: install-info-am
libvips/iofuncs/Makefile.in:install-info-am:
libvips/iofuncs/Makefile.in:install-man:
libvips/iofuncs/Makefile.in:install-pdf: install-pdf-am
libvips/iofuncs/Makefile.in:install-pdf-am:
libvips/iofuncs/Makefile.in:install-ps: install-ps-am
libvips/iofuncs/Makefile.in:install-ps-am:
libvips/iofuncs/Makefile.in:installcheck-am:
libvips/iofuncs/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/iofuncs/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/iofuncs/Makefile.in:	-rm -f Makefile
libvips/iofuncs/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/iofuncs/Makefile.in:mostlyclean: mostlyclean-am
libvips/iofuncs/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/iofuncs/Makefile.in:	mostlyclean-libtool
libvips/iofuncs/Makefile.in:pdf: pdf-am
libvips/iofuncs/Makefile.in:pdf-am:
libvips/iofuncs/Makefile.in:ps: ps-am
libvips/iofuncs/Makefile.in:ps-am:
libvips/iofuncs/Makefile.in:uninstall-am:
libvips/iofuncs/Makefile.in:.MAKE: install-am install-strip
libvips/iofuncs/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/iofuncs/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/iofuncs/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/iofuncs/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/iofuncs/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/iofuncs/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/iofuncs/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/iofuncs/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/iofuncs/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/iofuncs/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/iofuncs/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/iofuncs/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/iofuncs/im_open_vips.c: * 	- from im_open.c, im_openin.c, im_desc_hd.c, im_readhist.c,
libvips/iofuncs/im_open_vips.c: *	- block mmaps of nodata images
libvips/iofuncs/im_open_vips.c: *	- fix signed/unsigned warnings
libvips/iofuncs/im_open_vips.c: *	- heh argh reading history always stopped after the first line
libvips/iofuncs/im_open_vips.c: * 	- only wholly map input files on im_incheck() ... this reduces VM use,
libvips/iofuncs/im_open_vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_open_vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_open_vips.c: * @see_also: <link linkend="libvips-region">region</link>
libvips/iofuncs/im_open_vips.c: * IM_THINSTRIP --- This operation would like to output strips the width 
libvips/iofuncs/im_open_vips.c: * point-to-point operations, such as those in the arithmetic package.
libvips/iofuncs/im_open_vips.c: * IM_FATSTRIP --- This operation would like to output strips the width 
libvips/iofuncs/im_open_vips.c: * IM_SMALLTILE --- This is the most general demand format.
libvips/iofuncs/im_open_vips.c: * IM_ANY --- This image is not being demand-read from a disc file (even 
libvips/iofuncs/im_open_vips.c: * @IM_TYPE_MULTIBAND: generic many-band image
libvips/iofuncs/im_open_vips.c: * @IM_TYPE_B_W: some kind of single-band image
libvips/iofuncs/im_open_vips.c: * @IM_TYPE_LABS: pixels are CIE LAB coded as three signed 16-bit values
libvips/iofuncs/im_open_vips.c: * @IM_TYPE_RGB16: generic 16-bit RGB
libvips/iofuncs/im_open_vips.c: * @IM_TYPE_GREY16: generic 16-bit mono
libvips/iofuncs/im_open_vips.c: * These values are set by operations as hints to user-interfaces built on top 
libvips/iofuncs/im_open_vips.c: * @kill: set this to non-zero to block evaluation of this image
libvips/iofuncs/im_open_vips.c: * if( im_open_local_array( out, t, 5, "some-temps", "p" ) ||
libvips/iofuncs/im_open_vips.c: *   return( -1 );
libvips/iofuncs/im_open_vips.c: * Returns: 0 on sucess, or -1 on error
libvips/iofuncs/im_open_vips.c:	/* Try to open read-write, so that calls to im_makerw() will work.
libvips/iofuncs/im_open_vips.c:	 * When we later mmap this file, we set read-only, so there 
libvips/iofuncs/im_open_vips.c:	if( (fd = open( filename, O_RDWR | O_BINARY )) == -1 ) {
libvips/iofuncs/im_open_vips.c:	if( (fd = open( filename, O_RDWR )) == -1 ) {
libvips/iofuncs/im_open_vips.c:		/* Open read-write failed. Fall back to open read-only.
libvips/iofuncs/im_open_vips.c:		if( (fd = open( filename, O_RDONLY | O_BINARY )) == -1 ) {
libvips/iofuncs/im_open_vips.c:		if( (fd = open( filename, O_RDONLY )) == -1 ) {
libvips/iofuncs/im_open_vips.c:			return( -1 );
libvips/iofuncs/im_open_vips.c:	switch( im->Coding ) {
libvips/iofuncs/im_open_vips.c:		psize = (gint64) IM_IMAGE_SIZEOF_LINE( im ) * im->Ysize;
libvips/iofuncs/im_open_vips.c:		psize = im->Length;
libvips/iofuncs/im_open_vips.c:	return( psize + im->sizeof_header );
libvips/iofuncs/im_open_vips.c:	im__read_4byte( 1, (unsigned char *) &im->magic, &from );
libvips/iofuncs/im_open_vips.c:	if( im->magic != IM_MAGIC_INTEL && im->magic != IM_MAGIC_SPARC ) {
libvips/iofuncs/im_open_vips.c:			im->filename );
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	msb_first = im->magic == IM_MAGIC_SPARC;
libvips/iofuncs/im_open_vips.c:	im->Bbits = im_bits_of_fmt( im->BandFmt );
libvips/iofuncs/im_open_vips.c:	while( q - to < im->sizeof_header )
libvips/iofuncs/im_open_vips.c:	g_assert( im->file_length > 0 );
libvips/iofuncs/im_open_vips.c:	return( im->file_length - psize > 0 );
libvips/iofuncs/im_open_vips.c:	g_assert( im->file_length > 0 );
libvips/iofuncs/im_open_vips.c:	if( im->file_length - psize > 10 * 1024 * 1024 ) {
libvips/iofuncs/im_open_vips.c:	if( im->file_length - psize == 0 )
libvips/iofuncs/im_open_vips.c:	if( !(buf = read_chunk( im->fd, psize, im->file_length - psize )) )
libvips/iofuncs/im_open_vips.c:		*size = im->file_length - psize;
libvips/iofuncs/im_open_vips.c:		(int) (im->file_length - psize), im->filename );
libvips/iofuncs/im_open_vips.c:		!node->nsDef ||
libvips/iofuncs/im_open_vips.c:		!im_isprefix( NAMESPACE, (char *) node->nsDef->href ) ) {
libvips/iofuncs/im_open_vips.c:	printf( "read_xml: namespace == %s\n", node->nsDef->href );
libvips/iofuncs/im_open_vips.c:	for( i = base->children; i; i = i->next )
libvips/iofuncs/im_open_vips.c:		if( strcmp( (char *) i->name, name ) == 0 )
libvips/iofuncs/im_open_vips.c:	IM_FREEF( im__gslist_gvalue_free, im->history_list );
libvips/iofuncs/im_open_vips.c:	im->history_list = g_slist_reverse( history_list );
libvips/iofuncs/im_open_vips.c:				return( -1 );
libvips/iofuncs/im_open_vips.c:				return( -1 );
libvips/iofuncs/im_open_vips.c:			return( -1 );
libvips/iofuncs/im_open_vips.c:			for( i = block->children; i; i = i->next )
libvips/iofuncs/im_open_vips.c:				if( strcmp( (char *) i->name, "field" ) == 0 ) 
libvips/iofuncs/im_open_vips.c:						return( -1 );
libvips/iofuncs/im_open_vips.c:			for( i = block->children; i; i = i->next )
libvips/iofuncs/im_open_vips.c:				if( strcmp( (char *) i->name, "field" ) == 0 ) 
libvips/iofuncs/im_open_vips.c:						return( -1 );
libvips/iofuncs/im_open_vips.c:			return( -1 );
libvips/iofuncs/im_open_vips.c:			return( -1 );
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:                return( -1 );
libvips/iofuncs/im_open_vips.c:                return( -1 );
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	GType type = G_VALUE_TYPE( &meta->value );
libvips/iofuncs/im_open_vips.c:		if( !g_value_transform( &meta->value, &save_value ) ) {
libvips/iofuncs/im_open_vips.c:		if( set_field( node, meta->field, g_type_name( type ), 
libvips/iofuncs/im_open_vips.c:		return( -1 ); 
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	if( im->Meta_traverse && 
libvips/iofuncs/im_open_vips.c:		im_slist_map2( im->Meta_traverse, 
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	if( (length = im_file_length( im->fd )) == -1 )
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	if( length - psize < 0 ) {
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	if( im__ftruncate( im->fd, psize ) ||
libvips/iofuncs/im_open_vips.c:		im__seek( im->fd, psize ) ) 
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	if( im__write( im->fd, buf, size ) )
libvips/iofuncs/im_open_vips.c:                return( -1 );
libvips/iofuncs/im_open_vips.c:		size, im->filename );
libvips/iofuncs/im_open_vips.c:                next = xnode->next;
libvips/iofuncs/im_open_vips.c:                /* According to memprof, this leaks :-( If you cut it out into
libvips/iofuncs/im_open_vips.c:                if( xnode->children )
libvips/iofuncs/im_open_vips.c:                        prettify_tree_sub( xnode->children, indent + 2 );
libvips/iofuncs/im_open_vips.c:        txt = xmlNewText( spc( indent - 2 ) );
libvips/iofuncs/im_open_vips.c:	assert( im->dtype == IM_OPENOUT );
libvips/iofuncs/im_open_vips.c:	assert( im->fd != -1 );
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	if( !(doc->children = xmlNewDocNode( doc, 
libvips/iofuncs/im_open_vips.c:                set_sprop( doc->children, "xmlns", namespace ) ||
libvips/iofuncs/im_open_vips.c:		save_fields( im, doc->children ) ) {
libvips/iofuncs/im_open_vips.c:                return( -1 );
libvips/iofuncs/im_open_vips.c:	/* Bizarre double-cast stops a bogus gcc 4.1 compiler warning.
libvips/iofuncs/im_open_vips.c:                return( -1 );
libvips/iofuncs/im_open_vips.c:                return( -1 );
libvips/iofuncs/im_open_vips.c:	/* Uncomment to have XML pretty-printed. Can be annoying during
libvips/iofuncs/im_open_vips.c:                return( -1 );
libvips/iofuncs/im_open_vips.c:	/* We don't use im->sizeof_header here, but we know we're reading a
libvips/iofuncs/im_open_vips.c:	image->dtype = IM_OPENIN;
libvips/iofuncs/im_open_vips.c:	if( (image->fd = im__open_image_file( image->filename )) == -1 ) 
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	if( read( image->fd, header, IM_SIZEOF_HEADER ) != IM_SIZEOF_HEADER ||
libvips/iofuncs/im_open_vips.c:			image->filename, strerror( errno ) );
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	if( (rsize = im_file_length( image->fd )) == -1 ) 
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	image->file_length = rsize;
libvips/iofuncs/im_open_vips.c:			image->filename, _( "file has been truncated" ) );
libvips/iofuncs/im_open_vips.c:	image->dhint = IM_THINSTRIP;
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:		return( -1 );
libvips/iofuncs/im_open_vips.c:	image->data = image->baseaddr + image->sizeof_header;
libvips/iofuncs/im_open_vips.c:	image->dtype = IM_MMAPINRW;
libvips/iofuncs/im_open_vips.c:	printf( "im_openinrw: completely mmap()ing \"%s\" read-write\n",
libvips/iofuncs/im_open_vips.c:		image->filename );
libvips/iofuncs/im_open_vips.c:/* Open a VIPS image for reading and byte-swap the image data if necessary. A
libvips/iofuncs/im_open_vips.c: * ":w" at the end of the filename means we open read-write.
libvips/iofuncs/im_open_vips.c:				_( "open for read-write for "
libvips/iofuncs/im_open_vips.c:		im->Coding == IM_CODING_NONE &&
libvips/iofuncs/im_open_vips.c:		im->BandFmt != IM_BANDFMT_CHAR &&
libvips/iofuncs/im_open_vips.c:		im->BandFmt != IM_BANDFMT_UCHAR ) {
libvips/iofuncs/im_open_vips.c:	image->dtype = IM_OPENOUT;
libvips/iofuncs/im_histlin.c: *	- if Hist is NULL, no longer returns error code. Now makes a history 
libvips/iofuncs/im_histlin.c: *	- does not overwrite the end of strdup buffers any more!
libvips/iofuncs/im_histlin.c: *	- bugs in calls to time/ctime fixed
libvips/iofuncs/im_histlin.c: *	- no longer free's ctime's static buffer!
libvips/iofuncs/im_histlin.c: *	- frees old Hist correctly
libvips/iofuncs/im_histlin.c: *	- ANSIfied with stdarg
libvips/iofuncs/im_histlin.c: * 	- no more first line of Hist means something special nonsense
libvips/iofuncs/im_histlin.c: * 	- added im_history_get()
libvips/iofuncs/im_histlin.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_histlin.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_histlin.c: * im_histlin( im, "vips im_invert %s %s", in->filename, out->filename );
libvips/iofuncs/im_histlin.c: * Returns: 0 on success, -1 on error.
libvips/iofuncs/im_histlin.c:	/* Format command. -40, to leave 26 for the ctime, three for the # and
libvips/iofuncs/im_histlin.c:	(void) im_vsnprintf( line, 4096 - 40, fmt, args );
libvips/iofuncs/im_histlin.c:	line[strlen( line ) - 1] = '\0';
libvips/iofuncs/im_histlin.c:	im->history_list = g_slist_append( im->history_list, 
libvips/iofuncs/im_histlin.c: * convenience function for command-line prorams.
libvips/iofuncs/im_histlin.c: * Returns: 0 on success, -1 on error.
libvips/iofuncs/im_histlin.c:		return( -1 );
libvips/iofuncs/im_histlin.c: * im_histlin() for each action they perform setting the command-line
libvips/iofuncs/im_histlin.c:	if( !im->Hist )
libvips/iofuncs/im_histlin.c:		im->Hist = im__gslist_gvalue_get( im->history_list );
libvips/iofuncs/im_histlin.c:	return( im->Hist ? im->Hist : "" );
libvips/iofuncs/package.c: *	- now uses g_module_*() instead of dlopen()
libvips/iofuncs/package.c: *	- uses glib dir scanning stuff instead of dirent.h
libvips/iofuncs/package.c: * 	- note_dependencies() does IMAGEVEC as well as IMAGE
libvips/iofuncs/package.c: * 	- silent success in loading plugins if the dir isn't there
libvips/iofuncs/package.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/package.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:	 * not just the string-valued ones.
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:/* List of built-in VIPS packages.
libvips/iofuncs/package.c:	char *name = plug->name ? plug->name : "<unknown>";
libvips/iofuncs/package.c:	if( plug->module ) {
libvips/iofuncs/package.c:		if( !g_module_close( plug->module ) ) {
libvips/iofuncs/package.c:			return( -1 );
libvips/iofuncs/package.c:		plug->module = NULL;
libvips/iofuncs/package.c:	IM_FREE( plug->name );
libvips/iofuncs/package.c:	plug->pack = NULL;
libvips/iofuncs/package.c:	plug->module = NULL;
libvips/iofuncs/package.c:	plug->name = NULL;
libvips/iofuncs/package.c:	plug->pack = NULL;
libvips/iofuncs/package.c:	if( !(plug->name = im_strdup( NULL, name )) ) {
libvips/iofuncs/package.c:	if( !(plug->module = g_module_open( name, 0 )) ) {
libvips/iofuncs/package.c:	/* Bizarre double-cast stops a bogus gcc 4.1 compiler warning.
libvips/iofuncs/package.c:	if( !g_module_symbol( plug->module, 
libvips/iofuncs/package.c:		"package_table", (gpointer *) ((void *) &plug->pack) ) ) {
libvips/iofuncs/package.c:	if( !plug->pack->name || plug->pack->nfuncs < 0 || 
libvips/iofuncs/package.c:		plug->pack->nfuncs > 10000 ) {
libvips/iofuncs/package.c:	printf( "added package \"%s\" ...\n", plug->pack->name );
libvips/iofuncs/package.c:	return( plug->pack );
libvips/iofuncs/package.c:        (void) im_vsnprintf( dir_name, PATH_MAX - 1, fmt, ap );
libvips/iofuncs/package.c:			im_snprintf( path, PATH_MAX - 1, 
libvips/iofuncs/package.c:				result = -1;
libvips/iofuncs/package.c:		if( plugin_free( (Plugin *) plugin_list->data ) )
libvips/iofuncs/package.c:			return( -1 );
libvips/iofuncs/package.c:/* Apply a user-function to a plugin package.
libvips/iofuncs/package.c:	if( !plug->pack )
libvips/iofuncs/package.c:		return( fn( plug->pack, a, NULL ) );
libvips/iofuncs/package.c:	for( i = 0; i < pack->nfuncs; i++ ) 
libvips/iofuncs/package.c:		if( strcmp( pack->table[i]->name, name ) == 0 )
libvips/iofuncs/package.c:			return( pack->table[i] );
libvips/iofuncs/package.c:	if( strcmp( pack->name, name ) == 0 )
libvips/iofuncs/package.c:	int vargc = fn->argc;
libvips/iofuncs/package.c:			if( fn->argv[i].desc->size != 0 )
libvips/iofuncs/package.c:	int vargc = fn->argc;
libvips/iofuncs/package.c:		int sz = fn->argv[i].desc->size;
libvips/iofuncs/package.c:				return( -1 );
libvips/iofuncs/package.c:	int vargc = fn->argc;
libvips/iofuncs/package.c:			if( fn->argv[i].desc->dest &&
libvips/iofuncs/package.c:				fn->argv[i].desc->dest( vargv[i] ) )
libvips/iofuncs/package.c:				return( -1 );
libvips/iofuncs/package.c:/* Init an im_object array from a set of command-line arguments.
libvips/iofuncs/package.c:	im_arg_desc *arg = fn->argv;
libvips/iofuncs/package.c:	int vargc = fn->argc;
libvips/iofuncs/package.c:		if( type->flags & IM_TYPE_ARG ) {
libvips/iofuncs/package.c:				return( -1 );
libvips/iofuncs/package.c:			if( type->init && type->init( &vargv[i], str ) )
libvips/iofuncs/package.c:				return( -1 );
libvips/iofuncs/package.c:			if( type->init && type->init( &vargv[i], "no arg" ) )
libvips/iofuncs/package.c:				return( -1 );
libvips/iofuncs/package.c:	/* Have we used up all the command-line args?
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:                return( -1 );
libvips/iofuncs/package.c:	for( j = 0; j < fn->argc; j++ ) {
libvips/iofuncs/package.c:		im_type_desc *type = fn->argv[j].desc;
libvips/iofuncs/package.c:		if( !(type->flags & IM_TYPE_OUTPUT) ) {
libvips/iofuncs/package.c:			if( strcmp( type->type, IM_TYPE_IMAGE ) == 0 ) {
libvips/iofuncs/package.c:					return( -1 );
libvips/iofuncs/package.c:			else if( strcmp( type->type, IM_TYPE_IMAGEVEC ) == 0 ) {
libvips/iofuncs/package.c:				for( k = 0; k < iv->n; k++ )
libvips/iofuncs/package.c:						iv->vec[k] ) )
libvips/iofuncs/package.c:						return( -1 );
libvips/iofuncs/package.c:	int vargc = fn->argc;
libvips/iofuncs/package.c:		if( fn->argv[i].print && vargv[i] ) 
libvips/iofuncs/package.c:			if( fn->argv[i].print( vargv[i] ) )
libvips/iofuncs/package.c:				return( -1 );
libvips/iofuncs/package.c:	int vargc = fn->argc;
libvips/iofuncs/package.c:		if( strcmp( fn->argv[i].desc->type, IM_TYPE_IMAGE ) == 0 &&
libvips/iofuncs/package.c:			(fn->argv[i].desc->flags & IM_TYPE_OUTPUT) )
libvips/iofuncs/package.c:			if( im_updatehist( vargv[i], fn->name, argc, argv ) )
libvips/iofuncs/package.c:				return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:	 *	- for each output image
libvips/iofuncs/package.c:	 *		- for each input image
libvips/iofuncs/package.c:	 *			- create a region on the input, closed by a
libvips/iofuncs/package.c:	if( fn->flags & IM_FN_PIO )
libvips/iofuncs/package.c:		for( i = 0; i < fn->argc; i++ ) {
libvips/iofuncs/package.c:			im_type_desc *type = fn->argv[i].desc;
libvips/iofuncs/package.c:			if( type->flags & IM_TYPE_OUTPUT &&
libvips/iofuncs/package.c:				strcmp( type->type, IM_TYPE_IMAGE ) == 0 )
libvips/iofuncs/package.c:					return( -1 );
libvips/iofuncs/package.c:	if( fn->disp( vargv ) ) 
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/package.c:		return( -1 );
libvips/iofuncs/im_prepare.c: *	- check for start and stop functions removed, as can now be NULL
libvips/iofuncs/im_prepare.c: *	- im_fill_copy() added
libvips/iofuncs/im_prepare.c: *	- kill flag added for compute cases
libvips/iofuncs/im_prepare.c: *	- im_fill_copy() now only uses im_generate() mechanism if it has to
libvips/iofuncs/im_prepare.c: *	- im_fill_copy() renamed as im_prepare_inplace()
libvips/iofuncs/im_prepare.c: *	- oops ... cache stuff removed, interacted badly with inplace ops
libvips/iofuncs/im_prepare.c: *	- better error message for im_prepare()
libvips/iofuncs/im_prepare.c: *	- im_prepare_inplace() broke with mmap() windows ... im_prepare_to()
libvips/iofuncs/im_prepare.c: * 	- hmm, did not stop if a start function failed
libvips/iofuncs/im_prepare.c: * 	- gtkdoc comments
libvips/iofuncs/im_prepare.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_prepare.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_prepare.c:	IMAGE *im = reg->im;
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	if( im->generate( reg, reg->seq, im->client1, im->client2 ) )
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	if( im->kill ) {
libvips/iofuncs/im_prepare.c:			im->filename );
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c: * im_prepare() runs in-line, that is, computation is done by the calling
libvips/iofuncs/im_prepare.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/im_prepare.c:	IMAGE *im = reg->im;
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	image.width = reg->im->Xsize;
libvips/iofuncs/im_prepare.c:	image.height = reg->im->Ysize;
libvips/iofuncs/im_prepare.c:		r->left, r->top, r->width, r->height );
libvips/iofuncs/im_prepare.c:	switch( im->dtype ) {
libvips/iofuncs/im_prepare.c:			return( -1 );
libvips/iofuncs/im_prepare.c:			return( -1 );
libvips/iofuncs/im_prepare.c:			im_dtype2char( im->dtype ) );
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	g_assert( im_rect_includesrect( &reg->valid, &save ) );
libvips/iofuncs/im_prepare.c:	IMAGE *im = reg->im;
libvips/iofuncs/im_prepare.c:	if( !im->generate ) {
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	p = IM_REGION_ADDR( reg, reg->valid.left, reg->valid.top );
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	if( IM_REGION_ADDR( reg, reg->valid.left, reg->valid.top ) != p )
libvips/iofuncs/im_prepare.c: * Returns: 0 on success, or -1 on error
libvips/iofuncs/im_prepare.c:	IMAGE *im = reg->im;
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	if( !dest->data || 
libvips/iofuncs/im_prepare.c:		dest->im->BandFmt != reg->im->BandFmt ||
libvips/iofuncs/im_prepare.c:		dest->im->Bands != reg->im->Bands ) {
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	/* clip r first against the size of reg->im, then again against the 
libvips/iofuncs/im_prepare.c:	image.width = reg->im->Xsize;
libvips/iofuncs/im_prepare.c:	image.height = reg->im->Ysize;
libvips/iofuncs/im_prepare.c:	g_assert( clipped.left == r->left );
libvips/iofuncs/im_prepare.c:	g_assert( clipped.top == r->top );
libvips/iofuncs/im_prepare.c:	wanted.left = x + (clipped.left - r->left);
libvips/iofuncs/im_prepare.c:	wanted.top = y + (clipped.top - r->top);
libvips/iofuncs/im_prepare.c:	/* Test that dest->valid is large enough.
libvips/iofuncs/im_prepare.c:	if( !im_rect_includesrect( &dest->valid, &wanted ) ) {
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	im_rect_intersectrect( &wanted, &dest->valid, &clipped2 );
libvips/iofuncs/im_prepare.c:	final.left = r->left + (clipped2.left - wanted.left);
libvips/iofuncs/im_prepare.c:	final.top = r->top + (clipped2.top - wanted.top);
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	switch( im->dtype ) {
libvips/iofuncs/im_prepare.c:			return( -1 );
libvips/iofuncs/im_prepare.c:			return( -1 );
libvips/iofuncs/im_prepare.c:		if( im->generate ) {
libvips/iofuncs/im_prepare.c:				return( -1 );
libvips/iofuncs/im_prepare.c:				return( -1 );
libvips/iofuncs/im_prepare.c:			"%s image" ), im_dtype2char( im->dtype ) );
libvips/iofuncs/im_prepare.c:		return( -1 );
libvips/iofuncs/im_prepare.c:	dest->invalid = FALSE;
libvips/iofuncs/im_prepare.c:			return( -1 );
libvips/iofuncs/im_prepare.c:	reg->invalid = TRUE;
libvips/iofuncs/im_prepare.c:	g_mutex_lock( im->sslock );
libvips/iofuncs/im_prepare.c:	(void) im_slist_map2( im->regions,
libvips/iofuncs/im_prepare.c:	g_mutex_unlock( im->sslock );
libvips/iofuncs/im_prepare.c:	for( p = images; p; p = p->next ) {
libvips/iofuncs/im_prepare.c:		IMAGE *im = (IMAGE *) p->data;
libvips/iofuncs/im_prepare.c:	for( p = images; p; p = p->next ) {
libvips/iofuncs/im_prepare.c:		IMAGE *im = (IMAGE *) p->data;
libvips/iofuncs/im_prepare.c:		(void) im__trigger_callbacks( im->invalidatefns );
libvips/iofuncs/im_prepare.c:	for( p = regions; p; p = p->next ) {
libvips/iofuncs/im_prepare.c:		REGION *r = (REGION *) p->data;
libvips/iofuncs/im_setupout.c: *	- partial image support added
libvips/iofuncs/im_setupout.c: *	- ANSIfied
libvips/iofuncs/im_setupout.c: *	- OPENOUT open delayed until here
libvips/iofuncs/im_setupout.c: *	- stat/file needed
libvips/iofuncs/im_setupout.c: * *	- less stupid header write
libvips/iofuncs/im_setupout.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_setupout.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_setupout.c: * This call gets the #IMAGE ready for scanline-based writing with 
libvips/iofuncs/im_setupout.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/im_setupout.c:	if( im->Xsize <= 0 || im->Ysize <= 0 || im->Bands <= 0 ) {
libvips/iofuncs/im_setupout.c:		return( -1 );
libvips/iofuncs/im_setupout.c:	im->Bbits = im_bits_of_fmt( im->BandFmt );
libvips/iofuncs/im_setupout.c:	if( im->dtype == IM_PARTIAL ) {
libvips/iofuncs/im_setupout.c:		printf( "im_setupout: old-style output for %s\n",
libvips/iofuncs/im_setupout.c:			im->filename );
libvips/iofuncs/im_setupout.c:		im->dtype = IM_SETBUF;
libvips/iofuncs/im_setupout.c:	switch( im->dtype ) {
libvips/iofuncs/im_setupout.c:		if( im->data ) {
libvips/iofuncs/im_setupout.c:			return( -1 );
libvips/iofuncs/im_setupout.c:		if( !(im->data = im_malloc( NULL, 
libvips/iofuncs/im_setupout.c:			IM_IMAGE_SIZEOF_LINE( im ) * im->Ysize )) ) 
libvips/iofuncs/im_setupout.c:			return( -1 );
libvips/iofuncs/im_setupout.c:		/* Don't use im->sizeof_header here, but we know we're 
libvips/iofuncs/im_setupout.c:		if( (im->fd = open( im->filename, MODE, 0666 )) < 0 ) {
libvips/iofuncs/im_setupout.c:				im->filename );
libvips/iofuncs/im_setupout.c:			return( -1 );
libvips/iofuncs/im_setupout.c:			im__write( im->fd, header, IM_SIZEOF_HEADER ) )
libvips/iofuncs/im_setupout.c:			return( -1 );
libvips/iofuncs/im_setupout.c:		return( -1 );
libvips/iofuncs/im_cp_desc.c: * @(#) Returns 0 on success or -1 on fail.
libvips/iofuncs/im_cp_desc.c: *	- now calls im_cp_Hist, and hence frees old history correctly
libvips/iofuncs/im_cp_desc.c: *	- checks return result from im_cp_Hist()
libvips/iofuncs/im_cp_desc.c: *	- ANSIfied
libvips/iofuncs/im_cp_desc.c: *	- copy Xoffset/Yoffset too
libvips/iofuncs/im_cp_desc.c: *	- hmm, in fact no, zero them
libvips/iofuncs/im_cp_desc.c: *	- copy Meta
libvips/iofuncs/im_cp_desc.c: * 	- added im_cp_descv() and im_cp_desc_array()
libvips/iofuncs/im_cp_desc.c: * 	- simplified ... no more skip the first line stuff
libvips/iofuncs/im_cp_desc.c: * 	- merge hists with history_list instead
libvips/iofuncs/im_cp_desc.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_cp_desc.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_cp_desc.c: * @in: %NULL-terminated array of images to copy from
libvips/iofuncs/im_cp_desc.c: * Metadata from all the image is merged on to @out, with lower-numbered items 
libvips/iofuncs/im_cp_desc.c: * called "icc-profile", it's the profile attached to @in[0] that will end up
libvips/iofuncs/im_cp_desc.c: * Returns: 0 on success, -1 on error.
libvips/iofuncs/im_cp_desc.c:	out->Xsize = in[0]->Xsize;
libvips/iofuncs/im_cp_desc.c:	out->Ysize = in[0]->Ysize;
libvips/iofuncs/im_cp_desc.c:	out->Bands = in[0]->Bands;
libvips/iofuncs/im_cp_desc.c:	out->Bbits = in[0]->Bbits;
libvips/iofuncs/im_cp_desc.c:	out->BandFmt = in[0]->BandFmt;
libvips/iofuncs/im_cp_desc.c:	out->Type = in[0]->Type;
libvips/iofuncs/im_cp_desc.c:	out->Coding = in[0]->Coding;
libvips/iofuncs/im_cp_desc.c:	out->Xres = in[0]->Xres;
libvips/iofuncs/im_cp_desc.c:	out->Yres = in[0]->Yres;
libvips/iofuncs/im_cp_desc.c:	out->Xoffset = 0;
libvips/iofuncs/im_cp_desc.c:	out->Yoffset = 0;
libvips/iofuncs/im_cp_desc.c:	/* Need to copy last-to-first so that in0 meta will override any
libvips/iofuncs/im_cp_desc.c:	for( i = ni - 1; i >= 0; i-- ) 
libvips/iofuncs/im_cp_desc.c:			return( -1 );
libvips/iofuncs/im_cp_desc.c:		out->history_list = im__gslist_gvalue_merge( out->history_list,
libvips/iofuncs/im_cp_desc.c:			in[i]->history_list );
libvips/iofuncs/im_cp_desc.c: * @Varargs: %NULL-terminated list of images to copy from
libvips/iofuncs/im_cp_desc.c: * Returns: 0 on success, -1 on error.
libvips/iofuncs/im_cp_desc.c:		return( -1 );
libvips/iofuncs/im_cp_desc.c: * Returns: 0 on success, -1 on error.
libvips/iofuncs/base64.h:    Copyright (C) 1991-2005 The National Gallery
libvips/iofuncs/base64.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_init_world.c: *	- 1st version
libvips/iofuncs/im_init_world.c: * 	- g_type_init() too, so we can use gobject
libvips/iofuncs/im_init_world.c: * 	- also set g_prg_name() and load plugins
libvips/iofuncs/im_init_world.c: * 	- add liboil support
libvips/iofuncs/im_init_world.c: * 	- stop a loop if we're called recursively during VIPS startup ... it
libvips/iofuncs/im_init_world.c: * 	- just warn if plugins fail to load correctly: too annoying to have
libvips/iofuncs/im_init_world.c: * 	- progress feedback option
libvips/iofuncs/im_init_world.c: * 	- load plugins from libdir/vips-x.x
libvips/iofuncs/im_init_world.c: * 	- gtkdoc comments
libvips/iofuncs/im_init_world.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_init_world.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_init_world.c: *     internationalisation --- see im_guess_prefix()
libvips/iofuncs/im_init_world.c: *     <para>loads any plugins from $libdir/vips-x.y, where x and y are the
libvips/iofuncs/im_init_world.c: * Returns: 0 on success, -1 otherwise
libvips/iofuncs/im_init_world.c:		return( -1 );
libvips/iofuncs/im_init_world.c:	bind_textdomain_codeset( GETTEXT_PACKAGE, "UTF-8" );
libvips/iofuncs/im_init_world.c:	if( im_load_plugins( "%s/vips-%d.%d", 
libvips/iofuncs/im_init_world.c:	 * :-( kept for back compat convenience.
libvips/iofuncs/im_init_world.c:	{ "vips-concurrency", 'c', 0, G_OPTION_ARG_INT, &im__concurrency, 
libvips/iofuncs/im_init_world.c:	{ "vips-tile-width", 'w', 0, G_OPTION_ARG_INT, &im__tile_width, 
libvips/iofuncs/im_init_world.c:	{ "vips-tile-height", 'h', 0, G_OPTION_ARG_INT, &im__tile_height, 
libvips/iofuncs/im_init_world.c:	{ "vips-thinstrip-height", 't', 0, 
libvips/iofuncs/im_init_world.c:	{ "vips-fatstrip-height", 'f', 0, 
libvips/iofuncs/im_init_world.c:	{ "vips-progress", 'p', 0, G_OPTION_ARG_NONE, &im__progress, 
libvips/iofuncs/im_init_world.c: * command-line options. It  can  be  used  with  GOption  to  help
libvips/iofuncs/rect.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/rect.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/rect.c:	r->left -= n;
libvips/iofuncs/rect.c:	r->top -= n;
libvips/iofuncs/rect.c:	r->width += 2 * n;
libvips/iofuncs/rect.c:	r->height += 2 * n;
libvips/iofuncs/rect.c:	return( r->left <= x &&
libvips/iofuncs/rect.c:		r->top <= y &&
libvips/iofuncs/rect.c:		r->left + r->width > x &&
libvips/iofuncs/rect.c:		r->top + r->height > y );
libvips/iofuncs/rect.c:	return( r1->left <= r2->left &&
libvips/iofuncs/rect.c:		r1->top <= r2->top &&
libvips/iofuncs/rect.c:		r1->left + r1->width >= r2->left + r2->width &&
libvips/iofuncs/rect.c:		r1->top + r1->height >= r2->top + r2->height );
libvips/iofuncs/rect.c:	int left = IM_MAX( r1->left, r2->left );
libvips/iofuncs/rect.c:	int top = IM_MAX( r1->top, r2->top );
libvips/iofuncs/rect.c:	int width = IM_MAX( 0, right - left );
libvips/iofuncs/rect.c:	int height = IM_MAX( 0, bottom - top );
libvips/iofuncs/rect.c:	r3->left = left;
libvips/iofuncs/rect.c:	r3->top = top;
libvips/iofuncs/rect.c:	r3->width = width;
libvips/iofuncs/rect.c:	r3->height = height;
libvips/iofuncs/rect.c:	return( r->width <= 0 || r->height <= 0 );
libvips/iofuncs/rect.c:		int left = IM_MIN( r1->left, r2->left );
libvips/iofuncs/rect.c:		int top = IM_MIN( r1->top, r2->top );
libvips/iofuncs/rect.c:			IM_RECT_RIGHT( r2 ) ) - left;
libvips/iofuncs/rect.c:			IM_RECT_BOTTOM( r2 ) )- top;
libvips/iofuncs/rect.c:		r3->left = left;
libvips/iofuncs/rect.c:		r3->top = top;
libvips/iofuncs/rect.c:		r3->width = width;
libvips/iofuncs/rect.c:		r3->height = height;
libvips/iofuncs/rect.c:	return( r1->left == r2->left && r1->top == r2->top &&
libvips/iofuncs/rect.c:		r1->width == r2->width && r1->height == r2->height );
libvips/iofuncs/rect.c:	if( r->width < 0 ) {
libvips/iofuncs/rect.c:		r->left += r->width;
libvips/iofuncs/rect.c:		r->width *= -1;
libvips/iofuncs/rect.c:	if( r->height < 0 ) {
libvips/iofuncs/rect.c:		r->top += r->height;
libvips/iofuncs/rect.c:		r->height *= -1;
libvips/iofuncs/window.c: *	- from region.c
libvips/iofuncs/window.c: *	- block mmaps of nodata images
libvips/iofuncs/window.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/window.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/window.c:	if( window->baseaddr ) {
libvips/iofuncs/window.c:		if( im__munmap( window->baseaddr, window->length ) )
libvips/iofuncs/window.c:			return( -1 );
libvips/iofuncs/window.c:		total_mmap_usage -= window->length;
libvips/iofuncs/window.c:		window->data = NULL;
libvips/iofuncs/window.c:		window->baseaddr = NULL;
libvips/iofuncs/window.c:		window->length = 0;
libvips/iofuncs/window.c:	assert( window->ref_count == 0 );
libvips/iofuncs/window.c:		window->top, window->height, window );
libvips/iofuncs/window.c:		return( -1 );
libvips/iofuncs/window.c:	window->im = NULL;
libvips/iofuncs/window.c:	IMAGE *im = window->im;
libvips/iofuncs/window.c:	g_mutex_lock( im->sslock );
libvips/iofuncs/window.c:		window->top, window->height, window->ref_count );
libvips/iofuncs/window.c:	assert( window->ref_count > 0 );
libvips/iofuncs/window.c:	window->ref_count -= 1;
libvips/iofuncs/window.c:	if( window->ref_count == 0 ) {
libvips/iofuncs/window.c:		assert( g_slist_find( im->windows, window ) );
libvips/iofuncs/window.c:		im->windows = g_slist_remove( im->windows, window );
libvips/iofuncs/window.c:			g_slist_length( im->windows ) );
libvips/iofuncs/window.c:			g_mutex_unlock( im->sslock );
libvips/iofuncs/window.c:			return( -1 );
libvips/iofuncs/window.c:	g_mutex_unlock( im->sslock );
libvips/iofuncs/window.c:	start = window->im->sizeof_header + 
libvips/iofuncs/window.c:		(gint64) IM_IMAGE_SIZEOF_LINE( window->im ) * top;
libvips/iofuncs/window.c:	length = (size_t) IM_IMAGE_SIZEOF_LINE( window->im ) * height;
libvips/iofuncs/window.c:	pagestart = start - start % pagesize;
libvips/iofuncs/window.c:	pagelength = end - pagestart;
libvips/iofuncs/window.c:	if( end > window->im->file_length ) {
libvips/iofuncs/window.c:			window->im->filename, _( "file has been truncated" ) );
libvips/iofuncs/window.c:		return( -1 );
libvips/iofuncs/window.c:	if( !(baseaddr = im__mmap( window->im->fd, 0, pagelength, pagestart )) )
libvips/iofuncs/window.c:		return( -1 ); 
libvips/iofuncs/window.c:	window->baseaddr = baseaddr;
libvips/iofuncs/window.c:	window->length = pagelength;
libvips/iofuncs/window.c:	window->data = (char *) baseaddr + (start - pagestart);
libvips/iofuncs/window.c:	window->top = top;
libvips/iofuncs/window.c:	window->height = height;
libvips/iofuncs/window.c:	im__read_test &= window->data[0];
libvips/iofuncs/window.c:	total_mmap_usage += window->length;
libvips/iofuncs/window.c:	window->ref_count = 0;
libvips/iofuncs/window.c:	window->im = im;
libvips/iofuncs/window.c:	window->top = 0;
libvips/iofuncs/window.c:	window->height = 0;
libvips/iofuncs/window.c:	window->data = NULL;
libvips/iofuncs/window.c:	window->baseaddr = NULL;
libvips/iofuncs/window.c:	window->length = 0;
libvips/iofuncs/window.c:	im->windows = g_slist_prepend( im->windows, window );
libvips/iofuncs/window.c:	window->ref_count += 1;
libvips/iofuncs/window.c:		window->top, window->height, window );
libvips/iofuncs/window.c:	if( window->top <= req->top && 
libvips/iofuncs/window.c:		window->top + window->height >= req->top + req->height )
libvips/iofuncs/window.c:	window = im_slist_map2( im->windows, 
libvips/iofuncs/window.c:		window->ref_count += 1;
libvips/iofuncs/window.c:			top, height, window->ref_count );
libvips/iofuncs/window.c:	g_mutex_lock( im->sslock );
libvips/iofuncs/window.c:		top -= margin;
libvips/iofuncs/window.c:		top = IM_CLIP( 0, top, im->Ysize - 1 );
libvips/iofuncs/window.c:		height = IM_CLIP( 0, height, im->Ysize - top );
libvips/iofuncs/window.c:			g_mutex_unlock( im->sslock );
libvips/iofuncs/window.c:	g_mutex_unlock( im->sslock );
libvips/iofuncs/window.c:	printf( "im_window_t: %p ref_count = %d, ", window, window->ref_count );
libvips/iofuncs/window.c:	printf( "im = %p, ", window->im );
libvips/iofuncs/window.c:	printf( "top = %d, ", window->top );
libvips/iofuncs/window.c:	printf( "height = %d, ", window->height );
libvips/iofuncs/window.c:	printf( "data = %p, ", window->data );
libvips/iofuncs/window.c:	printf( "baseaddr = %p, ", window->baseaddr );
libvips/iofuncs/window.c:	printf( "length = %zd\n", window->length );
libvips/iofuncs/header.c: *	- first version
libvips/iofuncs/header.c: * 	- now reads meta fields too
libvips/iofuncs/header.c: * 	- cleaned up
libvips/iofuncs/header.c: *	- added im_header_exists(), im_header_map()
libvips/iofuncs/header.c: * 	- now im_header_get_type() and im_header_get() rather than
libvips/iofuncs/header.c: * 	- removed Hist from standard fields ... now a separate function
libvips/iofuncs/header.c: * 	- im_header_get_type() renamed as im_header_get_typeof() to prevent
libvips/iofuncs/header.c: * 	  confusion with GObject-style type definers
libvips/iofuncs/header.c: * 	- rename as header.c
libvips/iofuncs/header.c: * 	- gtkdoc comments
libvips/iofuncs/header.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/header.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/header.c: * @see_also: <link linkend="libvips-meta">meta</link>,
libvips/iofuncs/header.c: * <link linkend="libvips-check">check</link>
libvips/iofuncs/header.c: * fields (see <link linkend="libvips-image">image</link>), then search for 
libvips/iofuncs/header.c: * <link linkend="libvips-meta">meta</link>).
libvips/iofuncs/header.c: * See <link linkend="libvips-meta">meta</link>
libvips/iofuncs/header.c:/* These are actually floats :-( how annoying. We report them as doubles for
libvips/iofuncs/header.c: * int-valued fields.
libvips/iofuncs/header.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/header.c:		return( -1 );
libvips/iofuncs/header.c: * double-valued fields.
libvips/iofuncs/header.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/header.c:		return( -1 );
libvips/iofuncs/header.c: * string-valued fields.
libvips/iofuncs/header.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/header.c:		return( -1 );
libvips/iofuncs/header.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/header.c:		return( -1 );
libvips/iofuncs/header.c:			return( -1 );
libvips/iofuncs/header.c:/* Fill value_copy with a copy of the value, -1 on error. value_copy must be 
libvips/iofuncs/header.c: * This will return -1 and add a message to the error buffer if the field
libvips/iofuncs/header.c: *   return( -1 );
libvips/iofuncs/header.c: *   return( -1 );
libvips/iofuncs/header.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/header.c:	return( -1 );
libvips/iofuncs/header.c:	return( fn( meta->im, meta->field, &meta->value, a ) );
libvips/iofuncs/header.c: * iteration, or a non-%NULL pointer to indicate early termination.
libvips/iofuncs/header.c:	if( im->Meta_traverse && 
libvips/iofuncs/header.c:		(result = im_slist_map2( im->Meta_traverse, 
libvips/iofuncs/meta.c: *	- hacked from code from Markus Wollgarten
libvips/iofuncs/meta.c: *	- take a copy of field names so we work for sprintf()'d fields
libvips/iofuncs/meta.c: *	- separate GType for refstring so we can spot it from im_header_map()
libvips/iofuncs/meta.c: *	- added BLOB too (ie. can be saved to xml)
libvips/iofuncs/meta.c: * 	- get_ funcs set im_error()
libvips/iofuncs/meta.c: * 	- added im__meta_destroy()
libvips/iofuncs/meta.c: * 	- oop, hash table insert/replace confusion fixed
libvips/iofuncs/meta.c: * 	- oop, im_save_string_setf() was leaking
libvips/iofuncs/meta.c: * 	- added string <-> refstring transforms
libvips/iofuncs/meta.c: * 	- im_meta_get_type() renamed as im_meta_get_typeof() to prevent
libvips/iofuncs/meta.c: * 	  confusion with GObject-style type definers
libvips/iofuncs/meta.c: * 	- gtkdoc comments
libvips/iofuncs/meta.c:    Copyright (C) 1991-2005 The National Gallery
libvips/iofuncs/meta.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/meta.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/meta.c: * @see_also: <link linkend="libvips-header">header</link>
libvips/iofuncs/meta.c: * is implemented with reference-counted pointers, so it is efficient, even for
libvips/iofuncs/meta.c: * "icc-profile-data".
libvips/iofuncs/meta.c: * 'edvips' command-line tool to extract or replace this block of XML.
libvips/iofuncs/meta.c: * reference-counted areas of memory. If you base your metadata on one of
libvips/iofuncs/meta.c:	The GValue we store can be a number, mutable string, ref-counted 
libvips/iofuncs/meta.c:	if( meta->im != im )
libvips/iofuncs/meta.c:			meta->field );
libvips/iofuncs/meta.c:	if( !(found = g_hash_table_lookup( im->Meta, meta->field )) )
libvips/iofuncs/meta.c:			meta->field );
libvips/iofuncs/meta.c:			meta->field );
libvips/iofuncs/meta.c:	if( meta->field != field )
libvips/iofuncs/meta.c:			meta->field );
libvips/iofuncs/meta.c:	if( meta->im != im )
libvips/iofuncs/meta.c:			meta->field );
libvips/iofuncs/meta.c:	if( !g_slist_find( im->Meta_traverse, meta ) )
libvips/iofuncs/meta.c:			meta->field );
libvips/iofuncs/meta.c:	if( im->Meta )
libvips/iofuncs/meta.c:		g_hash_table_foreach( im->Meta, 
libvips/iofuncs/meta.c:	im_slist_map2( im->Meta_traverse, 
libvips/iofuncs/meta.c:	str_value = g_strdup_value_contents( &meta->value );
libvips/iofuncs/meta.c:		meta->field, str_value );
libvips/iofuncs/meta.c:	if( meta->im )
libvips/iofuncs/meta.c:		meta->im->Meta_traverse = 
libvips/iofuncs/meta.c:			g_slist_remove( meta->im->Meta_traverse, meta );
libvips/iofuncs/meta.c:	g_value_unset( &meta->value );
libvips/iofuncs/meta.c:	IM_FREE( meta->field );
libvips/iofuncs/meta.c:	meta->im = im;
libvips/iofuncs/meta.c:	meta->field = NULL;
libvips/iofuncs/meta.c:	memset( &meta->value, 0, sizeof( GValue ) );
libvips/iofuncs/meta.c:	if( !(meta->field = im_strdup( NULL, field )) ) {
libvips/iofuncs/meta.c:	g_value_init( &meta->value, G_VALUE_TYPE( value ) );
libvips/iofuncs/meta.c:	g_value_copy( value, &meta->value );
libvips/iofuncs/meta.c:	im->Meta_traverse = g_slist_append( im->Meta_traverse, meta );
libvips/iofuncs/meta.c:	g_hash_table_replace( im->Meta, meta->field, meta ); 
libvips/iofuncs/meta.c:	IM_FREEF( g_hash_table_destroy, im->Meta );
libvips/iofuncs/meta.c:	g_assert( !im->Meta_traverse );
libvips/iofuncs/meta.c:	if( !im->Meta ) {
libvips/iofuncs/meta.c:		g_assert( !im->Meta_traverse );
libvips/iofuncs/meta.c:		im->Meta = g_hash_table_new_full( g_str_hash, g_str_equal,
libvips/iofuncs/meta.c:	str_value = g_strdup_value_contents( &meta->value );
libvips/iofuncs/meta.c:		meta->field, str_value );
libvips/iofuncs/meta.c:	meta_copy = meta_new( dst, meta->field, &meta->value );
libvips/iofuncs/meta.c:	if( src->Meta ) {
libvips/iofuncs/meta.c:		im_slist_map2( src->Meta_traverse,
libvips/iofuncs/meta.c: *   return( -1 );
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:	if( im->Meta && 
libvips/iofuncs/meta.c:		g_hash_table_remove( im->Meta, field ) )
libvips/iofuncs/meta.c: * This will return -1 and add a message to the error buffer if the item
libvips/iofuncs/meta.c: *   return( -1 );
libvips/iofuncs/meta.c: *   return( -1 );
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c:	if( !im->Meta || !(meta = g_hash_table_lookup( im->Meta, field )) ) {
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:	g_value_init( value_copy, G_VALUE_TYPE( &meta->value ) );
libvips/iofuncs/meta.c:	g_value_copy( &meta->value, value_copy );
libvips/iofuncs/meta.c:	if( !im->Meta || !(meta = g_hash_table_lookup( im->Meta, field )) ) 
libvips/iofuncs/meta.c:	return( G_VALUE_TYPE( &meta->value ) );
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c: * @fmt: printf()-style format string
libvips/iofuncs/meta.c: * @Varargs: arguments to printf()-formatted @fmt
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:/* A GType for a ref-counted area of memory.
libvips/iofuncs/meta.c:/* An area of mem with a free func. (eg. \0-terminated string, or a struct).
libvips/iofuncs/meta.c:	area->count = 1;
libvips/iofuncs/meta.c:	area->length = 0;
libvips/iofuncs/meta.c:	area->data = data;
libvips/iofuncs/meta.c:	area->free_fn = free_fn;
libvips/iofuncs/meta.c:		area, area->count, area_number );
libvips/iofuncs/meta.c:	area->length = blob_length;
libvips/iofuncs/meta.c:	g_assert( area->count >= 0 );
libvips/iofuncs/meta.c:	area->count += 1;
libvips/iofuncs/meta.c:	printf( "area_copy: %p count = %d\n", area, area->count );
libvips/iofuncs/meta.c:	g_assert( area->count > 0 );
libvips/iofuncs/meta.c:	area->count -= 1;
libvips/iofuncs/meta.c:	printf( "area_unref: %p count = %d\n", area, area->count );
libvips/iofuncs/meta.c:	if( area->count == 0 && area->free_fn ) {
libvips/iofuncs/meta.c:		(void) area->free_fn( area->data, NULL );
libvips/iofuncs/meta.c:		area->free_fn = NULL;
libvips/iofuncs/meta.c:		area_number -= 1;
libvips/iofuncs/meta.c:		area->count, area->data );
libvips/iofuncs/meta.c:/* Set value to be a ref-counted area of memory with a free function.
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:	return( area->data );
libvips/iofuncs/meta.c:	return( area->length );
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c: * copying reference-counted pointers, making the much more efficient than
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:	area->length = strlen( str );
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:	*str = area->data;
libvips/iofuncs/meta.c:		*blob_length = area->length;
libvips/iofuncs/meta.c:	return( area->data );
libvips/iofuncs/meta.c: * copied by copying reference-counted pointers.
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c: * Returns: 0 on success, -1 otherwise.
libvips/iofuncs/meta.c:		return( -1 );
libvips/iofuncs/meta.c:	/* Register transform functions to go from built-in saveable types to 
libvips/iofuncs/buffer.c: *	- from window.c
libvips/iofuncs/buffer.c: * 	- speed up the search, use our own lock (thanks Christian)
libvips/iofuncs/buffer.c: * 	- split to many buffer lists per image
libvips/iofuncs/buffer.c: * 	- split to a buffer hash per thread
libvips/iofuncs/buffer.c: * 	- reuse buffer mallocs when we can 
libvips/iofuncs/buffer.c: * 	- add im_buffer_cache_list_t and we can avoid some hash ops on
libvips/iofuncs/buffer.c: * 	- move invalid stuff to region
libvips/iofuncs/buffer.c: * 	- move link maintenance to im_demand_hint
libvips/iofuncs/buffer.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/buffer.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/buffer.c:	buffer_cache_n -= 1;
libvips/iofuncs/buffer.c:	IM_FREEF( g_hash_table_destroy, cache->hash );
libvips/iofuncs/buffer.c:	for( p = cache_list->buffers; p; p = p->next ) {
libvips/iofuncs/buffer.c:		im_buffer_t *buffer = (im_buffer_t *) p->data;
libvips/iofuncs/buffer.c:		buffer->done = FALSE;
libvips/iofuncs/buffer.c:	g_slist_free( cache_list->buffers );
libvips/iofuncs/buffer.c:	cache_list->buffers = NULL;
libvips/iofuncs/buffer.c:	cache_list->thread = g_thread_self();
libvips/iofuncs/buffer.c:	cache_list->cache = cache;
libvips/iofuncs/buffer.c:	cache_list->im = im;
libvips/iofuncs/buffer.c:	cache->hash = g_hash_table_new_full( g_direct_hash, g_direct_equal, 
libvips/iofuncs/buffer.c:	cache->thread = g_thread_self();
libvips/iofuncs/buffer.c:	if( !buffer->done ) {
libvips/iofuncs/buffer.c:		IMAGE *im = buffer->im;
libvips/iofuncs/buffer.c:		if( !(cache_list = g_hash_table_lookup( cache->hash, im )) ) {
libvips/iofuncs/buffer.c:			g_hash_table_insert( cache->hash, im, cache_list );
libvips/iofuncs/buffer.c:		g_assert( !g_slist_find( cache_list->buffers, buffer ) );
libvips/iofuncs/buffer.c:		g_assert( cache_list->thread == cache->thread );
libvips/iofuncs/buffer.c:		cache_list->buffers = 
libvips/iofuncs/buffer.c:			g_slist_prepend( cache_list->buffers, buffer );
libvips/iofuncs/buffer.c:		buffer->done = TRUE;
libvips/iofuncs/buffer.c:		buffer->cache = cache;
libvips/iofuncs/buffer.c:	if( buffer->done ) {
libvips/iofuncs/buffer.c:		IMAGE *im = buffer->im;
libvips/iofuncs/buffer.c:		im_buffer_cache_t *cache = buffer->cache;
libvips/iofuncs/buffer.c:		g_assert( cache->thread == g_thread_self() );
libvips/iofuncs/buffer.c:		cache_list = g_hash_table_lookup( cache->hash, im );
libvips/iofuncs/buffer.c:		g_assert( cache_list->thread == cache->thread );
libvips/iofuncs/buffer.c:		g_assert( g_slist_find( cache_list->buffers, buffer ) );
libvips/iofuncs/buffer.c:		cache_list->buffers = 
libvips/iofuncs/buffer.c:			g_slist_remove( cache_list->buffers, buffer );
libvips/iofuncs/buffer.c:		buffer->done = FALSE;
libvips/iofuncs/buffer.c:		buffer->cache = NULL;
libvips/iofuncs/buffer.c:			g_slist_length( cache_list->buffers ) );
libvips/iofuncs/buffer.c:		buffer->area.left, buffer->area.top, 
libvips/iofuncs/buffer.c:		buffer->area.width, buffer->area.height, 
libvips/iofuncs/buffer.c:	g_assert( buffer->ref_count > 0 );
libvips/iofuncs/buffer.c:	buffer->ref_count -= 1;
libvips/iofuncs/buffer.c:	if( buffer->ref_count == 0 ) {
libvips/iofuncs/buffer.c:		if( !buffer->done )
libvips/iofuncs/buffer.c:		buffer->im = NULL;
libvips/iofuncs/buffer.c:		IM_FREE( buffer->buf );
libvips/iofuncs/buffer.c:		buffer->bsize = 0;
libvips/iofuncs/buffer.c:	buffer->ref_count = 1;
libvips/iofuncs/buffer.c:	buffer->im = im;
libvips/iofuncs/buffer.c:	buffer->area = *area;
libvips/iofuncs/buffer.c:	buffer->done = FALSE;
libvips/iofuncs/buffer.c:	buffer->cache = NULL;
libvips/iofuncs/buffer.c:	buffer->bsize = (size_t) IM_IMAGE_SIZEOF_PEL( im ) * 
libvips/iofuncs/buffer.c:		area->width * area->height;
libvips/iofuncs/buffer.c:	if( !(buffer->buf = im_malloc( NULL, buffer->bsize )) ) {
libvips/iofuncs/buffer.c:		buffer->area.left, buffer->area.top, 
libvips/iofuncs/buffer.c:		buffer->area.width, buffer->area.height, 
libvips/iofuncs/buffer.c:	IMAGE *im = buffer->im;
libvips/iofuncs/buffer.c:	g_assert( buffer->ref_count == 1 );
libvips/iofuncs/buffer.c:	buffer->area = *area;
libvips/iofuncs/buffer.c:	g_assert( !buffer->done );
libvips/iofuncs/buffer.c:		area->width * area->height;
libvips/iofuncs/buffer.c:	if( buffer->bsize < new_bsize ) {
libvips/iofuncs/buffer.c:		buffer->bsize = new_bsize;
libvips/iofuncs/buffer.c:		IM_FREE( buffer->buf );
libvips/iofuncs/buffer.c:		if( !(buffer->buf = im_malloc( NULL, buffer->bsize )) ) 
libvips/iofuncs/buffer.c:			return( -1 );
libvips/iofuncs/buffer.c:	cache_list = g_hash_table_lookup( cache->hash, im );
libvips/iofuncs/buffer.c:	p = cache_list ? cache_list->buffers : NULL;
libvips/iofuncs/buffer.c:	/* This needs to be quick :-( don't use
libvips/iofuncs/buffer.c:	for( ; p; p = p->next ) {
libvips/iofuncs/buffer.c:		buffer = (im_buffer_t *) p->data;
libvips/iofuncs/buffer.c:		area = &buffer->area;
libvips/iofuncs/buffer.c:		if( area->left <= r->left &&
libvips/iofuncs/buffer.c:			area->top <= r->top &&
libvips/iofuncs/buffer.c:			area->left + area->width >= r->left + r->width &&
libvips/iofuncs/buffer.c:			area->top + area->height >= r->top + r->height ) {
libvips/iofuncs/buffer.c:			buffer->ref_count += 1;
libvips/iofuncs/buffer.c:				buffer->area.left, buffer->area.top, 
libvips/iofuncs/buffer.c:				buffer->area.width, buffer->area.height, 
libvips/iofuncs/buffer.c:				buffer->ref_count,
libvips/iofuncs/buffer.c:	g_assert( !old_buffer || old_buffer->im == im );
libvips/iofuncs/buffer.c:		im_rect_includesrect( &old_buffer->area, area ) ) 
libvips/iofuncs/buffer.c:	if( old_buffer && old_buffer->ref_count == 1 ) {
libvips/iofuncs/buffer.c:	printf( "im_buffer_t: %p ref_count = %d, ", buffer, buffer->ref_count );
libvips/iofuncs/buffer.c:	printf( "im = %p, ", buffer->im );
libvips/iofuncs/buffer.c:	printf( "area.left = %d, ", buffer->area.left );
libvips/iofuncs/buffer.c:	printf( "area.top = %d, ", buffer->area.top );
libvips/iofuncs/buffer.c:	printf( "area.width = %d, ", buffer->area.width );
libvips/iofuncs/buffer.c:	printf( "area.height = %d, ", buffer->area.height );
libvips/iofuncs/buffer.c:	printf( "done = %d, ", buffer->done );
libvips/iofuncs/buffer.c:	printf( "buf = %p, ", buffer->buf );
libvips/iofuncs/buffer.c:	printf( "bsize = %zd\n", buffer->bsize );
libvips/iofuncs/base64.c:/* base64.c -- Encode/decode integers in base64 format
libvips/iofuncs/base64.c: * \section{Base-64 Routines}
libvips/iofuncs/base64.c: * \intro These routines use the 64-character subset of International
libvips/iofuncs/base64.c:	- oop, needed a slightly larger worst-case buffer in im__b64_encode()
libvips/iofuncs/base64.c:	- fix signed/unsigned warning
libvips/iofuncs/base64.c:/* Read (up to) 3 bytes from in. Be careful about byte ordering :-/ we need to
libvips/iofuncs/base64.c:			remaining -= 1;
libvips/iofuncs/base64.c:			remaining -= 6;
libvips/iofuncs/base64.c:		size_t remaining = data_length - i;
libvips/iofuncs/base64.c:				*p++ = (bits >> (nbits - 8)) & 0xff;
libvips/iofuncs/base64.c:				nbits -= 8;
libvips/iofuncs/base64.c:	g_assert( (size_t) (p - data) < output_data_length );
libvips/iofuncs/base64.c:		*data_length = p - data;
libvips/iofuncs/base64.c:	for( total = 0, i = 0; i < p - data; i++ )
libvips/iofuncs/base64.c:		p - data, total & 0xffff );
libvips/iofuncs/time.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/time.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/time.c:	if( im->time ) {
libvips/iofuncs/time.c:		printf( "im__time_destroy: %s\n", im->filename );
libvips/iofuncs/time.c:		g_timer_destroy( im->time->start );
libvips/iofuncs/time.c:		im_free( im->time );
libvips/iofuncs/time.c:		im->time = NULL;
libvips/iofuncs/time.c:		return( -1 );
libvips/iofuncs/time.c:	printf( "time_add: %s\n", im->filename );
libvips/iofuncs/time.c:	time->im = im;
libvips/iofuncs/time.c:	time->start = g_timer_new();
libvips/iofuncs/time.c:	time->run = 0;
libvips/iofuncs/time.c:	time->eta = 0;
libvips/iofuncs/time.c:	time->tpels = (gint64) im->Xsize * im->Ysize;
libvips/iofuncs/time.c:	time->npels = 0;
libvips/iofuncs/time.c:	time->percent = 0;
libvips/iofuncs/time.c:	im->time = time;
libvips/iofuncs/time.c:	time->run = g_timer_elapsed( time->start, NULL );
libvips/iofuncs/time.c:	time->npels += w * h;
libvips/iofuncs/time.c:	prop = (float) time->npels / (float) time->tpels;
libvips/iofuncs/time.c:	time->percent = 100 * prop;
libvips/iofuncs/time.c:		time->eta = (1.0 / prop) * time->run - time->run;
libvips/iofuncs/time.c:	if( im->progress ) {
libvips/iofuncs/time.c:		printf( "im__start_eval: %s\n", im->filename );
libvips/iofuncs/time.c:		g_assert( !im_image_sanity( im->progress ) );
libvips/iofuncs/time.c:		if( time_add( im->progress ) )
libvips/iofuncs/time.c:			return( -1 );
libvips/iofuncs/time.c:		if( im__trigger_callbacks( im->progress->evalstartfns ) )
libvips/iofuncs/time.c:			return( -1 );
libvips/iofuncs/time.c: * We signal progress on the ->progress IMAGE, see im_add_eval_callback(). We
libvips/iofuncs/time.c:	if( im->progress ) {
libvips/iofuncs/time.c:		/* Need to test ->time, it may have been shut down. Also, only
libvips/iofuncs/time.c:		if( im->progress->time &&
libvips/iofuncs/time.c:			im->progress->evalfns ) {
libvips/iofuncs/time.c:			if( update_time( im->progress->time, w, h ) )
libvips/iofuncs/time.c:				return( -1 );
libvips/iofuncs/time.c:		if( im__trigger_callbacks( im->progress->evalfns ) )
libvips/iofuncs/time.c:			return( -1 );
libvips/iofuncs/time.c:	if( im->progress ) {
libvips/iofuncs/time.c:		printf( "im__end_eval: %s\n", im->filename );
libvips/iofuncs/time.c:		g_assert( !im_image_sanity( im->progress ) );
libvips/iofuncs/time.c:		if( im__trigger_callbacks( im->progress->evalendfns ) )
libvips/iofuncs/time.c:			return( -1 );
libvips/iofuncs/time.c:		im__time_destroy( im->progress );
libvips/iofuncs/im_setbuf.c: *	- support for type field added
libvips/iofuncs/im_setbuf.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_setbuf.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_setbuf.c:	im->dtype = IM_SETBUF;
libvips/iofuncs/im_setbuf.c:	im->dhint = IM_ANY;
libvips/iofuncs/callback.c: *	- eval callbacks added
libvips/iofuncs/callback.c: *	- evalend callbacks added
libvips/iofuncs/callback.c: *	- now always calls all callbacks, even if some fail
libvips/iofuncs/callback.c: *	- added invalidate callbacks
libvips/iofuncs/callback.c: * 	- don't set im_error() on callback failed, that's the user's job
libvips/iofuncs/callback.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/callback.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/callback.c: * @see_also: <link linkend="libvips-image">image</link>
libvips/iofuncs/callback.c: * Callbacks should return 0 for success, or -1 on error, setting an error
libvips/iofuncs/callback.c:		return( -1 );
libvips/iofuncs/callback.c:	cbs->fn = fn;
libvips/iofuncs/callback.c:	cbs->a = a;
libvips/iofuncs/callback.c:	cbs->b = b;
libvips/iofuncs/callback.c:	cbs->im = im;
libvips/iofuncs/callback.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/callback.c:	return( add_callback( im, &im->closefns, fn, a, b ) );
libvips/iofuncs/callback.c: * Post-close callbacks are triggered exactly once, just before the memory
libvips/iofuncs/callback.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/callback.c:	return( add_callback( im, &im->postclosefns, fn, a, b ) );
libvips/iofuncs/callback.c: * Attaches a pre-close callback @fn to @im.
libvips/iofuncs/callback.c: * Pre-close callbacks are triggered exactly once just before an image is
libvips/iofuncs/callback.c: * Pre-close callbacks are a good place for languae bindings to break as
libvips/iofuncs/callback.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/callback.c:	return( add_callback( im, &im->preclosefns, fn, a, b ) );
libvips/iofuncs/callback.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/callback.c:	return( add_callback( im, &im->writtenfns, fn, a, b ) );
libvips/iofuncs/callback.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/callback.c:	im->progress = im;
libvips/iofuncs/callback.c:	return( add_callback( im, &im->evalfns, fn, a, b ) );
libvips/iofuncs/callback.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/callback.c:	return( add_callback( im, &im->evalendfns, fn, a, b ) );
libvips/iofuncs/callback.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/callback.c:	return( add_callback( im, &im->evalstartfns, fn, a, b ) );
libvips/iofuncs/callback.c: * removing images from other, higher-level caches.
libvips/iofuncs/callback.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/callback.c:	return( add_callback( im, &im->invalidatefns, fn, a, b ) );
libvips/iofuncs/callback.c:	if( (res = cbs->fn( cbs->a, cbs->b )) ) {
libvips/iofuncs/callback.c:			"failed for %s\n", cbs->im->filename );
libvips/iofuncs/im_generate.c: *	- adapted for partial v2
libvips/iofuncs/im_generate.c: *	- ANSIfied
libvips/iofuncs/im_generate.c: *	- im_setupout() conventions clarified - see autorewind in
libvips/iofuncs/im_generate.c: *	- eval callbacks added
libvips/iofuncs/im_generate.c: *	- demand hint mechanism added
libvips/iofuncs/im_generate.c: *	- asynchronous output mechanisms removed, as no observable speed-up
libvips/iofuncs/im_generate.c: *      - new thread stuff added, with a define to turn it off
libvips/iofuncs/im_generate.c: *	- start & stop functions can now be NULL for no-op
libvips/iofuncs/im_generate.c: *	- evalend callback system added
libvips/iofuncs/im_generate.c: *	- IM_ARRAY uses added
libvips/iofuncs/im_generate.c: *	- im_fill_copy() added
libvips/iofuncs/im_generate.c: *	- im_region_region() uses modified
libvips/iofuncs/im_generate.c: *	- im_fill_lines() bug removed
libvips/iofuncs/im_generate.c: *	- revised and simplified ... some code shared with im_iterate()
libvips/iofuncs/im_generate.c: *	- new im_generate_region() added
libvips/iofuncs/im_generate.c: *	- IM_ANY added
libvips/iofuncs/im_generate.c: *	- tile geometry made into ints for easy tuning
libvips/iofuncs/im_generate.c: *	- threads reorganised for POSIX
libvips/iofuncs/im_generate.c: *	- threadgroup stuff added
libvips/iofuncs/im_generate.c: *	- better how-many-pixels-calculated
libvips/iofuncs/im_generate.c: * 	- merge background write stuff
libvips/iofuncs/im_generate.c: * 	- new start/end eval callbacks
libvips/iofuncs/im_generate.c: * 	- gtkdoc comments
libvips/iofuncs/im_generate.c: * 	- remove threadgroup stuff
libvips/iofuncs/im_generate.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/im_generate.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/im_generate.c: * @see_also: <link linkend="libvips-image">image</link>, 
libvips/iofuncs/im_generate.c: * <link linkend="libvips-region">region</link>
libvips/iofuncs/im_generate.c: * a %NULL-terminated array of input images.
libvips/iofuncs/im_generate.c: * a %NULL-terminated array of input images.
libvips/iofuncs/im_generate.c: * @Varargs: %NULL-terminated list of input images
libvips/iofuncs/im_generate.c: * Convenience function --- make a %NULL-terminated array of input images.
libvips/iofuncs/im_generate.c: * Returns: %NULL-terminated array of images. Do not free the result.
libvips/iofuncs/im_generate.c: * per-thread state, such as an input region.
libvips/iofuncs/im_generate.c: * Fill @out->valid with pixels. @seq contains per-thread state, such as the
libvips/iofuncs/im_generate.c: * Returns: 0 on success, -1 on error.
libvips/iofuncs/im_generate.c: * per-thread state, such as an input region.
libvips/iofuncs/im_generate.c: * Returns: 0 on success, -1 on error.
libvips/iofuncs/im_generate.c:	count = region->bpl * area->height;
libvips/iofuncs/im_generate.c:	buf = IM_REGION_ADDR( region, 0, area->top );
libvips/iofuncs/im_generate.c:		nwritten = write( region->im->fd, buf, count ); 
libvips/iofuncs/im_generate.c:		if( nwritten == (size_t) -1 ) 
libvips/iofuncs/im_generate.c:		count -= nwritten;
libvips/iofuncs/im_generate.c: * Returns: 0 on success, or -1 on error.
libvips/iofuncs/im_generate.c:	if( !im->hint_set ) {
libvips/iofuncs/im_generate.c:		return( -1 );
libvips/iofuncs/im_generate.c:	if( im->Xsize <= 0 || im->Ysize <= 0 || im->Bands <= 0 ) {
libvips/iofuncs/im_generate.c:		return( -1 );
libvips/iofuncs/im_generate.c:	im->Bbits = im_bits_of_fmt( im->BandFmt );
libvips/iofuncs/im_generate.c:        switch( im->dtype ) {
libvips/iofuncs/im_generate.c:                if( im->generate || im->start || im->stop ) {
libvips/iofuncs/im_generate.c:                        return( -1 );
libvips/iofuncs/im_generate.c:                im->start = start;
libvips/iofuncs/im_generate.c:                im->generate = generate;
libvips/iofuncs/im_generate.c:                im->stop = stop;
libvips/iofuncs/im_generate.c:                im->client1 = a;
libvips/iofuncs/im_generate.c:                im->client2 = b;
libvips/iofuncs/im_generate.c:                if( im->generate || im->start || im->stop ) {
libvips/iofuncs/im_generate.c:                        return( -1 );
libvips/iofuncs/im_generate.c:                        return( -1 );
libvips/iofuncs/im_generate.c:                im->start = start;
libvips/iofuncs/im_generate.c:                im->generate = generate;
libvips/iofuncs/im_generate.c:                im->stop = stop;
libvips/iofuncs/im_generate.c:                im->client1 = a;
libvips/iofuncs/im_generate.c:                im->client2 = b;
libvips/iofuncs/im_generate.c:                if( im->dtype == IM_OPENOUT ) 
libvips/iofuncs/im_generate.c:                        return( -1 );
libvips/iofuncs/im_generate.c:			im_dtype2char( im->dtype ) );
libvips/iofuncs/im_generate.c:                return( -1 );
libvips/iofuncs/im_generate.c:	if( im__trigger_callbacks( im->writtenfns ) )
libvips/iofuncs/im_generate.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:/* Define built-in VIPS types.
libvips/iofuncs/dispatch_types.c: *	- any length vector (Tom)
libvips/iofuncs/dispatch_types.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/iofuncs/dispatch_types.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/iofuncs/dispatch_types.c:				"  '%s'\n", scr->d_name );
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:	if( iv->vec ) {
libvips/iofuncs/dispatch_types.c:		for( i = 0; i < iv->n; i++ )
libvips/iofuncs/dispatch_types.c:			if( iv->vec[i] ) {
libvips/iofuncs/dispatch_types.c:				im_close( iv->vec[i] );
libvips/iofuncs/dispatch_types.c:				iv->vec[i] = NULL;
libvips/iofuncs/dispatch_types.c:		im_free( iv->vec );
libvips/iofuncs/dispatch_types.c:		iv->vec = NULL;
libvips/iofuncs/dispatch_types.c:		iv->n = 0;
libvips/iofuncs/dispatch_types.c:	strv = g_strsplit( str, VEC_SEPS, -1 );
libvips/iofuncs/dispatch_types.c:	if( !(iv->vec = IM_ARRAY( NULL, nargs, IMAGE * )) ) {
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	iv->n = nargs;
libvips/iofuncs/dispatch_types.c:		iv->vec[i] = NULL;
libvips/iofuncs/dispatch_types.c:		if( !(iv->vec[i] = im_open( strv[i], "r" )) ) {
libvips/iofuncs/dispatch_types.c:			return( -1 );
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:	if( str && !(mo->name = im_strdup( NULL, str )) ) 
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	mo->mask = NULL;
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	if( !(mo->mask = im_read_dmask( str )) )
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	if( !(mo->mask = im_read_imask( str )) )
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	if( mo->name ) {
libvips/iofuncs/dispatch_types.c:		im_free( mo->name );
libvips/iofuncs/dispatch_types.c:		mo->name = NULL;
libvips/iofuncs/dispatch_types.c:	if( mo->mask ) {
libvips/iofuncs/dispatch_types.c:		im_free_dmask( (DOUBLEMASK *) mo->mask );
libvips/iofuncs/dispatch_types.c:		mo->mask = NULL;
libvips/iofuncs/dispatch_types.c:	if( mo->name ) {
libvips/iofuncs/dispatch_types.c:		im_free( mo->name );
libvips/iofuncs/dispatch_types.c:		mo->name = NULL;
libvips/iofuncs/dispatch_types.c:	if( mo->mask ) {
libvips/iofuncs/dispatch_types.c:		im_free_imask( (INTMASK *) mo->mask );
libvips/iofuncs/dispatch_types.c:		mo->mask = NULL;
libvips/iofuncs/dispatch_types.c:	if( mo->mask && im_write_dmask( mo->mask ) )
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	if( mo->mask && im_write_imask( mo->mask ) )
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:	if( dv->vec ) {
libvips/iofuncs/dispatch_types.c:		im_free( dv->vec );
libvips/iofuncs/dispatch_types.c:		dv->vec = NULL;
libvips/iofuncs/dispatch_types.c:		dv->n = 0;
libvips/iofuncs/dispatch_types.c:	strv = g_strsplit( str, VEC_SEPS, -1 );
libvips/iofuncs/dispatch_types.c:	if( !(dv->vec = IM_ARRAY( NULL, nargs, double )) ) {
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	dv->n = nargs;
libvips/iofuncs/dispatch_types.c:		dv->vec[i] = g_ascii_strtod( strv[i], NULL );
libvips/iofuncs/dispatch_types.c:			return( -1 );
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:	for( i = 0; i < dv->n; i++ ) 
libvips/iofuncs/dispatch_types.c:		printf( "%G ", dv->vec[i] );
libvips/iofuncs/dispatch_types.c:	if( iv->vec ) {
libvips/iofuncs/dispatch_types.c:		im_free( iv->vec );
libvips/iofuncs/dispatch_types.c:		iv->vec = NULL;
libvips/iofuncs/dispatch_types.c:		iv->n = 0;
libvips/iofuncs/dispatch_types.c:	strv = g_strsplit( str, VEC_SEPS, -1 );
libvips/iofuncs/dispatch_types.c:	if( !(iv->vec = IM_ARRAY( NULL, nargs, int )) ) {
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	iv->n = nargs;
libvips/iofuncs/dispatch_types.c:			return( -1 );
libvips/iofuncs/dispatch_types.c:		iv->vec[i] = (int) val;
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:	for( i = 0; i < iv->n; i++ ) 
libvips/iofuncs/dispatch_types.c:		printf( "%d ", iv->vec[i] );
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:	DOUBLEMASK *mask = ((im_mask_object *) obj)->mask;
libvips/iofuncs/dispatch_types.c:	for( j = 0; j < mask->ysize; j++ ) {
libvips/iofuncs/dispatch_types.c:		row = mask->coeff + j * 6;
libvips/iofuncs/dispatch_types.c:	printf( "\td_name: %s\n", scr->d_name );
libvips/iofuncs/dispatch_types.c:	printf( "\td_type: %s\n", decode_dtype( scr->d_type ) );
libvips/iofuncs/dispatch_types.c:		scr->d_mat[0][0], scr->d_mat[0][1], scr->d_mat[0][2] );
libvips/iofuncs/dispatch_types.c:		scr->d_mat[1][0], scr->d_mat[1][1], scr->d_mat[1][2] );
libvips/iofuncs/dispatch_types.c:		scr->d_mat[2][0], scr->d_mat[2][1], scr->d_mat[2][2] );
libvips/iofuncs/dispatch_types.c:	printf( "\td_YCW: %g\n", scr->d_YCW );
libvips/iofuncs/dispatch_types.c:	printf( "\td_xCW: %g\n", scr->d_xCW );
libvips/iofuncs/dispatch_types.c:	printf( "\td_yCW: %g\n", scr->d_yCW );
libvips/iofuncs/dispatch_types.c:	printf( "\td_YCR: %g\n", scr->d_YCR );
libvips/iofuncs/dispatch_types.c:	printf( "\td_YCG: %g\n", scr->d_YCG );
libvips/iofuncs/dispatch_types.c:	printf( "\td_YCB: %g\n", scr->d_YCB );
libvips/iofuncs/dispatch_types.c:	printf( "\td_Vrwr: %d\n", scr->d_Vrwr );
libvips/iofuncs/dispatch_types.c:	printf( "\td_Vrwg: %d\n", scr->d_Vrwg );
libvips/iofuncs/dispatch_types.c:	printf( "\td_Vrwb: %d\n", scr->d_Vrwb );
libvips/iofuncs/dispatch_types.c:	printf( "\td_Y0R: %g\n", scr->d_Y0R );
libvips/iofuncs/dispatch_types.c:	printf( "\td_Y0G: %g\n", scr->d_Y0G );
libvips/iofuncs/dispatch_types.c:	printf( "\td_Y0B: %g\n", scr->d_Y0B );
libvips/iofuncs/dispatch_types.c:	printf( "\td_gammaR: %g\n", scr->d_gammaR );
libvips/iofuncs/dispatch_types.c:	printf( "\td_gammaG: %g\n", scr->d_gammaG );
libvips/iofuncs/dispatch_types.c:	printf( "\td_gammaB: %g\n", scr->d_gammaB );
libvips/iofuncs/dispatch_types.c:	printf( "\td_B: %g\n", scr->d_B );
libvips/iofuncs/dispatch_types.c:	printf( "\td_P: %g\n", scr->d_P );
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/iofuncs/dispatch_types.c:		return( -1 );
libvips/iofuncs/dispatch_types.c:	IM_TYPE_ARG,		/* It requires a command-line arg */
libvips/cimg/Makefile.am:	-Dcimg_strict \
libvips/cimg/Makefile.am:	-Dcimg_OS=0 \
libvips/cimg/Makefile.am:	-Dcimg_display_type=0 \
libvips/cimg/Makefile.am:	-DLOCALEDIR=\""$(LOCALEDIR)"\"
libvips/cimg/Makefile.am:	-Dcimg_strict \
libvips/cimg/Makefile.am:	-Dcimg_OS=1 \
libvips/cimg/Makefile.am:	-Dcimg_display_type=0 \
libvips/cimg/Makefile.am:	-DLOCALEDIR=\""$(LOCALEDIR)"\"
libvips/cimg/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/cimg/CImg.h: #  License     : CeCILL-C
libvips/cimg/CImg.h: #  This software is governed by the CeCILL-C license under French law and
libvips/cimg/CImg.h: #  modify and or redistribute the software under the terms of the CeCILL-C
libvips/cimg/CImg.h: #  professionals having in-depth computer knowledge. Users are therefore
libvips/cimg/CImg.h: #  knowledge of the CeCILL-C license and that you accept its terms.
libvips/cimg/CImg.h:// Unix-like (Linux, Solaris, BSD, MacOSX, Irix,...).
libvips/cimg/CImg.h:// Architecture-dependent includes.
libvips/cimg/CImg.h:// Display-dependent includes.
libvips/cimg/CImg.h:#define cimg_for(img,ptr,T_ptr)   for (T_ptr *ptr=(img).data+(img).size(); (ptr--)>(img).data; )
libvips/cimg/CImg.h:#define cimg_for_insideX(img,x,n)       for (int x=(n); x<(int)((img).width-(n)); x++)
libvips/cimg/CImg.h:#define cimg_for_insideY(img,y,n)       for (int y=(n); y<(int)((img).height-(n)); y++)
libvips/cimg/CImg.h:#define cimg_for_insideZ(img,z,n)       for (int z=(n); z<(int)((img).depth-(n)); z++)
libvips/cimg/CImg.h:#define cimg_for_insideV(img,v,n)       for (int v=(n); v<(int)((img).dim-(n)); v++)
libvips/cimg/CImg.h:#define cimg_for_borderX(img,x,n)       for (int x=0; x<(int)((img).width);  x==(n)-1?(x=(img).width-(n)): x++)
libvips/cimg/CImg.h:#define cimg_for_borderY(img,y,n)       for (int y=0; y<(int)((img).height); y==(n)-1?(x=(img).height-(n)):y++)
libvips/cimg/CImg.h:#define cimg_for_borderZ(img,z,n)       for (int z=0; z<(int)((img).depth);  z==(n)-1?(x=(img).depth-(n)): z++)
libvips/cimg/CImg.h:#define cimg_for_borderV(img,v,n)       for (int v=0; v<(int)((img).dim);    v==(n)-1?(x=(img).dim-(n)):   v++)
libvips/cimg/CImg.h:#define cimg_for_borderXY(img,x,y,n)    cimg_forY(img,y) for (int x=0; x<(int)((img).width); (y<(n) || y>=(int)((img).height)-(n))?x++: \
libvips/cimg/CImg.h:                                                          ((x<(n)-1 || x>=(int)((img).width)-(n))?x++:(x=(img).width-(n))))
libvips/cimg/CImg.h:#define cimg_for_borderXYZ(img,x,y,z,n) cimg_forYZ(img,y,z) for (int x=0; x<(int)((img).width); (y<(n) || y>=(int)((img).height)-(n) || z<(n) || z>=(int)((img).depth)-(n))?x++: \
libvips/cimg/CImg.h:                                                             ((x<(n)-1 || x>=(int)((img).width)-(n))?x++:(x=(img).width-(n))))
libvips/cimg/CImg.h:#define cimg_for2X(img,x)         for (int x=0,_n##x=1; _n##x<(int)((img).width)   || x==--_n##x; x++, _n##x++)
libvips/cimg/CImg.h:#define cimg_for2Y(img,y)         for (int y=0,_n##y=1; _n##y<(int)((img).height)  || y==--_n##y; y++, _n##y++)
libvips/cimg/CImg.h:#define cimg_for2Z(img,z)         for (int z=0,_n##z=1; _n##z<(int)((img).depth)   || z==--_n##z; z++, _n##z++)
libvips/cimg/CImg.h:#define cimg_for3X(img,x)         for (int x=0,_p##x=0,_n##x=1; _n##x<(int)((img).width)  || x==--_n##x;  _p##x=x++,_n##x++)
libvips/cimg/CImg.h:#define cimg_for3Y(img,y)         for (int y=0,_p##y=0,_n##y=1; _n##y<(int)((img).height) || y==--_n##y;  _p##y=y++,_n##y++)
libvips/cimg/CImg.h:#define cimg_for3Z(img,z)         for (int z=0,_p##z=0,_n##z=1; _n##z<(int)((img).depth)  || z==--_n##z;  _p##z=z++,_n##z++)
libvips/cimg/CImg.h:                                       _a##x<(int)((img).width)  || _n##x==--_a##x || x==(_a##x=--_n##x); \
libvips/cimg/CImg.h:                                       _a##y<(int)((img).height) || _n##y==--_a##y || y==(_a##y=--_n##y); \
libvips/cimg/CImg.h:                                       _a##z<(int)((img).depth)  || _n##z==--_a##z || z==(_a##z=--_n##z); \
libvips/cimg/CImg.h:                                       _a##x<(int)((img).width)  || _n##x==--_a##x || x==(_a##x=--_n##x); \
libvips/cimg/CImg.h:                                       _a##y<(int)((img).height) || _n##y==--_a##y || y==(_a##y=--_n##y); \
libvips/cimg/CImg.h:                                       _a##z<(int)((img).depth)  || _n##z==--_a##z || z==(_a##z=--_n##z); \
libvips/cimg/CImg.h:                                          1)) || x==--_n##x; \
libvips/cimg/CImg.h:                                          1)) || x==--_n##x; \
libvips/cimg/CImg.h:                                          1)) || _n##x==--_a##x || x==(_a##x=--_n##x); \
libvips/cimg/CImg.h:                                          1)) || _n##x==--_a##x || x==(_a##x=--_n##x); \
libvips/cimg/CImg.h:                                          1)) || x==--_n##x; \
libvips/cimg/CImg.h:                                          1)) || x==--_n##x; \
libvips/cimg/CImg.h: #------------------------------------------------
libvips/cimg/CImg.h: #------------------------------------------------
libvips/cimg/CImg.h:   #----------------------------------------------
libvips/cimg/CImg.h:   #----------------------------------------------
libvips/cimg/CImg.h:      are generally used instead. These sub-classes are :
libvips/cimg/CImg.h:      - \b CImgInstanceException : Thrown when the instance associated to the called %CImg function is not
libvips/cimg/CImg.h:      - \b CImgArgumentException : Thrown when one of the arguments given to the called %CImg function is not correct.
libvips/cimg/CImg.h:      - \b CImgIOException : Thrown when an error occured when trying to load or save image files.
libvips/cimg/CImg.h:      - \b CImgDisplayException : Thrown when an error occured when trying to display an image in a window.
libvips/cimg/CImg.h:   #-------------------------------------
libvips/cimg/CImg.h:   #-------------------------------------
libvips/cimg/CImg.h:  //! Namespace that encompasses \a low-level functions and variables of the %CImg Library.
libvips/cimg/CImg.h:     Most of the functions and variables within this namespace are used by the library for low-level processing.
libvips/cimg/CImg.h:    // - largest of two integer types is an integer type.
libvips/cimg/CImg.h:    // - largest of integer/float type is a float type.
libvips/cimg/CImg.h:      static T min()  { return (T)-1>0?(T)0:(T)-1<<(8*sizeof(T)-1); }
libvips/cimg/CImg.h:      static T max()  { return (T)-1>0?(T)-1:~((T)-1<<(8*sizeof(T)-1)); }
libvips/cimg/CImg.h:      static char min() { return (char)-1<<(8*sizeof(char)-1); }
libvips/cimg/CImg.h:      static char max() { return ~((char)-1<<(8*sizeof(char)-1)); }
libvips/cimg/CImg.h:      static short min() { return (short)-1<<(8*sizeof(short)-1); }
libvips/cimg/CImg.h:      static short max() { return ~((short)-1<<(8*sizeof(short)-1)); }
libvips/cimg/CImg.h:      static int min() { return (int)-1<<(8*sizeof(int)-1); }
libvips/cimg/CImg.h:      static int max() { return ~((int)-1<<(8*sizeof(int)-1)); }
libvips/cimg/CImg.h:      static long min() { return (long)-1<<(8*sizeof(long)-1); }
libvips/cimg/CImg.h:      static long max() { return ~((long)-1<<(8*sizeof(long)-1)); }
libvips/cimg/CImg.h:      static float min() { return -3.4E38f; }
libvips/cimg/CImg.h:      static double min() { return -1.7E308; }
libvips/cimg/CImg.h:    // Keycodes for X11-based graphical systems
libvips/cimg/CImg.h:    // Keycodes for Windows-OS
libvips/cimg/CImg.h:      return (char)((x<'A'||x>'Z')?x:x-'A'+'a');
libvips/cimg/CImg.h:      return -1;
libvips/cimg/CImg.h:      if (s1 && s2) { int n=0; for (int k=0; k<l; k++) n+=std::abs(s1[k] - s2[k]); return n; }
libvips/cimg/CImg.h:      if (s1 && s2) { int n=0; for (int k=0; k<l; k++) n+=std::abs(uncase(s1[k])-uncase(s2[k])); return n; }
libvips/cimg/CImg.h:        int l; for (l=cimg::strlen(s); l>=0 && s[l]!=c; l--) ;
libvips/cimg/CImg.h:      return -1;
libvips/cimg/CImg.h:       Conversely, if the \c convert executable is not auto-detected by the function,
libvips/cimg/CImg.h:          std::sprintf(st_imagemagick_path,"C:\\IMAGEM~1.%u-Q\\convert.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_imagemagick_path,"C:\\IMAGEM~1.%u-Q\\VISUA~1\\BIN\\convert.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_imagemagick_path,"C:\\PROGRA~1\\IMAGEM~1.%u-Q\\convert.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_imagemagick_path,"C:\\PROGRA~1\\IMAGEM~1.%u-Q\\VISUA~1\\BIN\\convert.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_imagemagick_path,"D:\\IMAGEM~1.%u-Q\\convert.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_imagemagick_path,"D:\\IMAGEM~1.%u-Q\\VISUA~1\\BIN\\convert.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_imagemagick_path,"D:\\PROGRA~1\\IMAGEM~1.%u-Q\\convert.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_imagemagick_path,"D:\\PROGRA~1\\IMAGEM~1.%u-Q\\VISUA~1\\BIN\\convert.exe",k);
libvips/cimg/CImg.h:       Conversely, if the \c gm executable is not auto-detected by the function,
libvips/cimg/CImg.h:          std::sprintf(st_graphicsmagick_path,"C:\\GRAPHI~1.%u-Q\\gm.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_graphicsmagick_path,"C:\\GRAPHI~1.%u-Q\\VISUA~1\\BIN\\gm.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_graphicsmagick_path,"C:\\PROGRA~1\\GRAPHI~1.%u-Q\\gm.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_graphicsmagick_path,"C:\\PROGRA~1\\GRAPHI~1.%u-Q\\VISUA~1\\BIN\\gm.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_graphicsmagick_path,"D:\\GRAPHI~1.%u-Q\\gm.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_graphicsmagick_path,"D:\\GRAPHI~1.%u-Q\\VISUA~1\\BIN\\gm.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_graphicsmagick_path,"D:\\PROGRA~1\\GRAPHI~1.%u-Q\\gm.exe",k);
libvips/cimg/CImg.h:          std::sprintf(st_graphicsmagick_path,"D:\\PROGRA~1\\GRAPHI~1.%u-Q\\VISUA~1\\BIN\\gm.exe",k);
libvips/cimg/CImg.h:       Conversely, if the \c medcon executable is not auto-detected by the function,
libvips/cimg/CImg.h:       where temporary files can be stored. If such a path is not auto-detected by this function,
libvips/cimg/CImg.h:      else { if (body) std::strcpy(body,filename); l=(int)std::strlen(filename)-1; }
libvips/cimg/CImg.h:      if (path[0]=='-') return (mode[0]=='r')?stdin:stdout;
libvips/cimg/CImg.h:        toread-=lalread;
libvips/cimg/CImg.h:        towrite-=lalwrite;
libvips/cimg/CImg.h:          const unsigned short val = *(--ptr);
libvips/cimg/CImg.h:          const unsigned int val = *(--ptr);
libvips/cimg/CImg.h:        for (T* ptr = buffer+size; ptr>buffer; --ptr) {
libvips/cimg/CImg.h:          unsigned char *pb=(unsigned char*)(--ptr), *pe=pb+sizeof(T);
libvips/cimg/CImg.h:          for (int i=0; i<(int)sizeof(T)/2; i++) cimg::swap(*(pb++),*(--pe));
libvips/cimg/CImg.h:        visu = (cimg::option("-h",argc,argv,(char*)0)!=0);
libvips/cimg/CImg.h:        visu |= (cimg::option("-help",argc,argv,(char*)0)!=0);
libvips/cimg/CImg.h:        visu |= (cimg::option("--help",argc,argv,(char*)0)!=0);
libvips/cimg/CImg.h:          res=(k++==argc?defaut:(k==argc?argv[--k]:argv[k]));
libvips/cimg/CImg.h:        if (visu && usage) std::fprintf(stderr,"    %s%-8s%s = %-12s : %s%s%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Operating System :       %s%-13s%s %s('cimg_OS'=%d)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Using Visual C++ 6.0 :       %s%-13s%s %s('cimg_use_visual_cpp6' defined)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Display type :           %s%-13s%s %s('cimg_display_type'=%d)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Color terminal :         %s%-13s%s %s('cimg_color_terminal' %s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Debug messages :         %s%-13s%s %s('cimg_debug'=%d)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Using XShm for X11 :     %s%-13s%s %s('cimg_use_xshm' %s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Using XRand for X11 :    %s%-13s%s %s('cimg_use_xrandr' %s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Using PNG library :      %s%-13s%s %s('cimg_use_png' %s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Using JPEG library :     %s%-13s%s %s('cimg_use_jpeg' %s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Using TIFF library :     %s%-13s%s %s('cimg_use_tiff' %s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Using Magick++ library : %s%-13s%s %s('cimg_use_magick' %s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Using FFTW3 library :    %s%-13s%s %s('cimg_use_fftw3' %s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Path of ImageMagick :    %s%-13s%s %s('cimg_imagemagick_path'%s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Path of GraphicsMagick : %s%-13s%s %s('cimg_graphicsmagick_path'%s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Path of 'medcon' :       %s%-13s%s %s('cimg_medcon_path'%s)%s\n",
libvips/cimg/CImg.h:      std::fprintf(stderr,"  > Temporary path :         %s%-13s%s %s('cimg_temporary_path'%s)%s\n",
libvips/cimg/CImg.h:      const unsigned long time_diff = timer + milliseconds - current_time;
libvips/cimg/CImg.h:      return (T)((a<<n)|(a>>((sizeof(T)<<3)-n)));
libvips/cimg/CImg.h:      return (T)((a>>n)|(a<<((sizeof(T)<<3)-n)));
libvips/cimg/CImg.h:    template<typename T> inline T abs(const T a)      { return a>=0?a:-a; }
libvips/cimg/CImg.h:    template<typename T> inline T sign(const T x) { return (x<0)?(T)(-1):(x==0?(T)0:(T)1); }
libvips/cimg/CImg.h:       This modulo function accepts negative and floating-points modulo numbers \p m.
libvips/cimg/CImg.h:    inline double mod(const double x, const double m) { return x-m*std::floor(x/m); }
libvips/cimg/CImg.h:    inline float  mod(const float x, const float m)   { return (float)(x-m*std::floor((double)x/m)); }
libvips/cimg/CImg.h:       - minmod(\p a,\p b) = min(\p a,\p b), if (\p a * \p b)>0.
libvips/cimg/CImg.h:       - minmod(\p a,\p b) = 0,              if (\p a * \p b)<=0
libvips/cimg/CImg.h:    //! Return a random variable between [-1,1], following a uniform distribution.
libvips/cimg/CImg.h:    inline double crand() { return 1-2*cimg::rand(); }
libvips/cimg/CImg.h:      return std::sqrt(-2*std::log((double)(1e-10 + (1-2e-10)*cimg::rand())))*std::cos((double)(2*PI*cimg::rand()));
libvips/cimg/CImg.h:   #----------------------------------------
libvips/cimg/CImg.h:   #----------------------------------------
libvips/cimg/CImg.h:      std::printf("Max-Min = %lf",stats.max-stats.min);      // Compute the difference between extremum values.
libvips/cimg/CImg.h:      No vector-valued statistics are computed.
libvips/cimg/CImg.h:    int xmin;                   //!< X-coordinate of the pixel with minimum value.
libvips/cimg/CImg.h:    int ymin;                   //!< Y-coordinate of the pixel with minimum value.
libvips/cimg/CImg.h:    int zmin;                   //!< Z-coordinate of the pixel with minimum value.
libvips/cimg/CImg.h:    int vmin;                   //!< V-coordinate of the pixel with minimum value.
libvips/cimg/CImg.h:    int xmax;                   //!< X-coordinate of the pixel with maximum value.
libvips/cimg/CImg.h:    int ymax;                   //!< Y-coordinate of the pixel with maximum value.
libvips/cimg/CImg.h:    int zmax;                   //!< Z-coordinate of the pixel with maximum value.
libvips/cimg/CImg.h:    int vmax;                   //!< V-coordinate of the pixel with maximum value.
libvips/cimg/CImg.h:    CImgStats():min(0),max(0),mean(0),variance(0),xmin(-1),ymin(-1),zmin(-1),vmin(-1),lmin(-1),
libvips/cimg/CImg.h:                xmax(-1),ymax(-1),zmax(-1),vmax(-1),lmax(-1) {}
libvips/cimg/CImg.h:    //! In-place version of the default constructor
libvips/cimg/CImg.h:      xmin = ymin = zmin = vmin = lmin = xmax = ymax = zmax = vmax = lmax = -1;
libvips/cimg/CImg.h:    //! In-place version of the copy constructor.
libvips/cimg/CImg.h:    //! In-place version of the previous constructor.
libvips/cimg/CImg.h:      lmin = lmax = -1;
libvips/cimg/CImg.h:      unsigned long offmin = (unsigned long)(ptrmin-img.data), offmax = (unsigned long)(ptrmax-img.data);
libvips/cimg/CImg.h:        cimg_for(img,ptr,T) { const double tmpf=(*ptr)-mean; variance+=tmpf*tmpf; }
libvips/cimg/CImg.h:        if (siz>1) variance/=(siz-1); else variance=0;
libvips/cimg/CImg.h:    //! In-place version of the previous constructor.
libvips/cimg/CImg.h:      unsigned long offmin = (ptrmin-imin.data), offmax = (ptrmax-imax.data);
libvips/cimg/CImg.h:        cimglist_for(list,l) cimg_for(list[l],ptr,T) { const double tmpf=(*ptr)-mean; variance+=tmpf*tmpf; }
libvips/cimg/CImg.h:        if (psize>1) variance/=(psize-1); else variance=0;
libvips/cimg/CImg.h:        std::fprintf(stderr,"%-8s(this=%p) : { min=%g, mean=%g [var=%g], max=%g, "
libvips/cimg/CImg.h:        std::fprintf(stderr,"%-8s(this=%p) : { min=%g, mean=%g [var=%g], max=%g, "
libvips/cimg/CImg.h:   #-------------------------------------------
libvips/cimg/CImg.h:   #-------------------------------------------
libvips/cimg/CImg.h:    //! X-pos of the display on the screen
libvips/cimg/CImg.h:    //! Y-pos of the display on the screen
libvips/cimg/CImg.h:    //! X-coordinate of the mouse pointer on the display
libvips/cimg/CImg.h:    //! Y-coordinate of the mouse pointer on the display
libvips/cimg/CImg.h:    //! Return X-coordinate of the window
libvips/cimg/CImg.h:    //! Return Y-coordinate of the window
libvips/cimg/CImg.h:      const float delta = (cimg::time()-fps_timer)/1000.0f;
libvips/cimg/CImg.h:        be bloc-interpolated to fit the new dimensions. If \p false, a black image will be drawn in the resized window.
libvips/cimg/CImg.h:      poffx = offx; curr=0; for (unsigned int x=0; x<wd; x++) { old=curr; curr+=s; *(poffx++) = (unsigned int)curr-(unsigned int)old; }
libvips/cimg/CImg.h:      poffy = offy; curr=0; for (unsigned int y=0; y<hd; y++) { old=curr; curr+=s; *(poffy++) = ws*((unsigned int)curr-(unsigned int)old); }
libvips/cimg/CImg.h:        for (;!dy && y<hd; std::memcpy(ptrd, ptrd-wd, sizeof(t)*wd), y++, ptrd+=wd, dy=*(poffy++));
libvips/cimg/CImg.h:        const unsigned int *const ps_end = keyseq+N-1, k = *ps_end, *const pk_end = (unsigned int*)keys+257-N;
libvips/cimg/CImg.h:            for (unsigned int i=1; i<N; ++i) res = (*(--ps)==*(pk2++));
libvips/cimg/CImg.h:              if (remove) std::memset((void*)(pk-1),0,sizeof(unsigned int)*N);
libvips/cimg/CImg.h:    //---------------------------
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    // In-place version of the destructor (should not be used by the user).
libvips/cimg/CImg.h:    //! Re-paint image content in window
libvips/cimg/CImg.h:    // X11-based display
libvips/cimg/CImg.h:    //-------------------
libvips/cimg/CImg.h:        for (; i<cimg::X11attr().nb_wins-1; i++) cimg::X11attr().wins[i]=cimg::X11attr().wins[i+1];
libvips/cimg/CImg.h:        cimg::X11attr().nb_wins--;
libvips/cimg/CImg.h:          shmdt(shminfo->shmaddr);
libvips/cimg/CImg.h:          shmctl(shminfo->shmid,IPC_RMID,0);
libvips/cimg/CImg.h:        tmpdimx=(nwidth>0)?nwidth:(-nwidth*width/100),
libvips/cimg/CImg.h:        tmpdimy=(nheight>0)?nheight:(-nheight*height/100),
libvips/cimg/CImg.h:        if (is_fullscreen) move((screen_dimx()-width)/2,(screen_dimy()-height)/2);
libvips/cimg/CImg.h:          cimg::X11attr().wins[i]->is_event = false;
libvips/cimg/CImg.h:          const unsigned int xevent_type = (cimg::X11attr().wins[i]->events)&3;
libvips/cimg/CImg.h:          XSelectInput(cimg::X11attr().display,cimg::X11attr().wins[i]->window,emask);
libvips/cimg/CImg.h:          if (!cimg::X11attr().wins[i]->is_closed && event.xany.window==cimg::X11attr().wins[i]->window) {
libvips/cimg/CImg.h:            cimg::X11attr().wins[i]->_handle_events(&event);
libvips/cimg/CImg.h:            if (cimg::X11attr().wins[i]->is_event) flag = false;
libvips/cimg/CImg.h:        window_x = window_y = -1;
libvips/cimg/CImg.h:      if (cimg::X11attr().nb_bits==8 && (img.width!=width || img.height!=height)) return render(img.get_resize(width,height,1,-100,1));
libvips/cimg/CImg.h:        const float delta = max-min, mm = delta?delta:1.0f;
libvips/cimg/CImg.h:            const unsigned char R = (unsigned char)(255*(*(data1++)-min)/mm);
libvips/cimg/CImg.h:              R = (unsigned char)(255*(*(data1++)-min)/mm),
libvips/cimg/CImg.h:              G = (unsigned char)(255*(*(data2++)-min)/mm);
libvips/cimg/CImg.h:                R = (unsigned char)(255*(*(data1++)-min)/mm),
libvips/cimg/CImg.h:                G = (unsigned char)(255*(*(data2++)-min)/mm),
libvips/cimg/CImg.h:                B = (unsigned char)(255*(*(data3++)-min)/mm);
libvips/cimg/CImg.h:            const unsigned char G = (unsigned char)(255*(*(data2++)-min)/mm)>>2;
libvips/cimg/CImg.h:            *(ptrd++) = (unsigned char)(255*(*(data1++)-min)/mm)&M | (G>>3);
libvips/cimg/CImg.h:            *(ptrd++) = (G<<5) | ((unsigned char)(255*(*(data3++)-min)/mm)>>3);
libvips/cimg/CImg.h:            const unsigned char G = (unsigned char)(255*(*(data2++)-min)/mm)>>2;
libvips/cimg/CImg.h:            *(ptrd++) = (G<<5) | ((unsigned char)(255*(*(data3++)-min)/mm)>>3);
libvips/cimg/CImg.h:            *(ptrd++) = (unsigned char)(255*(*(data1++)-min)/mm)&M | (G>>3);
libvips/cimg/CImg.h:            (*ptrd++) = (unsigned char)(255*(*(data1++)-min)/mm);
libvips/cimg/CImg.h:            (*ptrd++) = (unsigned char)(255*(*(data2++)-min)/mm);
libvips/cimg/CImg.h:            (*ptrd++) = (unsigned char)(255*(*(data3++)-min)/mm);
libvips/cimg/CImg.h:            (*ptrd++) = (unsigned char)(255*(*(data3++)-min)/mm);
libvips/cimg/CImg.h:            (*ptrd++) = (unsigned char)(255*(*(data2++)-min)/mm);
libvips/cimg/CImg.h:            (*ptrd++) = (unsigned char)(255*(*(data1++)-min)/mm);
libvips/cimg/CImg.h:        if (vinfo && vinfo->red_mask<vinfo->blue_mask) cimg::X11attr().blue_first = true;
libvips/cimg/CImg.h:      mouse_x = mouse_y = -1;
libvips/cimg/CImg.h:                               (sx-width)/2,(sy-height)/2,
libvips/cimg/CImg.h:          shminfo->shmid = shmget(IPC_PRIVATE, bufsize, IPC_CREAT | 0777);
libvips/cimg/CImg.h:          if (shminfo->shmid==-1) { XDestroyImage(image); delete shminfo; shminfo = 0; }
libvips/cimg/CImg.h:            shminfo->shmaddr = image->data = (char*)(data = shmat(shminfo->shmid,0,0));
libvips/cimg/CImg.h:            if (shminfo->shmaddr==(char*)-1) { XDestroyImage(image); shmctl(shminfo->shmid,IPC_RMID,0); delete shminfo; shminfo = 0; }
libvips/cimg/CImg.h:            shminfo->readOnly = False;
libvips/cimg/CImg.h:              shmdt(shminfo->shmaddr);
libvips/cimg/CImg.h:              shmctl(shminfo->shmid,IPC_RMID,0);
libvips/cimg/CImg.h:        nshminfo->shmid = shmget(IPC_PRIVATE, ndimx*ndimy*sizeof(T), IPC_CREAT | 0777);
libvips/cimg/CImg.h:        nshminfo->shmaddr = nimage->data = (char*)shmat(nshminfo->shmid,0,0);
libvips/cimg/CImg.h:        nshminfo->readOnly = False;
libvips/cimg/CImg.h:        T *const ndata = (T*)nimage->data;
libvips/cimg/CImg.h:        shmdt(shminfo->shmaddr);
libvips/cimg/CImg.h:        shmctl(shminfo->shmid,IPC_RMID,0);
libvips/cimg/CImg.h:          mouse_x = mouse_y = -1;
libvips/cimg/CImg.h:          mouse_x = mouse_y = -1;
libvips/cimg/CImg.h:          case 5: wheel--; is_event = true; break;
libvips/cimg/CImg.h:        mouse_x = mouse_y =-1;
libvips/cimg/CImg.h:        if (mouse_x<0 || mouse_y<0 || mouse_x>=dimx() || mouse_y>=dimy()) mouse_x = mouse_y = -1;
libvips/cimg/CImg.h:          const unsigned int xevent_type = (cimg::X11attr().wins[i]->events)&3;
libvips/cimg/CImg.h:          XSelectInput(cimg::X11attr().display,cimg::X11attr().wins[i]->window,emask);
libvips/cimg/CImg.h:            if (!cimg::X11attr().wins[i]->is_closed && event.xany.window==cimg::X11attr().wins[i]->window)
libvips/cimg/CImg.h:              cimg::X11attr().wins[i]->_handle_events(&event);
libvips/cimg/CImg.h:    // Windows-based display
libvips/cimg/CImg.h:    //-----------------------
libvips/cimg/CImg.h:        tmpdimx=(nwidth>0)?nwidth:(-nwidth*width/100),
libvips/cimg/CImg.h:        tmpdimy=(nheight>0)?nheight:(-nheight*height/100),
libvips/cimg/CImg.h:        RECT rect; rect.left=rect.top=0; rect.right = dimx-1; rect.bottom = dimy-1;
libvips/cimg/CImg.h:        const int cwidth = rect.right-rect.left+1, cheight = rect.bottom-rect.top+1;
libvips/cimg/CImg.h:          bmi.bmiHeader.biHeight = -(int)dimy;
libvips/cimg/CImg.h:        if (is_fullscreen) move((screen_dimx()-width)/2,(screen_dimy()-height)/2);
libvips/cimg/CImg.h:        RECT rect; rect.left=rect.top=0; rect.right=window_width-1; rect.bottom=window_height-1;
libvips/cimg/CImg.h:        const int border1 = (rect.right-rect.left+1-width)/2, border2 = rect.bottom-rect.top+1-height-border1;
libvips/cimg/CImg.h:        SetWindowPos(window,0,posx-border1,posy-border2,0,0,SWP_NOSIZE | SWP_NOZORDER);
libvips/cimg/CImg.h:        rect.left = rect.top = 0; rect.right = width-1; rect.bottom = height-1;
libvips/cimg/CImg.h:        const int border1 = (rect.right-rect.left+1-width)/2, border2 = rect.bottom-rect.top+1-height-border1;
libvips/cimg/CImg.h:      } else window_x = window_y = -1;
libvips/cimg/CImg.h:        for (unsigned int xy = img.width*img.height; xy>0; xy--)
libvips/cimg/CImg.h:        const float delta = max-min, mm = delta?delta:1.0f;
libvips/cimg/CImg.h:        for (unsigned int xy = img.width*img.height; xy>0; xy--) {
libvips/cimg/CImg.h:            R = (unsigned char)(255*(*(data1++)-min)/mm),
libvips/cimg/CImg.h:            G = (unsigned char)(255*(*(data2++)-min)/mm),
libvips/cimg/CImg.h:            B = (unsigned char)(255*(*(data3++)-min)/mm);
libvips/cimg/CImg.h:      mouse_x = mouse_y = -1;
libvips/cimg/CImg.h:        disp->mouse_x = disp->mouse_y = -1;
libvips/cimg/CImg.h:        disp->window_x = disp->window_y = 0;
libvips/cimg/CImg.h:        std::memmove((void*)(disp->buttons+1),(void*)disp->buttons,255);
libvips/cimg/CImg.h:        std::memmove((void*)(disp->keys+1),(void*)disp->keys,255);
libvips/cimg/CImg.h:        if (disp->key) {
libvips/cimg/CImg.h:          std::memmove((void*)(disp->released_keys+1),(void*)disp->released_keys,255);
libvips/cimg/CImg.h:          disp->released_key = disp->key;
libvips/cimg/CImg.h:        disp->key = disp->button = 0;
libvips/cimg/CImg.h:        disp->is_closed=true;
libvips/cimg/CImg.h:        ReleaseMutex(disp->mutex);
libvips/cimg/CImg.h:        ShowWindow(disp->window,SW_HIDE);
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        WaitForSingleObject(disp->mutex,INFINITE);
libvips/cimg/CImg.h:        if (nw && nh && (nw!=disp->width || nh!=disp->height)) {
libvips/cimg/CImg.h:          disp->window_width  = nw;
libvips/cimg/CImg.h:          disp->window_height = nh;
libvips/cimg/CImg.h:          disp->mouse_x = disp->mouse_y = -1;
libvips/cimg/CImg.h:          disp->is_resized = disp->is_event = true;
libvips/cimg/CImg.h:        ReleaseMutex(disp->mutex);
libvips/cimg/CImg.h:        WaitForSingleObject(disp->mutex,INFINITE);
libvips/cimg/CImg.h:        if (nx!=disp->window_x || ny!=disp->window_y) {
libvips/cimg/CImg.h:          disp->window_x = nx;
libvips/cimg/CImg.h:          disp->window_y = ny;
libvips/cimg/CImg.h:          disp->is_moved = disp->is_event = true;
libvips/cimg/CImg.h:        ReleaseMutex(disp->mutex);
libvips/cimg/CImg.h:        disp->paint();
libvips/cimg/CImg.h:      if (disp->events>=2) switch(msg) {
libvips/cimg/CImg.h:        std::memmove((void*)(disp->keys+1),(void*)disp->keys,255); disp->key = (int)wParam;
libvips/cimg/CImg.h:        std::memmove((void*)(disp->released_keys+1),(void*)disp->released_keys,255); disp->released_key = 0;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        disp->mouse_x = LOWORD(lParam);
libvips/cimg/CImg.h:        disp->mouse_y = HIWORD(lParam);
libvips/cimg/CImg.h:        if (disp->mouse_x<0 || disp->mouse_y<0 || disp->mouse_x>=disp->dimx() || disp->mouse_y>=disp->dimy())
libvips/cimg/CImg.h:          disp->mouse_x=disp->mouse_y=-1;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        std::memmove((void*)(disp->buttons+1),(void*)disp->buttons,255);
libvips/cimg/CImg.h:        disp->button|=1U;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        std::memmove((void*)(disp->buttons+1),(void*)disp->buttons,255);
libvips/cimg/CImg.h:        disp->button|=2U;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        std::memmove((void*)(disp->buttons+1),(void*)disp->buttons,255);
libvips/cimg/CImg.h:        disp->button|=4U;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        disp->wheel+=(int)((short)HIWORD(wParam))/120;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:      if (disp->events>=3) switch(msg) {
libvips/cimg/CImg.h:        std::memmove((void*)(disp->keys+1),(void*)disp->keys,255); disp->key = 0;
libvips/cimg/CImg.h:        std::memmove((void*)(disp->released_keys+1),(void*)disp->released_keys,255); disp->released_key = (int)wParam;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        std::memmove((void*)(disp->buttons+1),(void*)disp->buttons,255);
libvips/cimg/CImg.h:        disp->button&=~1U;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        std::memmove((void*)(disp->buttons+1),(void*)disp->buttons,255);
libvips/cimg/CImg.h:        disp->button&=~2U;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        std::memmove((void*)(disp->buttons+1),(void*)disp->buttons,255);
libvips/cimg/CImg.h:        disp->button&=~4U;
libvips/cimg/CImg.h:        disp->is_event = true;
libvips/cimg/CImg.h:        if (disp->visible_cursor) ShowCursor(TRUE);
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biWidth=disp->width;
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biHeight=-(int)disp->height;
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biPlanes=1;
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biBitCount=32;
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biCompression=BI_RGB;
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biSizeImage=0;
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biXPelsPerMeter=1;
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biYPelsPerMeter=1;
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biClrUsed=0;
libvips/cimg/CImg.h:      disp->bmi.bmiHeader.biClrImportant=0;
libvips/cimg/CImg.h:      disp->data = new unsigned int[disp->width*disp->height];
libvips/cimg/CImg.h:      if (!disp->is_fullscreen) { // Normal window
libvips/cimg/CImg.h:        rect.left=rect.top=0; rect.right=disp->width-1; rect.bottom=disp->height-1;
libvips/cimg/CImg.h:        const int border1 = (rect.right-rect.left+1-disp->width)/2, border2 = rect.bottom-rect.top+1-disp->height-border1;
libvips/cimg/CImg.h:        disp->window = CreateWindowA("MDICLIENT",title?title:" ",
libvips/cimg/CImg.h:                                     WS_OVERLAPPEDWINDOW | (disp->is_closed?0:WS_VISIBLE), CW_USEDEFAULT,CW_USEDEFAULT,
libvips/cimg/CImg.h:                                     disp->width + 2*border1, disp->height + border1 + border2,
libvips/cimg/CImg.h:                                     0,0,0,&(disp->ccs));
libvips/cimg/CImg.h:        if (!disp->is_closed) {
libvips/cimg/CImg.h:          GetWindowRect(disp->window,&rect);
libvips/cimg/CImg.h:          disp->window_x = rect.left + border1;
libvips/cimg/CImg.h:          disp->window_y = rect.top + border2;
libvips/cimg/CImg.h:        } else disp->window_x = disp->window_y = 0;
libvips/cimg/CImg.h:        disp->window = CreateWindowA("MDICLIENT",title?title:" ",
libvips/cimg/CImg.h:                                     WS_POPUP | (disp->is_closed?0:WS_VISIBLE), (sx-disp->width)/2, (sy-disp->height)/2,
libvips/cimg/CImg.h:                                     disp->width,disp->height,0,0,0,&(disp->ccs));
libvips/cimg/CImg.h:        disp->window_x = disp->window_y = 0;
libvips/cimg/CImg.h:      SetForegroundWindow(disp->window);
libvips/cimg/CImg.h:      disp->hdc = GetDC(disp->window);
libvips/cimg/CImg.h:      disp->window_width = disp->width;
libvips/cimg/CImg.h:      disp->window_height = disp->height;
libvips/cimg/CImg.h:      disp->mouse_x = disp->mouse_y = -1;
libvips/cimg/CImg.h:      disp->wheel = 0;
libvips/cimg/CImg.h:      std::memset((void*)disp->buttons,0,256*sizeof(unsigned int));
libvips/cimg/CImg.h:      std::memset((void*)disp->keys,0,256*sizeof(unsigned int));
libvips/cimg/CImg.h:      std::memset((void*)disp->released_keys,0,256*sizeof(unsigned int));
libvips/cimg/CImg.h:      disp->is_resized = disp->is_moved = disp->is_event = false;
libvips/cimg/CImg.h:      if (disp->events) {
libvips/cimg/CImg.h:        SetWindowLongPtr(disp->window,GWLP_USERDATA,(LONG_PTR)disp);
libvips/cimg/CImg.h:        SetWindowLongPtr(disp->window,GWLP_WNDPROC,(LONG_PTR)_handle_events);
libvips/cimg/CImg.h:        SetWindowLong(disp->window,GWL_USERDATA,(LONG)disp);
libvips/cimg/CImg.h:        SetWindowLong(disp->window,GWL_WNDPROC,(LONG)_handle_events);
libvips/cimg/CImg.h:        SetEvent(disp->created);
libvips/cimg/CImg.h:   #--------------------------------------
libvips/cimg/CImg.h:   #--------------------------------------
libvips/cimg/CImg.h:     is rather used as a vector-valued dimension (it may describe the R,G,B color channels for instance).
libvips/cimg/CImg.h:     Thus, the \ref CImg<T> class is able to represent volumetric images of vector-valued pixels,
libvips/cimg/CImg.h:     images that have floating-point pixel values. The default value for the template T is \c float.
libvips/cimg/CImg.h:     - \ref width defines the number of \a columns of the image (size along the X-axis).
libvips/cimg/CImg.h:     - \ref height defines the number of \a rows of the image (size along the Y-axis).
libvips/cimg/CImg.h:     - \ref depth defines the number of \a slices of the image (size along the Z-axis).
libvips/cimg/CImg.h:     - \ref dim defines the number of \a channels of the image (size along the V-axis).
libvips/cimg/CImg.h:     - \ref data defines a \a pointer to the \a pixel \a data (of type \c T).
libvips/cimg/CImg.h:     - Construct images from arbitrary dimensions :
libvips/cimg/CImg.h:         - <tt>CImg<char> img;</tt> declares an empty image.
libvips/cimg/CImg.h:         - <tt>CImg<unsigned char> img(128,128);</tt> declares a 128x128 greyscale image with
libvips/cimg/CImg.h:         - <tt>CImg<double> img(3,3);</tt> declares a 3x3 matrix with \c double coefficients.
libvips/cimg/CImg.h:         - <tt>CImg<unsigned char> img(256,256,1,3);</tt> declares a 256x256x1x3 (color) image
libvips/cimg/CImg.h:         - <tt>CImg<double> img(128,128,128);</tt> declares a 128x128x128 volumetric and greyscale image
libvips/cimg/CImg.h:         - <tt>CImg<> img(128,128,128,3);</tt> declares a 128x128x128 volumetric color image
libvips/cimg/CImg.h:         - \b Note : images pixels are <b>not automatically initialized to 0</b>. You may use the function \ref fill() to
libvips/cimg/CImg.h:     - Construct images from filenames :
libvips/cimg/CImg.h:         - <tt>CImg<unsigned char> img("image.jpg");</tt> reads a JPEG color image from the file "image.jpg".
libvips/cimg/CImg.h:         - <tt>CImg<float> img("analyze.hdr");</tt> reads a volumetric image (ANALYZE7.5 format) from the file "analyze.hdr".
libvips/cimg/CImg.h:         - \b Note : You need to install <a href="http://www.imagemagick.org">ImageMagick</a>
libvips/cimg/CImg.h:     - Construct images from C-style arrays :
libvips/cimg/CImg.h:         - <tt>CImg<int> img(data_buffer,256,256);</tt> constructs a 256x256 greyscale image from a \c int* buffer
libvips/cimg/CImg.h:         - <tt>CImg<unsigned char> img(data_buffer,256,256,1,3,false);</tt> constructs a 256x256 color image
libvips/cimg/CImg.h:         - <tt>CImg<unsigned char> img(data_buffer,256,256,1,3,true);</tt> constructs a 256x256 color image
libvips/cimg/CImg.h:     - operator()(), operator[]() : allows to access or write pixel values.
libvips/cimg/CImg.h:     - display() : displays the image in a new window.
libvips/cimg/CImg.h:    //! Variable representing the width of the instance image (i.e. dimensions along the X-axis).
libvips/cimg/CImg.h:       - Prefer using the function CImg<T>::dimx() to get information about the width of an image.
libvips/cimg/CImg.h:       - Use function CImg<T>::resize() to set a new width for an image. Setting directly the variable \c width would probably
libvips/cimg/CImg.h:       - Empty images have \c width defined to \c 0.
libvips/cimg/CImg.h:    //! Variable representing the height of the instance image (i.e. dimensions along the Y-axis).
libvips/cimg/CImg.h:       - Prefer using the function CImg<T>::dimy() to get information about the height of an image.
libvips/cimg/CImg.h:       - Use function CImg<T>::resize() to set a new height for an image. Setting directly the variable \c height would probably
libvips/cimg/CImg.h:       - 1D signals have \c height defined to \c 1.
libvips/cimg/CImg.h:       - Empty images have \c height defined to \c 0.
libvips/cimg/CImg.h:    //! Variable representing the depth of the instance image (i.e. dimensions along the Z-axis).
libvips/cimg/CImg.h:       - Prefer using the function CImg<T>::dimz() to get information about the depth of an image.
libvips/cimg/CImg.h:       - Use function CImg<T>::resize() to set a new depth for an image. Setting directly the variable \c depth would probably
libvips/cimg/CImg.h:       - Classical 2D images have \c depth defined to \c 1.
libvips/cimg/CImg.h:       - Empty images have \c depth defined to \c 0.
libvips/cimg/CImg.h:    //! Variable representing the number of channels of the instance image (i.e. dimensions along the V-axis).
libvips/cimg/CImg.h:       - Prefer using the function CImg<T>::dimv() to get information about the depth of an image.
libvips/cimg/CImg.h:       - Use function CImg<T>::resize() to set a new vector dimension for an image. Setting directly the variable \c dim would probably
libvips/cimg/CImg.h:       - Scalar-valued images (one value per pixel) have \c dim defined to \c 1.
libvips/cimg/CImg.h:       - Empty images have \c depth defined to \c 0.
libvips/cimg/CImg.h:       - An \p iterator is a <tt>T*</tt> pointer (address of a pixel value in the pixel buffer).
libvips/cimg/CImg.h:       - Iterators are not directly used in %CImg functions, they have been introduced for compatibility with the STL.
libvips/cimg/CImg.h:       - A \p const_iterator is a <tt>const T*</tt> pointer (address of a pixel value in the pixel buffer).
libvips/cimg/CImg.h:       - Iterators are not directly used in %CImg functions, they have been introduced for compatibility with the STL.
libvips/cimg/CImg.h:    //---------------------------
libvips/cimg/CImg.h:    //---------------------------
libvips/cimg/CImg.h:    //--------------------------------------
libvips/cimg/CImg.h:    //! \name Constructors-Destructor-Copy
libvips/cimg/CImg.h:    //--------------------------------------
libvips/cimg/CImg.h:       - An empty image does not contain any data and has all of its dimensions \ref width, \ref height, \ref depth, \ref dim
libvips/cimg/CImg.h:       - An empty image is non-shared.
libvips/cimg/CImg.h:       - Destructing an empty or shared image does nothing.
libvips/cimg/CImg.h:       - Otherwise, all memory used to store the pixel data of the instance image is freed.
libvips/cimg/CImg.h:       - When destroying a non-shared image, be sure that every shared instances of the same image are
libvips/cimg/CImg.h:    //! In-place version of the default constructor.
libvips/cimg/CImg.h:       - Memory used by the previous content of the instance image is freed if necessary.
libvips/cimg/CImg.h:       - If the instance image was initially shared, it is replaced by a (non-shared) empty image.
libvips/cimg/CImg.h:       - This function is useful to free memory used by an image that is not of use, but which
libvips/cimg/CImg.h:    //! In-place version of the default constructor.
libvips/cimg/CImg.h:       introduced for having a STL-compliant function name.
libvips/cimg/CImg.h:       - If the input image \p img is non-shared or have a different template type \p t != \p T,
libvips/cimg/CImg.h:       and the resulting instance image is non-shared.
libvips/cimg/CImg.h:       - If the input image \p img is shared and has the same template type \p t == \p T,
libvips/cimg/CImg.h:       - Copying an image having a different template type \p t != \p T performs a crude static cast conversion of each pixel value from
libvips/cimg/CImg.h:       - Copying an image having the same template type \p t == \p T is significantly faster.
libvips/cimg/CImg.h:        const t *ptrs = img.data+siz; cimg_for(*this,ptrd,T) *ptrd = (T)*(--ptrs);
libvips/cimg/CImg.h:    //! In-place version of the default copy constructor.
libvips/cimg/CImg.h:       - If the instance image is not shared, the content of the input image \p img is copied into a new buffer
libvips/cimg/CImg.h:       - If the instance image is shared, the content of the input image \p img is copied into the current (shared) pixel buffer
libvips/cimg/CImg.h:       The advanced copy constructor - as the default constructor CImg(const CImg< t >&) - creates a new instance image having same dimensions
libvips/cimg/CImg.h:       \param shared Boolean flag that decides if the copy is shared on non-shared.
libvips/cimg/CImg.h:       - It is not possible to create a shared copy if the input image \p img is empty or has a different pixel type \p t != \p T.
libvips/cimg/CImg.h:       - If a non-shared copy of the input image \p img is created, a new memory buffer is allocated for pixel data.
libvips/cimg/CImg.h:       - If a shared copy of the input image \p img is created, no extra memory is allocated and the pixel buffer of the instance
libvips/cimg/CImg.h:        const t *ptrs = img.data+siz; cimg_for(*this,ptrd,T) *ptrd = (T)*(--ptrs);
libvips/cimg/CImg.h:    //! In-place version of the advanced constructor.
libvips/cimg/CImg.h:       This function - as the simpler function assign(const CImg< t >&) - assigns a copy of the input image \p img to the
libvips/cimg/CImg.h:       current instance image. But it also decides if the copy is shared (if the input parameter \p shared is set to \true) or non-shared
libvips/cimg/CImg.h:       \param shared Boolean flag that decides if the copy is shared or non-shared.
libvips/cimg/CImg.h:       - It is not possible to assign a shared copy if the input image \p img is empty or has a different pixel type \p t != \p T.
libvips/cimg/CImg.h:       - If a non-shared copy of the input image \p img is assigned, a new memory buffer is allocated for pixel data.
libvips/cimg/CImg.h:       - If a shared copy of the input image \p img is assigned, no extra memory is allocated and the pixel buffer of the instance
libvips/cimg/CImg.h:       \param dx Desired size along the X-axis, i.e. the \ref width of the image.
libvips/cimg/CImg.h:       \param dy Desired size along the Y-axis, i.e. the \ref height of the image.
libvips/cimg/CImg.h:       \param dz Desired size along the Z-axis, i.e. the \ref depth of the image.
libvips/cimg/CImg.h:       \param dv Desired size along the V-axis, i.e. the number of image channels \ref dim.
libvips/cimg/CImg.h:       - If one of the input dimension \p dx,\p dy,\p dz or \p dv is set to 0, the created image is empty
libvips/cimg/CImg.h:       - This constructor creates only non-shared images.
libvips/cimg/CImg.h:       - Image pixels allocated by this constructor are \b not \b initialized.
libvips/cimg/CImg.h:    //! In-place version of the previous constructor.
libvips/cimg/CImg.h:       \param dx Desired size along the X-axis, i.e. the \ref width of the image.
libvips/cimg/CImg.h:       \param dy Desired size along the Y-axis, i.e. the \ref height of the image.
libvips/cimg/CImg.h:       \param dz Desired size along the Z-axis, i.e. the \ref depth of the image.
libvips/cimg/CImg.h:       \param dv Desired size along the V-axis, i.e. the number of image channels \p dim.
libvips/cimg/CImg.h:       - If one of the input dimension \p dx,\p dy,\p dz or \p dv is set to 0, the instance image becomes empty
libvips/cimg/CImg.h:       - Memory buffer used to store previous pixel values is freed if necessary.
libvips/cimg/CImg.h:       - If the instance image is shared, this constructor actually does nothing more than verifying
libvips/cimg/CImg.h:       - Image pixels allocated by this function are \b not \b initialized.
libvips/cimg/CImg.h:       \param dx Desired size along the X-axis, i.e. the \ref width of the image.
libvips/cimg/CImg.h:       \param dy Desired size along the Y-axis, i.e. the \ref height of the image.
libvips/cimg/CImg.h:       \param dz Desired size along the Z-axis, i.e. the \ref depth of the image.
libvips/cimg/CImg.h:       \param dv Desired size along the V-axis, i.e. the number of image channels \p dim.
libvips/cimg/CImg.h:       - This constructor has the same properties as CImg(const unsigned int,const unsigned int,const unsigned int,const unsigned int).
libvips/cimg/CImg.h:    //! In-place version of the previous constructor.
libvips/cimg/CImg.h:       \param dx Desired size along the X-axis, i.e. the \ref width of the image.
libvips/cimg/CImg.h:       \param dy Desired size along the Y-axis, i.e. the \ref height of the image.
libvips/cimg/CImg.h:       \param dz Desired size along the Z-axis, i.e. the \ref depth of the image.
libvips/cimg/CImg.h:       \param dv Desired size along the V-axis, i.e. the number of image channels \p dim.
libvips/cimg/CImg.h:       - This function has the same properties as assign(const unsigned int,const unsigned int,const unsigned int,const unsigned int).
libvips/cimg/CImg.h:       - The image format is deduced from the filename only by looking for the filename extension i.e. without
libvips/cimg/CImg.h:       - Recognized image formats depend on the tools installed on your system or the external libraries you use to link your code with.
libvips/cimg/CImg.h:       - If the filename is not found, a CImgIOException is thrown by this constructor.
libvips/cimg/CImg.h:    //! In-place version of the previous constructor.
libvips/cimg/CImg.h:       - The image format is deduced from the filename only by looking for the filename extension i.e. without
libvips/cimg/CImg.h:       - Recognized image formats depend on the tools installed on your system or the external libraries you use to link your code with.
libvips/cimg/CImg.h:       - If the filename is not found, a CImgIOException is thrown by this constructor.
libvips/cimg/CImg.h:        const t *ptrs = data_buffer+siz; cimg_for(*this,ptrd,T) *ptrd = (T)*(--ptrs);
libvips/cimg/CImg.h:    //! In-place version of the previous constructor.
libvips/cimg/CImg.h:      if (data_buffer && siz) { const t *ptrs = data_buffer+siz; cimg_for(*this,ptrd,T) *ptrd = (T)*(--ptrs); }
libvips/cimg/CImg.h:    //! In-place version of the previous constructor, allowing to force the shared state of the instance image.
libvips/cimg/CImg.h:        const t *ptrs = data_buffer+siz; cimg_for(*this,ptrd,T) *ptrd = (T)*(--ptrs);
libvips/cimg/CImg.h:    // If one of the image is shared, its content is replaced by the non-shared image (which remains unchanged).
libvips/cimg/CImg.h:    //-------------------------------------
libvips/cimg/CImg.h:    //-------------------------------------
libvips/cimg/CImg.h:       - The string returned may contains spaces (<tt>"unsigned char"</tt>).
libvips/cimg/CImg.h:       - If the template parameter T does not correspond to a registered type, the string <tt>"unknown"</tt> is returned.
libvips/cimg/CImg.h:       - Equivalent to : dimx() * dimy() * dimz() * dimv().
libvips/cimg/CImg.h:    //! Return the number of columns of the instance image (size along the X-axis, i.e image width).
libvips/cimg/CImg.h:    //! Return the number of rows of the instance image (size along the Y-axis, i.e image height).
libvips/cimg/CImg.h:    //! Return the number of slices of the instance image (size along the Z-axis).
libvips/cimg/CImg.h:    //! Return the number of vector channels of the instance image (size along the V-axis).
libvips/cimg/CImg.h:       \param x X-coordinate of the pixel.
libvips/cimg/CImg.h:       \param y Y-coordinate of the pixel.
libvips/cimg/CImg.h:       \param z Z-coordinate of the pixel.
libvips/cimg/CImg.h:       \param v V-coordinate of the pixel.
libvips/cimg/CImg.h:       - No checking is done on the validity of the given coordinates.
libvips/cimg/CImg.h:       CImg<float> img(100,100,1,3,0);         // Define a 100x100 color image with float-valued black pixels.
libvips/cimg/CImg.h:       \param x X-coordinate of the pixel.
libvips/cimg/CImg.h:       \param y Y-coordinate of the pixel.
libvips/cimg/CImg.h:       \param z Z-coordinate of the pixel.
libvips/cimg/CImg.h:       \param v V-coordinate of the pixel.
libvips/cimg/CImg.h:       - When called without parameters, ptr() returns a pointer to the begining of the pixel buffer.
libvips/cimg/CImg.h:       - If the macro \c cimg_debug == 3, boundary checking is performed and warning messages may appear if
libvips/cimg/CImg.h:       CImg<float> img(100,100,1,1,0);   // Define a 100x100 greyscale image with float-valued pixels.
libvips/cimg/CImg.h:       \param x X-coordinate of the pixel.
libvips/cimg/CImg.h:       \param y Y-coordinate of the pixel.
libvips/cimg/CImg.h:       \param z Z-coordinate of the pixel.
libvips/cimg/CImg.h:       \param v V-coordinate of the pixel.
libvips/cimg/CImg.h:       - If one image dimension is equal to 1, it can be omitted in the coordinate list (see example below).
libvips/cimg/CImg.h:       - If the macro \c cimg_debug == 3, boundary checking is performed and warning messages may appear
libvips/cimg/CImg.h:       CImg<float> img(100,100,1,3,0);                       // Define a 100x100 color image with float-valued black pixels.
libvips/cimg/CImg.h:       const float valB = img(10,10,2);                      // Read the blue component at coordinates (10,10) (Z-coordinate omitted here).
libvips/cimg/CImg.h:       - If the macro \c cimg_debug==3, boundary checking is performed and warning messages may appear
libvips/cimg/CImg.h:       - As pixel values are aligned in memory, this operator can sometime useful to access values easier than
libvips/cimg/CImg.h:      return operator()(size()-1);
libvips/cimg/CImg.h:      return operator()(size()-1);
libvips/cimg/CImg.h:       \param x X-coordinate of the pixel.
libvips/cimg/CImg.h:       \param y Y-coordinate of the pixel.
libvips/cimg/CImg.h:       \param z Z-coordinate of the pixel.
libvips/cimg/CImg.h:       \param v V-coordinate of the pixel.
libvips/cimg/CImg.h:       - This function allows to read pixel values with boundary checking on all coordinates.
libvips/cimg/CImg.h:       - If given coordinates are outside the image range and the parameter out_val is specified, the value \c out_val is returned.
libvips/cimg/CImg.h:       - If given coordinates are outside the image range and the parameter out_val is not specified, the closest pixel value
libvips/cimg/CImg.h:       const float val2 = img.pix4d(-4,5,0,0,0);   // Return 0, since coordinates are outside the image range.
libvips/cimg/CImg.h:      return (*this)(x<0?0:(x>=dimx()?dimx()-1:x), y<0?0:(y>=dimy()?dimy()-1:y),
libvips/cimg/CImg.h:                     z<0?0:(z>=dimz()?dimz()-1:z), v<0?0:(v>=dimv()?dimv()-1:v));
libvips/cimg/CImg.h:      return (*this)(x<0?0:(x>=dimx()?dimx()-1:x), y<0?0:(y>=dimy()?dimy()-1:y),
libvips/cimg/CImg.h:                     z<0?0:(z>=dimz()?dimz()-1:z),v);
libvips/cimg/CImg.h:      return (*this)(x<0?0:(x>=dimx()?dimx()-1:x), y<0?0:(y>=dimy()?dimy()-1:y),z,v);
libvips/cimg/CImg.h:      return (*this)(x<0?0:(x>=dimx()?dimx()-1:x),y,z,v);
libvips/cimg/CImg.h:       \param ffx X-coordinate of the pixel (float-valued).
libvips/cimg/CImg.h:       \param ffy Y-coordinate of the pixel (float-valued).
libvips/cimg/CImg.h:       \param ffz Z-coordinate of the pixel (float-valued).
libvips/cimg/CImg.h:       \param ffv V-coordinate of the pixel (float-valued).
libvips/cimg/CImg.h:       \param out_val Out-of-border pixel value
libvips/cimg/CImg.h:       - This function allows to read pixel values with boundary checking on all coordinates.
libvips/cimg/CImg.h:       - If given coordinates are outside the image range, the value of the nearest pixel inside the image is returned
libvips/cimg/CImg.h:       - If given coordinates are float-valued, a linear interpolation is performed in order to compute the returned value.
libvips/cimg/CImg.h:      const int x = (int)fx-(fx>=0?0:1), y = (int)fy-(fy>=0?0:1), z = (int)fz-(fz>=0?0:1), v = (int)fv-(fv>=0?0:1),
libvips/cimg/CImg.h:      const float dx = fx-x, dy = fy-y, dz = fz-z, dv = fv-v;
libvips/cimg/CImg.h:        dx*(Inccc-Icccc +
libvips/cimg/CImg.h:            dy*(Icccc+Inncc-Icncc-Inccc +
libvips/cimg/CImg.h:                dz*(Iccnc+Innnc+Icncc+Inccc-Icnnc-Incnc-Icccc-Inncc +
libvips/cimg/CImg.h:                    dv*(Iccnn+Innnn+Icncn+Inccn+Icnnc+Incnc+Icccc+Inncc-Icnnn-Incnn-Icccn-Inncn-Iccnc-Innnc-Icncc-Inccc)) +
libvips/cimg/CImg.h:                dv*(Icccn+Inncn+Icncc+Inccc-Icncn-Inccn-Icccc-Inncc)) +
libvips/cimg/CImg.h:            dz*(Icccc+Incnc-Iccnc-Inccc +
libvips/cimg/CImg.h:                dv*(Icccn+Incnn+Iccnc+Inccc-Iccnn-Inccn-Icccc-Incnc)) +
libvips/cimg/CImg.h:            dv*(Icccc+Inccn-Inccc-Icccn)) +
libvips/cimg/CImg.h:        dy*(Icncc-Icccc +
libvips/cimg/CImg.h:            dz*(Icccc+Icnnc-Iccnc-Icncc +
libvips/cimg/CImg.h:                dv*(Icccn+Icnnn+Iccnc+Icncc-Iccnn-Icncn-Icccc-Icnnc)) +
libvips/cimg/CImg.h:            dv*(Icccc+Icncn-Icncc-Icccn)) +
libvips/cimg/CImg.h:        dz*(Iccnc-Icccc +
libvips/cimg/CImg.h:            dv*(Icccc+Iccnn-Iccnc-Icccn)) +
libvips/cimg/CImg.h:        dv*(Icccn-Icccc);
libvips/cimg/CImg.h:        fx = ffx<0?0:(ffx>width-1?width-1:ffx), fy = ffy<0?0:(ffy>height-1?height-1:ffy),
libvips/cimg/CImg.h:        fz = ffz<0?0:(ffz>depth-1?depth-1:ffz), fv = ffv<0?0:(ffv>dim-1?dim-1:ffv);
libvips/cimg/CImg.h:      const float dx = fx-x, dy = fy-y, dz = fz-z, dv = fv-v;
libvips/cimg/CImg.h:        dx*(Inccc-Icccc +
libvips/cimg/CImg.h:            dy*(Icccc+Inncc-Icncc-Inccc +
libvips/cimg/CImg.h:                dz*(Iccnc+Innnc+Icncc+Inccc-Icnnc-Incnc-Icccc-Inncc +
libvips/cimg/CImg.h:                    dv*(Iccnn+Innnn+Icncn+Inccn+Icnnc+Incnc+Icccc+Inncc-Icnnn-Incnn-Icccn-Inncn-Iccnc-Innnc-Icncc-Inccc)) +
libvips/cimg/CImg.h:                dv*(Icccn+Inncn+Icncc+Inccc-Icncn-Inccn-Icccc-Inncc)) +
libvips/cimg/CImg.h:            dz*(Icccc+Incnc-Iccnc-Inccc +
libvips/cimg/CImg.h:                dv*(Icccn+Incnn+Iccnc+Inccc-Iccnn-Inccn-Icccc-Incnc)) +
libvips/cimg/CImg.h:            dv*(Icccc+Inccn-Inccc-Icccn)) +
libvips/cimg/CImg.h:        dy*(Icncc-Icccc +
libvips/cimg/CImg.h:            dz*(Icccc+Icnnc-Iccnc-Icncc +
libvips/cimg/CImg.h:                dv*(Icccn+Icnnn+Iccnc+Icncc-Iccnn-Icncn-Icccc-Icnnc)) +
libvips/cimg/CImg.h:            dv*(Icccc+Icncn-Icncc-Icccn)) +
libvips/cimg/CImg.h:        dz*(Iccnc-Icccc +
libvips/cimg/CImg.h:            dv*(Icccc+Iccnn-Iccnc-Icccn)) +
libvips/cimg/CImg.h:        dv*(Icccn-Icccc);
libvips/cimg/CImg.h:       - Same as linear_pix4d(), except that linear interpolation and boundary checking is performed only on the three first coordinates.
libvips/cimg/CImg.h:      const int x = (int)fx-(fx>=0?0:1), y = (int)fy-(fy>=0?0:1), z = (int)fz-(fz>=0?0:1), nx = x+1, ny = y+1, nz = z+1;
libvips/cimg/CImg.h:      const float dx = fx-x, dy = fy-y, dz = fz-z;
libvips/cimg/CImg.h:        dx*(Incc-Iccc +
libvips/cimg/CImg.h:            dy*(Iccc+Innc-Icnc-Incc +
libvips/cimg/CImg.h:                dz*(Iccn+Innn+Icnc+Incc-Icnn-Incn-Iccc-Innc)) +
libvips/cimg/CImg.h:            dz*(Iccc+Incn-Iccn-Incc)) +
libvips/cimg/CImg.h:        dy*(Icnc-Iccc +
libvips/cimg/CImg.h:            dz*(Iccc+Icnn-Iccn-Icnc)) +
libvips/cimg/CImg.h:        dz*(Iccn-Iccc);
libvips/cimg/CImg.h:      const float fx = ffx<0?0:(ffx>width-1?width-1:ffx), fy = ffy<0?0:(ffy>height-1?height-1:ffy), fz = ffz<0?0:(ffz>depth-1?depth-1:ffz);
libvips/cimg/CImg.h:      const float dx = fx-x, dy = fy-y, dz = fz-z;
libvips/cimg/CImg.h:        dx*(Incc-Iccc +
libvips/cimg/CImg.h:            dy*(Iccc+Innc-Icnc-Incc +
libvips/cimg/CImg.h:                dz*(Iccn+Innn+Icnc+Incc-Icnn-Incn-Iccc-Innc)) +
libvips/cimg/CImg.h:            dz*(Iccc+Incn-Iccn-Incc)) +
libvips/cimg/CImg.h:        dy*(Icnc-Iccc +
libvips/cimg/CImg.h:            dz*(Iccc+Icnn-Iccn-Icnc)) +
libvips/cimg/CImg.h:        dz*(Iccn-Iccc);
libvips/cimg/CImg.h:       - Same as linear_pix4d(), except that linear interpolation and boundary checking is performed only on the two first coordinates.
libvips/cimg/CImg.h:      const int x = (int)fx-(fx>0?0:1), y = (int)fy-(fy>0?0:1), nx = x+1, ny = y+1;
libvips/cimg/CImg.h:      const float dx = fx-x, dy = fy-y;
libvips/cimg/CImg.h:      return Icc + dx*(Inc-Icc + dy*(Icc+Inn-Icn-Inc)) + dy*(Icn-Icc);
libvips/cimg/CImg.h:      const float fx = ffx<0?0:(ffx>width-1?width-1:ffx), fy = ffy<0?0:(ffy>height-1?height-1:ffy);
libvips/cimg/CImg.h:      const float dx = fx-x, dy = fy-y;
libvips/cimg/CImg.h:      return Icc + dx*(Inc-Icc + dy*(Icc+Inn-Icn-Inc)) + dy*(Icn-Icc);
libvips/cimg/CImg.h:       - Same as linear_pix4d(), except that linear interpolation and boundary checking is performed only on the first coordinate.
libvips/cimg/CImg.h:      const int x = (int)fx-(fx>0?0:1), nx = x+1;
libvips/cimg/CImg.h:      const float dx = fx-x;
libvips/cimg/CImg.h:      return Ic + dx*(In-Ic);
libvips/cimg/CImg.h:      const float fx = ffx<0?0:(ffx>width-1?width-1:ffx);
libvips/cimg/CImg.h:      const float dx = fx-x;
libvips/cimg/CImg.h:      return Ic + dx*(In-Ic);
libvips/cimg/CImg.h:      const float xp2 = x+2, xp1 = x+1, xm1 = x-1,
libvips/cimg/CImg.h:      return (nxp2*nxp2*nxp2 - 4*nxp1*nxp1*nxp1 + 6*nx*nx*nx - 4*nxm1*nxm1*nxm1)/6.0f;
libvips/cimg/CImg.h:       - Same as cubic_pix2d(), except that cubic interpolation and boundary checking is performed only on the first coordinate.
libvips/cimg/CImg.h:      const int x = (int)fx-(fx>=0?0:1), px = x-1, nx = x+1, ax = nx+1;
libvips/cimg/CImg.h:      const float dx = fx-x;
libvips/cimg/CImg.h:      const float Rxp = _cubic_R(-1-dx), Rxc = _cubic_R(dx), Rxn = _cubic_R(1-dx), Rxa = _cubic_R(2-dx);
libvips/cimg/CImg.h:      const float fx = pfx<0?0:(pfx>width-1?width-1:pfx);
libvips/cimg/CImg.h:      const unsigned int x = (unsigned int)fx, px = (int)x-1>=0?x-1:0, nx = x+1<width?x+1:width-1, ax = nx+1<width?nx+1:width-1;
libvips/cimg/CImg.h:      const float dx = fx-x;
libvips/cimg/CImg.h:      const float Rxp = _cubic_R(-1-dx), Rxc = _cubic_R(dx), Rxn = _cubic_R(1-dx), Rxa = _cubic_R(2-dx);
libvips/cimg/CImg.h:       \param pfx X-coordinate of the pixel (float-valued).
libvips/cimg/CImg.h:       \param pfy Y-coordinate of the pixel (float-valued).
libvips/cimg/CImg.h:       \param z   Z-coordinate of the pixel.
libvips/cimg/CImg.h:       \param v   V-coordinate of the pixel.
libvips/cimg/CImg.h:       - This function allows to read pixel values with boundary checking on the two first coordinates.
libvips/cimg/CImg.h:       - If given coordinates are outside the image range, the value of the nearest pixel inside the image is returned
libvips/cimg/CImg.h:       - If given coordinates are float-valued, a cubic interpolation is performed in order to compute the returned value.
libvips/cimg/CImg.h:        x = (int)fx-(fx>=0?0:1), y = (int)fy-(fy>=0?0:1),
libvips/cimg/CImg.h:        px = x-1, nx = x+1, ax = nx+1, py = y-1, ny = y+1, ay = ny+1;
libvips/cimg/CImg.h:      const float dx = fx-x, dy = fy-y;
libvips/cimg/CImg.h:        Rxp = _cubic_R(-1-dx), Rxc = _cubic_R(dx), Rxn = _cubic_R(1-dx), Rxa = _cubic_R(2-dx),
libvips/cimg/CImg.h:        Ryp = _cubic_R(dy+1),  Ryc = _cubic_R(dy), Ryn = _cubic_R(dy-1), Rya = _cubic_R(dy-2);
libvips/cimg/CImg.h:      const float fx = pfx<0?0:(pfx>width-1?width-1:pfx), fy = pfy<0?0:(pfy>height-1?height-1:pfy);
libvips/cimg/CImg.h:        x = (unsigned int)fx,  px = (int)x-1>=0?x-1:0, nx = x+1<width?x+1:width-1, ax = nx+1<width?nx+1:width-1,
libvips/cimg/CImg.h:        y = (unsigned int)fy,  py = (int)y-1>=0?y-1:0, ny = y+1<height?y+1:height-1, ay = ny+1<height?ny+1:height-1;
libvips/cimg/CImg.h:      const float dx = fx-x, dy = fy-y;
libvips/cimg/CImg.h:        Rxp = _cubic_R(-1-dx), Rxc = _cubic_R(dx), Rxn = _cubic_R(1-dx), Rxa = _cubic_R(2-dx),
libvips/cimg/CImg.h:        Ryp = _cubic_R(dy+1),  Ryc = _cubic_R(dy), Ryn = _cubic_R(dy-1), Rya = _cubic_R(dy-2);
libvips/cimg/CImg.h:       - The possible values for \c print_flag are :
libvips/cimg/CImg.h:           - 0 : print only informations about image size and pixel buffer.
libvips/cimg/CImg.h:           - 1 : print also statistics on the image pixels.
libvips/cimg/CImg.h:           - 2 : print also the content of the pixel buffer, in a matlab-style.
libvips/cimg/CImg.h:      std::fprintf(stderr,"%-8s(this=%p): { size=(%u,%u,%u,%u), data=(%s*)%p (%s)",
libvips/cimg/CImg.h:    //------------------------------------------
libvips/cimg/CImg.h:    //------------------------------------------
libvips/cimg/CImg.h:       - This operator is strictly equivalent to the function assign(const CImg< t >&) and has exactly the same properties.
libvips/cimg/CImg.h:    //! Assign values of a C-array to the instance image.
libvips/cimg/CImg.h:       \param buf Pointer to a C-style array having a size of (at least) <tt>this->size()</tt>.
libvips/cimg/CImg.h:       - Replace pixel values by the content of the array \c buf.
libvips/cimg/CImg.h:       - Warning : the value types in the array and in the image must be the same.
libvips/cimg/CImg.h:       float tab[4*4] = { 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 };  // Define a 4x4 matrix in C-style.
libvips/cimg/CImg.h:       - This operator can be used to get a non-shared copy of an image.
libvips/cimg/CImg.h:      for (T *ptrd = data+smin; ptrd>data; --ptrd, (*ptrd)=(T)((*ptrd)+(*(--ptrs))));
libvips/cimg/CImg.h:    //! Operator-.
libvips/cimg/CImg.h:    CImg operator-() const {
libvips/cimg/CImg.h:      return CImg<T>(width,height,depth,dim,0)-=*this;
libvips/cimg/CImg.h:    //! Operator-=.
libvips/cimg/CImg.h:        CImg& operator-=(const T& val) {
libvips/cimg/CImg.h:        template<typename t> CImg& operator-=(const t& val) {
libvips/cimg/CImg.h:                cimg_for(*this,ptr,T) (*ptr)=(T)((*ptr)-val);
libvips/cimg/CImg.h:    //! Operator-=.
libvips/cimg/CImg.h:    template<typename t> CImg& operator-=(const CImg<t>& img) {
libvips/cimg/CImg.h:      for (T *ptrd = data+smin; ptrd>data; --ptrd, (*ptrd)=(T)((*ptrd)-(*(--ptrs))));
libvips/cimg/CImg.h:    //! Operator--.
libvips/cimg/CImg.h:    CImg& operator--() {
libvips/cimg/CImg.h:      cimg_for(*this,ptr,T) (*ptr)--;
libvips/cimg/CImg.h:    //! In-place modulo.
libvips/cimg/CImg.h:    //! In-place modulo.
libvips/cimg/CImg.h:      for (T *ptrs=img.data+smin, *ptrd=data+smin; ptrd>data; *(--ptrd)%=*(--ptrs));
libvips/cimg/CImg.h:    //! In-place bitwise AND.
libvips/cimg/CImg.h:      for (T *ptrs=img.data+smin, *ptrd=data+smin; ptrd>data; *(--ptrd)&=*(--ptrs));
libvips/cimg/CImg.h:    //! In-place bitwise AND.
libvips/cimg/CImg.h:    //! In-place bitwise OR.
libvips/cimg/CImg.h:      for (T *ptrs=img.data+smin, *ptrd=data+smin; ptrd>data; *(--ptrd)|=*(--ptrs));
libvips/cimg/CImg.h:    //! In-place bitwise OR.
libvips/cimg/CImg.h:    //! In-place bitwise XOR.
libvips/cimg/CImg.h:      for (T *ptrs=img.data+smin, *ptrd=data+smin; ptrd>data; *(--ptrd)^=*(--ptrs));
libvips/cimg/CImg.h:    //! In-place bitwise XOR.
libvips/cimg/CImg.h:      cimg_for(res,ptrd,T) *ptrd=!(*(--ptrs));
libvips/cimg/CImg.h:      cimg_for(res,ptrd,T) *ptrd=~(*(--ptrs));
libvips/cimg/CImg.h:      for (T *ptrd=data+siz; vequal && ptrd>data; vequal=vequal&&((*(--ptrd))==(*(--ptrs))));
libvips/cimg/CImg.h:    //---------------------------------------
libvips/cimg/CImg.h:    //---------------------------------------
libvips/cimg/CImg.h:    //! Apply a R->R function on all image value.
libvips/cimg/CImg.h:    //! In-place pointwise multiplication between \c *this and \c img.
libvips/cimg/CImg.h:       This is the in-place version of get_mul().
libvips/cimg/CImg.h:       - if \c *this and \c img have different size, the multiplication is applied on the maximum possible range.
libvips/cimg/CImg.h:       This is the in-place version of get_div().
libvips/cimg/CImg.h:       This is the in-place version of get_max().
libvips/cimg/CImg.h:       This is the in-place version of get_max().
libvips/cimg/CImg.h:       This is the in-place version of get_min().
libvips/cimg/CImg.h:       This is the in-place version of get_min().
libvips/cimg/CImg.h:       In-place version
libvips/cimg/CImg.h:    //! Replace each image pixel by its arc-cosinus.
libvips/cimg/CImg.h:    //! Return the image of the arc-cosinus of the pixel values.
libvips/cimg/CImg.h:    //! Replace each image pixel by its arc-sinus.
libvips/cimg/CImg.h:    //! Return the image of the arc-sinus of the pixel values.
libvips/cimg/CImg.h:    //! Replace each image pixel by its arc-tangent.
libvips/cimg/CImg.h:    //! Return the image of the arc-tangent of the pixel values.
libvips/cimg/CImg.h:    //! Return the MSE (Mean-Squared Error) between two images.
libvips/cimg/CImg.h:        const double diff = (double)*ptr1 - (double)*(--ptr2);
libvips/cimg/CImg.h:    //-----------------------------------
libvips/cimg/CImg.h:    //-----------------------------------
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-1;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-2;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-3;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-4;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-5;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 5: *(--ptr_end)=val4;
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-6;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 6: *(--ptr_end)=val5;
libvips/cimg/CImg.h:        case 5: *(--ptr_end)=val4;
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-7;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 7: *(--ptr_end)=val6;
libvips/cimg/CImg.h:        case 6: *(--ptr_end)=val5;
libvips/cimg/CImg.h:        case 5: *(--ptr_end)=val4;
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-8;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 8: *(--ptr_end)=val7;
libvips/cimg/CImg.h:        case 7: *(--ptr_end)=val6;
libvips/cimg/CImg.h:        case 6: *(--ptr_end)=val5;
libvips/cimg/CImg.h:        case 5: *(--ptr_end)=val4;
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-9;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 9: *(--ptr_end)=val8;
libvips/cimg/CImg.h:        case 8: *(--ptr_end)=val7;
libvips/cimg/CImg.h:        case 7: *(--ptr_end)=val6;
libvips/cimg/CImg.h:        case 6: *(--ptr_end)=val5;
libvips/cimg/CImg.h:        case 5: *(--ptr_end)=val4;
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-11;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 11: *(--ptr_end)=val10;
libvips/cimg/CImg.h:        case 10: *(--ptr_end)=val9;
libvips/cimg/CImg.h:        case 9: *(--ptr_end)=val8;
libvips/cimg/CImg.h:        case 8: *(--ptr_end)=val7;
libvips/cimg/CImg.h:        case 7: *(--ptr_end)=val6;
libvips/cimg/CImg.h:        case 6: *(--ptr_end)=val5;
libvips/cimg/CImg.h:        case 5: *(--ptr_end)=val4;
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-12;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 12: *(--ptr_end)=val11;
libvips/cimg/CImg.h:        case 11: *(--ptr_end)=val10;
libvips/cimg/CImg.h:        case 10: *(--ptr_end)=val9;
libvips/cimg/CImg.h:        case 9: *(--ptr_end)=val8;
libvips/cimg/CImg.h:        case 8: *(--ptr_end)=val7;
libvips/cimg/CImg.h:        case 7: *(--ptr_end)=val6;
libvips/cimg/CImg.h:        case 6: *(--ptr_end)=val5;
libvips/cimg/CImg.h:        case 5: *(--ptr_end)=val4;
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-15;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 15: *(--ptr_end)=val14;
libvips/cimg/CImg.h:        case 14: *(--ptr_end)=val13;
libvips/cimg/CImg.h:        case 13: *(--ptr_end)=val12;
libvips/cimg/CImg.h:        case 12: *(--ptr_end)=val11;
libvips/cimg/CImg.h:        case 11: *(--ptr_end)=val10;
libvips/cimg/CImg.h:        case 10: *(--ptr_end)=val9;
libvips/cimg/CImg.h:        case 9: *(--ptr_end)=val8;
libvips/cimg/CImg.h:        case 8: *(--ptr_end)=val7;
libvips/cimg/CImg.h:        case 7: *(--ptr_end)=val6;
libvips/cimg/CImg.h:        case 6: *(--ptr_end)=val5;
libvips/cimg/CImg.h:        case 5: *(--ptr_end)=val4;
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        T *ptr, *ptr_end = end()-24;
libvips/cimg/CImg.h:        switch (ptr_end-ptr) {
libvips/cimg/CImg.h:        case 24: *(--ptr_end)=val23;
libvips/cimg/CImg.h:        case 23: *(--ptr_end)=val22;
libvips/cimg/CImg.h:        case 22: *(--ptr_end)=val21;
libvips/cimg/CImg.h:        case 21: *(--ptr_end)=val20;
libvips/cimg/CImg.h:        case 20: *(--ptr_end)=val19;
libvips/cimg/CImg.h:        case 19: *(--ptr_end)=val18;
libvips/cimg/CImg.h:        case 18: *(--ptr_end)=val17;
libvips/cimg/CImg.h:        case 17: *(--ptr_end)=val16;
libvips/cimg/CImg.h:        case 16: *(--ptr_end)=val15;
libvips/cimg/CImg.h:        case 15: *(--ptr_end)=val14;
libvips/cimg/CImg.h:        case 14: *(--ptr_end)=val13;
libvips/cimg/CImg.h:        case 13: *(--ptr_end)=val12;
libvips/cimg/CImg.h:        case 12: *(--ptr_end)=val11;
libvips/cimg/CImg.h:        case 11: *(--ptr_end)=val10;
libvips/cimg/CImg.h:        case 10: *(--ptr_end)=val9;
libvips/cimg/CImg.h:        case 9: *(--ptr_end)=val8;
libvips/cimg/CImg.h:        case 8: *(--ptr_end)=val7;
libvips/cimg/CImg.h:        case 7: *(--ptr_end)=val6;
libvips/cimg/CImg.h:        case 6: *(--ptr_end)=val5;
libvips/cimg/CImg.h:        case 5: *(--ptr_end)=val4;
libvips/cimg/CImg.h:        case 4: *(--ptr_end)=val3;
libvips/cimg/CImg.h:        case 3: *(--ptr_end)=val2;
libvips/cimg/CImg.h:        case 2: *(--ptr_end)=val1;
libvips/cimg/CImg.h:        case 1: *(--ptr_end)=val0;
libvips/cimg/CImg.h:        if (st.min!=a || st.max!=b) cimg_for(*this,ptr,T) *ptr=(T)((*ptr-st.min)/(st.max-st.min)*(b-a)+a);
libvips/cimg/CImg.h:        const double range = st.max-st.min;
libvips/cimg/CImg.h:          const unsigned int val = (unsigned int)((*ptr-st.min)*n/range);
libvips/cimg/CImg.h:          *ptr = (T)(st.min + cimg::min(val,n-1)*range);
libvips/cimg/CImg.h:       - 0 = zero-value at borders
libvips/cimg/CImg.h:       - 1 = repeat image at borders
libvips/cimg/CImg.h:       - 2 = zero-value at borders and linear interpolation
libvips/cimg/CImg.h:        const int wm1 = dimx()-1, hm1 = dimy()-1;
libvips/cimg/CImg.h:          cimg_forXYZV(dest,x,y,z,v) dest(x,y,z,v) = (*this)(y,hm1-x,z,v);
libvips/cimg/CImg.h:          cimg_forXYZV(dest,x,y,z,v) dest(x,y,z,v) = (*this)(wm1-x,hm1-y,z,v);
libvips/cimg/CImg.h:          cimg_forXYZV(dest,x,y,z,v) dest(x,y,z,v) = (*this)(wm1-y,x,z,v);
libvips/cimg/CImg.h:            dest(x,y,z,v) = pix2d((int)(w2 + (x-dw2)*ca + (y-dh2)*sa),(int)(h2 - (x-dw2)*sa + (y-dh2)*ca),z,v,0);
libvips/cimg/CImg.h:            dest(x,y,z,v) = (*this)(cimg::mod((int)(w2 + (x-dw2)*ca + (y-dh2)*sa),width),
libvips/cimg/CImg.h:                                    cimg::mod((int)(h2 - (x-dw2)*sa + (y-dh2)*ca),height),z,v);
libvips/cimg/CImg.h:            const float X = w2 + (x-dw2)*ca + (y-dh2)*sa, Y = h2 - (x-dw2)*sa + (y-dh2)*ca;
libvips/cimg/CImg.h:            const float X = w2 + (x-dw2)*ca + (y-dh2)*sa, Y = h2 - (x-dw2)*sa + (y-dh2)*ca;
libvips/cimg/CImg.h:       - 0 = zero-value at borders
libvips/cimg/CImg.h:       - 1 = repeat image at borders
libvips/cimg/CImg.h:       - 2 = zero-value at borders and linear interpolation
libvips/cimg/CImg.h:       \param cx = X-coordinate of the rotation center.
libvips/cimg/CImg.h:       \param cy = Y-coordinate of the rotation center.
libvips/cimg/CImg.h:       - 0 = zero-value at borders
libvips/cimg/CImg.h:       - 1 = repeat image at borders
libvips/cimg/CImg.h:       - 2 = zero-value at borders and linear interpolation
libvips/cimg/CImg.h:            xmin = cimg::max(0,(dimx()-dimy())/2), xmax = cimg::min(width,xmin+height),
libvips/cimg/CImg.h:            ymin = cimg::max(0,(dimy()-dimx())/2), ymax = cimg::min(height,ymin+width),
libvips/cimg/CImg.h:            xoff = xmin + cimg::min(0,(dimx()-dimy())/2),
libvips/cimg/CImg.h:            yoff = ymin + cimg::min(0,(dimy()-dimx())/2);
libvips/cimg/CImg.h:            dest(x,y,z,v) = (*this)(y-yoff,height-1-x+xoff,z,v);
libvips/cimg/CImg.h:          cimg_forXYZV(dest,x,y,z,v) dest(x,y,z,v) = (*this)(width-1-x,height-1-y,z,v);
libvips/cimg/CImg.h:            xmin = cimg::max(0,(dimx()-dimy())/2), xmax = cimg::min(width,xmin+height),
libvips/cimg/CImg.h:            ymin = cimg::max(0,(dimy()-dimx())/2), ymax = cimg::min(height,ymin+width),
libvips/cimg/CImg.h:            xoff = xmin + cimg::min(0,(dimx()-dimy())/2),
libvips/cimg/CImg.h:            yoff = ymin + cimg::min(0,(dimy()-dimx())/2);
libvips/cimg/CImg.h:            dest(x,y,z,v) = (*this)(width-1-y+yoff,x-xoff,z,v);
libvips/cimg/CImg.h:            dest(x,y,z,v) = pix2d((int)(cx + (x-cx)*ca + (y-cy)*sa),(int)(cy - (x-cx)*sa + (y-cy)*ca),z,v,0);
libvips/cimg/CImg.h:            dest(x,y,z,v) = (*this)(cimg::mod((int)(cx + (x-cx)*ca + (y-cy)*sa),width),
libvips/cimg/CImg.h:                                    cimg::mod((int)(cy - (x-cx)*sa + (y-cy)*ca),height),z,v);
libvips/cimg/CImg.h:            const float X = cx + (x-cx)*ca + (y-cy)*sa, Y = cy - (x-cx)*sa + (y-cy)*ca;
libvips/cimg/CImg.h:            const float X = cx + (x-cx)*ca + (y-cy)*sa, Y = cy - (x-cx)*sa + (y-cy)*ca;
libvips/cimg/CImg.h:       \param cx = X-coordinate of the rotation center.
libvips/cimg/CImg.h:       \param cy = Y-coordinate of the rotation center.
libvips/cimg/CImg.h:       - 0 = zero-value at borders
libvips/cimg/CImg.h:       - 1 = repeat image at borders
libvips/cimg/CImg.h:       - 2 = zero-value at borders and linear interpolation
libvips/cimg/CImg.h:       \param pdx = Number of columns (new size along the X-axis).
libvips/cimg/CImg.h:       \param pdy = Number of rows (new size along the Y-axis).
libvips/cimg/CImg.h:       \param pdz = Number of slices (new size along the Z-axis).
libvips/cimg/CImg.h:       \param pdv = Number of vector-channels (new size along the V-axis).
libvips/cimg/CImg.h:       - 0 = no interpolation : additionnal space is filled with 0.
libvips/cimg/CImg.h:       - 1 = bloc interpolation (nearest point).
libvips/cimg/CImg.h:       - 2 = mosaic : image is repeated if necessary.
libvips/cimg/CImg.h:       - 3 = linear interpolation.
libvips/cimg/CImg.h:       - 4 = grid interpolation.
libvips/cimg/CImg.h:       - 5 = bi-cubic interpolation.
libvips/cimg/CImg.h:       \note If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).
libvips/cimg/CImg.h:    CImg get_resize(const int pdx=-100, const int pdy=-100, const int pdz=-100, const int pdv=-100,
libvips/cimg/CImg.h:                    const unsigned int interp=1, const int border_condition=-1) const {
libvips/cimg/CImg.h:        tdx = pdx<0?-pdx*width/100:pdx,
libvips/cimg/CImg.h:        tdy = pdy<0?-pdy*height/100:pdy,
libvips/cimg/CImg.h:        tdz = pdz<0?-pdz*depth/100:pdz,
libvips/cimg/CImg.h:        tdv = pdv<0?-pdv*dim/100:pdv,
libvips/cimg/CImg.h:      case 1: { // Nearest-neighbor interpolation
libvips/cimg/CImg.h:        poffx = offx; curr=0; { cimg_forX(res,x) { old=curr; curr=(x+1)*width/dx;  *(poffx++) = (unsigned int)curr-(unsigned int)old; }}
libvips/cimg/CImg.h:        poffy = offy; curr=0; { cimg_forY(res,y) { old=curr; curr=(y+1)*height/dy; *(poffy++) = width*((unsigned int)curr-(unsigned int)old); }} *poffy=0;
libvips/cimg/CImg.h:        poffz = offz; curr=0; { cimg_forZ(res,z) { old=curr; curr=(z+1)*depth/dz;  *(poffz++) = wh*((unsigned int)curr-(unsigned int)old); }} *poffz=0;
libvips/cimg/CImg.h:        poffv = offv; curr=0; { cimg_forV(res,k) { old=curr; curr=(k+1)*dim/dv;    *(poffv++) = whd*((unsigned int)curr-(unsigned int)old); }} *poffv=0;
libvips/cimg/CImg.h:              for (;!dy && y<dy; std::memcpy(ptrd, ptrd-dx, sizeof(T)*dx), y++, ptrd+=dx, dy=*(poffy++));
libvips/cimg/CImg.h:            for (;!dz && z<dz; std::memcpy(ptrd, ptrd-rwh, sizeof(T)*rwh), z++, ptrd+=rwh, dz=*(poffz++));
libvips/cimg/CImg.h:          for (;!dv && k<dv; std::memcpy(ptrd, ptrd-rwhd, sizeof(T)*rwhd), k++, ptrd+=rwhd, dv=*(poffv++));
libvips/cimg/CImg.h:          sx = bborder?(dx>0?(width-1.0f)/(dx-1) :0):(float)width/dx,
libvips/cimg/CImg.h:          sy = bborder?(dy>0?(height-1.0f)/(dy-1):0):(float)height/dy,
libvips/cimg/CImg.h:          sz = bborder?(dz>0?(depth-1.0f)/(dz-1) :0):(float)depth/dz,
libvips/cimg/CImg.h:          sv = bborder?(dv>0?(dim-1.0f)/(dv-1)   :0):(float)dim/dv;
libvips/cimg/CImg.h:            cimg_forX(resx,x) { *(pfoff++) = curr-(unsigned int)curr; old = curr; curr+=sx; *(poff++) = (unsigned int)curr-(unsigned int)old; }
libvips/cimg/CImg.h:              const T *ptrs = ptrs0, *const ptrsmax = ptrs0 + (width-1);
libvips/cimg/CImg.h:                *(ptrd++) = (T)((1-alpha)*val1 + alpha*val2);
libvips/cimg/CImg.h:            cimg_forY(resy,y) { *(pfoff++) = curr-(unsigned int)curr; old = curr; curr+=sy; *(poff++) = dx*((unsigned int)curr-(unsigned int)old); }
libvips/cimg/CImg.h:              const T *ptrs = resx.ptr(x,0,z,k), *const ptrsmax = ptrs + (height-1)*dx;
libvips/cimg/CImg.h:                *ptrd = (T)((1-alpha)*val1 + alpha*val2);
libvips/cimg/CImg.h:            cimg_forZ(resz,z) { *(pfoff++) = curr-(unsigned int)curr; old = curr; curr+=sz; *(poff++) = wh*((unsigned int)curr-(unsigned int)old); }
libvips/cimg/CImg.h:              const T *ptrs = resy.ptr(x,y,0,k), *const ptrsmax = ptrs + (depth-1)*wh;
libvips/cimg/CImg.h:                *ptrd = (T)((1-alpha)*val1 + alpha*val2);
libvips/cimg/CImg.h:            cimg_forV(resv,k) { *(pfoff++) = curr-(unsigned int)curr; old = curr; curr+=sv; *(poff++) = whd*((unsigned int)curr-(unsigned int)old); }
libvips/cimg/CImg.h:              const T *ptrs = resz.ptr(x,y,z,0), *const ptrsmax = ptrs + (dim-1)*whd;
libvips/cimg/CImg.h:                *ptrd = (T)((1-alpha)*val1 + alpha*val2);
libvips/cimg/CImg.h:          sx = bborder?(dx>0?(width-1.0f)/(dx-1) :0):(float)width/dx,
libvips/cimg/CImg.h:          sy = bborder?(dy>0?(height-1.0f)/(dy-1):0):(float)height/dy,
libvips/cimg/CImg.h:          sz = bborder?(dz>0?(depth-1.0f)/(dz-1) :0):(float)depth/dz,
libvips/cimg/CImg.h:          sv = bborder?(dv>0?(dim-1.0f)/(dv-1)   :0):(float)dim/dv;
libvips/cimg/CImg.h:       - 0 = no interpolation : additionnal space is filled with 0.
libvips/cimg/CImg.h:       - 1 = bloc interpolation (nearest point).
libvips/cimg/CImg.h:       - 2 = mosaic : image is repeated if necessary.
libvips/cimg/CImg.h:       - 3 = linear interpolation.
libvips/cimg/CImg.h:       - 4 = grid interpolation.
libvips/cimg/CImg.h:       - 5 = bi-cubic interpolation.
libvips/cimg/CImg.h:       \note If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).
libvips/cimg/CImg.h:    template<typename t> CImg get_resize(const CImg<t>& src, const unsigned int interp=1, const int border_condition=-1) const {
libvips/cimg/CImg.h:       - 0 = no interpolation : additionnal space is filled with 0.
libvips/cimg/CImg.h:       - 1 = bloc interpolation (nearest point).
libvips/cimg/CImg.h:       - 2 = mosaic : image is repeated if necessary.
libvips/cimg/CImg.h:       - 3 = linear interpolation.
libvips/cimg/CImg.h:       - 4 = grid interpolation.
libvips/cimg/CImg.h:       - 5 = bi-cubic interpolation.
libvips/cimg/CImg.h:       \note If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).
libvips/cimg/CImg.h:    CImg get_resize(const CImgDisplay& disp,const unsigned int interp=1, const int border_condition=-1) const {
libvips/cimg/CImg.h:       \param pdx = Number of columns (new size along the X-axis).
libvips/cimg/CImg.h:       \param pdy = Number of rows (new size along the Y-axis).
libvips/cimg/CImg.h:       \param pdz = Number of slices (new size along the Z-axis).
libvips/cimg/CImg.h:       \param pdv = Number of vector-channels (new size along the V-axis).
libvips/cimg/CImg.h:       - 0 = no interpolation : additionnal space is filled with 0.
libvips/cimg/CImg.h:       - 1 = bloc interpolation (nearest point).
libvips/cimg/CImg.h:       - 2 = mosaic : image is repeated if necessary.
libvips/cimg/CImg.h:       - 3 = linear interpolation.
libvips/cimg/CImg.h:       - 4 = grid interpolation.
libvips/cimg/CImg.h:       - 5 = bi-cubic interpolation.
libvips/cimg/CImg.h:       \note If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).
libvips/cimg/CImg.h:    CImg& resize(const int pdx=-100, const int pdy=-100, const int pdz=-100, const int pdv=-100,
libvips/cimg/CImg.h:                 const unsigned int interp=1, const int border_condition=-1) {
libvips/cimg/CImg.h:        dx = pdx<0?-pdx*width/100:pdx,
libvips/cimg/CImg.h:        dy = pdy<0?-pdy*height/100:pdy,
libvips/cimg/CImg.h:        dz = pdz<0?-pdz*depth/100:pdz,
libvips/cimg/CImg.h:        dv = pdv<0?-pdv*dim/100:pdv;
libvips/cimg/CImg.h:       - 0 = no interpolation : additionnal space is filled with 0.
libvips/cimg/CImg.h:       - 1 = bloc interpolation (nearest point).
libvips/cimg/CImg.h:       - 2 = mosaic : image is repeated if necessary.
libvips/cimg/CImg.h:       - 3 = linear interpolation.
libvips/cimg/CImg.h:       - 4 = grid interpolation.
libvips/cimg/CImg.h:       - 5 = bi-cubic interpolation.
libvips/cimg/CImg.h:       \note If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).
libvips/cimg/CImg.h:    template<typename t> CImg& resize(const CImg<t>& src, const unsigned int interp=1, const int border_condition=-1) {
libvips/cimg/CImg.h:       - 0 = no interpolation : additionnal space is filled with 0.
libvips/cimg/CImg.h:       - 1 = bloc interpolation (nearest point).
libvips/cimg/CImg.h:       - 2 = mosaic : image is repeated if necessary.
libvips/cimg/CImg.h:       - 3 = linear interpolation.
libvips/cimg/CImg.h:       - 4 = grid interpolation.
libvips/cimg/CImg.h:       - 5 = bi-cubic interpolation.
libvips/cimg/CImg.h:       \note If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).
libvips/cimg/CImg.h:    CImg& resize(const CImgDisplay& disp, const unsigned int interp=1, const int border_condition=-1) {
libvips/cimg/CImg.h:    //! Return an half-resized image, using a special filter.
libvips/cimg/CImg.h:    //! Half-resize the image, using a special filter
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param v0 = V-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param z1 = Z-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param v1 = V-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:      const unsigned int dx=x1-x0+1, dy=y1-y0+1, dz=z1-z0+1, dv=v1-v0+1;
libvips/cimg/CImg.h:                psrc+=width*(height-dy);
libvips/cimg/CImg.h:              psrc+=width*height*(depth-dz);
libvips/cimg/CImg.h:                psrc+=width*height*(depth-dz);
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param z1 = Z-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:      return get_crop(x0,y0,z0,0,x1,y1,z1,dim-1,border_condition);
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:      return get_crop(x0,y0,0,0,x1,y1,depth-1,dim-1,border_condition);
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:      return get_crop(x0,0,0,0,x1,height-1,depth-1,dim-1,border_condition);
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param v0 = V-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param z1 = Z-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param v1 = V-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param z1 = Z-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:      return crop(x0,y0,z0,0,x1,y1,z1,dim-1,border_condition);
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:      return crop(x0,y0,0,0,x1,y1,depth-1,dim-1,border_condition);
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left crop rectangle corner.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right crop rectangle corner.
libvips/cimg/CImg.h:      return crop(x0,0,0,0,x1,height-1,depth-1,dim-1,border_condition);
libvips/cimg/CImg.h:      return get_crop(x0,0,0,0,x1,height-1,depth-1,dim-1);
libvips/cimg/CImg.h:      return get_crop(0,y0,0,0,width-1,y1,depth-1,dim-1);
libvips/cimg/CImg.h:      return get_crop(0,0,z0,0,width-1,height-1,z1,dim-1);
libvips/cimg/CImg.h:    // Replace the image by a set of its z-slices
libvips/cimg/CImg.h:    //! Get the z-slice \a z of *this, as a new image.
libvips/cimg/CImg.h:      return get_crop(0,0,0,v0,width-1,height-1,depth-1,v1);
libvips/cimg/CImg.h:    //! Get a shared-memory image referencing a set of points of the instance image.
libvips/cimg/CImg.h:        throw CImgArgumentException("CImg<%s>::get_shared_points() : Cannot return a shared-memory subset (%u->%u,%u,%u,%u) from "
libvips/cimg/CImg.h:      return CImg<T>(data+beg,x1-x0+1,1,1,1,true);
libvips/cimg/CImg.h:    //! Get a shared-memory image referencing a set of points of the instance image (const version).
libvips/cimg/CImg.h:        throw CImgArgumentException("CImg<%s>::get_shared_points() : Cannot return a shared-memory subset (%u->%u,%u,%u,%u) from "
libvips/cimg/CImg.h:      return CImg<T>(data+beg,x1-x0+1,1,1,1,true);
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing a set of lines of the instance image.
libvips/cimg/CImg.h:        throw CImgArgumentException("CImg<%s>::get_shared_lines() : Cannot return a shared-memory subset (0->%u,%u->%u,%u,%u) from "
libvips/cimg/CImg.h:                                    "a (%u,%u,%u,%u) image.",pixel_type(),width-1,y0,y1,z0,v0,width,height,depth,dim);
libvips/cimg/CImg.h:      return CImg<T>(data+beg,width,y1-y0+1,1,1,true);
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing a set of lines of the instance image (const version).
libvips/cimg/CImg.h:        throw CImgArgumentException("CImg<%s>::get_shared_lines() : Cannot return a shared-memory subset (0->%u,%u->%u,%u,%u) from "
libvips/cimg/CImg.h:                                    "a (%u,%u,%u,%u) image.",pixel_type(),width-1,y0,y1,z0,v0,width,height,depth,dim);
libvips/cimg/CImg.h:      return CImg<T>(data+beg,width,y1-y0+1,1,1,true);
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing one particular line (y0,z0,v0) of the instance image.
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing one particular line (y0,z0,v0) of the instance image (const version).
libvips/cimg/CImg.h:    //! Return a shared memory image referencing a set of planes (z0->z1,v0) of the instance image.
libvips/cimg/CImg.h:        throw CImgArgumentException("CImg<%s>::get_shared_planes() : Cannot return a shared-memory subset (0->%u,0->%u,%u->%u,%u) from "
libvips/cimg/CImg.h:                                    "a (%u,%u,%u,%u) image.",pixel_type(),width-1,height-1,z0,z1,v0,width,height,depth,dim);
libvips/cimg/CImg.h:      return CImg<T>(data+beg,width,height,z1-z0+1,1,true);
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing a set of planes (z0->z1,v0) of the instance image (const version).
libvips/cimg/CImg.h:        throw CImgArgumentException("CImg<%s>::get_shared_planes() : Cannot return a shared-memory subset (0->%u,0->%u,%u->%u,%u) from "
libvips/cimg/CImg.h:                                    "a (%u,%u,%u,%u) image.",pixel_type(),width-1,height-1,z0,z1,v0,width,height,depth,dim);
libvips/cimg/CImg.h:      return CImg<T>(data+beg,width,height,z1-z0+1,1,true);
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing one plane (z0,v0) of the instance image.
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing one plane (z0,v0) of the instance image (const version).
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing a set of channels (v0->v1) of the instance image.
libvips/cimg/CImg.h:        throw CImgArgumentException("CImg<%s>::get_shared_channels() : Cannot return a shared-memory subset (0->%u,0->%u,0->%u,%u->%u) from "
libvips/cimg/CImg.h:                                    "a (%u,%u,%u,%u) image.",pixel_type(),width-1,height-1,depth-1,v0,v1,width,height,depth,dim);
libvips/cimg/CImg.h:      return CImg<T>(data+beg,width,height,depth,v1-v0+1,true);
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing a set of channels (v0->v1) of the instance image (const version).
libvips/cimg/CImg.h:        throw CImgArgumentException("CImg<%s>::get_shared_channels() : Cannot return a shared-memory subset (0->%u,0->%u,0->%u,%u->%u) from "
libvips/cimg/CImg.h:                                    "a (%u,%u,%u,%u) image.",pixel_type(),width-1,height-1,depth-1,v0,v1,width,height,depth,dim);
libvips/cimg/CImg.h:      return CImg<T>(data+beg,width,height,depth,v1-v0+1,true);
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing one channel v0 of the instance image.
libvips/cimg/CImg.h:    //! Return a shared-memory image referencing one channel v0 of the instance image (const version).
libvips/cimg/CImg.h:       This is the in-place version of get_mirror().
libvips/cimg/CImg.h:          pf = ptr(); pb = ptr(width-1);
libvips/cimg/CImg.h:            for (unsigned int x=0; x<width/2; x++) { const T val = *pf; *(pf++)=*pb; *(pb--)=val; }
libvips/cimg/CImg.h:            pf+=width-width/2;
libvips/cimg/CImg.h:          pf = ptr(); pb = ptr(0,height-1);
libvips/cimg/CImg.h:              pb-=width;
libvips/cimg/CImg.h:            pf+=width*(height-height/2);
libvips/cimg/CImg.h:          pf = ptr(); pb = ptr(0,0,depth-1);
libvips/cimg/CImg.h:              pb-=width*height;
libvips/cimg/CImg.h:            pf+=width*height*(depth-depth/2);
libvips/cimg/CImg.h:          pf = ptr(); pb = ptr(0,0,0,dim-1);
libvips/cimg/CImg.h:            pb-=width*height*depth;
libvips/cimg/CImg.h:       This is the in-place version of get_translate().
libvips/cimg/CImg.h:        if (deltax) // Translate along X-axis
libvips/cimg/CImg.h:              std::memmove(ptr(0,y,z,k),ptr(deltax,y,z,k),(width-deltax)*sizeof(T));
libvips/cimg/CImg.h:              std::memset(ptr(width-deltax,y,z,k),0,deltax*sizeof(T));
libvips/cimg/CImg.h:              std::memmove(ptr(-deltax,y,z,k),ptr(0,y,z,k),(width+deltax)*sizeof(T));
libvips/cimg/CImg.h:              std::memset(ptr(0,y,z,k),0,-deltax*sizeof(T));
libvips/cimg/CImg.h:              const int ndeltax = (deltax>=(int)width)?width-1:deltax;
libvips/cimg/CImg.h:                std::memmove(ptr(0,y,z,k),ptr(ndeltax,y,z,k),(width-ndeltax)*sizeof(T));
libvips/cimg/CImg.h:                T *ptrd = ptr(width-1,y,z,k);
libvips/cimg/CImg.h:                for (int l=0; l<ndeltax-1; l++) *(--ptrd) = val;
libvips/cimg/CImg.h:              const int ndeltax = (-deltax>=(int)width)?width-1:-deltax;
libvips/cimg/CImg.h:                std::memmove(ptr(ndeltax,y,z,k),ptr(0,y,z,k),(width-ndeltax)*sizeof(T));
libvips/cimg/CImg.h:                for (int l=0; l<ndeltax-1; l++) *(++ptrd) = val;
libvips/cimg/CImg.h:            const int ml = cimg::mod(deltax,width), ndeltax = (ml<=(int)width/2)?ml:(ml-(int)width);
libvips/cimg/CImg.h:              std::memmove(ptr(0,y,z,k),ptr(ndeltax,y,z,k),(width-ndeltax)*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(ptr(width-ndeltax,y,z,k),buf,ndeltax*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(buf,ptr(width+ndeltax,y,z,k),-ndeltax*sizeof(T));
libvips/cimg/CImg.h:              std::memmove(ptr(-ndeltax,y,z,k),ptr(0,y,z,k),(width+ndeltax)*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(ptr(0,y,z,k),buf,-ndeltax*sizeof(T));
libvips/cimg/CImg.h:        if (deltay) // Translate along Y-axis
libvips/cimg/CImg.h:              std::memmove(ptr(0,0,z,k),ptr(0,deltay,z,k),width*(height-deltay)*sizeof(T));
libvips/cimg/CImg.h:              std::memset(ptr(0,height-deltay,z,k),0,width*deltay*sizeof(T));
libvips/cimg/CImg.h:              std::memmove(ptr(0,-deltay,z,k),ptr(0,0,z,k),width*(height+deltay)*sizeof(T));
libvips/cimg/CImg.h:              std::memset(ptr(0,0,z,k),0,-deltay*width*sizeof(T));
libvips/cimg/CImg.h:              const int ndeltay = (deltay>=(int)height)?height-1:deltay;
libvips/cimg/CImg.h:                std::memmove(ptr(0,0,z,k),ptr(0,ndeltay,z,k),width*(height-ndeltay)*sizeof(T));
libvips/cimg/CImg.h:                T *ptrd = ptr(0,height-ndeltay,z,k), *ptrs = ptr(0,height-1,z,k);
libvips/cimg/CImg.h:                for (int l=0; l<ndeltay-1; l++) { std::memcpy(ptrd,ptrs,width*sizeof(T)); ptrd+=width; }
libvips/cimg/CImg.h:              const int ndeltay = (-deltay>=(int)height)?height-1:-deltay;
libvips/cimg/CImg.h:                std::memmove(ptr(0,ndeltay,z,k),ptr(0,0,z,k),width*(height-ndeltay)*sizeof(T));
libvips/cimg/CImg.h:                for (int l=0; l<ndeltay-1; l++) { std::memcpy(ptrd,ptrs,width*sizeof(T)); ptrd+=width; }
libvips/cimg/CImg.h:            const int ml = cimg::mod(deltay,height), ndeltay = (ml<=(int)height/2)?ml:(ml-(int)height);
libvips/cimg/CImg.h:              std::memmove(ptr(0,0,z,k),ptr(0,ndeltay,z,k),width*(height-ndeltay)*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(ptr(0,height-ndeltay,z,k),buf,width*ndeltay*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(buf,ptr(0,height+ndeltay,z,k),-ndeltay*width*sizeof(T));
libvips/cimg/CImg.h:              std::memmove(ptr(0,-ndeltay,z,k),ptr(0,0,z,k),width*(height+ndeltay)*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(ptr(0,0,z,k),buf,-ndeltay*width*sizeof(T));
libvips/cimg/CImg.h:        if (deltaz) // Translate along Z-axis
libvips/cimg/CImg.h:              std::memmove(ptr(0,0,0,k),ptr(0,0,deltaz,k),width*height*(depth-deltaz)*sizeof(T));
libvips/cimg/CImg.h:              std::memset(ptr(0,0,depth-deltaz,k),0,width*height*deltaz*sizeof(T));
libvips/cimg/CImg.h:              std::memmove(ptr(0,0,-deltaz,k),ptr(0,0,0,k),width*height*(depth+deltaz)*sizeof(T));
libvips/cimg/CImg.h:              std::memset(ptr(0,0,0,k),0,-deltaz*width*height*sizeof(T));
libvips/cimg/CImg.h:              const int ndeltaz = (deltaz>=(int)depth)?depth-1:deltaz;
libvips/cimg/CImg.h:                std::memmove(ptr(0,0,0,k),ptr(0,0,ndeltaz,k),width*height*(depth-ndeltaz)*sizeof(T));
libvips/cimg/CImg.h:                T *ptrd = ptr(0,0,depth-ndeltaz,k), *ptrs = ptr(0,0,depth-1,k);
libvips/cimg/CImg.h:                for (int l=0; l<ndeltaz-1; l++) { std::memcpy(ptrd,ptrs,width*height*sizeof(T)); ptrd+=width*height; }
libvips/cimg/CImg.h:              const int ndeltaz = (-deltaz>=(int)depth)?depth-1:-deltaz;
libvips/cimg/CImg.h:                std::memmove(ptr(0,0,ndeltaz,k),ptr(0,0,0,k),width*height*(depth-ndeltaz)*sizeof(T));
libvips/cimg/CImg.h:                for (int l=0; l<ndeltaz-1; l++) { std::memcpy(ptrd,ptrs,width*height*sizeof(T)); ptrd+=width*height; }
libvips/cimg/CImg.h:            const int ml = cimg::mod(deltaz,depth), ndeltaz = (ml<=(int)depth/2)?ml:(ml-(int)depth);
libvips/cimg/CImg.h:              std::memmove(ptr(0,0,0,k),ptr(0,0,ndeltaz,k),width*height*(depth-ndeltaz)*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(ptr(0,0,depth-ndeltaz,k),buf,width*height*ndeltaz*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(buf,ptr(0,0,depth+ndeltaz,k),-ndeltaz*width*height*sizeof(T));
libvips/cimg/CImg.h:              std::memmove(ptr(0,0,-ndeltaz,k),ptr(0,0,0,k),width*height*(depth+ndeltaz)*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(ptr(0,0,0,k),buf,-ndeltaz*width*height*sizeof(T));
libvips/cimg/CImg.h:        if (deltav) // Translate along V-axis
libvips/cimg/CImg.h:              std::memmove(data,ptr(0,0,0,deltav),width*height*depth*(dim-deltav)*sizeof(T));
libvips/cimg/CImg.h:              std::memset(ptr(0,0,0,dim-deltav),0,width*height*depth*deltav*sizeof(T));
libvips/cimg/CImg.h:              std::memmove(ptr(0,0,0,-deltav),data,width*height*depth*(dim+deltav)*sizeof(T));
libvips/cimg/CImg.h:              std::memset(data,0,-deltav*width*height*depth*sizeof(T));
libvips/cimg/CImg.h:              const int ndeltav = (deltav>=(int)dim)?dim-1:deltav;
libvips/cimg/CImg.h:              std::memmove(data,ptr(0,0,0,ndeltav),width*height*depth*(dim-ndeltav)*sizeof(T));
libvips/cimg/CImg.h:              T *ptrd = ptr(0,0,0,dim-ndeltav), *ptrs = ptr(0,0,0,dim-1);
libvips/cimg/CImg.h:              for (int l=0; l<ndeltav-1; l++) { std::memcpy(ptrd,ptrs,width*height*depth*sizeof(T)); ptrd+=width*height*depth; }
libvips/cimg/CImg.h:              const int ndeltav = (-deltav>=(int)dim)?dim-1:-deltav;
libvips/cimg/CImg.h:              std::memmove(ptr(0,0,0,ndeltav),data,width*height*depth*(dim-ndeltav)*sizeof(T));
libvips/cimg/CImg.h:              for (int l=0; l<ndeltav-1; l++) { std::memcpy(ptrd,data,width*height*depth*sizeof(T)); ptrd+=width*height*depth; }
libvips/cimg/CImg.h:            const int ml = cimg::mod(deltav,dim), ndeltav = (ml<=(int)dim/2)?ml:(ml-(int)dim);
libvips/cimg/CImg.h:              std::memmove(data,ptr(0,0,0,ndeltav),width*height*depth*(dim-ndeltav)*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(ptr(0,0,0,dim-ndeltav),buf,width*height*depth*ndeltav*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(buf,ptr(0,0,0,dim+ndeltav),-ndeltav*width*height*depth*sizeof(T));
libvips/cimg/CImg.h:              std::memmove(ptr(0,0,0,-ndeltav),data,width*height*depth*(dim+ndeltav)*sizeof(T));
libvips/cimg/CImg.h:              std::memcpy(data,buf,-ndeltav*width*height*depth*sizeof(T));
libvips/cimg/CImg.h:       \param deltax Amount of displacement along the X-axis.
libvips/cimg/CImg.h:       \param deltay Amount of displacement along the Y-axis.
libvips/cimg/CImg.h:       \param deltaz Amount of displacement along the Z-axis.
libvips/cimg/CImg.h:       \param deltav Amount of displacement along the V-axis.
libvips/cimg/CImg.h:       - \c border_condition can be :
libvips/cimg/CImg.h:          - 0 : Zero border condition (Dirichlet).
libvips/cimg/CImg.h:          - 1 : Nearest neighbors (Neumann).
libvips/cimg/CImg.h:          - 2 : Repeat Pattern (Fourier style).
libvips/cimg/CImg.h:        x0=(px0>=width)?width-1:px0,
libvips/cimg/CImg.h:        y0=(py0>=height)?height-1:py0,
libvips/cimg/CImg.h:        z0=(pz0>=depth)?depth-1:pz0;
libvips/cimg/CImg.h:       The histogram H of an image I is a 1D-function where H(x) is the number of
libvips/cimg/CImg.h:       H(0) and H(nblevels-1) are respectively equal to the number of occurences of the values val_min and val_max in I.
libvips/cimg/CImg.h:       \note Histogram computation always returns a 1D function. Histogram of multi-valued (such as color) images
libvips/cimg/CImg.h:       are not multi-dimensional.
libvips/cimg/CImg.h:        const int pos = (int)((*ptr-vmin)*(nblevels-1)/(vmax-vmin));
libvips/cimg/CImg.h:    /** This is the in-place version of \ref get_equalize_histogram() **/
libvips/cimg/CImg.h:          const int pos = (unsigned int)((*ptr-vmin)*(nblevels-1)/(vmax-vmin));
libvips/cimg/CImg.h:          if (pos>=0 && pos<(int)nblevels) *ptr = (T)(vmin + (vmax-vmin)*hist[pos]/size());
libvips/cimg/CImg.h:    //! Return the histogram-equalized version of the current image.
libvips/cimg/CImg.h:       When dealing with vector-valued images (i.e images with dimv()>1), this function computes the L1,L2 or Linf norm of each
libvips/cimg/CImg.h:       vector-valued pixel.
libvips/cimg/CImg.h:       \param norm_type = Type of the norm being computed (1 = L1, 2 = L2, -1 = Linf).
libvips/cimg/CImg.h:       \return A scalar-valued image CImg<float> with size (dimx(),dimy(),dimz(),1), where each pixel is the norm
libvips/cimg/CImg.h:       of the corresponding pixels in the original vector-valued image.
libvips/cimg/CImg.h:      case -1: {             // Linf norm
libvips/cimg/CImg.h:       This is the in-place version of \ref get_norm_pointwise().
libvips/cimg/CImg.h:       When dealing with vector-valued images (i.e images with dimv()>1), this function return the image of normalized vectors
libvips/cimg/CImg.h:       (unit vectors). Null vectors are unchanged. The L2-norm is computed for the normalization.
libvips/cimg/CImg.h:       \return A new vector-valued image with same size, where each vector-valued pixels have been normalized.
libvips/cimg/CImg.h:    /** This is the in-place version of \ref get_orientation_pointwise() **/
libvips/cimg/CImg.h:        for (l=0, x=0; l<res.size-1; l++, x+=delta) res[l] = get_crop(x,0,0,0,x+delta-1,height-1,depth-1,dim-1);
libvips/cimg/CImg.h:        res[res.size-1] = get_crop(x,0,0,0,width-1,height-1,depth-1,dim-1);
libvips/cimg/CImg.h:        for (l=0, x=0; l<res.size-1; l++, x+=delta) res[l] = get_crop(0,x,0,0,width-1,x+delta-1,depth-1,dim-1);
libvips/cimg/CImg.h:        res[res.size-1] = get_crop(0,x,0,0,width-1,height-1,depth-1,dim-1);
libvips/cimg/CImg.h:        for (l=0, x=0; l<res.size-1; l++, x+=delta) res[l] = get_crop(0,0,x,0,width-1,height-1,x+delta-1,dim-1);
libvips/cimg/CImg.h:        res[res.size-1] = get_crop(0,0,x,0,width-1,height-1,depth-1,dim-1);
libvips/cimg/CImg.h:        for (l=0, x=0; l<res.size-1; l++, x+=delta) res[l] = get_crop(0,0,0,x,width-1,height-1,depth-1,x+delta-1);
libvips/cimg/CImg.h:        res[res.size-1] = get_crop(0,0,0,x,width-1,height-1,depth-1,dim-1);
libvips/cimg/CImg.h:    //! Append an image to another one (in-place version)
libvips/cimg/CImg.h:    //! Return a list of images, corresponding to the XY-gradients of an image.
libvips/cimg/CImg.h:       - -1 = Backward finite differences
libvips/cimg/CImg.h:       - 0 = Centered finite differences
libvips/cimg/CImg.h:       - 1 = Forward finite differences
libvips/cimg/CImg.h:       - 2 = Using Sobel masks
libvips/cimg/CImg.h:       - 3 = Using rotation invariant masks
libvips/cimg/CImg.h:       - 4 = Using Deriche recusrsive filter.
libvips/cimg/CImg.h:      case -1: { // backward finite differences
libvips/cimg/CImg.h:        cimg_forZV(*this,z,k) cimg_for3x3(*this,x,y,z,k,I) { res[0](x,y,z,k) = Icc-Ipc; res[1](x,y,z,k) = Icc-Icp; }
libvips/cimg/CImg.h:        cimg_forZV(*this,z,k) cimg_for2x2(*this,x,y,z,k,I) { res[0](x,y,0,k) = Inc-Icc; res[1](x,y,z,k) = Icn-Icc; }
libvips/cimg/CImg.h:          res[0](x,y,z,k) = -a*Ipp-b*Ipc-a*Ipn+a*Inp+b*Inc+a*Inn;
libvips/cimg/CImg.h:          res[1](x,y,z,k) = -a*Ipp-b*Icp-a*Inp+a*Ipn+b*Icn+a*Inn;
libvips/cimg/CImg.h:        const float a = (float)(0.25*(2-std::sqrt(2.0))), b = (float)(0.5f*(std::sqrt(2.0)-1));
libvips/cimg/CImg.h:          res[0](x,y,z,k) = -a*Ipp-b*Ipc-a*Ipn+a*Inp+b*Inc+a*Inn;
libvips/cimg/CImg.h:          res[1](x,y,z,k) = -a*Ipp-b*Icp-a*Inp+a*Ipn+b*Icn+a*Inn;
libvips/cimg/CImg.h:          res[0](x,y,z,k) = 0.5f*(Inc-Ipc);
libvips/cimg/CImg.h:          res[1](x,y,z,k) = 0.5f*(Icn-Icp);
libvips/cimg/CImg.h:    //! Return a list of images, corresponding to the XYZ-gradients of an image.
libvips/cimg/CImg.h:      case -1: { // backward finite differences
libvips/cimg/CImg.h:          res[0](x,y,z,k) = Iccc-Ipcc;
libvips/cimg/CImg.h:          res[1](x,y,z,k) = Iccc-Icpc;
libvips/cimg/CImg.h:          res[2](x,y,z,k) = Iccc-Iccp;
libvips/cimg/CImg.h:          res[0](x,y,z,k) = Incc-Iccc;
libvips/cimg/CImg.h:          res[1](x,y,z,k) = Icnc-Iccc;
libvips/cimg/CImg.h:          res[2](x,y,z,k) = Iccn-Iccc;
libvips/cimg/CImg.h:          res[0](x,y,z,k) = 0.5f*(Incc-Ipcc);
libvips/cimg/CImg.h:          res[1](x,y,z,k) = 0.5f*(Icnc-Icpc);
libvips/cimg/CImg.h:          res[2](x,y,z,k) = 0.5f*(Iccn-Iccp);
libvips/cimg/CImg.h:            ix = 0.5f*(Inc-Ipc),
libvips/cimg/CImg.h:            iy = 0.5f*(Icn-Icp);
libvips/cimg/CImg.h:            ixf = Inc-Icc, ixb = Icc-Ipc,
libvips/cimg/CImg.h:            iyf = Icn-Icc, iyb = Icc-Icp;
libvips/cimg/CImg.h:    //! In-place version of the previous function
libvips/cimg/CImg.h:            ix = 0.5f*(Incc-Ipcc),
libvips/cimg/CImg.h:            iy = 0.5f*(Icnc-Icpc),
libvips/cimg/CImg.h:            iz = 0.5f*(Iccn-Iccp);
libvips/cimg/CImg.h:            ixf = Incc-Iccc, ixb = Iccc-Ipcc,
libvips/cimg/CImg.h:            iyf = Icnc-Iccc, iyb = Iccc-Icpc,
libvips/cimg/CImg.h:            izf = Iccn-Iccc, izb = Iccc-Iccp;
libvips/cimg/CImg.h:    //! In-place version of the previous function
libvips/cimg/CImg.h:    //-------------------------------------
libvips/cimg/CImg.h:    //-------------------------------------
libvips/cimg/CImg.h:      cimg::marching_squares(func,isovalue,0.0f,0.0f,dimx()-1.0f,dimy()-1.0f,1.0f,1.0f,points,primitives);
libvips/cimg/CImg.h:      cimg::marching_squares(func,isovalue,0.0f,0.0f,dimx()-1.0f,dimy()-1.0f,resx,resy,points,primitives);
libvips/cimg/CImg.h:      cimg::marching_cubes(func,isovalue,0.0f,0.0f,0.0f,dimx()-1.0f,dimy()-1.0f,dimz()-1.0f,
libvips/cimg/CImg.h:      cimg::marching_cubes(func,isovalue,0.0f,0.0f,0.0f,dimx()-1.0f,dimy()-1.0f,dimz()-1.0f,
libvips/cimg/CImg.h:    //----------------------------
libvips/cimg/CImg.h:    //----------------------------
libvips/cimg/CImg.h:       \param palette User-defined palette that will constraint the color conversion.
libvips/cimg/CImg.h:       \param dithering Enable/Disable Floyd-Steinberg dithering.
libvips/cimg/CImg.h:          if (y<dimy()-1) {
libvips/cimg/CImg.h:                const float error = (float)((Rp-R)*(Rp-R) + (Gp-G)*(Gp-G) + (Bp-B)*(Bp-B));
libvips/cimg/CImg.h:              const float dR = (float)(R-Rbest), dG = (float)(G-Gbest), dB = (float)(B-Bbest);
libvips/cimg/CImg.h:              if (x<dimx()-1) { *(ptr1++)+= dR*7/16; *(ptr1++)+= dG*7/16; *(ptr1++)+= dB*7/16; ptr1-=3; }
libvips/cimg/CImg.h:              if (y<dimy()-1) {
libvips/cimg/CImg.h:                *(ptr2++)+= dR*5/16; *(ptr2++)+= dG*5/16; *ptr2+= dB*5/16; ptr2-=2;
libvips/cimg/CImg.h:                if (x>0) { *(--ptr2)+= dB*3/16; *(--ptr2)+= dG*3/16; *(--ptr2)+= dR*3/16; ptr2+=3; }
libvips/cimg/CImg.h:                if (x<dimx()-1) { ptr2+=3; *(ptr2++)+= dR/16; *(ptr2++)+= dG/16; *ptr2+= dB/16; ptr2-=5; }
libvips/cimg/CImg.h:    /** This is the in-place version of get_RGBtoLUT(). **/
libvips/cimg/CImg.h:    /** This is the in-place version of get_RGBtoLUT(). **/
libvips/cimg/CImg.h:    //! In-place version of get_LUTtoRGB().
libvips/cimg/CImg.h:    //! In-place version of get_LUTroRGB().
libvips/cimg/CImg.h:          if (v==m) { h=-1; s=0; } else {
libvips/cimg/CImg.h:              f = (R==m)?(G-B):((G==m)?(B-R):(R-G)),
libvips/cimg/CImg.h:            h = (i-f/(v-m));
libvips/cimg/CImg.h:            s = (v-m)/v;
libvips/cimg/CImg.h:            if (h>=6.0f) h-=6.0f;
libvips/cimg/CImg.h:              f = (i&1)?(H-i):(1.0f-H+i),
libvips/cimg/CImg.h:              m = V*(1.0f-S),
libvips/cimg/CImg.h:              n = V*(1.0f-S*f);
libvips/cimg/CImg.h:            Cb = ((-38*R-74*G+112*B+128)>>8) + 128,
libvips/cimg/CImg.h:            Cr = ((112*R-94*G-18*B+128)>>8) + 128;
libvips/cimg/CImg.h:            Y  = (int)((*this)(x, y, z, 0)-16),
libvips/cimg/CImg.h:            Cb = (int)((*this)(x, y, z, 1)-128),
libvips/cimg/CImg.h:            Cr = (int)((*this)(x, y, z, 2)-128);
libvips/cimg/CImg.h:            G = ((298*Y - 100*Cb - 208*Cr + 128) >> 8 ),
libvips/cimg/CImg.h:          (*this)(x,y,z,1) = (T)(0.492*(B-Y));
libvips/cimg/CImg.h:          (*this)(x,y,z,2) = (T)(0.877*(R-Y));
libvips/cimg/CImg.h:          (*this)(x,y,z,1) = (T)((Y - 0.395*U - 0.581*V)*255.0f);
libvips/cimg/CImg.h:          (*this)(x,y,z,0) = (T)(3.240479*X  - 1.537150*Y - 0.498535*Z);
libvips/cimg/CImg.h:          (*this)(x,y,z,1) = (T)(-0.969256*X + 1.875992*Y + 0.041556*Z);
libvips/cimg/CImg.h:          (*this)(x,y,z,2) = (T)(0.055648*X  - 0.204043*Y + 1.057311*Z);
libvips/cimg/CImg.h:#define cimg_Labfi(x) ((x)>=0.206893?((x)*(x)*(x)):(((x)-16.0/116.0)/7.787))
libvips/cimg/CImg.h:          (*this)(x,y,z,0) = (T)(116*fY-16);
libvips/cimg/CImg.h:          (*this)(x,y,z,1) = (T)(500*(fX-fY));
libvips/cimg/CImg.h:          (*this)(x,y,z,2) = (T)(200*(fY-fZ));
libvips/cimg/CImg.h:            cZ = pY-b/200,
libvips/cimg/CImg.h:          (*this)(x,y,z,2) = (T)((1-px-py)*Y/ny);
libvips/cimg/CImg.h:    //! In-place version of get_RGBtoLab().
libvips/cimg/CImg.h:    //! In-place version of get_LabtoRGb().
libvips/cimg/CImg.h:    //! In-place version of get_RGBtoxyY().
libvips/cimg/CImg.h:    //! In-place version of get_xyYtoRGB().
libvips/cimg/CImg.h:    //-------------------
libvips/cimg/CImg.h:    //-------------------
libvips/cimg/CImg.h:    // Should be used only by member functions. Not an user-friendly function.
libvips/cimg/CImg.h:    // Pre-requisites : x0<x1, y-coordinate is valid, col is valid.
libvips/cimg/CImg.h:        copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:        const int nx0 = cimg::max(x0,0), nx1 = cimg::min(x1,(int)width-1), dx = nx1-nx0;
libvips/cimg/CImg.h:            int off = whz-dx-1;
libvips/cimg/CImg.h:              for (int x=dx; x>=0; x--) *(ptrd++)=val;
libvips/cimg/CImg.h:            col-=dim;
libvips/cimg/CImg.h:            int off = whz-dx-1;
libvips/cimg/CImg.h:              for (int x=dx; x>=0; x--) { *ptrd = (T)(val*nopacity + *ptrd*copacity); ptrd++; }
libvips/cimg/CImg.h:            col-=dim;
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the vector-valued pixel to plot.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the vector-valued pixel to plot.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the vector-valued pixel to plot.
libvips/cimg/CImg.h:          const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the vector-valued pixel to plot.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the vector-valued pixel to plot.
libvips/cimg/CImg.h:    //! Draw a 2D colored line in the instance image, at coordinates (\c x0,\c y0)-(\c x1,\c y1).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the starting point of the line.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the starting point of the line.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the ending point of the line.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the ending point of the line.
libvips/cimg/CImg.h:        if (nx0<0) { ny0-=nx0*(ny1-ny0)/(nx1-nx0); nx0=0; }
libvips/cimg/CImg.h:        if (nx1>=dimx()) { ny1+=(nx1-dimx())*(ny0-ny1)/(nx1-nx0); nx1=dimx()-1;}
libvips/cimg/CImg.h:        if (ny0<0) { nx0-=ny0*(nx1-nx0)/(ny1-ny0); ny0=0; }
libvips/cimg/CImg.h:        if (ny1>=dimy()) { nx1+=(ny1-dimy())*(nx0-nx1)/(ny1-ny0); ny1=dimy()-1;}
libvips/cimg/CImg.h:        const bool steep = (ny1-ny0)>cimg::abs(nx1-nx0);
libvips/cimg/CImg.h:          dx = nx1-nx0, dy = cimg::abs(ny1-ny0),
libvips/cimg/CImg.h:          offy = (ny0<ny1?1:-1)*(steep?1:width);
libvips/cimg/CImg.h:            if (((error+=dy)<<1)>=dx) { ptrd+=offy; error-=dx; }
libvips/cimg/CImg.h:            if (pattern) hatch=(hatch<<1)+(hatch>>(sizeof(unsigned int)*8-1));
libvips/cimg/CImg.h:          const float nopacity = cimg::abs(opacity), copacity=1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:              if (((error+=dy)<<1)>=dx) { ptrd+=offy; error-=dx; }
libvips/cimg/CImg.h:              if (pattern) hatch=(hatch<<1)+(hatch>>(sizeof(unsigned int)*8-1));
libvips/cimg/CImg.h:    //! Draw a 3D colored line in the instance image, at coordinates (\c x0,\c y0,\c z0)-(\c x1,\c y1,\c z1).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the starting point of the line.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the starting point of the line.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the starting point of the line.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the ending point of the line.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the ending point of the line.
libvips/cimg/CImg.h:       \param z1 = Z-coordinate of the ending point of the line.
libvips/cimg/CImg.h:        if (nx0<0) { const int D=1+nx1-nx0; ny0-=nx0*(1+ny1-ny0)/D; nz0-=nx0*(1+nz1-nz0)/D; nx0=0; }
libvips/cimg/CImg.h:        if (nx1>=dimx()) { const int d=nx1-dimx(), D=1+nx1-nx0; ny1+=d*(1+ny0-ny1)/D; nz1+=d*(1+nz0-nz1)/D; nx1=dimx()-1;}
libvips/cimg/CImg.h:        if (ny0<0) { const int D=1+ny1-ny0; nx0-=ny0*(1+nx1-nx0)/D; nz0-=ny0*(1+nz1-nz0)/D; ny0=0; }
libvips/cimg/CImg.h:        if (ny1>=dimy()) { const int d=ny1-dimy(), D=1+ny1-ny0; nx1+=d*(1+nx0-nx1)/D; nz1+=d*(1+nz0-nz1)/D; ny1=dimy()-1;}
libvips/cimg/CImg.h:        if (nz0<0) { const int D=1+nz1-nz0; nx0-=nz0*(1+nx1-nx0)/D; ny0-=nz0*(1+ny1-ny0)/D; nz0=0; }
libvips/cimg/CImg.h:        if (nz1>=dimz()) { const int d=nz1-dimz(), D=1+nz1-nz0; nx1+=d*(1+nx0-nx1)/D; ny1+=d*(1+ny0-ny1)/D; nz1=dimz()-1;}
libvips/cimg/CImg.h:        const unsigned int dmax = cimg::max(cimg::abs(nx1-nx0),cimg::abs(ny1-ny0),nz1-nz0), whz = width*height*depth;
libvips/cimg/CImg.h:        const float px = (nx1-nx0)/(float)dmax, py = (ny1-ny0)/(float)dmax, pz = (nz1-nz0)/(float)dmax;
libvips/cimg/CImg.h:            col-=dim;
libvips/cimg/CImg.h:          x+=px; y+=py; z+=pz; if (pattern) hatch=(hatch<<1)+(hatch>>(sizeof(unsigned int)*8-1));
libvips/cimg/CImg.h:          const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:              col-=dim;
libvips/cimg/CImg.h:            x+=px; y+=py; z+=pz; if (pattern) hatch=(hatch<<1)+(hatch>>(sizeof(unsigned int)*8-1));
libvips/cimg/CImg.h:    //! Draw a 2D textured line in the instance image, at coordinates (\c x0,\c y0)-(\c x1,\c y1).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the starting point of the line.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the starting point of the line.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the ending point of the line.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the ending point of the line.
libvips/cimg/CImg.h:       \param tx0 = X-coordinate of the starting point of the texture.
libvips/cimg/CImg.h:       \param ty0 = Y-coordinate of the starting point of the texture.
libvips/cimg/CImg.h:       \param tx1 = X-coordinate of the ending point of the texture.
libvips/cimg/CImg.h:       \param ty1 = Y-coordinate of the ending point of the texture.
libvips/cimg/CImg.h:        if (nx0<0) { const int D=nx1-nx0; ny0-=nx0*(ny1-ny0)/D; ntx0-=nx0*(ntx1-ntx0)/D; nty0-=nx0*(nty1-nty0)/D; nx0=0; }
libvips/cimg/CImg.h:        if (nx1>=dimx()) { const int d=nx1-dimx(),D=nx1-nx0; ny1+=d*(ny0-ny1)/D; ntx1+=d*(ntx0-ntx1)/D; nty1+=d*(nty0-nty1)/D; nx1=dimx()-1; }
libvips/cimg/CImg.h:        if (ny0<0) { const int D=ny1-ny0; nx0-=ny0*(nx1-nx0)/D; ntx0-=ny0*(ntx1-ntx0)/D; nty0-=ny0*(nty1-nty0)/D; ny0=0; }
libvips/cimg/CImg.h:        if (ny1>=dimy()) { const int d=ny1-dimy(),D=ny1-ny0; nx1+=d*(nx0-nx1)/D; ntx1+=d*(ntx0-ntx1)/D; nty1+=d*(nty0-nty1)/D; ny1=dimy()-1; }
libvips/cimg/CImg.h:        const unsigned int dmax = (unsigned int)cimg::max(cimg::abs(nx1-nx0),ny1-ny0),
libvips/cimg/CImg.h:        const float px = dmax?(nx1-nx0)/(float)dmax:0, py = dmax?(ny1-ny0)/(float)dmax:0,
libvips/cimg/CImg.h:          tpx = dmax?(ntx1-ntx0)/(float)dmax:0, tpy = dmax?(nty1-nty0)/(float)dmax:0;
libvips/cimg/CImg.h:          const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:    //! Draw a 2D colored arrow in the instance image, at coordinates (\c x0,\c y0)->(\c x1,\c y1).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the starting point of the arrow (tail).
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the starting point of the arrow (tail).
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the ending point of the arrow (head).
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the ending point of the arrow (head).
libvips/cimg/CImg.h:                     const float angle=30,const float length=-10,const unsigned int pattern=~0L,const float opacity=1) {
libvips/cimg/CImg.h:        const float u = (float)(x0-x1), v = (float)(y0-y1), sq = u*u+v*v,
libvips/cimg/CImg.h:          l = (length>=0)?length:-length*(float)std::sqrt(sq)/100;
libvips/cimg/CImg.h:          const double cl = std::cos(ang-deg), sl = std::sin(ang-deg), cr = std::cos(ang+deg), sr = std::sin(ang+deg);
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the sprite position in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the sprite position in the instance image.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the sprite position in the instance image.
libvips/cimg/CImg.h:       \param v0 = V-coordinate of the sprite position in the instance image.
libvips/cimg/CImg.h:          lX = sprite.dimx() - (x0+sprite.dimx()>dimx()?x0+sprite.dimx()-dimx():0) + (bx?x0:0),
libvips/cimg/CImg.h:          lY = sprite.dimy() - (y0+sprite.dimy()>dimy()?y0+sprite.dimy()-dimy():0) + (by?y0:0),
libvips/cimg/CImg.h:          lZ = sprite.dimz() - (z0+sprite.dimz()>dimz()?z0+sprite.dimz()-dimz():0) + (bz?z0:0),
libvips/cimg/CImg.h:          lV = sprite.dimv() - (v0+sprite.dimv()>dimv()?v0+sprite.dimv()-dimv():0) + (bv?v0:0);
libvips/cimg/CImg.h:        const t *ptrs = sprite.ptr()-(bx?x0:0)-(by?y0*sprite.dimx():0)+(bz?z0*sprite.dimx()*sprite.dimy():0)+
libvips/cimg/CImg.h:          offX = width-lX, soffX = sprite.width-lX,
libvips/cimg/CImg.h:          offY = width*(height-lY), soffY = sprite.width*(sprite.height-lY),
libvips/cimg/CImg.h:          offZ = width*height*(depth-lZ), soffZ = sprite.width*sprite.height*(sprite.depth-lZ);
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:          lX = sprite.dimx() - (x0+sprite.dimx()>dimx()?x0+sprite.dimx()-dimx():0) + (bx?x0:0),
libvips/cimg/CImg.h:          lY = sprite.dimy() - (y0+sprite.dimy()>dimy()?y0+sprite.dimy()-dimy():0) + (by?y0:0),
libvips/cimg/CImg.h:          lZ = sprite.dimz() - (z0+sprite.dimz()>dimz()?z0+sprite.dimz()-dimz():0) + (bz?z0:0),
libvips/cimg/CImg.h:          lV = sprite.dimv() - (v0+sprite.dimv()>dimv()?v0+sprite.dimv()-dimv():0) + (bv?v0:0);
libvips/cimg/CImg.h:        const T *ptrs = sprite.ptr()-(bx?x0:0)-(by?y0*sprite.dimx():0)+(bz?z0*sprite.dimx()*sprite.dimy():0)+
libvips/cimg/CImg.h:          offX = width-lX, soffX = sprite.width-lX,
libvips/cimg/CImg.h:          offY = width*(height-lY), soffY = sprite.width*(sprite.height-lY),
libvips/cimg/CImg.h:          offZ = width*height*(depth-lZ), soffZ = sprite.width*sprite.height*(sprite.depth-lZ),
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the sprite position in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the sprite position in the instance image.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the sprite position in the instance image.
libvips/cimg/CImg.h:       \param v0 = V-coordinate of the sprite position in the instance image.
libvips/cimg/CImg.h:          lX = sprite.dimx() - (x0+sprite.dimx()>dimx()?x0+sprite.dimx()-dimx():0) + (bx?x0:0),
libvips/cimg/CImg.h:          lY = sprite.dimy() - (y0+sprite.dimy()>dimy()?y0+sprite.dimy()-dimy():0) + (by?y0:0),
libvips/cimg/CImg.h:          lZ = sprite.dimz() - (z0+sprite.dimz()>dimz()?z0+sprite.dimz()-dimz():0) + (bz?z0:0),
libvips/cimg/CImg.h:          lV = sprite.dimv() - (v0+sprite.dimv()>dimv()?v0+sprite.dimv()-dimv():0) + (bv?v0:0);
libvips/cimg/CImg.h:        const int coff = -(bx?x0:0)-(by?y0*mask.dimx():0)-(bz?z0*mask.dimx()*mask.dimy():0)-
libvips/cimg/CImg.h:          offX = width-lX, soffX = sprite.width-lX,
libvips/cimg/CImg.h:          offY = width*(height-lY), soffY = sprite.width*(sprite.height-lY),
libvips/cimg/CImg.h:          offZ = width*height*(depth-lZ), soffZ = sprite.width*sprite.height*(sprite.depth-lZ);
libvips/cimg/CImg.h:            ptrm = mask.data + (ptrm - mask.data)%ssize;
libvips/cimg/CImg.h:                    nopacity = cimg::abs(mopacity), copacity = mask_valmax-cimg::max(mopacity,0.0f);
libvips/cimg/CImg.h:    //! Draw a 4D filled rectangle in the instance image, at coordinates (\c x0,\c y0,\c z0,\c v0)-(\c x1,\c y1,\c z1,\c v1).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the upper-left rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param v0 = V-coordinate of the upper-left rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param z1 = Z-coordinate of the lower-right rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param v1 = V-coordinate of the lower-right rectangle corner in the instance image.
libvips/cimg/CImg.h:          lX = (1+nx1-nx0) + (nx1>=dimx()?dimx()-1-nx1:0) + (nx0<0?nx0:0),
libvips/cimg/CImg.h:          lY = (1+ny1-ny0) + (ny1>=dimy()?dimy()-1-ny1:0) + (ny0<0?ny0:0),
libvips/cimg/CImg.h:          lZ = (1+nz1-nz0) + (nz1>=dimz()?dimz()-1-nz1:0) + (nz0<0?nz0:0),
libvips/cimg/CImg.h:          lV = (1+nv1-nv0) + (nv1>=dimv()?dimv()-1-nv1:0) + (nv0<0?nv0:0);
libvips/cimg/CImg.h:        const unsigned int offX = width-lX, offY = width*(height-lY), offZ = width*height*(depth-lZ);
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:    //! Draw a 3D filled colored rectangle in the instance image, at coordinates (\c x0,\c y0,\c z0)-(\c x1,\c y1,\c z1).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param z0 = Z-coordinate of the upper-left rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param z1 = Z-coordinate of the lower-right rectangle corner in the instance image.
libvips/cimg/CImg.h:    //! Draw a 2D filled colored rectangle in the instance image, at coordinates (\c x0,\c y0)-(\c x1,\c y1).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right rectangle corner in the instance image.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right rectangle corner in the instance image.
libvips/cimg/CImg.h:      draw_rectangle(x0,y0,0,x1,y1,depth-1,color,opacity);
libvips/cimg/CImg.h:    //! Draw a 2D filled colored triangle in the instance image, at coordinates (\c x0,\c y0)-(\c x1,\c y1)-(\c x2,\c y2).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param x2 = X-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param y2 = Y-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:        p1 = (ny1-ny0)?(nx1-nx0)/(float)(ny1-ny0):(nx1-nx0),
libvips/cimg/CImg.h:        p2 = (ny2-ny0)?(nx2-nx0)/(float)(ny2-ny0):(nx2-nx0),
libvips/cimg/CImg.h:        p3 = (ny2-ny1)?(nx2-nx1)/(float)(ny2-ny1):(nx2-nx1);
libvips/cimg/CImg.h:      if (ny0<0) { xleft-=ny0*pleft; xright-=ny0*pright; }
libvips/cimg/CImg.h:      if (p1<p2) { xleft=(float)nx1;  pleft=p3;  if (ny1<0) xleft-=ny1*pleft; }
libvips/cimg/CImg.h:      else       { xright=(float)nx1; pright=p3; if (ny1<0) xright-=ny1*pright; }
libvips/cimg/CImg.h:      const int yb = ny2>=dimy()?height-1:ny2;
libvips/cimg/CImg.h:    //! Draw a 2D Gouraud-filled triangle in the instance image, at coordinates (\c x0,\c y0)-(\c x1,\c y1)-(\c x2,\c y2).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param x2 = X-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param y2 = Y-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:          p1 = (ny1-ny0)?(nx1-nx0)/(float)(ny1-ny0):(nx1-nx0),
libvips/cimg/CImg.h:          p2 = (ny2-ny0)?(nx2-nx0)/(float)(ny2-ny0):(nx2-nx0),
libvips/cimg/CImg.h:          p3 = (ny2-ny1)?(nx2-nx1)/(float)(ny2-ny1):(nx2-nx1),
libvips/cimg/CImg.h:          cp1 = (ny1-ny0)?(nc1-nc0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          cp2 = (ny2-ny0)?(nc2-nc0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          cp3 = (ny2-ny1)?(nc2-nc1)/(float)(ny2-ny1):0;
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:        if (ny0<0) { xleft-=ny0*pleft; xright-=ny0*pright; cleft-=ny0*cpleft; cright-=ny0*cpright; }
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            cp = dx?(cright-cleft)/dx:0,
libvips/cimg/CImg.h:            ci = (xleft>=0)?cleft:(cleft-xleft*cp);
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:          if (ny1<0) { xleft-=ny1*pleft; cleft-=ny1*cpleft; }
libvips/cimg/CImg.h:          if (ny1<0) { xright-=ny1*pright; cright-=ny1*cpright; }
libvips/cimg/CImg.h:        const int yb = ny2>=dimy()?(height-1):ny2;
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            cp = dx?(cright-cleft)/dx:0,
libvips/cimg/CImg.h:            ci = (xleft>=0)?cleft:(cleft-xleft*cp);
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:    //! Draw a 2D phong-shaded triangle in the instance image, at coordinates (\c x0,\c y0)-(\c x1,\c y1)-(\c x2,\c y2).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param x2 = X-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param y2 = Y-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param lx0 = X-coordinate of the first corner in the light image.
libvips/cimg/CImg.h:       \param ly0 = Y-coordinate of the first corner in the light image.
libvips/cimg/CImg.h:       \param lx1 = X-coordinate of the second corner in the light image.
libvips/cimg/CImg.h:       \param ly1 = Y-coordinate of the second corner in the light image.
libvips/cimg/CImg.h:       \param lx2 = X-coordinate of the third corner in the light image.
libvips/cimg/CImg.h:       \param ly2 = Y-coordinate of the third corner in the light image.
libvips/cimg/CImg.h:          p1 = (ny1-ny0)?(nx1-nx0)/(float)(ny1-ny0):(nx1-nx0),
libvips/cimg/CImg.h:          p2 = (ny2-ny0)?(nx2-nx0)/(float)(ny2-ny0):(nx2-nx0),
libvips/cimg/CImg.h:          p3 = (ny2-ny1)?(nx2-nx1)/(float)(ny2-ny1):(nx2-nx1),
libvips/cimg/CImg.h:          lpx1 = (ny1-ny0)?(nlx1-nlx0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          lpy1 = (ny1-ny0)?(nly1-nly0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          lpx2 = (ny2-ny0)?(nlx2-nlx0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          lpy2 = (ny2-ny0)?(nly2-nly0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          lpx3 = (ny2-ny1)?(nlx2-nlx1)/(float)(ny2-ny1):0,
libvips/cimg/CImg.h:          lpy3 = (ny2-ny1)?(nly2-nly1)/(float)(ny2-ny1):0;
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:        if (ny0<0) { xleft-=ny0*pleft; xright-=ny0*pright; lxleft-=ny0*lpxleft; lyleft-=ny0*lpyleft;
libvips/cimg/CImg.h:        lxright-=ny0*lpxright; lyright-=ny0*lpyright; }
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            lpx = dx?((int)lxright-(int)lxleft)/(float)dx:0,
libvips/cimg/CImg.h:            lpy = dx?((int)lyright-(int)lyleft)/(float)dx:0,
libvips/cimg/CImg.h:            lxi = (float)((xleft>=0)?(int)lxleft:(int)(lxleft-(int)xleft*lpx)),
libvips/cimg/CImg.h:            lyi = (float)((xleft>=0)?(int)lyleft:(int)(lyleft-(int)xleft*lpy));
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:          if (ny1<0) { xleft-=ny1*pleft; lxleft-=ny1*lpxleft; lyleft-=ny1*lpyleft; }
libvips/cimg/CImg.h:          if (ny1<0) { xright-=ny1*pright; lxright-=ny1*lpxright; lyright-=ny1*lpyright; }
libvips/cimg/CImg.h:        const int yb = ny2>=dimy()?(height-1):ny2;
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            lpx = dx?((int)lxright-(int)lxleft)/(float)dx:0,
libvips/cimg/CImg.h:            lpy = dx?((int)lyright-(int)lyleft)/(float)dx:0,
libvips/cimg/CImg.h:            lxi = (float)((xleft>=0)?(int)lxleft:(int)(lxleft-(int)xleft*lpx)),
libvips/cimg/CImg.h:            lyi = (float)((xleft>=0)?(int)lyleft:(int)(lyleft-(int)xleft*lpy));
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:    //! Draw a 2D textured triangle in the instance image, at coordinates (\c x0,\c y0)-(\c x1,\c y1)-(\c x2,\c y2).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param x2 = X-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param y2 = Y-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param tx0 = X-coordinate of the first corner in the texture image.
libvips/cimg/CImg.h:       \param ty0 = Y-coordinate of the first corner in the texture image.
libvips/cimg/CImg.h:       \param tx1 = X-coordinate of the second corner in the texture image.
libvips/cimg/CImg.h:       \param ty1 = Y-coordinate of the second corner in the texture image.
libvips/cimg/CImg.h:       \param tx2 = X-coordinate of the third corner in the texture image.
libvips/cimg/CImg.h:       \param ty2 = Y-coordinate of the third corner in the texture image.
libvips/cimg/CImg.h:          p1 = (ny1-ny0)?(nx1-nx0)/(float)(ny1-ny0):(nx1-nx0),
libvips/cimg/CImg.h:          p2 = (ny2-ny0)?(nx2-nx0)/(float)(ny2-ny0):(nx2-nx0),
libvips/cimg/CImg.h:          p3 = (ny2-ny1)?(nx2-nx1)/(float)(ny2-ny1):(nx2-nx1),
libvips/cimg/CImg.h:          tpx1 = (ny1-ny0)?(ntx1-ntx0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          tpy1 = (ny1-ny0)?(nty1-nty0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          tpx2 = (ny2-ny0)?(ntx2-ntx0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          tpy2 = (ny2-ny0)?(nty2-nty0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          tpx3 = (ny2-ny1)?(ntx2-ntx1)/(float)(ny2-ny1):0,
libvips/cimg/CImg.h:          tpy3 = (ny2-ny1)?(nty2-nty1)/(float)(ny2-ny1):0;
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:        if (ny0<0) { xleft-=ny0*pleft; xright-=ny0*pright; txleft-=ny0*tpxleft; tyleft-=ny0*tpyleft;
libvips/cimg/CImg.h:        txright-=ny0*tpxright; tyright-=ny0*tpyright; }
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            tpx = dx?((int)txright-(int)txleft)/(float)dx:0,
libvips/cimg/CImg.h:            tpy = dx?((int)tyright-(int)tyleft)/(float)dx:0,
libvips/cimg/CImg.h:            txi = (float)((xleft>=0)?(int)txleft:(int)(txleft-(int)xleft*tpx)),
libvips/cimg/CImg.h:            tyi = (float)((xleft>=0)?(int)tyleft:(int)(tyleft-(int)xleft*tpy));
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:          if (ny1<0) { xleft-=ny1*pleft; txleft-=ny1*tpxleft; tyleft-=ny1*tpyleft; }
libvips/cimg/CImg.h:          if (ny1<0) { xright-=ny1*pright; txright-=ny1*tpxright; tyright-=ny1*tpyright; }
libvips/cimg/CImg.h:        const int yb = ny2>=dimy()?(height-1):ny2;
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            tpx = dx?((int)txright-(int)txleft)/(float)dx:0,
libvips/cimg/CImg.h:            tpy = dx?((int)tyright-(int)tyleft)/(float)dx:0,
libvips/cimg/CImg.h:            txi = (float)((xleft>=0)?(int)txleft:(int)(txleft-(int)xleft*tpx)),
libvips/cimg/CImg.h:            tyi = (float)((xleft>=0)?(int)tyleft:(int)(tyleft-(int)xleft*tpy));
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:    //! Draw a 2D textured triangle with Gouraud-Shading in the instance image, at coordinates (\c x0,\c y0)-(\c x1,\c y1)-(\c x2,\c y2).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param x2 = X-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param y2 = Y-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param tx0 = X-coordinate of the first corner in the texture image.
libvips/cimg/CImg.h:       \param ty0 = Y-coordinate of the first corner in the texture image.
libvips/cimg/CImg.h:       \param tx1 = X-coordinate of the second corner in the texture image.
libvips/cimg/CImg.h:       \param ty1 = Y-coordinate of the second corner in the texture image.
libvips/cimg/CImg.h:       \param tx2 = X-coordinate of the third corner in the texture image.
libvips/cimg/CImg.h:       \param ty2 = Y-coordinate of the third corner in the texture image.
libvips/cimg/CImg.h:          p1 = (ny1-ny0)?(nx1-nx0)/(float)(ny1-ny0):(nx1-nx0),
libvips/cimg/CImg.h:          p2 = (ny2-ny0)?(nx2-nx0)/(float)(ny2-ny0):(nx2-nx0),
libvips/cimg/CImg.h:          p3 = (ny2-ny1)?(nx2-nx1)/(float)(ny2-ny1):(nx2-nx1),
libvips/cimg/CImg.h:          tpx1 = (ny1-ny0)?(ntx1-ntx0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          tpy1 = (ny1-ny0)?(nty1-nty0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          tpx2 = (ny2-ny0)?(ntx2-ntx0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          tpy2 = (ny2-ny0)?(nty2-nty0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          tpx3 = (ny2-ny1)?(ntx2-ntx1)/(float)(ny2-ny1):0,
libvips/cimg/CImg.h:          tpy3 = (ny2-ny1)?(nty2-nty1)/(float)(ny2-ny1):0,
libvips/cimg/CImg.h:          cp1 = (ny1-ny0)?(nc1-nc0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          cp2 = (ny2-ny0)?(nc2-nc0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          cp3 = (ny2-ny1)?(nc2-nc1)/(float)(ny2-ny1):0;
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:          xleft-=ny0*pleft; xright-=ny0*pright; txleft-=ny0*tpxleft; tyleft-=ny0*tpyleft; cleft-=ny0*cpleft;
libvips/cimg/CImg.h:          txright-=ny0*tpxright; tyright-=ny0*tpyright; cright-=ny0*cpright;
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            tpx = dx?((int)txright-(int)txleft)/(float)dx:0,
libvips/cimg/CImg.h:            tpy = dx?((int)tyright-(int)tyleft)/(float)dx:0,
libvips/cimg/CImg.h:            cp = dx?(cright-cleft)/dx:0,
libvips/cimg/CImg.h:            txi = (float)((xleft>=0)?(int)txleft:(int)(txleft-(int)xleft*tpx)),
libvips/cimg/CImg.h:            tyi = (float)((xleft>=0)?(int)tyleft:(int)(tyleft-(int)xleft*tpy)),
libvips/cimg/CImg.h:            ci = (xleft>=0)?cleft:(cleft-xleft*cp);
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:          if (ny1<0) { xleft-=ny1*pleft; txleft-=ny1*tpxleft; tyleft-=ny1*tpyleft; cleft-=ny1*cpleft; }
libvips/cimg/CImg.h:          if (ny1<0) { xright-=ny1*pright; txright-=ny1*tpxright; tyright-=ny1*tpyright; cright-=ny1*cpright; }
libvips/cimg/CImg.h:        const int yb = ny2>=dimy()?(height-1):ny2;
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            tpx = dx?((int)txright-(int)txleft)/(float)dx:0,
libvips/cimg/CImg.h:            tpy = dx?((int)tyright-(int)tyleft)/(float)dx:0,
libvips/cimg/CImg.h:            cp = dx?(cright-cleft)/dx:0,
libvips/cimg/CImg.h:            txi = (float)((xleft>=0)?(int)txleft:(int)(txleft-(int)xleft*tpx)),
libvips/cimg/CImg.h:            tyi = (float)((xleft>=0)?(int)tyleft:(int)(tyleft-(int)xleft*tpy)),
libvips/cimg/CImg.h:            ci = (xleft>=0)?cleft:(cleft-xleft*cp);
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:    //! Draw a phong-shaded 2D textured triangle in the instance image, at coordinates (\c x0,\c y0)-(\c x1,\c y1)-(\c x2,\c y2).
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the first corner in the instance image.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the second corner in the instance image.
libvips/cimg/CImg.h:       \param x2 = X-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param y2 = Y-coordinate of the third corner in the instance image.
libvips/cimg/CImg.h:       \param tx0 = X-coordinate of the first corner in the texture image.
libvips/cimg/CImg.h:       \param ty0 = Y-coordinate of the first corner in the texture image.
libvips/cimg/CImg.h:       \param tx1 = X-coordinate of the second corner in the texture image.
libvips/cimg/CImg.h:       \param ty1 = Y-coordinate of the second corner in the texture image.
libvips/cimg/CImg.h:       \param tx2 = X-coordinate of the third corner in the texture image.
libvips/cimg/CImg.h:       \param ty2 = Y-coordinate of the third corner in the texture image.
libvips/cimg/CImg.h:       \param lx0 = X-coordinate of the first corner in the light image.
libvips/cimg/CImg.h:       \param ly0 = Y-coordinate of the first corner in the light image.
libvips/cimg/CImg.h:       \param lx1 = X-coordinate of the second corner in the light image.
libvips/cimg/CImg.h:       \param ly1 = Y-coordinate of the second corner in the light image.
libvips/cimg/CImg.h:       \param lx2 = X-coordinate of the third corner in the light image.
libvips/cimg/CImg.h:       \param ly2 = Y-coordinate of the third corner in the light image.
libvips/cimg/CImg.h:          p1 = (ny1-ny0)?(nx1-nx0)/(float)(ny1-ny0):(nx1-nx0),
libvips/cimg/CImg.h:          p2 = (ny2-ny0)?(nx2-nx0)/(float)(ny2-ny0):(nx2-nx0),
libvips/cimg/CImg.h:          p3 = (ny2-ny1)?(nx2-nx1)/(float)(ny2-ny1):(nx2-nx1),
libvips/cimg/CImg.h:          tpx1 = (ny1-ny0)?(ntx1-ntx0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          tpy1 = (ny1-ny0)?(nty1-nty0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          tpx2 = (ny2-ny0)?(ntx2-ntx0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          tpy2 = (ny2-ny0)?(nty2-nty0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          tpx3 = (ny2-ny1)?(ntx2-ntx1)/(float)(ny2-ny1):0,
libvips/cimg/CImg.h:          tpy3 = (ny2-ny1)?(nty2-nty1)/(float)(ny2-ny1):0,
libvips/cimg/CImg.h:          lpx1 = (ny1-ny0)?(nlx1-nlx0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          lpy1 = (ny1-ny0)?(nly1-nly0)/(float)(ny1-ny0):0,
libvips/cimg/CImg.h:          lpx2 = (ny2-ny0)?(nlx2-nlx0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          lpy2 = (ny2-ny0)?(nly2-nly0)/(float)(ny2-ny0):0,
libvips/cimg/CImg.h:          lpx3 = (ny2-ny1)?(nlx2-nlx1)/(float)(ny2-ny1):0,
libvips/cimg/CImg.h:          lpy3 = (ny2-ny1)?(nly2-nly1)/(float)(ny2-ny1):0;
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:          xleft-=ny0*pleft; xright-=ny0*pright;
libvips/cimg/CImg.h:          txleft-=ny0*tpxleft; tyleft-=ny0*tpyleft; txright-=ny0*tpxright; tyright-=ny0*tpyright;
libvips/cimg/CImg.h:          lxleft-=ny0*lpxleft; lyleft-=ny0*lpyleft; lxright-=ny0*lpxright; lyright-=ny0*lpyright;
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            tpx = dx?((int)txright-(int)txleft)/(float)dx:0,
libvips/cimg/CImg.h:            tpy = dx?((int)tyright-(int)tyleft)/(float)dx:0,
libvips/cimg/CImg.h:            txi = (float)((xleft>=0)?(int)txleft:(int)(txleft-(int)xleft*tpx)),
libvips/cimg/CImg.h:            tyi = (float)((xleft>=0)?(int)tyleft:(int)(tyleft-(int)xleft*tpy)),
libvips/cimg/CImg.h:            lpx = dx?((int)lxright-(int)lxleft)/(float)dx:0,
libvips/cimg/CImg.h:            lpy = dx?((int)lyright-(int)lyleft)/(float)dx:0,
libvips/cimg/CImg.h:            lxi = (float)((xleft>=0)?(int)lxleft:(int)(lxleft-(int)xleft*lpx)),
libvips/cimg/CImg.h:            lyi = (float)((xleft>=0)?(int)lyleft:(int)(lyleft-(int)xleft*lpy));
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:          if (ny1<0) { xleft-=ny1*pleft; txleft-=ny1*tpxleft; tyleft-=ny1*tpyleft; lxleft-=ny1*lpxleft; lyleft-=ny1*lpyleft; }
libvips/cimg/CImg.h:          if (ny1<0) { xright-=ny1*pright; txright-=ny1*tpxright; tyright-=ny1*tpyright; lxright-=ny1*lpxright; lyright-=ny1*lpyright; }
libvips/cimg/CImg.h:        const int yb = ny2>=dimy()?(height-1):ny2;
libvips/cimg/CImg.h:          const int dx = (int)xright-(int)xleft;
libvips/cimg/CImg.h:            tpx = dx?((int)txright-(int)txleft)/(float)dx:0,
libvips/cimg/CImg.h:            tpy = dx?((int)tyright-(int)tyleft)/(float)dx:0,
libvips/cimg/CImg.h:            txi = (float)((xleft>=0)?(int)txleft:(int)(txleft-(int)xleft*tpx)),
libvips/cimg/CImg.h:            tyi = (float)((xleft>=0)?(int)tyleft:(int)(tyleft-(int)xleft*tpy)),
libvips/cimg/CImg.h:            lpx = dx?((int)lxright-(int)lxleft)/(float)dx:0,
libvips/cimg/CImg.h:            lpy = dx?((int)lyright-(int)lyleft)/(float)dx:0,
libvips/cimg/CImg.h:            lxi = (float)((xleft>=0)?(int)lxleft:(int)(lxleft-(int)xleft*lpx)),
libvips/cimg/CImg.h:            lyi = (float)((xleft>=0)?(int)lyleft:(int)(lyleft-(int)xleft*lpy));
libvips/cimg/CImg.h:          const int xmin=(xleft>=0)?(int)xleft:0, xmax=(xright<dimx())?(int)xright:(width-1);
libvips/cimg/CImg.h:            const int offx=whz-xmax+xmin-1;
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the ellipse center.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the ellipse center.
libvips/cimg/CImg.h:       \param ru = X-coordinate of the orientation vector related to the first radius.
libvips/cimg/CImg.h:       \param rv = Y-coordinate of the orientation vector related to the first radius.
libvips/cimg/CImg.h:          l1 = (float)std::pow(rmax/(nr1>0?nr1:1e-6),2),
libvips/cimg/CImg.h:          l2 = (float)std::pow(rmax/(nr2>0?nr2:1e-6),2),
libvips/cimg/CImg.h:          b = u*v*(l1-l2),
libvips/cimg/CImg.h:          yb = (int)std::sqrt(a*rmax*rmax/(a*c-b*b)),
libvips/cimg/CImg.h:          ymin = (y0-yb<0)?0:(y0-yb),
libvips/cimg/CImg.h:          ymax = (1+y0+yb>=dimy())?height-1:(1+y0+yb);
libvips/cimg/CImg.h:            Y = (float)(y-y0)+0.25f,
libvips/cimg/CImg.h:            delta = b*b*Y*Y-a*(c*Y*Y-rmax*rmax),
libvips/cimg/CImg.h:            fxmin = x0-(b*Y+sdelta)/a,
libvips/cimg/CImg.h:            fxmax = x0-(b*Y-sdelta)/a;
libvips/cimg/CImg.h:                if (xmin<oxmin) draw_scanline(xmin,oxmin-1,y,color,opacity);
libvips/cimg/CImg.h:                if (xmax<oxmax) draw_scanline(xmax,oxmax-1,y,color,opacity);
libvips/cimg/CImg.h:          if (pattern) hatch=(hatch<<1)+(hatch>>(sizeof(unsigned int)*8-1));
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the ellipse center.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the ellipse center.
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the circle center.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the circle center.
libvips/cimg/CImg.h:       \param text = a C-string containing the text to display.
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the text in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the text in the instance image.
libvips/cimg/CImg.h:        // If needed, pre-compute needed size of the image
libvips/cimg/CImg.h:       \param text = a C-string containing the text to display.
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the text in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the text in the instance image.
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the text in the instance image.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the text in the instance image.
libvips/cimg/CImg.h:       \param format = a 'printf'-style format, followed by arguments.
libvips/cimg/CImg.h:                      const unsigned int sampling=25, const float factor=-20,
libvips/cimg/CImg.h:          fact = -factor;
libvips/cimg/CImg.h:            } else draw_line((int)(x-0.5*u),(int)(y-0.5*v),(int)(x+0.5*u),(int)(y+0.5*v),color,~0L,opacity);
libvips/cimg/CImg.h:       \param color = a 2d image of dimv()-D vectors corresponding to the color of each arrow.
libvips/cimg/CImg.h:                        const unsigned int sampling=25, const float factor=-20,
libvips/cimg/CImg.h:          fact = -factor;
libvips/cimg/CImg.h:            } else draw_line((int)(x-0.5*u),(int)(y-0.5*v),(int)(x+0.5*u),(int)(y+0.5*v),color.get_vector_at(X,Y).data,~0L,opacity);
libvips/cimg/CImg.h:                      - 0 = Plot using linear interpolation (segments).
libvips/cimg/CImg.h:                      - 1 = Plot with bars.
libvips/cimg/CImg.h:                      - 2 = Plot using cubic interpolation (3-polynomials).
libvips/cimg/CImg.h:       \param ymin = lower bound of the y-range.
libvips/cimg/CImg.h:       \param ymax = upper bound of the y-range.
libvips/cimg/CImg.h:         - if \c ymin==ymax==0, the y-range is computed automatically from the input sample.
libvips/cimg/CImg.h:        if (st.min==st.max) { st.min--; st.max++; }
libvips/cimg/CImg.h:        const float ca = height>1?(float)(st.max-st.min)/(height-1):0, cb = (float)st.min;
libvips/cimg/CImg.h:        const int Y0 = (int)(-cb/ca);
libvips/cimg/CImg.h:          const int Y = (int)((data[off]-cb)/ca);
libvips/cimg/CImg.h:            if (off>0) draw_line((int)((off-1)*width/data.size()),pY,(int)(off*width/data.size()),Y,color,~0L,opacity);
libvips/cimg/CImg.h:            const unsigned int X = off*width/data.size(), nX = (off+1)*width/data.size()-1;
libvips/cimg/CImg.h:          const CImg<t> ndata = data.get_shared_points(0,data.size()-1);
libvips/cimg/CImg.h:            const int Y = (int)((ndata.cubic_pix1d((float)x*ndata.width/width)-cb)/ca);
libvips/cimg/CImg.h:       \param x0 = lower bound of the x-range.
libvips/cimg/CImg.h:       \param x1 = upper bound of the x-range.
libvips/cimg/CImg.h:       \param y = Y-coordinate of the horizontal axis in the instance image.
libvips/cimg/CImg.h:                                         const int precision=-1, const float opacity=1.0f) {
libvips/cimg/CImg.h:        int siz = (int)xvalues.size()-1;
libvips/cimg/CImg.h:        if (siz<=0) draw_line(0,y,width-1,y,color,~0L,opacity);
libvips/cimg/CImg.h:          if (xvalues[0]<xvalues[siz]) draw_arrow(0,y,width-1,y,color,30,5,~0L,opacity);
libvips/cimg/CImg.h:          else draw_arrow(width-1,y,0,y,color,30,5,~0L,opacity);
libvips/cimg/CImg.h:          const int yt = (y+14)<dimy()?(y+3):(y-14);
libvips/cimg/CImg.h:            const int xi=(int)(x*(width-1)/siz), xt = xi-(int)std::strlen(txt)*3;
libvips/cimg/CImg.h:            draw_point(xi,y-1,color,opacity).draw_point(xi,y+1,color,opacity).
libvips/cimg/CImg.h:                                         const int precision=-1, const float opacity=1.0f) {
libvips/cimg/CImg.h:        int siz = (int)yvalues.size()-1;
libvips/cimg/CImg.h:        if (siz<=0) draw_line(x,0,x,height-1,color,~0L,opacity);
libvips/cimg/CImg.h:          if (yvalues[0]<yvalues[siz]) draw_arrow(x,0,x,height-1,color,30,5,~0L,opacity);
libvips/cimg/CImg.h:          else draw_arrow(x,height-1,x,0,color,30,5,~0L,opacity);
libvips/cimg/CImg.h:              yi = (int)(y*(height-1)/siz),
libvips/cimg/CImg.h:              tmp = yi-5,
libvips/cimg/CImg.h:              nyi = tmp<0?0:(tmp>=(int)height-11?(int)height-11:tmp),
libvips/cimg/CImg.h:              xt = x-(int)std::strlen(txt)*7;
libvips/cimg/CImg.h:            draw_point(x-1,yi,color,opacity).draw_point(x+1,yi,color,opacity);
libvips/cimg/CImg.h:                                                       const int precisionx=-1, const int precisiony=-1,
libvips/cimg/CImg.h:        const int sizx = (int)xvalues.size()-1, wm1 = (int)(width)-1;
libvips/cimg/CImg.h:            if (nx*ox<=0) { draw_axis(nx==0?x:x-1,yvalues,color,precisiony,opacity); break; }
libvips/cimg/CImg.h:        const int sizy = (int)yvalues.size()-1, hm1 = (int)(height)-1;
libvips/cimg/CImg.h:            if (ny*oy<=0) { draw_axis(xvalues,ny==0?y:y-1,color,precisionx,opacity); break; }
libvips/cimg/CImg.h:                                                       const int subdivisionx=-60, const int subdivisiony=-60,
libvips/cimg/CImg.h:                                                       const int precisionx=-1, const int precisiony=-1,
libvips/cimg/CImg.h:      return draw_axis(CImg<tx>::sequence(subdivisionx>0?subdivisionx:1-(int)width/subdivisionx,x0,x1),
libvips/cimg/CImg.h:                       CImg<ty>::sequence(subdivisiony>0?subdivisiony:1-(int)height/subdivisiony,y0,y1),
libvips/cimg/CImg.h:          if (xi>=0 && xi<(int)width) draw_line(xi,0,xi,height-1,color,patternx,opacity);
libvips/cimg/CImg.h:          if (yi>=0 && yi<(int)height) draw_line(0,yi,width-1,yi,color,patterny,opacity);
libvips/cimg/CImg.h:        const float dx = deltax>0?deltax:width*-deltax/100;
libvips/cimg/CImg.h:        if (invertx) cimg_foroff(seqx,x) seqx(x) = width-1-seqx(x);
libvips/cimg/CImg.h:        const float dy = deltay>0?deltay:height*-deltay/100;
libvips/cimg/CImg.h:        if (inverty) cimg_foroff(seqy,y) seqy(y) = height-1-seqy(y);
libvips/cimg/CImg.h:        for (const T *pB=B.data+B.size(); res && pA>A.data; res=(cimg::abs(*(--pA)-(*(--pB)))<=sigma) );
libvips/cimg/CImg.h:          const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:          col-=img.dim;
libvips/cimg/CImg.h:          for (xmin=x-1; xmin>=0 && comp(value,img.get_vector_at(xmin,y,z)); xmin--) {
libvips/cimg/CImg.h:            col-=img.dim;
libvips/cimg/CImg.h:            col-=img.dim;
libvips/cimg/CImg.h:          xmin++; xmax--;
libvips/cimg/CImg.h:            fill(img,xmin,y-1,z);
libvips/cimg/CImg.h:            fill(img,xmin,y,z-1);
libvips/cimg/CImg.h:       \param x = X-coordinate of the starting point of the region to fill.
libvips/cimg/CImg.h:       \param y = Y-coordinate of the starting point of the region to fill.
libvips/cimg/CImg.h:       \param z = Z-coordinate of the starting point of the region to fill.
libvips/cimg/CImg.h:       \param x = X-coordinate of the starting point of the region to fill.
libvips/cimg/CImg.h:       \param y = Y-coordinate of the starting point of the region to fill.
libvips/cimg/CImg.h:       \param z = Z-coordinate of the starting point of the region to fill.
libvips/cimg/CImg.h:       \param x = X-coordinate of the starting point of the region to fill.
libvips/cimg/CImg.h:       \param y = Y-coordinate of the starting point of the region to fill.
libvips/cimg/CImg.h:       \param x0 = X-coordinate of the upper-left corner of the plasma.
libvips/cimg/CImg.h:       \param y0 = Y-coordinate of the upper-left corner of the plasma.
libvips/cimg/CImg.h:       \param x1 = X-coordinate of the lower-right corner of the plasma.
libvips/cimg/CImg.h:       \param y1 = Y-coordinate of the lower-right corner of the plasma.
libvips/cimg/CImg.h:       \param alpha = Alpha-parameter of the plasma.
libvips/cimg/CImg.h:       \param beta = Beta-parameter of the plasma.
libvips/cimg/CImg.h:        if (nx1>=dimx()) nx1=width-1;
libvips/cimg/CImg.h:        if (ny1>=dimy()) ny1=height-1;
libvips/cimg/CImg.h:        const int xc = (nx0+nx1)/2, yc = (ny0+ny1)/2, dx=(xc-nx0), dy=(yc-ny0);
libvips/cimg/CImg.h:            const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:       \param alpha = Alpha-parameter of the plasma.
libvips/cimg/CImg.h:       \param beta = Beta-parameter of the plasma.
libvips/cimg/CImg.h:      return draw_plasma(0,0,width-1,height-1,alpha,beta,opacity);
libvips/cimg/CImg.h:       \param xc = X-coordinate of the gaussian center.
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:          const float dx = (x-xc);
libvips/cimg/CImg.h:          const double val = std::exp( -dx*dx/sigma2 );
libvips/cimg/CImg.h:          col-=dim;
libvips/cimg/CImg.h:       \param xc = X-coordinate of the gaussian center.
libvips/cimg/CImg.h:       \param yc = Y-coordinate of the gaussian center.
libvips/cimg/CImg.h:        const CImg<t> invT = tensor.get_inverse(), invT2 = (invT*invT)/(-2.0);
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:        float dy = -yc;
libvips/cimg/CImg.h:          float dx = -xc;
libvips/cimg/CImg.h:            col-=dim;
libvips/cimg/CImg.h:       \param xc = X-coordinate of the gaussian center.
libvips/cimg/CImg.h:       \param yc = Y-coordinate of the gaussian center.
libvips/cimg/CImg.h:       \param xc = X-coordinate of the gaussian center.
libvips/cimg/CImg.h:       \param yc = Y-coordinate of the gaussian center.
libvips/cimg/CImg.h:       \param zc = Z-coordinate of the gaussian center.
libvips/cimg/CImg.h:        const CImg<t> invT = tensor.get_inverse(), invT2 = (invT*invT)/(-2.0);
libvips/cimg/CImg.h:        const float nopacity = cimg::abs(opacity), copacity = 1-cimg::max(opacity,0.0f);
libvips/cimg/CImg.h:          const float dx = (x-xc), dy = (y-yc), dz = (z-zc);
libvips/cimg/CImg.h:          col-=dim;
libvips/cimg/CImg.h:       \param xc = X-coordinate of the gaussian center.
libvips/cimg/CImg.h:       \param yc = Y-coordinate of the gaussian center.
libvips/cimg/CImg.h:       \param zc = Z-coordinate of the gaussian center.
libvips/cimg/CImg.h:       \param X = X-coordinate of the 3d object position
libvips/cimg/CImg.h:       \param Y = Y-coordinate of the 3d object position
libvips/cimg/CImg.h:       \param Z = Z-coordinate of the 3d object position
libvips/cimg/CImg.h:       \param lightx = X-coordinate of the light
libvips/cimg/CImg.h:       \param lighty = Y-coordinate of the light
libvips/cimg/CImg.h:       \param lightz = Z-coordinate of the light
libvips/cimg/CImg.h:                          const float lightx=0, const float lighty=0, const float lightz=-5000,
libvips/cimg/CImg.h:        return draw_object3d(X,Y,Z,points.get_resize(-100,3,1,1,0),primitives,colors,opacities,
libvips/cimg/CImg.h:      // Create light texture for phong-like rendering
libvips/cimg/CImg.h:              dlx = lightx-X, dly = lighty-Y, dlz = lightz-Z,
libvips/cimg/CImg.h:      const float zmin = -focale+1.5f;
libvips/cimg/CImg.h:            if (double_sided || (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0)<0) {
libvips/cimg/CImg.h:            if (double_sided || (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0)<0) {
libvips/cimg/CImg.h:              dx1 = x1-x0, dy1 = y1-y0, dz1 = z1-z0,
libvips/cimg/CImg.h:              dx2 = x2-x0, dy2 = y2-y0, dz2 = z2-z0,
libvips/cimg/CImg.h:              nx = dy1*dz2-dz1*dy2,
libvips/cimg/CImg.h:              ny = dz1*dx2-dx1*dz2,
libvips/cimg/CImg.h:              nz = dx1*dy2-dy1*dx2,
libvips/cimg/CImg.h:              norm = (float)std::sqrt(1e-5f+nx*nx+ny*ny+nz*nz),
libvips/cimg/CImg.h:              lx = X+(x0+x1+x2)/3-lightx,
libvips/cimg/CImg.h:              ly = Y+(y0+y1+y2)/3-lighty,
libvips/cimg/CImg.h:              lz = Z+(z0+z1+z2)/3-lightz,
libvips/cimg/CImg.h:              nl = (float)std::sqrt(1e-5f+lx*lx+ly*ly+lz*lz),
libvips/cimg/CImg.h:              factor = (-lx*nx-ly*ny-lz*nz)/(norm*nl),
libvips/cimg/CImg.h:      case 5: { // Phong-Shading
libvips/cimg/CImg.h:              dx1 = x1-x0, dy1 = y1-y0, dz1 = z1-z0,
libvips/cimg/CImg.h:              dx2 = x2-x0, dy2 = y2-y0, dz2 = z2-z0,
libvips/cimg/CImg.h:              nx = dy1*dz2-dz1*dy2,
libvips/cimg/CImg.h:              ny = dz1*dx2-dx1*dz2,
libvips/cimg/CImg.h:              nz = dx1*dy2-dy1*dx2,
libvips/cimg/CImg.h:              norm = (float)std::sqrt(1e-5f+nx*nx+ny*ny+nz*nz),
libvips/cimg/CImg.h:              norm = (float)std::sqrt(1e-5f+nx*nx+ny*ny+nz*nz),
libvips/cimg/CImg.h:              lx = (float)(X+points(ll,0)-lightx),
libvips/cimg/CImg.h:              ly = (float)(Y+points(ll,1)-lighty),
libvips/cimg/CImg.h:              lz = (float)(Z+points(ll,2)-lightz),
libvips/cimg/CImg.h:              nl = (float)std::sqrt(1e-5f+lx*lx+ly*ly+lz*lz),
libvips/cimg/CImg.h:              factor = (-lx*nx-ly*ny-lz*nz)/(norm*nl),
libvips/cimg/CImg.h:              norm = (float)std::sqrt(1e-5f+nx*nx+ny*ny+nz*nz),
libvips/cimg/CImg.h:            lightprops(ll,0) = (light_texture.width/2-1)*(1+nnx);
libvips/cimg/CImg.h:            lightprops(ll,1) = (light_texture.height/2-1)*(1+nny);
libvips/cimg/CImg.h:            if (x0+sw>=0 && x0-sw<(int)width && y0+sh>=0 && y0-sh<(int)height) {
libvips/cimg/CImg.h:              const CImg<T> sprite = color.get_resize(-factor,-factor,1,-100,render_type<=3?1:3);
libvips/cimg/CImg.h:                draw_image(sprite,opacity.get_resize(sprite.width,sprite.height,1,sprite.dim,1),x0-sw,y0-sh,0,0);
libvips/cimg/CImg.h:              else draw_image(sprite,x0-sw,y0-sh,0,0,opac);
libvips/cimg/CImg.h:                        const float lightx=0, const float lighty=0, const float lightz=-5000,
libvips/cimg/CImg.h:                        const float lightx=0, const float lighty=0, const float lightz=-5000,
libvips/cimg/CImg.h:                        const float lightx=0, const float lighty=0, const float lightz=-5000,
libvips/cimg/CImg.h:                        const float lightx=0, const float lighty=0, const float lightz=-5000,
libvips/cimg/CImg.h:        delta = cimg::max(xM-xm,yM-ym,zM-zm),
libvips/cimg/CImg.h:        ratio = (siz>=0)?(delta<=0?0:(siz/delta)):-siz/100;
libvips/cimg/CImg.h:        x = (T)((x-cx)*ratio);
libvips/cimg/CImg.h:        y = (T)((y-cy)*ratio);
libvips/cimg/CImg.h:        z = (T)((z-cz)*ratio);
libvips/cimg/CImg.h:        x = (T)(cx+(x-cx)*ratio);
libvips/cimg/CImg.h:        y = (T)(cy+(y-cy)*ratio);
libvips/cimg/CImg.h:        z = (T)(cz+(z-cz)*ratio);
libvips/cimg/CImg.h:    //----------------------------
libvips/cimg/CImg.h:    //----------------------------
libvips/cimg/CImg.h:        const int cxm=mask.width/2, cym=mask.height/2, czm=mask.depth/2, fxm=cxm-1+(mask.width%2), fym=cym-1+(mask.height%2), fzm=czm-1+(mask.depth%2);
libvips/cimg/CImg.h:            for (int z=czm; z<dimz()-czm; z++) for (int y=cym; y<dimy()-cym; y++) for (int x=cxm; x<dimx()-cxm; x++) {
libvips/cimg/CImg.h:              for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:              for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:              for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++)  for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:            for (int z=czm; z<dimz()-czm; z++) for (int y=cym; y<dimy()-cym; y++) for (int x=cxm; x<dimx()-cxm; x++) {
libvips/cimg/CImg.h:              for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++) {
libvips/cimg/CImg.h:             for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++) {
libvips/cimg/CImg.h:              for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++) {
libvips/cimg/CImg.h:       This is the in-place version of get_correlate.
libvips/cimg/CImg.h:       res(x,y,z) = sum_{i,j,k} img(x-i,y-j,z-k)*mask(i,j,k)
libvips/cimg/CImg.h:        const int cxm=mask.width/2, cym=mask.height/2, czm=mask.depth/2, fxm=cxm-1+(mask.width%2), fym=cym-1+(mask.height%2), fzm=czm-1+(mask.depth%2);
libvips/cimg/CImg.h:            for (int z=czm; z<dimz()-czm; z++) for (int y=cym; y<dimy()-cym; y++) for (int x=cxm; x<dimx()-cxm; x++) {
libvips/cimg/CImg.h:              for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                val+= (*this)(x-xm,y-ym,z-zm,v)*mask(cxm+xm,cym+ym,czm+zm,0);
libvips/cimg/CImg.h:              for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                  val+= pix3d(x-xm,y-ym,z-zm,v)*mask(cxm+xm,cym+ym,czm+zm,0);
libvips/cimg/CImg.h:              for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++)  for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                  val+= pix3d(x-xm,y-ym,z-zm,v,0)*mask(cxm+xm,cym+ym,czm+zm,0);
libvips/cimg/CImg.h:            for (int z=czm; z<dimz()-czm; z++) for (int y=cym; y<dimy()-cym; y++) for (int x=cxm; x<dimx()-cxm; x++) {
libvips/cimg/CImg.h:              for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++) {
libvips/cimg/CImg.h:                const T cval = (*this)(x-xm,y-ym,z-zm,v);
libvips/cimg/CImg.h:              for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++) {
libvips/cimg/CImg.h:                  const T cval = pix3d(x-xm,y-ym,z-zm,v);
libvips/cimg/CImg.h:              for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++)  for (int xm=-cxm; xm<=fxm; xm++) {
libvips/cimg/CImg.h:                  const T cval = pix3d(x-xm,y-ym,z-zm,v,0);
libvips/cimg/CImg.h:       This is the in-place version of get_convolve().
libvips/cimg/CImg.h:        fxm=cxm-1+(mask.width%2), fym=cym-1+(mask.height%2), fzm=czm-1+(mask.depth%2);
libvips/cimg/CImg.h:          for (int z=czm; z<dimz()-czm; z++) for (int y=cym; y<dimy()-cym; y++) for (int x=cxm; x<dimx()-cxm; x++) {
libvips/cimg/CImg.h:            for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                      for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                        for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                 for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                   for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:          for (int z=czm; z<dimz()-czm; z++) for (int y=cym; y<dimy()-cym; y++) for (int x=cxm; x<dimx()-cxm; x++) {
libvips/cimg/CImg.h:            for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                      for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                        for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                 for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                   for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:       This is the in-place version of get_erode().
libvips/cimg/CImg.h:        fxm=cxm-1+(mask.width%2), fym=cym-1+(mask.height%2), fzm=czm-1+(mask.depth%2);
libvips/cimg/CImg.h:          for (int z=czm; z<dimz()-czm; z++) for (int y=cym; y<dimy()-cym; y++) for (int x=cxm; x<dimx()-cxm; x++) {
libvips/cimg/CImg.h:            for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                      for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                        for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                 for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                   for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:          for (int z=czm; z<dimz()-czm; z++) for (int y=cym; y<dimy()-cym; y++) for (int x=cxm; x<dimx()-cxm; x++) {
libvips/cimg/CImg.h:            for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:              if ((mval=mask(cxm+xm,cym+ym,czm+zm,0))!=0) max_val = cimg::max((restype)((*this)(x+xm,y+ym,z+zm,v)-mval),max_val);
libvips/cimg/CImg.h:                      for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                        for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                          if ((mval=mask(cxm+xm,cym+ym,czm+zm,0))!=0) max_val = cimg::max((restype)(pix3d(x+xm,y+ym,z+zm,v)-mval),max_val);
libvips/cimg/CImg.h:                 for (int x=0; x<dimx(); (y<cym || y>=dimy()-cym || z<czm || z>=dimz()-czm)?x++:((x<cxm-1 || x>=dimx()-cxm)?x++:(x=dimx()-cxm))) {
libvips/cimg/CImg.h:                   for (int zm=-czm; zm<=fzm; zm++) for (int ym=-cym; ym<=fym; ym++) for (int xm=-cxm; xm<=fxm; xm++)
libvips/cimg/CImg.h:                     if ((mval=mask(cxm+xm,cym+ym,czm+zm,0))!=0) max_val = cimg::max((restype)(pix3d(x+xm,y+ym,z+zm,v,0)-mval),max_val);
libvips/cimg/CImg.h:       This is the in-place version of get_dilate().
libvips/cimg/CImg.h:       This is the in-place version of get_noise.
libvips/cimg/CImg.h:    CImg& noise(const double sigma=-20, const unsigned int ntype=0) {
libvips/cimg/CImg.h:        if (nsigma<0) nsigma = -nsigma*(st.max-st.min)/100.0;
libvips/cimg/CImg.h:            if (z<=1.0e-10) *ptr=(T)0;
libvips/cimg/CImg.h:                const double y=std::exp(-z);
libvips/cimg/CImg.h:                *ptr=(T)(k-1);
libvips/cimg/CImg.h:    CImg get_noise(const double sigma=-20,const unsigned int ntype=0) const {
libvips/cimg/CImg.h:    ima-=offset; I2 = *ima; Y2 = Y1 = parity*sumg1*I2; *ima = (T)(*(--Y)+Y2); \
libvips/cimg/CImg.h:    ima-=offset; I1 = *ima; *ima = (T)(*(--Y)+Y1); \
libvips/cimg/CImg.h:    for (i=(nb)-3; i>=0; i--) { Y0=a3*I1+a4*I2+b1*Y1+b2*Y2; ima-=offset; \
libvips/cimg/CImg.h:      I2=I1; I1=*ima; *ima=(T)(*(--Y)+Y0); Y2=Y1; Y1=Y0; } \
libvips/cimg/CImg.h:       This is the in-place version of get_deriche
libvips/cimg/CImg.h:        const float alpha=sigma>0?(1.695f/sigma):20,ea=(float)std::exp(alpha),ema=(float)std::exp(-alpha),em2a=ema*ema,b1=2*ema,b2=-em2a;
libvips/cimg/CImg.h:          ek = -(1-ema)*(1-ema)*(1-ema)/(2*(ema+1)*ema); a1 = a4 = 0;  a2 = ek*ema; a3 = -ek*ema; parity =-1;
libvips/cimg/CImg.h:          if (cond) { sumg1 = (ek*ea) / ((ea-1)*(ea-1)); g0 = 0; sumg0 = g0+sumg1; }
libvips/cimg/CImg.h:          ekn = ( -2*(-1+3*ea-3*ea*ea+ea*ea*ea)/(3*ea+1+3*ea*ea+ea*ea*ea) );
libvips/cimg/CImg.h:          ek = -(em2a-1)/(2*alpha*ema); a1 = ekn;  a2 = -ekn*(1+ek*alpha)*ema; a3 = ekn*(1-ek*alpha)*ema; a4 = -ekn*em2a; parity =1;
libvips/cimg/CImg.h:          ek = (1-ema)*(1-ema) / (1+2*alpha*ema - em2a); a1 = ek;  a2 = ek*ema*(alpha-1); a3 = ek*ema*(alpha+1); a4 = -ek*em2a; parity = 1;
libvips/cimg/CImg.h:          if (cond) { sumg1 = ek*(alpha*ea+ea-1) / ((ea-1)*(ea-1)); g0 = ek; sumg0 = g0+sumg1; }
libvips/cimg/CImg.h:       The Canny-Deriche filter is a recursive algorithm allowing to compute blurred derivatives of
libvips/cimg/CImg.h:       This is the in-place version of get_blur().
libvips/cimg/CImg.h:    //! Blur the image with a Canny-Deriche filter.
libvips/cimg/CImg.h:    /** This is the in-place version of get_blur(). **/
libvips/cimg/CImg.h:    //! Return a blurred version of the image, using a Canny-Deriche filter.
libvips/cimg/CImg.h:    //! Return a blurred version of the image, using a Canny-Deriche filter.
libvips/cimg/CImg.h:    /** This is the in-place version of get_blur_anisotropic(). **/
libvips/cimg/CImg.h:    if (u*curru + v*currv<0) { u=-u; v=-v; }}
libvips/cimg/CImg.h:    if (u*curru + v*currv + w*currw<0) { u=-u; v=-v; w=-w; }}
libvips/cimg/CImg.h:          dx1 = dimx()-1,
libvips/cimg/CImg.h:          dy1 = dimy()-1,
libvips/cimg/CImg.h:          dz1 = dimz()-1;
libvips/cimg/CImg.h:                  n = (float)std::sqrt(1e-5+u*u+v*v+w*w),
libvips/cimg/CImg.h:                    if ((pu*u + pv*v + pw*w)<0) { u=-u; v=-v; w=-w; }
libvips/cimg/CImg.h:                      const float coef = (float)std::exp(-l*l/fsigma2);
libvips/cimg/CImg.h:                      cx = (int)X, px = (cx-1<0)?0:cx-1, nx = (cx+1>dx1)?dx1:cx+1,
libvips/cimg/CImg.h:                      cy = (int)Y, py = (cy-1<0)?0:cy-1, ny = (cy+1>dy1)?dy1:cy+1,
libvips/cimg/CImg.h:                      cz = (int)Z, pz = (cz-1<0)?0:cz-1, nz = (cz+1>dz1)?dz1:cz+1;
libvips/cimg/CImg.h:                    if ((pu*u + pv*v + pw*w)<0) { u=-u; v=-v; w=-w; }
libvips/cimg/CImg.h:                      const float coef = (float)std::exp(-l*l/fsigma2);
libvips/cimg/CImg.h:                      cx = (int)X, px = (cx-1<0)?0:cx-1, nx = (cx+1>dx1)?dx1:cx+1,
libvips/cimg/CImg.h:                      cy = (int)Y, py = (cy-1<0)?0:cy-1, ny = (cy+1>dy1)?dy1:cy+1,
libvips/cimg/CImg.h:                      cz = (int)Z, pz = (cz-1<0)?0:cz-1, nz = (cz+1>dz1)?dz1:cz+1;
libvips/cimg/CImg.h:                    if ((pu*u + pv*v + pw*w)<0) { u=-u; v=-v; w=-w; }
libvips/cimg/CImg.h:                      const float coef = (float)std::exp(-l*l/fsigma2);
libvips/cimg/CImg.h:                if (!*(greycstoration_params->stop_request)) (*greycstoration_params->counter)++;
libvips/cimg/CImg.h:                  n = (float)std::sqrt(1e-5+u*u+v*v),
libvips/cimg/CImg.h:                  // Nearest-neighbor interpolation for 2D images
libvips/cimg/CImg.h:                    if ((pu*u + pv*v)<0) { u=-u; v=-v; }
libvips/cimg/CImg.h:                      const float coef = (float)std::exp(-l*l/fsigma2);
libvips/cimg/CImg.h:                      cx = (int)X, px = (cx-1<0)?0:cx-1, nx = (cx+1>dx1)?dx1:cx+1,
libvips/cimg/CImg.h:                      cy = (int)Y, py = (cy-1<0)?0:cy-1, ny = (cy+1>dy1)?dy1:cy+1;
libvips/cimg/CImg.h:                    if ((pu*u + pv*v)<0) { u=-u; v=-v; }
libvips/cimg/CImg.h:                      const float coef = (float)std::exp(-l*l/fsigma2);
libvips/cimg/CImg.h:                  // 2nd-order Runge-kutta interpolation for 2D images
libvips/cimg/CImg.h:                      cx = (int)X, px = (cx-1<0)?0:cx-1, nx = (cx+1>dx1)?dx1:cx+1,
libvips/cimg/CImg.h:                      cy = (int)Y, py = (cy-1<0)?0:cy-1, ny = (cy+1>dy1)?dy1:cy+1;
libvips/cimg/CImg.h:                    if ((pu*u + pv*v)<0) { u=-u; v=-v; }
libvips/cimg/CImg.h:                      const float coef = (float)std::exp(-l*l/fsigma2);
libvips/cimg/CImg.h:                if (!*(greycstoration_params->stop_request)) (*greycstoration_params->counter)++;
libvips/cimg/CImg.h:        cimg_for(*this,ptrd,T) { const ftype val = *(--ptrs)/N; *ptrd = val<m?m:(val>M?M:(T)val); }
libvips/cimg/CImg.h:       \param interpolation Used interpolation scheme (0 = nearest-neighbor, 1 = linear, 2 = Runge-Kutta)
libvips/cimg/CImg.h:        const float nsharpness = cimg::max(sharpness,1e-5f), power1 = 0.5f*nsharpness, power2 = power1/(1e-7f+1.0f-anisotropy);
libvips/cimg/CImg.h:        else blurred.normalize(0,-geom_factor);
libvips/cimg/CImg.h:                n1 = (float)std::pow(1.0f+l1+l2+l3,-power1),
libvips/cimg/CImg.h:                n2 = (float)std::pow(1.0f+l1+l2+l3,-power2);
libvips/cimg/CImg.h:            if (!*(greycstoration_params->stop_request)) (*greycstoration_params->counter)++;
libvips/cimg/CImg.h:                n1 = (float)std::pow(1.0f+l1+l2,-power1),
libvips/cimg/CImg.h:                n2 = (float)std::pow(1.0f+l1+l2,-power2);
libvips/cimg/CImg.h:            if (!*(greycstoration_params->stop_request)) (*greycstoration_params->counter)++;
libvips/cimg/CImg.h:       \param alpha = image pre-blurring (gaussian).
libvips/cimg/CImg.h:       \param sigma = regularity of the tensor-valued geometry.
libvips/cimg/CImg.h:       \param interpolation Used interpolation scheme (0 = nearest-neighbor, 1 = linear, 2 = Runge-Kutta)
libvips/cimg/CImg.h:      const int hl=n/2, hr=hl-1+n%2;
libvips/cimg/CImg.h:          vois = get_crop(x-hl,y-hl,z-hl,k,x+hr,y+hr,z+hr,k);
libvips/cimg/CImg.h:            vois = get_crop(x-hl,y-hl,0,k,x+hr,y+hr,0,k);
libvips/cimg/CImg.h:          G(x,y,z,3) = 1.0f-(float)std::pow(1.0f+val[0]+val[1]+val[2],-nedge);
libvips/cimg/CImg.h:            ixx = Incc+Ipcc-2*Iccc,
libvips/cimg/CImg.h:            ixy = 0.25f*(Innc+Ippc-Inpc-Ipnc),
libvips/cimg/CImg.h:            ixz = 0.25f*(Incn+Ipcp-Incp-Ipcn),
libvips/cimg/CImg.h:            iyy = Icnc+Icpc-2*Iccc,
libvips/cimg/CImg.h:            iyz = 0.25f*(Icnn+Icpp-Icnp-Icpn),
libvips/cimg/CImg.h:            izz = Iccn+Iccp-2*Iccc,
libvips/cimg/CImg.h:            ixf = Incc-Iccc,
libvips/cimg/CImg.h:            ixb = Iccc-Ipcc,
libvips/cimg/CImg.h:            iyf = Icnc-Iccc,
libvips/cimg/CImg.h:            iyb = Iccc-Icpc,
libvips/cimg/CImg.h:            izf = Iccn-Iccc,
libvips/cimg/CImg.h:            izb = Iccc-Iccp,
libvips/cimg/CImg.h:          veloc(x,y,z,k) = -amp*cimg::sign(itt)*cimg::abs(it);
libvips/cimg/CImg.h:          G(x,y,2) = 1.0f-(float)std::pow(1.0f+val[0]+val[1],-nedge);
libvips/cimg/CImg.h:            ixx = Inc+Ipc-2*Icc,
libvips/cimg/CImg.h:            ixy = 0.25f*(Inn+Ipp-Inp-Ipn),
libvips/cimg/CImg.h:            iyy = Icn+Icp-2*Icc,
libvips/cimg/CImg.h:            ixf = Inc-Icc,
libvips/cimg/CImg.h:            ixb = Icc-Ipc,
libvips/cimg/CImg.h:            iyf = Icn-Icc,
libvips/cimg/CImg.h:            iyb = Icc-Icp,
libvips/cimg/CImg.h:          veloc(x,y,k) = -amp*cimg::sign(itt)*cimg::abs(it);
libvips/cimg/CImg.h:    //-----------------------------
libvips/cimg/CImg.h:    //-----------------------------
libvips/cimg/CImg.h:    //! In-place version of get_matrix().
libvips/cimg/CImg.h:    //! In-place version of get_tensor().
libvips/cimg/CImg.h:    //! Return a N-numbered sequence vector from \p a0 to \p a1
libvips/cimg/CImg.h:        const unsigned int siz = size()-1;
libvips/cimg/CImg.h:        const float delta = (float)((float)a1-a0);
libvips/cimg/CImg.h:    //! Return a 3x3 rotation matrix along the (x,y,z)-axis with an angle w.
libvips/cimg/CImg.h:      return CImg<T>::matrix(1-2*(yy+zz),   2*(xy+zw),   2*(xz-yw),
libvips/cimg/CImg.h:                             2*(xy-zw), 1-2*(xx+zz),   2*(yz+xw),
libvips/cimg/CImg.h:                             2*(xz+yw),   2*(yz-xw), 1-2*(xx+yy));
libvips/cimg/CImg.h:    //! Return a new image corresponding to the vector located at (\p x,\p y,\p z) of the current vector-valued image.
libvips/cimg/CImg.h:    //! Return a new image corresponding to the \a square \a matrix located at (\p x,\p y,\p z) of the current vector-valued image.
libvips/cimg/CImg.h:    //! Return a new image corresponding to the \a diffusion \a tensor located at (\p x,\p y,\p z) of the current vector-valued image.
libvips/cimg/CImg.h:    //! Set the image \p vec as the \a vector \a valued pixel located at (\p x,\p y,\p z) of the current vector-valued image.
libvips/cimg/CImg.h:    //! Set the image \p vec as the \a square \a matrix-valued pixel located at (\p x,\p y,\p z) of the current vector-valued image.
libvips/cimg/CImg.h:    //! Set the image \p vec as the \a tensor \a valued pixel located at (\p x,\p y,\p z) of the current vector-valued image.
libvips/cimg/CImg.h:        const double dete = width>3?-1.0:det();
libvips/cimg/CImg.h:          data[0] = (T)(d/dete);  data[1] = (T)(-c/dete);
libvips/cimg/CImg.h:          data[2] = (T)(-b/dete), data[3] = (T)(a/dete);
libvips/cimg/CImg.h:          data[0] = (T)((i*e-f*h)/dete), data[1] = (T)((g*f-i*d)/dete), data[2] = (T)((d*h-g*e)/dete);
libvips/cimg/CImg.h:          data[3] = (T)((h*c-i*b)/dete), data[4] = (T)((i*a-c*g)/dete), data[5] = (T)((g*b-a*h)/dete);
libvips/cimg/CImg.h:          data[6] = (T)((b*f-e*c)/dete), data[7] = (T)((d*c-a*f)/dete), data[8] = (T)((a*e-d*b)/dete);
libvips/cimg/CImg.h:          if (use_LU) { // LU-based inverse computation
libvips/cimg/CImg.h:          } else { // SVD-based inverse computation
libvips/cimg/CImg.h:    //! Return the pseudo-inverse (Moore-Penrose) of the matrix
libvips/cimg/CImg.h:    //! Replace the matrix by its pseudo-inverse
libvips/cimg/CImg.h:      unsigned long l=0,ir=size()-1;
libvips/cimg/CImg.h:            do j--; while (arr[j]>pivot);
libvips/cimg/CImg.h:          if (j>=k) ir=j-1;
libvips/cimg/CImg.h:      return (s%2)?res:((res+kth_smallest((s>>1)-1))/2);
libvips/cimg/CImg.h:      (*this)[0] = y*img[2]-z*img[1];
libvips/cimg/CImg.h:      (*this)[1] = z*img[0]-x*img[2];
libvips/cimg/CImg.h:      (*this)[2] = x*img[1]-y*img[0];
libvips/cimg/CImg.h:      case 2: return (*this)(0,0)*(*this)(1,1)-(*this)(0,1)*(*this)(1,0);
libvips/cimg/CImg.h:        return i*a*e-a*h*f-i*b*d+b*g*f+c*d*h-c*g*e;
libvips/cimg/CImg.h:        double res = d?1.0:-1.0;
libvips/cimg/CImg.h:    //! Return the norm of the current vector/matrix. \p ntype = norm type (0=L2, 1=L1, -1=Linf).
libvips/cimg/CImg.h:      case -1: {
libvips/cimg/CImg.h:              f = U(i,i); g = (t)((f>=0?-1:1)*std::sqrt(s)); h=f*g-s; U(i,i)=f-g;
libvips/cimg/CImg.h:          if (i<dimy() && i!=dimx()-1) {
libvips/cimg/CImg.h:              f = U(l,i); g = (t)((f>=0?-1:1)*std::sqrt(s)); h = f*g-s; U(l,i) = f-g;
libvips/cimg/CImg.h:        { for (int i=dimx()-1; i>=0; i--) {
libvips/cimg/CImg.h:          if (i<dimx()-1) {
libvips/cimg/CImg.h:        { for (int i=cimg::min(dimx(),dimy())-1; i>=0; i--) {
libvips/cimg/CImg.h:        for (int k=dimx()-1; k>=0; k--) {
libvips/cimg/CImg.h:            for (l=k; l>=1; l--) {
libvips/cimg/CImg.h:              nm = l-1;
libvips/cimg/CImg.h:                g = S[i]; h = (t)cimg::pythagore(f,g); S[i] = h; h = 1/h; c = g*h; s = -f*h;
libvips/cimg/CImg.h:                cimg_forY(U,j) { const t y = U(nm,j), z = U(i,j); U(nm,j) = y*c+z*s; U(i,j) = z*c-y*s; }
libvips/cimg/CImg.h:            if (l==k) { if (z<0) { S[k] = -z; cimg_forX(U,j) V(k,j) = -V(k,j); } break; }
libvips/cimg/CImg.h:            nm = k-1;
libvips/cimg/CImg.h:            f = ((y-z)*(y+z)+(g-h)*(g+h))/(2*h*y);
libvips/cimg/CImg.h:            f = ((x-z)*(x+z)+h*((y/(f+ (f>=0?g:-g)))-h))/x;
libvips/cimg/CImg.h:              f = x*c+g*s; g = g*c-x*s; h = y*s; y*=c;
libvips/cimg/CImg.h:              cimg_forX(U,jj) { const t x = V(j,jj), z = V(i,jj); V(j,jj) = x*c+z*s; V(i,jj) = z*c-x*s; }
libvips/cimg/CImg.h:              f = c*g+s*y; x = c*y-s*g;
libvips/cimg/CImg.h:              { cimg_forY(U,jj) { const t y = U(j,jj); z = U(i,jj); U(j,jj) = y*c+z*s; U(i,jj) = z*c-y*s; }}
libvips/cimg/CImg.h:          for (int k=0; k<i; k++) sum-=(*this)(k,i)*(*this)(j,k);
libvips/cimg/CImg.h:          for (int k=0; k<j; k++) sum-=(*this)(k,i)*(*this)(j,k);
libvips/cimg/CImg.h:        if ((*this)(j,j)==0) (*this)(j,j)=(T)1e-20;
libvips/cimg/CImg.h:      int ii=-1;
libvips/cimg/CImg.h:        if (ii>=0) for (int j=ii; j<=i-1; j++) sum-=A(j,i)*(*this)(j);
libvips/cimg/CImg.h:      { for (int i=N-1; i>=0; i--) {
libvips/cimg/CImg.h:        for (int j=i+1; j<N; j++) sum-=A(j,i)*(*this)(j);
libvips/cimg/CImg.h:    //! Solve a linear system AX=B where B=*this. (in-place version)
libvips/cimg/CImg.h:          double f = e*e-4*(a*d-b*c);
libvips/cimg/CImg.h:          const double l1 = 0.5*(e-f), l2 = 0.5*(e+f);
libvips/cimg/CImg.h:          const double theta1 = std::atan2(l2-a,b), theta2 = std::atan2(l1-a,b);
libvips/cimg/CImg.h:          if (scal<0) val[x]=-val[x];
libvips/cimg/CImg.h:        if (max-min>=3) {
libvips/cimg/CImg.h:              while ((*this)[j]>pivot) j--;
libvips/cimg/CImg.h:                cimg::swap(permutations[i++],permutations[j--]);
libvips/cimg/CImg.h:              while ((*this)[j]<pivot) j--;
libvips/cimg/CImg.h:                cimg::swap(permutations[i++],permutations[j--]);
libvips/cimg/CImg.h:        _quicksort(0,size()-1,permutations,increasing);
libvips/cimg/CImg.h:      cimg_for(res,ptr,T) *ptr = (*this)[*(--p)];
libvips/cimg/CImg.h:    //! In-place version of the previous function
libvips/cimg/CImg.h:    //-------------------
libvips/cimg/CImg.h:    //-------------------
libvips/cimg/CImg.h:      const unsigned int dmin = cimg::min(w,h), minsiz = min_size>=0?min_size:(-min_size)*dmin/100;
libvips/cimg/CImg.h:      const unsigned int dmax = cimg::max(w,h), maxsiz = max_size>=0?max_size:(-max_size)*dmax/100;
libvips/cimg/CImg.h:      while (!disp->is_closed && !disp->key) feature_selection(0,1,*disp,XYZ);
libvips/cimg/CImg.h:    //! High-level interface to select features from images
libvips/cimg/CImg.h:        X1 =-1, Y1 = -1, Z1 = -1,
libvips/cimg/CImg.h:        X = -1, Y = -1, Z = -1,
libvips/cimg/CImg.h:        if (mX<dimx() && mY>=dimy()) { area = 2; X = mX; Z = mY-height; Y = phase?Y1:Y0; }
libvips/cimg/CImg.h:        if (mX>=dimx() && mY<dimy()) { area = 3; Y = mY; Z = mX-width; X = phase?X1:X0; }
libvips/cimg/CImg.h:            case cimg::keyARROWDOWN: disp.wheel--; break;
libvips/cimg/CImg.h:            case cimg::keyD: if (disp.is_fullscreen) disp.toggle_fullscreen(); disp.resize(-200,-200); disp.is_resized = true; break;
libvips/cimg/CImg.h:            case cimg::keyC: if (disp.is_fullscreen) disp.toggle_fullscreen(); disp.resize(-50,-50); disp.is_resized = true; break;
libvips/cimg/CImg.h:        if (!area) mx = my = X = Y = Z = -1;
libvips/cimg/CImg.h:        if (X0<0) X0 = 0; if (X0>=(int)width) X0 = (int)width-1; if (Y0<0) Y0 = 0; if (Y0>=(int)height) Y0 = (int)height-1;
libvips/cimg/CImg.h:        if (Z0<0) Z0 = 0; if (Z0>=(int)depth) Z0 = (int)depth-1;
libvips/cimg/CImg.h:        if (X1<1) X1 = 0; if (X1>=(int)width) X1 = (int)width-1; if (Y1<0) Y1 = 0; if (Y1>=(int)height) Y1 = (int)height-1;
libvips/cimg/CImg.h:        if (Z1<0) Z1 = 0; if (Z1>=(int)depth) Z1 = (int)depth-1;
libvips/cimg/CImg.h:                  visu0.assign((CImg<float>(tmp)-=m)*=255.0f/(M-m));
libvips/cimg/CImg.h:              x1=((X0<X1?X1:X0)+1)*disp.width/(width+d)-1,
libvips/cimg/CImg.h:              y1=((Y0<Y1?Y1:Y0)+1)*disp.height/(height+d)-1;
libvips/cimg/CImg.h:                zx1=(int)((width+(Z0<Z1?Z1:Z0)+1)*disp.width/(width+d))-1,
libvips/cimg/CImg.h:                zy1=(int)((height+(Z0<Z1?Z1:Z0)+1)*disp.height/(height+d))-1;
libvips/cimg/CImg.h:              x1=X1*disp.width/(width+d)-1,
libvips/cimg/CImg.h:              y1=Y1*disp.height/(height+d)-1;
libvips/cimg/CImg.h:            visu.draw_ellipse(x0,y0,(float)(x1-x0),(float)(y1-y0),1.0f,0.0f,fgcolor,0L,0.2f).
libvips/cimg/CImg.h:              draw_ellipse(x0,y0,(float)(x1-x0),(float)(y1-y0),1.0f,0.0f,fgcolor,hatch);
libvips/cimg/CImg.h:                zx1=(int)((width+Z1+1)*disp.width/(width+d))-1,
libvips/cimg/CImg.h:                zy1=(int)((height+Z1+1)*disp.height/(height+d))-1;
libvips/cimg/CImg.h:              visu.draw_ellipse(zx0,y0,(float)(zx1-zx0),(float)(y1-y0),1.0f,0.0f,fgcolor,0L,0.2f).
libvips/cimg/CImg.h:                draw_ellipse(zx0,y0,(float)(zx1-zx0),(float)(y1-y0),1.0f,0.0f,fgcolor,hatch).
libvips/cimg/CImg.h:                draw_ellipse(x0,zy0,(float)(x1-x0),(float)(zy1-zy0),1.0f,0.0f,fgcolor,0L,0.2f).
libvips/cimg/CImg.h:                draw_ellipse(x0,zy0,(float)(x1-x0),(float)(zy1-zy0),1.0f,0.0f,fgcolor,hatch);
libvips/cimg/CImg.h:          if (my>=visu.dimy()-11) text_down = false;
libvips/cimg/CImg.h:            const double dX=(double)(X0-X1), dY=(double)(Y0-Y1), dZ=(double)(Z0-Z1), norm = std::sqrt(dX*dX+dY*dY+dZ*dZ);
libvips/cimg/CImg.h:            if (depth>1) std::sprintf(text,"Vect (%d,%d,%d)-(%d,%d,%d), norm=%g",X0,Y0,Z0,X1,Y1,Z1,norm);
libvips/cimg/CImg.h:            else std::sprintf(text,"Vect (%d,%d)-(%d,%d), norm=%g",X0,Y0,X1,Y1,norm);
libvips/cimg/CImg.h:            if (depth>1) std::sprintf(text,"Box (%d,%d,%d)-(%d,%d,%d), Size=(%d,%d,%d)",
libvips/cimg/CImg.h:                                      1+cimg::abs(X0-X1),1+cimg::abs(Y0-Y1),1+cimg::abs(Z0-Z1));
libvips/cimg/CImg.h:            else  std::sprintf(text,"Box (%d,%d)-(%d,%d), Size=(%d,%d)",
libvips/cimg/CImg.h:                               X0<X1?X0:X1,Y0<Y1?Y0:Y1,X0<X1?X1:X0,Y0<Y1?Y1:Y0,1+cimg::abs(X0-X1),1+cimg::abs(Y0-Y1));
libvips/cimg/CImg.h:            if (depth>1) std::sprintf(text,"Ellipse (%d,%d,%d)-(%d,%d,%d), Radii=(%d,%d,%d)",
libvips/cimg/CImg.h:                                      X0,Y0,Z0,X1,Y1,Z1,1+cimg::abs(X0-X1),1+cimg::abs(Y0-Y1),1+cimg::abs(Z0-Z1));
libvips/cimg/CImg.h:            else  std::sprintf(text,"Ellipse (%d,%d)-(%d,%d), Radii=(%d,%d)",
libvips/cimg/CImg.h:                               X0,Y0,X1,Y1,1+cimg::abs(X0-X1),1+cimg::abs(Y0-Y1));
libvips/cimg/CImg.h:          if (phase || (mx>=0 && my>=0)) visu.draw_text(text,0,text_down?visu.dimy()-11:0,fgcolor,bgcolor,11,0.7f);
libvips/cimg/CImg.h:          if (X1<0 || Y1<0 || Z1<0) X0=Y0=Z0=X1=Y1=Z1=-1;
libvips/cimg/CImg.h:      } else if (selection) selection[0]=selection[1]=selection[2]=selection[3]=selection[4]=selection[5]=-1;
libvips/cimg/CImg.h:    //! High-level interface to select features in images
libvips/cimg/CImg.h:    //! High-level interface for displaying a 3d object
libvips/cimg/CImg.h:        return display_object3d(points.get_resize(-100,3,1,1,0),primitives,colors,opacities,disp,
libvips/cimg/CImg.h:        delta = cimg::max(xM-xm,yM-ym,zM-zm);
libvips/cimg/CImg.h:        axes_points(4,0) = 22; axes_points(4,1) = -6; axes_points(4,2) = 0;
libvips/cimg/CImg.h:        axes_points(5,0) = -6; axes_points(5,1) = 22; axes_points(5,2) = 0;
libvips/cimg/CImg.h:        axes_points(6,0) = -6; axes_points(6,1) = -6; axes_points(6,2) = 22;
libvips/cimg/CImg.h:              centered_points(l,0) = (float)((points(l,0)-dx)*ratio);
libvips/cimg/CImg.h:              centered_points(l,1) = (float)((points(l,1)-dy)*ratio);
libvips/cimg/CImg.h:              centered_points(l,2) = (float)((points(l,2)-dz)*ratio);
libvips/cimg/CImg.h:              const float x = (bbox_points(l,0)-dx)*ratio, y = (bbox_points(l,1)-dy)*ratio, z = (bbox_points(l,2)-dz)*ratio;
libvips/cimg/CImg.h:                               false,focale,visu.dimx()/2.0f,visu.dimy()/2.0f,-5000.0f,0.2f);
libvips/cimg/CImg.h:                                  double_sided,focale,visu.dimx()/2.0f,visu.dimy()/2.0f,-5000.0f,ambiant_light);
libvips/cimg/CImg.h:            const float Xaxes = 25.0f, Yaxes = visu.height-35.0f;
libvips/cimg/CImg.h:              u0 = (float)(x0-disp.dimx()/2),
libvips/cimg/CImg.h:              v0 = (float)(y0-disp.dimy()/2),
libvips/cimg/CImg.h:              u1 = (float)(x1-disp.dimx()/2),
libvips/cimg/CImg.h:              v1 = (float)(y1-disp.dimy()/2),
libvips/cimg/CImg.h:              nw0 = (float)std::sqrt(cimg::max(0.0f,R2-nu0*nu0-nv0*nv0)),
libvips/cimg/CImg.h:              nw1 = (float)std::sqrt(cimg::max(0.0f,R2-nu1*nu1-nv1*nv1)),
libvips/cimg/CImg.h:              u = nv0*nw1-nw0*nv1,
libvips/cimg/CImg.h:              v = nw0*nu1-nu0*nw1,
libvips/cimg/CImg.h:              w = nv0*nu1-nu0*nv1,
libvips/cimg/CImg.h:          if (disp.button&2) { pose(3,2)+=(y1-y0); x0=x1; y0=y1; }
libvips/cimg/CImg.h:          if (disp.wheel) { pose(3,2)-=15*disp.wheel; disp.wheel=0; }
libvips/cimg/CImg.h:          if (disp.button&4) { pose(3,0)+=(x1-x0); pose(3,1)+=(y1-y0); x0=x1; y0=y1; }
libvips/cimg/CImg.h:            case cimg::keyD: if (disp.is_fullscreen) disp.toggle_fullscreen(); disp.resize(-200,-200); disp.is_resized = true; break;
libvips/cimg/CImg.h:            case cimg::keyC: if (disp.is_fullscreen) disp.toggle_fullscreen(); disp.resize(-50,-50); disp.is_resized = true; break;
libvips/cimg/CImg.h:    //! High-level interface for displaying a 3d object
libvips/cimg/CImg.h:    //! High-level interface for displaying a 3d object
libvips/cimg/CImg.h:    //! High-level interface for displaying a 3d object
libvips/cimg/CImg.h:    //! High-level interface for displaying a 3d object
libvips/cimg/CImg.h:    //! High-level interface for displaying a 3d object
libvips/cimg/CImg.h:    //! High-level interface for displaying a 3d object
libvips/cimg/CImg.h:    //----------------------
libvips/cimg/CImg.h:    //! \name Input-Output
libvips/cimg/CImg.h:    //----------------------
libvips/cimg/CImg.h:    /** This is the in-place version of get_load(). **/
libvips/cimg/CImg.h:        err = std::fscanf(nfile,"%lf%*[^0-9.eE+-]",&val);
libvips/cimg/CImg.h:    //! Load an image from an ASCII file (in-place version).
libvips/cimg/CImg.h:    //! Load an image from an ASCII file (in-place version).
libvips/cimg/CImg.h:      while ((err = std::fscanf(nfile,"%lf%255[^0-9.eE+-]",&val,delimiter))!=EOF) {
libvips/cimg/CImg.h:    //! Load an image from a DLM file (in-place version).
libvips/cimg/CImg.h:    //! Load an image from a DLM file (in-place version).
libvips/cimg/CImg.h:          for (unsigned int off = raw.width*raw.height; off; --off) {
libvips/cimg/CImg.h:          for (unsigned int off = raw.width*raw.height; off; --off) {
libvips/cimg/CImg.h:    //! Load an image from a PNM file (in-place version).
libvips/cimg/CImg.h:    //! Load an image from a PNM file (in-place version).
libvips/cimg/CImg.h:                             const unsigned int first_frame=0, const int last_frame=-1,
libvips/cimg/CImg.h:                             const unsigned int first_frame=0, const int last_frame=-1,
libvips/cimg/CImg.h:    //! Load a YUV image sequence file (in-place).
libvips/cimg/CImg.h:                   const unsigned int first_frame=0, const int last_frame=-1,
libvips/cimg/CImg.h:    //! Load a YUV image sequence file (in-place).
libvips/cimg/CImg.h:                   const unsigned int first_frame=0, const int last_frame=-1,
libvips/cimg/CImg.h:        align      = (4-dx_bytes%4)%4,
libvips/cimg/CImg.h:        buf_size   = cimg::min(cimg::abs(dy)*(dx_bytes+align),file_size-offset);
libvips/cimg/CImg.h:      const int xoffset = offset-54-4*nb_colors;
libvips/cimg/CImg.h:        for (int y=res.height-1; y>=0; y--) {
libvips/cimg/CImg.h:        for (int y=res.height-1; y>=0; y--) {
libvips/cimg/CImg.h:        for (int y=res.height-1; y>=0; y--) { cimg_forX(res,x) {
libvips/cimg/CImg.h:        for (int y=res.height-1; y>=0; y--) { cimg_forX(res,x) {
libvips/cimg/CImg.h:        for (int y=res.height-1; y>=0; y--) { cimg_forX(res,x) {
libvips/cimg/CImg.h:        for (int y=res.height-1; y>=0; y--) { cimg_forX(res,x) {
libvips/cimg/CImg.h:        new_color_type -= PNG_COLOR_MASK_PALETTE;
libvips/cimg/CImg.h:		    uint32 row, rowsperstrip = (uint32)-1;
libvips/cimg/CImg.h:		      uint32 nrow = (row+rowsperstrip>ny?ny-row:rowsperstrip);
libvips/cimg/CImg.h:		      if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) {
libvips/cimg/CImg.h:		    uint32 row, rowsperstrip = (uint32)-1;
libvips/cimg/CImg.h:		      uint32 nrow = (row+rowsperstrip>ny?ny-row:rowsperstrip);
libvips/cimg/CImg.h:		      if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) {
libvips/cimg/CImg.h:		    uint32 row, rowsperstrip = (uint32)-1;
libvips/cimg/CImg.h:		      uint32 nrow = (row+rowsperstrip>ny?ny-row:rowsperstrip);
libvips/cimg/CImg.h:		      if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) {
libvips/cimg/CImg.h:		    uint32 row, rowsperstrip = (uint32)-1;
libvips/cimg/CImg.h:		      uint32 nrow = (row+rowsperstrip>ny?ny-row:rowsperstrip);
libvips/cimg/CImg.h:		      if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) {
libvips/cimg/CImg.h:		    uint32 row, rowsperstrip = (uint32)-1;
libvips/cimg/CImg.h:			uint32 nrow = (row+rowsperstrip>ny?ny-row:rowsperstrip);
libvips/cimg/CImg.h:			if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) {
libvips/cimg/CImg.h:		    uint32 row, rowsperstrip = (uint32)-1;
libvips/cimg/CImg.h:			uint32 nrow = (row+rowsperstrip>ny?ny-row:rowsperstrip);
libvips/cimg/CImg.h:			if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) {
libvips/cimg/CImg.h:              cimg_forXY(dest,x,y) dest(x,y,dir)=(T)(float)((raster[nx*(ny-1-y)+x]+ 128) / 257);
libvips/cimg/CImg.h:	      dest(x,y,dir,0)=(T)(float)TIFFGetR(raster[nx*(ny-1-y)+x]);
libvips/cimg/CImg.h:	      dest(x,y,dir,1)=(T)(float)TIFFGetG(raster[nx*(ny-1-y)+x]);
libvips/cimg/CImg.h:	      dest(x,y,dir,2)=(T)(float)TIFFGetB(raster[nx*(ny-1-y)+x]);
libvips/cimg/CImg.h:	      dest(x,y,dir,0)=(T)(float)TIFFGetR(raster[nx*(ny-1-y)+x]);
libvips/cimg/CImg.h:	      dest(x,y,dir,1)=(T)(float)TIFFGetG(raster[nx*(ny-1-y)+x]);
libvips/cimg/CImg.h:	      dest(x,y,dir,2)=(T)(float)TIFFGetB(raster[nx*(ny-1-y)+x]);
libvips/cimg/CImg.h:	      dest(x,y,dir,3)=(T)(float)TIFFGetA(raster[nx*(ny-1-y)+x]);
libvips/cimg/CImg.h:        for (unsigned int off = width*height; off; --off) {
libvips/cimg/CImg.h:          *(rdata++) = (T)(pixels->red);
libvips/cimg/CImg.h:          *(gdata++) = (T)(pixels->green);
libvips/cimg/CImg.h:          *(bdata++) = (T)(pixels->blue);
libvips/cimg/CImg.h:          *(adata++) = (T)(pixels->opacity);
libvips/cimg/CImg.h:        for (unsigned int off = width*height; off; --off) {
libvips/cimg/CImg.h:          *(rdata++) = (T)(pixels->red);
libvips/cimg/CImg.h:          *(gdata++) = (T)(pixels->green);
libvips/cimg/CImg.h:          *(bdata++) = (T)(pixels->blue);
libvips/cimg/CImg.h:        for (unsigned int off = width*height; off; --off) {
libvips/cimg/CImg.h:          *(data++) = (T)(pixels->red);
libvips/cimg/CImg.h:          *(adata++) = (T)(pixels->opacity);
libvips/cimg/CImg.h:        for (unsigned int off = width*height; off; --off) {
libvips/cimg/CImg.h:          *(data++) = (T)(pixels->red);
libvips/cimg/CImg.h:    //! Load an image using builtin ImageMagick++ Library (in-place version).
libvips/cimg/CImg.h:    //! In-place version of get_load_raw()
libvips/cimg/CImg.h:    //! In-place version of get_load_raw()
libvips/cimg/CImg.h:      for (unsigned int off=res.width*res.height; off>0; --off) {
libvips/cimg/CImg.h:    //! In-place version of get_load_rgba()
libvips/cimg/CImg.h:    //! In-place version of get_load_rgba()
libvips/cimg/CImg.h:      for (unsigned int off=res.width*res.height; off>0; --off) {
libvips/cimg/CImg.h:    //! In-place version of get_load_rgb()
libvips/cimg/CImg.h:    //! In-place version of get_load_rgb()
libvips/cimg/CImg.h:      out[0]=out[1]=out[2]=out[3]=out[5]=1; out[4]=out[6]=out[7]=-1;
libvips/cimg/CImg.h:      if(cimg::strncasecmp(item,"#INRIMAGE-4#{",13)!=0)
libvips/cimg/CImg.h:                              "(INRIMAGE-4 identifier not found)",pixel_type());
libvips/cimg/CImg.h:        std::sscanf(item," XDIM%*[^0-9]%d",out);
libvips/cimg/CImg.h:        std::sscanf(item," YDIM%*[^0-9]%d",out+1);
libvips/cimg/CImg.h:        std::sscanf(item," ZDIM%*[^0-9]%d",out+2);
libvips/cimg/CImg.h:        std::sscanf(item," VDIM%*[^0-9]%d",out+3);
libvips/cimg/CImg.h:        std::sscanf(item," PIXSIZE%*[^0-9]%d",out+6);
libvips/cimg/CImg.h:          std::sscanf(item," VX%*[^0-9.eE+-]%f",voxsize);
libvips/cimg/CImg.h:          std::sscanf(item," VY%*[^0-9.eE+-]%f",voxsize+1);
libvips/cimg/CImg.h:          std::sscanf(item," VZ%*[^0-9.eE+-]%f",voxsize+2);
libvips/cimg/CImg.h:    //! Load an image from an INRIMAGE-4 file.
libvips/cimg/CImg.h:    //! Load an image from an INRIMAGE-4 file.
libvips/cimg/CImg.h:    //! In-place version of get_load_inr()
libvips/cimg/CImg.h:    //! In-place version of get_load_inr()
libvips/cimg/CImg.h:    buffer-=dest.size(); \
libvips/cimg/CImg.h:    //! Load an image from a PANDORE-5 file.
libvips/cimg/CImg.h:          buffer-=dest.size();
libvips/cimg/CImg.h:            buffer-=dest.size();
libvips/cimg/CImg.h:            buffer-=dest.size();
libvips/cimg/CImg.h:          buffer-=dest.size();
libvips/cimg/CImg.h:            buffer-=dest.size();
libvips/cimg/CImg.h:            buffer-=dest.size();
libvips/cimg/CImg.h:          buffer-=dest.size();
libvips/cimg/CImg.h:            buffer-=dest.size();
libvips/cimg/CImg.h:            buffer-=dest.size();
libvips/cimg/CImg.h:    //! Load an image from a PANDORE-5 file.
libvips/cimg/CImg.h:    //! In-place version of get_load_pandore()
libvips/cimg/CImg.h:    //! In-place version of get_load_pandore()
libvips/cimg/CImg.h:        std::sprintf(body+cimg::strlen(body)-3,"img");
libvips/cimg/CImg.h:      cimg::fread(header+4,header_size-4,file_header);
libvips/cimg/CImg.h:    //! In-place version of get_load_analyze()
libvips/cimg/CImg.h:    //! Load PAR-REC (Philips) image file
libvips/cimg/CImg.h:    //! In-place version of get_load_parrec()
libvips/cimg/CImg.h:    //! In-place version of get_load_cimg()
libvips/cimg/CImg.h:    //! In-place version of get_load_cimg()
libvips/cimg/CImg.h:    //! In-place version of get_load_imagemagick()
libvips/cimg/CImg.h:    //! In-place version of get_load_graphicsmagick()
libvips/cimg/CImg.h:    //! In-place version of get_load_graphicsmagick()
libvips/cimg/CImg.h:      std::sprintf(command,"%s -w -c anlz -o %s -f %s",cimg::medcon_path(),filetmp,filename);
libvips/cimg/CImg.h:      std::sprintf(command,"m000-%s.hdr",body);
libvips/cimg/CImg.h:      std::sprintf(command,"m000-%s.img",body);
libvips/cimg/CImg.h:    //! In-place version of get_load_dicom()
libvips/cimg/CImg.h:    //! In-place version of get_load_off()
libvips/cimg/CImg.h:       Parameter \p number can be used to add a 6-digit number to the filename before saving.\n
libvips/cimg/CImg.h:    const CImg& save(const char *const filename, const int number=-1) const {
libvips/cimg/CImg.h:        cimg_forX(*this,x) std::fprintf(nfile,"%g%s",(double)*(ptrs++),(x==(int)width-1)?"":",");
libvips/cimg/CImg.h:      std::sprintf(command,"%s -w -c dicom -o %s -f %s",cimg::medcon_path(),filename,filetmp);
libvips/cimg/CImg.h:      std::sprintf(command,"m000-%s",filename);
libvips/cimg/CImg.h:      short datatype=-1;
libvips/cimg/CImg.h:        std::strcpy(hname,filename); std::strcpy(iname,filename); std::sprintf(iname+cimg::strlen(iname)-3,"img");
libvips/cimg/CImg.h:        std::strcpy(hname,filename); std::strcpy(iname,filename); std::sprintf(hname+cimg::strlen(iname)-3,"hdr");
libvips/cimg/CImg.h:      std::sprintf(command,"%s -quality %u%% %s \"%s\"",cimg::imagemagick_path(),quality,filetmp,filename);
libvips/cimg/CImg.h:      std::sprintf(command,"%s -quality %u%% %s \"%s\"",cimg::graphicsmagick_path(),quality,filetmp,filename);
libvips/cimg/CImg.h:    //! Save the image as an INRIMAGE-4 file.
libvips/cimg/CImg.h:      int inrpixsize=-1;
libvips/cimg/CImg.h:      int err = std::sprintf(header,"#INRIMAGE-4#{\nXDIM=%u\nYDIM=%u\nZDIM=%u\nVDIM=%u\n",width,height,depth,dim);
libvips/cimg/CImg.h:      std::memset(header+err,'\n',252-err);
libvips/cimg/CImg.h:    //! Save the image as an INRIMAGE-4 file.
libvips/cimg/CImg.h:        buffer-=size(); \
libvips/cimg/CImg.h:        buffer-=size(); \
libvips/cimg/CImg.h:        buffer-=size(); \
libvips/cimg/CImg.h:    //! Save the image as a PANDORE-5 file.
libvips/cimg/CImg.h:    //! Save the image as a PANDORE-5 file.
libvips/cimg/CImg.h:        align     = (4-(3*width)%4)%4,
libvips/cimg/CImg.h:        *pR = ptr(0,height-1,0,0),
libvips/cimg/CImg.h:        *pG = (dim>=2)?ptr(0,height-1,0,1):pR,
libvips/cimg/CImg.h:        *pB = (dim>=3)?ptr(0,height-1,0,2):pR;
libvips/cimg/CImg.h:        pR-=2*width; pG-=2*width; pB-=2*width;
libvips/cimg/CImg.h:      const int pixel_bit_depth_flag = numChan * (bit_depth-1);
libvips/cimg/CImg.h:      case 7 :  { // Gray 8-bit
libvips/cimg/CImg.h:      case 14: { // Gray w/ Alpha 8-bit
libvips/cimg/CImg.h:      case 21:  { // RGB 8-bit
libvips/cimg/CImg.h:      case 28: { // RGB x/ Alpha 8-bit
libvips/cimg/CImg.h:      case 15: { // Gray 16-bit
libvips/cimg/CImg.h:      case 30: { // Gray w/ Alpha 16-bit
libvips/cimg/CImg.h:      case 45: { // RGB 16-bit
libvips/cimg/CImg.h:      case 60: { // RGB w/ Alpha 16-bit
libvips/cimg/CImg.h:      uint32 rowsperstrip = (uint32) -1;
libvips/cimg/CImg.h:	      uint32 nrow = (row+rowsperstrip>height?height-row:rowsperstrip);
libvips/cimg/CImg.h:    //! Save the image using built-in ImageMagick++ library
libvips/cimg/CImg.h:   #-----------------------------------------
libvips/cimg/CImg.h:   #------------------------------------------
libvips/cimg/CImg.h:    //---------------------------
libvips/cimg/CImg.h:    //---------------------------
libvips/cimg/CImg.h:    //------------------------------------------
libvips/cimg/CImg.h:    //! \name Constructors - Destructor - Copy
libvips/cimg/CImg.h:    //------------------------------------------
libvips/cimg/CImg.h:    //! In-place version of the default constructor and default destructor
libvips/cimg/CImg.h:    //! Equivalent to assign() (STL-compliant name)
libvips/cimg/CImg.h:    //! In-place version of the copy constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! In-place version of the previous constructor
libvips/cimg/CImg.h:    //! Return \c true if the k-th image of the list contains the pixel (x,y,z,v)
libvips/cimg/CImg.h:    //------------------------------
libvips/cimg/CImg.h:    //------------------------------
libvips/cimg/CImg.h:    //! Operator-
libvips/cimg/CImg.h:    CImgList operator-() const {
libvips/cimg/CImg.h:      cimglist_for(res,l) res[l].assign(-data[l]);
libvips/cimg/CImg.h:    //! Operator-=.
libvips/cimg/CImg.h:    CImgList& operator-=(const T& val) {
libvips/cimg/CImg.h:        template<typename t> CImgList& operator-=(const t& val) {
libvips/cimg/CImg.h:      cimglist_for(*this,l) (*this)[l]-=val;
libvips/cimg/CImg.h:    //! Operator-=.
libvips/cimg/CImg.h:    template<typename t> CImgList& operator-=(const CImgList<t>& list) {
libvips/cimg/CImg.h:      for (unsigned int l=0; l<sizemax; l++) (*this)[l]-=list[l];
libvips/cimg/CImg.h:    //! Operator--
libvips/cimg/CImg.h:    CImgList& operator--() {
libvips/cimg/CImg.h:      cimglist_for(*this,l) (*this)[l]--;
libvips/cimg/CImg.h:    //-------------------------
libvips/cimg/CImg.h:    //-------------------------
libvips/cimg/CImg.h:    //! Return a reference to the i-th element of the image list.
libvips/cimg/CImg.h:    //! Return a reference to (x,y,z,v) pixel of the pos-th image of the list
libvips/cimg/CImg.h:      return (*this)(size-1);
libvips/cimg/CImg.h:      return (*this)(size-1);
libvips/cimg/CImg.h:          if (pos!=size-1) std::memcpy(new_data+pos+1,data+pos,sizeof(CImg<T>)*(size-1-pos));
libvips/cimg/CImg.h:          std::memset(data,0,sizeof(CImg<T>)*(size-1));
libvips/cimg/CImg.h:        else if (pos!=size-1) memmove(data+pos+1,data+pos,sizeof(CImg<T>)*(size-1-pos));
libvips/cimg/CImg.h:          data->width = img.width; data->height = img.height; data->depth = img.depth; data->dim = img.dim;
libvips/cimg/CImg.h:          data->is_shared = true; data->data = img.data;
libvips/cimg/CImg.h:          if (pos!=size-1) std::memcpy(new_data+pos+1,data+pos,sizeof(CImg<T>)*(size-1-pos));
libvips/cimg/CImg.h:          std::memset(data,0,sizeof(CImg<T>)*(size-1));
libvips/cimg/CImg.h:        else if (pos!=size-1) memmove(data+pos+1,data+pos,sizeof(CImg<T>)*(size-1-pos));
libvips/cimg/CImg.h:        if (!(--size)) return assign();
libvips/cimg/CImg.h:            std::memmove(data+pos,data+pos+1,sizeof(CImg<T>)*(size-pos));
libvips/cimg/CImg.h:          if (pos!=size) std::memcpy(new_data+pos,data+pos+1,sizeof(CImg<T>)*(size-pos));
libvips/cimg/CImg.h:      return remove(size-1);
libvips/cimg/CImg.h:      if (size) { img.swap((*this)[size-1]); return remove(size-1); }
libvips/cimg/CImg.h:      return remove(iter-data);
libvips/cimg/CImg.h:      if (size) return remove(size-1);
libvips/cimg/CImg.h:      for (unsigned int l=0; l<size/2; l++) (*this)[l].swap((*this)[size-1-l]);
libvips/cimg/CImg.h:    //! Get a sub-list
libvips/cimg/CImg.h:        throw CImgArgumentException("CImgList<%s>::get_crop() : Cannot get a sub-list (%u->%u) from a list of %u images",
libvips/cimg/CImg.h:      CImgList<T> res(i1-i0+1);
libvips/cimg/CImg.h:    //----------------------------
libvips/cimg/CImg.h:    //----------------------------
libvips/cimg/CImg.h:          cimg_forX(Ir,x) { *(--ptri) = (T)*(--ptrd); *(--ptrr) = (T)*(--ptrd); }
libvips/cimg/CImg.h:          cimg_forY(Ir,y) { ptrr-=off; ptri-=off; *ptri = (T)*(--ptrd); *ptrr = (T)*(--ptrd); }
libvips/cimg/CImg.h:          cimg_forZ(Ir,z) { ptrr-=off; ptri-=off; *ptri = (T)*(--ptrd); *ptrr = (T)*(--ptrd); }
libvips/cimg/CImg.h:          cimg_forV(Ir,k) { ptrr-=off; ptri-=off; *ptri = (T)*(--ptrd); *ptrr = (T)*(--ptrd); }
libvips/cimg/CImg.h:        if (((N-1)&N) && N!=1) throw CImgInstanceException("CImgList<%s>::FFT() : Dimension of instance image along 'x' is %d != 2^N",
libvips/cimg/CImg.h:            const unsigned int ri = N-1-i, rj = N-1-j;
libvips/cimg/CImg.h:          for (unsigned int m=N, n=N2; (j+=n)>=m; j-=m, m=n, n>>=1);
libvips/cimg/CImg.h:            const float angle = (float)((inverse?+1:-1)*2*cimg::PI/delta),
libvips/cimg/CImg.h:                const T tmpr = wr*nir - wi*nii, tmpi = wr*nii + wi*nir;
libvips/cimg/CImg.h:                nir = ir - tmpr; nii = ii - tmpi;
libvips/cimg/CImg.h:              const float nwr = wr*ca-wi*sa;
libvips/cimg/CImg.h:        if (((N-1)&N) && N!=1) throw CImgInstanceException("CImgList<%s>::FFT() : Dimension of instance image(s) along 'y' is %d != 2^N",
libvips/cimg/CImg.h:            const unsigned int ri = N-1-i, rj = N-1-j;
libvips/cimg/CImg.h:          for (unsigned int m=N, n=N2; (j+=n)>=m; j-=m, m=n, n>>=1);
libvips/cimg/CImg.h:            const float angle = (float)((inverse?+1:-1)*2*cimg::PI/delta),
libvips/cimg/CImg.h:                const T tmpr = wr*nir - wi*nii, tmpi = wr*nii + wi*nir;
libvips/cimg/CImg.h:                nir = ir - tmpr; nii = ii - tmpi;
libvips/cimg/CImg.h:              const float nwr = wr*ca-wi*sa;
libvips/cimg/CImg.h:        if (((N-1)&N) && N!=1) throw CImgInstanceException("CImgList<%s>::FFT() : Dimension of instance image(s) along 'z' is %d != 2^N",
libvips/cimg/CImg.h:            const unsigned int ri = N-1-i, rj = N-1-j;
libvips/cimg/CImg.h:          for (unsigned int m=N, n=N2; (j+=n)>=m; j-=m, m=n, n>>=1);
libvips/cimg/CImg.h:            const float angle = (float)((inverse?+1:-1)*2*cimg::PI/delta),
libvips/cimg/CImg.h:                const T tmpr = wr*nir - wi*nii, tmpi = wr*nii + wi*nir;
libvips/cimg/CImg.h:                nir = ir - tmpr; nii = ii - tmpi;
libvips/cimg/CImg.h:              const float nwr = wr*ca-wi*sa;
libvips/cimg/CImg.h:        ptrr-=whd-w; ptri-=whd-w; }
libvips/cimg/CImg.h:        ptrr-=wh-1; ptri-=wh-1; }
libvips/cimg/CImg.h:        ptrr-=whd-w; ptri-=whd-w; }
libvips/cimg/CImg.h:        ptrr-=wh-1; ptri-=wh-1; }
libvips/cimg/CImg.h:    //----------------------------------
libvips/cimg/CImg.h:    //! \name Input-Output and Display
libvips/cimg/CImg.h:    //----------------------------------
libvips/cimg/CImg.h:      std::fprintf(stderr,"%-8s(this=%p) : { size=%u, data=%p }\n",title?title:"CImgList",
libvips/cimg/CImg.h:    //! In-place version of load().
libvips/cimg/CImg.h:      err=std::sscanf(tmp,"%u%*c%255[A-Za-z ]",&n,tmp2);
libvips/cimg/CImg.h:    //! In-place version of get_load_cimg().
libvips/cimg/CImg.h:    //! In-place version of get_load_cimg().
libvips/cimg/CImg.h:    //! Load PAR-REC (Philips) image file
libvips/cimg/CImg.h:          st_slices[st_slices.size-1][7] = (float)i;
libvips/cimg/CImg.h:          sn = (unsigned int)vec[0]-1,
libvips/cimg/CImg.h:        throw CImgIOException("CImg<%s>::get_load_parrec() : File '%s' does not appear to be a valid PAR-REC file.",
libvips/cimg/CImg.h:    //! In-place version of get_load_parrec().
libvips/cimg/CImg.h:                                 const unsigned int first_frame=0, const int last_frame=-1,
libvips/cimg/CImg.h:                 pixel_type(),filename?filename:"(unknown)",last_frame,frame-1,filename);
libvips/cimg/CImg.h:                                 const unsigned int first_frame=0, const int last_frame=-1,
libvips/cimg/CImg.h:    //! In-place version of get_load_yuv().
libvips/cimg/CImg.h:                       const unsigned int first_frame=0, const int last_frame=-1,
libvips/cimg/CImg.h:    //! In-place version of get_load_yuv().
libvips/cimg/CImg.h:                       const unsigned int first_frame=0, const int last_frame=-1,
libvips/cimg/CImg.h:    //! In-place version of get_load_off()
libvips/cimg/CImg.h:    //! In-place version of get_load_off()
libvips/cimg/CImg.h:      if (size==1) data[0].save(filename,-1);
libvips/cimg/CImg.h:              res.draw_image((*this)[ll],pos,dy-(*this)[ll].height,dz-(*this)[ll].depth,dv-(*this)[ll].dim); pos+=(*this)[ll].width;
libvips/cimg/CImg.h:              res.draw_image((*this)[ll],pos,(dy-(*this)[ll].height)/2,(dz-(*this)[ll].depth)/2,(dv-(*this)[ll].dim)/2);
libvips/cimg/CImg.h:              res.draw_image((*this)[ll],dx-(*this)[ll].width,pos,dz-(*this)[ll].depth,dv-(*this)[ll].dim); pos+=(*this)[ll].height;
libvips/cimg/CImg.h:              res.draw_image((*this)[ll],(dx-(*this)[ll].width)/2,pos,(dz-(*this)[ll].depth)/2,(dv-(*this)[ll].dim)/2);
libvips/cimg/CImg.h:              res.draw_image((*this)[ll],dx-(*this)[ll].width,dy-(*this)[ll].height,pos,dv-(*this)[ll].dim); pos+=(*this)[ll].depth;
libvips/cimg/CImg.h:              res.draw_image((*this)[ll],(dx-(*this)[ll].width)/2,(dy-(*this)[ll].height)/2,pos,(dv-(*this)[ll].dim)/2);
libvips/cimg/CImg.h:              res.draw_image((*this)[ll],dx-(*this)[ll].width,dy-(*this)[ll].height,dz-(*this)[ll].depth,pos); pos+=(*this)[ll].dim;
libvips/cimg/CImg.h:              res.draw_image((*this)[ll],(dx-(*this)[ll].width)/2,(dy-(*this)[ll].height)/2,(dz-(*this)[ll].depth)/2,pos);
libvips/cimg/CImg.h:    // Create an auto-cropped font (along the X axis) from a input font \p font.
libvips/cimg/CImg.h:        else res.insert(letter.get_crop(xmin,0,xmax,letter.height-1));
libvips/cimg/CImg.h:      if (paddingx || paddingy) cimglist_for(res,l) res[l].resize(res[l].dimx()+paddingx, res[l].dimy()+paddingy,1,-100,0);
libvips/cimg/CImg.h:    //! Return a CImg pre-defined font with desired size
libvips/cimg/CImg.h:        delta = cimg::max(xM-xm,yM-ym,zM-zm),
libvips/cimg/CImg.h:        ratio = (siz>=0)?siz/delta:-siz/100;
libvips/cimg/CImg.h:        x = (T)((x-cx)*ratio);
libvips/cimg/CImg.h:        y = (T)((y-cy)*ratio);
libvips/cimg/CImg.h:        z = (T)((z-cz)*ratio);
libvips/cimg/CImg.h:        x = (T)(cx+(x-cx)*ratio);
libvips/cimg/CImg.h:        y = (T)(cy+(y-cy)*ratio);
libvips/cimg/CImg.h:        z = (T)(cz+(z-cz)*ratio);
libvips/cimg/CImg.h:   #-----------------------------------------
libvips/cimg/CImg.h:   #------------------------------------------
libvips/cimg/CImg.h:  template<typename t> inline CImg<t> operator-(const CImg<t>& img, const t& val) {
libvips/cimg/CImg.h:          return CImg<t>(img,false)-=val;
libvips/cimg/CImg.h:  template<typename t1, typename t2> inline CImg<typename cimg::largest<t1,t2>::type> operator-(const CImg<t1>& img, const t2& val) {
libvips/cimg/CImg.h:    return CImg<restype>(img,false)-=val;
libvips/cimg/CImg.h:  template<typename t> inline CImg<t> operator-(const t& val, const CImg<t>& img) {
libvips/cimg/CImg.h:    return CImg<t>(img.width,img.height,img.depth,img.dim,val)-=img;
libvips/cimg/CImg.h:  template<typename t1, typename t2> inline CImg<typename cimg::largest<t1,t2>::type> operator-(const t1& val, const CImg<t2>& img) {
libvips/cimg/CImg.h:    return CImg<restype>(img.width,img.height,img.depth,img.dim,(restype)val)-=img;
libvips/cimg/CImg.h:  template<typename t> inline CImgList<t> operator-(const CImgList<t>& list, const t& val) {
libvips/cimg/CImg.h:          return CImgList<t>(list)-=val;
libvips/cimg/CImg.h:  template<typename t1, typename t2> inline CImgList<typename cimg::largest<t1,t2>::type> operator-(const CImgList<t1>& list, const t2& val) {
libvips/cimg/CImg.h:    return CImgList<restype>(list)-=val;
libvips/cimg/CImg.h:  template<typename t> inline CImgList<double> operator-(const t& val, const CImgList<t>& list) {
libvips/cimg/CImg.h:    cimglist_for(res,l) res[l] = val-list[l];
libvips/cimg/CImg.h:  template<typename t1, typename t2> inline CImgList<typename cimg::largest<t1,t2>::type> operator-(const t1& val, const CImgList<t2>& list) {
libvips/cimg/CImg.h:    cimglist_for(res,l) res[l] = val-list[l];
libvips/cimg/CImg.h:  template<typename t1, typename t2> inline CImg<typename cimg::largest<t1,t2>::type> operator-(const CImg<t1>& img1, const CImg<t2>& img2) {
libvips/cimg/CImg.h:    return CImg<restype>(img1,false)-=img2;
libvips/cimg/CImg.h:  template<typename t1, typename t2> inline CImgList<typename cimg::largest<t1,t2>::type> operator-(const CImg<t1>& img, const CImgList<t2>& list) {
libvips/cimg/CImg.h:    cimglist_for(res,l) res[l] = img-list[l];
libvips/cimg/CImg.h:  template<typename t1, typename t2> inline CImgList<typename cimg::largest<t1,t2>::type> operator-(const CImgList<t1>& list, const CImg<t2>& img) {
libvips/cimg/CImg.h:    return CImgList<restype>(list)-=img;
libvips/cimg/CImg.h:  template<typename t1, typename t2> inline CImgList<typename cimg::largest<t1,t2>::type> operator-(const CImgList<t1>& list1, const CImgList<t2>& list2) {
libvips/cimg/CImg.h:    return CImgList<restype>(list1)-=list2;
libvips/cimg/CImg.h:     \return The button number (from 0 to 5), or -1 if the dialog window has been closed by the user.
libvips/cimg/CImg.h:        draw_rectangle(0,0,bw-1,bh-1,gray).
libvips/cimg/CImg.h:        draw_line(0,0,bw-1,0,white).draw_line(0,bh-1,0,0,white).
libvips/cimg/CImg.h:        draw_line(bw-1,0,bw-1,bh-1,black).draw_line(bw-1,bh-1,0,bh-1,black).
libvips/cimg/CImg.h:        draw_line(1,bh-2,bw-2,bh-2,gray2).draw_line(bw-2,bh-2,bw-2,1,gray2);
libvips/cimg/CImg.h:        draw_rectangle(0,0,bw-1,bh-1,gray).
libvips/cimg/CImg.h:        draw_line(0,0,bw-1,0,black).draw_line(bw-1,0,bw-1,bh-1,black).
libvips/cimg/CImg.h:        draw_line(bw-1,bh-1,0,bh-1,black).draw_line(0,bh-1,0,0,black).
libvips/cimg/CImg.h:        draw_line(1,1,bw-2,1,white).draw_line(1,bh-2,1,1,white).
libvips/cimg/CImg.h:        draw_line(bw-2,1,bw-2,bh-2,black).draw_line(bw-2,bh-2,1,bh-2,black).
libvips/cimg/CImg.h:        draw_line(2,bh-3,bw-3,bh-3,gray2).draw_line(bw-3,bh-3,bw-3,2,gray2).
libvips/cimg/CImg.h:        draw_line(4,4,bw-5,4,black,0xAAAAAAAA).draw_line(bw-5,4,bw-5,bh-5,black,0xAAAAAAAA).
libvips/cimg/CImg.h:        draw_line(bw-5,bh-5,4,bh-5,black,0xAAAAAAAA).draw_line(4,bh-5,4,4,black,0xAAAAAAAA);
libvips/cimg/CImg.h:        draw_rectangle(0,0,bw-1,bh-1,black).draw_rectangle(1,1,bw-2,bh-2,gray2).draw_rectangle(2,2,bw-3,bh-3,gray).
libvips/cimg/CImg.h:        draw_line(4,4,bw-5,4,black,0xAAAAAAAA).draw_line(bw-5,4,bw-5,bh-5,black,0xAAAAAAAA).
libvips/cimg/CImg.h:        draw_line(bw-5,bh-5,4,bh-5,black,0xAAAAAAAA).draw_line(4,bh-5,4,4,black,0xAAAAAAAA);
libvips/cimg/CImg.h:          cbuttons.insert(CImg<unsigned char>(cbutton).draw_image(buttons[ll],1+(bw-buttons[ll].dimx())/2,1+(bh-buttons[ll].dimy())/2));
libvips/cimg/CImg.h:          sbuttons.insert(CImg<unsigned char>(sbutton).draw_image(buttons[ll],(bw-buttons[ll].dimx())/2,(bh-buttons[ll].dimy())/2));
libvips/cimg/CImg.h:          buttons[ll] = CImg<unsigned char>(button).draw_image(buttons[ll],(bw-buttons[ll].dimx())/2,(bh-buttons[ll].dimy())/2);
libvips/cimg/CImg.h:          bwall = (buttons.size-1)*(12+bw) + bw,
libvips/cimg/CImg.h:          lx = 12 + (canvas.data?0:((w-24-logo.width)/2)),
libvips/cimg/CImg.h:          ly = (h-12-bh-logo.height)/2,
libvips/cimg/CImg.h:          ty = (h-12-bh-canvas.height)/2,
libvips/cimg/CImg.h:          bx = (w-bwall)/2,
libvips/cimg/CImg.h:          by = h-12-bh;
libvips/cimg/CImg.h:            draw_rectangle(0,0,w-1,h-1,gray).
libvips/cimg/CImg.h:            draw_line(0,0,w-1,0,white).draw_line(0,h-1,0,0,white).
libvips/cimg/CImg.h:            draw_line(w-1,0,w-1,h-1,black).draw_line(w-1,h-1,0,h-1,black).
libvips/cimg/CImg.h:            draw_rectangle(0,0,w-1,h-1,gray).
libvips/cimg/CImg.h:            draw_line(0,0,w-1,0,white).draw_line(0,h-1,0,0,white).
libvips/cimg/CImg.h:            draw_line(w-1,0,w-1,h-1,black).draw_line(w-1,h-1,0,h-1,black);
libvips/cimg/CImg.h:        if (centering) disp.move((CImgDisplay::screen_dimx()-disp.dimx())/2,
libvips/cimg/CImg.h:                                 (CImgDisplay::screen_dimy()-disp.dimy())/2);
libvips/cimg/CImg.h:        int oselected = -1, oclicked = -1, selected = -1, clicked = -1;
libvips/cimg/CImg.h:            clicked = -1;
libvips/cimg/CImg.h:            case cimg::keyESC: selected=-1; stopflag=true; break;
libvips/cimg/CImg.h:            case cimg::keyARROWUP: selected = (selected+buttons.size-1)%buttons.size; break;
libvips/cimg/CImg.h:        if (disp.is_closed) selected = -1;
libvips/cimg/CImg.h:        return -1+0*(int)(button1_txt-button2_txt+button3_txt-button4_txt+button5_txt-button6_txt+logo.width+(int)centering);
libvips/cimg/CImg.h:      {{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1}, {9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1}, {2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1}, {4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1}, {1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1}, {4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1}, {2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1}, {2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1}, {4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1}, {5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1}, {1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1}, {10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1}, {2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1}, {9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1}, {11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1}, {5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1},
libvips/cimg/CImg.h:       {11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1}, {11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1}, {5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1}, {5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1}, {0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1}, {6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1}, {10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1}, {1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1}, {7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1},
libvips/cimg/CImg.h:       {3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1}, {5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1}, {9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1},
libvips/cimg/CImg.h:       {8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1}, {5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1},
libvips/cimg/CImg.h:       {0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1}, {6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1}, {8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1}, {3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1}, {0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1}, {6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1},
libvips/cimg/CImg.h:       {9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1}, {8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1},
libvips/cimg/CImg.h:       {3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1}, {6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1}, {0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1}, {10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1}, {2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1},
libvips/cimg/CImg.h:       {7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1}, {7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1}, {2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1},
libvips/cimg/CImg.h:       {1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1}, {11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1}, {0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1}, {7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1}, {6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1}, {1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1}, {10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1}, {7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1}, {9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1}, {1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1}, {10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1},
libvips/cimg/CImg.h:       {8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1}, {0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1}, {1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1}, {10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1}, {10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1}, {11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1}, {6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1}, {3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1},
libvips/cimg/CImg.h:       {7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1}, {9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1}, {6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1},
libvips/cimg/CImg.h:       {9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1}, {1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1},
libvips/cimg/CImg.h:       {4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1}, {7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1}, {3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1}, {6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1}, {0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1},
libvips/cimg/CImg.h:       {11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1}, {6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1}, {9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1}, {1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1}, {10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1}, {10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1}, {0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1}, {7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1},
libvips/cimg/CImg.h:       {2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1}, {8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1}, {9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1},
libvips/cimg/CImg.h:       {1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1}, {9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1}, {5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1}, {10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1},
libvips/cimg/CImg.h:       {2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1}, {0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1},
libvips/cimg/CImg.h:       {0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1}, {9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1}, {5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1}, {5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1}, {0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1}, {9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1}, {0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1}, {3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1},
libvips/cimg/CImg.h:       {4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1}, {9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1},
libvips/cimg/CImg.h:       {11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1}, {11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1}, {9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1},
libvips/cimg/CImg.h:       {3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1}, {1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1}, {4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1}, {3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1}, {3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1}, {9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1}, {1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
libvips/cimg/CImg.h:       {0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}};
libvips/cimg/CImg.h:      nx = (unsigned int)((x1-x0+1)/resx), nxm1 = nx-1,
libvips/cimg/CImg.h:      ny = (unsigned int)((y1-y0+1)/resy), nym1 = ny-1,
libvips/cimg/CImg.h:      nz = (unsigned int)((z1-z0+1)/resz), nzm1 = nz-1;
libvips/cimg/CImg.h:    CImg<int> indices1(nx,ny,1,3,-1), indices2(indices1);
libvips/cimg/CImg.h:      indices2.fill(-1);
libvips/cimg/CImg.h:              const float Xi = X + (isovalue-val0)*resx/(val1-val0);
libvips/cimg/CImg.h:              const float Yi = Y + (isovalue-val1)*resy/(val2-val1);
libvips/cimg/CImg.h:              const float Xi = X + (isovalue-val3)*resx/(val2-val3);
libvips/cimg/CImg.h:              const float Yi = Y + (isovalue-val0)*resy/(val3-val0);
libvips/cimg/CImg.h:              const float Xi = X + (isovalue-val4)*resx/(val5-val4);
libvips/cimg/CImg.h:              const float Yi = Y + (isovalue-val5)*resy/(val6-val5);
libvips/cimg/CImg.h:              const float Xi = X + (isovalue-val7)*resx/(val6-val7);
libvips/cimg/CImg.h:              const float Yi = Y + (isovalue-val4)*resy/(val7-val4);
libvips/cimg/CImg.h:              const float Zi = Z+ (isovalue-val0)*resz/(val4-val0);
libvips/cimg/CImg.h:              const float Zi = Z + (isovalue-val1)*resz/(val5-val1);
libvips/cimg/CImg.h:              const float Zi = Z + (isovalue-val2)*resz/(val6-val2);
libvips/cimg/CImg.h:              const float Zi = Z + (isovalue-val3)*resz/(val7-val3);
libvips/cimg/CImg.h:            for (int *triangle=triangles[configuration]; *triangle!=-1; ) {
libvips/cimg/CImg.h:    static int segments[16][4] = { { -1,-1,-1,-1 }, { 0,3,-1,-1 }, { 0,1,-1,-1 }, { 1,3,-1,-1 },
libvips/cimg/CImg.h:                                   { 1,2,-1,-1 },   { 0,1,2,3 },   { 0,2,-1,-1 }, { 2,3,-1,-1 },
libvips/cimg/CImg.h:                                   { 2,3,-1,-1 },   { 0,2,-1,-1},  { 0,3,1,2 },   { 1,2,-1,-1 },
libvips/cimg/CImg.h:                                   { 1,3,-1,-1 },   { 0,1,-1,-1},  { 0,3,-1,-1},  { -1,-1,-1,-1 } };
libvips/cimg/CImg.h:      nx = (unsigned int)((x1-x0+1)/resx), nxm1 = nx-1,
libvips/cimg/CImg.h:      ny = (unsigned int)((y1-y0+1)/resy), nym1 = ny-1;
libvips/cimg/CImg.h:    CImg<int> indices1(nx,1,1,2,-1), indices2(nx,1,1,2);
libvips/cimg/CImg.h:      indices2.fill(-1);
libvips/cimg/CImg.h:            const float Xi = X + (isovalue-val0)*resx/(val1-val0);
libvips/cimg/CImg.h:            const float Yi = Y + (isovalue-val1)*resy/(val2-val1);
libvips/cimg/CImg.h:            const float Xi = X + (isovalue-val3)*resx/(val2-val3);
libvips/cimg/CImg.h:            const float Yi = Y + (isovalue-val0)*resy/(val3-val0);
libvips/cimg/CImg.h:          for (int *segment=segments[configuration]; *segment!=-1; ) {
libvips/cimg/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/cimg/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/cimg/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/cimg/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/cimg/Makefile.in:am__mv = mv -f
libvips/cimg/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/cimg/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/cimg/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/cimg/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/cimg/Makefile.in:	$(LDFLAGS) -o $@
libvips/cimg/Makefile.in:LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/cimg/Makefile.in:	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/cimg/Makefile.in:CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/cimg/Makefile.in:	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
libvips/cimg/Makefile.in:	$(LDFLAGS) -o $@
libvips/cimg/Makefile.in:@OS_WIN32_FALSE@	-Dcimg_strict \
libvips/cimg/Makefile.in:@OS_WIN32_FALSE@	-Dcimg_OS=1 \
libvips/cimg/Makefile.in:@OS_WIN32_FALSE@	-Dcimg_display_type=0 \
libvips/cimg/Makefile.in:@OS_WIN32_FALSE@	-DLOCALEDIR=\""$(LOCALEDIR)"\"
libvips/cimg/Makefile.in:@OS_WIN32_TRUE@	-Dcimg_strict \
libvips/cimg/Makefile.in:@OS_WIN32_TRUE@	-Dcimg_OS=0 \
libvips/cimg/Makefile.in:@OS_WIN32_TRUE@	-Dcimg_display_type=0 \
libvips/cimg/Makefile.in:@OS_WIN32_TRUE@	-DLOCALEDIR=\""$(LOCALEDIR)"\"
libvips/cimg/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/cimg/Makefile.in:all: all-am
libvips/cimg/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/cimg/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/cimg/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/cimg/Makefile'; \
libvips/cimg/Makefile.in:	  $(AUTOMAKE) --gnu libvips/cimg/Makefile
libvips/cimg/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/cimg/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/cimg/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/cimg/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/cimg/Makefile.in:clean-noinstLTLIBRARIES:
libvips/cimg/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/cimg/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/cimg/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/cimg/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/cimg/Makefile.in:mostlyclean-compile:
libvips/cimg/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/cimg/Makefile.in:distclean-compile:
libvips/cimg/Makefile.in:	-rm -f *.tab.c
libvips/cimg/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/cimg/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/cimg/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/cimg/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/cimg/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/cimg/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/cimg/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/cimg/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
libvips/cimg/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/cimg/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
libvips/cimg/Makefile.in:@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/cimg/Makefile.in:@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
libvips/cimg/Makefile.in:mostlyclean-libtool:
libvips/cimg/Makefile.in:	-rm -f *.lo
libvips/cimg/Makefile.in:clean-libtool:
libvips/cimg/Makefile.in:	-rm -rf .libs _libs
libvips/cimg/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/cimg/Makefile.in:	mkid -fID $$unique
libvips/cimg/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/cimg/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/cimg/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/cimg/Makefile.in:	  if test $$# -gt 0; then \
libvips/cimg/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/cimg/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/cimg/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/cimg/Makefile.in:distclean-tags:
libvips/cimg/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/cimg/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/cimg/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/cimg/Makefile.in:			   sort -u` ;; \
libvips/cimg/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/cimg/Makefile.in:	  if test -d $$d/$$file; then \
libvips/cimg/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/cimg/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/cimg/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/cimg/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/cimg/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/cimg/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/cimg/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/cimg/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/cimg/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/cimg/Makefile.in:check-am: all-am
libvips/cimg/Makefile.in:check: check-am
libvips/cimg/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/cimg/Makefile.in:install: install-am
libvips/cimg/Makefile.in:install-exec: install-exec-am
libvips/cimg/Makefile.in:install-data: install-data-am
libvips/cimg/Makefile.in:uninstall: uninstall-am
libvips/cimg/Makefile.in:install-am: all-am
libvips/cimg/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/cimg/Makefile.in:installcheck: installcheck-am
libvips/cimg/Makefile.in:install-strip:
libvips/cimg/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/cimg/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/cimg/Makefile.in:mostlyclean-generic:
libvips/cimg/Makefile.in:clean-generic:
libvips/cimg/Makefile.in:distclean-generic:
libvips/cimg/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/cimg/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/cimg/Makefile.in:maintainer-clean-generic:
libvips/cimg/Makefile.in:clean: clean-am
libvips/cimg/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/cimg/Makefile.in:	mostlyclean-am
libvips/cimg/Makefile.in:distclean: distclean-am
libvips/cimg/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/cimg/Makefile.in:	-rm -f Makefile
libvips/cimg/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/cimg/Makefile.in:	distclean-tags
libvips/cimg/Makefile.in:dvi: dvi-am
libvips/cimg/Makefile.in:dvi-am:
libvips/cimg/Makefile.in:html: html-am
libvips/cimg/Makefile.in:html-am:
libvips/cimg/Makefile.in:info: info-am
libvips/cimg/Makefile.in:info-am:
libvips/cimg/Makefile.in:install-data-am:
libvips/cimg/Makefile.in:install-dvi: install-dvi-am
libvips/cimg/Makefile.in:install-dvi-am:
libvips/cimg/Makefile.in:install-exec-am:
libvips/cimg/Makefile.in:install-html: install-html-am
libvips/cimg/Makefile.in:install-html-am:
libvips/cimg/Makefile.in:install-info: install-info-am
libvips/cimg/Makefile.in:install-info-am:
libvips/cimg/Makefile.in:install-man:
libvips/cimg/Makefile.in:install-pdf: install-pdf-am
libvips/cimg/Makefile.in:install-pdf-am:
libvips/cimg/Makefile.in:install-ps: install-ps-am
libvips/cimg/Makefile.in:install-ps-am:
libvips/cimg/Makefile.in:installcheck-am:
libvips/cimg/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/cimg/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/cimg/Makefile.in:	-rm -f Makefile
libvips/cimg/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/cimg/Makefile.in:mostlyclean: mostlyclean-am
libvips/cimg/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/cimg/Makefile.in:	mostlyclean-libtool
libvips/cimg/Makefile.in:pdf: pdf-am
libvips/cimg/Makefile.in:pdf-am:
libvips/cimg/Makefile.in:ps: ps-am
libvips/cimg/Makefile.in:ps-am:
libvips/cimg/Makefile.in:uninstall-am:
libvips/cimg/Makefile.in:.MAKE: install-am install-strip
libvips/cimg/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/cimg/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/cimg/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/cimg/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/cimg/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/cimg/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/cimg/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/cimg/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/cimg/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/cimg/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/cimg/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/cimg/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/cimg/cimg.cpp: * 	- oop, should be smalltile, probably
libvips/cimg/cimg.cpp: * 	- tiny cleanups
libvips/cimg/cimg.cpp: * 	- gtkdoc
libvips/cimg/cimg.cpp:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/cimg/cimg.cpp:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/cimg/cimg.cpp:	IMAGE *im = in->im;
libvips/cimg/cimg.cpp:	CImg<T> *img = new CImg<T>( area->width, area->height, 1, im->Bands );
libvips/cimg/cimg.cpp:	for( int y = 0; y < area->height; y++ ) {
libvips/cimg/cimg.cpp:		T *p = (T *) IM_REGION_ADDR( in, area->left, area->top + y );
libvips/cimg/cimg.cpp:		for( int x = 0; x < area->width; x++ ) {
libvips/cimg/cimg.cpp:			for( int z = 0; z < im->Bands; z++ )
libvips/cimg/cimg.cpp:			p += im->Bands;
libvips/cimg/cimg.cpp:// fill out->valid, img has pixels in img_rect
libvips/cimg/cimg.cpp:	IMAGE *im = out->im;
libvips/cimg/cimg.cpp:	Rect *valid = &out->valid;
libvips/cimg/cimg.cpp:	int x_off = valid->left - img_rect->left;
libvips/cimg/cimg.cpp:	int y_off = valid->top - img_rect->top;
libvips/cimg/cimg.cpp:	for( int y = 0; y < valid->height; y++ ) {
libvips/cimg/cimg.cpp:		T *p = (T *) IM_REGION_ADDR( out, valid->left, valid->top + y );
libvips/cimg/cimg.cpp:		for( int x = 0; x < valid->width; x++ ) {
libvips/cimg/cimg.cpp:			for( int z = 0; z < im->Bands; z++ )
libvips/cimg/cimg.cpp:			p += im->Bands;
libvips/cimg/cimg.cpp:	Rect *ir = &out->valid;
libvips/cimg/cimg.cpp:	image.width = in[0]->im->Xsize;
libvips/cimg/cimg.cpp:	image.height = in[0]->im->Ysize;
libvips/cimg/cimg.cpp:		return( -1 );
libvips/cimg/cimg.cpp:		return( -1 );
libvips/cimg/cimg.cpp:		for( int i = 0; i < greyc->iterations; i++ ) 
libvips/cimg/cimg.cpp:			img->blur_anisotropic( *msk,
libvips/cimg/cimg.cpp:				greyc->amplitude, greyc->sharpness, 
libvips/cimg/cimg.cpp:				greyc->anisotropy,
libvips/cimg/cimg.cpp:				greyc->alpha, greyc->sigma, greyc->dl, 
libvips/cimg/cimg.cpp:				greyc->da, greyc->gauss_prec, 
libvips/cimg/cimg.cpp:				greyc->interpolation, greyc->fast_approx, 
libvips/cimg/cimg.cpp:		return( -1 );
libvips/cimg/cimg.cpp:// Hmm, strange double-cast needed
libvips/cimg/cimg.cpp: * @interpolation: interpolation (eg. 0 for nearest-neighbour)
libvips/cimg/cimg.cpp: * Returns: 0 on success, -1 on error
libvips/cimg/cimg.cpp:		return( -1 );
libvips/cimg/cimg.cpp:			return( -1 );
libvips/cimg/cimg.cpp:		return( -1 );
libvips/cimg/cimg.cpp:	greyc->in = in;
libvips/cimg/cimg.cpp:	greyc->out = out;
libvips/cimg/cimg.cpp:	greyc->mask = mask;
libvips/cimg/cimg.cpp:	greyc->arry = arry;
libvips/cimg/cimg.cpp:	greyc->iterations = iterations;
libvips/cimg/cimg.cpp:	greyc->amplitude = amplitude;
libvips/cimg/cimg.cpp:	greyc->sharpness = sharpness;
libvips/cimg/cimg.cpp:	greyc->anisotropy = anisotropy;
libvips/cimg/cimg.cpp:	greyc->alpha = alpha;
libvips/cimg/cimg.cpp:	greyc->sigma = sigma;
libvips/cimg/cimg.cpp:	greyc->dl = dl;
libvips/cimg/cimg.cpp:	greyc->da = da;
libvips/cimg/cimg.cpp:	greyc->gauss_prec = gauss_prec;
libvips/cimg/cimg.cpp:	greyc->interpolation = interpolation;
libvips/cimg/cimg.cpp:	greyc->fast_approx = fast_approx;
libvips/cimg/cimg.cpp:	switch( in->BandFmt ) {
libvips/cimg/cimg.cpp:			// double-cast to give g++ enough context to expand the
libvips/cimg/cimg.cpp:			return( -1 );
libvips/cimg/cimg.cpp:			return( -1 );
libvips/cimg/cimg.cpp:			return( -1 );
libvips/cimg/cimg_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/cimg/cimg_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/cimg/cimg_dispatch.c:		return( -1 );
libvips/cimg/cimg_dispatch.c:        "noise-removing filter",      	/* Description */
libvips/cimg/cimg_dispatch.c:		return( -1 );
libvips/cimg/cimg_dispatch.c:        "noise-removing filter, with a mask", /* Description */
libvips/format/im_jpeg2vips.c:/* Convert 1 or 3-band 8-bit VIPS images to/from JPEG.
libvips/format/im_jpeg2vips.c: *	- better no-overshoot on tile loop
libvips/format/im_jpeg2vips.c: *	- better demand size choice for eval
libvips/format/im_jpeg2vips.c: *	- update im_error()/im_warn()
libvips/format/im_jpeg2vips.c: *	- now loads and saves exif data
libvips/format/im_jpeg2vips.c: * 	- now loads ICC profiles
libvips/format/im_jpeg2vips.c: * 	- now saves ICC profiles from the VIPS header
libvips/format/im_jpeg2vips.c: * 	- jpeg load sets vips xres/yres from exif, if possible
libvips/format/im_jpeg2vips.c: * 	- jpeg save sets exif xres/yres from vips, if possible
libvips/format/im_jpeg2vips.c: * 	- cut from old vips_jpeg.c
libvips/format/im_jpeg2vips.c: * 	- add </libexif/ prefix if required
libvips/format/im_jpeg2vips.c: * 	- spot CMYK jpegs and set Type
libvips/format/im_jpeg2vips.c: * 	- spot Adobe CMYK JPEG and invert ink density
libvips/format/im_jpeg2vips.c: * 	- added "shrink" parameter
libvips/format/im_jpeg2vips.c: *	- added "fail" option ... fail on any warnings
libvips/format/im_jpeg2vips.c: * 	- also set scale_num on shrink (thanks Guido)
libvips/format/im_jpeg2vips.c: * 	- gtkdoc
libvips/format/im_jpeg2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_jpeg2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_jpeg2vips.c:	return( -1 );
libvips/format/im_jpeg2vips.c:#include <exif-data.h>
libvips/format/im_jpeg2vips.c:#include <exif-loader.h>
libvips/format/im_jpeg2vips.c:#include <exif-ifd.h>
libvips/format/im_jpeg2vips.c:#include <exif-utils.h>
libvips/format/im_jpeg2vips.c:#include <libexif/exif-data.h>
libvips/format/im_jpeg2vips.c:#include <libexif/exif-loader.h>
libvips/format/im_jpeg2vips.c:#include <libexif/exif-ifd.h>
libvips/format/im_jpeg2vips.c:#include <libexif/exif-utils.h>
libvips/format/im_jpeg2vips.c:	FILE *fp;		/* fclose() if non-NULL */
libvips/format/im_jpeg2vips.c:/* New output message method - send to VIPS.
libvips/format/im_jpeg2vips.c:	(*cinfo->err->format_message)( cinfo, buffer );
libvips/format/im_jpeg2vips.c:	ErrorManager *eman = (ErrorManager *) cinfo->err;
libvips/format/im_jpeg2vips.c:	if( eman->fp ) {
libvips/format/im_jpeg2vips.c:		(void) fclose( eman->fp );
libvips/format/im_jpeg2vips.c:		eman->fp = NULL;
libvips/format/im_jpeg2vips.c:	(*cinfo->err->output_message)( cinfo );
libvips/format/im_jpeg2vips.c:	longjmp( eman->jmp, 1 );
libvips/format/im_jpeg2vips.c:/* Print exif for debugging ... hacked from exif-0.6.9/actions.c
libvips/format/im_jpeg2vips.c:                printf( "%-7.7s", exif_ifd_get_name( i ) );
libvips/format/im_jpeg2vips.c:                printf( "  0x%04x %-29.29s", tag, name );
libvips/format/im_jpeg2vips.c:                        if( exif_content_get_entry( data->ifd[i], tag ) )
libvips/format/im_jpeg2vips.c:                                printf( "   -   " );
libvips/format/im_jpeg2vips.c:	printf( "%s", exif_tag_get_title( entry->tag ) );
libvips/format/im_jpeg2vips.c:	printf( "%s", exif_format_get_name( entry->format ) );
libvips/format/im_jpeg2vips.c:	printf( "%d bytes", entry->size );
libvips/format/im_jpeg2vips.c:        printf( "-\n" );
libvips/format/im_jpeg2vips.c:	printf( "%-20.20s", "Tag" );
libvips/format/im_jpeg2vips.c:	printf( "%-58.58s", "Value" );
libvips/format/im_jpeg2vips.c:        if( data->size ) 
libvips/format/im_jpeg2vips.c:                printf( "contains thumbnail of %d bytes\n", data->size );
libvips/format/im_jpeg2vips.c:	vips_buf_appendf( &name, "exif-%s", exif_tag_get_title( entry->tag ) );
libvips/format/im_jpeg2vips.c:		exif_format_get_name( entry->format ),
libvips/format/im_jpeg2vips.c:		entry->size );
libvips/format/im_jpeg2vips.c:		if( (entry = exif_content_get_entry( ed->ifd[i], tag )) )
libvips/format/im_jpeg2vips.c:		entry->format != EXIF_FORMAT_RATIONAL ||
libvips/format/im_jpeg2vips.c:		entry->components != 1 )
libvips/format/im_jpeg2vips.c:		return( -1 );
libvips/format/im_jpeg2vips.c:	rational = exif_get_rational( entry->data,
libvips/format/im_jpeg2vips.c:		entry->format != EXIF_FORMAT_SHORT ||
libvips/format/im_jpeg2vips.c:		entry->components != 1 )
libvips/format/im_jpeg2vips.c:		return( -1 );
libvips/format/im_jpeg2vips.c:	*out = exif_get_short( entry->data,
libvips/format/im_jpeg2vips.c:	im->Xres = xres;
libvips/format/im_jpeg2vips.c:	im->Yres = yres;
libvips/format/im_jpeg2vips.c:		return( -1 );
libvips/format/im_jpeg2vips.c:		return( -1 );
libvips/format/im_jpeg2vips.c:		return( -1 );
libvips/format/im_jpeg2vips.c:	if( ed->size > 0 ) {
libvips/format/im_jpeg2vips.c:		Or we could attach non-human-readable tags here (int, double
libvips/format/im_jpeg2vips.c: * do 255-pel.
libvips/format/im_jpeg2vips.c:	cinfo->scale_denom = shrink;
libvips/format/im_jpeg2vips.c:	cinfo->scale_num = 1;
libvips/format/im_jpeg2vips.c:	switch( cinfo->out_color_space ) {
libvips/format/im_jpeg2vips.c:		/* Photoshop writes CMYK JPEG inverted :-( Maybe this is a
libvips/format/im_jpeg2vips.c:		if( cinfo->saw_Adobe_marker ) 
libvips/format/im_jpeg2vips.c:		 cinfo->output_width, cinfo->output_height,
libvips/format/im_jpeg2vips.c:		 cinfo->output_components,
libvips/format/im_jpeg2vips.c:	for( p = cinfo->marker_list; p; p = p->next ) {
libvips/format/im_jpeg2vips.c:		switch( p->marker ) {
libvips/format/im_jpeg2vips.c:				p->data_length );
libvips/format/im_jpeg2vips.c:			if( read_exif( out, p->data, p->data_length ) )
libvips/format/im_jpeg2vips.c:				return( -1 );
libvips/format/im_jpeg2vips.c:				p->data_length );
libvips/format/im_jpeg2vips.c:			if( p->data_length > 14 &&
libvips/format/im_jpeg2vips.c:					(char *) p->data ) ) {
libvips/format/im_jpeg2vips.c:				int cur_marker = p->data[12] - 1;
libvips/format/im_jpeg2vips.c:					app2_data[cur_marker] = p->data + 14;
libvips/format/im_jpeg2vips.c:						p->data_length - 14;
libvips/format/im_jpeg2vips.c:				p->data_length );
libvips/format/im_jpeg2vips.c:			return( -1 );
libvips/format/im_jpeg2vips.c:			return( -1 );
libvips/format/im_jpeg2vips.c:		return( -1 );
libvips/format/im_jpeg2vips.c:	sz = cinfo->output_width * cinfo->output_components;
libvips/format/im_jpeg2vips.c:	row_pointer[0] = (JSAMPLE *) (*cinfo->mem->alloc_large) 
libvips/format/im_jpeg2vips.c:	for( y = 0; y < out->Ysize; y++ ) {
libvips/format/im_jpeg2vips.c:				row_pointer[0][x] = 255 - row_pointer[0][x];
libvips/format/im_jpeg2vips.c:			return( -1 );
libvips/format/im_jpeg2vips.c:			return( -1 );
libvips/format/im_jpeg2vips.c:		return( -1 );
libvips/format/im_jpeg2vips.c:                return( -1 );
libvips/format/im_jpeg2vips.c:			result = -1;
libvips/format/im_jpeg2vips.c: * Read a JPEG file into a VIPS image. It can read most 8-bit JPEG images, 
libvips/format/im_jpeg2vips.c: * filename.jpg:<emphasis>shrink-factor</emphasis>,<emphasis>fail</emphasis>
libvips/format/im_jpeg2vips.c: * <emphasis>shrink-factor</emphasis> 
libvips/format/im_jpeg2vips.c: * Returns: 0 on success, -1 on error.
libvips/format/im_jpeg2vips.c:	object_class->nickname = "jpeg";
libvips/format/im_jpeg2vips.c:	object_class->description = _( "JPEG" );
libvips/format/im_jpeg2vips.c:	format_class->is_a = isjpeg;
libvips/format/im_jpeg2vips.c:	format_class->header = jpeg2vips_header;
libvips/format/im_jpeg2vips.c:	format_class->load = im_jpeg2vips;
libvips/format/im_jpeg2vips.c:	format_class->save = im_vips2jpeg;
libvips/format/im_jpeg2vips.c:	format_class->suffs = jpeg_suffs;
libvips/format/matlab.c: *	- transpose on load, assemble planes into bands (thanks Mikhail)
libvips/format/matlab.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/matlab.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/matlab.c:/* What we track during a Mat-file read.
libvips/format/matlab.c:	IM_FREE( read->filename );
libvips/format/matlab.c:	IM_FREEF( Mat_VarFree, read->var );
libvips/format/matlab.c:	IM_FREEF( Mat_Close, read->mat );
libvips/format/matlab.c:	read->filename = im_strdup( NULL, filename );
libvips/format/matlab.c:	read->out = out;
libvips/format/matlab.c:	read->mat = NULL;
libvips/format/matlab.c:	read->var = NULL;
libvips/format/matlab.c:	if( !(read->mat = Mat_Open( filename, MAT_ACC_RDONLY )) ) {
libvips/format/matlab.c:		if( !(read->var = Mat_VarReadNextInfo( read->mat )) ) {
libvips/format/matlab.c:		printf( "var->name == %s\n", read->var->name );
libvips/format/matlab.c:		printf( "var->class_type == %d\n", read->var->class_type );
libvips/format/matlab.c:		printf( "var->rank == %d\n", read->var->rank );
libvips/format/matlab.c:		if( read->var->rank >= 1 && read->var->rank <= 3 )
libvips/format/matlab.c:		IM_FREEF( Mat_VarFree, read->var );
libvips/format/matlab.c:/* Matlab classes -> VIPS band formats.
libvips/format/matlab.c:	switch( var->rank ) {
libvips/format/matlab.c:		bands = var->dims[2];
libvips/format/matlab.c:		height = var->dims[1];
libvips/format/matlab.c:		width = var->dims[0];
libvips/format/matlab.c:			_( "unsupported rank %d\n" ), var->rank );
libvips/format/matlab.c:		return( -1 );
libvips/format/matlab.c:		if( mat2vips_formats[i][0] == var->class_type )
libvips/format/matlab.c:			var->class_type );
libvips/format/matlab.c:		return( -1 );
libvips/format/matlab.c:		return( -1 );
libvips/format/matlab.c:	if( mat2vips_get_header( read->var, read->out ) ) {
libvips/format/matlab.c:		return( -1 );
libvips/format/matlab.c:	/* Matlab images are plane-separate, so we have to assemble bands in
libvips/format/matlab.c:	 * image-size chunks.
libvips/format/matlab.c:	const int is = es * im->Xsize * im->Ysize;
libvips/format/matlab.c:		return( -1 );
libvips/format/matlab.c:		return( -1 );
libvips/format/matlab.c:		return( -1 );
libvips/format/matlab.c:	for( y = 0; y < im->Ysize; y++ ) {
libvips/format/matlab.c:		const PEL *p = var->data + y * es;
libvips/format/matlab.c:		for( x = 0; x < im->Xsize; x++ ) {
libvips/format/matlab.c:			for( b = 0; b < im->Bands; b++ ) {
libvips/format/matlab.c:			p += es * im->Ysize;
libvips/format/matlab.c:			return( -1 );
libvips/format/matlab.c: * Returns: 0 on success, -1 on error.
libvips/format/matlab.c:		return( -1 );
libvips/format/matlab.c:	if( mat2vips_get_header( read->var, read->out ) ||
libvips/format/matlab.c:		mat2vips_get_data( read->mat, read->var, read->out ) ) {
libvips/format/matlab.c:		return( -1 );
libvips/format/matlab.c:	object_class->nickname = "mat";
libvips/format/matlab.c:	object_class->description = _( "Matlab" );
libvips/format/matlab.c:	format_class->is_a = ismat;
libvips/format/matlab.c:	format_class->header = mat2vips_header;
libvips/format/matlab.c:	format_class->load = im_mat2vips;
libvips/format/matlab.c:	format_class->save = NULL;
libvips/format/matlab.c:	format_class->suffs = mat_suffs;
libvips/format/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
libvips/format/im_tiff2vips.c: * -----------------------------
libvips/format/im_tiff2vips.c: *	- more general
libvips/format/im_tiff2vips.c: *	- memory leaks fixed
libvips/format/im_tiff2vips.c: *	- TIFF error handler added
libvips/format/im_tiff2vips.c: *	- read errors detected correctly
libvips/format/im_tiff2vips.c: * It convert LAB-tiff format to IM_TYPE_LABQ in vips format.
libvips/format/im_tiff2vips.c: *  Copyright July-1995 Ahmed Abbood.
libvips/format/im_tiff2vips.c: *	- now calls TIFFClose ... stupid
libvips/format/im_tiff2vips.c: *	- typo on MINISBLACK ...
libvips/format/im_tiff2vips.c: *	- completely redone for TIFF 6
libvips/format/im_tiff2vips.c: *	- now full baseline TIFF 6 reader, and does CIELAB as well
libvips/format/im_tiff2vips.c: *	- added partial read for tiled images
libvips/format/im_tiff2vips.c: *	- extra subsample parameter
libvips/format/im_tiff2vips.c: *	- im_istiffpyramid() added
libvips/format/im_tiff2vips.c: *	- if loading YCbCr, convert to IM_CODING_LABQ
libvips/format/im_tiff2vips.c: *	- now reads 16-bit greyscale and RGB
libvips/format/im_tiff2vips.c: *	- now used "rb" mode on systems that need binary open
libvips/format/im_tiff2vips.c: *	- no sub-sampling if sub == 1
libvips/format/im_tiff2vips.c: *	- ooops, else missing for subsample stuff above
libvips/format/im_tiff2vips.c: *	- tiled 16-bit greyscale read was broken
libvips/format/im_tiff2vips.c: *	- added mutex for TIFFReadTile() calls
libvips/format/im_tiff2vips.c: *	- removed TIFFmalloc/TIFFfree usage
libvips/format/im_tiff2vips.c: *	- HAVE_TIFF turns on TIFF goodness
libvips/format/im_tiff2vips.c: *	- im_tiff2vips_header() added
libvips/format/im_tiff2vips.c: *	- subsample now in input filename
libvips/format/im_tiff2vips.c: *	- ... and it's a page number (from 0) instead
libvips/format/im_tiff2vips.c: *	- now reads CMYK
libvips/format/im_tiff2vips.c: *	- hmm, dpi -> ppm conversion was wrong!
libvips/format/im_tiff2vips.c: *	- oops, handle TIFF errors better
libvips/format/im_tiff2vips.c: *	- reads 8-bit RGBA
libvips/format/im_tiff2vips.c: *	- reads 16-bit LAB
libvips/format/im_tiff2vips.c: *	- pixels/cm res read was wrong
libvips/format/im_tiff2vips.c: *	- read 32-bit float greyscale and rgb
libvips/format/im_tiff2vips.c: *	- better handling of edge tiles (thanks Ruven)
libvips/format/im_tiff2vips.c: *	- cleanup
libvips/format/im_tiff2vips.c: *	- added broken tile read mode
libvips/format/im_tiff2vips.c: *	- better no resolution diagnostic
libvips/format/im_tiff2vips.c: *	- reads 16 bit RGBA
libvips/format/im_tiff2vips.c: *	- arrg, 16bit RGB was broken, thanks haida
libvips/format/im_tiff2vips.c: *	- add a TIFF warning handler, stops occasional libMagick exceptions
libvips/format/im_tiff2vips.c: *	- load 32-bit float LAB
libvips/format/im_tiff2vips.c: *	- onebit read no longer reads one byte too many on multiple of 8 wide
libvips/format/im_tiff2vips.c: *	- 16 bit LAB read was broken
libvips/format/im_tiff2vips.c: * 	- read any ICCPROFILE tag
libvips/format/im_tiff2vips.c: * 	- set RGB16 and GREY16 Type
libvips/format/im_tiff2vips.c: * 	- use external im_tile_cache() operation for great code shrinkage
libvips/format/im_tiff2vips.c: * 	- less RAM usage too, esp. with >1 CPU
libvips/format/im_tiff2vips.c: * 	- should be slightly faster
libvips/format/im_tiff2vips.c: * 	- removed 'broken' read option
libvips/format/im_tiff2vips.c: * 	- remove "b" option on TIFFOpen()
libvips/format/im_tiff2vips.c: * 	- set IM_META_RESOLUTION_UNIT
libvips/format/im_tiff2vips.c: * 	- allow CMYKA (thanks Doron)
libvips/format/im_tiff2vips.c: * 	- convert YCbCr to RGB on read (thanks Ole)
libvips/format/im_tiff2vips.c: * 	- reorganise for image format system
libvips/format/im_tiff2vips.c: * 	- dont read with mmap: no performance advantage with libtiff, chews up 
libvips/format/im_tiff2vips.c: * 	- read strip-wise, not scanline-wise ... works with more compression /
libvips/format/im_tiff2vips.c: * 	- gtkdoc
libvips/format/im_tiff2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_tiff2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_tiff2vips.c:	return( -1 );
libvips/format/im_tiff2vips.c:/* Scanline-type process function.
libvips/format/im_tiff2vips.c:	/* RGB <-> YCbCr conversion.
libvips/format/im_tiff2vips.c:	/* RGB -> LAB conversion.
libvips/format/im_tiff2vips.c:/* Per-scanline process function for IM_CODING_LABQ.
libvips/format/im_tiff2vips.c:/* Read an 8-bit LAB image.
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, 3 ) ||
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 8 ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = 4; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_UCHAR; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_LABQ; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_LAB; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = labpack_line;
libvips/format/im_tiff2vips.c:	rtiff->client = NULL;
libvips/format/im_tiff2vips.c:/* Per-scanline process function for IM_CODING_LABQ.
libvips/format/im_tiff2vips.c:/* Read a 16-bit LAB image.
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, 3 ) ||
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 16 ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = 3; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_SHORT; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_LABS; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = labs_line;
libvips/format/im_tiff2vips.c:	rtiff->client = NULL;
libvips/format/im_tiff2vips.c:/* Per-scanline process function for 1 bit images.
libvips/format/im_tiff2vips.c:	int white = black ^ -1;
libvips/format/im_tiff2vips.c:/* Read a 1-bit TIFF image. Pass in pixel values to use for black and white.
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, 1 ) ||
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 1 ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = 1; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_UCHAR; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_B_W; 
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	rtiff->sfn = onebit_line;
libvips/format/im_tiff2vips.c:	rtiff->client = ppm;
libvips/format/im_tiff2vips.c:/* Per-scanline process function for 8-bit greyscale images.
libvips/format/im_tiff2vips.c:/* Read a 8-bit grey-scale TIFF image. 
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, 1 ) ||
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 8 ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = 1; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_UCHAR; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_B_W; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = greyscale8_line;
libvips/format/im_tiff2vips.c:	rtiff->client = mask;
libvips/format/im_tiff2vips.c:/* Per-scanline process function for 16-bit greyscale images.
libvips/format/im_tiff2vips.c:/* Read a 16-bit grey-scale TIFF image. 
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, 1 ) ||
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 16 ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = 1; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_USHORT; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_GREY16; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = greyscale16_line;
libvips/format/im_tiff2vips.c:	rtiff->client = mask;
libvips/format/im_tiff2vips.c:/* Per-scanline process function for 32-bit floating point greyscale images.
libvips/format/im_tiff2vips.c:/* Read a 32-bit floating point greyscale TIFF image. What do we do about
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, 1 ) ||
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 32 ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = 1; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_FLOAT;
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_B_W; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = (scanline_process_fn) greyscale32f_line;
libvips/format/im_tiff2vips.c:	rtiff->client = NULL;
libvips/format/im_tiff2vips.c:/* Per-scanline process function for palette images.
libvips/format/im_tiff2vips.c:/* Read a palette-ised TIFF image. Again, we only allow 8-bits for now.
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, 1 ) ||
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 8 ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	/* Get maps, convert to 8-bit data.
libvips/format/im_tiff2vips.c:	if( !TIFFGetField( rtiff->tiff, 
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = 3; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_UCHAR; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_sRGB; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = palette_line;
libvips/format/im_tiff2vips.c:	rtiff->client = maps;
libvips/format/im_tiff2vips.c:/* Per-scanline process function for 8-bit RGB/RGBA/CMYK/CMYKA/etc.
libvips/format/im_tiff2vips.c:		for( b = 0; b < im->Bands; b++ )
libvips/format/im_tiff2vips.c:		q += im->Bands;
libvips/format/im_tiff2vips.c:		p += im->Bands;
libvips/format/im_tiff2vips.c:/* Read an 8-bit RGB/RGBA image.
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 8 ) ||
libvips/format/im_tiff2vips.c:		!tfget16( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, &bands ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = bands; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_UCHAR; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_sRGB; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = (scanline_process_fn) rgbcmyk8_line;
libvips/format/im_tiff2vips.c:	rtiff->client = out;
libvips/format/im_tiff2vips.c:/* Per-scanline process function for RGB/RGBA 16.
libvips/format/im_tiff2vips.c:		for( b = 0; b < im->Bands; b++ )
libvips/format/im_tiff2vips.c:		q1 += im->Bands;
libvips/format/im_tiff2vips.c:		p1 += im->Bands;
libvips/format/im_tiff2vips.c:/* Read a 16-bit RGB/RGBA image.
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 16 ) ||
libvips/format/im_tiff2vips.c:		!tfget16( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, &bands ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = bands; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_USHORT; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_RGB16; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = (scanline_process_fn) rgb16_line;
libvips/format/im_tiff2vips.c:	rtiff->client = out;
libvips/format/im_tiff2vips.c:/* Per-scanline process function for 32f.
libvips/format/im_tiff2vips.c:/* Read a 32-bit float image. RGB or LAB, with or without alpha.
libvips/format/im_tiff2vips.c:	if( !tfget16( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, &bands ) ||
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 32 ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = bands; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_FLOAT; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:		out->Type = IM_TYPE_LAB; 
libvips/format/im_tiff2vips.c:		out->Type = IM_TYPE_sRGB; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = r32f_line;
libvips/format/im_tiff2vips.c:	rtiff->client = NULL;
libvips/format/im_tiff2vips.c:	if( !tfequals( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, 8 ) ||
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, TIFFTAG_INKSET, INKSET_CMYK ) ||
libvips/format/im_tiff2vips.c:		!tfget16( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, &bands ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	out->Bands = bands; 
libvips/format/im_tiff2vips.c:	out->BandFmt = IM_BANDFMT_UCHAR; 
libvips/format/im_tiff2vips.c:	out->Coding = IM_CODING_NONE; 
libvips/format/im_tiff2vips.c:	out->Type = IM_TYPE_CMYK; 
libvips/format/im_tiff2vips.c:	rtiff->sfn = (scanline_process_fn) rgbcmyk8_line;
libvips/format/im_tiff2vips.c:	rtiff->client = out;
libvips/format/im_tiff2vips.c:			/* In pixels-per-inch ... convert to mm.
libvips/format/im_tiff2vips.c:			/* In pixels-per-centimetre ... convert to mm.
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:			"TIFF image \"%s\" -- defaulting to 1 pixel per mm" ), 
libvips/format/im_tiff2vips.c:	out->Xres = x;
libvips/format/im_tiff2vips.c:	out->Yres = y;
libvips/format/im_tiff2vips.c:	if( tfexists( rtiff->tiff, TIFFTAG_PLANARCONFIG ) && 
libvips/format/im_tiff2vips.c:		!tfequals( rtiff->tiff, 
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	if( !tfget32( rtiff->tiff, TIFFTAG_IMAGEWIDTH, &out->Xsize ) ||
libvips/format/im_tiff2vips.c:		!tfget32( rtiff->tiff, TIFFTAG_IMAGELENGTH, &out->Ysize ) ||
libvips/format/im_tiff2vips.c:		parse_resolution( rtiff->tiff, out ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	if( !tfget16( rtiff->tiff, TIFFTAG_PHOTOMETRIC, &pm ) ||
libvips/format/im_tiff2vips.c:		!tfget16( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, &bps ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:			if( !tfget16( rtiff->tiff, 
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:					return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:			if( !tfget16( rtiff->tiff, 
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:					return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:		TIFFSetField( rtiff->tiff, 
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:			if( !tfget16( rtiff->tiff, 
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:					return( -1 );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	if( TIFFGetField( rtiff->tiff, 
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:	if( !(buf = im_malloc( NULL, TIFFTileSize( rtiff->tiff ) )) )
libvips/format/im_tiff2vips.c:	Rect *r = &out->valid;
libvips/format/im_tiff2vips.c:	int xs = (r->left / rtiff->twidth) * rtiff->twidth;
libvips/format/im_tiff2vips.c:	int ys = (r->top / rtiff->theight) * rtiff->theight;
libvips/format/im_tiff2vips.c:	int tls = TIFFTileSize( rtiff->tiff ) / rtiff->theight;
libvips/format/im_tiff2vips.c:	 * are <1 byte per pel, like onebit :-( Fortunately, it's only used
libvips/format/im_tiff2vips.c:	int tps = tls / rtiff->twidth;
libvips/format/im_tiff2vips.c:	for( y = ys; y < IM_RECT_BOTTOM( r ); y += rtiff->theight )
libvips/format/im_tiff2vips.c:		for( x = xs; x < IM_RECT_RIGHT( r ); x += rtiff->twidth ) {
libvips/format/im_tiff2vips.c:			g_mutex_lock( rtiff->tlock );
libvips/format/im_tiff2vips.c:			if( TIFFReadTile( rtiff->tiff, buf, 
libvips/format/im_tiff2vips.c:				g_mutex_unlock( rtiff->tlock );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:			g_mutex_unlock( rtiff->tlock );
libvips/format/im_tiff2vips.c:			tile.width = rtiff->twidth;
libvips/format/im_tiff2vips.c:			tile.height = rtiff->twidth;
libvips/format/im_tiff2vips.c:					(hit.left - tile.left) * tps +
libvips/format/im_tiff2vips.c:					(hit.top - tile.top + z) * tls;
libvips/format/im_tiff2vips.c:				rtiff->sfn( q, p, hit.width, rtiff->client );
libvips/format/im_tiff2vips.c:/* Tile-type TIFF reader core - pass in a per-tile transform. Generate into
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	if( !tfget32( rtiff->tiff, TIFFTAG_TILEWIDTH, &rtiff->twidth ) ||
libvips/format/im_tiff2vips.c:		!tfget32( rtiff->tiff, TIFFTAG_TILELENGTH, &rtiff->theight ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	/* Make sure we can write PIO-style.
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		rtiff->twidth, rtiff->theight,
libvips/format/im_tiff2vips.c:		2 * (1 + raw->Xsize / rtiff->twidth) ) ) 
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:/* Stripwise reading - we assume strips are written top-to-bottom. Not sure if
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	if( !tfget32( rtiff->tiff, TIFFTAG_ROWSPERSTRIP, &rows_per_strip ) )
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	scanline_size = TIFFScanlineSize( rtiff->tiff );
libvips/format/im_tiff2vips.c:	strip_size = TIFFStripSize( rtiff->tiff );
libvips/format/im_tiff2vips.c:	number_of_strips = TIFFNumberOfStrips( rtiff->tiff );
libvips/format/im_tiff2vips.c:	/* Make sure we can write WIO-style.
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		length = TIFFReadEncodedStrip( rtiff->tiff, 
libvips/format/im_tiff2vips.c:			strip, tbuf, (tsize_t) -1 );
libvips/format/im_tiff2vips.c:		if( length == -1 ) {
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:			i < rows_per_strip && y + i < out->Ysize; 
libvips/format/im_tiff2vips.c:			rtiff->sfn( vbuf, p, out->Xsize, rtiff->client );
libvips/format/im_tiff2vips.c:				return( -1 );
libvips/format/im_tiff2vips.c:	IM_FREEF( TIFFClose, rtiff->tiff );
libvips/format/im_tiff2vips.c:	IM_FREEF( g_mutex_free, rtiff->tlock );
libvips/format/im_tiff2vips.c:	rtiff->filename = NULL;
libvips/format/im_tiff2vips.c:	rtiff->out = out;
libvips/format/im_tiff2vips.c:	rtiff->filename = im_strdup( out, name );
libvips/format/im_tiff2vips.c:	rtiff->page = 0;
libvips/format/im_tiff2vips.c:	rtiff->tiff = NULL;
libvips/format/im_tiff2vips.c:	rtiff->sfn = NULL;
libvips/format/im_tiff2vips.c:	rtiff->client = NULL;
libvips/format/im_tiff2vips.c:	rtiff->twidth = 0;
libvips/format/im_tiff2vips.c:	rtiff->theight = 0;
libvips/format/im_tiff2vips.c:	rtiff->tlock = g_mutex_new();
libvips/format/im_tiff2vips.c:		rtiff->page = atoi( q );
libvips/format/im_tiff2vips.c:		if( rtiff->page < 0 || rtiff->page > 1000 ) {
libvips/format/im_tiff2vips.c:				rtiff->page );
libvips/format/im_tiff2vips.c:	/* No mmap --- no performance advantage with libtiff, and it burns up
libvips/format/im_tiff2vips.c: * Returns: 0 on success, -1 on error.
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	if( !(rtiff->tiff = get_directory( rtiff->filename, rtiff->page )) ) {
libvips/format/im_tiff2vips.c:			"contain page %d" ), rtiff->page );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	if( TIFFIsTiled( rtiff->tiff ) ) {
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:			return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	if( !(rtiff->tiff = get_directory( rtiff->filename, rtiff->page )) ) {
libvips/format/im_tiff2vips.c:			rtiff->page );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:		return( -1 );
libvips/format/im_tiff2vips.c:	object_class->nickname = "tiff";
libvips/format/im_tiff2vips.c:	object_class->description = _( "TIFF" );
libvips/format/im_tiff2vips.c:	format_class->is_a = istiff;
libvips/format/im_tiff2vips.c:	format_class->header = tiff2vips_header;
libvips/format/im_tiff2vips.c:	format_class->load = im_tiff2vips;
libvips/format/im_tiff2vips.c:	format_class->save = im_vips2tiff;
libvips/format/im_tiff2vips.c:	format_class->get_flags = tiff_flags;
libvips/format/im_tiff2vips.c:	format_class->suffs = tiff_suffs;
libvips/format/im_analyze2vips.c:/* Read a Analyze file. Old-style header (so called 7.5 format).
libvips/format/im_analyze2vips.c: * 	- dbh.h header from Ralph Myers
libvips/format/im_analyze2vips.c: * 	- better byteswapper
libvips/format/im_analyze2vips.c: *	- fix signed/unsigned warning
libvips/format/im_analyze2vips.c: * 	- try harder not to generate error messages in "isanalyze"
libvips/format/im_analyze2vips.c: * 	- gtkdoc
libvips/format/im_analyze2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_analyze2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_analyze2vips.c:	{ "dsr-header_key.sizeof_hdr", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-header_key.data_type", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-header_key.db_name", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-header_key.extents", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-header_key.session_error", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-header_key.regular", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-header_key.hkey_un0", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.dim[0]", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.dim[1]", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.dim[2]", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.dim[3]", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.dim[4]", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.dim[5]", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.dim[6]", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.dim[7]", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.vox_units[0]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.vox_units[1]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.vox_units[2]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.vox_units[3]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_units[0]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_units[1]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_units[2]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_units[3]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_units[4]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_units[5]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_units[6]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_units[7]", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.data_type", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.bitpix", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.dim_un0", SHORT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.pixdim[0]", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.pixdim[1]", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.pixdim[2]", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.pixdim[3]", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.pixdim[4]", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.pixdim[5]", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.pixdim[6]", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.pixdim[7]", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.vox_offset", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_max", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.cal_min", FLOAT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.compressed", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.verified", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.glmax", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-image_dimension.glmin", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.descrip", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.aux_file", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.orient", BYTE, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.originator", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.generated", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.scannum", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.patient_id", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.exp_date", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.exp_time", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.hist_un0", STRING, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.views", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.vols_added", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.start_field", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.field_skip", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.omax", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.omin", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.smax", INT, 
libvips/format/im_analyze2vips.c:	{ "dsr-data_history.smin", INT, 
libvips/format/im_analyze2vips.c: * 	"fred" 		-> "fred.hdr", "fred.img"
libvips/format/im_analyze2vips.c: * 	"fred.img" 	-> "fred.hdr", "fred.img"
libvips/format/im_analyze2vips.c:/* str is a str which may not be NULL-terminated. Return a pointer to a static
libvips/format/im_analyze2vips.c: * buffer with a NULL-terminated version so we can safely printf() the string.
libvips/format/im_analyze2vips.c:	if( (int) len != d->hk.sizeof_hdr ) {
libvips/format/im_analyze2vips.c:	if( d->dime.dim[0] < 2 || d->dime.dim[0] > 7 ) {
libvips/format/im_analyze2vips.c:			_( "%d-dimensional images not supported" ), 
libvips/format/im_analyze2vips.c:			d->dime.dim[0] );
libvips/format/im_analyze2vips.c:		return( -1 );
libvips/format/im_analyze2vips.c:	*width = d->dime.dim[1];
libvips/format/im_analyze2vips.c:	*height = d->dime.dim[2];
libvips/format/im_analyze2vips.c:	for( i = 3; i <= d->dime.dim[0]; i++ )
libvips/format/im_analyze2vips.c:		*height *= d->dime.dim[i];
libvips/format/im_analyze2vips.c:	switch( d->dime.datatype ) {
libvips/format/im_analyze2vips.c:			_( "datatype %d not supported" ), d->dime.datatype );
libvips/format/im_analyze2vips.c:		return( -1 );
libvips/format/im_analyze2vips.c:		(im_callback_fn) im_free, d, d->hk.sizeof_hdr );
libvips/format/im_analyze2vips.c:		return( -1 );
libvips/format/im_analyze2vips.c:		return( -1 );
libvips/format/im_analyze2vips.c: * loaded lazilly and byte-swapped, if necessary. The Analyze metadata is read
libvips/format/im_analyze2vips.c: * Returns: 0 on success, -1 on error.
libvips/format/im_analyze2vips.c:		return( -1 );
libvips/format/im_analyze2vips.c:		return( -1 );
libvips/format/im_analyze2vips.c:	object_class->nickname = "analyze";
libvips/format/im_analyze2vips.c:	object_class->description = _( "Analyze 6.0" );
libvips/format/im_analyze2vips.c:	format_class->is_a = isanalyze;
libvips/format/im_analyze2vips.c:	format_class->header = analyze2vips_header;
libvips/format/im_analyze2vips.c:	format_class->load = im_analyze2vips;
libvips/format/im_analyze2vips.c:	format_class->get_flags = analyze_flags;
libvips/format/im_analyze2vips.c:	format_class->suffs = analyze_suffs;
libvips/format/im_vips2csv.c: *	- hacked from im_debugim
libvips/format/im_vips2csv.c: * 	- allow separator to be specified (default "\t", <tab>)
libvips/format/im_vips2csv.c: * 	- oops, was broken
libvips/format/im_vips2csv.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_vips2csv.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_vips2csv.c:	p = (PEL *) in->data; 
libvips/format/im_vips2csv.c:	for( y = 0; y < in->Ysize; y++ ) { 
libvips/format/im_vips2csv.c:			switch( in->BandFmt ) {
libvips/format/im_vips2csv.c: * Save a CSV (comma-separated values) file. The image is written
libvips/format/im_vips2csv.c: * <emphasis>sep:separator-string</emphasis> 
libvips/format/im_vips2csv.c: * Returns: 0 on success, -1 on error.
libvips/format/im_vips2csv.c:		return( -1 );
libvips/format/im_vips2csv.c:		return( -1 );
libvips/format/im_vips2csv.c:		return( -1 );
libvips/format/im_png2vips.c:/* Convert 1 to 4-band 8 or 16-bit VIPS images to/from PNG.
libvips/format/im_png2vips.c: *	- better no-overshoot on tile loop
libvips/format/im_png2vips.c: *	- read non-interlaced PNG with a line buffer (thanks Michel Brabants)
libvips/format/im_png2vips.c: * 	- read RGBA palette-ized images more robustly (thanks Tom)
libvips/format/im_png2vips.c: * 	- auto convert to sRGB/mono (with optional alpha) for save
libvips/format/im_png2vips.c: * 	- from vips_png.c
libvips/format/im_png2vips.c: * 	- set RGB16/GREY16 if appropriate
libvips/format/im_png2vips.c: * 	- small cleanups
libvips/format/im_png2vips.c: * 	- gtkdoc
libvips/format/im_png2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_png2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_png2vips.c:	return( -1 );
libvips/format/im_png2vips.c:	IM_FREE( read->name );
libvips/format/im_png2vips.c:	IM_FREEF( fclose, read->fp );
libvips/format/im_png2vips.c:	if( read->pPng )
libvips/format/im_png2vips.c:		png_destroy_read_struct( &read->pPng, &read->pInfo, NULL );
libvips/format/im_png2vips.c:	IM_FREE( read->row_pointer );
libvips/format/im_png2vips.c:	IM_FREE( read->data );
libvips/format/im_png2vips.c:	read->name = im_strdup( NULL, name );
libvips/format/im_png2vips.c:	read->out = out;
libvips/format/im_png2vips.c:	read->fp = NULL;
libvips/format/im_png2vips.c:	read->pPng = NULL;
libvips/format/im_png2vips.c:	read->pInfo = NULL;
libvips/format/im_png2vips.c:	read->row_pointer = NULL;
libvips/format/im_png2vips.c:	read->data = NULL;
libvips/format/im_png2vips.c:        if( !(read->fp = im__file_open_read( name, NULL )) ) {
libvips/format/im_png2vips.c:	if( !(read->pPng = png_create_read_struct( 
libvips/format/im_png2vips.c:	if( setjmp( read->pPng->jmpbuf ) ) {
libvips/format/im_png2vips.c:	if( !(read->pInfo = png_create_info_struct( read->pPng )) ) {
libvips/format/im_png2vips.c:	const int rowbytes = IM_IMAGE_SIZEOF_LINE( read->out );
libvips/format/im_png2vips.c:	if( !(read->row_pointer = IM_ARRAY( NULL, 
libvips/format/im_png2vips.c:		read->pInfo->height, png_bytep )) )
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:	if( !(read->data = (png_bytep) im_malloc( NULL,
libvips/format/im_png2vips.c:		read->pInfo->height * rowbytes ))  )
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:	for( y = 0; y < (int) read->pInfo->height; y++ )
libvips/format/im_png2vips.c:		read->row_pointer[y] = read->data + y * rowbytes;
libvips/format/im_png2vips.c:	if( im_outcheck( read->out ) || 
libvips/format/im_png2vips.c:		im_setupout( read->out ) || 
libvips/format/im_png2vips.c:		setjmp( read->pPng->jmpbuf ) ) 
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:	png_read_image( read->pPng, read->row_pointer );
libvips/format/im_png2vips.c:	for( y = 0; y < (int) read->pInfo->height; y++ )
libvips/format/im_png2vips.c:		if( im_writeline( y, read->out, read->row_pointer[y] ) )
libvips/format/im_png2vips.c:			return( -1 );
libvips/format/im_png2vips.c:	const int rowbytes = IM_IMAGE_SIZEOF_LINE( read->out );
libvips/format/im_png2vips.c:	if( !(read->data = (png_bytep) im_malloc( NULL, rowbytes ))  )
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:	if( im_outcheck( read->out ) || 
libvips/format/im_png2vips.c:		im_setupout( read->out ) || 
libvips/format/im_png2vips.c:		setjmp( read->pPng->jmpbuf ) ) 
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:	for( y = 0; y < (int) read->pInfo->height; y++ ) {
libvips/format/im_png2vips.c:		png_read_row( read->pPng, read->data, NULL );
libvips/format/im_png2vips.c:		if( im_writeline( y, read->out, read->data ) )
libvips/format/im_png2vips.c:			return( -1 );
libvips/format/im_png2vips.c:	if( setjmp( read->pPng->jmpbuf ) ) 
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:	png_init_io( read->pPng, read->fp );
libvips/format/im_png2vips.c:	png_read_info( read->pPng, read->pInfo );
libvips/format/im_png2vips.c:	switch( read->pInfo->color_type ) {
libvips/format/im_png2vips.c:		if( read->pInfo->num_trans )
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:	bpp = read->pInfo->bit_depth > 8 ? 2 : 1;
libvips/format/im_png2vips.c:	if( read->pInfo->color_type == PNG_COLOR_TYPE_PALETTE )
libvips/format/im_png2vips.c:	        png_set_expand( read->pPng );
libvips/format/im_png2vips.c:	if( read->pInfo->bit_depth < 8 ) {
libvips/format/im_png2vips.c:		png_set_packing( read->pPng );
libvips/format/im_png2vips.c:	        png_set_shift( read->pPng, &(read->pInfo->sig_bit) );
libvips/format/im_png2vips.c:	if( read->pInfo->bit_depth > 8 && !im_amiMSBfirst() )
libvips/format/im_png2vips.c:		png_set_swap( read->pPng );
libvips/format/im_png2vips.c:	im_initdesc( read->out,
libvips/format/im_png2vips.c:		 read->pInfo->width, read->pInfo->height, bands,
libvips/format/im_png2vips.c:		if( png_set_interlace_handling( read->pPng ) > 1 ) {
libvips/format/im_png2vips.c:				return( -1 );
libvips/format/im_png2vips.c:				return( -1 );
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c: * Read a PNG file into a VIPS image. It can read all png images, including 8-
libvips/format/im_png2vips.c: * and 16-bit images, 1 and 3 channel, with and without an alpha channel.
libvips/format/im_png2vips.c: * Returns: 0 on success, -1 on error.
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:		return( -1 );
libvips/format/im_png2vips.c:	object_class->nickname = "png";
libvips/format/im_png2vips.c:	object_class->description = _( "PNG" );
libvips/format/im_png2vips.c:	format_class->is_a = ispng;
libvips/format/im_png2vips.c:	format_class->header = png2vips_header;
libvips/format/im_png2vips.c:	format_class->load = im_png2vips;
libvips/format/im_png2vips.c:	format_class->save = im_vips2png;
libvips/format/im_png2vips.c:	format_class->suffs = png_suffs;
libvips/format/im_ppm2vips.c: *	- hacked for VIPS
libvips/format/im_ppm2vips.c: *	- reads ppm/pgm/pbm
libvips/format/im_ppm2vips.c: *	- mmaps binary pgm/ppm
libvips/format/im_ppm2vips.c: *	- reads all ascii formats (slowly!)
libvips/format/im_ppm2vips.c: *	- oops, ascii read was broken
libvips/format/im_ppm2vips.c: *	- does 16/32 bit ascii now as well
libvips/format/im_ppm2vips.c: *	- im_ppm2vips_header() added
libvips/format/im_ppm2vips.c: *	- does 16/32 bit binary too
libvips/format/im_ppm2vips.c: *	- tiny fix for missing file close on read error
libvips/format/im_ppm2vips.c: * 	- use im_raw2vips() for binary read
libvips/format/im_ppm2vips.c: * 	- tiny cleanups
libvips/format/im_ppm2vips.c: * 	- gtkdoc
libvips/format/im_ppm2vips.c: * 	- add PFM (portable float map) support
libvips/format/im_ppm2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_ppm2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:				return( -1 );
libvips/format/im_ppm2vips.c:			/* Scale > 0 means big-endian.
libvips/format/im_ppm2vips.c:			im_meta_set_double( out, "pfm-scale", fabs( scale ) );
libvips/format/im_ppm2vips.c:				return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:			out->Xsize, out->Ysize, 
libvips/format/im_ppm2vips.c:			out->Bands, out->BandFmt, out->Coding ) ||
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:	for( y = 0; y < out->Ysize; y++ ) {
libvips/format/im_ppm2vips.c:		for( x = 0; x < out->Xsize * out->Bands; x++ ) {
libvips/format/im_ppm2vips.c:				return( -1 );
libvips/format/im_ppm2vips.c:			switch( out->BandFmt ) {
libvips/format/im_ppm2vips.c:			return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:	for( y = 0; y < out->Ysize; y++ ) {
libvips/format/im_ppm2vips.c:		for( x = 0; x < out->Xsize * out->Bands; x++ ) {
libvips/format/im_ppm2vips.c:				return( -1 );
libvips/format/im_ppm2vips.c:			return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:	for( i = 0, y = 0; y < out->Ysize; y++ ) {
libvips/format/im_ppm2vips.c:		for( x = 0; x < out->Xsize * out->Bands; x++, i++ ) {
libvips/format/im_ppm2vips.c:			return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:                return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:                return( -1 );
libvips/format/im_ppm2vips.c: * PFM images have the scale factor attached as "pfm-scale".
libvips/format/im_ppm2vips.c: * Returns: 0 on success, -1 on error.
libvips/format/im_ppm2vips.c:                return( -1 );
libvips/format/im_ppm2vips.c:		return( -1 );
libvips/format/im_ppm2vips.c:	object_class->nickname = "ppm";
libvips/format/im_ppm2vips.c:	object_class->description = _( "PPM/PBM/PNM/PFM" );
libvips/format/im_ppm2vips.c:	format_class->is_a = isppm;
libvips/format/im_ppm2vips.c:	format_class->header = ppm2vips_header;
libvips/format/im_ppm2vips.c:	format_class->load = im_ppm2vips;
libvips/format/im_ppm2vips.c:	format_class->save = im_vips2ppm;
libvips/format/im_ppm2vips.c:	format_class->get_flags = ppm_flags;
libvips/format/im_ppm2vips.c:	format_class->suffs = ppm_suffs;
libvips/format/im_vips2ppm.c: *	- better no-overshoot on tile loop
libvips/format/im_vips2ppm.c: * 	- tiny cleanups
libvips/format/im_vips2ppm.c: * 	- use im_wbuffer() for bg writes
libvips/format/im_vips2ppm.c: * 	- gtkdoc
libvips/format/im_vips2ppm.c: * 	- cleanups
libvips/format/im_vips2ppm.c: * 	- add PFM (portable float map) support
libvips/format/im_vips2ppm.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_vips2ppm.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_vips2ppm.c:	IM_FREEF( fclose, write->fp );
libvips/format/im_vips2ppm.c:	IM_FREE( write->name );
libvips/format/im_vips2ppm.c:	write->in = in;
libvips/format/im_vips2ppm.c:	write->name = im_strdup( NULL, name );
libvips/format/im_vips2ppm.c:        write->fp = im__file_open_write( name );
libvips/format/im_vips2ppm.c:	if( !write->name || !write->fp ) {
libvips/format/im_vips2ppm.c:	for( x = 0; x < in->Xsize; x++ ) {
libvips/format/im_vips2ppm.c:		for( k = 0; k < in->Bands; k++ ) {
libvips/format/im_vips2ppm.c:			switch( in->BandFmt ) {
libvips/format/im_vips2ppm.c:		return( -1 );
libvips/format/im_vips2ppm.c:		return( -1 );
libvips/format/im_vips2ppm.c:	for( i = 0; i < area->height; i++ ) {
libvips/format/im_vips2ppm.c:		PEL *p = (PEL *) IM_REGION_ADDR( region, 0, area->top + i );
libvips/format/im_vips2ppm.c:		if( write->fn( write->in, write->fp, p ) )
libvips/format/im_vips2ppm.c:			return( -1 );
libvips/format/im_vips2ppm.c:	IMAGE *in = write->in;
libvips/format/im_vips2ppm.c:	if( in->BandFmt == IM_BANDFMT_FLOAT && in->Bands == 3 ) 
libvips/format/im_vips2ppm.c:	else if( in->BandFmt == IM_BANDFMT_FLOAT && in->Bands == 1 ) 
libvips/format/im_vips2ppm.c:	else if( in->Bands == 1 && ascii )
libvips/format/im_vips2ppm.c:	else if( in->Bands == 1 && !ascii )
libvips/format/im_vips2ppm.c:	else if( in->Bands == 3 && ascii )
libvips/format/im_vips2ppm.c:	else if( in->Bands == 3 && !ascii )
libvips/format/im_vips2ppm.c:	fprintf( write->fp, "%s\n", magic );
libvips/format/im_vips2ppm.c:	fprintf( write->fp, "#im_vips2ppm - %s\n", ctime( &timebuf ) );
libvips/format/im_vips2ppm.c:	fprintf( write->fp, "%d %d\n", in->Xsize, in->Ysize );
libvips/format/im_vips2ppm.c:	switch( in->BandFmt ) {
libvips/format/im_vips2ppm.c:		fprintf( write->fp, "%d\n", UCHAR_MAX );
libvips/format/im_vips2ppm.c:		fprintf( write->fp, "%d\n", USHRT_MAX );
libvips/format/im_vips2ppm.c:		fprintf( write->fp, "%d\n", UINT_MAX );
libvips/format/im_vips2ppm.c:		if( im_meta_get_double( in, "pfm-scale", &scale ) )
libvips/format/im_vips2ppm.c:			scale *= -1;
libvips/format/im_vips2ppm.c:		fprintf( write->fp, "%g\n", scale );
libvips/format/im_vips2ppm.c:	write->fn = ascii ? write_ppm_line_ascii : write_ppm_line_binary;
libvips/format/im_vips2ppm.c:	if( vips_sink_disc( write->in, write_ppm_block, write ) )
libvips/format/im_vips2ppm.c:		return( -1 );
libvips/format/im_vips2ppm.c: * "pfm-scale" metadata.
libvips/format/im_vips2ppm.c: * Returns: 0 on success, -1 on error.
libvips/format/im_vips2ppm.c:			return( -1 );
libvips/format/im_vips2ppm.c:		return( -1 );
libvips/format/im_vips2ppm.c:	if( im_bits_of_fmt( in->BandFmt ) > 8 && 
libvips/format/im_vips2ppm.c:		in->BandFmt != IM_BANDFMT_FLOAT ) {
libvips/format/im_vips2ppm.c:		return( -1 );
libvips/format/im_vips2ppm.c:		return( -1 );
libvips/format/im_vips2ppm.c:		return( -1 );
libvips/format/im_vips2tiff.c: *	- calls TIFFClose() more reliably
libvips/format/im_vips2tiff.c: *	- tidied up
libvips/format/im_vips2tiff.c: *	- thrown away and rewritten for TIFF 6 lib
libvips/format/im_vips2tiff.c: *	- writes a pyramid!
libvips/format/im_vips2tiff.c: *	- to separate TIFF files tho'
libvips/format/im_vips2tiff.c: *	- does 2nd gather pass to put pyramid into a single TIFF file
libvips/format/im_vips2tiff.c: *	- ... and shrinks IM_CODING_LABQ too
libvips/format/im_vips2tiff.c: *	- binary open for stupid systems
libvips/format/im_vips2tiff.c: *	- 16bit TIFF write too
libvips/format/im_vips2tiff.c: *	- ZIP tiff added
libvips/format/im_vips2tiff.c: *	- removed TIFFmalloc/TIFFfree
libvips/format/im_vips2tiff.c: *	- mode string now part of filename
libvips/format/im_vips2tiff.c: *	- HAVE_TIFF turns on TIFFness
libvips/format/im_vips2tiff.c: *	- pyramid stops at tile size, not 64x64
libvips/format/im_vips2tiff.c: * 	- write any number of bands (but still with photometric RGB, so not
libvips/format/im_vips2tiff.c: *	- oops, handle TIFF errors better
libvips/format/im_vips2tiff.c: *	- now writes CMYK correctly
libvips/format/im_vips2tiff.c: *	- tries not to write mad resolutions
libvips/format/im_vips2tiff.c: *	- only write CMYK if Type == CMYK
libvips/format/im_vips2tiff.c: *	- writes EXTRASAMPLES ALPHA for bands == 2 or 4 (if we're writing RGB)
libvips/format/im_vips2tiff.c: *	- write float too
libvips/format/im_vips2tiff.c: *	- read via a "p" so we work from mmap window images
libvips/format/im_vips2tiff.c: *	- uses threadgroups for speedup
libvips/format/im_vips2tiff.c: *	- 1 bit write mode added
libvips/format/im_vips2tiff.c: *	- better handling of edge tiles (thanks Ruven)
libvips/format/im_vips2tiff.c: *	- added res_inch/res_cm option
libvips/format/im_vips2tiff.c: *	- allow single res number too
libvips/format/im_vips2tiff.c: *	- write several scanlines at once, good speed up for some cases
libvips/format/im_vips2tiff.c: *	- got rid of wrapper image so nip gets progress feedback 
libvips/format/im_vips2tiff.c: * 	- fixed tiny read-beyond-buffer issue for edge tiles
libvips/format/im_vips2tiff.c: * 	- added ICC profile embedding
libvips/format/im_vips2tiff.c: *	- can now pyramid any non-complex type (thanks Ruven)
libvips/format/im_vips2tiff.c: *	- added ccittfax4 as a compression option
libvips/format/im_vips2tiff.c: *	- set PHOTOMETRIC_CIELAB for vips TYPE_LAB images ... so we can write
libvips/format/im_vips2tiff.c: *	- also LABS images 
libvips/format/im_vips2tiff.c: *	- 16 bit LAB write was broken
libvips/format/im_vips2tiff.c: * 	- write any icc profile from meta 
libvips/format/im_vips2tiff.c: * 	- raise tile buffer limit (thanks Ruven)
libvips/format/im_vips2tiff.c: * 	- set ORIENTATION_TOPLEFT (thanks Josef)
libvips/format/im_vips2tiff.c: * 	- remove "b" option on TIFFOpen()
libvips/format/im_vips2tiff.c: * 	- support TIFFTAG_PREDICTOR types for lzw and deflate compression
libvips/format/im_vips2tiff.c: * 	- use im_wbuffer() for background writes
libvips/format/im_vips2tiff.c: * 	- set TIFFTAG_JPEGQUALITY explicitly when we copy TIFF files, since 
libvips/format/im_vips2tiff.c: * 	- use tiff error handler from im_tiff2vips.c
libvips/format/im_vips2tiff.c: * 	- don't try to copy icc profiles when building pyramids (thanks Joe)
libvips/format/im_vips2tiff.c: * 	- use IM_META_RESOLUTION_UNIT to set default resunit
libvips/format/im_vips2tiff.c: * 	- allow CMYKA (thanks Doron)
libvips/format/im_vips2tiff.c: *	- trigger eval callbacks during tile write
libvips/format/im_vips2tiff.c: * 	- gtkdoc
libvips/format/im_vips2tiff.c: * 	- option to turn on bigtiff output
libvips/format/im_vips2tiff.c: * 	- use vips_sink_*() instead of threadgroup and friends
libvips/format/im_vips2tiff.c: * 	- make no-owner regions for the tile cache, since we share these
libvips/format/im_vips2tiff.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_vips2tiff.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_vips2tiff.c:	return( -1 );
libvips/format/im_vips2tiff.c:	PYR_TL = 1,			/* Top-left etc. */
libvips/format/im_vips2tiff.c:	int jpqual;			/* JPEG q-factor */
libvips/format/im_vips2tiff.c:	int onebit;			/* Write as 1-bit TIFF */
libvips/format/im_vips2tiff.c:	const char *mode = tw->bigtiff ? "w8" : "w";
libvips/format/im_vips2tiff.c:	/* Any left-over bits? Need to be left-aligned.
libvips/format/im_vips2tiff.c:		*q++ = bits << (8 - (x & 0x7));
libvips/format/im_vips2tiff.c:	for( y = area->top; y < IM_RECT_BOTTOM( area ); y++ ) {
libvips/format/im_vips2tiff.c:		PEL *p = (PEL *) IM_REGION_ADDR( in, area->left, y );
libvips/format/im_vips2tiff.c:		if( in->im->Coding == IM_CODING_LABQ )
libvips/format/im_vips2tiff.c:			LabQ2LabC( q, p, area->width );
libvips/format/im_vips2tiff.c:		else if( tw->onebit ) 
libvips/format/im_vips2tiff.c:			eightbit2onebit( q, p, area->width );
libvips/format/im_vips2tiff.c:		else if( in->im->BandFmt == IM_BANDFMT_SHORT &&
libvips/format/im_vips2tiff.c:			in->im->Type == IM_TYPE_LABS )
libvips/format/im_vips2tiff.c:			LabS2Lab16( q, p, area->width );
libvips/format/im_vips2tiff.c:				area->width * IM_IMAGE_SIZEOF_PEL( in->im ) );
libvips/format/im_vips2tiff.c:		q += tw->tls;
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( tw->embed && embed_profile_file( tif, tw->icc_profile ) )
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( !tw->embed && im_header_get_typeof( tw->im, IM_META_ICC_NAME ) &&
libvips/format/im_vips2tiff.c:		embed_profile_meta( tif, tw->im ) )
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	TIFFSetField( tif, TIFFTAG_COMPRESSION, tw->compression );
libvips/format/im_vips2tiff.c:	TIFFSetField( tif, TIFFTAG_RESOLUTIONUNIT, tw->resunit );
libvips/format/im_vips2tiff.c:		IM_CLIP( 0.01, tw->xres, 10000 ) );
libvips/format/im_vips2tiff.c:		IM_CLIP( 0.01, tw->yres, 10000 ) );
libvips/format/im_vips2tiff.c:	if( tw->compression == COMPRESSION_JPEG ) 
libvips/format/im_vips2tiff.c:		TIFFSetField( tif, TIFFTAG_JPEGQUALITY, tw->jpqual );
libvips/format/im_vips2tiff.c:	if( tw->predictor != -1 ) 
libvips/format/im_vips2tiff.c:		TIFFSetField( tif, TIFFTAG_PREDICTOR, tw->predictor );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( tw->im->Coding == IM_CODING_LABQ ) {
libvips/format/im_vips2tiff.c:	else if( tw->onebit ) {
libvips/format/im_vips2tiff.c:		TIFFSetField( tif, TIFFTAG_SAMPLESPERPIXEL, tw->im->Bands );
libvips/format/im_vips2tiff.c:			im_bits_of_fmt( tw->im->BandFmt ) );
libvips/format/im_vips2tiff.c:		switch( tw->im->Bands ) {
libvips/format/im_vips2tiff.c:			if( tw->im->Bands == 2 ) {
libvips/format/im_vips2tiff.c:			if( tw->im->Type == IM_TYPE_LAB || 
libvips/format/im_vips2tiff.c:				tw->im->Type == IM_TYPE_LABS ) 
libvips/format/im_vips2tiff.c:			else if( tw->im->Type == IM_TYPE_CMYK ) {
libvips/format/im_vips2tiff.c:			if( tw->im->Type != IM_TYPE_CMYK && 
libvips/format/im_vips2tiff.c:				tw->im->Bands == 4 ) {
libvips/format/im_vips2tiff.c:			if( tw->im->Type == IM_TYPE_CMYK ) {
libvips/format/im_vips2tiff.c:	if( tw->tile ) {
libvips/format/im_vips2tiff.c:		TIFFSetField( tif, TIFFTAG_TILEWIDTH, tw->tilew );
libvips/format/im_vips2tiff.c:		TIFFSetField( tif, TIFFTAG_TILELENGTH, tw->tileh );
libvips/format/im_vips2tiff.c:	if( tw->im->BandFmt == IM_BANDFMT_FLOAT )
libvips/format/im_vips2tiff.c:		if( layer->tiles[i].tile ) {
libvips/format/im_vips2tiff.c:			im_region_free( layer->tiles[i].tile );
libvips/format/im_vips2tiff.c:			layer->tiles[i].tile = NULL;
libvips/format/im_vips2tiff.c:	IM_FREEF( im_free, layer->tbuf );
libvips/format/im_vips2tiff.c:	IM_FREEF( TIFFClose, layer->tif );
libvips/format/im_vips2tiff.c:	if( layer->below ) 
libvips/format/im_vips2tiff.c:		free_pyramid( layer->below );
libvips/format/im_vips2tiff.c:		buf[strlen( buf ) - 4] = '\0';
libvips/format/im_vips2tiff.c:		buf[strlen( buf ) - 5] = '\0';
libvips/format/im_vips2tiff.c:	return( im_strdup( tw->im, buf2 ) );
libvips/format/im_vips2tiff.c: * struct into *zap, return 0/-1 for success/fail.
libvips/format/im_vips2tiff.c:	PyramidLayer *layer = IM_NEW( tw->im, PyramidLayer );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	layer->tw = tw;
libvips/format/im_vips2tiff.c:	layer->width = w / 2;
libvips/format/im_vips2tiff.c:	layer->height = h / 2;
libvips/format/im_vips2tiff.c:		layer->sub = 2;	
libvips/format/im_vips2tiff.c:		layer->sub = above->sub * 2;
libvips/format/im_vips2tiff.c:	layer->lname = NULL;
libvips/format/im_vips2tiff.c:	layer->tif = NULL;
libvips/format/im_vips2tiff.c:	layer->tbuf = NULL;
libvips/format/im_vips2tiff.c:		layer->tiles[i].tile = NULL;
libvips/format/im_vips2tiff.c:		layer->tiles[i].bits = PYR_NONE;
libvips/format/im_vips2tiff.c:	layer->below = NULL;
libvips/format/im_vips2tiff.c:	layer->above = above;
libvips/format/im_vips2tiff.c:	if( layer->width > tw->tilew || layer->height > tw->tileh ) 
libvips/format/im_vips2tiff.c:			&layer->below, layer->width, layer->height ) )
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c:	if( !(layer->lname = new_tiff_name( tw, tw->name, layer->sub )) )
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( !(layer->tif = tiff_openout( tw, layer->lname )) ) 
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( write_tiff_header( tw, layer->tif, layer->width, layer->height ) )
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( !(layer->tbuf = im_malloc( NULL, TIFFTileSize( layer->tif ) )) ) 
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:		if( layer->tiles[i].bits == PYR_ALL ) 
libvips/format/im_vips2tiff.c:		if( !layer->tiles[i].tile ) {
libvips/format/im_vips2tiff.c:			if( !(layer->tiles[i].tile = 
libvips/format/im_vips2tiff.c:				im_region_create( layer->tw->im )) )
libvips/format/im_vips2tiff.c:				return( -1 );
libvips/format/im_vips2tiff.c:			im__region_no_ownership( layer->tiles[i].tile );
libvips/format/im_vips2tiff.c:	im_error( "im_vips2tiff", "%s", _( "layer buffer exhausted -- "
libvips/format/im_vips2tiff.c:	return( -1 );
libvips/format/im_vips2tiff.c:/* Find a tile in the layer buffer - if it's not there, make a new one.
libvips/format/im_vips2tiff.c:		REGION *reg = layer->tiles[i].tile;
libvips/format/im_vips2tiff.c:		if( reg && reg->valid.left == pos->left && 
libvips/format/im_vips2tiff.c:			reg->valid.top == pos->top )
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( im_region_buffer( layer->tiles[i].tile, pos ) )
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	layer->tiles[i].bits = PYR_NONE;
libvips/format/im_vips2tiff.c:	quad.width = layer->tw->tilew / 2;
libvips/format/im_vips2tiff.c:	quad.height = layer->tw->tileh / 2;
libvips/format/im_vips2tiff.c:	image.width = layer->width;
libvips/format/im_vips2tiff.c:	image.height = layer->height;
libvips/format/im_vips2tiff.c:	quad.left = pos->left;
libvips/format/im_vips2tiff.c:	quad.top = pos->top;
libvips/format/im_vips2tiff.c:		layer->tiles[i].bits |= PYR_TL;
libvips/format/im_vips2tiff.c:	quad.left = pos->left + quad.width;
libvips/format/im_vips2tiff.c:	quad.top = pos->top;
libvips/format/im_vips2tiff.c:		layer->tiles[i].bits |= PYR_TR;
libvips/format/im_vips2tiff.c:	quad.left = pos->left;
libvips/format/im_vips2tiff.c:	quad.top = pos->top + quad.height;
libvips/format/im_vips2tiff.c:		layer->tiles[i].bits |= PYR_BL;
libvips/format/im_vips2tiff.c:	quad.left = pos->left + quad.width;
libvips/format/im_vips2tiff.c:	quad.top = pos->top + quad.height;
libvips/format/im_vips2tiff.c:		layer->tiles[i].bits |= PYR_BR;
libvips/format/im_vips2tiff.c:	Rect *t = &to->valid;
libvips/format/im_vips2tiff.c:	out.left = t->left + xoff;
libvips/format/im_vips2tiff.c:	out.top = t->top + yoff;
libvips/format/im_vips2tiff.c:	out.width = area->width / 2;
libvips/format/im_vips2tiff.c:	out.height = area->height / 2;
libvips/format/im_vips2tiff.c:			IM_REGION_ADDR( from, area->left, area->top + y * 2 );
libvips/format/im_vips2tiff.c: * offset in another region. n-band, non-complex.
libvips/format/im_vips2tiff.c:	int ps = IM_IMAGE_SIZEOF_PEL( from->im );
libvips/format/im_vips2tiff.c:	int nb = from->im->Bands;
libvips/format/im_vips2tiff.c:	Rect *t = &to->valid;
libvips/format/im_vips2tiff.c:	out.left = t->left + xoff;
libvips/format/im_vips2tiff.c:	out.top = t->top + yoff;
libvips/format/im_vips2tiff.c:	out.width = area->width / 2;
libvips/format/im_vips2tiff.c:	out.height = area->height / 2;
libvips/format/im_vips2tiff.c:			IM_REGION_ADDR( from, area->left, area->top + y * 2 );
libvips/format/im_vips2tiff.c:		switch( from->im->BandFmt ) {
libvips/format/im_vips2tiff.c:		tw->tilew, tw->tileh, area->left, area->top,
libvips/format/im_vips2tiff.c:	if( TIFFWriteTile( tif, tbuf, area->left, area->top, 0, 0 ) < 0 ) {
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	TiffWrite *tw = layer->tw;
libvips/format/im_vips2tiff.c:	new.left = area->left / 2;
libvips/format/im_vips2tiff.c:	new.top = area->top / 2;
libvips/format/im_vips2tiff.c:	new.width = area->width / 2;
libvips/format/im_vips2tiff.c:	new.height = area->height / 2;
libvips/format/im_vips2tiff.c:	/* Has size fallen to zero? Can happen if this is a one-pixel-wide
libvips/format/im_vips2tiff.c:	xoff = new.left % layer->tw->tilew;
libvips/format/im_vips2tiff.c:	yoff = new.top % layer->tw->tileh;
libvips/format/im_vips2tiff.c:	out.left = new.left - xoff;
libvips/format/im_vips2tiff.c:	out.top = new.top - yoff;
libvips/format/im_vips2tiff.c:	ri = IM_MIN( layer->width, out.left + layer->tw->tilew );
libvips/format/im_vips2tiff.c:	bo = IM_MIN( layer->height, out.top + layer->tw->tileh );
libvips/format/im_vips2tiff.c:	out.width = ri - out.left;
libvips/format/im_vips2tiff.c:	out.height = bo - out.top;
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( tw->im->Coding == IM_CODING_NONE )
libvips/format/im_vips2tiff.c:			layer->tiles[t].tile, xoff, yoff );
libvips/format/im_vips2tiff.c:			layer->tiles[t].tile, xoff, yoff );
libvips/format/im_vips2tiff.c:	if( layer->tiles[t].bits & bit ) {
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	layer->tiles[t].bits |= bit;
libvips/format/im_vips2tiff.c:	if( layer->tiles[t].bits == PYR_ALL ) {
libvips/format/im_vips2tiff.c:		if( save_tile( tw, layer->tif, layer->tbuf, 
libvips/format/im_vips2tiff.c:			layer->tiles[t].tile, &layer->tiles[t].tile->valid ) )
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c:		if( layer->below &&
libvips/format/im_vips2tiff.c:			new_tile( layer->below, 
libvips/format/im_vips2tiff.c:				layer->tiles[t].tile, 
libvips/format/im_vips2tiff.c:				&layer->tiles[t].tile->valid ) )
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c:	g_mutex_lock( tw->write_lock );
libvips/format/im_vips2tiff.c:	if( save_tile( tw, tw->tif, tw->tbuf, out, &out->valid ) ) {
libvips/format/im_vips2tiff.c:		g_mutex_unlock( tw->write_lock );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( tw->layer && 
libvips/format/im_vips2tiff.c:		new_tile( tw->layer, out, &out->valid ) ) {
libvips/format/im_vips2tiff.c:		g_mutex_unlock( tw->write_lock );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	g_mutex_unlock( tw->write_lock );
libvips/format/im_vips2tiff.c:	IMAGE *im = tw->im;
libvips/format/im_vips2tiff.c:	g_assert( !tw->tbuf );
libvips/format/im_vips2tiff.c:	if( !(tw->tbuf = im_malloc( NULL, TIFFTileSize( tw->tif ) )) ) 
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	g_assert( !tw->write_lock );
libvips/format/im_vips2tiff.c:	tw->write_lock = g_mutex_new();
libvips/format/im_vips2tiff.c:	if( tw->pyramid && 
libvips/format/im_vips2tiff.c:		(im->Xsize > tw->tilew || im->Ysize > tw->tileh) &&
libvips/format/im_vips2tiff.c:		build_pyramid( tw, NULL, &tw->layer, im->Xsize, im->Ysize ) )
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c:	if( vips_sink_tile( im, tw->tilew, tw->tileh,
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	IMAGE *im = tw->im;
libvips/format/im_vips2tiff.c:	for( y = 0; y < area->height; y++ ) {
libvips/format/im_vips2tiff.c:		PEL *p = (PEL *) IM_REGION_ADDR( region, 0, area->top + y );
libvips/format/im_vips2tiff.c:		if( im->Coding == IM_CODING_LABQ ) {
libvips/format/im_vips2tiff.c:			LabQ2LabC( tw->tbuf, p, im->Xsize );
libvips/format/im_vips2tiff.c:			p = tw->tbuf;
libvips/format/im_vips2tiff.c:		else if( im->BandFmt == IM_BANDFMT_SHORT &&
libvips/format/im_vips2tiff.c:			im->Type == IM_TYPE_LABS ) {
libvips/format/im_vips2tiff.c:			LabS2Lab16( tw->tbuf, p, im->Xsize );
libvips/format/im_vips2tiff.c:			p = tw->tbuf;
libvips/format/im_vips2tiff.c:		else if( tw->onebit ) {
libvips/format/im_vips2tiff.c:			eightbit2onebit( tw->tbuf, p, im->Xsize );
libvips/format/im_vips2tiff.c:			p = tw->tbuf;
libvips/format/im_vips2tiff.c:		if( TIFFWriteScanline( tw->tif, p, area->top + y, 0 ) < 0 ) 
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c:/* Write as scan-lines.
libvips/format/im_vips2tiff.c:	g_assert( !tw->tbuf );
libvips/format/im_vips2tiff.c:	if( !(tw->tbuf = im_malloc( NULL, TIFFScanlineSize( tw->tif ) )) ) 
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( vips_sink_disc( tw->im, write_tif_block, tw ) )
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	PyramidLayer *layer = tw->layer;
libvips/format/im_vips2tiff.c:	if( tw->bname ) {
libvips/format/im_vips2tiff.c:		unlink( tw->bname );
libvips/format/im_vips2tiff.c:		tw->bname = NULL;
libvips/format/im_vips2tiff.c:	for( layer = tw->layer; layer; layer = layer->below ) 
libvips/format/im_vips2tiff.c:		if( layer->lname ) {
libvips/format/im_vips2tiff.c:			unlink( layer->lname );
libvips/format/im_vips2tiff.c:			layer->lname = NULL;
libvips/format/im_vips2tiff.c:	IM_FREEF( TIFFClose, tw->tif );
libvips/format/im_vips2tiff.c:	IM_FREEF( im_free, tw->tbuf );
libvips/format/im_vips2tiff.c:	IM_FREEF( g_mutex_free, tw->write_lock );
libvips/format/im_vips2tiff.c:	IM_FREEF( free_pyramid, tw->layer );
libvips/format/im_vips2tiff.c:	IM_FREEF( im_free, tw->icc_profile );
libvips/format/im_vips2tiff.c:#define ROUND_DOWN(N,P) ((N) - ((N) % P)) 
libvips/format/im_vips2tiff.c:#define ROUND_UP(N,P) (ROUND_DOWN( (N) + (P) - 1, (P) ))
libvips/format/im_vips2tiff.c:	tw->im = im;
libvips/format/im_vips2tiff.c:	tw->name = im_strdup( im, name );
libvips/format/im_vips2tiff.c:	tw->mode = im_strdup( im, mode );
libvips/format/im_vips2tiff.c:	tw->bname = NULL;
libvips/format/im_vips2tiff.c:	tw->tif = NULL;
libvips/format/im_vips2tiff.c:	tw->layer = NULL;
libvips/format/im_vips2tiff.c:	tw->tbuf = NULL;
libvips/format/im_vips2tiff.c:	tw->compression = COMPRESSION_NONE;
libvips/format/im_vips2tiff.c:	tw->jpqual = 75;
libvips/format/im_vips2tiff.c:	tw->predictor = -1;
libvips/format/im_vips2tiff.c:	tw->tile = 0;
libvips/format/im_vips2tiff.c:	tw->tilew = 128;
libvips/format/im_vips2tiff.c:	tw->tileh = 128;
libvips/format/im_vips2tiff.c:	tw->pyramid = 0;
libvips/format/im_vips2tiff.c:	tw->onebit = 0;
libvips/format/im_vips2tiff.c:	tw->embed = 0;
libvips/format/im_vips2tiff.c:	tw->icc_profile = NULL;
libvips/format/im_vips2tiff.c:	tw->bigtiff = 0;
libvips/format/im_vips2tiff.c:	tw->write_lock = NULL;
libvips/format/im_vips2tiff.c:	/* Output resolution settings ... default to VIPS-alike.
libvips/format/im_vips2tiff.c:	tw->resunit = RESUNIT_CENTIMETER;
libvips/format/im_vips2tiff.c:	tw->xres = im->Xres * 10;
libvips/format/im_vips2tiff.c:	tw->yres = im->Yres * 10;
libvips/format/im_vips2tiff.c:		tw->resunit = RESUNIT_INCH;
libvips/format/im_vips2tiff.c:		tw->xres *= 2.54;
libvips/format/im_vips2tiff.c:		tw->yres *= 2.54;
libvips/format/im_vips2tiff.c:			tw->compression = COMPRESSION_NONE;
libvips/format/im_vips2tiff.c:			tw->compression = COMPRESSION_PACKBITS;
libvips/format/im_vips2tiff.c:			tw->compression = COMPRESSION_CCITTFAX4;
libvips/format/im_vips2tiff.c:			tw->compression = COMPRESSION_LZW;
libvips/format/im_vips2tiff.c:				if( sscanf( r, "%d", &tw->predictor ) != 1 ) {
libvips/format/im_vips2tiff.c:			tw->compression = COMPRESSION_ADOBE_DEFLATE;
libvips/format/im_vips2tiff.c:				if( sscanf( r, "%d", &tw->predictor ) != 1 ) {
libvips/format/im_vips2tiff.c:			tw->compression = COMPRESSION_JPEG;
libvips/format/im_vips2tiff.c:				if( sscanf( r, "%d", &tw->jpqual ) != 1 ) {
libvips/format/im_vips2tiff.c:			tw->tile = 1;
libvips/format/im_vips2tiff.c:					&tw->tilew, &tw->tileh ) != 2 ) {
libvips/format/im_vips2tiff.c:				if( tw->tilew < 10 || tw->tileh < 10 || 
libvips/format/im_vips2tiff.c:					tw->tilew > 1000 || tw->tileh > 1000 ) {
libvips/format/im_vips2tiff.c:						tw->tilew, tw->tileh );
libvips/format/im_vips2tiff.c:				if( (tw->tilew & 0xf) != 0 || 
libvips/format/im_vips2tiff.c:					(tw->tileh & 0xf) != 0 ) {
libvips/format/im_vips2tiff.c:			tw->tile = 0;
libvips/format/im_vips2tiff.c:			tw->pyramid = 1;
libvips/format/im_vips2tiff.c:			tw->pyramid = 0;
libvips/format/im_vips2tiff.c:			im_error( "im_vips2tiff", _( "unknown multi-res mode "
libvips/format/im_vips2tiff.c:			tw->onebit = 1;
libvips/format/im_vips2tiff.c:			tw->onebit = 0;
libvips/format/im_vips2tiff.c:			if( tw->resunit == RESUNIT_INCH ) {
libvips/format/im_vips2tiff.c:				tw->xres /= 2.54;
libvips/format/im_vips2tiff.c:				tw->yres /= 2.54;
libvips/format/im_vips2tiff.c:			tw->resunit = RESUNIT_CENTIMETER;
libvips/format/im_vips2tiff.c:			if( tw->resunit == RESUNIT_CENTIMETER ) {
libvips/format/im_vips2tiff.c:				tw->xres *= 2.54;
libvips/format/im_vips2tiff.c:				tw->yres *= 2.54;
libvips/format/im_vips2tiff.c:			tw->resunit = RESUNIT_INCH;
libvips/format/im_vips2tiff.c:			if( sscanf( r, "%fx%f", &tw->xres, &tw->yres ) != 2 ) {
libvips/format/im_vips2tiff.c:				if( sscanf( r, "%f", &tw->xres ) != 1 ) {
libvips/format/im_vips2tiff.c:				tw->yres = tw->xres;
libvips/format/im_vips2tiff.c:		tw->embed = 1;
libvips/format/im_vips2tiff.c:		tw->icc_profile = im_strdup( NULL, q );
libvips/format/im_vips2tiff.c:		tw->bigtiff = 1;
libvips/format/im_vips2tiff.c:	if( !tw->tile && tw->pyramid ) {
libvips/format/im_vips2tiff.c:		im_warn( "im_vips2tiff", "%s", _( "can't have strip pyramid -- "
libvips/format/im_vips2tiff.c:		tw->tile = 1;
libvips/format/im_vips2tiff.c:	/* We can only pyramid LABQ and non-complex images. 
libvips/format/im_vips2tiff.c:	if( tw->pyramid ) {
libvips/format/im_vips2tiff.c:		if( im->Coding == IM_CODING_NONE && 
libvips/format/im_vips2tiff.c:			vips_bandfmt_iscomplex( im->BandFmt ) ) {
libvips/format/im_vips2tiff.c:				"non-complex images" ) );
libvips/format/im_vips2tiff.c:	/* Only 1-bit-ize 8 bit mono images.
libvips/format/im_vips2tiff.c:	if( tw->onebit ) {
libvips/format/im_vips2tiff.c:		if( im->Coding != IM_CODING_NONE || 
libvips/format/im_vips2tiff.c:			im->BandFmt != IM_BANDFMT_UCHAR ||
libvips/format/im_vips2tiff.c:			im->Bands != 1 ) 
libvips/format/im_vips2tiff.c:			tw->onebit = 0;
libvips/format/im_vips2tiff.c:	if( tw->onebit && tw->compression == COMPRESSION_JPEG ) {
libvips/format/im_vips2tiff.c:		im_warn( "im_vips2tiff", "%s", _( "can't have 1-bit JPEG -- "
libvips/format/im_vips2tiff.c:		tw->compression = COMPRESSION_NONE;
libvips/format/im_vips2tiff.c:	if( im->Coding == IM_CODING_LABQ )
libvips/format/im_vips2tiff.c:		tw->tls = tw->tilew * 3;
libvips/format/im_vips2tiff.c:	else if( tw->onebit )
libvips/format/im_vips2tiff.c:		tw->tls = ROUND_UP( tw->tilew, 8 ) / 8;
libvips/format/im_vips2tiff.c:		tw->tls = IM_IMAGE_SIZEOF_PEL( im ) * tw->tilew;
libvips/format/im_vips2tiff.c:	if( tw->predictor != -1 ) 
libvips/format/im_vips2tiff.c:		TIFFSetField( out, TIFFTAG_PREDICTOR, tw->predictor );
libvips/format/im_vips2tiff.c:	/* TIFFTAG_JPEGQUALITY is a pesudo-tag, so we can't copy it.
libvips/format/im_vips2tiff.c:	if( tw->compression == COMPRESSION_JPEG ) 
libvips/format/im_vips2tiff.c:		TIFFSetField( out, TIFFTAG_JPEGQUALITY, tw->jpqual );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:		 * not to work :-( investigate at some point.
libvips/format/im_vips2tiff.c:		len = TIFFReadEncodedTile( in, tile, buf, (tsize_t) -1 );
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( !(out = tiff_openout( tw, tw->name )) ) 
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( tiff_append( tw, out, tw->bname ) ) {
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	for( layer = tw->layer; layer; layer = layer->below ) 
libvips/format/im_vips2tiff.c:		if( tiff_append( tw, out, layer->lname ) ) {
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c: * filename.tif:<emphasis>compression</emphasis>,<emphasis>layout</emphasis>,<emphasis>multi-res</emphasis>,<emphasis>format</emphasis>,<emphasis>resolution</emphasis>,<emphasis>icc</emphasis>, <emphasis>bigtiff</emphasis>
libvips/format/im_vips2tiff.c: * "ccittfax4" (CCITT Group 4 fax encoding), "lzw"  (Lempel-Ziv compression).
libvips/format/im_vips2tiff.c: * good for 1-bit images, and deflate is the best lossless compression TIFF 
libvips/format/im_vips2tiff.c: * <emphasis>multi-res</emphasis> 
libvips/format/im_vips2tiff.c: * pyramid). The default multi-res mode is "flat".
libvips/format/im_vips2tiff.c: * shoiuld be "manybit" (don't bit-reduce images) or "onebit" (one band 8 
libvips/format/im_vips2tiff.c: * resolution unit is taken from the header field "resolution-unit"
libvips/format/im_vips2tiff.c: * Will write "fred.tif" as a tiled jpeg-compressed pyramid.
libvips/format/im_vips2tiff.c: * Returns: 0 on success, -1 on error.
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( in->BandFmt != IM_BANDFMT_UCHAR && 
libvips/format/im_vips2tiff.c:		!(in->BandFmt == IM_BANDFMT_SHORT && 
libvips/format/im_vips2tiff.c:			in->Type == IM_TYPE_LABS) &&
libvips/format/im_vips2tiff.c:		in->BandFmt != IM_BANDFMT_USHORT &&
libvips/format/im_vips2tiff.c:		in->BandFmt != IM_BANDFMT_FLOAT ) {
libvips/format/im_vips2tiff.c:			_( "unsigned 8-bit int, 16-bit int, "
libvips/format/im_vips2tiff.c:			"and 32-bit float only" ) );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( in->Coding == IM_CODING_NONE ) {
libvips/format/im_vips2tiff.c:		if( in->Bands < 1 || in->Bands > 5 ) {
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( tw->pyramid ) {
libvips/format/im_vips2tiff.c:		if( !(tw->bname = new_tiff_name( tw, tw->name, 1 )) ||
libvips/format/im_vips2tiff.c:			!(tw->tif = tiff_openout( tw, tw->bname )) ) {
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c:		if( !(tw->tif = tiff_openout( tw, tw->name )) ) {
libvips/format/im_vips2tiff.c:			return( -1 );
libvips/format/im_vips2tiff.c:	/* Write the TIFF header for the full-res file.
libvips/format/im_vips2tiff.c:	if( write_tiff_header( tw, tw->tif, in->Xsize, in->Ysize ) ) {
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( tw->tile ) 
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2tiff.c:	if( tw->layer )
libvips/format/im_vips2tiff.c:		free_pyramid( tw->layer );
libvips/format/im_vips2tiff.c:	if( tw->tif ) {
libvips/format/im_vips2tiff.c:		TIFFClose( tw->tif );
libvips/format/im_vips2tiff.c:		tw->tif = NULL;
libvips/format/im_vips2tiff.c:	if( tw->pyramid && gather_pyramid( tw ) ) {
libvips/format/im_vips2tiff.c:		return( -1 );
libvips/format/im_vips2raw.c: *	- initial code based on im_vips2ppm()
libvips/format/im_vips2raw.c: *      - replaced FILE with plain file handlers for reducing
libvips/format/im_vips2raw.c: *        confusion about binary vs. non-binary file modes.
libvips/format/im_vips2raw.c: * 	- gtkdoc
libvips/format/im_vips2raw.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_vips2raw.c:  write->in = in;
libvips/format/im_vips2raw.c:  write->fd = fd;
libvips/format/im_vips2raw.c:  if( !write->fd ) {
libvips/format/im_vips2raw.c:  for( i = 0; i < area->height; i++ ) {
libvips/format/im_vips2raw.c:    PEL *p = (PEL *) IM_REGION_ADDR( region, area->left, area->top + i );
libvips/format/im_vips2raw.c:    if( im__write( write->fd, p, IM_IMAGE_SIZEOF_PEL(write->in)*area->width ) )
libvips/format/im_vips2raw.c:      return( -1 );
libvips/format/im_vips2raw.c: * Returns: 0 on success, -1 on error.
libvips/format/im_vips2raw.c:    return( -1 );
libvips/format/im_vips2raw.c:    return( -1 );
libvips/format/im_csv2vips.c: *	- hacked from ppm reader
libvips/format/im_csv2vips.c: * 	- now distingushes whitespace and separators, so we can have blank 
libvips/format/im_csv2vips.c: * 	- oop, unquoted trailing columns could get missed
libvips/format/im_csv2vips.c: * 	- added im_csv2vips_header()
libvips/format/im_csv2vips.c: * 	- gtkdoc
libvips/format/im_csv2vips.c: * 	- allow lines that end with EOF rather than \n
libvips/format/im_csv2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_csv2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_csv2vips.c:	return( -1 );
libvips/format/im_csv2vips.c:			return( -1 );
libvips/format/im_csv2vips.c:		return( -1 );
libvips/format/im_csv2vips.c:		return( -1 );
libvips/format/im_csv2vips.c:	if( ch == -2 ) 
libvips/format/im_csv2vips.c:		return( -1 );
libvips/format/im_csv2vips.c:	/* If lines is -1, we have to parse the whole file to get the
libvips/format/im_csv2vips.c:	if( lines == -1 ) {
libvips/format/im_csv2vips.c:		return( -1 );
libvips/format/im_csv2vips.c:				return( -1 );
libvips/format/im_csv2vips.c:				return( -1 );
libvips/format/im_csv2vips.c:				return( -1 );
libvips/format/im_csv2vips.c:			return( -1 );
libvips/format/im_csv2vips.c: * Load a CSV (comma-separated values) file. The output image is always 1 
libvips/format/im_csv2vips.c: * <emphasis>skip:lines-to-skip</emphasis> The number of lines to skip at 
libvips/format/im_csv2vips.c: * <emphasis>line:lines-to-read</emphasis> 
libvips/format/im_csv2vips.c: * The number of lines to read from the file. Default -1, meaning read to end of
libvips/format/im_csv2vips.c: * <emphasis>whi:whitespace-characters</emphasis> 
libvips/format/im_csv2vips.c: * <emphasis>sep:separator-characters</emphasis> 
libvips/format/im_csv2vips.c: * Returns: 0 on success, -1 on error.
libvips/format/im_csv2vips.c:	int lines = -1;
libvips/format/im_csv2vips.c:		return( -1 );
libvips/format/im_csv2vips.c:		return( -1 );
libvips/format/im_csv2vips.c:		return( -1 );
libvips/format/im_csv2vips.c:		return( -1 );
libvips/format/im_csv2vips.c:	object_class->nickname = "csv";
libvips/format/im_csv2vips.c:	object_class->description = _( "CSV" );
libvips/format/im_csv2vips.c:	format_class->header = csv2vips_header;
libvips/format/im_csv2vips.c:	format_class->load = im_csv2vips;
libvips/format/im_csv2vips.c:	format_class->save = im_vips2csv;
libvips/format/im_csv2vips.c:	format_class->suffs = csv_suffs;
libvips/format/format.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/format.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/format.c: * @see_also: <link linkend="libvips-image">image</link>
libvips/format/format.c: * it automatically appears in all VIPS user-interfaces. It will also be
libvips/format/format.c: * load() method instead. Return 0 for success, -1 for error, setting
libvips/format/format.c: * define this method, you can still define save() and have a save-only
libvips/format/format.c: * Return 0 for success, -1 for error, setting
libvips/format/format.c: * define this method, you can still define load() and have a load-only
libvips/format/format.c: * Return 0 for success, -1 for error, setting
libvips/format/format.c: * <structfield>suffs</structfield> A %NULL-terminated list of possible file 
libvips/format/format.c: * At the command-line, use:
libvips/format/format.c: * vips --list classes | grep Format
libvips/format/format.c:	object_class->nickname = "tiff";
libvips/format/format.c:	object_class->description = _( "TIFF" );
libvips/format/format.c:	format_class->is_a = istiff;
libvips/format/format.c:	format_class->header = tiff2vips_header;
libvips/format/format.c:	format_class->load = im_tiff2vips;
libvips/format/format.c:	format_class->save = im_vips2tiff;
libvips/format/format.c:	format_class->get_flags = tiff_flags;
libvips/format/format.c:	format_class->suffs = tiff_suffs;
libvips/format/format.c:        return( b->priority - a->priority );
libvips/format/format.c: * it returns non-%NULL, iteration terminates and that value is returned. The
libvips/format/format.c:	VIPS_OBJECT_CLASS( vips_format_parent_class )->
libvips/format/format.c:	for( p = class->suffs; *p; p++ ) {
libvips/format/format.c:	if( class->is_a )
libvips/format/format.c:	if( class->header )
libvips/format/format.c:	if( class->load )
libvips/format/format.c:	if( class->save )
libvips/format/format.c:	if( class->get_flags )
libvips/format/format.c:	object_class->print_class = vips_format_print_class;
libvips/format/format.c:	return( format->get_flags ? format->get_flags( filename ) : 0 );
libvips/format/format.c:		return( -1 );
libvips/format/format.c:		return( -1 );
libvips/format/format.c:	object_class->nickname = "vips";
libvips/format/format.c:	object_class->description = _( "VIPS" );
libvips/format/format.c:	format_class->is_a = im_isvips;
libvips/format/format.c:	format_class->header = file2vips;
libvips/format/format.c:	format_class->load = file2vips;
libvips/format/format.c:	format_class->save = vips2file;
libvips/format/format.c:	format_class->get_flags = vips_flags;
libvips/format/format.c:	format_class->suffs = vips_suffs;
libvips/format/format.c:	if( format->is_a ) {
libvips/format/format.c:		if( format->is_a( filename ) ) 
libvips/format/format.c:	else if( im_filename_suffix_match( filename, format->suffs ) )
libvips/format/format.c:	if( format->save &&
libvips/format/format.c:		im_filename_suffix_match( name, format->suffs ) )
libvips/format/format.c: * Returns: 0 on success, -1 on error
libvips/format/format.c:		format->load( name, out ) )
libvips/format/format.c:		return( -1 );
libvips/format/format.c: * Returns: 0 on success, -1 on error
libvips/format/format.c:		format->save( im, name ) ) 
libvips/format/format.c:		return( -1 );
libvips/format/radiance.c: * 	- write packed data, a separate im_rad2float() operation can unpack
libvips/format/radiance.c: * 	- add radiance write
libvips/format/radiance.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/radiance.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/radiance.c: * Copyright (c) 1990 - 2009 The Regents of the University of California,
libvips/format/radiance.c: * 3. The end-user documentation included with the redistribution,
libvips/format/radiance.c: *       if and wherever such third-party acknowledgments normally appear.
libvips/format/radiance.c:/* Begin copy-paste from Radiance sources.
libvips/format/radiance.c:#define  PIXSTDFMT		"-Y %d +X %d\n"
libvips/format/radiance.c:#define  scanlen(rs)		((rs)->rt & YMAJOR ? (rs)->xr : (rs)->yr)
libvips/format/radiance.c:#define  numscans(rs)		((rs)->rt & YMAJOR ? (rs)->yr : (rs)->xr)
libvips/format/radiance.c:#define  BYTE 	unsigned char	/* 8-bit unsigned integer */
libvips/format/radiance.c:#define CIE_D		(	CIE_x_r*(CIE_y_g - CIE_y_b) + \
libvips/format/radiance.c:				CIE_x_g*(CIE_y_b - CIE_y_r) + \
libvips/format/radiance.c:				CIE_x_b*(CIE_y_r - CIE_y_g)	)
libvips/format/radiance.c:				( CIE_x_w*(CIE_y_g - CIE_y_b) - \
libvips/format/radiance.c:				  CIE_y_w*(CIE_x_g - CIE_x_b) + \
libvips/format/radiance.c:				  CIE_x_g*CIE_y_b - CIE_x_b*CIE_y_g	) )
libvips/format/radiance.c:				( CIE_x_w*(CIE_y_b - CIE_y_r) - \
libvips/format/radiance.c:				  CIE_y_w*(CIE_x_b - CIE_x_r) - \
libvips/format/radiance.c:				( CIE_x_w*(CIE_y_r - CIE_y_g) - \
libvips/format/radiance.c:				  CIE_y_w*(CIE_x_r - CIE_x_g) + \
libvips/format/radiance.c:				  CIE_x_r*CIE_y_g - CIE_x_g*CIE_y_r	) )
libvips/format/radiance.c:/* As of 9-94, CIE_rf=.265074126, CIE_gf=.670114631 and CIE_bf=.064811243 */
libvips/format/radiance.c:				ldexp((c)[p]+.5,(int)(c)[EXP]-(COLXS+8)) : \
libvips/format/radiance.c:#define  COLRFMT		"32-bit_rle_rgbe"
libvips/format/radiance.c:#define  CIEFMT			"32-bit_rle_xyze"
libvips/format/radiance.c:#define  PICFMT			"32-bit_rle_???e"	/* matches either */
libvips/format/radiance.c:		buf[MAXLINE-2] = '\n';
libvips/format/radiance.c:			return(-1);
libvips/format/radiance.c:		if (buf[MAXLINE-2] != '\n') {
libvips/format/radiance.c:			ungetc(buf[MAXLINE-2], fp);	/* prevent false end */
libvips/format/radiance.c:			buf[MAXLINE-2] = '\0';
libvips/format/radiance.c:			return(-1);
libvips/format/radiance.c:	if (!formatval(((struct check*)cp)->fs, s)
libvips/format/radiance.c:			&& ((struct check*)cp)->fp != NULL) {
libvips/format/radiance.c:		fputs(s, ((struct check*)cp)->fp);
libvips/format/radiance.c:				if (*p == '-') {
libvips/format/radiance.c:					setmatch += p[-1] <= *s && *s <= p[1];
libvips/format/radiance.c: * and -1 if the input format does not match or there is an
libvips/format/radiance.c: * error reading the header.  If fmt is empty, then -1 is returned
libvips/format/radiance.c: * and that it is not a static, read-only string!
libvips/format/radiance.c:		return(-1);
libvips/format/radiance.c:				return(-1);
libvips/format/radiance.c:	return(strcmp(fmt, cdat.fs) ? -1 : 1);	/* literal match */
libvips/format/radiance.c:	rp->rt = 0;
libvips/format/radiance.c:	if (xndx > yndx) rp->rt |= YMAJOR;
libvips/format/radiance.c:	if (xndx[-1] == '-') rp->rt |= XDECR;
libvips/format/radiance.c:	if (yndx[-1] == '-') rp->rt |= YDECR;
libvips/format/radiance.c:	if ((rp->xr = atoi(xndx+1)) <= 0)
libvips/format/radiance.c:	if ((rp->yr = atoi(yndx+1)) <= 0)
libvips/format/radiance.c:			return(-1);
libvips/format/radiance.c:			for (i = scanline[0][EXP] << rshift; i > 0; i--) {
libvips/format/radiance.c:				copycolr(scanline[0], scanline[-1]);
libvips/format/radiance.c:				len--;
libvips/format/radiance.c:			len--;
libvips/format/radiance.c:		return(-1);
libvips/format/radiance.c:		return(-1);
libvips/format/radiance.c:		return(oldreadcolrs(scanline+1, len-1, fp));
libvips/format/radiance.c:		return(-1);		/* length mismatch! */
libvips/format/radiance.c:		    return(-1);
libvips/format/radiance.c:			return -1;
libvips/format/radiance.c:		    	return -1;	/* overrun */
libvips/format/radiance.c:		    while (code--)
libvips/format/radiance.c:		} else {		/* non-run */
libvips/format/radiance.c:		    	return -1;	/* overrun */
libvips/format/radiance.c:		    while (code--) {
libvips/format/radiance.c:			    return -1;
libvips/format/radiance.c:	if (rp->rt&YMAJOR)
libvips/format/radiance.c:				rp->rt&YDECR ? '-' : '+', rp->yr,
libvips/format/radiance.c:				rp->rt&XDECR ? '-' : '+', rp->xr);
libvips/format/radiance.c:				rp->rt&XDECR ? '-' : '+', rp->xr,
libvips/format/radiance.c:				rp->rt&YDECR ? '-' : '+', rp->yr);
libvips/format/radiance.c:		return(fwrite((char *)scanline,sizeof(COLR),len,fp) - len);
libvips/format/radiance.c:		if (beg-j > 1 && beg-j < MINRUN) {
libvips/format/radiance.c:			    putc(128+beg-j, fp);
libvips/format/radiance.c:		while (j < beg) {		/* write out non-run */
libvips/format/radiance.c:		    if ((c2 = beg-j) > 128) c2 = 128;
libvips/format/radiance.c:		    while (c2--)
libvips/format/radiance.c:	return(ferror(fp) ? -1 : 0);
libvips/format/radiance.c:/* End copy-paste from Radiance sources.
libvips/format/radiance.c:	IM_FREE( read->filename );
libvips/format/radiance.c:	IM_FREEF( fclose, read->fin );
libvips/format/radiance.c:	IM_FREE( read->buf );
libvips/format/radiance.c:	read->filename = im_strdup( NULL, filename );
libvips/format/radiance.c:	read->out = out;
libvips/format/radiance.c:	read->fin = NULL;
libvips/format/radiance.c:	strcpy( read->format, COLRFMT );
libvips/format/radiance.c:	read->expos = 1.0;
libvips/format/radiance.c:		read->colcor[i] = 1.0;
libvips/format/radiance.c:	read->aspect = 1.0;
libvips/format/radiance.c:	read->prims[0][0] = CIE_x_r;
libvips/format/radiance.c:	read->prims[0][1] = CIE_y_r;
libvips/format/radiance.c:	read->prims[1][0] = CIE_x_g;
libvips/format/radiance.c:	read->prims[1][1] = CIE_y_g;
libvips/format/radiance.c:	read->prims[2][0] = CIE_x_b;
libvips/format/radiance.c:	read->prims[2][1] = CIE_y_b;
libvips/format/radiance.c:	read->prims[3][0] = CIE_x_w;
libvips/format/radiance.c:	read->prims[3][1] = CIE_y_w;
libvips/format/radiance.c:	read->buf = NULL;
libvips/format/radiance.c:	if( !(read->fin = im__file_open_read( filename, NULL )) ) {
libvips/format/radiance.c:		if( formatval( line, read->format ) )
libvips/format/radiance.c:			return( -1 );
libvips/format/radiance.c:		read->expos *= exposval( line );
libvips/format/radiance.c:			read->colcor[i] *= cc[i];
libvips/format/radiance.c:		read->aspect *= aspectval( line );
libvips/format/radiance.c:		primsval( read->prims, line );
libvips/format/radiance.c:	{ "rad-prims-rx", "rad-prims-ry" }, 
libvips/format/radiance.c:	{ "rad-prims-gx", "rad-prims-gy" },
libvips/format/radiance.c:	{ "rad-prims-bx", "rad-prims-by" },
libvips/format/radiance.c:	{ "rad-prims-wx", "rad-prims-wy" }
libvips/format/radiance.c:	"rad-colcor-r",
libvips/format/radiance.c:	"rad-colcor-g",
libvips/format/radiance.c:	"rad-colcor-b"
libvips/format/radiance.c:		!fgetsresolu( &read->rs, fin ) ) {
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:	out->Xsize = scanlen( &read->rs );
libvips/format/radiance.c:	out->Ysize = numscans( &read->rs );
libvips/format/radiance.c:	out->Bands = 4;
libvips/format/radiance.c:	out->BandFmt = IM_BANDFMT_UCHAR;
libvips/format/radiance.c:	out->Coding = IM_CODING_RAD;
libvips/format/radiance.c:	out->Xres = 1.0;
libvips/format/radiance.c:	out->Yres = read->aspect;
libvips/format/radiance.c:	out->Xoffset = 0.0;
libvips/format/radiance.c:	out->Yoffset = 0.0;
libvips/format/radiance.c:	if( im_meta_set_string( out, "rad-format", read->format ) )
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:	if( strcmp( read->format, COLRFMT ) == 0 )
libvips/format/radiance.c:		out->Type = IM_TYPE_RGB;
libvips/format/radiance.c:	else if( strcmp( read->format, CIEFMT ) == 0 )
libvips/format/radiance.c:		out->Type = IM_TYPE_XYZ;
libvips/format/radiance.c:		out->Type = IM_TYPE_MULTIBAND;
libvips/format/radiance.c:	if( im_meta_set_double( out, "rad-expos", read->expos ) )
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:		if( im_meta_set_double( out, colcor_name[i], read->colcor[i] ) )
libvips/format/radiance.c:			return( -1 );
libvips/format/radiance.c:	if( im_meta_set_double( out, "rad-aspect", read->aspect ) )
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:				prims_name[i][j], read->prims[i][j] ) )
libvips/format/radiance.c:				return( -1 );
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:	if( rad2vips_get_header( read, read->fin, read->out ) ) {
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:	if( !(read->buf = IM_ARRAY( NULL, im->Xsize, COLR )) )
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:	for( y = 0; y < im->Ysize; y++ ) {
libvips/format/radiance.c:		if( freadcolrs( read->buf, im->Xsize, fin ) ) {
libvips/format/radiance.c:			return( -1 );
libvips/format/radiance.c:		if( im_writeline( y, im, (void *) read->buf ) )
libvips/format/radiance.c:			return( -1 );
libvips/format/radiance.c: * Returns: 0 on success, -1 on error.
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:	if( rad2vips_get_header( read, read->fin, read->out ) ||
libvips/format/radiance.c:		rad2vips_get_data( read, read->fin, read->out ) ) {
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:/* What we track during an radiance-file write.
libvips/format/radiance.c:	IM_FREE( write->filename );
libvips/format/radiance.c:	IM_FREEF( fclose, write->fout );
libvips/format/radiance.c:	write->in = in;
libvips/format/radiance.c:	write->filename = im_strdup( NULL, filename );
libvips/format/radiance.c:        write->fout = im__file_open_write( filename );
libvips/format/radiance.c:	strcpy( write->format, COLRFMT );
libvips/format/radiance.c:	write->expos = 1.0;
libvips/format/radiance.c:		write->colcor[i] = 1.0;
libvips/format/radiance.c:	write->aspect = 1.0;
libvips/format/radiance.c:	write->prims[0][0] = CIE_x_r;
libvips/format/radiance.c:	write->prims[0][1] = CIE_y_r;
libvips/format/radiance.c:	write->prims[1][0] = CIE_x_g;
libvips/format/radiance.c:	write->prims[1][1] = CIE_y_g;
libvips/format/radiance.c:	write->prims[2][0] = CIE_x_b;
libvips/format/radiance.c:	write->prims[2][1] = CIE_y_b;
libvips/format/radiance.c:	write->prims[3][0] = CIE_x_w;
libvips/format/radiance.c:	write->prims[3][1] = CIE_y_w;
libvips/format/radiance.c:        if( !write->filename || !write->fout ) {
libvips/format/radiance.c:	(void) im_meta_get_double( write->in, "rad-expos", &write->expos );
libvips/format/radiance.c:	(void) im_meta_get_double( write->in, "rad-aspect", &write->aspect );
libvips/format/radiance.c:	if( !im_meta_get_string( write->in, "rad-format", &str ) )
libvips/format/radiance.c:		im_strncpy( write->format, str, 256 );
libvips/format/radiance.c:	if( write->in->Type == IM_TYPE_RGB )
libvips/format/radiance.c:		strcpy( write->format, COLRFMT );
libvips/format/radiance.c:	if( write->in->Type == IM_TYPE_XYZ )
libvips/format/radiance.c:		strcpy( write->format, CIEFMT );
libvips/format/radiance.c:		if( !im_meta_get_double( write->in, colcor_name[i], &d ) )
libvips/format/radiance.c:			write->colcor[i] = d;
libvips/format/radiance.c:			if( !im_meta_get_double( write->in, 
libvips/format/radiance.c:				write->prims[i][j] = d;
libvips/format/radiance.c:	write->rs.rt = YDECR | YMAJOR;
libvips/format/radiance.c:	write->rs.xr = write->in->Xsize;
libvips/format/radiance.c:	write->rs.yr = write->in->Ysize;
libvips/format/radiance.c:	fprintf( write->fout, "#?RADIANCE\n" );
libvips/format/radiance.c:	fputformat( write->format, write->fout );
libvips/format/radiance.c:	fputexpos( write->expos, write->fout );
libvips/format/radiance.c:	fputcolcor( write->colcor, write->fout );
libvips/format/radiance.c:	fprintf( write->fout, "SOFTWARE=vips %s\n", im_version_string() );
libvips/format/radiance.c:	fputaspect( write->aspect, write->fout );
libvips/format/radiance.c:	fputprims( write->prims, write->fout );
libvips/format/radiance.c:	fputs( "\n", write->fout );
libvips/format/radiance.c:	fputsresolu( &write->rs, write->fout );
libvips/format/radiance.c:	for( i = 0; i < area->height; i++ ) {
libvips/format/radiance.c:		PEL *p = (PEL *) IM_REGION_ADDR( region, 0, area->top + i );
libvips/format/radiance.c:		if( fwritecolrs( p, area->width, write->fout ) ) 
libvips/format/radiance.c:			return( -1 );
libvips/format/radiance.c:	if( vips_sink_disc( write->in, vips2rad_put_data_block, write ) )
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c: * This operation needs an #IM_CODING_RAD image, or a three-band float image.
libvips/format/radiance.c: * Returns: 0 on success, -1 on error.
libvips/format/radiance.c:	if( in->BandFmt == IM_BANDFMT_FLOAT &&
libvips/format/radiance.c:		in->Bands == 3 && 
libvips/format/radiance.c:		in->Coding == IM_CODING_NONE ) { 
libvips/format/radiance.c:			return( -1 );
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:		return( -1 );
libvips/format/radiance.c:	object_class->nickname = "rad";
libvips/format/radiance.c:	object_class->description = _( "Radiance" );
libvips/format/radiance.c:	format_class->is_a = israd;
libvips/format/radiance.c:	format_class->header = rad2vips_header;
libvips/format/radiance.c:	format_class->load = im_rad2vips;
libvips/format/radiance.c:	format_class->save = im_vips2rad;
libvips/format/radiance.c:	format_class->suffs = rad_suffs;
libvips/format/im_tile_cache.c: * This isn't the same as im_cache(): we don't sub-divide, and we 
libvips/format/im_tile_cache.c: * single-thread our callee.
libvips/format/im_tile_cache.c: * 	- take ownership of reused tiles in case the cache is being shared
libvips/format/im_tile_cache.c: * 	- release ownership after fillng with pixels in case we read across
libvips/format/im_tile_cache.c: * 	- gtkdoc
libvips/format/im_tile_cache.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_tile_cache.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_tile_cache.c:	Read *read = tile->read;
libvips/format/im_tile_cache.c:	read->cache = g_slist_remove( read->cache, tile );
libvips/format/im_tile_cache.c:	read->ntiles -= 1;
libvips/format/im_tile_cache.c:	assert( read->ntiles >= 0 );
libvips/format/im_tile_cache.c:	tile->read = NULL;
libvips/format/im_tile_cache.c:	IM_FREEF( im_region_free, tile->region );
libvips/format/im_tile_cache.c:	IM_FREEF( g_mutex_free, read->lock );
libvips/format/im_tile_cache.c:	while( read->cache ) {
libvips/format/im_tile_cache.c:		Tile *tile = (Tile *) read->cache->data;
libvips/format/im_tile_cache.c:	read->in = in;
libvips/format/im_tile_cache.c:	read->out = out;
libvips/format/im_tile_cache.c:	read->tile_width = tile_width;
libvips/format/im_tile_cache.c:	read->tile_height = tile_height;
libvips/format/im_tile_cache.c:	read->max_tiles = max_tiles;
libvips/format/im_tile_cache.c:	read->time = 0;
libvips/format/im_tile_cache.c:	read->ntiles = 0;
libvips/format/im_tile_cache.c:	read->lock = g_mutex_new();
libvips/format/im_tile_cache.c:	read->cache = NULL;
libvips/format/im_tile_cache.c:	tile->read = read;
libvips/format/im_tile_cache.c:	tile->region = NULL;
libvips/format/im_tile_cache.c:	tile->time = read->time;
libvips/format/im_tile_cache.c:	tile->x = -1;
libvips/format/im_tile_cache.c:	tile->y = -1;
libvips/format/im_tile_cache.c:	read->cache = g_slist_prepend( read->cache, tile );
libvips/format/im_tile_cache.c:	assert( read->ntiles >= 0 );
libvips/format/im_tile_cache.c:	read->ntiles += 1;
libvips/format/im_tile_cache.c:	if( !(tile->region = im_region_create( read->in )) ) {
libvips/format/im_tile_cache.c:	for( p = read->cache; p; p = p->next ) {
libvips/format/im_tile_cache.c:		Tile *tile = (Tile *) p->data;
libvips/format/im_tile_cache.c:		if( tile->x == x && tile->y == y )
libvips/format/im_tile_cache.c:	assert( tile->read->ntiles >= 0 );
libvips/format/im_tile_cache.c:	tile->time = tile->read->time++;
libvips/format/im_tile_cache.c:	tile->x = x;
libvips/format/im_tile_cache.c:	tile->y = y;
libvips/format/im_tile_cache.c:	printf( "im_tile_cache: filling tile %d x %d\n", tile->x, tile->y );
libvips/format/im_tile_cache.c:	area.width = tile->read->tile_width;
libvips/format/im_tile_cache.c:	area.height = tile->read->tile_height;
libvips/format/im_tile_cache.c:	if( im_prepare( tile->region, &area ) )
libvips/format/im_tile_cache.c:		return( -1 );
libvips/format/im_tile_cache.c:	im__region_no_ownership( tile->region );
libvips/format/im_tile_cache.c:	if( read->max_tiles == -1 ||
libvips/format/im_tile_cache.c:		read->ntiles < read->max_tiles ) {
libvips/format/im_tile_cache.c:	oldest = read->time;
libvips/format/im_tile_cache.c:	for( p = read->cache; p; p = p->next ) {
libvips/format/im_tile_cache.c:		Tile *t = (Tile *) p->data;
libvips/format/im_tile_cache.c:		if( t->time < oldest ) {
libvips/format/im_tile_cache.c:			oldest = t->time;
libvips/format/im_tile_cache.c:	im__region_take_ownership( tile->region );
libvips/format/im_tile_cache.c:	printf( "im_tile_cache: reusing tile %d x %d\n", tile->x, tile->y );
libvips/format/im_tile_cache.c:	assert( im_rect_includesrect( &from->valid, area ) );
libvips/format/im_tile_cache.c:	assert( im_rect_includesrect( &to->valid, area ) );
libvips/format/im_tile_cache.c:	for( y = area->top; y < IM_RECT_BOTTOM( area ); y++ ) {
libvips/format/im_tile_cache.c:		PEL *p = (PEL *) IM_REGION_ADDR( from, area->left, y );
libvips/format/im_tile_cache.c:		PEL *q = (PEL *) IM_REGION_ADDR( to, area->left, y );
libvips/format/im_tile_cache.c:		memcpy( q, p, IM_IMAGE_SIZEOF_PEL( from->im ) * area->width );
libvips/format/im_tile_cache.c:	const int tw = read->tile_width;
libvips/format/im_tile_cache.c:	const int th = read->tile_height;
libvips/format/im_tile_cache.c:	Rect *r = &out->valid;
libvips/format/im_tile_cache.c:	int xs = (r->left / tw) * tw;
libvips/format/im_tile_cache.c:	int ys = (r->top / th) * th;
libvips/format/im_tile_cache.c:	g_mutex_lock( read->lock );
libvips/format/im_tile_cache.c:				g_mutex_unlock( read->lock );
libvips/format/im_tile_cache.c:				return( -1 );
libvips/format/im_tile_cache.c:			copy_region( tile->region, out, &hit );
libvips/format/im_tile_cache.c:	g_mutex_unlock( read->lock );
libvips/format/im_tile_cache.c: * This cache is made of up to @max_tiles tiles (a value of -1 for
libvips/format/im_tile_cache.c: * This is a lower-level operation than im_cache() since it does no 
libvips/format/im_tile_cache.c: * Returns: 0 on success, -1 on error.
libvips/format/im_tile_cache.c:	if( tile_width <= 0 || tile_height <= 0 || max_tiles < -1 ) {
libvips/format/im_tile_cache.c:		return( -1 );
libvips/format/im_tile_cache.c:		return( -1 );
libvips/format/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/format/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/format/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/format/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/format/Makefile.in:am__mv = mv -f
libvips/format/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/format/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/format/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/format/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/format/Makefile.in:	$(LDFLAGS) -o $@
libvips/format/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
libvips/format/Makefile.in:all: all-am
libvips/format/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/format/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/format/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/format/Makefile'; \
libvips/format/Makefile.in:	  $(AUTOMAKE) --gnu libvips/format/Makefile
libvips/format/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/format/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/format/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/format/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/format/Makefile.in:clean-noinstLTLIBRARIES:
libvips/format/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/format/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/format/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/format/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/format/Makefile.in:mostlyclean-compile:
libvips/format/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/format/Makefile.in:distclean-compile:
libvips/format/Makefile.in:	-rm -f *.tab.c
libvips/format/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/format/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/format/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/format/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/format/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/format/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/format/Makefile.in:mostlyclean-libtool:
libvips/format/Makefile.in:	-rm -f *.lo
libvips/format/Makefile.in:clean-libtool:
libvips/format/Makefile.in:	-rm -rf .libs _libs
libvips/format/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/format/Makefile.in:	mkid -fID $$unique
libvips/format/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/format/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/format/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/format/Makefile.in:	  if test $$# -gt 0; then \
libvips/format/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/format/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/format/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/format/Makefile.in:distclean-tags:
libvips/format/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/format/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/format/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/format/Makefile.in:			   sort -u` ;; \
libvips/format/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/format/Makefile.in:	  if test -d $$d/$$file; then \
libvips/format/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/format/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/format/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/format/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/format/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/format/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/format/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/format/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/format/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/format/Makefile.in:check-am: all-am
libvips/format/Makefile.in:check: check-am
libvips/format/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/format/Makefile.in:install: install-am
libvips/format/Makefile.in:install-exec: install-exec-am
libvips/format/Makefile.in:install-data: install-data-am
libvips/format/Makefile.in:uninstall: uninstall-am
libvips/format/Makefile.in:install-am: all-am
libvips/format/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/format/Makefile.in:installcheck: installcheck-am
libvips/format/Makefile.in:install-strip:
libvips/format/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/format/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/format/Makefile.in:mostlyclean-generic:
libvips/format/Makefile.in:clean-generic:
libvips/format/Makefile.in:distclean-generic:
libvips/format/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/format/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/format/Makefile.in:maintainer-clean-generic:
libvips/format/Makefile.in:clean: clean-am
libvips/format/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/format/Makefile.in:	mostlyclean-am
libvips/format/Makefile.in:distclean: distclean-am
libvips/format/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/format/Makefile.in:	-rm -f Makefile
libvips/format/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/format/Makefile.in:	distclean-tags
libvips/format/Makefile.in:dvi: dvi-am
libvips/format/Makefile.in:dvi-am:
libvips/format/Makefile.in:html: html-am
libvips/format/Makefile.in:html-am:
libvips/format/Makefile.in:info: info-am
libvips/format/Makefile.in:info-am:
libvips/format/Makefile.in:install-data-am:
libvips/format/Makefile.in:install-dvi: install-dvi-am
libvips/format/Makefile.in:install-dvi-am:
libvips/format/Makefile.in:install-exec-am:
libvips/format/Makefile.in:install-html: install-html-am
libvips/format/Makefile.in:install-html-am:
libvips/format/Makefile.in:install-info: install-info-am
libvips/format/Makefile.in:install-info-am:
libvips/format/Makefile.in:install-man:
libvips/format/Makefile.in:install-pdf: install-pdf-am
libvips/format/Makefile.in:install-pdf-am:
libvips/format/Makefile.in:install-ps: install-ps-am
libvips/format/Makefile.in:install-ps-am:
libvips/format/Makefile.in:installcheck-am:
libvips/format/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/format/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/format/Makefile.in:	-rm -f Makefile
libvips/format/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/format/Makefile.in:mostlyclean: mostlyclean-am
libvips/format/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/format/Makefile.in:	mostlyclean-libtool
libvips/format/Makefile.in:pdf: pdf-am
libvips/format/Makefile.in:pdf-am:
libvips/format/Makefile.in:ps: ps-am
libvips/format/Makefile.in:ps-am:
libvips/format/Makefile.in:uninstall-am:
libvips/format/Makefile.in:.MAKE: install-am install-strip
libvips/format/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/format/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/format/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/format/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/format/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/format/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/format/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/format/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/format/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/format/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/format/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/format/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/format/dbh.h: * (c) Copyright, 1986-1991
libvips/format/dbh.h: * database sub-definitions
libvips/format/dbh.h: * The previous-generation header for Analyze images. Although (c) Mayo
libvips/format/dbh.h:        			pixdim[1] - voxel width
libvips/format/dbh.h:        			pixdim[2] - voxel height
libvips/format/dbh.h:        			pixdim[3] - interslice distance
libvips/format/im_vips2jpeg.c:/* Convert 8-bit VIPS images to/from JPEG.
libvips/format/im_vips2jpeg.c: *	- better no-overshoot on tile loop
libvips/format/im_vips2jpeg.c: *	- better demand size choice for eval
libvips/format/im_vips2jpeg.c: *	- update im_error()/im_warn()
libvips/format/im_vips2jpeg.c: *	- now loads and saves exif data
libvips/format/im_vips2jpeg.c: * 	- now loads ICC profiles
libvips/format/im_vips2jpeg.c: * 	- now saves ICC profiles from the VIPS header
libvips/format/im_vips2jpeg.c: * 	- jpeg load sets vips xres/yres from exif, if possible
libvips/format/im_vips2jpeg.c: * 	- jpeg save sets exif xres/yres from vips, if possible
libvips/format/im_vips2jpeg.c: * 	- cut from old vips_jpeg.c
libvips/format/im_vips2jpeg.c: * 	- auto convert to sRGB/mono for save
libvips/format/im_vips2jpeg.c: * 	- add </libexif/ prefix if required
libvips/format/im_vips2jpeg.c: * 	- oop, libexif confusion
libvips/format/im_vips2jpeg.c: * 	- use im_wbuffer() API for BG writes
libvips/format/im_vips2jpeg.c: * 	- write CMYK if Bands == 4 and Type == CMYK
libvips/format/im_vips2jpeg.c: *	- fix signed/unsigned warning
libvips/format/im_vips2jpeg.c: * 	- allow "none" for profile, meaning don't embed one
libvips/format/im_vips2jpeg.c: * 	- gtkdoc
libvips/format/im_vips2jpeg.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_vips2jpeg.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_vips2jpeg.c:	return( -1 );
libvips/format/im_vips2jpeg.c:	return( -1 );
libvips/format/im_vips2jpeg.c:	return( -1 );
libvips/format/im_vips2jpeg.c:#include <exif-data.h>
libvips/format/im_vips2jpeg.c:#include <exif-loader.h>
libvips/format/im_vips2jpeg.c:#include <exif-ifd.h>
libvips/format/im_vips2jpeg.c:#include <exif-utils.h>
libvips/format/im_vips2jpeg.c:#include <libexif/exif-data.h>
libvips/format/im_vips2jpeg.c:#include <libexif/exif-loader.h>
libvips/format/im_vips2jpeg.c:#include <libexif/exif-ifd.h>
libvips/format/im_vips2jpeg.c:#include <libexif/exif-utils.h>
libvips/format/im_vips2jpeg.c:	FILE *fp;		/* fclose() if non-NULL */
libvips/format/im_vips2jpeg.c:/* New output message method - send to VIPS.
libvips/format/im_vips2jpeg.c:	(*cinfo->err->format_message)( cinfo, buffer );
libvips/format/im_vips2jpeg.c:	ErrorManager *eman = (ErrorManager *) cinfo->err;
libvips/format/im_vips2jpeg.c:	if( eman->fp ) {
libvips/format/im_vips2jpeg.c:		(void) fclose( eman->fp );
libvips/format/im_vips2jpeg.c:		eman->fp = NULL;
libvips/format/im_vips2jpeg.c:	(*cinfo->err->output_message)( cinfo );
libvips/format/im_vips2jpeg.c:	longjmp( eman->jmp, 1 );
libvips/format/im_vips2jpeg.c:	jpeg_destroy_compress( &write->cinfo );
libvips/format/im_vips2jpeg.c:	IM_FREEF( im_close, write->in );
libvips/format/im_vips2jpeg.c:	IM_FREEF( fclose, write->eman.fp );
libvips/format/im_vips2jpeg.c:	IM_FREE( write->row_pointer );
libvips/format/im_vips2jpeg.c:	IM_FREE( write->profile_bytes );
libvips/format/im_vips2jpeg.c:	IM_FREEF( im_close, write->inverted );
libvips/format/im_vips2jpeg.c:	if( !(write->in = im__convert_saveable( in, 
libvips/format/im_vips2jpeg.c:	write->row_pointer = NULL;
libvips/format/im_vips2jpeg.c:        write->cinfo.err = jpeg_std_error( &write->eman.pub );
libvips/format/im_vips2jpeg.c:	write->eman.pub.error_exit = new_error_exit;
libvips/format/im_vips2jpeg.c:	write->eman.pub.output_message = new_output_message;
libvips/format/im_vips2jpeg.c:	write->eman.fp = NULL;
libvips/format/im_vips2jpeg.c:	write->profile_bytes = NULL;
libvips/format/im_vips2jpeg.c:	write->profile_length = 0;
libvips/format/im_vips2jpeg.c:	write->inverted = NULL;
libvips/format/im_vips2jpeg.c:	exif_set_rational( entry->data, bo, *v );
libvips/format/im_vips2jpeg.c:	exif_set_short( entry->data, bo, *v );
libvips/format/im_vips2jpeg.c:	/* Need to set the tag in all sections which have it :-(
libvips/format/im_vips2jpeg.c:		if( (entry = exif_content_get_entry( ed->ifd[i], tag )) &&
libvips/format/im_vips2jpeg.c:			entry->format == f &&
libvips/format/im_vips2jpeg.c:			entry->components == 1 ) {
libvips/format/im_vips2jpeg.c:		exif_content_add_entry( ed->ifd[0], entry );
libvips/format/im_vips2jpeg.c:	/* Always save as inches - more progs support it for read.
libvips/format/im_vips2jpeg.c:	xres = im->Xres * 25.4;
libvips/format/im_vips2jpeg.c:	yres = im->Yres * 25.4;
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	if( im_header_get_typeof( write->in, IM_META_EXIF_NAME ) ) {
libvips/format/im_vips2jpeg.c:		if( im_meta_get_blob( write->in, IM_META_EXIF_NAME, 
libvips/format/im_vips2jpeg.c:			return( -1 );
libvips/format/im_vips2jpeg.c:			return( -1 );
libvips/format/im_vips2jpeg.c:	if( set_exif_resolution( ed, write->in ) ) {
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	jpeg_write_marker( &write->cinfo, JPEG_APP0 + 1, data, data_length );
libvips/format/im_vips2jpeg.c:	if( im_header_get_typeof( write->in, IM_META_EXIF_NAME ) ) {
libvips/format/im_vips2jpeg.c:		if( im_meta_get_blob( write->in, IM_META_EXIF_NAME, 
libvips/format/im_vips2jpeg.c:			return( -1 );
libvips/format/im_vips2jpeg.c:		jpeg_write_marker( &write->cinfo, JPEG_APP0 + 1, 
libvips/format/im_vips2jpeg.c:#define ICC_OVERHEAD_LEN  14            /* size of non-profile data in APP2 */
libvips/format/im_vips2jpeg.c:#define MAX_DATA_BYTES_IN_MARKER  (MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN)
libvips/format/im_vips2jpeg.c:  num_markers = (icc_data_len + MAX_DATA_BYTES_IN_MARKER - 1) / 
libvips/format/im_vips2jpeg.c:    icc_data_len -= length;
libvips/format/im_vips2jpeg.c:    /* Write the marker identifying string "ICC_PROFILE" (null-terminated).
libvips/format/im_vips2jpeg.c:     * We code it in this less-than-transparent way so that the code works
libvips/format/im_vips2jpeg.c:    while (length--) {
libvips/format/im_vips2jpeg.c:	if( !(write->profile_bytes = 
libvips/format/im_vips2jpeg.c:		&write->profile_length )) ) 
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	write_profile_data( &write->cinfo, 
libvips/format/im_vips2jpeg.c:		(JOCTET *) write->profile_bytes, write->profile_length );
libvips/format/im_vips2jpeg.c:	if( im_meta_get_blob( write->in, IM_META_ICC_NAME, 
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	write_profile_data( &write->cinfo, data, data_length );
libvips/format/im_vips2jpeg.c:	if( setjmp( write->eman.jmp ) ) 
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	for( i = 0; i < area->height; i++ )
libvips/format/im_vips2jpeg.c:		write->row_pointer[i] = (JSAMPROW) 
libvips/format/im_vips2jpeg.c:			IM_REGION_ADDR( region, 0, area->top + i );
libvips/format/im_vips2jpeg.c:	jpeg_write_scanlines( &write->cinfo, write->row_pointer, area->height );
libvips/format/im_vips2jpeg.c:	in = write->in;
libvips/format/im_vips2jpeg.c:        assert( in->BandFmt == IM_BANDFMT_UCHAR );
libvips/format/im_vips2jpeg.c:	assert( in->Coding == IM_CODING_NONE );
libvips/format/im_vips2jpeg.c:        assert( in->Bands == 1 || in->Bands == 3 || in->Bands == 4 );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:			"%s", _( "qfac should be in 0-100" ) );
libvips/format/im_vips2jpeg.c:                return( -1 );
libvips/format/im_vips2jpeg.c:        write->cinfo.image_width = in->Xsize;
libvips/format/im_vips2jpeg.c:        write->cinfo.image_height = in->Ysize;
libvips/format/im_vips2jpeg.c:	write->cinfo.input_components = in->Bands;
libvips/format/im_vips2jpeg.c:	if( in->Bands == 4 && in->Type == IM_TYPE_CMYK ) {
libvips/format/im_vips2jpeg.c:		if( !(write->inverted = im_open( "vips2jpeg_invert", "p" )) ||
libvips/format/im_vips2jpeg.c:			im_invert( in, write->inverted ) )
libvips/format/im_vips2jpeg.c:			return( -1 );
libvips/format/im_vips2jpeg.c:		in = write->inverted;
libvips/format/im_vips2jpeg.c:	else if( in->Bands == 3 )
libvips/format/im_vips2jpeg.c:	else if( in->Bands == 1 )
libvips/format/im_vips2jpeg.c:	write->cinfo.in_color_space = space; 
libvips/format/im_vips2jpeg.c:	if( !(write->row_pointer = 
libvips/format/im_vips2jpeg.c:		IM_ARRAY( NULL, write->in->Ysize, JSAMPROW )) )
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:        jpeg_set_defaults( &write->cinfo );
libvips/format/im_vips2jpeg.c:        jpeg_set_quality( &write->cinfo, qfac, TRUE );
libvips/format/im_vips2jpeg.c:	jpeg_start_compress( &write->cinfo, TRUE );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	if( vips_sink_disc( write->in, write_jpeg_block, write ) )
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	if( setjmp( write->eman.jmp ) ) 
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	jpeg_finish_compress( &write->cinfo );
libvips/format/im_vips2jpeg.c: * contains an ICC profile named IM_META_ICC_NAME ("icc-profile-data"), the
libvips/format/im_vips2jpeg.c: * Will write "fred.jpg" at high-quality with no ICC profile.
libvips/format/im_vips2jpeg.c: * Returns: 0 on success, -1 on error.
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	if( setjmp( write->eman.jmp ) ) {
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:        jpeg_create_compress( &write->cinfo );
libvips/format/im_vips2jpeg.c:        if( !(write->eman.fp = im__file_open_write( name )) ) {
libvips/format/im_vips2jpeg.c:                return( -1 );
libvips/format/im_vips2jpeg.c:        jpeg_stdio_dest( &write->cinfo, write->eman.fp );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	OutputBuffer *buf = (OutputBuffer *) cinfo->dest;
libvips/format/im_vips2jpeg.c:	int mx = cinfo->image_width * cinfo->image_height * 
libvips/format/im_vips2jpeg.c:		cinfo->input_components * sizeof( JOCTET );
libvips/format/im_vips2jpeg.c:	buf->data = (JOCTET *) (*cinfo->mem->alloc_large) 
libvips/format/im_vips2jpeg.c:	buf->used = 0;
libvips/format/im_vips2jpeg.c:	buf->size = mx;
libvips/format/im_vips2jpeg.c:	buf->pub.next_output_byte = buf->data;
libvips/format/im_vips2jpeg.c:	buf->pub.free_in_buffer = mx;
libvips/format/im_vips2jpeg.c:        OutputBuffer *buf = (OutputBuffer *) cinfo->dest;
libvips/format/im_vips2jpeg.c:	int len = buf->size - buf->pub.free_in_buffer;
libvips/format/im_vips2jpeg.c:	if( !(obuf = im_malloc( buf->out, len )) )
libvips/format/im_vips2jpeg.c:	memcpy( obuf, buf->data, len );
libvips/format/im_vips2jpeg.c:	*(buf->obuf) = obuf;
libvips/format/im_vips2jpeg.c:	*(buf->olen) = len;
libvips/format/im_vips2jpeg.c:	 * images can be written to the same file without re-executing 
libvips/format/im_vips2jpeg.c:	if( !cinfo->dest ) {    /* first time for this JPEG object? */
libvips/format/im_vips2jpeg.c:		cinfo->dest = (struct jpeg_destination_mgr *)
libvips/format/im_vips2jpeg.c:			(*cinfo->mem->alloc_small) 
libvips/format/im_vips2jpeg.c:	buf = (OutputBuffer *) cinfo->dest;
libvips/format/im_vips2jpeg.c:	buf->pub.init_destination = init_destination;
libvips/format/im_vips2jpeg.c:	buf->pub.empty_output_buffer = empty_output_buffer;
libvips/format/im_vips2jpeg.c:	buf->pub.term_destination = term_destination;
libvips/format/im_vips2jpeg.c:	buf->out = out;
libvips/format/im_vips2jpeg.c:	buf->obuf = obuf;
libvips/format/im_vips2jpeg.c:	buf->olen = olen;
libvips/format/im_vips2jpeg.c: * @olen. @olen should really be a size_t rather than an int :-(
libvips/format/im_vips2jpeg.c: * Returns: 0 on success, -1 on error.
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	if( setjmp( write->eman.jmp ) ) {
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:        jpeg_create_compress( &write->cinfo );
libvips/format/im_vips2jpeg.c:        buf_dest( &write->cinfo, out, obuf, olen );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c: * Returns: 0 on success, -1 on error.
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_vips2jpeg.c:	printf( "Content-length: %d\r\n", len );
libvips/format/im_vips2jpeg.c:	printf( "Content-type: image/jpeg\r\n" );
libvips/format/im_vips2jpeg.c:		return( -1 );
libvips/format/im_raw2vips.c: * 	- gtkdoc
libvips/format/im_raw2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_raw2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_raw2vips.c: * Returns: 0 on success, -1 on error.
libvips/format/im_raw2vips.c:		return( -1 );
libvips/format/im_raw2vips.c:		return( -1 );
libvips/format/im_raw2vips.c:		return( -1 );
libvips/format/im_exr2vips.c: * 	- from im_png2vips.c
libvips/format/im_exr2vips.c: * 	- oops, buffer calcs were wrong
libvips/format/im_exr2vips.c: * 	- added tiled read, with a separate cache
libvips/format/im_exr2vips.c: * 	- removed *255 we had before, better to do something clever with
libvips/format/im_exr2vips.c: * 	- gtkdoc
libvips/format/im_exr2vips.c:	- colour management
libvips/format/im_exr2vips.c:	- attributes 
libvips/format/im_exr2vips.c:	- more of OpenEXR's pixel formats 
libvips/format/im_exr2vips.c:	- more than just RGBA channels
libvips/format/im_exr2vips.c:	openexr lets you have different formats in different channels :-(
libvips/format/im_exr2vips.c:	there's no API to read the "chromaticities" attribute :-(
libvips/format/im_exr2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_exr2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_exr2vips.c:	return( -1 );
libvips/format/im_exr2vips.c:	/* Need to single-thread calls to ReadTile.
libvips/format/im_exr2vips.c:	IM_FREE( read->name );
libvips/format/im_exr2vips.c:	IM_FREEF( ImfCloseTiledInputFile, read->tiles );
libvips/format/im_exr2vips.c:	IM_FREEF( ImfCloseInputFile, read->lines );
libvips/format/im_exr2vips.c:	IM_FREEF( g_mutex_free, read->lock );
libvips/format/im_exr2vips.c:	read->name = im_strdup( NULL, name );
libvips/format/im_exr2vips.c:	read->out = out;
libvips/format/im_exr2vips.c:	read->tiles = NULL;
libvips/format/im_exr2vips.c:	read->lines = NULL;
libvips/format/im_exr2vips.c:	read->lock = NULL;
libvips/format/im_exr2vips.c:	if( !(read->tiles = ImfOpenTiledInputFile( read->name )) ) {
libvips/format/im_exr2vips.c:		if( !(read->lines = ImfOpenInputFile( read->name )) ) {
libvips/format/im_exr2vips.c:	if( read->tiles )
libvips/format/im_exr2vips.c:	if( read->tiles ) {
libvips/format/im_exr2vips.c:		read->header = ImfTiledInputHeader( read->tiles );
libvips/format/im_exr2vips.c:		read->lock = g_mutex_new();
libvips/format/im_exr2vips.c:		read->tile_width = ImfTiledInputTileXSize( read->tiles );
libvips/format/im_exr2vips.c:		read->tile_height = ImfTiledInputTileYSize( read->tiles );
libvips/format/im_exr2vips.c:		read->header = ImfInputHeader( read->lines );
libvips/format/im_exr2vips.c:	ImfHeaderDataWindow( read->header, &xmin, &ymin, &xmax, &ymax );
libvips/format/im_exr2vips.c:	read->window.left = xmin;
libvips/format/im_exr2vips.c:	read->window.top = ymin;
libvips/format/im_exr2vips.c:	read->window.width = xmax - xmin + 1;
libvips/format/im_exr2vips.c:	read->window.height = ymax - ymin + 1;
libvips/format/im_exr2vips.c:		 read->window.width, read->window.height, 4,
libvips/format/im_exr2vips.c:		return( -1 );
libvips/format/im_exr2vips.c:		return( -1 );
libvips/format/im_exr2vips.c:	tiled = read->tiles != NULL;
libvips/format/im_exr2vips.c:	Rect *r = &out->valid;
libvips/format/im_exr2vips.c:	const int tw = read->tile_width;
libvips/format/im_exr2vips.c:	const int th = read->tile_height;
libvips/format/im_exr2vips.c:	const int xs = (r->left / tw) * tw;
libvips/format/im_exr2vips.c:	const int ys = (r->top / th) * th;
libvips/format/im_exr2vips.c:	image.width = read->out->Xsize;
libvips/format/im_exr2vips.c:	image.height = read->out->Ysize;
libvips/format/im_exr2vips.c:			if( !ImfTiledInputSetFrameBuffer( read->tiles,
libvips/format/im_exr2vips.c:				imf_buffer - 
libvips/format/im_exr2vips.c:					(read->window.left + x) -
libvips/format/im_exr2vips.c:					(read->window.top + y) * tw,
libvips/format/im_exr2vips.c:				return( -1 );
libvips/format/im_exr2vips.c:			g_mutex_lock( read->lock );
libvips/format/im_exr2vips.c:			result = ImfTiledInputReadTile( read->tiles, 
libvips/format/im_exr2vips.c:			g_mutex_unlock( read->lock );
libvips/format/im_exr2vips.c:				return( -1 );
libvips/format/im_exr2vips.c:					(hit.left - tile.left) +
libvips/format/im_exr2vips.c:					(hit.top - tile.top + z) * tw;
libvips/format/im_exr2vips.c:		read->tile_width * read->tile_height, ImfRgba )) )
libvips/format/im_exr2vips.c:		return( -1 );
libvips/format/im_exr2vips.c:	const int left = read->window.left;
libvips/format/im_exr2vips.c:	const int top = read->window.top;
libvips/format/im_exr2vips.c:	const int width = read->window.width;
libvips/format/im_exr2vips.c:	const int height = read->window.height;
libvips/format/im_exr2vips.c:		return( -1 );
libvips/format/im_exr2vips.c:		if( !ImfInputSetFrameBuffer( read->lines,
libvips/format/im_exr2vips.c:			imf_buffer - left - (top + y) * width,
libvips/format/im_exr2vips.c:			return( -1 );
libvips/format/im_exr2vips.c:		if( !ImfInputReadPixels( read->lines, top + y, top + y ) ) {
libvips/format/im_exr2vips.c:			return( -1 );
libvips/format/im_exr2vips.c:			return( -1 );
libvips/format/im_exr2vips.c:	if( read->tiles ) {
libvips/format/im_exr2vips.c:		if( !(raw = im_open_local( read->out, "cache", "p" )) )
libvips/format/im_exr2vips.c:			return( -1 );
libvips/format/im_exr2vips.c:			return( -1 );
libvips/format/im_exr2vips.c:		if( im_tile_cache( raw, read->out, 
libvips/format/im_exr2vips.c:			read->tile_width, read->tile_height,
libvips/format/im_exr2vips.c:			2 * (1 + raw->Xsize / read->tile_width) ) ) 
libvips/format/im_exr2vips.c:			return( -1 );
libvips/format/im_exr2vips.c:		if( exr2vips_lines( read, read->out ) ) 
libvips/format/im_exr2vips.c:			return( -1 );
libvips/format/im_exr2vips.c: * Returns: 0 on success, -1 on error.
libvips/format/im_exr2vips.c:		return( -1 );
libvips/format/im_exr2vips.c:	object_class->nickname = "exr";
libvips/format/im_exr2vips.c:	object_class->description = _( "OpenEXR" );
libvips/format/im_exr2vips.c:	format_class->is_a = isexr;
libvips/format/im_exr2vips.c:	format_class->header = exr2vips_header;
libvips/format/im_exr2vips.c:	format_class->load = im_exr2vips;
libvips/format/im_exr2vips.c:	format_class->get_flags = exr_flags;
libvips/format/im_exr2vips.c:	format_class->suffs = exr_suffs;
libvips/format/im_magick2vips.c: *	- from im_tiff2vips
libvips/format/im_magick2vips.c: *	- some InitializeMagick() fail with NULL arg
libvips/format/im_magick2vips.c: *	- im_magick2vips_header() also checks sensible width/height
libvips/format/im_magick2vips.c: * 	- copy attributes to meta
libvips/format/im_magick2vips.c: * 	- write many-frame images as a big column if all frames have identical
libvips/format/im_magick2vips.c: * 	- test for magick attr support
libvips/format/im_magick2vips.c: * 	- set RGB16/GREY16 if appropriate
libvips/format/im_magick2vips.c: * 	- support 32/64 bit imagemagick too
libvips/format/im_magick2vips.c: * 	- use MaxRGB if QuantumRange is missing (thanks Bob)
libvips/format/im_magick2vips.c: * 	- look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel)
libvips/format/im_magick2vips.c: * 	- use image->attributes if GetNextImageAttribute() is missing
libvips/format/im_magick2vips.c: * 	- allow funky bit depths, like 14 (thanks Mikkel)
libvips/format/im_magick2vips.c: * 	- reset dcm:display-range to help DICOM read
libvips/format/im_magick2vips.c: * 	- argh libMagick uses 255 == transparent ... we must invert all 
libvips/format/im_magick2vips.c: *	- fix signed/unsigned warnings
libvips/format/im_magick2vips.c: * 	- SetImageOption() is optional (to help GM)
libvips/format/im_magick2vips.c: * 	- gtkdoc
libvips/format/im_magick2vips.c: * 	- better number of bands detection with GetImageType()
libvips/format/im_magick2vips.c: * 	- use new API stuff, argh
libvips/format/im_magick2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_magick2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_magick2vips.c:	return( -1 );
libvips/format/im_magick2vips.c:/* pre-float Magick used to call this MaxRGB.
libvips/format/im_magick2vips.c:	printf( "im_magick2vips: read_destroy: %s\n", read->filename );
libvips/format/im_magick2vips.c:	IM_FREEF( DestroyImage, read->image );
libvips/format/im_magick2vips.c:	IM_FREEF( DestroyImageInfo, read->image_info ); 
libvips/format/im_magick2vips.c:	IM_FREE( read->frames );
libvips/format/im_magick2vips.c:	IM_FREE( read->filename );
libvips/format/im_magick2vips.c:	DestroyExceptionInfo( &read->exception );
libvips/format/im_magick2vips.c:	IM_FREEF( g_mutex_free, read->lock );
libvips/format/im_magick2vips.c:	read->filename = im_strdup( NULL, filename );
libvips/format/im_magick2vips.c:	read->im = im;
libvips/format/im_magick2vips.c:	read->image = NULL;
libvips/format/im_magick2vips.c:	read->image_info = CloneImageInfo( NULL );
libvips/format/im_magick2vips.c:	GetExceptionInfo( &read->exception );
libvips/format/im_magick2vips.c:	read->n_frames = 0;
libvips/format/im_magick2vips.c:	read->frames = NULL;
libvips/format/im_magick2vips.c:	read->frame_height = 0;
libvips/format/im_magick2vips.c:	read->lock = g_mutex_new();
libvips/format/im_magick2vips.c:	if( !read->filename || !read->image_info ) 
libvips/format/im_magick2vips.c:	im_strncpy( read->image_info->filename, filename, MaxTextExtent );
libvips/format/im_magick2vips.c:	printf( "im_magick2vips: read_new: %s\n", read->filename );
libvips/format/im_magick2vips.c:	ImageType type = GetImageType( image, &image->exception );
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:	IMAGE *im = read->im;
libvips/format/im_magick2vips.c:	Image *image = read->image;
libvips/format/im_magick2vips.c:	printf( "parse_header: filename = %s\n", read->filename );
libvips/format/im_magick2vips.c:		&image->exception ) );
libvips/format/im_magick2vips.c:		GetImageChannelDepth( image, AllChannels, &image->exception ) );
libvips/format/im_magick2vips.c:		GetImageDepth( image, &image->exception ) );
libvips/format/im_magick2vips.c:	printf( "image->depth = %lu\n", image->depth );
libvips/format/im_magick2vips.c:		GetImageType( image, &image->exception ) );
libvips/format/im_magick2vips.c:		IsGrayImage( image, &image->exception ) );
libvips/format/im_magick2vips.c:		IsMonochromeImage( image, &image->exception ) );
libvips/format/im_magick2vips.c:		IsOpaqueImage( image, &image->exception ) );
libvips/format/im_magick2vips.c:	im->Xsize = image->columns;
libvips/format/im_magick2vips.c:	im->Ysize = image->rows;
libvips/format/im_magick2vips.c:	read->frame_height = image->rows;
libvips/format/im_magick2vips.c:	if( (im->Bands = get_bands( image )) < 0 )
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:	 * GetImageDepth() but that seems unreliable. 16-bit mono DICOM images 
libvips/format/im_magick2vips.c:	im->BandFmt = -1;
libvips/format/im_magick2vips.c:	if( image->depth >= 1 && image->depth <= 8 ) 
libvips/format/im_magick2vips.c:		im->BandFmt = IM_BANDFMT_UCHAR;
libvips/format/im_magick2vips.c:	if( image->depth >= 9 && image->depth <= 16 ) 
libvips/format/im_magick2vips.c:		im->BandFmt = IM_BANDFMT_USHORT;
libvips/format/im_magick2vips.c:	if( image->depth == 32 )
libvips/format/im_magick2vips.c:		im->BandFmt = IM_BANDFMT_FLOAT;
libvips/format/im_magick2vips.c:	if( image->depth == 64 )
libvips/format/im_magick2vips.c:		im->BandFmt = IM_BANDFMT_DOUBLE;
libvips/format/im_magick2vips.c:	if( image->depth == 32 )
libvips/format/im_magick2vips.c:		im->BandFmt = IM_BANDFMT_UINT;
libvips/format/im_magick2vips.c:	if( im->BandFmt == -1 ) {
libvips/format/im_magick2vips.c:			(int) image->depth );
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:	switch( image->colorspace ) {
libvips/format/im_magick2vips.c:		if( im->BandFmt == IM_BANDFMT_USHORT )
libvips/format/im_magick2vips.c:			im->Type = IM_TYPE_GREY16;
libvips/format/im_magick2vips.c:			im->Type = IM_TYPE_B_W;
libvips/format/im_magick2vips.c:		if( im->BandFmt == IM_BANDFMT_USHORT )
libvips/format/im_magick2vips.c:			im->Type = IM_TYPE_RGB16;
libvips/format/im_magick2vips.c:			im->Type = IM_TYPE_RGB;
libvips/format/im_magick2vips.c:		if( im->BandFmt == IM_BANDFMT_USHORT )
libvips/format/im_magick2vips.c:			im->Type = IM_TYPE_RGB16;
libvips/format/im_magick2vips.c:			im->Type = IM_TYPE_sRGB;
libvips/format/im_magick2vips.c:		im->Type = IM_TYPE_CMYK;
libvips/format/im_magick2vips.c:			(int) image->colorspace );
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:	switch( image->units ) {
libvips/format/im_magick2vips.c:		im->Xres = image->x_resolution / 25.4;
libvips/format/im_magick2vips.c:		im->Yres = image->y_resolution / 25.4;
libvips/format/im_magick2vips.c:		im->Xres = image->x_resolution / 10.0;
libvips/format/im_magick2vips.c:		im->Yres = image->y_resolution / 10.0;
libvips/format/im_magick2vips.c:		im->Xres = 1.0;
libvips/format/im_magick2vips.c:		im->Yres = 1.0;
libvips/format/im_magick2vips.c:	im->Coding = IM_CODING_NONE;
libvips/format/im_magick2vips.c:	/* Three ways to loop over attributes / properties :-(
libvips/format/im_magick2vips.c:		vips_buf_appendf( &name, "magick-%s", key );
libvips/format/im_magick2vips.c:	/* magick6.1-ish and later, deprecated in 6.5ish.
libvips/format/im_magick2vips.c:		vips_buf_appendf( &name, "magick-%s", attr->key );
libvips/format/im_magick2vips.c:		im_meta_set_string( im, vips_buf_all( &name ), attr->value );
libvips/format/im_magick2vips.c:	 * ->attributes is marked as private in the header, but there's no
libvips/format/im_magick2vips.c:	for( attr = image->attributes; attr; attr = attr->next ) {
libvips/format/im_magick2vips.c:		vips_buf_appendf( &name, "magick-%s", attr->key );
libvips/format/im_magick2vips.c:		im_meta_set_string( im, vips_buf_all( &name ), attr->value );
libvips/format/im_magick2vips.c:	/* Do we have a set of equal-sized frames? Append them.
libvips/format/im_magick2vips.c:	read->n_frames = 0;
libvips/format/im_magick2vips.c:		if( p->columns != (unsigned int) im->Xsize ||
libvips/format/im_magick2vips.c:			p->rows != (unsigned int) im->Ysize ||
libvips/format/im_magick2vips.c:			get_bands( p ) != im->Bands )
libvips/format/im_magick2vips.c:		read->n_frames += 1;
libvips/format/im_magick2vips.c:		read->n_frames = 1;
libvips/format/im_magick2vips.c:	im->Ysize *= read->n_frames;
libvips/format/im_magick2vips.c:	if( !(read->frames = IM_ARRAY( NULL, read->n_frames, Image * )) )
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:	for( i = 0; i < read->n_frames; i++ ) {
libvips/format/im_magick2vips.c:		read->frames[i] = p;
libvips/format/im_magick2vips.c:/* Divide by this to get 0 - MAX from a Quantum. Eg. consider QuantumRange ==
libvips/format/im_magick2vips.c: * 65535, MAX == 255 (a Q16 ImageMagic representing an 8-bit image). Make sure
libvips/format/im_magick2vips.c: * ImageMagick trying to represent a 16-bit image.
libvips/format/im_magick2vips.c:		q[1] = MAX - pixels[x].opacity / SCALE( MAX ); \
libvips/format/im_magick2vips.c:		q[3] = MAX - pixels[x].opacity / SCALE( MAX ); \
libvips/format/im_magick2vips.c:	switch( im->Bands ) {
libvips/format/im_magick2vips.c:		switch( im->BandFmt ) {
libvips/format/im_magick2vips.c:		switch( im->BandFmt ) {
libvips/format/im_magick2vips.c:		switch( im->BandFmt ) {
libvips/format/im_magick2vips.c:		switch( im->BandFmt ) {
libvips/format/im_magick2vips.c:		left, top, width, height, &image->exception )) )
libvips/format/im_magick2vips.c:	if( image->storage_class == PseudoClass ) {
libvips/format/im_magick2vips.c:			if( x < image->colors ) {
libvips/format/im_magick2vips.c:				pixels[i].red = image->colormap[x].red;
libvips/format/im_magick2vips.c:				pixels[i].green = image->colormap[x].green;
libvips/format/im_magick2vips.c:				pixels[i].blue = image->colormap[x].blue;
libvips/format/im_magick2vips.c:	Rect *r = &out->valid;
libvips/format/im_magick2vips.c:	for( y = 0; y < r->height; y++ ) {
libvips/format/im_magick2vips.c:		int top = r->top + y;
libvips/format/im_magick2vips.c:		int frame = top / read->frame_height;
libvips/format/im_magick2vips.c:		int line = top % read->frame_height;
libvips/format/im_magick2vips.c:		g_mutex_lock( read->lock );
libvips/format/im_magick2vips.c:		pixels = get_pixels( read->frames[frame], 
libvips/format/im_magick2vips.c:			r->left, line, r->width, 1 );
libvips/format/im_magick2vips.c:		g_mutex_unlock( read->lock );
libvips/format/im_magick2vips.c:			return( -1 );
libvips/format/im_magick2vips.c:		unpack_pixels( read->im, 
libvips/format/im_magick2vips.c:			(PEL *) IM_REGION_ADDR( out, r->left, top ), 
libvips/format/im_magick2vips.c:			pixels, r->width );
libvips/format/im_magick2vips.c: * Returns: 0 on success, -1 on error.
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:	 * 0-65535 range and lose data. 
libvips/format/im_magick2vips.c:  	SetImageOption( read->image_info, "dcm:display-range", "reset" );
libvips/format/im_magick2vips.c:	read->image = ReadImage( read->image_info, &read->exception );
libvips/format/im_magick2vips.c:	if( !read->image ) {
libvips/format/im_magick2vips.c:			read->exception.reason, read->exception.description );
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:	read->image = PingImage( read->image_info, &read->exception );
libvips/format/im_magick2vips.c:	if( !read->image ) {
libvips/format/im_magick2vips.c:			read->exception.reason, read->exception.description );
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:	if( im->Xsize <= 0 || im->Ysize <= 0 ) {
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:		return( -1 );
libvips/format/im_magick2vips.c:	object_class->nickname = "magick";
libvips/format/im_magick2vips.c:	object_class->description = _( "libMagick-supported" );
libvips/format/im_magick2vips.c:	format_class->is_a = ismagick;
libvips/format/im_magick2vips.c:	format_class->header = magick2vips_header;
libvips/format/im_magick2vips.c:	format_class->load = im_magick2vips;
libvips/format/im_magick2vips.c:	format_class->suffs = magick_suffs;
libvips/format/im_magick2vips.c:	/* This can be very slow :-( Use our own jpeg/tiff/png etc. loaders in
libvips/format/im_magick2vips.c:	format_class->priority = -1000;
libvips/format/im_vips2png.c:/* Convert 1 to 4-band 8 or 16-bit VIPS images to/from PNG.
libvips/format/im_vips2png.c: *	- better no-overshoot on tile loop
libvips/format/im_vips2png.c: *	- read non-interlaced PNG with a line buffer (thanks Michel Brabants)
libvips/format/im_vips2png.c: * 	- read RGBA palette-ized images more robustly (thanks Tom)
libvips/format/im_vips2png.c: * 	- auto convert to sRGB/mono (with optional alpha) for save
libvips/format/im_vips2png.c: * 	- from vips_png.c
libvips/format/im_vips2png.c: * 	- use im_wbuffer() API for BG writes
libvips/format/im_vips2png.c: * 	- gtkdoc
libvips/format/im_vips2png.c: * 	- fixed 16-bit save
libvips/format/im_vips2png.c: * 	- lololo but broke 8-bit save, fixed again
libvips/format/im_vips2png.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/im_vips2png.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/im_vips2png.c:	return( -1 );
libvips/format/im_vips2png.c:	IM_FREEF( im_close, write->in );
libvips/format/im_vips2png.c:	IM_FREEF( fclose, write->fp );
libvips/format/im_vips2png.c:	if( write->pPng )
libvips/format/im_vips2png.c:		png_destroy_write_struct( &write->pPng, &write->pInfo );
libvips/format/im_vips2png.c:	IM_FREE( write->row_pointer );
libvips/format/im_vips2png.c:	if( !(write->in = im__convert_saveable( in, IM__RGBA, bandfmt_png )) ) {
libvips/format/im_vips2png.c:	write->row_pointer = IM_ARRAY( NULL, in->Ysize, png_bytep );
libvips/format/im_vips2png.c:	write->fp = NULL;
libvips/format/im_vips2png.c:	write->pPng = NULL;
libvips/format/im_vips2png.c:	write->pInfo = NULL;
libvips/format/im_vips2png.c:	if( !write->row_pointer ) {
libvips/format/im_vips2png.c:	if( !(write->pPng = png_create_write_struct( 
libvips/format/im_vips2png.c:	if( setjmp( write->pPng->jmpbuf ) ) {
libvips/format/im_vips2png.c:	if( !(write->pInfo = png_create_info_struct( write->pPng )) ) {
libvips/format/im_vips2png.c:	if( setjmp( write->pPng->jmpbuf ) ) 
libvips/format/im_vips2png.c:		return( -1 );
libvips/format/im_vips2png.c:	for( i = 0; i < area->height; i++ ) 
libvips/format/im_vips2png.c:		write->row_pointer[i] = (png_bytep)
libvips/format/im_vips2png.c:			IM_REGION_ADDR( region, 0, area->top + i );
libvips/format/im_vips2png.c:	png_write_rows( write->pPng, write->row_pointer, area->height );
libvips/format/im_vips2png.c:	IMAGE *in = write->in;
libvips/format/im_vips2png.c:        g_assert( in->BandFmt == IM_BANDFMT_UCHAR || 
libvips/format/im_vips2png.c:		in->BandFmt == IM_BANDFMT_USHORT );
libvips/format/im_vips2png.c:	g_assert( in->Coding == IM_CODING_NONE );
libvips/format/im_vips2png.c:        g_assert( in->Bands > 0 && in->Bands < 5 );
libvips/format/im_vips2png.c:	if( setjmp( write->pPng->jmpbuf ) ) 
libvips/format/im_vips2png.c:		return( -1 );
libvips/format/im_vips2png.c:		return( -1 );
libvips/format/im_vips2png.c:		return( -1 );
libvips/format/im_vips2png.c:	png_set_compression_level( write->pPng, compress );
libvips/format/im_vips2png.c:	write->pInfo->width = in->Xsize;
libvips/format/im_vips2png.c:	write->pInfo->height = in->Ysize;
libvips/format/im_vips2png.c:	write->pInfo->bit_depth = (in->BandFmt == IM_BANDFMT_UCHAR ? 8 : 16);
libvips/format/im_vips2png.c:	write->pInfo->gamma = (float) 1.0;
libvips/format/im_vips2png.c:	switch( in->Bands ) {
libvips/format/im_vips2png.c:	case 1: write->pInfo->color_type = PNG_COLOR_TYPE_GRAY; break;
libvips/format/im_vips2png.c:	case 2: write->pInfo->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; break;
libvips/format/im_vips2png.c:	case 3: write->pInfo->color_type = PNG_COLOR_TYPE_RGB; break;
libvips/format/im_vips2png.c:	case 4: write->pInfo->color_type = PNG_COLOR_TYPE_RGB_ALPHA; break;
libvips/format/im_vips2png.c:	png_write_info( write->pPng, write->pInfo ); 
libvips/format/im_vips2png.c:	if( write->pInfo->bit_depth > 8 && !im_amiMSBfirst() ) 
libvips/format/im_vips2png.c:		png_set_swap( write->pPng ); 
libvips/format/im_vips2png.c:		nb_passes = png_set_interlace_handling( write->pPng );
libvips/format/im_vips2png.c:		if( vips_sink_disc( write->in, write_png_block, write ) )
libvips/format/im_vips2png.c:			return( -1 );
libvips/format/im_vips2png.c:	if( setjmp( write->pPng->jmpbuf ) ) 
libvips/format/im_vips2png.c:		return( -1 );
libvips/format/im_vips2png.c:	png_write_end( write->pPng, write->pInfo );
libvips/format/im_vips2png.c: * Compress with this much effort (0 - 9). Default 6.
libvips/format/im_vips2png.c: * non-interlaced image.
libvips/format/im_vips2png.c: * saved as 16-bit PNG, others are saved as 8-bit PNG.
libvips/format/im_vips2png.c: * Returns: 0 on success, -1 on error.
libvips/format/im_vips2png.c:		return( -1 );
libvips/format/im_vips2png.c:        if( !(write->fp = im__file_open_write( name )) ) {
libvips/format/im_vips2png.c:		return( -1 );
libvips/format/im_vips2png.c:	png_init_io( write->pPng, write->fp );
libvips/format/im_vips2png.c:		return( -1 );
libvips/format/format_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/format/format_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/format/format_dispatch.c:		return( -1 );
libvips/format/format_dispatch.c:		return( -1 );
libvips/format/format_dispatch.c:		return( -1 );
libvips/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/Makefile.in:am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
libvips/Makefile.in:  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
libvips/Makefile.in:libvips_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
libvips/Makefile.in:	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
libvips/Makefile.in:	$(CXXFLAGS) $(libvips_la_LDFLAGS) $(LDFLAGS) -o $@
libvips/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/Makefile.in:am__mv = mv -f
libvips/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/Makefile.in:	$(LDFLAGS) -o $@
libvips/Makefile.in:LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/Makefile.in:	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/Makefile.in:CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/Makefile.in:	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
libvips/Makefile.in:	$(LDFLAGS) -o $@
libvips/Makefile.in:RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
libvips/Makefile.in:	html-recursive info-recursive install-data-recursive \
libvips/Makefile.in:	install-dvi-recursive install-exec-recursive \
libvips/Makefile.in:	install-html-recursive install-info-recursive \
libvips/Makefile.in:	install-pdf-recursive install-ps-recursive install-recursive \
libvips/Makefile.in:	installcheck-recursive installdirs-recursive pdf-recursive \
libvips/Makefile.in:	ps-recursive uninstall-recursive
libvips/Makefile.in:RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
libvips/Makefile.in:  distclean-recursive maintainer-clean-recursive
libvips/Makefile.in:AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
libvips/Makefile.in:	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
libvips/Makefile.in:  while test -n "$$dir1"; do \
libvips/Makefile.in:    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
libvips/Makefile.in:        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
libvips/Makefile.in:        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
libvips/Makefile.in:        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
libvips/Makefile.in:          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
libvips/Makefile.in:    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
libvips/Makefile.in:	-no-undefined \
libvips/Makefile.in:	-version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ 
libvips/Makefile.in:all: all-recursive
libvips/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/Makefile'; \
libvips/Makefile.in:	  $(AUTOMAKE) --gnu libvips/Makefile
libvips/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/Makefile.in:install-libLTLIBRARIES: $(lib_LTLIBRARIES)
libvips/Makefile.in:	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
libvips/Makefile.in:	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
libvips/Makefile.in:	  if test -f $$p; then \
libvips/Makefile.in:	test -z "$$list2" || { \
libvips/Makefile.in:	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
libvips/Makefile.in:	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
libvips/Makefile.in:uninstall-libLTLIBRARIES:
libvips/Makefile.in:	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
libvips/Makefile.in:	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
libvips/Makefile.in:	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
libvips/Makefile.in:clean-libLTLIBRARIES:
libvips/Makefile.in:	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
libvips/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/Makefile.in:	$(libvips_la_LINK) -rpath $(libdir) $(libvips_la_OBJECTS) $(libvips_la_LIBADD) $(LIBS)
libvips/Makefile.in:mostlyclean-compile:
libvips/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/Makefile.in:distclean-compile:
libvips/Makefile.in:	-rm -f *.tab.c
libvips/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
libvips/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
libvips/Makefile.in:@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/Makefile.in:@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
libvips/Makefile.in:mostlyclean-libtool:
libvips/Makefile.in:	-rm -f *.lo
libvips/Makefile.in:clean-libtool:
libvips/Makefile.in:	-rm -rf .libs _libs
libvips/Makefile.in:	    *=* | --[!k]*);; \
libvips/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
libvips/Makefile.in:	    local_target="$$target-am"; \
libvips/Makefile.in:	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
libvips/Makefile.in:	fi; test -z "$$fail"
libvips/Makefile.in:	    *=* | --[!k]*);; \
libvips/Makefile.in:	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
libvips/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
libvips/Makefile.in:	    local_target="$$target-am"; \
libvips/Makefile.in:	done && test -z "$$fail"
libvips/Makefile.in:tags-recursive:
libvips/Makefile.in:ctags-recursive:
libvips/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/Makefile.in:	mkid -fID $$unique
libvips/Makefile.in:TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
libvips/Makefile.in:	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
libvips/Makefile.in:	  include_option=--etags-include; \
libvips/Makefile.in:	  include_option=--include; \
libvips/Makefile.in:	    test ! -f $$subdir/TAGS || \
libvips/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/Makefile.in:	  if test $$# -gt 0; then \
libvips/Makefile.in:CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
libvips/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/Makefile.in:distclean-tags:
libvips/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/Makefile.in:			   sort -u` ;; \
libvips/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/Makefile.in:	  if test -d $$d/$$file; then \
libvips/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/Makefile.in:	    test -d "$(distdir)/$$subdir" \
libvips/Makefile.in:check-am: all-am
libvips/Makefile.in:check: check-recursive
libvips/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/Makefile.in:installdirs: installdirs-recursive
libvips/Makefile.in:installdirs-am:
libvips/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
libvips/Makefile.in:install: install-recursive
libvips/Makefile.in:install-exec: install-exec-recursive
libvips/Makefile.in:install-data: install-data-recursive
libvips/Makefile.in:uninstall: uninstall-recursive
libvips/Makefile.in:install-am: all-am
libvips/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/Makefile.in:installcheck: installcheck-recursive
libvips/Makefile.in:install-strip:
libvips/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/Makefile.in:mostlyclean-generic:
libvips/Makefile.in:clean-generic:
libvips/Makefile.in:distclean-generic:
libvips/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/Makefile.in:maintainer-clean-generic:
libvips/Makefile.in:clean: clean-recursive
libvips/Makefile.in:clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
libvips/Makefile.in:	mostlyclean-am
libvips/Makefile.in:distclean: distclean-recursive
libvips/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/Makefile.in:	-rm -f Makefile
libvips/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/Makefile.in:	distclean-tags
libvips/Makefile.in:dvi: dvi-recursive
libvips/Makefile.in:dvi-am:
libvips/Makefile.in:html: html-recursive
libvips/Makefile.in:html-am:
libvips/Makefile.in:info: info-recursive
libvips/Makefile.in:info-am:
libvips/Makefile.in:install-data-am:
libvips/Makefile.in:install-dvi: install-dvi-recursive
libvips/Makefile.in:install-dvi-am:
libvips/Makefile.in:install-exec-am: install-libLTLIBRARIES
libvips/Makefile.in:install-html: install-html-recursive
libvips/Makefile.in:install-html-am:
libvips/Makefile.in:install-info: install-info-recursive
libvips/Makefile.in:install-info-am:
libvips/Makefile.in:install-man:
libvips/Makefile.in:install-pdf: install-pdf-recursive
libvips/Makefile.in:install-pdf-am:
libvips/Makefile.in:install-ps: install-ps-recursive
libvips/Makefile.in:install-ps-am:
libvips/Makefile.in:installcheck-am:
libvips/Makefile.in:maintainer-clean: maintainer-clean-recursive
libvips/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/Makefile.in:	-rm -f Makefile
libvips/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/Makefile.in:mostlyclean: mostlyclean-recursive
libvips/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/Makefile.in:	mostlyclean-libtool
libvips/Makefile.in:pdf: pdf-recursive
libvips/Makefile.in:pdf-am:
libvips/Makefile.in:ps: ps-recursive
libvips/Makefile.in:ps-am:
libvips/Makefile.in:uninstall-am: uninstall-libLTLIBRARIES
libvips/Makefile.in:.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
libvips/Makefile.in:	install-am install-strip tags-recursive
libvips/Makefile.in:	all all-am check check-am clean clean-generic \
libvips/Makefile.in:	clean-libLTLIBRARIES clean-libtool ctags ctags-recursive \
libvips/Makefile.in:	distclean distclean-compile distclean-generic \
libvips/Makefile.in:	distclean-libtool distclean-tags distdir dvi dvi-am html \
libvips/Makefile.in:	html-am info info-am install install-am install-data \
libvips/Makefile.in:	install-data-am install-dvi install-dvi-am install-exec \
libvips/Makefile.in:	install-exec-am install-html install-html-am install-info \
libvips/Makefile.in:	install-info-am install-libLTLIBRARIES install-man install-pdf \
libvips/Makefile.in:	install-pdf-am install-ps install-ps-am install-strip \
libvips/Makefile.in:	installcheck installcheck-am installdirs installdirs-am \
libvips/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/Makefile.in:	pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
libvips/Makefile.in:	uninstall-libLTLIBRARIES
libvips/other/im_spatres.c: * @(#) Returns either 0 (sucess) or -1 (fail)
libvips/other/im_spatres.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_spatres.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_spatres.c:		return(-1);}
libvips/other/im_spatres.c:	if ( (in->Xsize/step == 0)||(in->Ysize/step == 0) )
libvips/other/im_spatres.c:		{im_error("im_spatres", _( "Invalid step %d" ), step);return(-1);}
libvips/other/im_spatres.c:	if (im_iocheck(in, out) == -1)
libvips/other/im_spatres.c:		return( -1 );
libvips/other/im_spatres.c:        if((in->Coding != IM_CODING_NONE)||(in->BandFmt !=IM_BANDFMT_UCHAR)) { 
libvips/other/im_spatres.c:		return(-1); }
libvips/other/im_spatres.c:        if (im_cp_desc(out, in) == -1)
libvips/other/im_spatres.c:		return( -1 );
libvips/other/im_spatres.c:	out->Xsize = in->Xsize - in->Xsize%step;
libvips/other/im_spatres.c:	out->Ysize = in->Ysize - in->Ysize%step;
libvips/other/im_spatres.c:        if( im_setupout(out) == -1)
libvips/other/im_spatres.c:		return( -1 );
libvips/other/im_spatres.c:	os = in->Xsize * in->Bands;
libvips/other/im_spatres.c:	values = (unsigned char *)calloc((unsigned)out->Bands, sizeof(char));
libvips/other/im_spatres.c:		return(-1); }
libvips/other/im_spatres.c:	input = (unsigned char *)in->data;
libvips/other/im_spatres.c:	for ( y = 0; y < out->Ysize; y += step )
libvips/other/im_spatres.c:		/* do the x loop out->Xsize / step times */
libvips/other/im_spatres.c:		for (x = 0; x < out->Xsize; x += step)
libvips/other/im_spatres.c:			cpinput += step * out->Bands; /* ??? */
libvips/other/im_spatres.c:			for ( z = 0; z < out->Bands; z++ )
libvips/other/im_spatres.c:						cpnt += out->Bands;
libvips/other/im_spatres.c:				for ( z = 0; z < out->Bands; z++ )
libvips/other/im_spatres.c:			if ( im_writeline ( y+j, out, (PEL *)line ) == -1 )
libvips/other/im_spatres.c:				return( -1 );
libvips/other/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/other/glds_funcs.c: * @(#) All functions return 0 on success and -1 on error
libvips/other/glds_funcs.c: *	- im_incheck() added
libvips/other/glds_funcs.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/glds_funcs.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/glds_funcs.c:	if (im_iocheck(im, m) == -1)
libvips/other/glds_funcs.c:		return( -1 );
libvips/other/glds_funcs.c:	if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) { 
libvips/other/glds_funcs.c:		return(-1); }
libvips/other/glds_funcs.c:	if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { 
libvips/other/glds_funcs.c:		return(-1); }
libvips/other/glds_funcs.c:	if (im_cp_desc(m, im) == -1)
libvips/other/glds_funcs.c:		return( -1 );
libvips/other/glds_funcs.c:	m->Xsize = 256; 
libvips/other/glds_funcs.c:	m->Ysize = 1;
libvips/other/glds_funcs.c:	m->BandFmt = IM_BANDFMT_DOUBLE;
libvips/other/glds_funcs.c:	m->Type = IM_TYPE_B_W;
libvips/other/glds_funcs.c:	if (im_setupout(m) == -1)
libvips/other/glds_funcs.c:		return( -1 );
libvips/other/glds_funcs.c:	b = (int *)calloc( (unsigned)m->Xsize, sizeof(int) );
libvips/other/glds_funcs.c:	l = (double *)calloc( (unsigned)m->Xsize, sizeof(double));
libvips/other/glds_funcs.c:		return(-1); }
libvips/other/glds_funcs.c:	in = (PEL*)im->data;
libvips/other/glds_funcs.c:	in += ( ypos * im->Xsize + xpos );
libvips/other/glds_funcs.c:	ofs = dy * im->Xsize + dx;
libvips/other/glds_funcs.c:		in += im->Xsize;
libvips/other/glds_funcs.c:			tmp = abs((int)*cpin - (int)(*(cpin+ofs)));
libvips/other/glds_funcs.c:	for (x=0; x<m->Xsize; x++)
libvips/other/glds_funcs.c:	if (im_writeline( 0, m, (PEL *) l ) == -1) 
libvips/other/glds_funcs.c:		return( -1 );
libvips/other/glds_funcs.c:		return( -1 );
libvips/other/glds_funcs.c:        if (m->Xsize != 256 || m->Ysize != 1 ||
libvips/other/glds_funcs.c:		 m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) {
libvips/other/glds_funcs.c:		return(-1);}
libvips/other/glds_funcs.c:	in = (double*)m->data;
libvips/other/glds_funcs.c:	for(i=0; i<m->Xsize; i++)
libvips/other/glds_funcs.c:		return( -1 );
libvips/other/glds_funcs.c:        if (m->Xsize != 256 || m->Ysize != 1 ||
libvips/other/glds_funcs.c:                m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { 
libvips/other/glds_funcs.c:		return(-1); }
libvips/other/glds_funcs.c:	in = (double*)m->data;
libvips/other/glds_funcs.c:	for(i=0; i<m->Xsize; i++)
libvips/other/glds_funcs.c:		return( -1 );
libvips/other/glds_funcs.c:        if (m->Xsize != 256 || m->Ysize != 1 ||
libvips/other/glds_funcs.c:                m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { 
libvips/other/glds_funcs.c:		return(-1); }
libvips/other/glds_funcs.c:	in = (double*)m->data;
libvips/other/glds_funcs.c:	for(i=0; i<m->Xsize; i++)
libvips/other/glds_funcs.c:	*entropy = ((-1)*tmpent/log10(2.0));
libvips/other/glds_funcs.c:		return( -1 );
libvips/other/glds_funcs.c:        if (m->Xsize != 256 || m->Ysize != 1 ||
libvips/other/glds_funcs.c:                m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { 
libvips/other/glds_funcs.c:		return(-1); }
libvips/other/glds_funcs.c:	in = (double*)m->data;
libvips/other/glds_funcs.c:	for(i=0; i<m->Xsize; i++)
libvips/other/glds_funcs.c:	tmpmean = tmpmean/((double)m->Xsize);
libvips/other/im_zone.c: * @(#) Returns 0 on sucess and -1 on error
libvips/other/im_zone.c: *	- externs removed
libvips/other/im_zone.c: *	- im_outcheck() added
libvips/other/im_zone.c: *	- modernized
libvips/other/im_zone.c: *	- memory leaks fixed
libvips/other/im_zone.c: *	- split into im_zone() and im_fzone()
libvips/other/im_zone.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_zone.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_zone.c:		return( -1 );
libvips/other/im_zone.c:		return( -1 );
libvips/other/im_zone.c:                return( -1 );
libvips/other/im_zone.c:                return( -1 );
libvips/other/im_zone.c:	for( y = 0, j = -size2; j < size2; j++, y++ ) {
libvips/other/im_zone.c:		for( x = 0, i = -size2; i < size2; i++, x++ )
libvips/other/im_zone.c:			return( -1 );
libvips/other/im_zone.c:		return( -1 );
libvips/other/im_zone.c:		return( -1 );
libvips/other/im_eye.c: * @(#)  Image has values between +ysize*ysize and -ysize*ysize
libvips/other/im_eye.c: * @(#) Returns -1 on error and 0 on success
libvips/other/im_eye.c: *	- im_outcheck() added
libvips/other/im_eye.c: *	- modernized
libvips/other/im_eye.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_eye.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_eye.c:		return( -1 );
libvips/other/im_eye.c:		return( -1 );
libvips/other/im_eye.c:                return( -1 );
libvips/other/im_eye.c:                return( -1 );
libvips/other/im_eye.c:	if( !(lut = IM_ARRAY( image, image->Xsize, double )) )
libvips/other/im_eye.c:		return( -1 );
libvips/other/im_eye.c:	constant = factor * IM_PI/(2*(xsize - 1));
libvips/other/im_eye.c:	for( x = 0; x < image->Xsize; x++ )
libvips/other/im_eye.c:		lut[x] = cos( constant*x*x ) / ((ysize - 1)*(ysize - 1));
libvips/other/im_eye.c:	for( y = 0; y < image->Ysize; y++ ) {
libvips/other/im_eye.c:		for( x = 0; x < image->Xsize; x++ )
libvips/other/im_eye.c:			return( -1 ); 
libvips/other/im_eye.c:		return( -1 );
libvips/other/im_eye.c:		return( -1 );
libvips/other/cooc_funcs.c: * @(#) All functions return 0 on success and -1 on error
libvips/other/cooc_funcs.c: *	- extern decls removed
libvips/other/cooc_funcs.c: *	- im_incheck() calls added
libvips/other/cooc_funcs.c: *	- protos added :( 
libvips/other/cooc_funcs.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/cooc_funcs.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/cooc_funcs.c:	if (im_iocheck(im, m) == -1)
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) {
libvips/other/cooc_funcs.c:		return(-1);
libvips/other/cooc_funcs.c:	if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { 
libvips/other/cooc_funcs.c:		return(-1); }
libvips/other/cooc_funcs.c:	if (im_cp_desc(m, im) == -1)
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	m->Xsize = 256;
libvips/other/cooc_funcs.c:	m->Ysize = 256;
libvips/other/cooc_funcs.c:	m->BandFmt = IM_BANDFMT_DOUBLE;
libvips/other/cooc_funcs.c:	m->Type = IM_TYPE_B_W;
libvips/other/cooc_funcs.c:	if (im_setupout(m) == -1)
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	buf = (int *)calloc( (unsigned)m->Xsize*m->Ysize, sizeof(int) );
libvips/other/cooc_funcs.c:	line = (double *)calloc( (unsigned)m->Xsize * m->Bands, sizeof(double));
libvips/other/cooc_funcs.c:		return(-1); }
libvips/other/cooc_funcs.c:	input = (PEL*)im->data;
libvips/other/cooc_funcs.c:	input += ( ypos * im->Xsize + xpos );
libvips/other/cooc_funcs.c:	offset = dy * im->Xsize + dx;
libvips/other/cooc_funcs.c:		input += im->Xsize;
libvips/other/cooc_funcs.c:			bufofst = tempA + m->Xsize * tempB;
libvips/other/cooc_funcs.c:			bufofst = tempB + m->Xsize * tempA;
libvips/other/cooc_funcs.c:	for ( y=0; y<m->Ysize; y++ )
libvips/other/cooc_funcs.c:		pnt += m->Xsize;
libvips/other/cooc_funcs.c:		for (x=0; x<m->Xsize; x++)
libvips/other/cooc_funcs.c:		if (im_writeline( y, m, (PEL *) line ) == -1) 
libvips/other/cooc_funcs.c:			return(-1);
libvips/other/cooc_funcs.c:	if (im_iocheck(im, m) == -1)
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR))
libvips/other/cooc_funcs.c:		return(-1);
libvips/other/cooc_funcs.c:	if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { 
libvips/other/cooc_funcs.c:		return(-1); }
libvips/other/cooc_funcs.c:	if (im_cp_desc(m, im) == -1)
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	m->Xsize = 256;
libvips/other/cooc_funcs.c:	m->Ysize = 256;
libvips/other/cooc_funcs.c:	m->BandFmt = IM_BANDFMT_DOUBLE;
libvips/other/cooc_funcs.c:	if (im_setupout(m) == -1)
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	buf = (int *)calloc( (unsigned)m->Xsize*m->Ysize, sizeof(int) );
libvips/other/cooc_funcs.c:	line = (double *)calloc( (unsigned)m->Xsize * m->Bands, sizeof(double));
libvips/other/cooc_funcs.c:		return(-1); }
libvips/other/cooc_funcs.c:	input = (PEL*)im->data;
libvips/other/cooc_funcs.c:	input += ( ypos * im->Xsize + xpos );
libvips/other/cooc_funcs.c:	offset = dy * im->Xsize + dx;
libvips/other/cooc_funcs.c:		input += im->Xsize;
libvips/other/cooc_funcs.c:			bufofst = tempA + m->Xsize * tempB;
libvips/other/cooc_funcs.c:	for ( y=0; y<m->Ysize; y++ )
libvips/other/cooc_funcs.c:		pnt += m->Xsize;
libvips/other/cooc_funcs.c:		for (x=0; x<m->Xsize; x++)
libvips/other/cooc_funcs.c:		if (im_writeline( y, m, (PEL *) line ) == -1) 
libvips/other/cooc_funcs.c:			return(-1);
libvips/other/cooc_funcs.c:		return(-1); }
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	if (m->Xsize != 256 || m->Ysize != 256 || 
libvips/other/cooc_funcs.c:		m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE)
libvips/other/cooc_funcs.c:		return(-1);
libvips/other/cooc_funcs.c:	pnt = (double*)m->data;
libvips/other/cooc_funcs.c:	for(i=0; i<m->Xsize * m->Ysize; i++)
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	if (m->Xsize != 256 || m->Ysize != 256 || 
libvips/other/cooc_funcs.c:		m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE)
libvips/other/cooc_funcs.c:		return(-1);
libvips/other/cooc_funcs.c:	pnt = (double*)m->data;
libvips/other/cooc_funcs.c:	for(y=0; y<m->Ysize; y++)
libvips/other/cooc_funcs.c:		pnt += m->Xsize;
libvips/other/cooc_funcs.c:		for(x=0; x<m->Xsize; x++)
libvips/other/cooc_funcs.c:			dtemp = (double)( (y-x)*(y-x) );
libvips/other/cooc_funcs.c:	double variance;	/* = (sumf2 - correction)/n, n=sum(f[i]) = 1 */
libvips/other/cooc_funcs.c:	variance = sumf2-correction;
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	if (m->Xsize != 256 || m->Ysize != 256 || 
libvips/other/cooc_funcs.c:		m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE)
libvips/other/cooc_funcs.c:		return(-1);
libvips/other/cooc_funcs.c:	row = (double*)calloc( (unsigned)m->Ysize, sizeof(double));
libvips/other/cooc_funcs.c:	col = (double*)calloc( (unsigned)m->Xsize, sizeof(double));
libvips/other/cooc_funcs.c:		return(-1);
libvips/other/cooc_funcs.c:	pbuf = (double*)m->data;
libvips/other/cooc_funcs.c:	for(j=0; j<m->Ysize; j++)
libvips/other/cooc_funcs.c:		pbuf += m->Xsize;
libvips/other/cooc_funcs.c:		for(i=0; i<m->Xsize; i++)
libvips/other/cooc_funcs.c:	pbuf = (double*)m->data;
libvips/other/cooc_funcs.c:	for(j=0; j<m->Ysize; j++)
libvips/other/cooc_funcs.c:		for(i=0; i<m->Xsize; i++)
libvips/other/cooc_funcs.c:			cpbuf += m->Xsize;
libvips/other/cooc_funcs.c:	stats(row, m->Ysize, &mrow, &stdrow);
libvips/other/cooc_funcs.c:	stats(col, m->Ysize ,&mcol, &stdcol);
libvips/other/cooc_funcs.c:	pbuf = (double*)m->data;
libvips/other/cooc_funcs.c:	for(j=0; j<m->Ysize; j++)
libvips/other/cooc_funcs.c:		pbuf += m->Xsize;
libvips/other/cooc_funcs.c:		for(i=0; i<m->Xsize; i++)
libvips/other/cooc_funcs.c:		return(-1);
libvips/other/cooc_funcs.c:	tmpcor = (tmpcor-(mcol*mrow))/(stdcol*stdrow);
libvips/other/cooc_funcs.c:		return( -1 );
libvips/other/cooc_funcs.c:	if (m->Xsize != 256 || m->Ysize != 256 || 
libvips/other/cooc_funcs.c:		m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE)
libvips/other/cooc_funcs.c:		return(-1);
libvips/other/cooc_funcs.c:	pbufstart = (double*)m->data;
libvips/other/cooc_funcs.c:	for(j=0; j<m->Ysize; j++)
libvips/other/cooc_funcs.c:		pbuf += m->Xsize;
libvips/other/cooc_funcs.c:		for(i=0; i<m->Xsize; i++)
libvips/other/cooc_funcs.c:	val = tmpent*(-1);
libvips/other/im_make_xy.c: * @(#) Returns 0 on success and -1 on error
libvips/other/im_make_xy.c: *	- from im_grey
libvips/other/im_make_xy.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_make_xy.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_make_xy.c:	Rect *r = &or->valid;
libvips/other/im_make_xy.c:	int le = r->left;
libvips/other/im_make_xy.c:	int to = r->top;
libvips/other/im_make_xy.c:		return( -1 ); 
libvips/other/im_make_xy.c:		return( -1 );
libvips/other/im_make_xy.c:	/* Set hints - ANY is ok with us.
libvips/other/im_make_xy.c:		return( -1 );
libvips/other/im_make_xy.c:		return( -1 );
libvips/other/im_benchmark.c: * @(#) Returns 0 on sucess and -1 on error.
libvips/other/im_benchmark.c: *	- hacked in
libvips/other/im_benchmark.c: *	- added im_benchmarkn()
libvips/other/im_benchmark.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_benchmark.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_benchmark.c:------------------
libvips/other/im_benchmark.c:  http://cima.ng-london.org.uk/~john/POD
libvips/other/im_benchmark.c:------ benchmark in nip2 -----------
libvips/other/im_benchmark.c:#!/home/john/vips/bin/nip2 -s
libvips/other/im_benchmark.c:// get command-line arguments
libvips/other/im_benchmark.c:// fudge factor in XYZ to get a match under NGC lights on uv-durable paper
libvips/other/im_benchmark.c:blacks_down = Vector [-2, 0, 0];
libvips/other/im_benchmark.c:// but that uses lcms which is single-threaded. So for this benchmark, we use
libvips/other/im_benchmark.c:// VIPS's own ->sRGB converter, which is less accurate but does thread.
libvips/other/im_benchmark.c:------ benchmark in nip2 -----------
libvips/other/im_benchmark.c: * these together to get a CPU-bound operation.
libvips/other/im_benchmark.c:	double shadow[3] = { -2, 0, 0 };
libvips/other/im_benchmark.c:		1.13529, -0.0604663, -0.0606321,
libvips/other/im_benchmark.c:		0.0975399, 0.935024, -0.0256156,
libvips/other/im_benchmark.c:		-0.0336428, 0.0414702, 0.994135 );
libvips/other/im_benchmark.c:			100, 100, t[0]->Xsize - 200, t[0]->Ysize - 200 ) ||
libvips/other/im_benchmark.c:		im_black( t[12], t[4]->Xsize, t[4]->Ysize, 3 ) ||
libvips/other/im_benchmark.c:/* Chain n benchmarks together to get a CPU-bound operation.
libvips/other/im_benchmark.c:				(double) in->Xsize / t[0]->Xsize, 0, 0, 
libvips/other/im_benchmark.c:				(double) in->Ysize / t[0]->Ysize, 
libvips/other/im_benchmark.c:			im_benchmarkn( t[1], out, n - 1 ) );
libvips/other/im_simcontr.c: * @(#) Returns 0 on success and -1 on error
libvips/other/im_simcontr.c: *	- externs removed
libvips/other/im_simcontr.c: *	- im_outcheck() added
libvips/other/im_simcontr.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_simcontr.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_simcontr.c:		return( -1 );
libvips/other/im_simcontr.c:        if (im_setupout( image ) == -1 )
libvips/other/im_simcontr.c:                return( -1 );
libvips/other/im_simcontr.c:		return(-1); }
libvips/other/im_simcontr.c:		if ( im_writeline( y, image, (PEL *)line1 ) == -1 )
libvips/other/im_simcontr.c:			return( -1 );
libvips/other/im_simcontr.c:		if ( im_writeline( y, image, (PEL *)line2 ) == -1 )
libvips/other/im_simcontr.c:			return( -1 );
libvips/other/im_simcontr.c:		if ( im_writeline( y, image, (PEL *)line1 ) == -1 )
libvips/other/im_simcontr.c:			return( -1 );
libvips/other/im_sines.c: * @(#) Returns 0 on success and -1 on error
libvips/other/im_sines.c: *	- externs removed
libvips/other/im_sines.c: *	- im_outcheck() added
libvips/other/im_sines.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_sines.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_sines.c:		return( -1 );
libvips/other/im_sines.c:		return(-1); }
libvips/other/im_sines.c:        if (im_setupout( image ) == -1 )
libvips/other/im_sines.c:                return( -1 );
libvips/other/im_sines.c:	size = image->Xsize;
libvips/other/im_sines.c:		return(-1); }
libvips/other/im_sines.c:	cons =  factor * IM_PI * 2.0/(double)image->Xsize;
libvips/other/im_sines.c:		for (y=0; y<image->Ysize; y++)
libvips/other/im_sines.c:			for (x=0; x<image->Xsize; x++)
libvips/other/im_sines.c:				(float)(cos(cons*(x*costheta-ysintheta)));
libvips/other/im_sines.c:			if ( im_writeline( y, image, (PEL *)line ) == -1 )
libvips/other/im_sines.c:				return( -1 );
libvips/other/im_sines.c:		for (y=0; y<image->Ysize; y++)
libvips/other/im_sines.c:			ysintheta = cos (- cons * y * sintheta);
libvips/other/im_sines.c:			for (x=0; x<image->Xsize; x++)
libvips/other/im_sines.c:			if ( im_writeline( y, image, (PEL *)line ) == -1 )
libvips/other/im_sines.c:				return( -1 );
libvips/other/im_meanstd.c: * @(#) Both functions return 0 on success and -1 on error
libvips/other/im_meanstd.c: *	- externs removed
libvips/other/im_meanstd.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_meanstd.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_meanstd.c:	double variance;	/* = (sumf2 - correction)/n */
libvips/other/im_meanstd.c:		return(-1);
libvips/other/im_meanstd.c:	variance = ( sumf2 - correction)/((double)size);
libvips/other/im_meanstd.c:	double variance;	/* = (sumf2 - correction)/n */
libvips/other/im_meanstd.c:		return(-1);
libvips/other/im_meanstd.c:	variance = ( sumf2 - correction)/((double)size);
libvips/other/im_dif_std.c: *	- im_incheck() added
libvips/other/im_dif_std.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_dif_std.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_dif_std.c:		return( -1 );
libvips/other/im_dif_std.c:	if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) {
libvips/other/im_dif_std.c:		return(-1);}
libvips/other/im_dif_std.c:	if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { 
libvips/other/im_dif_std.c:		return(-1); }
libvips/other/im_dif_std.c:		return(-1); }
libvips/other/im_dif_std.c:	input = (PEL*)im->data;
libvips/other/im_dif_std.c:	input += ( ypos * im->Xsize + xpos );
libvips/other/im_dif_std.c:	ofst = dy * im->Xsize + dx;
libvips/other/im_dif_std.c:		input += im->Xsize;
libvips/other/im_dif_std.c:			*pbuf++ = ((int)(*cpinput))-((int)(*(cpinput + ofst)));
libvips/other/im_dif_std.c:		return(-1);
libvips/other/other_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/other_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/other_dispatch.c:	"generate IM_BANDFMT_FLOAT [-1,1] frequency/amplitude image",
libvips/other/other_dispatch.c:	"generate IM_BANDFMT_FLOAT [-1,1] zone plate image", /* Description */
libvips/other/other_dispatch.c:                return( -1 );
libvips/other/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/other/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/other/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/other/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/other/Makefile.in:am__mv = mv -f
libvips/other/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/other/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/other/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/other/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/other/Makefile.in:	$(LDFLAGS) -o $@
libvips/other/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/other/Makefile.in:all: all-am
libvips/other/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/other/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/other/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/other/Makefile'; \
libvips/other/Makefile.in:	  $(AUTOMAKE) --gnu libvips/other/Makefile
libvips/other/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/other/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/other/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/other/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/other/Makefile.in:clean-noinstLTLIBRARIES:
libvips/other/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/other/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/other/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/other/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/other/Makefile.in:mostlyclean-compile:
libvips/other/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/other/Makefile.in:distclean-compile:
libvips/other/Makefile.in:	-rm -f *.tab.c
libvips/other/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/other/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/other/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/other/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/other/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/other/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/other/Makefile.in:mostlyclean-libtool:
libvips/other/Makefile.in:	-rm -f *.lo
libvips/other/Makefile.in:clean-libtool:
libvips/other/Makefile.in:	-rm -rf .libs _libs
libvips/other/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/other/Makefile.in:	mkid -fID $$unique
libvips/other/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/other/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/other/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/other/Makefile.in:	  if test $$# -gt 0; then \
libvips/other/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/other/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/other/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/other/Makefile.in:distclean-tags:
libvips/other/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/other/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/other/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/other/Makefile.in:			   sort -u` ;; \
libvips/other/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/other/Makefile.in:	  if test -d $$d/$$file; then \
libvips/other/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/other/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/other/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/other/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/other/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/other/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/other/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/other/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/other/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/other/Makefile.in:check-am: all-am
libvips/other/Makefile.in:check: check-am
libvips/other/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/other/Makefile.in:install: install-am
libvips/other/Makefile.in:install-exec: install-exec-am
libvips/other/Makefile.in:install-data: install-data-am
libvips/other/Makefile.in:uninstall: uninstall-am
libvips/other/Makefile.in:install-am: all-am
libvips/other/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/other/Makefile.in:installcheck: installcheck-am
libvips/other/Makefile.in:install-strip:
libvips/other/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/other/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/other/Makefile.in:mostlyclean-generic:
libvips/other/Makefile.in:clean-generic:
libvips/other/Makefile.in:distclean-generic:
libvips/other/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/other/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/other/Makefile.in:maintainer-clean-generic:
libvips/other/Makefile.in:clean: clean-am
libvips/other/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/other/Makefile.in:	mostlyclean-am
libvips/other/Makefile.in:distclean: distclean-am
libvips/other/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/other/Makefile.in:	-rm -f Makefile
libvips/other/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/other/Makefile.in:	distclean-tags
libvips/other/Makefile.in:dvi: dvi-am
libvips/other/Makefile.in:dvi-am:
libvips/other/Makefile.in:html: html-am
libvips/other/Makefile.in:html-am:
libvips/other/Makefile.in:info: info-am
libvips/other/Makefile.in:info-am:
libvips/other/Makefile.in:install-data-am:
libvips/other/Makefile.in:install-dvi: install-dvi-am
libvips/other/Makefile.in:install-dvi-am:
libvips/other/Makefile.in:install-exec-am:
libvips/other/Makefile.in:install-html: install-html-am
libvips/other/Makefile.in:install-html-am:
libvips/other/Makefile.in:install-info: install-info-am
libvips/other/Makefile.in:install-info-am:
libvips/other/Makefile.in:install-man:
libvips/other/Makefile.in:install-pdf: install-pdf-am
libvips/other/Makefile.in:install-pdf-am:
libvips/other/Makefile.in:install-ps: install-ps-am
libvips/other/Makefile.in:install-ps-am:
libvips/other/Makefile.in:installcheck-am:
libvips/other/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/other/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/other/Makefile.in:	-rm -f Makefile
libvips/other/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/other/Makefile.in:mostlyclean: mostlyclean-am
libvips/other/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/other/Makefile.in:	mostlyclean-libtool
libvips/other/Makefile.in:pdf: pdf-am
libvips/other/Makefile.in:pdf-am:
libvips/other/Makefile.in:ps: ps-am
libvips/other/Makefile.in:ps-am:
libvips/other/Makefile.in:uninstall-am:
libvips/other/Makefile.in:.MAKE: install-am install-strip
libvips/other/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/other/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/other/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/other/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/other/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/other/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/other/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/other/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/other/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/other/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/other/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/other/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/other/im_grey.c: * @(#) Returns 0 on success and -1 on error
libvips/other/im_grey.c: *	- im_outcheck() added
libvips/other/im_grey.c: *	- externs removed
libvips/other/im_grey.c: *	- ANSIfied
libvips/other/im_grey.c: *	- im_fgrey() made from im_grey()
libvips/other/im_grey.c: *	- now makes [0,1], rather than [0,256)
libvips/other/im_grey.c: *	- im_grey() now defined in terms of im_fgrey()
libvips/other/im_grey.c: *	- partialed
libvips/other/im_grey.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/other/im_grey.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/other/im_grey.c:	Rect *r = &or->valid;
libvips/other/im_grey.c:	int le = r->left;
libvips/other/im_grey.c:	int to = r->top;
libvips/other/im_grey.c:	int iwm = or->im->Xsize - 1;
libvips/other/im_grey.c:	for( y = 0; y < r->height; y++ ) {
libvips/other/im_grey.c:		for( x = 0; x < r->width; x++ )
libvips/other/im_grey.c:		return( -1 ); 
libvips/other/im_grey.c:		return( -1 );
libvips/other/im_grey.c:	/* Set hints - ANY is ok with us.
libvips/other/im_grey.c:		return( -1 );
libvips/other/im_grey.c:		return( -1 );
libvips/other/im_grey.c:/* As above, but make a IM_BANDFMT_UCHAR [0-255] image.
libvips/other/im_grey.c:		return( -1 );
libvips/other/im_grey.c:		return( -1 );
libvips/deprecated/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/deprecated/im_debugim.c: *      - returns int, not void now, so error messages work
libvips/deprecated/im_debugim.c: *      - detects im->data invalid.
libvips/deprecated/im_debugim.c: *      - uses %g format, not %f for printf()
libvips/deprecated/im_debugim.c: *	- im_incheck() added
libvips/deprecated/im_debugim.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_debugim.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_debugim.c:		return( -1 );
libvips/deprecated/im_debugim.c:	if( in->Coding != IM_CODING_NONE ) {
libvips/deprecated/im_debugim.c:		return( -1 );
libvips/deprecated/im_debugim.c:	{	TYPE *p = (TYPE *) in->data; \
libvips/deprecated/im_debugim.c:		for ( y=0; y<in->Ysize; y++ ) {\
libvips/deprecated/im_debugim.c:			for ( x=0; x<in->Xsize; x++ ) {\
libvips/deprecated/im_debugim.c:				for ( z=0; z<in->Bands; z++ ) {\
libvips/deprecated/im_debugim.c:	{	TYPE *p = (TYPE *) in->data; \
libvips/deprecated/im_debugim.c:		for ( y=0; y<in->Ysize; y++ ) {\
libvips/deprecated/im_debugim.c:			for ( x=0; x<in->Xsize; x++ ) {\
libvips/deprecated/im_debugim.c:				for ( z=0; z<in->Bands; z++ ) {\
libvips/deprecated/im_debugim.c:	{	TYPE *p = (TYPE *) in->data; \
libvips/deprecated/im_debugim.c:		for ( y=0; y<in->Ysize; y++ ) {\
libvips/deprecated/im_debugim.c:			for ( x=0; x<in->Xsize; x++ ) {\
libvips/deprecated/im_debugim.c:				for ( z=0; z<in->Bands; z++ ) {\
libvips/deprecated/im_debugim.c:	switch( in->BandFmt ) {
libvips/deprecated/im_debugim.c:		return( -1 );
libvips/deprecated/im_cmulnorm.c: *	- thrown away and redone in terms of im_multiply()
libvips/deprecated/im_cmulnorm.c: *	- im_sign() broken out, done in terms of that
libvips/deprecated/im_cmulnorm.c: * 	- gtkdoc
libvips/deprecated/im_cmulnorm.c: * 	- tiny polish
libvips/deprecated/im_cmulnorm.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_cmulnorm.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_cmulnorm.c: * Returns: 0 on success, -1 on error
libvips/deprecated/im_cmulnorm.c:		return( -1 );
libvips/deprecated/deprecated_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/deprecated_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/deprecated_dispatch.c:	"convert to unsigned 8-bit integer",
libvips/deprecated/deprecated_dispatch.c:	"convert a float LAB to an 8-bit device image with an ICC profile",	
libvips/deprecated/deprecated_dispatch.c:		return( -1 );
libvips/deprecated/deprecated_dispatch.c:	"convert to unsigned 16-bit integer",
libvips/deprecated/deprecated_dispatch.c:	"convert to unsigned 32-bit integer",
libvips/deprecated/deprecated_dispatch.c:	"convert to signed 16-bit integer",
libvips/deprecated/deprecated_dispatch.c:	"convert to signed 32-bit integer",
libvips/deprecated/deprecated_dispatch.c:	"convert to double-precision float",
libvips/deprecated/deprecated_dispatch.c:	"convert to single-precision float",
libvips/deprecated/deprecated_dispatch.c:	"convert to signed 8-bit integer",
libvips/deprecated/deprecated_dispatch.c:	return( im_convsub( argv[0], argv[1], mo->mask, xskip, yskip ) );
libvips/deprecated/deprecated_dispatch.c:	"convolve uchar to uchar, sub-sampling by xskip, yskip",
libvips/deprecated/deprecated_dispatch.c:	if( xv->n != yv->n ) {
libvips/deprecated/deprecated_dispatch.c:		return( -1 );
libvips/deprecated/deprecated_dispatch.c:	if( im_insertset( argv[0], argv[1], argv[2], xv->n, xv->vec, yv->vec ) )
libvips/deprecated/deprecated_dispatch.c:		return( -1 );
libvips/deprecated/deprecated_dispatch.c:	"non-normalised correlation of gradient of in2 within in1, no padding",
libvips/deprecated/deprecated_dispatch.c:	return( im_convsepf_raw( argv[0], argv[1], mo->mask ) );
libvips/deprecated/deprecated_dispatch.c:	return( im_convsep_raw( argv[0], argv[1], mo->mask ) );
libvips/deprecated/deprecated_dispatch.c:	return( im_convf_raw( argv[0], argv[1], mo->mask ) );
libvips/deprecated/deprecated_dispatch.c:	return( im_conv_raw( argv[0], argv[1], mo->mask ) );
libvips/deprecated/deprecated_dispatch.c:	"find high-contrast points in an image",
libvips/deprecated/deprecated_dispatch.c:	return( im_erode_raw( argv[0], argv[1], mo->mask ) );
libvips/deprecated/deprecated_dispatch.c:	return( im_dilate_raw( argv[0], argv[1], mo->mask ) );
libvips/deprecated/deprecated_dispatch.c:	return( im_convsepf( argv[0], argv[1], mo->mask ) );
libvips/deprecated/deprecated_dispatch.c:	return( im_convf( argv[0], argv[1], mo->mask ) );
libvips/deprecated/im_line.c: *	- im_incheck() added
libvips/deprecated/im_line.c: *	- externs removed
libvips/deprecated/im_line.c: *	- im_incheck() changed to im_makerw()
libvips/deprecated/im_line.c: * 	- im_invalidate() after paint
libvips/deprecated/im_line.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_line.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_line.c:		return( -1 );
libvips/deprecated/im_line.c:if (  (x1 > image->Xsize)||(x1<0)||(y1 > image->Ysize)||(y1<0)
libvips/deprecated/im_line.c:    ||(x2 > image->Xsize)||(x2<0)||(y2 > image->Ysize)||(y2<0) ) { 
libvips/deprecated/im_line.c:	return(-1); }
libvips/deprecated/im_line.c:	return(-1); }
libvips/deprecated/im_line.c:if (image->Bands != 1) { 
libvips/deprecated/im_line.c:	return(-1); } 
libvips/deprecated/im_line.c:dx = (double)(x2 - x1);
libvips/deprecated/im_line.c:dy = (double)(y2 - y1);
libvips/deprecated/im_line.c:	signx = -1.0;
libvips/deprecated/im_line.c:	signy = -1.0;
libvips/deprecated/im_line.c:		offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize;
libvips/deprecated/im_line.c:		*(image->data + offset) = (PEL)pelval;
libvips/deprecated/im_line.c:	offset = x2 + y2 * image->Xsize;
libvips/deprecated/im_line.c:	*(image->data + offset) = (PEL)pelval;
libvips/deprecated/im_line.c:		offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize;
libvips/deprecated/im_line.c:		*(image->data + offset) = (PEL)pelval;
libvips/deprecated/im_line.c:	offset = x2 + y2 * image->Xsize;
libvips/deprecated/im_line.c:	*(image->data + offset) = (PEL)pelval;
libvips/deprecated/im_line.c:		offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize;
libvips/deprecated/im_line.c:		*(image->data + offset) = (PEL)pelval;
libvips/deprecated/im_line.c:		offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize;
libvips/deprecated/im_line.c:		*(image->data + offset) = (PEL)pelval;
libvips/deprecated/im_line.c:offset = x2 + y2 * image->Xsize;
libvips/deprecated/im_line.c:*(image->data + offset) = (PEL)pelval;
libvips/deprecated/im_gaddim.c: * @(#) Returns 0 on success and -1 on error
libvips/deprecated/im_gaddim.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_gaddim.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_gaddim.c:		return(-1);
libvips/deprecated/im_gaddim.c:	switch(tmp1->BandFmt) { \
libvips/deprecated/im_gaddim.c:				return(-1); \
libvips/deprecated/im_gaddim.c:	switch(tmp1->BandFmt)	{ \
libvips/deprecated/im_gaddim.c:				return(-1); \
libvips/deprecated/im_gaddim.c:        if ((im_iocheck(in1, out) == -1) || (im_iocheck(in2, out) == -1))
libvips/deprecated/im_gaddim.c:                return(-1);
libvips/deprecated/im_gaddim.c:	if ( (in1->Xsize != in2->Xsize) || (in1->Ysize != in2->Ysize) ||
libvips/deprecated/im_gaddim.c:	     (in1->Bands != in2->Bands) || (in1->Coding != in2->Coding) )
libvips/deprecated/im_gaddim.c:		{ im_error("im_gaddim"," Input images differ"); return(-1); }
libvips/deprecated/im_gaddim.c:	if (in1->Coding != IM_CODING_NONE)
libvips/deprecated/im_gaddim.c:		{ im_error("im_gaddim"," images must be uncoded"); return(-1);}
libvips/deprecated/im_gaddim.c:	switch(in1->BandFmt) {
libvips/deprecated/im_gaddim.c:			return(-1);
libvips/deprecated/im_gaddim.c:	switch(in2->BandFmt) {
libvips/deprecated/im_gaddim.c:			return(-1);
libvips/deprecated/im_gaddim.c:	if ( im_cp_desc(out, in1) == -1)
libvips/deprecated/im_gaddim.c:		{ im_error("im_gaddim"," im_cp_desc failed"); return(-1); }
libvips/deprecated/im_gaddim.c:	out->BandFmt = fmt[result];
libvips/deprecated/im_gaddim.c:	if( im_setupout(out) == -1)
libvips/deprecated/im_gaddim.c:		{ im_error("im_gaddim"," im_setupout failed"); return(-1); }
libvips/deprecated/im_gaddim.c:	{	IN1 *input1 = (IN1 *) tmp1->data; \
libvips/deprecated/im_gaddim.c:	 	IN2 *input2 = (IN2 *) tmp2->data; \
libvips/deprecated/im_gaddim.c:		for (y=0; y <out->Ysize; y++) {\
libvips/deprecated/im_gaddim.c:			if (im_writeline(y, out, line) == -1) {\
libvips/deprecated/im_gaddim.c:				return ( -1 );\
libvips/deprecated/im_gaddim.c:	os = out->Xsize * out->Bands;
libvips/deprecated/im_gaddim.c:		return(-1);
libvips/deprecated/im_gaddim.c:	switch (out->BandFmt)	{
libvips/deprecated/im_gaddim.c:			switch (tmp2->BandFmt)	{
libvips/deprecated/im_gaddim.c:			switch (tmp2->BandFmt)	{
libvips/deprecated/im_gaddim.c:			switch (tmp2->BandFmt)	{
libvips/deprecated/im_gaddim.c:			switch (tmp2->BandFmt)	{
libvips/deprecated/im_gaddim.c:			return(-1);
libvips/deprecated/rename.c:/* rename.c --- wrappers for various renamed functions
libvips/deprecated/rename.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/rename.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/rename.c:		a, -b, b, a, dx, dy, 
libvips/deprecated/rename.c:		a, -b, b, a, dx, dy ) ); 
libvips/deprecated/rename.c:		box->xstart,
libvips/deprecated/rename.c:		box->ystart,
libvips/deprecated/rename.c:		box->xsize,
libvips/deprecated/rename.c:		box->ysize,
libvips/deprecated/rename.c:	if( box->chsel == -1 )
libvips/deprecated/rename.c:			box->xstart, box->ystart, box->xsize, box->ysize,
libvips/deprecated/rename.c:			0, in->Bands ) );
libvips/deprecated/rename.c:			box->xstart, box->ystart, box->xsize, box->ysize,
libvips/deprecated/rename.c:			box->chsel, 1 ) );
libvips/deprecated/rename.c:	return( vips_bandfmt_isint( im->BandFmt ) );
libvips/deprecated/rename.c:	return( vips_bandfmt_isuint( im->BandFmt ) );
libvips/deprecated/rename.c:	return( vips_bandfmt_isfloat( im->BandFmt ) );
libvips/deprecated/rename.c:	return( vips_bandfmt_iscomplex( im->BandFmt ) );
libvips/deprecated/rename.c:		return( -1 );
libvips/deprecated/im_setbox.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_setbox.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_setbox.c:	pbox->xstart = xst;
libvips/deprecated/im_setbox.c:	pbox->ystart = yst;
libvips/deprecated/im_setbox.c:	pbox->xsize = xsiz;
libvips/deprecated/im_setbox.c:	pbox->ysize = ysiz;
libvips/deprecated/im_setbox.c:	pbox->chsel = ch_select;
libvips/deprecated/im_bernd.c: * @(#) Returns 0 on success and -1 on error
libvips/deprecated/im_bernd.c: *	- from im_tiff2vips and im_vips2jpeg, plus some stuff from Steve
libvips/deprecated/im_bernd.c: *	- page number now in filename
libvips/deprecated/im_bernd.c: *	- fix signed/unsigned warning
libvips/deprecated/im_bernd.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_bernd.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_bernd.c:		return( -1 );
libvips/deprecated/im_bernd.c:		return( -1 );
libvips/deprecated/im_bernd.c:		return( -1 );
libvips/deprecated/im_bernd.c:		return( -1 );
libvips/deprecated/im_resize_linear.c: *	- IM_ARRAY modified to use local allocation
libvips/deprecated/im_resize_linear.c: *	- im_iscomplex() call added
libvips/deprecated/im_resize_linear.c: *	- modernised a little
libvips/deprecated/im_resize_linear.c: *	- name changed to reflect function more closely
libvips/deprecated/im_resize_linear.c: *	- was detecting edges incorrectly, segv for some images (thanks Javi)
libvips/deprecated/im_resize_linear.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_resize_linear.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_resize_linear.c:		Xint < in->Xsize-1 && Yint < in->Ysize-1 )  \
libvips/deprecated/im_resize_linear.c:		for( bb = 0; bb < in->Bands; bb++ ) { \
libvips/deprecated/im_resize_linear.c:			*t = (1-dx)*(1-dy)*s1 + dx*(1-dy)*s2 + \
libvips/deprecated/im_resize_linear.c:				dy*(1-dx)*s3 + dx*dy*s4; \
libvips/deprecated/im_resize_linear.c:	else if( Xint == in->Xsize-1 && Yint >= 0 && Yint < in->Ysize - 1 )  \
libvips/deprecated/im_resize_linear.c:		for( bb = 0; bb < in->Bands; bb++ ) { \
libvips/deprecated/im_resize_linear.c:			*t = (1-dy)*s1 + dy*s3; \
libvips/deprecated/im_resize_linear.c:	else if( Yint == in->Ysize-1 && Xint >= 0 && Xint < in->Xsize - 1 ) \
libvips/deprecated/im_resize_linear.c:		for( bb = 0; bb < in->Bands; bb++ ) { \
libvips/deprecated/im_resize_linear.c:			*t = (1-dx)*s1 + dx*s2; \
libvips/deprecated/im_resize_linear.c:		for( bb = 0; bb < in->Bands; bb++ ) { \
libvips/deprecated/im_resize_linear.c:		return( -1 );
libvips/deprecated/im_resize_linear.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) ) {
libvips/deprecated/im_resize_linear.c:		im_error( "im_lowpass", "%s", _( "non-complex input only" ) );
libvips/deprecated/im_resize_linear.c:		return( -1 );
libvips/deprecated/im_resize_linear.c:	if( in->Coding != IM_CODING_NONE ) {
libvips/deprecated/im_resize_linear.c:		return( -1 );
libvips/deprecated/im_resize_linear.c:		return( -1 );
libvips/deprecated/im_resize_linear.c:	out->Xsize = X;
libvips/deprecated/im_resize_linear.c:	out->Ysize = Y;
libvips/deprecated/im_resize_linear.c:		return( -1 );
libvips/deprecated/im_resize_linear.c:		return( -1 );
libvips/deprecated/im_resize_linear.c:	input = (PEL*) in->data;
libvips/deprecated/im_resize_linear.c:	xscale = ((double)in->Xsize-1)/(X-1);
libvips/deprecated/im_resize_linear.c:	yscale = ((double)in->Ysize-1)/(Y-1);
libvips/deprecated/im_resize_linear.c:	dx = Xnew - Xint;
libvips/deprecated/im_resize_linear.c:	dy = Ynew - Yint;
libvips/deprecated/im_resize_linear.c:	switch( in->BandFmt ) {
libvips/deprecated/im_resize_linear.c:		return( -1 );
libvips/deprecated/im_resize_linear.c:	    return(-1);
libvips/deprecated/im_gadd.c: * @(#) Returns 0 on success and -1 on error
libvips/deprecated/im_gadd.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_gadd.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_gadd.c:	switch(in1->BandFmt) {
libvips/deprecated/im_gadd.c:			return(-1);
libvips/deprecated/im_gadd.c:	switch(in2->BandFmt) {
libvips/deprecated/im_gadd.c:			return(-1);
libvips/deprecated/im_gadd.c:		if (value == -1)
libvips/deprecated/im_gadd.c:			return(-1);
libvips/deprecated/im_gadd.c:		if (value == -1)
libvips/deprecated/im_gadd.c:			return(-1);
libvips/deprecated/im_thresh.c:/* @(#) Thresholds an image.  Works for any non-complex type.
libvips/deprecated/im_thresh.c: * @(#) Returns 0 on success and -1 on error
libvips/deprecated/im_thresh.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_thresh.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_thresh.c:		return( -1 );
libvips/deprecated/im_thresh.c:	if( in->Coding != IM_CODING_NONE ) { 
libvips/deprecated/im_thresh.c:		return(-1);
libvips/deprecated/im_thresh.c:		return( -1 );
libvips/deprecated/im_thresh.c:	out->BandFmt = IM_BANDFMT_UCHAR;
libvips/deprecated/im_thresh.c:		return( -1 );
libvips/deprecated/im_thresh.c:	epl = in->Xsize * in->Bands;
libvips/deprecated/im_thresh.c:		return( -1 );
libvips/deprecated/im_thresh.c:	{	TYPE *a = (TYPE *) in->data;\
libvips/deprecated/im_thresh.c:		for( y = 0; y < in->Ysize; y++ ) {\
libvips/deprecated/im_thresh.c:				return( -1 );\
libvips/deprecated/im_thresh.c:	switch( in->BandFmt ) {
libvips/deprecated/im_thresh.c:		return( -1 );
libvips/deprecated/im_convsub.c: * @(#) Returns either 0 (sucess) or -1 (fail)
libvips/deprecated/im_convsub.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_convsub.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_convsub.c:		return( -1 );
libvips/deprecated/im_convsub.c:			return( -1 );
libvips/deprecated/im_convsub.c:	int ms; /*  is m->xsize * m->ysize */
libvips/deprecated/im_convsub.c:                return(-1);
libvips/deprecated/im_convsub.c:	if (im_iocheck(in, out) == -1)
libvips/deprecated/im_convsub.c:		return( -1 );
libvips/deprecated/im_convsub.c:	if ( (in->Coding != IM_CODING_NONE)||
libvips/deprecated/im_convsub.c:	    (in->BandFmt != IM_BANDFMT_UCHAR) )
libvips/deprecated/im_convsub.c:		return(-1);
libvips/deprecated/im_convsub.c:	if (im_cp_desc(out, in) == -1)
libvips/deprecated/im_convsub.c:		return( -1 );
libvips/deprecated/im_convsub.c:	tempsize = in->Xsize/xskip;
libvips/deprecated/im_convsub.c:		if ( tempsize * xskip + m->xsize < in->Xsize )
libvips/deprecated/im_convsub.c:			tempsize--;
libvips/deprecated/im_convsub.c:        out->Xsize = tempsize;
libvips/deprecated/im_convsub.c:	tempsize = in->Ysize/yskip;
libvips/deprecated/im_convsub.c:		if ( tempsize * yskip + m->ysize < in->Ysize )
libvips/deprecated/im_convsub.c:			tempsize--;
libvips/deprecated/im_convsub.c:        out->Ysize = tempsize;
libvips/deprecated/im_convsub.c:	if ( ( out->Xsize < 2 )||( out->Ysize < 2 ) ) {
libvips/deprecated/im_convsub.c:		return(-1); 
libvips/deprecated/im_convsub.c:	if( im_setupout(out) == -1)
libvips/deprecated/im_convsub.c:		return(-1); 
libvips/deprecated/im_convsub.c:	os = out->Xsize * out->Bands;
libvips/deprecated/im_convsub.c:		return(-1); 
libvips/deprecated/im_convsub.c:	ms = m->xsize * m->ysize;
libvips/deprecated/im_convsub.c:	count = 0;	/* exclude the non-zero elms */
libvips/deprecated/im_convsub.c:	pm = m->coeff;
libvips/deprecated/im_convsub.c:		return(-1); 
libvips/deprecated/im_convsub.c:/* copy the non-zero elms of the original mask and set pointers */
libvips/deprecated/im_convsub.c:	input = (PEL*)in->data;
libvips/deprecated/im_convsub.c:	pm = m->coeff;
libvips/deprecated/im_convsub.c:	for (y=0; y<m->ysize; y++)
libvips/deprecated/im_convsub.c:		for (x=0; x<m->xsize; x++)
libvips/deprecated/im_convsub.c:				pnt[i] = (input +(x + y*in->Xsize) * in->Bands);
libvips/deprecated/im_convsub.c:		return(-1); }
libvips/deprecated/im_convsub.c:		return(-1); }
libvips/deprecated/im_convsub.c:        if ( im__create_int_luts(newm, count, lut_orig, lut, &lutcnt ) == -1 )
libvips/deprecated/im_convsub.c:                return(-1);
libvips/deprecated/im_convsub.c:	rounding = m->scale/2;
libvips/deprecated/im_convsub.c:/* Output out->Ysize processed lines */
libvips/deprecated/im_convsub.c:	for(y=0; y < out->Ysize; y++)
libvips/deprecated/im_convsub.c:			pnt[i] += ( in->Xsize * in->Bands * yskip );
libvips/deprecated/im_convsub.c:		/* process out->Xsize points */
libvips/deprecated/im_convsub.c:		for( x = 0; x < out->Xsize; x++ )
libvips/deprecated/im_convsub.c:				cpnt1[i] += xskip * in->Bands;
libvips/deprecated/im_convsub.c:			for ( b=0; b<out->Bands; b++ )
libvips/deprecated/im_convsub.c:				sum = ( (sum+rounding)/m->scale ) + m->offset;
libvips/deprecated/im_convsub.c:		if ( im_writeline(y, out, (PEL*)line) == -1 )
libvips/deprecated/im_convsub.c:			return(-1);
libvips/deprecated/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/deprecated/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/deprecated/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/deprecated/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/deprecated/Makefile.in:am__mv = mv -f
libvips/deprecated/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/deprecated/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/deprecated/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/deprecated/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/deprecated/Makefile.in:	$(LDFLAGS) -o $@
libvips/deprecated/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/deprecated/Makefile.in:all: all-am
libvips/deprecated/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/deprecated/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/deprecated/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/deprecated/Makefile'; \
libvips/deprecated/Makefile.in:	  $(AUTOMAKE) --gnu libvips/deprecated/Makefile
libvips/deprecated/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/deprecated/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/deprecated/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/deprecated/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/deprecated/Makefile.in:clean-noinstLTLIBRARIES:
libvips/deprecated/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/deprecated/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/deprecated/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/deprecated/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/deprecated/Makefile.in:mostlyclean-compile:
libvips/deprecated/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/deprecated/Makefile.in:distclean-compile:
libvips/deprecated/Makefile.in:	-rm -f *.tab.c
libvips/deprecated/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/deprecated/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/deprecated/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/deprecated/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/deprecated/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/deprecated/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/deprecated/Makefile.in:mostlyclean-libtool:
libvips/deprecated/Makefile.in:	-rm -f *.lo
libvips/deprecated/Makefile.in:clean-libtool:
libvips/deprecated/Makefile.in:	-rm -rf .libs _libs
libvips/deprecated/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/deprecated/Makefile.in:	mkid -fID $$unique
libvips/deprecated/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/deprecated/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/deprecated/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/deprecated/Makefile.in:	  if test $$# -gt 0; then \
libvips/deprecated/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/deprecated/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/deprecated/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/deprecated/Makefile.in:distclean-tags:
libvips/deprecated/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/deprecated/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/deprecated/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/deprecated/Makefile.in:			   sort -u` ;; \
libvips/deprecated/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/deprecated/Makefile.in:	  if test -d $$d/$$file; then \
libvips/deprecated/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/deprecated/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/deprecated/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/deprecated/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/deprecated/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/deprecated/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/deprecated/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/deprecated/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/deprecated/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/deprecated/Makefile.in:check-am: all-am
libvips/deprecated/Makefile.in:check: check-am
libvips/deprecated/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/deprecated/Makefile.in:install: install-am
libvips/deprecated/Makefile.in:install-exec: install-exec-am
libvips/deprecated/Makefile.in:install-data: install-data-am
libvips/deprecated/Makefile.in:uninstall: uninstall-am
libvips/deprecated/Makefile.in:install-am: all-am
libvips/deprecated/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/deprecated/Makefile.in:installcheck: installcheck-am
libvips/deprecated/Makefile.in:install-strip:
libvips/deprecated/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/deprecated/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/deprecated/Makefile.in:mostlyclean-generic:
libvips/deprecated/Makefile.in:clean-generic:
libvips/deprecated/Makefile.in:distclean-generic:
libvips/deprecated/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/deprecated/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/deprecated/Makefile.in:maintainer-clean-generic:
libvips/deprecated/Makefile.in:clean: clean-am
libvips/deprecated/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/deprecated/Makefile.in:	mostlyclean-am
libvips/deprecated/Makefile.in:distclean: distclean-am
libvips/deprecated/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/deprecated/Makefile.in:	-rm -f Makefile
libvips/deprecated/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/deprecated/Makefile.in:	distclean-tags
libvips/deprecated/Makefile.in:dvi: dvi-am
libvips/deprecated/Makefile.in:dvi-am:
libvips/deprecated/Makefile.in:html: html-am
libvips/deprecated/Makefile.in:html-am:
libvips/deprecated/Makefile.in:info: info-am
libvips/deprecated/Makefile.in:info-am:
libvips/deprecated/Makefile.in:install-data-am:
libvips/deprecated/Makefile.in:install-dvi: install-dvi-am
libvips/deprecated/Makefile.in:install-dvi-am:
libvips/deprecated/Makefile.in:install-exec-am:
libvips/deprecated/Makefile.in:install-html: install-html-am
libvips/deprecated/Makefile.in:install-html-am:
libvips/deprecated/Makefile.in:install-info: install-info-am
libvips/deprecated/Makefile.in:install-info-am:
libvips/deprecated/Makefile.in:install-man:
libvips/deprecated/Makefile.in:install-pdf: install-pdf-am
libvips/deprecated/Makefile.in:install-pdf-am:
libvips/deprecated/Makefile.in:install-ps: install-ps-am
libvips/deprecated/Makefile.in:install-ps-am:
libvips/deprecated/Makefile.in:installcheck-am:
libvips/deprecated/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/deprecated/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/deprecated/Makefile.in:	-rm -f Makefile
libvips/deprecated/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/deprecated/Makefile.in:mostlyclean: mostlyclean-am
libvips/deprecated/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/deprecated/Makefile.in:	mostlyclean-libtool
libvips/deprecated/Makefile.in:pdf: pdf-am
libvips/deprecated/Makefile.in:pdf-am:
libvips/deprecated/Makefile.in:ps: ps-am
libvips/deprecated/Makefile.in:ps-am:
libvips/deprecated/Makefile.in:uninstall-am:
libvips/deprecated/Makefile.in:.MAKE: install-am install-strip
libvips/deprecated/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/deprecated/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/deprecated/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/deprecated/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/deprecated/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/deprecated/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/deprecated/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/deprecated/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/deprecated/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/deprecated/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/deprecated/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/deprecated/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/deprecated/im_fav4.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_fav4.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_fav4.c:if(im_iocheck(in[1], out)) return(-1);
libvips/deprecated/im_fav4.c:if( (in[0]->BandFmt != IM_BANDFMT_CHAR) &&  (in[0]->BandFmt != IM_BANDFMT_UCHAR)) return(-1);
libvips/deprecated/im_fav4.c:if ( im_cp_desc(out, in[1]) == -1)   /* copy image descriptors */
libvips/deprecated/im_fav4.c:      return(-1);
libvips/deprecated/im_fav4.c:if ( im_setupout(out) == -1)
libvips/deprecated/im_fav4.c:      return(-1);
libvips/deprecated/im_fav4.c:linebytes = in[0]->Xsize * in[0]->Bands;
libvips/deprecated/im_fav4.c:PICY = in[0]->Ysize;
libvips/deprecated/im_fav4.c:	p1 = (PEL*)in[0]->data;
libvips/deprecated/im_fav4.c:	p2 = (PEL*)in[1]->data;
libvips/deprecated/im_fav4.c:	p3 = (PEL*)in[2]->data;
libvips/deprecated/im_fav4.c:	p4 = (PEL*)in[3]->data;
libvips/deprecated/im_litecor.c: * @(#)	   - Compute max(white)*factor*(image/white), Clip to 255.
libvips/deprecated/im_litecor.c: * @(#)	   - Compute factor for you.
libvips/deprecated/im_litecor.c: * @(#) Returns 0 on success and -1 on error
libvips/deprecated/im_litecor.c: *	- bugs if white is smaller than image fixed
libvips/deprecated/im_litecor.c: *	- im_warning() now called
libvips/deprecated/im_litecor.c: *	- clip==0 case not tested or changed! do not use!
libvips/deprecated/im_litecor.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_litecor.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_litecor.c:	float xrat = (float) in->Xsize / white->Xsize;
libvips/deprecated/im_litecor.c:	float yrat = (float) in->Ysize / white->Ysize;
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:	if( !(bu = (PEL *) im_malloc( out, out->Xsize )) )  
libvips/deprecated/im_litecor.c:		return( -1 ); 
libvips/deprecated/im_litecor.c:	maxout = -1;
libvips/deprecated/im_litecor.c:	p = (PEL *) in->data;
libvips/deprecated/im_litecor.c:	for( y = 0; y < in->Ysize; y++ ) {
libvips/deprecated/im_litecor.c:		w = (PEL *) (white->data + white->Xsize * (int)(y/ystep));
libvips/deprecated/im_litecor.c:		for( x = 0; x < out->Xsize; x++ ) {
libvips/deprecated/im_litecor.c:	p = (PEL *) in->data;
libvips/deprecated/im_litecor.c:		for( y = 0; y < in->Ysize; y++ ) 
libvips/deprecated/im_litecor.c:			w = (PEL *) (white->data + 
libvips/deprecated/im_litecor.c:				white->Xsize * (int)(y/ystep));
libvips/deprecated/im_litecor.c:			for( x = 0; x < in->Xsize; x++ ) 
libvips/deprecated/im_litecor.c:				return( -1 );
libvips/deprecated/im_litecor.c:		for( y = 0; y < in->Ysize; y++ ) 
libvips/deprecated/im_litecor.c:			w = (PEL *) (white->data + 
libvips/deprecated/im_litecor.c:				white->Xsize * (int)(y/ystep));
libvips/deprecated/im_litecor.c:			for( x = 0; x < in->Xsize; x++ ) 
libvips/deprecated/im_litecor.c:				return( -1 );
libvips/deprecated/im_litecor.c:	float xrat = (float) in->Xsize / white->Xsize;
libvips/deprecated/im_litecor.c:	float yrat = (float) in->Ysize / white->Ysize;
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:	if( !(bu = (PEL *) im_malloc( out, out->Xsize )) )  
libvips/deprecated/im_litecor.c:		return( -1 ); 
libvips/deprecated/im_litecor.c:	p = (PEL *) in->data;
libvips/deprecated/im_litecor.c:	for( y = 0; y < in->Ysize; y++ ) {
libvips/deprecated/im_litecor.c:		w = (PEL *) (white->data + white->Xsize * (int)(y / ystep));
libvips/deprecated/im_litecor.c:		for( x = 0; x < out->Xsize; x++ ) {
libvips/deprecated/im_litecor.c:			return( -1 );
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:	if( in->Bands != 1 || 
libvips/deprecated/im_litecor.c:		in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_UCHAR ) {
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:	if( white->Bands != 1 || 
libvips/deprecated/im_litecor.c:		white->Coding != IM_CODING_NONE || white->BandFmt != IM_BANDFMT_UCHAR ) { 
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_litecor.c:		return( -1 );
libvips/deprecated/im_slice.c:/* @(#) Slices an image using two thresholds.  Works for any non-complex type.
libvips/deprecated/im_slice.c: * @(#) Returns 0 on success and -1 on error
libvips/deprecated/im_slice.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_slice.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_slice.c:		return( -1 );
libvips/deprecated/im_slice.c:	if( in->Coding != IM_CODING_NONE ) 
libvips/deprecated/im_slice.c:		return( -1 );
libvips/deprecated/im_slice.c:		return( -1 );
libvips/deprecated/im_slice.c:	out->BandFmt = IM_BANDFMT_UCHAR;
libvips/deprecated/im_slice.c:		return( -1 );
libvips/deprecated/im_slice.c:	epl = in->Xsize * in->Bands;
libvips/deprecated/im_slice.c:		return( -1 );
libvips/deprecated/im_slice.c:	{	TYPE *a = (TYPE *) in->data;\
libvips/deprecated/im_slice.c:		for( y = 0; y < in->Ysize; y++ ) {\
libvips/deprecated/im_slice.c:			for( x = 0; x < in->Xsize; x++ )\
libvips/deprecated/im_slice.c:				for( z = 0; z < in->Bands; z++ ) {\
libvips/deprecated/im_slice.c:				return( -1 );\
libvips/deprecated/im_slice.c:	switch( in->BandFmt ) {
libvips/deprecated/im_slice.c:		return( -1 );
libvips/deprecated/im_print.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_print.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_gfadd.c: * @(#) Returns 0 on success and -1 on error
libvips/deprecated/im_gfadd.c: *	- externs removed
libvips/deprecated/im_gfadd.c: *	- casts added to please ANSI C
libvips/deprecated/im_gfadd.c: *	- includes rationalised
libvips/deprecated/im_gfadd.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_gfadd.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_gfadd.c:	switch(tmp1->BandFmt) {\
libvips/deprecated/im_gfadd.c:				free( line); return( -1 );\
libvips/deprecated/im_gfadd.c:        if ((im_iocheck(in1, out) == -1) || (im_iocheck(in2, out) == -1))
libvips/deprecated/im_gfadd.c:		{ im_error("im_gfadd"," im_iocheck failed"); return( -1 ); }
libvips/deprecated/im_gfadd.c:	if ( (in1->Xsize != in2->Xsize) || (in1->Ysize != in2->Ysize) ||
libvips/deprecated/im_gfadd.c:	     (in1->Bands != in2->Bands) || (in1->Coding != in2->Coding) )
libvips/deprecated/im_gfadd.c:		{ im_error("im_gfadd"," Input images differ"); return( -1 );}
libvips/deprecated/im_gfadd.c:	if (in1->Coding != IM_CODING_NONE)
libvips/deprecated/im_gfadd.c:		{ im_error("im_gfadd"," images are coded"); return( -1 ); }
libvips/deprecated/im_gfadd.c:	switch(in1->BandFmt) {
libvips/deprecated/im_gfadd.c:				return( -1 );
libvips/deprecated/im_gfadd.c:	switch(in2->BandFmt) {
libvips/deprecated/im_gfadd.c:			return( -1 );
libvips/deprecated/im_gfadd.c:	if ( im_cp_desc(out, in1) == -1)
libvips/deprecated/im_gfadd.c:		{ im_error("im_gfadd"," im_cp_desc failed"); return( -1 ); }
libvips/deprecated/im_gfadd.c:	out->BandFmt = fmt[result];
libvips/deprecated/im_gfadd.c:	if( im_setupout(out) == -1)
libvips/deprecated/im_gfadd.c:		{ im_error("im_gfadd"," im_setupout failed"); return( -1 ); }
libvips/deprecated/im_gfadd.c:	{	IN1 *input1 = (IN1 *) tmp1->data;\
libvips/deprecated/im_gfadd.c:	 	IN2 *input2 = (IN2 *) tmp2->data;\
libvips/deprecated/im_gfadd.c:		for (y=0; y <out->Ysize; y++) {\
libvips/deprecated/im_gfadd.c:				return( -1 );\
libvips/deprecated/im_gfadd.c:	os = out->Xsize * out->Bands;
libvips/deprecated/im_gfadd.c:		{ im_error("im_gfadd"," unable to calloc"); return( -1 ); }
libvips/deprecated/im_gfadd.c:	switch (out->BandFmt)	{
libvips/deprecated/im_gfadd.c:			switch (tmp2->BandFmt)	{
libvips/deprecated/im_gfadd.c:				return( -1 );
libvips/deprecated/im_gfadd.c:			switch (tmp2->BandFmt)	{
libvips/deprecated/im_gfadd.c:				switch (tmp1->BandFmt) {
libvips/deprecated/im_gfadd.c:					return( -1 );
libvips/deprecated/im_gfadd.c:				switch (tmp1->BandFmt) {
libvips/deprecated/im_gfadd.c:					free( line); return( -1 );
libvips/deprecated/im_gfadd.c:				switch (tmp1->BandFmt) {
libvips/deprecated/im_gfadd.c:					free( line); return( -1 );
libvips/deprecated/im_gfadd.c:				switch (tmp1->BandFmt) {
libvips/deprecated/im_gfadd.c:					free( line); return( -1 );
libvips/deprecated/im_gfadd.c:				switch (tmp1->BandFmt) {
libvips/deprecated/im_gfadd.c:					free( line); return( -1 );
libvips/deprecated/im_gfadd.c:				switch (tmp1->BandFmt) {
libvips/deprecated/im_gfadd.c:					return( -1 );
libvips/deprecated/im_gfadd.c:				switch (tmp1->BandFmt) {
libvips/deprecated/im_gfadd.c:					return( -1 );
libvips/deprecated/im_gfadd.c:				return( -1 );
libvips/deprecated/im_gfadd.c:			return( -1 );
libvips/deprecated/im_printlines.c: *      - returns int, not void now, so error messages work
libvips/deprecated/im_printlines.c: *      - detects im->data invalid.
libvips/deprecated/im_printlines.c: *	- im_incheck() added
libvips/deprecated/im_printlines.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/deprecated/im_printlines.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/deprecated/im_printlines.c:		return( -1 );
libvips/deprecated/im_printlines.c:	if( in->Coding != IM_CODING_NONE ) {
libvips/deprecated/im_printlines.c:		return( -1 );
libvips/deprecated/im_printlines.c:	if( !in->data ) {
libvips/deprecated/im_printlines.c:		return( -1 );
libvips/deprecated/im_printlines.c:	{	TYPE *p = (TYPE *) in->data; \
libvips/deprecated/im_printlines.c:		for ( y=0; y<in->Ysize; y++ ) {\
libvips/deprecated/im_printlines.c:			for ( x=0; x<in->Xsize; x++ ) {\
libvips/deprecated/im_printlines.c:				for ( z=0; z<in->Bands; z++ ) {\
libvips/deprecated/im_printlines.c:	{	TYPE *p = (TYPE *) in->data; \
libvips/deprecated/im_printlines.c:		for ( y=0; y<in->Ysize; y++ ) {\
libvips/deprecated/im_printlines.c:			for ( x=0; x<in->Xsize; x++ ) {\
libvips/deprecated/im_printlines.c:				for ( z=0; z<in->Bands; z++ ) {\
libvips/deprecated/im_printlines.c:	{	TYPE *p = (TYPE *) in->data; \
libvips/deprecated/im_printlines.c:		for ( y=0; y<in->Ysize; y++ ) {\
libvips/deprecated/im_printlines.c:			for ( x=0; x<in->Xsize; x++ ) {\
libvips/deprecated/im_printlines.c:				for ( z=0; z<in->Bands; z++ ) {\
libvips/deprecated/im_printlines.c:	switch( in->BandFmt ) {
libvips/deprecated/im_printlines.c:			return( -1 );
libvips/mosaicing/im_maxpos_subpel.c: * ( xs[ use_x ], ys[ use_x ] ) is equal in y and (+/-)1 off in x
libvips/mosaicing/im_maxpos_subpel.c: * ( xs[ use_y ], ys[ use_y ] ) is equal in x and (+/-)1 off in y
libvips/mosaicing/im_maxpos_subpel.c: * case where the match is close to n-and-a-half pixels in both dimensions.
libvips/mosaicing/im_maxpos_subpel.c: * Written on: 2008-02-07
libvips/mosaicing/im_maxpos_subpel.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_maxpos_subpel.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_maxpos_subpel.c:    return -1;
libvips/mosaicing/im_maxpos_subpel.c:    /* wrap around if we have alignment -1 < d <= 0 */                    \
libvips/mosaicing/im_maxpos_subpel.c:    /* (change it to: size - 1 <= d < size ) */                           \
libvips/mosaicing/im_maxpos_subpel.c:    if( ! xa && in-> Xsize - 1 == xb )                                    \
libvips/mosaicing/im_maxpos_subpel.c:      xa= in-> Xsize;                                                     \
libvips/mosaicing/im_maxpos_subpel.c:    else if( ! xb && in-> Xsize - 1 == xa )                               \
libvips/mosaicing/im_maxpos_subpel.c:      xb= in-> Xsize;                                                     \
libvips/mosaicing/im_maxpos_subpel.c:    if( ! ya && in-> Ysize - 1 == yb )                                    \
libvips/mosaicing/im_maxpos_subpel.c:      ya= in-> Ysize;                                                     \
libvips/mosaicing/im_maxpos_subpel.c:    else if( ! yb && in-> Ysize - 1 == ya )                               \
libvips/mosaicing/im_maxpos_subpel.c:      yb= in-> Ysize;                                                     \
libvips/mosaicing/im_maxpos_subpel.c:    if( 1 == abs( xb - xa ) && 1 == abs( yb - ya )){                      \
libvips/mosaicing/im_maxpos_subpel.c:      *x= ((double)xa) + ((double)( xb - xa )) * ( vxb / ( vxa + vxb ));  \
libvips/mosaicing/im_maxpos_subpel.c:      *y= ((double)ya) + ((double)( yb - ya )) * ( vyb / ( vya + vyb ));  \
libvips/mosaicing/im_maxpos_subpel.c:  im_warn( FUNCTION_NAME, "registration performed to nearest pixel only: correlation does not have the expected distribution for sub-pixel registration" );
libvips/mosaicing/mosaic.h:    Copyright (C) 1991-2003 The National Gallery
libvips/mosaicing/mosaic.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/mosaic.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/mosaicing/mosaic1.c: *	- done!
libvips/mosaicing/mosaic1.c: *	- mods so global_balance() can work with 1st order mosaics
libvips/mosaicing/mosaic1.c: * 	- now uses affine() stuff
libvips/mosaicing/mosaic1.c: * 	- small tidies
libvips/mosaicing/mosaic1.c: *	- added tunable max blend width
libvips/mosaicing/mosaic1.c: *	- better mosaic1 calcs ... was a bit broken
libvips/mosaicing/mosaic1.c: *	- works for LABQ as well
libvips/mosaicing/mosaic1.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/mosaic1.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/mosaic1.c:/* define this to get old not-really-working joiner.
libvips/mosaicing/mosaic1.c:	trn->iarea.left = 0;
libvips/mosaicing/mosaic1.c:	trn->iarea.top = 0;
libvips/mosaicing/mosaic1.c:	trn->iarea.width = in->Xsize;
libvips/mosaicing/mosaic1.c:	trn->iarea.height = in->Ysize;
libvips/mosaicing/mosaic1.c:	trn->a = a;
libvips/mosaicing/mosaic1.c:	trn->b = -b;
libvips/mosaicing/mosaic1.c:	trn->c = b;
libvips/mosaicing/mosaic1.c:	trn->d = a;
libvips/mosaicing/mosaic1.c:	trn->dx = dx;
libvips/mosaicing/mosaic1.c:	trn->dy = dy;
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:/* A join function ... either left-right or top-bottom rotscalemerge.
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		-trn.oarea.left, -trn.oarea.top, mwidth ) )
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		ref->filename, sec->filename, out->filename ); 
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		-trn.oarea.left, -trn.oarea.top, mwidth ) )
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		ref->filename, sec->filename, out->filename ); 
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:/* Join two images, using a pair of tie-points as parameters.
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:/* 1st order left-right merge.
libvips/mosaicing/mosaic1.c:/* 1st order top-bottom merge.
libvips/mosaicing/mosaic1.c:/* Like rotjoin, but do a search to refine the tie-points.
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:	if( ref->Coding == IM_CODING_LABQ ) {
libvips/mosaicing/mosaic1.c:			return( -1 );
libvips/mosaicing/mosaic1.c:	if( sec->Coding == IM_CODING_LABQ ) {
libvips/mosaicing/mosaic1.c:			return( -1 );
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:	/* Refine tie-points on rotated image. Remember the clip
libvips/mosaicing/mosaic1.c:	 * im__transform_set_area() has set, and move the sec tie-points 
libvips/mosaicing/mosaic1.c:		xs3 - trn.oarea.left, ys3 - trn.oarea.top,
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		xs4 - trn.oarea.left, ys4 - trn.oarea.top,
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		xs3 - trn.oarea.left, ys3 - trn.oarea.top,
libvips/mosaicing/mosaic1.c:		xs4 - trn.oarea.left, ys4 - trn.oarea.top,
libvips/mosaicing/mosaic1.c:	/* Put the sec tie-points back into output space.
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:	/* Correct tie-points. dummy is just a placeholder used to ensure that
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		-trn1.area.left, -trn1.area.top, 0, 0,
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:	af = a1 * a - b1 * b;
libvips/mosaicing/mosaic1.c:	dxf = a1 * dx - b1 * dy + dx1;
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/mosaic1.c:		-trn2.area.left, -trn2.area.top, mwidth ) )
libvips/mosaicing/mosaic1.c:		return( -1 );
libvips/mosaicing/im_remosaic.c: *	- from global_balance
libvips/mosaicing/im_remosaic.c: *	- detect size change
libvips/mosaicing/im_remosaic.c: * 	- spot file-not-found
libvips/mosaicing/im_remosaic.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_remosaic.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_remosaic.c:	SymbolTable *st = node->st;
libvips/mosaicing/im_remosaic.c:	IMAGE *im = node->im;
libvips/mosaicing/im_remosaic.c:			node->name );
libvips/mosaicing/im_remosaic.c:	/* Remove substring rd->old_str from in->filename, replace with
libvips/mosaicing/im_remosaic.c:	 * rd->new_str.
libvips/mosaicing/im_remosaic.c:	im_strncpy( filename, im->filename, FILENAME_MAX );
libvips/mosaicing/im_remosaic.c:	if( (p = im_strrstr( filename, rd->old_str )) ) {
libvips/mosaicing/im_remosaic.c:		int offset = p - &filename[0];
libvips/mosaicing/im_remosaic.c:		im_strncpy( p, rd->new_str, FILENAME_MAX - offset );
libvips/mosaicing/im_remosaic.c:		im_strncpy( p + rd->new_len,
libvips/mosaicing/im_remosaic.c:			im->filename + offset + rd->old_len, 
libvips/mosaicing/im_remosaic.c:			FILENAME_MAX - offset - rd->new_len );
libvips/mosaicing/im_remosaic.c:	printf( "im_remosaic: filename \"%s\" -> \"%s\"\n", 
libvips/mosaicing/im_remosaic.c:		im->filename, filename );
libvips/mosaicing/im_remosaic.c:	if( out->Xsize != im->Xsize || out->Ysize != im->Ysize ) {
libvips/mosaicing/im_remosaic.c:			filename, im->filename );
libvips/mosaicing/im_remosaic.c:		return( -1 );
libvips/mosaicing/im_remosaic.c:	/* Re-make mosaic.
libvips/mosaicing/im_remosaic.c:		return( -1 );
libvips/mosaicing/im_align_bands.c: * Written on: 2008-02-04
libvips/mosaicing/im_align_bands.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_align_bands.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_align_bands.c:    return -1;
libvips/mosaicing/im_align_bands.c:  if( 1 == in-> Bands )
libvips/mosaicing/im_align_bands.c:    IMAGE **bands= IM_ARRAY( out, 2 * in-> Bands, IMAGE* );
libvips/mosaicing/im_align_bands.c:    IMAGE **wrapped_bands= bands + in-> Bands;
libvips/mosaicing/im_align_bands.c:    if( ! bands || im_open_local_array( out, bands, in-> Bands, FUNCTION_NAME ": bands", "p" )
libvips/mosaicing/im_align_bands.c:        || im_open_local_array( out, wrapped_bands + 1, in-> Bands - 1, FUNCTION_NAME ": wrapped_bands", "p" ))
libvips/mosaicing/im_align_bands.c:      return -1;
libvips/mosaicing/im_align_bands.c:    for( i= 0; i < in-> Bands; ++i )
libvips/mosaicing/im_align_bands.c:        return -1;
libvips/mosaicing/im_align_bands.c:    for( i= 1; i < in-> Bands; ++i ){
libvips/mosaicing/im_align_bands.c:      if( ! temp || im_phasecor_fft( bands[i-1], bands[i], temp )
libvips/mosaicing/im_align_bands.c:        return -1;
libvips/mosaicing/im_align_bands.c:        return -1;
libvips/mosaicing/im_align_bands.c:    return im_gbandjoin( wrapped_bands, out, in-> Bands );
libvips/mosaicing/im_lrcalcon.c: * @(#) The variable bandno should be between 1 and ref->Bands
libvips/mosaicing/im_lrcalcon.c: * @(#) Returns 0 on sucess  and -1 on error.
libvips/mosaicing/im_lrcalcon.c: *	- now calls im_incheck()
libvips/mosaicing/im_lrcalcon.c: *	- reworked
libvips/mosaicing/im_lrcalcon.c: *	- what a lot of horrible old code there was too
libvips/mosaicing/im_lrcalcon.c: *	- now ignores black stuff (all bands zero) when selecting possible tie
libvips/mosaicing/im_lrcalcon.c: *	- now skips all-black windows, instead of any-black windows
libvips/mosaicing/im_lrcalcon.c: *	- ooops, < 0 should have been <= 0 
libvips/mosaicing/im_lrcalcon.c: *	- better error message for overlap too small
libvips/mosaicing/im_lrcalcon.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_lrcalcon.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_lrcalcon.c: * One-band uchar only.
libvips/mosaicing/im_lrcalcon.c:	const int hwinsize = (winsize - 1)/2;
libvips/mosaicing/im_lrcalcon.c:	const int left = xpos - hwinsize;
libvips/mosaicing/im_lrcalcon.c:	const int top = ypos - hwinsize;
libvips/mosaicing/im_lrcalcon.c:	const int ls = im->Xsize;
libvips/mosaicing/im_lrcalcon.c:	line = (PEL *) im->data + top*ls + left;
libvips/mosaicing/im_lrcalcon.c:	return( -1 );
libvips/mosaicing/im_lrcalcon.c:	const int hwinsize = (winsize - 1)/2;
libvips/mosaicing/im_lrcalcon.c:	const int left = xpos - hwinsize;
libvips/mosaicing/im_lrcalcon.c:	const int top = ypos - hwinsize;
libvips/mosaicing/im_lrcalcon.c:	const int ls = im->Xsize;
libvips/mosaicing/im_lrcalcon.c:	line = (PEL *) im->data + top*ls + left;
libvips/mosaicing/im_lrcalcon.c:	for( total = 0, y = 0; y < winsize-1; y++ ) {
libvips/mosaicing/im_lrcalcon.c:		for( x = 0; x < winsize-1; x++ ) {
libvips/mosaicing/im_lrcalcon.c:			const int lrd = (int) p[0] - p[1];
libvips/mosaicing/im_lrcalcon.c:			const int tbd = (int) p[0] - p[ls];
libvips/mosaicing/im_lrcalcon.c:	return( r->cont - l->cont );
libvips/mosaicing/im_lrcalcon.c:	const int nacross = (xsize - windowsize + hcorsize) / hcorsize;
libvips/mosaicing/im_lrcalcon.c:	const int ndown = (ysize - windowsize + hcorsize) / hcorsize;
libvips/mosaicing/im_lrcalcon.c:		return( -1 );
libvips/mosaicing/im_lrcalcon.c:		return( -1 );
libvips/mosaicing/im_lrcalcon.c:	/* Found enough tie-points?
libvips/mosaicing/im_lrcalcon.c:			_( "found %d tie-points, need at least %d" ), 
libvips/mosaicing/im_lrcalcon.c:		return( -1 );
libvips/mosaicing/im_lrcalcon.c:	const int border = points->halfareasize;
libvips/mosaicing/im_lrcalcon.c:	const int aheight = ref->Ysize / AREAS;
libvips/mosaicing/im_lrcalcon.c:	const int len = points->nopoints / AREAS;
libvips/mosaicing/im_lrcalcon.c:		return( -1 );
libvips/mosaicing/im_lrcalcon.c:	if( ref->Bands != 1 || ref->BandFmt != IM_BANDFMT_UCHAR ) { 
libvips/mosaicing/im_lrcalcon.c:		im_error( "im__lrcalcon", "%s", _( "not 1-band uchar image" ) );
libvips/mosaicing/im_lrcalcon.c:		return( -1 );
libvips/mosaicing/im_lrcalcon.c:	/* Define bits to search for high-contrast areas. Need to be able to
libvips/mosaicing/im_lrcalcon.c:	area.width = ref->Xsize;
libvips/mosaicing/im_lrcalcon.c:	im_rect_marginadjust( &area, -border );
libvips/mosaicing/im_lrcalcon.c:	area.width--;
libvips/mosaicing/im_lrcalcon.c:	area.height--;
libvips/mosaicing/im_lrcalcon.c:	for( i = 0; area.top < ref->Ysize; area.top += aheight, i++ ) 
libvips/mosaicing/im_lrcalcon.c:			points->x_reference + i*len,
libvips/mosaicing/im_lrcalcon.c:			points->y_reference + i*len,
libvips/mosaicing/im_lrcalcon.c:			points->contrast + i*len, 
libvips/mosaicing/im_lrcalcon.c:			points->halfcorsize ) )
libvips/mosaicing/im_lrcalcon.c:			return( -1 );
libvips/mosaicing/im_tbcalcon.c: * @(#) Returns 0 on sucess  and -1 on error.
libvips/mosaicing/im_tbcalcon.c: *	- allow IM_CODING_LABQ coding
libvips/mosaicing/im_tbcalcon.c: *	- now calls im_incheck()
libvips/mosaicing/im_tbcalcon.c: *	- reworked
libvips/mosaicing/im_tbcalcon.c: *	- what a lot of horrible old code there was too
libvips/mosaicing/im_tbcalcon.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_tbcalcon.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_tbcalcon.c:	const int border = points->halfareasize;
libvips/mosaicing/im_tbcalcon.c:	const int awidth = ref->Xsize / AREAS;
libvips/mosaicing/im_tbcalcon.c:	const int len = points->nopoints / AREAS;
libvips/mosaicing/im_tbcalcon.c:		return( -1 );
libvips/mosaicing/im_tbcalcon.c:	if( ref->Bands != 1 || ref->BandFmt != IM_BANDFMT_UCHAR ) { 
libvips/mosaicing/im_tbcalcon.c:		return( -1 );
libvips/mosaicing/im_tbcalcon.c:	/* Define bits to search for high-contrast areas.
libvips/mosaicing/im_tbcalcon.c:	area.height = ref->Ysize;
libvips/mosaicing/im_tbcalcon.c:	im_rect_marginadjust( &area, -border );
libvips/mosaicing/im_tbcalcon.c:	area.width--;
libvips/mosaicing/im_tbcalcon.c:	area.height--;
libvips/mosaicing/im_tbcalcon.c:		return( -1 );
libvips/mosaicing/im_tbcalcon.c:	for( i = 0; area.left < ref->Xsize; area.left += awidth, i++ ) 
libvips/mosaicing/im_tbcalcon.c:			points->x_reference + i*len,
libvips/mosaicing/im_tbcalcon.c:			points->y_reference + i*len,
libvips/mosaicing/im_tbcalcon.c:			points->contrast + i*len, 
libvips/mosaicing/im_tbcalcon.c:			points->halfcorsize ) )
libvips/mosaicing/im_tbcalcon.c:				return( -1 );
libvips/mosaicing/im_lrmosaic.c: * @(#)  Returns 0 on success and -1 on error
libvips/mosaicing/im_lrmosaic.c: *	- rewritten for new balance ideas
libvips/mosaicing/im_lrmosaic.c: *	- more bug-fixes
libvips/mosaicing/im_lrmosaic.c: *	- frees memory used by analysis phase as soon as possible
libvips/mosaicing/im_lrmosaic.c: *	- means large mosaics use significantly less peak memory
libvips/mosaicing/im_lrmosaic.c: *	- now calls im_lrmerge() rather than im__lrmerge()
libvips/mosaicing/im_lrmosaic.c: *	- added tunable max blend width
libvips/mosaicing/im_lrmosaic.c: *	- im_scale() makes it work for any image type
libvips/mosaicing/im_lrmosaic.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_lrmosaic.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_lrmosaic.c:	for( i = 0; i < points->nopoints; i++ ) {
libvips/mosaicing/im_lrmosaic.c:		adx += points->dx[i];
libvips/mosaicing/im_lrmosaic.c:		ady += points->dy[i];
libvips/mosaicing/im_lrmosaic.c:		acor += points->correlation[i];
libvips/mosaicing/im_lrmosaic.c:	adx = adx / (double) points->nopoints;
libvips/mosaicing/im_lrmosaic.c:	ady = ady / (double) points->nopoints;
libvips/mosaicing/im_lrmosaic.c:	acor = acor / (double) points->nopoints;
libvips/mosaicing/im_lrmosaic.c:	printf( "points: %d\n", points->nopoints );
libvips/mosaicing/im_lrmosaic.c:	printf( "deltax, deltay: %g %g\n", points->l_deltax, points->l_deltay );
libvips/mosaicing/im_lrmosaic.c:	if( ref_in->Bands != sec_in->Bands || 
libvips/mosaicing/im_lrmosaic.c:		ref_in->BandFmt != sec_in->BandFmt ||
libvips/mosaicing/im_lrmosaic.c:		ref_in->Coding != sec_in->Coding ) {
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:	left.width = ref_in->Xsize;
libvips/mosaicing/im_lrmosaic.c:	left.height = ref_in->Ysize;
libvips/mosaicing/im_lrmosaic.c:	right.left = xref - xsec;
libvips/mosaicing/im_lrmosaic.c:	right.top = yref - ysec;
libvips/mosaicing/im_lrmosaic.c:	right.width = sec_in->Xsize;
libvips/mosaicing/im_lrmosaic.c:	right.height = sec_in->Ysize;
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:	if( ref_in->Coding == IM_CODING_LABQ ) {
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:			overlap.left - right.left, overlap.top - right.top, 
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:	else if( ref_in->Coding == IM_CODING_NONE ) {
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:			overlap.left - right.left, overlap.top - right.top, 
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:			return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:	p_points->reference = ref_in->filename;
libvips/mosaicing/im_lrmosaic.c:	p_points->secondary = sec_in->filename;
libvips/mosaicing/im_lrmosaic.c:	p_points->nopoints = IM_MAXPOINTS;
libvips/mosaicing/im_lrmosaic.c:	p_points->deltax = 0;
libvips/mosaicing/im_lrmosaic.c:	p_points->deltay = 0;
libvips/mosaicing/im_lrmosaic.c:	p_points->halfcorsize = halfcorrelation; 	
libvips/mosaicing/im_lrmosaic.c:	p_points->halfareasize = halfarea;
libvips/mosaicing/im_lrmosaic.c:		p_points->x_reference[i] = 0;
libvips/mosaicing/im_lrmosaic.c:		p_points->y_reference[i] = 0;
libvips/mosaicing/im_lrmosaic.c:		p_points->x_secondary[i] = 0;
libvips/mosaicing/im_lrmosaic.c:		p_points->y_secondary[i] = 0;
libvips/mosaicing/im_lrmosaic.c:		p_points->contrast[i] = 0;
libvips/mosaicing/im_lrmosaic.c:		p_points->correlation[i] = 0.0;
libvips/mosaicing/im_lrmosaic.c:		p_points->dx[i] = 0.0;
libvips/mosaicing/im_lrmosaic.c:		p_points->dy[i] = 0.0;
libvips/mosaicing/im_lrmosaic.c:		p_points->deviation[i] = 0.0;
libvips/mosaicing/im_lrmosaic.c:	/* Search ref for possible tie-points. Sets: p_points->contrast, 
libvips/mosaicing/im_lrmosaic.c:	 * p_points->x,y_reference.
libvips/mosaicing/im_lrmosaic.c:		return( -1 ); 
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:	*dx0 = -right.left + dx;
libvips/mosaicing/im_lrmosaic.c:	*dy0 = -right.top + dy;
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:	/* No balance - easy!
libvips/mosaicing/im_lrmosaic.c:	if( ref->Coding != IM_CODING_NONE || 
libvips/mosaicing/im_lrmosaic.c:		ref->BandFmt != IM_BANDFMT_UCHAR ) {
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:	left.width = ref->Xsize;
libvips/mosaicing/im_lrmosaic.c:	left.height = ref->Ysize;
libvips/mosaicing/im_lrmosaic.c:	right.left = -dx;
libvips/mosaicing/im_lrmosaic.c:	right.top = -dy;
libvips/mosaicing/im_lrmosaic.c:	right.width = sec->Xsize;
libvips/mosaicing/im_lrmosaic.c:	right.height = sec->Ysize;
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		overlap.left - right.left, overlap.top - right.top, 
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:			double ltot = (double) ref->Xsize * ref->Ysize;
libvips/mosaicing/im_lrmosaic.c:			double rtot = (double) sec->Xsize * sec->Ysize;
libvips/mosaicing/im_lrmosaic.c:			double navg = rat * (lavg - ravg) + ravg;
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 );
libvips/mosaicing/im_lrmosaic.c:		return( -1 ); 
libvips/mosaicing/im_tbmerge.c:/* Merge two images top-bottom. dx, dy is the offset needed to get from sec 
libvips/mosaicing/im_tbmerge.c: * Returns 0 on success and -1 on error
libvips/mosaicing/im_tbmerge.c: *      - check for difference bug fixed
libvips/mosaicing/im_tbmerge.c: *      - geometry calculations improved and simplified
libvips/mosaicing/im_tbmerge.c: *      - small speedups
libvips/mosaicing/im_tbmerge.c: *	- ANSIfied
libvips/mosaicing/im_tbmerge.c: *	- proper freeing on errors, ready for partial
libvips/mosaicing/im_tbmerge.c: *	- now propogates both input histories
libvips/mosaicing/im_tbmerge.c: *	- adds magic lines for global mosaic optimisation
libvips/mosaicing/im_tbmerge.c: *      - Modified to use partials on all IO
libvips/mosaicing/im_tbmerge.c: *      - Modified to work with different types of images.
libvips/mosaicing/im_tbmerge.c: *	- added to VIPS!
libvips/mosaicing/im_tbmerge.c: *	- split into two parts: im_tbmerge() and im__tbmerge()
libvips/mosaicing/im_tbmerge.c: *	- latter called by im_tbmosaic()
libvips/mosaicing/im_tbmerge.c: *	- just the same as public im_tbmerge(), but adds no history
libvips/mosaicing/im_tbmerge.c: *	- necessary for im_global_balance()
libvips/mosaicing/im_tbmerge.c: *	- small bugs fixed
libvips/mosaicing/im_tbmerge.c: *	- better checks that parameters are sensible
libvips/mosaicing/im_tbmerge.c: *	- Kirk spotted what a load of rubbish Ahmed's code is
libvips/mosaicing/im_tbmerge.c: *	- rewritten - many, many bugs fixed
libvips/mosaicing/im_tbmerge.c: *	- new non-rectangular im_lrmerge adapted to make this
libvips/mosaicing/im_tbmerge.c: *	- small tidies
libvips/mosaicing/im_tbmerge.c: *	- im_demand_hint() call added
libvips/mosaicing/im_tbmerge.c: *	- now works for any dx/dy by calling im_insert() for bizarre cases
libvips/mosaicing/im_tbmerge.c: *	- added tunable max blend width
libvips/mosaicing/im_tbmerge.c: *	- switched to integer arithmetic for integer blends
libvips/mosaicing/im_tbmerge.c: *	- oops, iblend was broken
libvips/mosaicing/im_tbmerge.c: *	- more sophisticated transparency handling
libvips/mosaicing/im_tbmerge.c: *	- records Xoffset/Yoffset
libvips/mosaicing/im_tbmerge.c: *	- now requires all bands == 0 for transparency (used to just check
libvips/mosaicing/im_tbmerge.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_tbmerge.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_tbmerge.c:/* Return the position of the first non-zero pel from the top.
libvips/mosaicing/im_tbmerge.c:	IMAGE *im = ir->im;
libvips/mosaicing/im_tbmerge.c:	int b = im->Bands;
libvips/mosaicing/im_tbmerge.c:	if( vips_bandfmt_iscomplex( im->BandFmt ) )
libvips/mosaicing/im_tbmerge.c:/* Search for the first non-zero band element from the top edge of the image.
libvips/mosaicing/im_tbmerge.c:	switch( im->BandFmt ) {
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:/* Return the position of the first non-zero pel from the bottom.
libvips/mosaicing/im_tbmerge.c:	IMAGE *im = ir->im;
libvips/mosaicing/im_tbmerge.c:	int ls = IM_REGION_LSKIP( ir ) / IM_IMAGE_SIZEOF_ELEMENT( ir->im );
libvips/mosaicing/im_tbmerge.c:	int b = im->Bands;
libvips/mosaicing/im_tbmerge.c:	if( vips_bandfmt_iscomplex( im->BandFmt ) )
libvips/mosaicing/im_tbmerge.c:/* Search for the first non-zero band element from the top edge of the image.
libvips/mosaicing/im_tbmerge.c:	TYPE *p = (TYPE *) pr + (h - 1) * ls; \
libvips/mosaicing/im_tbmerge.c:	for( i = h - 1; i >= 0; i-- ) { \
libvips/mosaicing/im_tbmerge.c:		p -= ls; \
libvips/mosaicing/im_tbmerge.c:	switch( im->BandFmt ) {
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:	REGION *rir = inf->rir;
libvips/mosaicing/im_tbmerge.c:	REGION *sir = inf->sir;
libvips/mosaicing/im_tbmerge.c:	g_mutex_lock( ovlap->fl_lock );
libvips/mosaicing/im_tbmerge.c:	for( x = oreg->left; x < IM_RECT_RIGHT( oreg ); x++ ) {
libvips/mosaicing/im_tbmerge.c:		const int j = x - ovlap->overlap.left;
libvips/mosaicing/im_tbmerge.c:		const int first = ovlap->first[j];
libvips/mosaicing/im_tbmerge.c:		g_mutex_unlock( ovlap->fl_lock );
libvips/mosaicing/im_tbmerge.c:	rr.left = oreg->left;
libvips/mosaicing/im_tbmerge.c:	rr.top = ovlap->overlap.top;
libvips/mosaicing/im_tbmerge.c:	rr.width = oreg->width;
libvips/mosaicing/im_tbmerge.c:	rr.height = ovlap->overlap.height;
libvips/mosaicing/im_tbmerge.c:	rr.left -= ovlap->rarea.left;
libvips/mosaicing/im_tbmerge.c:	rr.top -= ovlap->rarea.top;
libvips/mosaicing/im_tbmerge.c:	sr.left = oreg->left;
libvips/mosaicing/im_tbmerge.c:	sr.top = ovlap->overlap.top;
libvips/mosaicing/im_tbmerge.c:	sr.width = oreg->width;
libvips/mosaicing/im_tbmerge.c:	sr.height = ovlap->overlap.height;
libvips/mosaicing/im_tbmerge.c:	sr.left -= ovlap->sarea.left;
libvips/mosaicing/im_tbmerge.c:	sr.top -= ovlap->sarea.top;
libvips/mosaicing/im_tbmerge.c:		g_mutex_unlock( ovlap->fl_lock );
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:	for( x = 0; x < oreg->width; x++ ) {
libvips/mosaicing/im_tbmerge.c:		const int j = (x + oreg->left) - ovlap->overlap.left;
libvips/mosaicing/im_tbmerge.c:		int *first = &ovlap->first[j];
libvips/mosaicing/im_tbmerge.c:		int *last = &ovlap->last[j];
libvips/mosaicing/im_tbmerge.c:			/* Search for top/bottom of overlap on this scan-line.
libvips/mosaicing/im_tbmerge.c:				g_mutex_unlock( ovlap->fl_lock );
libvips/mosaicing/im_tbmerge.c:				return( -1 );
libvips/mosaicing/im_tbmerge.c:			*first += ovlap->sarea.top;
libvips/mosaicing/im_tbmerge.c:			*last += ovlap->rarea.top;
libvips/mosaicing/im_tbmerge.c:			if( ovlap->mwidth >= 0 && 
libvips/mosaicing/im_tbmerge.c:				*last - *first > ovlap->mwidth ) {
libvips/mosaicing/im_tbmerge.c:				int shrinkby = (*last - *first) - ovlap->mwidth;
libvips/mosaicing/im_tbmerge.c:				*last -= shrinkby / 2;
libvips/mosaicing/im_tbmerge.c:	g_mutex_unlock( ovlap->fl_lock );
libvips/mosaicing/im_tbmerge.c:/* Blend two integer images ... one scan-line.
libvips/mosaicing/im_tbmerge.c:	for( i = 0, x = 0; x < oreg->width; x++ ) { \
libvips/mosaicing/im_tbmerge.c:				const int bheight = last[x] - first[x]; \
libvips/mosaicing/im_tbmerge.c:				const int inx = ((y - first[x]) << \
libvips/mosaicing/im_tbmerge.c:	for( i = 0, x = 0; x < oreg->width; x++ ) { \
libvips/mosaicing/im_tbmerge.c:				const int bheight = last[x] - first[x]; \
libvips/mosaicing/im_tbmerge.c:				const int inx = ((y - first[x]) << \
libvips/mosaicing/im_tbmerge.c:/* Top-bottom blend function for non-labpack images.
libvips/mosaicing/im_tbmerge.c:	REGION *rir = inf->rir;
libvips/mosaicing/im_tbmerge.c:	REGION *sir = inf->sir;
libvips/mosaicing/im_tbmerge.c:	IMAGE *im = or->im;
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:	prr.left -= ovlap->rarea.left;
libvips/mosaicing/im_tbmerge.c:	prr.top -= ovlap->rarea.top;
libvips/mosaicing/im_tbmerge.c:	psr.left -= ovlap->sarea.left;
libvips/mosaicing/im_tbmerge.c:	psr.top -= ovlap->sarea.top;
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:	for( y = oreg->top, yr = prr.top, ys = psr.top; 
libvips/mosaicing/im_tbmerge.c:		PEL *q = (PEL *) IM_REGION_ADDR( or, oreg->left, y );
libvips/mosaicing/im_tbmerge.c:		const int j = oreg->left - ovlap->overlap.left;
libvips/mosaicing/im_tbmerge.c:		const int *first = ovlap->first + j;
libvips/mosaicing/im_tbmerge.c:		const int *last = ovlap->last + j;
libvips/mosaicing/im_tbmerge.c:		switch( im->BandFmt ) {
libvips/mosaicing/im_tbmerge.c:			iblend( unsigned char, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_tbmerge.c:			iblend( signed char, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_tbmerge.c:			iblend( unsigned short, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_tbmerge.c:			iblend( signed short, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_tbmerge.c:			iblend( unsigned int, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_tbmerge.c:			iblend( signed int, im->Bands, pr, ps, q );  break; 
libvips/mosaicing/im_tbmerge.c:			fblend( float, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_tbmerge.c:			fblend( double, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_tbmerge.c:			fblend( float, im->Bands*2, pr, ps, q ); break; 
libvips/mosaicing/im_tbmerge.c:			fblend( double, im->Bands*2, pr, ps, q ); break;
libvips/mosaicing/im_tbmerge.c:			return( -1 );
libvips/mosaicing/im_tbmerge.c:/* Top-bottom blend function for IM_CODING_LABQ images.
libvips/mosaicing/im_tbmerge.c:	REGION *rir = inf->rir;
libvips/mosaicing/im_tbmerge.c:	REGION *sir = inf->sir;
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:	prr.left -= ovlap->rarea.left;
libvips/mosaicing/im_tbmerge.c:	prr.top -= ovlap->rarea.top;
libvips/mosaicing/im_tbmerge.c:	psr.left -= ovlap->sarea.left;
libvips/mosaicing/im_tbmerge.c:	psr.top -= ovlap->sarea.top;
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:	for( y = oreg->top, yr = prr.top, ys = psr.top; 
libvips/mosaicing/im_tbmerge.c:		PEL *q = (PEL *) IM_REGION_ADDR( or, oreg->left, y );
libvips/mosaicing/im_tbmerge.c:		const int j = oreg->left - ovlap->overlap.left;
libvips/mosaicing/im_tbmerge.c:		const int *first = ovlap->first + j;
libvips/mosaicing/im_tbmerge.c:		const int *last = ovlap->last + j;
libvips/mosaicing/im_tbmerge.c:		float *fq = inf->merge;
libvips/mosaicing/im_tbmerge.c:		float *r = inf->from1;
libvips/mosaicing/im_tbmerge.c:		float *s = inf->from2;
libvips/mosaicing/im_tbmerge.c:		imb_LabQ2Lab( pr, r, oreg->width );
libvips/mosaicing/im_tbmerge.c:		imb_LabQ2Lab( ps, s, oreg->width );
libvips/mosaicing/im_tbmerge.c:		/* Re-pack to output buffer.
libvips/mosaicing/im_tbmerge.c:		imb_Lab2LabQ( inf->merge, q, oreg->width );
libvips/mosaicing/im_tbmerge.c:/* Build per-call state.
libvips/mosaicing/im_tbmerge.c:	switch( ref->Coding ) {
libvips/mosaicing/im_tbmerge.c:		ovlap->blend = tb_blend_labpack;
libvips/mosaicing/im_tbmerge.c:		ovlap->blend = tb_blend;
libvips/mosaicing/im_tbmerge.c:	ovlap->rpart = ovlap->rarea;
libvips/mosaicing/im_tbmerge.c:	ovlap->spart = ovlap->sarea;
libvips/mosaicing/im_tbmerge.c:	ovlap->rpart.height -= ovlap->overlap.height;
libvips/mosaicing/im_tbmerge.c:	ovlap->spart.top += ovlap->overlap.height;
libvips/mosaicing/im_tbmerge.c:	ovlap->spart.height -= ovlap->overlap.height;
libvips/mosaicing/im_tbmerge.c:	if( IM_RECT_BOTTOM( &ovlap->rarea ) > IM_RECT_BOTTOM( &ovlap->sarea ) ||
libvips/mosaicing/im_tbmerge.c:		ovlap->rarea.top > ovlap->sarea.top ) {
libvips/mosaicing/im_tbmerge.c:	ovlap->blsize = ovlap->overlap.width;
libvips/mosaicing/im_tbmerge.c:	if( ref->Bands != sec->Bands || 
libvips/mosaicing/im_tbmerge.c:		ref->BandFmt != sec->BandFmt ||
libvips/mosaicing/im_tbmerge.c:		ref->Coding != sec->Coding ) {
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:	if( ref->Coding != IM_CODING_NONE && ref->Coding != IM_CODING_LABQ ) {
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:	if( dy > 0 || dy < 1 - ref->Ysize ) {
libvips/mosaicing/im_tbmerge.c:  		if( im_insert( ref, sec, out, -dx, -dy ) )
libvips/mosaicing/im_tbmerge.c:			return( -1 );
libvips/mosaicing/im_tbmerge.c:		out->Xoffset = -dx;
libvips/mosaicing/im_tbmerge.c:		out->Yoffset = -dy;
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:	out->Xsize = ovlap->oarea.width;
libvips/mosaicing/im_tbmerge.c:	out->Ysize = ovlap->oarea.height;
libvips/mosaicing/im_tbmerge.c:	out->Xoffset = ovlap->sarea.left;
libvips/mosaicing/im_tbmerge.c:	out->Yoffset = ovlap->sarea.top;
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/im_tbmerge.c:		ref->filename, sec->filename, out->filename, 
libvips/mosaicing/im_tbmerge.c:		-dx, -dy, mwidth ) )
libvips/mosaicing/im_tbmerge.c:		return( -1 );
libvips/mosaicing/global_balance.c: * every sub-image. Find all overlap stats and solve balancing with LMS.
libvips/mosaicing/global_balance.c: *	- first version, unfinished!
libvips/mosaicing/global_balance.c: *	- LMS fixed, now works, more or less
libvips/mosaicing/global_balance.c: *	- now does positions correctly too
libvips/mosaicing/global_balance.c: *	- ignores trivial overlaps
libvips/mosaicing/global_balance.c: *	- prints correct number of balance factors!
libvips/mosaicing/global_balance.c: *	- now tracks im_copy() calls too, so you can save sub-images
libvips/mosaicing/global_balance.c: *	- slightly clearer diagnostics
libvips/mosaicing/global_balance.c: *	- better centre of factors around 1.0 with log() average
libvips/mosaicing/global_balance.c: *	- new im_global_balance_float variant lets our caller adjust factor
libvips/mosaicing/global_balance.c: *	  range if output has burn-out
libvips/mosaicing/global_balance.c: *	- im_global_balance_search uses the above to produce scaled output ...
libvips/mosaicing/global_balance.c: *	- now tries current directory too for input files
libvips/mosaicing/global_balance.c: *	- horrible bug in position finding! now fixed
libvips/mosaicing/global_balance.c: *	- revised for new mosaic functions and non-square images
libvips/mosaicing/global_balance.c: *	- code for im_lrmosaic1() support
libvips/mosaicing/global_balance.c: *	- output type == input type, so works for short images too
libvips/mosaicing/global_balance.c: *	- new gamma parameter, do scale in linear space
libvips/mosaicing/global_balance.c: *	- removed _search version, as can now be done with ip
libvips/mosaicing/global_balance.c: *	- renamed _float to f suffix, in line with im_conv()/im_convf()
libvips/mosaicing/global_balance.c: *	- balancef() did not scale in linear space
libvips/mosaicing/global_balance.c: *	- added tunable max blend width
libvips/mosaicing/global_balance.c: *	- global_balance.h broken out for im_remosaic()
libvips/mosaicing/global_balance.c: *	- better transform function scheme
libvips/mosaicing/global_balance.c: *	- quicker bailout on error
libvips/mosaicing/global_balance.c: * 	- add <> around file names so you can have spaces :(
libvips/mosaicing/global_balance.c: *	- track original params and always reuse them ... makes us proof
libvips/mosaicing/global_balance.c: *	- weed out overlaps which contain only transparent pixels
libvips/mosaicing/global_balance.c: * 	- switch to new history thing, switch im_errormsg() too
libvips/mosaicing/global_balance.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/global_balance.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/global_balance.c: * needs to be MAX_FILES long. -1 for error, otherwise number of args found.
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( (im = im_open_local( st->im, name, "r" )) ) 
libvips/mosaicing/global_balance.c:	if( (im = im_open_local( st->im, im_skip_dir( name ), "r" )) ) 
libvips/mosaicing/global_balance.c:	IM_FREEF( g_slist_free, node->overlaps );
libvips/mosaicing/global_balance.c:	JoinNode *node = IM_NEW( st->im, JoinNode );
libvips/mosaicing/global_balance.c:	if( !node || !(node->name = im_strdup( st->im, name )) )
libvips/mosaicing/global_balance.c:	node->type = JOIN_LEAF;
libvips/mosaicing/global_balance.c:	node->dirty = 0;
libvips/mosaicing/global_balance.c:	node->mwidth = -2;
libvips/mosaicing/global_balance.c:	node->st = st;
libvips/mosaicing/global_balance.c:	im__transform_init( &node->cumtrn );
libvips/mosaicing/global_balance.c:	node->trnim = NULL;
libvips/mosaicing/global_balance.c:	node->arg1 = NULL;
libvips/mosaicing/global_balance.c:	node->arg2 = NULL;
libvips/mosaicing/global_balance.c:	node->overlaps = NULL;
libvips/mosaicing/global_balance.c:	node->im = NULL;
libvips/mosaicing/global_balance.c:	node->index = 0;
libvips/mosaicing/global_balance.c:        if( im_add_close_callback( st->im, 
libvips/mosaicing/global_balance.c:	if( (node->im = im__global_open_image( st, name )) ) {
libvips/mosaicing/global_balance.c:		/* There is a file there - set width and height.
libvips/mosaicing/global_balance.c:		node->cumtrn.oarea.width = node->im->Xsize;
libvips/mosaicing/global_balance.c:		node->cumtrn.oarea.height = node->im->Ysize;
libvips/mosaicing/global_balance.c:	st->table[n] = g_slist_prepend( st->table[n], node );
libvips/mosaicing/global_balance.c:	OverlapInfo *lap = IM_NEW( node->st->im, OverlapInfo );
libvips/mosaicing/global_balance.c:	lap->node = node;
libvips/mosaicing/global_balance.c:	lap->other = other;
libvips/mosaicing/global_balance.c:	lap->overlap = *overlap;
libvips/mosaicing/global_balance.c:	lap->nstats = NULL;
libvips/mosaicing/global_balance.c:	lap->ostats = NULL;
libvips/mosaicing/global_balance.c:	node->overlaps = g_slist_prepend( node->overlaps, lap );
libvips/mosaicing/global_balance.c:	node->st->novl++;
libvips/mosaicing/global_balance.c:	JoinNode *node = lap->node;
libvips/mosaicing/global_balance.c:	node->overlaps = g_slist_remove( node->overlaps, lap );
libvips/mosaicing/global_balance.c:	assert( node->st->novl > 0 );
libvips/mosaicing/global_balance.c:	node->st->novl--;
libvips/mosaicing/global_balance.c:	for( i = 0; i < st->sz; i++ )
libvips/mosaicing/global_balance.c:		IM_FREEF( g_slist_free, st->table[i] );
libvips/mosaicing/global_balance.c:	if( !(st->table = IM_ARRAY( out, sz, GSList * )) )
libvips/mosaicing/global_balance.c:	st->sz = sz;
libvips/mosaicing/global_balance.c:	st->im = out;
libvips/mosaicing/global_balance.c:	st->novl = 0;
libvips/mosaicing/global_balance.c:	st->nim = 0;
libvips/mosaicing/global_balance.c:	st->njoin = 0;
libvips/mosaicing/global_balance.c:	st->root = NULL;
libvips/mosaicing/global_balance.c:	st->leaf = NULL;
libvips/mosaicing/global_balance.c:	st->fac = NULL;
libvips/mosaicing/global_balance.c:		st->table[i] = NULL;
libvips/mosaicing/global_balance.c:	if( strcmp( node->name, name ) == 0 )
libvips/mosaicing/global_balance.c:	return( im_slist_map2( st->table[hash( name )],
libvips/mosaicing/global_balance.c:	for( i = 0; i < st->sz; i++ )
libvips/mosaicing/global_balance.c:		if( (r = im_slist_map2( st->table[i], 
libvips/mosaicing/global_balance.c:	node->dirty = state;
libvips/mosaicing/global_balance.c:	switch( node->type ) {
libvips/mosaicing/global_balance.c:		im_rect_unionrect( &node->arg1->cumtrn.oarea,
libvips/mosaicing/global_balance.c:			&node->arg2->cumtrn.oarea, &um );
libvips/mosaicing/global_balance.c:		node->cumtrn.iarea.left = 0;
libvips/mosaicing/global_balance.c:		node->cumtrn.iarea.top = 0;
libvips/mosaicing/global_balance.c:		node->cumtrn.iarea.width = um.width;
libvips/mosaicing/global_balance.c:		node->cumtrn.iarea.height = um.height;
libvips/mosaicing/global_balance.c:		im__transform_set_area( &node->cumtrn );
libvips/mosaicing/global_balance.c:		node->cumtrn = node->arg1->cumtrn;
libvips/mosaicing/global_balance.c:		if( node->im ) {
libvips/mosaicing/global_balance.c:			node->cumtrn.iarea.left = 0;
libvips/mosaicing/global_balance.c:			node->cumtrn.iarea.top = 0;
libvips/mosaicing/global_balance.c:			node->cumtrn.iarea.width = node->im->Xsize;
libvips/mosaicing/global_balance.c:			node->cumtrn.iarea.height = node->im->Ysize;
libvips/mosaicing/global_balance.c:			im__transform_set_area( &node->cumtrn );
libvips/mosaicing/global_balance.c:	if( node->dirty && node->arg1 && node->arg2 ) {
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	node->dirty = 1;
libvips/mosaicing/global_balance.c:	if( propogate_transform( node->arg1, trn ) ||
libvips/mosaicing/global_balance.c:		propogate_transform( node->arg2, trn ) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	im__transform_add( &node->cumtrn, trn, &node->cumtrn );
libvips/mosaicing/global_balance.c:	if( out->type != JOIN_LEAF ) {
libvips/mosaicing/global_balance.c:			_( "image \"%s\" used twice as output" ), out->name );
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	out->type = type;
libvips/mosaicing/global_balance.c:	out->mwidth = mwidth;
libvips/mosaicing/global_balance.c:	out->a = a;
libvips/mosaicing/global_balance.c:	out->b = b;
libvips/mosaicing/global_balance.c:	out->dx = dx;
libvips/mosaicing/global_balance.c:	out->dy = dy;
libvips/mosaicing/global_balance.c:	out->arg1 = arg1;
libvips/mosaicing/global_balance.c:	out->arg2 = arg2;
libvips/mosaicing/global_balance.c:	out->thistrn.a = a;
libvips/mosaicing/global_balance.c:	out->thistrn.b = -b;
libvips/mosaicing/global_balance.c:	out->thistrn.c = b;
libvips/mosaicing/global_balance.c:	out->thistrn.d = a;
libvips/mosaicing/global_balance.c:	out->thistrn.dx = dx;
libvips/mosaicing/global_balance.c:	out->thistrn.dy = dy;
libvips/mosaicing/global_balance.c:	if( propogate_transform( arg2, &out->thistrn ) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	trn.dx = -out->cumtrn.oarea.left;
libvips/mosaicing/global_balance.c:	trn.dy = -out->cumtrn.oarea.top;
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( after->type != JOIN_LEAF ) {
libvips/mosaicing/global_balance.c:			_( "image \"%s\" used twice as output" ), after->name );
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	after->type = JOIN_CP;
libvips/mosaicing/global_balance.c:	after->arg1 = before;
libvips/mosaicing/global_balance.c:	after->arg2 = NULL;
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			mwidth = -1;
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			mwidth = -1;
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:	if( node->arg1 )
libvips/mosaicing/global_balance.c:		node->arg1->dirty = 1;
libvips/mosaicing/global_balance.c:	if( node->arg2 )
libvips/mosaicing/global_balance.c:		node->arg2->dirty = 1;
libvips/mosaicing/global_balance.c:	if( !node->dirty )
libvips/mosaicing/global_balance.c:	/* Clean the table, then scan it, setting all pointed-to nodes dirty.
libvips/mosaicing/global_balance.c:	/* Now dirty that - then if there are any more clean symbols, we have
libvips/mosaicing/global_balance.c:	root->dirty = 1;
libvips/mosaicing/global_balance.c:	for( p = in->history_list; p; p = p->next ) {
libvips/mosaicing/global_balance.c:		GValue *value = (GValue *) p->data;
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:	if( !(st->root = find_root( st )) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( node->type == JOIN_LEAF ) {
libvips/mosaicing/global_balance.c:		node->index = node->st->nim;
libvips/mosaicing/global_balance.c:		node->st->nim++;
libvips/mosaicing/global_balance.c:		im_skip_dir( node->name ),
libvips/mosaicing/global_balance.c:		node->cumtrn.oarea.left, node->cumtrn.oarea.top,
libvips/mosaicing/global_balance.c:		node->cumtrn.oarea.width, node->cumtrn.oarea.height,
libvips/mosaicing/global_balance.c:		node->index );
libvips/mosaicing/global_balance.c:	if( node->type == JOIN_LEAF ) 
libvips/mosaicing/global_balance.c:	if( node->type == JOIN_TB ||
libvips/mosaicing/global_balance.c:		node->type == JOIN_LR ||
libvips/mosaicing/global_balance.c:		node->type == JOIN_LRROTSCALE ||
libvips/mosaicing/global_balance.c:		node->type == JOIN_TBROTSCALE )
libvips/mosaicing/global_balance.c:		node->st->njoin++;
libvips/mosaicing/global_balance.c:	switch( node->type ) {
libvips/mosaicing/global_balance.c:			JoinType2char( node->type ), 
libvips/mosaicing/global_balance.c:			im_skip_dir( node->name ),
libvips/mosaicing/global_balance.c:			node->cumtrn.oarea.width, node->cumtrn.oarea.height,
libvips/mosaicing/global_balance.c:			node->cumtrn.oarea.left, node->cumtrn.oarea.top );
libvips/mosaicing/global_balance.c:		print_joins( node->arg1, indent+2 );
libvips/mosaicing/global_balance.c:		print_joins( node->arg2, indent+2 );
libvips/mosaicing/global_balance.c:		printf( "copy to make %s of:\n", im_skip_dir( node->name ) );
libvips/mosaicing/global_balance.c:		print_joins( node->arg1, indent+2 );
libvips/mosaicing/global_balance.c:		printf( "input image %s\n", im_skip_dir( node->name ) );
libvips/mosaicing/global_balance.c:	printf( "-> %s overlaps with %s; (this, other) = (%.4G, %.4G)\n",
libvips/mosaicing/global_balance.c:		im_skip_dir( lap->node->name ),
libvips/mosaicing/global_balance.c:		im_skip_dir( lap->other->name ),
libvips/mosaicing/global_balance.c:		lap->nstats->coeff[4],
libvips/mosaicing/global_balance.c:		lap->ostats->coeff[4] );
libvips/mosaicing/global_balance.c:	if( node->type == JOIN_LEAF && g_slist_length( node->overlaps ) > 0 ) {
libvips/mosaicing/global_balance.c:		printf( "overlap of %s with:\n", im_skip_dir( node->name ) );
libvips/mosaicing/global_balance.c:		im_slist_map2( node->overlaps, 
libvips/mosaicing/global_balance.c:	double na = lap->nstats->coeff[4];
libvips/mosaicing/global_balance.c:	double oa = lap->ostats->coeff[4];
libvips/mosaicing/global_balance.c:		na *= fac[lap->node->index];
libvips/mosaicing/global_balance.c:		oa *= fac[lap->other->index];
libvips/mosaicing/global_balance.c:	err = na - oa;
libvips/mosaicing/global_balance.c:	printf( "-> file %s, error = %g\n",
libvips/mosaicing/global_balance.c:		im_skip_dir( lap->other->name ), err );
libvips/mosaicing/global_balance.c:	if( node->type == JOIN_LEAF && g_slist_length( node->overlaps ) > 0 ) {
libvips/mosaicing/global_balance.c:			im_skip_dir( node->name ), node->index );
libvips/mosaicing/global_balance.c:		im_slist_map2( node->overlaps, 
libvips/mosaicing/global_balance.c:		r->left, r->top, r->width, r->height ) );
libvips/mosaicing/global_balance.c: * has 255 for every pixel where both images are non-zero.
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:/* Find the number of non-zero pixels in a mask image.
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	*count = (avg * in->Xsize * in->Ysize ) / 255.0;
libvips/mosaicing/global_balance.c:		im_black( t[1], t[0]->Xsize, t[0]->Ysize, t[0]->Bands ) ||
libvips/mosaicing/global_balance.c:		im_clip2fmt( t[1], t[2], t[0]->BandFmt ) ||
libvips/mosaicing/global_balance.c:	/* Number of non-zero pixels in mask.
libvips/mosaicing/global_balance.c:	stats->coeff[4] *= (double) count / 
libvips/mosaicing/global_balance.c:		((double) mask->Xsize * mask->Ysize);
libvips/mosaicing/global_balance.c:	stats->coeff[5] = count;
libvips/mosaicing/global_balance.c:	IMAGE *t1 = im_open_local( lap->node->im, "find_overlap_stats:1", "p" );
libvips/mosaicing/global_balance.c:	rarea = lap->overlap;
libvips/mosaicing/global_balance.c:	rarea.left -= lap->node->cumtrn.oarea.left;
libvips/mosaicing/global_balance.c:	rarea.top -= lap->node->cumtrn.oarea.top;
libvips/mosaicing/global_balance.c:	sarea = lap->overlap;
libvips/mosaicing/global_balance.c:	sarea.left -= lap->other->cumtrn.oarea.left;
libvips/mosaicing/global_balance.c:	sarea.top -= lap->other->cumtrn.oarea.top;
libvips/mosaicing/global_balance.c:	if( make_overlap_mask( lap->node->trnim, lap->other->trnim, t1,
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( !(lap->nstats = find_image_stats( lap->node->trnim, t1, &rarea )) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( !(lap->ostats = find_image_stats( lap->other->trnim, t1, &sarea )) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:/* Sub-fn. of below.
libvips/mosaicing/global_balance.c:	if( this->other == node )
libvips/mosaicing/global_balance.c:	if( other->type != JOIN_LEAF || node == other ) 
libvips/mosaicing/global_balance.c:	im_rect_intersectrect( &node->cumtrn.oarea, &other->cumtrn.oarea, 
libvips/mosaicing/global_balance.c:	if( im_slist_map2( other->overlaps, 
libvips/mosaicing/global_balance.c:	/* A new overlap - add to overlap list.
libvips/mosaicing/global_balance.c:	if( lap->nstats->coeff[5] < TRIVIAL || 
libvips/mosaicing/global_balance.c:		lap->ostats->coeff[5] < TRIVIAL ) {
libvips/mosaicing/global_balance.c:			lap->nstats->coeff[5], lap->ostats->coeff[5] );
libvips/mosaicing/global_balance.c:	if( node->type == JOIN_LEAF ) {
libvips/mosaicing/global_balance.c:		if( !node->im ) {
libvips/mosaicing/global_balance.c:				_( "unable to open \"%s\"" ), node->name );
libvips/mosaicing/global_balance.c:		if( !node->trnim ) 
libvips/mosaicing/global_balance.c:	double *Kp = bun->K->coeff + bun->row;
libvips/mosaicing/global_balance.c:	double *Mp = bun->M->coeff + bun->row*bun->M->xsize;
libvips/mosaicing/global_balance.c:	double ns = pow( ovl->nstats->coeff[4], 1/(*gamma) );
libvips/mosaicing/global_balance.c:	double os = pow( ovl->ostats->coeff[4], 1/(*gamma) );
libvips/mosaicing/global_balance.c:	Mp[ovl->other->index - 1] = os;
libvips/mosaicing/global_balance.c:	bun->row++;
libvips/mosaicing/global_balance.c:	double *Mp = bun->M->coeff + bun->row*bun->M->xsize;
libvips/mosaicing/global_balance.c:	double ns = -pow( ovl->nstats->coeff[4], 1/(*gamma) );
libvips/mosaicing/global_balance.c:	double os = pow( ovl->ostats->coeff[4], 1/(*gamma) );
libvips/mosaicing/global_balance.c:	Mp[ovl->node->index - 1] = ns;
libvips/mosaicing/global_balance.c:	Mp[ovl->other->index - 1] = os;
libvips/mosaicing/global_balance.c:	bun->row++;
libvips/mosaicing/global_balance.c:	if( node == bun->leaf )
libvips/mosaicing/global_balance.c:		im_slist_map2( node->overlaps, 
libvips/mosaicing/global_balance.c:		im_slist_map2( node->overlaps, 
libvips/mosaicing/global_balance.c:	bun.leaf = st->leaf;
libvips/mosaicing/global_balance.c:	if( node->type == JOIN_LEAF )
libvips/mosaicing/global_balance.c:	switch( node->type ) {
libvips/mosaicing/global_balance.c:		if( !(im1 = make_mos_image( st, node->arg1, tfn, a )) ||
libvips/mosaicing/global_balance.c:			!(im2 = make_mos_image( st, node->arg2, tfn, a )) ||
libvips/mosaicing/global_balance.c:			!(out = im_open_local( st->im, node->name, "p" )) )
libvips/mosaicing/global_balance.c:		if( node->type == JOIN_LR ) {
libvips/mosaicing/global_balance.c:				-node->dx, -node->dy, node->mwidth ) )
libvips/mosaicing/global_balance.c:				-node->dx, -node->dy, node->mwidth ) )
libvips/mosaicing/global_balance.c:		if( !(im1 = make_mos_image( st, node->arg1, tfn, a )) ||
libvips/mosaicing/global_balance.c:			!(im2 = make_mos_image( st, node->arg2, tfn, a )) ||
libvips/mosaicing/global_balance.c:			!(out = im_open_local( st->im, node->name, "p" )) )
libvips/mosaicing/global_balance.c:		if( node->type == JOIN_LRROTSCALE ) {
libvips/mosaicing/global_balance.c:				node->a, node->b, node->dx, node->dy,
libvips/mosaicing/global_balance.c:				node->mwidth ) )
libvips/mosaicing/global_balance.c:				node->a, node->b, node->dx, node->dy,
libvips/mosaicing/global_balance.c:				node->mwidth ) )
libvips/mosaicing/global_balance.c:		out = make_mos_image( st, node->arg1, tfn, a );
libvips/mosaicing/global_balance.c:/* Re-build mosaic. 
libvips/mosaicing/global_balance.c:	JoinNode *root = st->root;
libvips/mosaicing/global_balance.c:	switch( root->type ) {
libvips/mosaicing/global_balance.c:		if( !(im1 = make_mos_image( st, root->arg1, tfn, a )) ||
libvips/mosaicing/global_balance.c:			!(im2 = make_mos_image( st, root->arg2, tfn, a )) )
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:		if( root->type == JOIN_LR ) {
libvips/mosaicing/global_balance.c:				-root->dx, -root->dy, root->mwidth ) )
libvips/mosaicing/global_balance.c:				return( -1 );
libvips/mosaicing/global_balance.c:				-root->dx, -root->dy, root->mwidth ) )
libvips/mosaicing/global_balance.c:				return( -1 );
libvips/mosaicing/global_balance.c:		if( !(im1 = make_mos_image( st, root->arg1, tfn, a )) ||
libvips/mosaicing/global_balance.c:			!(im2 = make_mos_image( st, root->arg2, tfn, a )) )
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:		if( root->type == JOIN_LRROTSCALE ) {
libvips/mosaicing/global_balance.c:				root->a, root->b, root->dx, root->dy,
libvips/mosaicing/global_balance.c:				root->mwidth ) )
libvips/mosaicing/global_balance.c:				return( -1 );
libvips/mosaicing/global_balance.c:				root->a, root->b, root->dx, root->dy,
libvips/mosaicing/global_balance.c:				root->mwidth ) )
libvips/mosaicing/global_balance.c:				return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:		if( !(im1 = make_mos_image( st, root->arg1, tfn, a )) )
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:			return( -1 );
libvips/mosaicing/global_balance.c:	if( !(K = im_local_dmask( st->im, 
libvips/mosaicing/global_balance.c:			im_create_dmask( "K", 1, st->novl ) )) ||
libvips/mosaicing/global_balance.c:		!(M = im_local_dmask( st->im, 
libvips/mosaicing/global_balance.c:			im_create_dmask( "M", st->nim-1, st->novl ) )) ) 
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( !(m1 = im_local_dmask( st->im, im_mattrn( M, "lms:1" ) )) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( !(m2 = im_local_dmask( st->im, im_matmul( m1, M, "lms:2" ) )) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( !(m3 = im_local_dmask( st->im, im_matinv( m2, "lms:3" ) )) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( !(m4 = im_local_dmask( st->im, im_matmul( m3, m1, "lms:4" ) )) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( !(m5 = im_local_dmask( st->im, im_matmul( m4, K, "lms:5" ) )) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	if( !(st->fac = IM_ARRAY( st->im, st->nim, double )) )
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	for( i = 0; i < m5->ysize; i++ )
libvips/mosaicing/global_balance.c:		st->fac[i + 1] = m5->coeff[i];
libvips/mosaicing/global_balance.c:	st->fac[0] = 1.0;
libvips/mosaicing/global_balance.c:	for( i = 0; i < st->nim; i++ )
libvips/mosaicing/global_balance.c:		total += st->fac[i];
libvips/mosaicing/global_balance.c:	avg = total / st->nim;
libvips/mosaicing/global_balance.c:	for( i = 0; i < st->nim; i++ )
libvips/mosaicing/global_balance.c:		st->fac[i] /= avg;
libvips/mosaicing/global_balance.c:	for( i = 0; i < st->nim; i++ )
libvips/mosaicing/global_balance.c:		printf( "balance factor %d = %g\n", i, st->fac[i] );
libvips/mosaicing/global_balance.c:	printf( "RMS error = %g\n", sqrt( total / st->novl ) );
libvips/mosaicing/global_balance.c:	im__map_table( st, print_overlap_errors, st->fac, &total );
libvips/mosaicing/global_balance.c:	printf( "RMS error = %g\n", sqrt( total / st->novl ) );
libvips/mosaicing/global_balance.c:	if( node->type == JOIN_LEAF ) {
libvips/mosaicing/global_balance.c:		if( !node->im ) {
libvips/mosaicing/global_balance.c:				_( "unable to open \"%s\"" ), node->name );
libvips/mosaicing/global_balance.c:		if( node->trnim ) 
libvips/mosaicing/global_balance.c:		if( im__transform_isidentity( &node->cumtrn ) )
libvips/mosaicing/global_balance.c:			node->trnim = node->im;
libvips/mosaicing/global_balance.c:			if( !(node->trnim = 
libvips/mosaicing/global_balance.c:				im_open_local( node->im, "trnleaf:1", "p" )) ||
libvips/mosaicing/global_balance.c:				im__affine( node->im, node->trnim, 
libvips/mosaicing/global_balance.c:					&node->cumtrn ) ) 
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	print_node( st->root );
libvips/mosaicing/global_balance.c:	print_joins( st->root, 0 );
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c:	st->leaf = im__map_table( st, choose_leaf, NULL, NULL );
libvips/mosaicing/global_balance.c:	print_node( st->leaf );
libvips/mosaicing/global_balance.c:		st->nim, st->novl, st->njoin );
libvips/mosaicing/global_balance.c:/* Scale im by fac --- if it's uchar/ushort, use a lut. If we can use a lut,
libvips/mosaicing/global_balance.c:	SymbolTable *st = node->st;
libvips/mosaicing/global_balance.c:	IMAGE *in = node->im;
libvips/mosaicing/global_balance.c:	double fac = st->fac[node->index];
libvips/mosaicing/global_balance.c:	IMAGE *out = im_open_local( st->im, node->name, "p" );
libvips/mosaicing/global_balance.c:	else if( in->BandFmt == IM_BANDFMT_UCHAR ) {
libvips/mosaicing/global_balance.c:	else if( in->BandFmt == IM_BANDFMT_USHORT ) {
libvips/mosaicing/global_balance.c:			im_clip2fmt( t1, out, in->BandFmt ) )
libvips/mosaicing/global_balance.c:	SymbolTable *st = node->st;
libvips/mosaicing/global_balance.c:	IMAGE *in = node->im;
libvips/mosaicing/global_balance.c:	double fac = node->st->fac[node->index];
libvips/mosaicing/global_balance.c:	IMAGE *out = im_open_local( st->im, node->name, "p" );
libvips/mosaicing/global_balance.c:	else if( in->BandFmt == IM_BANDFMT_UCHAR ) {
libvips/mosaicing/global_balance.c:	else if( in->BandFmt == IM_BANDFMT_USHORT ) {
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/global_balance.c: * selection of balance range fails - our caller can search the output for the
libvips/mosaicing/global_balance.c: * min and max, and rescale to prevent burn-out.
libvips/mosaicing/global_balance.c:		return( -1 );
libvips/mosaicing/mosaicing_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/mosaicing_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/mosaicing_dispatch.c:	"left-right mosaic of ref and sec",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:		return( -1 );
libvips/mosaicing/mosaicing_dispatch.c:	"search for left-right overlap of ref and sec",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:	"first-order left-right mosaic of ref and sec",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:		return( -1 );
libvips/mosaicing/mosaicing_dispatch.c:	"search for top-bottom overlap of ref and sec",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:	"top-bottom mosaic of in1 and in2",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:	"first-order top-bottom mosaic of ref and sec",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:	"left-right merge of in1 and in2",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:	"first-order left-right merge of ref and sec",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:	"top-bottom merge of in1 and in2",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:	"first-order top-bottom merge of in1 and in2",/* Description */
libvips/mosaicing/mosaicing_dispatch.c:	"resample ref so that tie-points match",
libvips/mosaicing/mosaicing_dispatch.c:	"search sec, then resample so that tie-points match",
libvips/mosaicing/im_initialize.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_initialize.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_initialize.c:		int *xref = &points->x_reference[0];
libvips/mosaicing/im_initialize.c:		int *yref = &points->y_reference[0];
libvips/mosaicing/im_initialize.c:		int *xsec = &points->x_secondary[0];
libvips/mosaicing/im_initialize.c:		int *ysec = &points->y_secondary[0];
libvips/mosaicing/im_initialize.c:		double *corr = &points->correlation[0];
libvips/mosaicing/im_initialize.c:		double *dx = &points->dx[0];
libvips/mosaicing/im_initialize.c:		double *dy = &points->dy[0];
libvips/mosaicing/im_initialize.c:		int npt = points->nopoints;
libvips/mosaicing/im_initialize.c:		max_cor = max_cor - 0.04;
libvips/mosaicing/im_initialize.c:				xdelta += xsec[i] - xref[i];
libvips/mosaicing/im_initialize.c:				ydelta += ysec[i] - yref[i];
libvips/mosaicing/im_initialize.c:			dx[i] = (xsec[i] - xref[i]) - xdelta;
libvips/mosaicing/im_initialize.c:			dy[i] = (ysec[i] - yref[i]) - ydelta;
libvips/mosaicing/im_initialize.c:			points->deviation[i] = sqrt( a1*a1 + a2*a2 );
libvips/mosaicing/im_initialize.c:		points->l_scale = 1.0;
libvips/mosaicing/im_initialize.c:		points->l_angle = 0.0;
libvips/mosaicing/im_initialize.c:		points->l_deltax = xdelta;
libvips/mosaicing/im_initialize.c:		points->l_deltay = ydelta;
libvips/mosaicing/match.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/match.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/match.c:		return( -1 );
libvips/mosaicing/match.c:	in->coeff[0] = (double)xs1;
libvips/mosaicing/match.c:	in->coeff[1] = (double)-ys1;
libvips/mosaicing/match.c:	in->coeff[2] = 1.0;
libvips/mosaicing/match.c:	in->coeff[3] = 0.0;
libvips/mosaicing/match.c:	in->coeff[4] = (double)ys1;
libvips/mosaicing/match.c:	in->coeff[5] = (double)xs1;
libvips/mosaicing/match.c:	in->coeff[6] = 0.0;
libvips/mosaicing/match.c:	in->coeff[7] = 1.0;
libvips/mosaicing/match.c:	in->coeff[8] = (double)xs2;
libvips/mosaicing/match.c:	in->coeff[9] = (double)-ys2;
libvips/mosaicing/match.c:	in->coeff[10] = 1.0;
libvips/mosaicing/match.c:	in->coeff[11] = 0.0;
libvips/mosaicing/match.c:	in->coeff[12] = (double)ys2;
libvips/mosaicing/match.c:	in->coeff[13] = (double)xs2;
libvips/mosaicing/match.c:	in->coeff[14] = 0.0;
libvips/mosaicing/match.c:	in->coeff[15] = 1.0;
libvips/mosaicing/match.c:		return( -1 );
libvips/mosaicing/match.c:	*a = out->coeff[0]*xr1 + out->coeff[1]*yr1 + 
libvips/mosaicing/match.c:		out->coeff[2]*xr2 + out->coeff[3]*yr2;
libvips/mosaicing/match.c:	*b = out->coeff[4]*xr1 + out->coeff[5]*yr1 + 
libvips/mosaicing/match.c:		out->coeff[6]*xr2 + out->coeff[7]*yr2;
libvips/mosaicing/match.c:	*dx= out->coeff[8]*xr1 + out->coeff[9]*yr1 + 	
libvips/mosaicing/match.c:		out->coeff[10]*xr2 + out->coeff[11]*yr2;
libvips/mosaicing/match.c:	*dy= out->coeff[12]*xr1 + out->coeff[13]*yr1 + 
libvips/mosaicing/match.c:		out->coeff[14]*xr2 + out->coeff[15]*yr2;
libvips/mosaicing/match.c:		return( -1 );
libvips/mosaicing/match.c:	w = ref->Xsize;
libvips/mosaicing/match.c:	h = ref->Ysize;
libvips/mosaicing/match.c:		a, -b, b, a, dx, dy, x, y, w, h ) )
libvips/mosaicing/match.c:		return( -1 );
libvips/mosaicing/match.c:	/* Search for new tie-points.
libvips/mosaicing/match.c:		return( -1 );
libvips/mosaicing/match.c:		return( -1 );
libvips/mosaicing/match.c:		return( -1 );
libvips/mosaicing/global_balance.h: *	- cut from global_balance.c
libvips/mosaicing/global_balance.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/global_balance.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/global_balance.h:	JoinNode *node;		/* The base node - we are on this list */
libvips/mosaicing/global_balance.h:	/* X-tras for LR/TB. thistrn is what we do to arg2.
libvips/mosaicing/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/mosaicing/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/mosaicing/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/mosaicing/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/mosaicing/Makefile.in:am__mv = mv -f
libvips/mosaicing/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/mosaicing/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/mosaicing/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/mosaicing/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/mosaicing/Makefile.in:	$(LDFLAGS) -o $@
libvips/mosaicing/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/mosaicing/Makefile.in:all: all-am
libvips/mosaicing/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/mosaicing/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/mosaicing/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/mosaicing/Makefile'; \
libvips/mosaicing/Makefile.in:	  $(AUTOMAKE) --gnu libvips/mosaicing/Makefile
libvips/mosaicing/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/mosaicing/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/mosaicing/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/mosaicing/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/mosaicing/Makefile.in:clean-noinstLTLIBRARIES:
libvips/mosaicing/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/mosaicing/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/mosaicing/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/mosaicing/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/mosaicing/Makefile.in:mostlyclean-compile:
libvips/mosaicing/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/mosaicing/Makefile.in:distclean-compile:
libvips/mosaicing/Makefile.in:	-rm -f *.tab.c
libvips/mosaicing/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/mosaicing/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/mosaicing/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/mosaicing/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/mosaicing/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/mosaicing/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/mosaicing/Makefile.in:mostlyclean-libtool:
libvips/mosaicing/Makefile.in:	-rm -f *.lo
libvips/mosaicing/Makefile.in:clean-libtool:
libvips/mosaicing/Makefile.in:	-rm -rf .libs _libs
libvips/mosaicing/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/mosaicing/Makefile.in:	mkid -fID $$unique
libvips/mosaicing/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/mosaicing/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/mosaicing/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/mosaicing/Makefile.in:	  if test $$# -gt 0; then \
libvips/mosaicing/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/mosaicing/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/mosaicing/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/mosaicing/Makefile.in:distclean-tags:
libvips/mosaicing/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/mosaicing/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/mosaicing/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/mosaicing/Makefile.in:			   sort -u` ;; \
libvips/mosaicing/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/mosaicing/Makefile.in:	  if test -d $$d/$$file; then \
libvips/mosaicing/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/mosaicing/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/mosaicing/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/mosaicing/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/mosaicing/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/mosaicing/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/mosaicing/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/mosaicing/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/mosaicing/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/mosaicing/Makefile.in:check-am: all-am
libvips/mosaicing/Makefile.in:check: check-am
libvips/mosaicing/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/mosaicing/Makefile.in:install: install-am
libvips/mosaicing/Makefile.in:install-exec: install-exec-am
libvips/mosaicing/Makefile.in:install-data: install-data-am
libvips/mosaicing/Makefile.in:uninstall: uninstall-am
libvips/mosaicing/Makefile.in:install-am: all-am
libvips/mosaicing/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/mosaicing/Makefile.in:installcheck: installcheck-am
libvips/mosaicing/Makefile.in:install-strip:
libvips/mosaicing/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/mosaicing/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/mosaicing/Makefile.in:mostlyclean-generic:
libvips/mosaicing/Makefile.in:clean-generic:
libvips/mosaicing/Makefile.in:distclean-generic:
libvips/mosaicing/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/mosaicing/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/mosaicing/Makefile.in:maintainer-clean-generic:
libvips/mosaicing/Makefile.in:clean: clean-am
libvips/mosaicing/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/mosaicing/Makefile.in:	mostlyclean-am
libvips/mosaicing/Makefile.in:distclean: distclean-am
libvips/mosaicing/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/mosaicing/Makefile.in:	-rm -f Makefile
libvips/mosaicing/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/mosaicing/Makefile.in:	distclean-tags
libvips/mosaicing/Makefile.in:dvi: dvi-am
libvips/mosaicing/Makefile.in:dvi-am:
libvips/mosaicing/Makefile.in:html: html-am
libvips/mosaicing/Makefile.in:html-am:
libvips/mosaicing/Makefile.in:info: info-am
libvips/mosaicing/Makefile.in:info-am:
libvips/mosaicing/Makefile.in:install-data-am:
libvips/mosaicing/Makefile.in:install-dvi: install-dvi-am
libvips/mosaicing/Makefile.in:install-dvi-am:
libvips/mosaicing/Makefile.in:install-exec-am:
libvips/mosaicing/Makefile.in:install-html: install-html-am
libvips/mosaicing/Makefile.in:install-html-am:
libvips/mosaicing/Makefile.in:install-info: install-info-am
libvips/mosaicing/Makefile.in:install-info-am:
libvips/mosaicing/Makefile.in:install-man:
libvips/mosaicing/Makefile.in:install-pdf: install-pdf-am
libvips/mosaicing/Makefile.in:install-pdf-am:
libvips/mosaicing/Makefile.in:install-ps: install-ps-am
libvips/mosaicing/Makefile.in:install-ps-am:
libvips/mosaicing/Makefile.in:installcheck-am:
libvips/mosaicing/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/mosaicing/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/mosaicing/Makefile.in:	-rm -f Makefile
libvips/mosaicing/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/mosaicing/Makefile.in:mostlyclean: mostlyclean-am
libvips/mosaicing/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/mosaicing/Makefile.in:	mostlyclean-libtool
libvips/mosaicing/Makefile.in:pdf: pdf-am
libvips/mosaicing/Makefile.in:pdf-am:
libvips/mosaicing/Makefile.in:ps: ps-am
libvips/mosaicing/Makefile.in:ps-am:
libvips/mosaicing/Makefile.in:uninstall-am:
libvips/mosaicing/Makefile.in:.MAKE: install-am install-strip
libvips/mosaicing/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/mosaicing/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/mosaicing/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/mosaicing/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/mosaicing/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/mosaicing/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/mosaicing/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/mosaicing/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/mosaicing/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/mosaicing/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/mosaicing/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/mosaicing/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/mosaicing/merge.h:    Copyright (C) 1991-2003 The National Gallery
libvips/mosaicing/merge.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/merge.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/merge.h:	 * that the output image is always positioned at (0,0) - ie. all these
libvips/mosaicing/merge.h:/* Keep per-thread state here.
libvips/mosaicing/im_chkpair.c: * @(#) The variable bandno should be between 1 and ref->Bands
libvips/mosaicing/im_chkpair.c: * @(#) Returns 0 on sucess  and -1 on error.
libvips/mosaicing/im_chkpair.c: *	- allows IM_CODING_LABQ coding
libvips/mosaicing/im_chkpair.c: *	- now calls im_incheck()
libvips/mosaicing/im_chkpair.c: *	- rewritten
libvips/mosaicing/im_chkpair.c: *	- now uses im_spcor()
libvips/mosaicing/im_chkpair.c: *	- order of args changed to help C++ API
libvips/mosaicing/im_chkpair.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_chkpair.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_chkpair.c:		return( -1 );
libvips/mosaicing/im_chkpair.c:	refr.width = ref->Xsize;
libvips/mosaicing/im_chkpair.c:	refr.height = ref->Ysize;
libvips/mosaicing/im_chkpair.c:	winr.left = xref - hwindowsize;
libvips/mosaicing/im_chkpair.c:	winr.top = yref - hwindowsize;
libvips/mosaicing/im_chkpair.c:	secr.width = sec->Xsize;
libvips/mosaicing/im_chkpair.c:	secr.height = sec->Ysize;
libvips/mosaicing/im_chkpair.c:	srhr.left = xsec - hsearchsize;
libvips/mosaicing/im_chkpair.c:	srhr.top = ysec - hsearchsize;
libvips/mosaicing/im_chkpair.c:		return( -1 );
libvips/mosaicing/im_chkpair.c:	if( t1->Bands != 1 ) {
libvips/mosaicing/im_chkpair.c:			return( -1 );
libvips/mosaicing/im_chkpair.c:	if( t2->Bands != 1 ) {
libvips/mosaicing/im_chkpair.c:			return( -1 );
libvips/mosaicing/im_chkpair.c:		return( -1 );
libvips/mosaicing/im_chkpair.c:		return( -1 );
libvips/mosaicing/im_chkpair.c:	const int hcor = points->halfcorsize;
libvips/mosaicing/im_chkpair.c:	const int harea = points->halfareasize;
libvips/mosaicing/im_chkpair.c:		return( -1 );
libvips/mosaicing/im_chkpair.c:	if( ref->Bands != sec->Bands || ref->BandFmt != sec->BandFmt || 
libvips/mosaicing/im_chkpair.c:		ref->Coding != sec->Coding ) {
libvips/mosaicing/im_chkpair.c:		return( -1 ); 
libvips/mosaicing/im_chkpair.c:	if( ref->Bands != 1 || ref->BandFmt != IM_BANDFMT_UCHAR ) { 
libvips/mosaicing/im_chkpair.c:		return( -1 );
libvips/mosaicing/im_chkpair.c:	for( i = 0; i < points->nopoints; i++ ) {
libvips/mosaicing/im_chkpair.c:			points->x_reference[i], points->y_reference[i],
libvips/mosaicing/im_chkpair.c:			points->x_reference[i], points->y_reference[i],
libvips/mosaicing/im_chkpair.c:			return( -1 );
libvips/mosaicing/im_chkpair.c:		points->x_secondary[i] = x;
libvips/mosaicing/im_chkpair.c:		points->y_secondary[i] = y;
libvips/mosaicing/im_chkpair.c:		points->correlation[i] = correlation;
libvips/mosaicing/im_chkpair.c:		points->dx[i] = 
libvips/mosaicing/im_chkpair.c:			points->x_secondary[i] - points->x_reference[i];
libvips/mosaicing/im_chkpair.c:		points->dy[i] = 
libvips/mosaicing/im_chkpair.c:			points->y_secondary[i] - points->y_reference[i];
libvips/mosaicing/im_lrmerge.c:/* Merge two images left-right. dx, dy is the offset needed to get from sec 
libvips/mosaicing/im_lrmerge.c: * Returns 0 on success and -1 on error
libvips/mosaicing/im_lrmerge.c: * 	- check for difference bug fixed
libvips/mosaicing/im_lrmerge.c: *	- geometry calculations improved and simplified
libvips/mosaicing/im_lrmerge.c: *	- small speedups
libvips/mosaicing/im_lrmerge.c: *	- ANSIfied
libvips/mosaicing/im_lrmerge.c: *	- memory leaks fixed, ready for partial v2
libvips/mosaicing/im_lrmerge.c: *	- now does IM_CODING_LABQ too
libvips/mosaicing/im_lrmerge.c: *	- now propogates both input histories
libvips/mosaicing/im_lrmerge.c: *	- adds magic lines for global mosaic optimisation
libvips/mosaicing/im_lrmerge.c: *	- Modified to use partials on all IO
libvips/mosaicing/im_lrmerge.c: *	- Modified to work with different types of images.
libvips/mosaicing/im_lrmerge.c: *	- tidied up a little
libvips/mosaicing/im_lrmerge.c: *	- added to VIPS!
libvips/mosaicing/im_lrmerge.c: *	- split into two parts: im_lrmerge() and im__lrmerge()
libvips/mosaicing/im_lrmerge.c: *	- latter called by im_lrmosaic()
libvips/mosaicing/im_lrmerge.c: *	- just the same as public im_lrmerge(), but adds no history
libvips/mosaicing/im_lrmerge.c: *	- necessary for im_global_balance()
libvips/mosaicing/im_lrmerge.c: *	- small bugs fixed
libvips/mosaicing/im_lrmerge.c: *	- better checks that parameters are sensible
libvips/mosaicing/im_lrmerge.c: *	- Kirk spotted what a load of rubbish Ahmed's code is
libvips/mosaicing/im_lrmerge.c: *	- rewritten - many, many bugs fixed
libvips/mosaicing/im_lrmerge.c: *	- now outputs bounding area of input images, rather than clipping
libvips/mosaicing/im_lrmerge.c: *	- ignores 0 pixels in blend
libvips/mosaicing/im_lrmerge.c: *	- small tidies
libvips/mosaicing/im_lrmerge.c: *	- new blend, caching
libvips/mosaicing/im_lrmerge.c: *	- old blend back, much simpler
libvips/mosaicing/im_lrmerge.c: *	- speed this up at some point if you think of an easy way to do it
libvips/mosaicing/im_lrmerge.c: *	- IM_CODING_LABQ blend now works, was bug in im_wrapone()
libvips/mosaicing/im_lrmerge.c: *	- small tidies
libvips/mosaicing/im_lrmerge.c: *	- merge LUTs now shared between all running mergers
libvips/mosaicing/im_lrmerge.c: *	- frees memory explicitly in im__stop_merge, for much better memory
libvips/mosaicing/im_lrmerge.c: *	- im_demand_hint() call added
libvips/mosaicing/im_lrmerge.c: *	- now works for any dx/dy by calling im_insert() for bizarre cases
libvips/mosaicing/im_lrmerge.c: *	- ooops, blend lut was wrong! wonder how long that's been broken,
libvips/mosaicing/im_lrmerge.c: *	- added tunable max blend width
libvips/mosaicing/im_lrmerge.c: *	- switched to integer arithmetic for integer blends
libvips/mosaicing/im_lrmerge.c: *	- more sophisticated transparency handling
libvips/mosaicing/im_lrmerge.c: *	- tiny blend speed up
libvips/mosaicing/im_lrmerge.c: * 	- move fl cache to main state for better sharing
libvips/mosaicing/im_lrmerge.c: *	- records Xoffset/Yoffset
libvips/mosaicing/im_lrmerge.c: *	- now requires all bands == 0 for transparency (used to just check
libvips/mosaicing/im_lrmerge.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_lrmerge.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_lrmerge.c:		return( -1 ); 
libvips/mosaicing/im_lrmerge.c:		double a = IM_PI * x / (BLEND_SIZE - 1.0);
libvips/mosaicing/im_lrmerge.c:		im__coef2[x] = 1.0 - im__coef1[x];
libvips/mosaicing/im_lrmerge.c:/* Return the position of the first non-zero pel from the left.
libvips/mosaicing/im_lrmerge.c:	IMAGE *im = ir->im;
libvips/mosaicing/im_lrmerge.c:	int ne = w * im->Bands;
libvips/mosaicing/im_lrmerge.c:	if( vips_bandfmt_iscomplex( im->BandFmt ) )
libvips/mosaicing/im_lrmerge.c:/* Search for the first non-zero band element from the left edge of the image.
libvips/mosaicing/im_lrmerge.c:	switch( im->BandFmt ) {
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	/* i is first non-zero band element, we want first non-zero pixel.
libvips/mosaicing/im_lrmerge.c:	*pos = x + i / im->Bands;
libvips/mosaicing/im_lrmerge.c:/* Return the position of the first non-zero pel from the right.
libvips/mosaicing/im_lrmerge.c:	IMAGE *im = ir->im;
libvips/mosaicing/im_lrmerge.c:	int ne = w * im->Bands;
libvips/mosaicing/im_lrmerge.c:	if( vips_bandfmt_iscomplex( im->BandFmt ) )
libvips/mosaicing/im_lrmerge.c:/* Search for the first non-zero band element from the right.
libvips/mosaicing/im_lrmerge.c:	for( i = ne - 1; i >= 0; i-- )\
libvips/mosaicing/im_lrmerge.c:	switch( im->BandFmt ) {
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	/* i is first non-zero band element, we want first non-zero pixel.
libvips/mosaicing/im_lrmerge.c:	*pos = x + i / im->Bands;
libvips/mosaicing/im_lrmerge.c:	REGION *rir = inf->rir;
libvips/mosaicing/im_lrmerge.c:	REGION *sir = inf->sir;
libvips/mosaicing/im_lrmerge.c:	g_mutex_lock( ovlap->fl_lock );
libvips/mosaicing/im_lrmerge.c:	for( y = oreg->top; y < IM_RECT_BOTTOM( oreg ); y++ ) {
libvips/mosaicing/im_lrmerge.c:		const int j = y - ovlap->overlap.top;
libvips/mosaicing/im_lrmerge.c:		const int first = ovlap->first[j];
libvips/mosaicing/im_lrmerge.c:		g_mutex_unlock( ovlap->fl_lock );
libvips/mosaicing/im_lrmerge.c:	/* Entire width of overlap in ref for scan-lines we want.
libvips/mosaicing/im_lrmerge.c:	rr.left = ovlap->overlap.left;
libvips/mosaicing/im_lrmerge.c:	rr.top = oreg->top;
libvips/mosaicing/im_lrmerge.c:	rr.width = ovlap->overlap.width;
libvips/mosaicing/im_lrmerge.c:	rr.height = oreg->height;
libvips/mosaicing/im_lrmerge.c:	rr.left -= ovlap->rarea.left;
libvips/mosaicing/im_lrmerge.c:	rr.top -= ovlap->rarea.top;
libvips/mosaicing/im_lrmerge.c:	/* Entire width of overlap in sec for scan-lines we want.
libvips/mosaicing/im_lrmerge.c:	sr.left = ovlap->overlap.left;
libvips/mosaicing/im_lrmerge.c:	sr.top = oreg->top;
libvips/mosaicing/im_lrmerge.c:	sr.width = ovlap->overlap.width;
libvips/mosaicing/im_lrmerge.c:	sr.height = oreg->height;
libvips/mosaicing/im_lrmerge.c:	sr.left -= ovlap->sarea.left;
libvips/mosaicing/im_lrmerge.c:	sr.top -= ovlap->sarea.top;
libvips/mosaicing/im_lrmerge.c:		g_mutex_unlock( ovlap->fl_lock );
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	for( y = oreg->top, yr = rr.top, ys = sr.top; 
libvips/mosaicing/im_lrmerge.c:		const int j = y - ovlap->overlap.top;
libvips/mosaicing/im_lrmerge.c:		int *first = &ovlap->first[j];
libvips/mosaicing/im_lrmerge.c:		int *last = &ovlap->last[j];
libvips/mosaicing/im_lrmerge.c:			/* Search for start/end of overlap on this scan-line.
libvips/mosaicing/im_lrmerge.c:				g_mutex_unlock( ovlap->fl_lock );
libvips/mosaicing/im_lrmerge.c:				return( -1 );
libvips/mosaicing/im_lrmerge.c:			*first += ovlap->sarea.left;
libvips/mosaicing/im_lrmerge.c:			*last += ovlap->rarea.left;
libvips/mosaicing/im_lrmerge.c:			if( ovlap->mwidth >= 0 && 
libvips/mosaicing/im_lrmerge.c:				*last - *first > ovlap->mwidth ) {
libvips/mosaicing/im_lrmerge.c:				int shrinkby = (*last - *first) - ovlap->mwidth;
libvips/mosaicing/im_lrmerge.c:				*last -= shrinkby / 2;
libvips/mosaicing/im_lrmerge.c:	g_mutex_unlock( ovlap->fl_lock );
libvips/mosaicing/im_lrmerge.c:	const int left = IM_CLIP( 0, first - oreg->left, oreg->width ); \
libvips/mosaicing/im_lrmerge.c:	const int right = IM_CLIP( left, last - oreg->left, oreg->width ); \
libvips/mosaicing/im_lrmerge.c:			int inx = ((x + oreg->left - first) <<  \
libvips/mosaicing/im_lrmerge.c:	for( x = right; x < oreg->width; x++ ) { \
libvips/mosaicing/im_lrmerge.c:	const int left = IM_CLIP( 0, first - oreg->left, oreg->width ); \
libvips/mosaicing/im_lrmerge.c:	const int right = IM_CLIP( left, last - oreg->left, oreg->width ); \
libvips/mosaicing/im_lrmerge.c:			int inx = ((x + oreg->left - first) <<  \
libvips/mosaicing/im_lrmerge.c:	for( x = right; x < oreg->width; x++ ) { \
libvips/mosaicing/im_lrmerge.c:/* Left-right blend function for non-labpack images.
libvips/mosaicing/im_lrmerge.c:	REGION *rir = inf->rir;
libvips/mosaicing/im_lrmerge.c:	REGION *sir = inf->sir;
libvips/mosaicing/im_lrmerge.c:	IMAGE *im = or->im;
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	prr.left -= ovlap->rarea.left;
libvips/mosaicing/im_lrmerge.c:	prr.top -= ovlap->rarea.top;
libvips/mosaicing/im_lrmerge.c:	psr.left -= ovlap->sarea.left;
libvips/mosaicing/im_lrmerge.c:	psr.top -= ovlap->sarea.top;
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	for( y = oreg->top, yr = prr.top, ys = psr.top; 
libvips/mosaicing/im_lrmerge.c:		PEL *q = (PEL *) IM_REGION_ADDR( or, oreg->left, y );
libvips/mosaicing/im_lrmerge.c:		const int j = y - ovlap->overlap.top;
libvips/mosaicing/im_lrmerge.c:		const int first = ovlap->first[j];
libvips/mosaicing/im_lrmerge.c:		const int last = ovlap->last[j];
libvips/mosaicing/im_lrmerge.c:		const int bwidth = last - first;
libvips/mosaicing/im_lrmerge.c:		switch( im->BandFmt ) {
libvips/mosaicing/im_lrmerge.c:			iblend( unsigned char, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_lrmerge.c:			iblend( signed char, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_lrmerge.c:			iblend( unsigned short, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_lrmerge.c:			iblend( signed short, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_lrmerge.c:			iblend( unsigned int, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_lrmerge.c:			iblend( signed int, im->Bands, pr, ps, q );  break; 
libvips/mosaicing/im_lrmerge.c:			fblend( float, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_lrmerge.c:			fblend( double, im->Bands, pr, ps, q ); break; 
libvips/mosaicing/im_lrmerge.c:			fblend( float, im->Bands*2, pr, ps, q ); break; 
libvips/mosaicing/im_lrmerge.c:			fblend( double, im->Bands*2, pr, ps, q ); break;
libvips/mosaicing/im_lrmerge.c:			return( -1 );
libvips/mosaicing/im_lrmerge.c:/* Left-right blend function for IM_CODING_LABQ images.
libvips/mosaicing/im_lrmerge.c:	REGION *rir = inf->rir;
libvips/mosaicing/im_lrmerge.c:	REGION *sir = inf->sir;
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	prr.left -= ovlap->rarea.left;
libvips/mosaicing/im_lrmerge.c:	prr.top -= ovlap->rarea.top;
libvips/mosaicing/im_lrmerge.c:	psr.left -= ovlap->sarea.left;
libvips/mosaicing/im_lrmerge.c:	psr.top -= ovlap->sarea.top;
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	for( y = oreg->top, yr = prr.top, ys = psr.top; 
libvips/mosaicing/im_lrmerge.c:		PEL *q = (PEL *) IM_REGION_ADDR( or, oreg->left, y );
libvips/mosaicing/im_lrmerge.c:		const int j = y - ovlap->overlap.top;
libvips/mosaicing/im_lrmerge.c:		const int first = ovlap->first[j];
libvips/mosaicing/im_lrmerge.c:		const int last = ovlap->last[j];
libvips/mosaicing/im_lrmerge.c:		const int bwidth = last - first;
libvips/mosaicing/im_lrmerge.c:		float *fq = inf->merge;
libvips/mosaicing/im_lrmerge.c:		float *r = inf->from1;
libvips/mosaicing/im_lrmerge.c:		float *s = inf->from2;
libvips/mosaicing/im_lrmerge.c:		imb_LabQ2Lab( pr, r, oreg->width );
libvips/mosaicing/im_lrmerge.c:		imb_LabQ2Lab( ps, s, oreg->width );
libvips/mosaicing/im_lrmerge.c:		/* Re-pack to output buffer.
libvips/mosaicing/im_lrmerge.c:		imb_Lab2LabQ( inf->merge, q, oreg->width );
libvips/mosaicing/im_lrmerge.c:/* Build basic per-call state and do some geometry calculations. Shared with
libvips/mosaicing/im_lrmerge.c:	if( mwidth < -1 ) {
libvips/mosaicing/im_lrmerge.c:			"%s", _( "mwidth must be -1 or >= 0" ) );
libvips/mosaicing/im_lrmerge.c:	ovlap->ref = ref;
libvips/mosaicing/im_lrmerge.c:	ovlap->sec = sec;
libvips/mosaicing/im_lrmerge.c:	ovlap->out = out;
libvips/mosaicing/im_lrmerge.c:	ovlap->dx = dx;
libvips/mosaicing/im_lrmerge.c:	ovlap->dy = dy;
libvips/mosaicing/im_lrmerge.c:	ovlap->mwidth = mwidth;
libvips/mosaicing/im_lrmerge.c:   	ovlap->rarea.left = 0;
libvips/mosaicing/im_lrmerge.c:   	ovlap->rarea.top = 0;
libvips/mosaicing/im_lrmerge.c:   	ovlap->rarea.width = ref->Xsize;
libvips/mosaicing/im_lrmerge.c:   	ovlap->rarea.height = ref->Ysize;
libvips/mosaicing/im_lrmerge.c:   	ovlap->sarea.left = -dx;
libvips/mosaicing/im_lrmerge.c:   	ovlap->sarea.top = -dy;
libvips/mosaicing/im_lrmerge.c:   	ovlap->sarea.width = sec->Xsize;
libvips/mosaicing/im_lrmerge.c:   	ovlap->sarea.height = sec->Ysize;
libvips/mosaicing/im_lrmerge.c:   	im_rect_intersectrect( &ovlap->rarea, &ovlap->sarea, &ovlap->overlap );
libvips/mosaicing/im_lrmerge.c:	if( im_rect_isempty( &ovlap->overlap ) ) {
libvips/mosaicing/im_lrmerge.c:	im_rect_unionrect( &ovlap->rarea, &ovlap->sarea, &ovlap->oarea );
libvips/mosaicing/im_lrmerge.c:	ovlap->rarea.left -= ovlap->oarea.left;
libvips/mosaicing/im_lrmerge.c:	ovlap->rarea.top -= ovlap->oarea.top;
libvips/mosaicing/im_lrmerge.c:	ovlap->sarea.left -= ovlap->oarea.left;
libvips/mosaicing/im_lrmerge.c:	ovlap->sarea.top -= ovlap->oarea.top;
libvips/mosaicing/im_lrmerge.c:	ovlap->overlap.left -= ovlap->oarea.left;
libvips/mosaicing/im_lrmerge.c:	ovlap->overlap.top -= ovlap->oarea.top;
libvips/mosaicing/im_lrmerge.c:	ovlap->oarea.left = 0;
libvips/mosaicing/im_lrmerge.c:	ovlap->oarea.top = 0;
libvips/mosaicing/im_lrmerge.c:	ovlap->flsize = IM_MAX( ovlap->overlap.width, ovlap->overlap.height );
libvips/mosaicing/im_lrmerge.c:	ovlap->first = IM_ARRAY( out, ovlap->flsize, int );
libvips/mosaicing/im_lrmerge.c:	ovlap->last = IM_ARRAY( out, ovlap->flsize, int );
libvips/mosaicing/im_lrmerge.c:	if( !ovlap->first || !ovlap->last ) 
libvips/mosaicing/im_lrmerge.c:	for( x = 0; x < ovlap->flsize; x++ )
libvips/mosaicing/im_lrmerge.c:		ovlap->first[x] = -1;
libvips/mosaicing/im_lrmerge.c:	ovlap->fl_lock = g_mutex_new();
libvips/mosaicing/im_lrmerge.c:		(im_callback_fn) lock_free, ovlap->fl_lock, NULL ) ) {
libvips/mosaicing/im_lrmerge.c:		g_mutex_free( ovlap->fl_lock );
libvips/mosaicing/im_lrmerge.c:/* Build per-call state.
libvips/mosaicing/im_lrmerge.c:	switch( ref->Coding ) {
libvips/mosaicing/im_lrmerge.c:		ovlap->blend = lr_blend_labpack;
libvips/mosaicing/im_lrmerge.c:		ovlap->blend = lr_blend;
libvips/mosaicing/im_lrmerge.c:	ovlap->rpart = ovlap->rarea;
libvips/mosaicing/im_lrmerge.c:	ovlap->spart = ovlap->sarea;
libvips/mosaicing/im_lrmerge.c:	ovlap->rpart.width -= ovlap->overlap.width;
libvips/mosaicing/im_lrmerge.c:	ovlap->spart.left += ovlap->overlap.width;
libvips/mosaicing/im_lrmerge.c:	ovlap->spart.width -= ovlap->overlap.width;
libvips/mosaicing/im_lrmerge.c:	if( IM_RECT_RIGHT( &ovlap->rarea ) > IM_RECT_RIGHT( &ovlap->sarea ) ||
libvips/mosaicing/im_lrmerge.c:		ovlap->rarea.left > ovlap->sarea.left ) {
libvips/mosaicing/im_lrmerge.c:	ovlap->blsize = ovlap->overlap.width;
libvips/mosaicing/im_lrmerge.c: * area is the position that ir->im occupies in the output image.
libvips/mosaicing/im_lrmerge.c:	Rect r = or->valid;
libvips/mosaicing/im_lrmerge.c:	r.left -= area->left;
libvips/mosaicing/im_lrmerge.c:	r.top -= area->top;
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	if( im_region_region( or, ir, &or->valid, r.left, r.top ) )
libvips/mosaicing/im_lrmerge.c:		 return( -1 );
libvips/mosaicing/im_lrmerge.c: * above, but just do a sub-area of the output, and make sure we copy rather 
libvips/mosaicing/im_lrmerge.c: * than just pointer-fiddling. reg is the sub-area of or->valid we should do.
libvips/mosaicing/im_lrmerge.c:	r.left -= area->left;
libvips/mosaicing/im_lrmerge.c:	r.top -= area->top;
libvips/mosaicing/im_lrmerge.c:	if( im_prepare_to( ir, or, &r, reg->left, reg->top ) )
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	Rect *r = &or->valid;
libvips/mosaicing/im_lrmerge.c:	im_rect_intersectrect( r, &ovlap->rpart, &rreg );
libvips/mosaicing/im_lrmerge.c:	im_rect_intersectrect( r, &ovlap->spart, &sreg );
libvips/mosaicing/im_lrmerge.c:		if( im__attach_input( or, inf->rir, &ovlap->rarea ) )
libvips/mosaicing/im_lrmerge.c:			return( -1 );
libvips/mosaicing/im_lrmerge.c:		if( im__attach_input( or, inf->sir, &ovlap->sarea ) )
libvips/mosaicing/im_lrmerge.c:			return( -1 );
libvips/mosaicing/im_lrmerge.c:		/* Difficult case - do in three stages: black out whole area, 
libvips/mosaicing/im_lrmerge.c:		im_rect_intersectrect( r, &ovlap->rarea, &rreg );
libvips/mosaicing/im_lrmerge.c:		im_rect_intersectrect( r, &ovlap->sarea, &sreg );
libvips/mosaicing/im_lrmerge.c:		im_rect_intersectrect( r, &ovlap->overlap, &oreg );
libvips/mosaicing/im_lrmerge.c:				inf->rir, &ovlap->rarea, &rreg ) )
libvips/mosaicing/im_lrmerge.c:				return( -1 );
libvips/mosaicing/im_lrmerge.c:				inf->sir, &ovlap->sarea, &sreg ) )
libvips/mosaicing/im_lrmerge.c:				return( -1 );
libvips/mosaicing/im_lrmerge.c:		/* Nasty: inf->rir and inf->sir now point to the same bit of
libvips/mosaicing/im_lrmerge.c:		inf->rir->valid.width = inf->sir->valid.width = 0;
libvips/mosaicing/im_lrmerge.c:			if( ovlap->blend( or, inf, ovlap, &oreg ) )
libvips/mosaicing/im_lrmerge.c:				return( -1 );
libvips/mosaicing/im_lrmerge.c:	if( inf->rir ) {
libvips/mosaicing/im_lrmerge.c:		im_region_free( inf->rir );
libvips/mosaicing/im_lrmerge.c:		inf->rir = NULL;
libvips/mosaicing/im_lrmerge.c:	if( inf->sir ) {
libvips/mosaicing/im_lrmerge.c:		im_region_free( inf->sir );
libvips/mosaicing/im_lrmerge.c:		inf->sir = NULL;
libvips/mosaicing/im_lrmerge.c:	if( inf->from1 ) {
libvips/mosaicing/im_lrmerge.c:		im_free( inf->from1 );
libvips/mosaicing/im_lrmerge.c:		inf->from1 = NULL;
libvips/mosaicing/im_lrmerge.c:	if( inf->from2 ) {
libvips/mosaicing/im_lrmerge.c:		im_free( inf->from2 );
libvips/mosaicing/im_lrmerge.c:		inf->from2 = NULL;
libvips/mosaicing/im_lrmerge.c:	if( inf->merge ) {
libvips/mosaicing/im_lrmerge.c:		im_free( inf->merge );
libvips/mosaicing/im_lrmerge.c:		inf->merge = NULL;
libvips/mosaicing/im_lrmerge.c:	inf->rir = NULL;
libvips/mosaicing/im_lrmerge.c:	inf->sir = NULL;
libvips/mosaicing/im_lrmerge.c:	inf->from1 = NULL;
libvips/mosaicing/im_lrmerge.c:	inf->from2 = NULL;
libvips/mosaicing/im_lrmerge.c:	inf->merge = NULL;
libvips/mosaicing/im_lrmerge.c:	if( out->Coding == IM_CODING_LABQ ) {
libvips/mosaicing/im_lrmerge.c:		inf->from1 = IM_ARRAY( NULL, ovlap->blsize * 3, float );
libvips/mosaicing/im_lrmerge.c:		inf->from2 = IM_ARRAY( NULL, ovlap->blsize * 3, float );
libvips/mosaicing/im_lrmerge.c:		inf->merge = IM_ARRAY( NULL, ovlap->blsize * 3, float );
libvips/mosaicing/im_lrmerge.c:		if( !inf->from1 || !inf->from2 || !inf->merge ) {
libvips/mosaicing/im_lrmerge.c:	inf->rir = im_region_create( ovlap->ref );
libvips/mosaicing/im_lrmerge.c:	inf->sir = im_region_create( ovlap->sec );
libvips/mosaicing/im_lrmerge.c:	if( !inf->rir || !inf->sir ) {
libvips/mosaicing/im_lrmerge.c:		ref->filename, sec->filename, out->filename, 
libvips/mosaicing/im_lrmerge.c:	printf( "ref is %d x %d pixels\n", ref->Xsize, ref->Ysize );
libvips/mosaicing/im_lrmerge.c:	printf( "sec is %d x %d pixels\n", sec->Xsize, sec->Ysize );
libvips/mosaicing/im_lrmerge.c:	if( ref->Bands != sec->Bands || 
libvips/mosaicing/im_lrmerge.c:		ref->BandFmt != sec->BandFmt ||
libvips/mosaicing/im_lrmerge.c:		ref->Coding != sec->Coding ) {
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	if( ref->Coding != IM_CODING_NONE && ref->Coding != IM_CODING_LABQ ) {
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	if( dx > 0 || dx < 1 - ref->Xsize ) {
libvips/mosaicing/im_lrmerge.c:  		if( im_insert( ref, sec, out, -dx, -dy ) )
libvips/mosaicing/im_lrmerge.c:			return( -1 );
libvips/mosaicing/im_lrmerge.c:		out->Xoffset = -dx;
libvips/mosaicing/im_lrmerge.c:		out->Yoffset = -dy;
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:	out->Xsize = ovlap->oarea.width;
libvips/mosaicing/im_lrmerge.c:	out->Ysize = ovlap->oarea.height;
libvips/mosaicing/im_lrmerge.c:	out->Xoffset = ovlap->sarea.left;
libvips/mosaicing/im_lrmerge.c:	out->Yoffset = ovlap->sarea.top;
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_lrmerge.c:		ref->filename, sec->filename, out->filename, 
libvips/mosaicing/im_lrmerge.c:		-dx, -dy, mwidth ) )
libvips/mosaicing/im_lrmerge.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c: * @(#)  Returns 0 on success and -1 on error
libvips/mosaicing/im_tbmosaic.c: *	- adapted for new balance ideas
libvips/mosaicing/im_tbmosaic.c: *	- more bug-fixes
libvips/mosaicing/im_tbmosaic.c: *	- frees memory used by analysis phase as soon as possible
libvips/mosaicing/im_tbmosaic.c: *	- means large mosaics use significantly less peak memory
libvips/mosaicing/im_tbmosaic.c: *	- now calls im_tbmerge() rather than im__tbmerge()
libvips/mosaicing/im_tbmosaic.c: * 	- im__find_tboverlap() returns 1st order params too
libvips/mosaicing/im_tbmosaic.c: *	- added tunable max blend width
libvips/mosaicing/im_tbmosaic.c: *	- im_scale() makes it work for any image type
libvips/mosaicing/im_tbmosaic.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_tbmosaic.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_tbmosaic.c:	if( ref_in->Bands != sec_in->Bands || 
libvips/mosaicing/im_tbmosaic.c:		ref_in->BandFmt != sec_in->BandFmt ||
libvips/mosaicing/im_tbmosaic.c:		ref_in->Coding != sec_in->Coding ) {
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:	top.width = ref_in->Xsize;
libvips/mosaicing/im_tbmosaic.c:	top.height = ref_in->Ysize;
libvips/mosaicing/im_tbmosaic.c:	bottom.left = xref - xsec;
libvips/mosaicing/im_tbmosaic.c:	bottom.top = yref - ysec;
libvips/mosaicing/im_tbmosaic.c:	bottom.width = sec_in->Xsize;
libvips/mosaicing/im_tbmosaic.c:	bottom.height = sec_in->Ysize;
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:	if( ref_in->Coding == IM_CODING_LABQ ) {
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:			overlap.left - bottom.left, overlap.top - bottom.top, 
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:	else if( ref_in->Coding == IM_CODING_NONE ) {
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:			overlap.left - bottom.left, overlap.top - bottom.top, 
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:			return( -1 );
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:	p_points->reference = ref_in->filename;
libvips/mosaicing/im_tbmosaic.c:	p_points->secondary = sec_in->filename;
libvips/mosaicing/im_tbmosaic.c:	p_points->nopoints = IM_MAXPOINTS;
libvips/mosaicing/im_tbmosaic.c:	p_points->deltax = 0;
libvips/mosaicing/im_tbmosaic.c:	p_points->deltay = 0;
libvips/mosaicing/im_tbmosaic.c:	p_points->halfcorsize = halfcorrelation; 	
libvips/mosaicing/im_tbmosaic.c:	p_points->halfareasize = halfarea;
libvips/mosaicing/im_tbmosaic.c:		p_points->x_reference[i] = 0;
libvips/mosaicing/im_tbmosaic.c:		p_points->y_reference[i] = 0;
libvips/mosaicing/im_tbmosaic.c:		p_points->x_secondary[i] = 0;
libvips/mosaicing/im_tbmosaic.c:		p_points->y_secondary[i] = 0;
libvips/mosaicing/im_tbmosaic.c:		p_points->contrast[i] = 0;
libvips/mosaicing/im_tbmosaic.c:		p_points->correlation[i] = 0.0;
libvips/mosaicing/im_tbmosaic.c:		p_points->dx[i] = 0.0;
libvips/mosaicing/im_tbmosaic.c:		p_points->dy[i] = 0.0;
libvips/mosaicing/im_tbmosaic.c:		p_points->deviation[i] = 0.0;
libvips/mosaicing/im_tbmosaic.c:	/* Search ref for possible tie-points. Sets: p_points->contrast, 
libvips/mosaicing/im_tbmosaic.c:	 * p_points->x,y_reference.
libvips/mosaicing/im_tbmosaic.c:		return( -1 ); 
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:	*dx0 = -bottom.left + dx;
libvips/mosaicing/im_tbmosaic.c:	*dy0 = -bottom.top + dy;
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:		return( -1 );
libvips/mosaicing/im_tbmosaic.c:	/* Merge top-bottom.
libvips/mosaicing/im_tbmosaic.c:		return( -1 ); 
libvips/mosaicing/im_avgdxdy.c:/* @(#)  Function which averages the difference x_secondary[] - x_reference[]
libvips/mosaicing/im_avgdxdy.c: * @(#) and y_secondary[] - y_reference[] of the structure points;
libvips/mosaicing/im_avgdxdy.c: * @(#) Returns 0 on sucess  and -1 on error.
libvips/mosaicing/im_avgdxdy.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_avgdxdy.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_avgdxdy.c:	if( points->nopoints == 0 ) {
libvips/mosaicing/im_avgdxdy.c:		return( -1 );
libvips/mosaicing/im_avgdxdy.c:	for( i = 0; i < points->nopoints; i++ ) {
libvips/mosaicing/im_avgdxdy.c:		sumdx += points->x_secondary[i] - points->x_reference[i];
libvips/mosaicing/im_avgdxdy.c:		sumdy += points->y_secondary[i] - points->y_reference[i];
libvips/mosaicing/im_avgdxdy.c:	*dx =  IM_RINT( (double) sumdx / (double) points->nopoints );
libvips/mosaicing/im_avgdxdy.c:	*dy =  IM_RINT( (double) sumdy / (double) points->nopoints );
libvips/mosaicing/im_clinear.c: * @(#) Returns 0 on sucess  and -1 on error.
libvips/mosaicing/im_clinear.c: *	- tiny mem leak fixed
libvips/mosaicing/im_clinear.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_clinear.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_clinear.c:	xref = &points->x_reference[0];
libvips/mosaicing/im_clinear.c:	yref = &points->y_reference[0];
libvips/mosaicing/im_clinear.c:	xsec = &points->x_secondary[0];
libvips/mosaicing/im_clinear.c:	ysec = &points->y_secondary[0];
libvips/mosaicing/im_clinear.c:	dx = &points->dx[0];
libvips/mosaicing/im_clinear.c:	dy = &points->dy[0];
libvips/mosaicing/im_clinear.c:	dev = &points->deviation[0];
libvips/mosaicing/im_clinear.c:	elms = points->nopoints;
libvips/mosaicing/im_clinear.c:		return( -1 );
libvips/mosaicing/im_clinear.c:		return( -1 );
libvips/mosaicing/im_clinear.c:	for( i = 0; i < points->nopoints; i++ ) {
libvips/mosaicing/im_clinear.c:	resx = fabs( sx1-sx2 )/points->nopoints;
libvips/mosaicing/im_clinear.c:	resy = fabs( sy1-sy2 )/points->nopoints;
libvips/mosaicing/im_clinear.c:	mat[1][2] = -sy1;
libvips/mosaicing/im_clinear.c:	mat[2][1] = -sy1;
libvips/mosaicing/im_clinear.c:	g[1] = -sx2y1 + sy2x1;
libvips/mosaicing/im_clinear.c:		return( -1 );
libvips/mosaicing/im_clinear.c:	for( i = 0; i < points->nopoints; i++ ) {
libvips/mosaicing/im_clinear.c:		dx[i] = xsec[i] - 
libvips/mosaicing/im_clinear.c:			((scale * xref[i]) - (angle * yref[i]) + xdelta);
libvips/mosaicing/im_clinear.c:		dy[i] = ysec[i] - 
libvips/mosaicing/im_clinear.c:	points->l_scale = scale;
libvips/mosaicing/im_clinear.c:	points->l_angle = angle;
libvips/mosaicing/im_clinear.c:	points->l_deltax = xdelta;
libvips/mosaicing/im_clinear.c:	points->l_deltay = ydelta;
libvips/mosaicing/im_improve.c: * @(#) Returns 0 on sucess  and -1 on error.
libvips/mosaicing/im_improve.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mosaicing/im_improve.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mosaicing/im_improve.c:        pnew->reference = pold->reference;
libvips/mosaicing/im_improve.c:        pnew->secondary = pold->secondary;
libvips/mosaicing/im_improve.c:        pnew->deltax = pold->deltax;
libvips/mosaicing/im_improve.c:        pnew->deltay = pold->deltay;
libvips/mosaicing/im_improve.c:        pnew->nopoints = pold->nopoints;
libvips/mosaicing/im_improve.c:        pnew->halfcorsize = pold->halfcorsize;
libvips/mosaicing/im_improve.c:	pnew->halfareasize = pold->halfareasize;
libvips/mosaicing/im_improve.c:        for( i = 0; i < pold->nopoints; i++ ) {
libvips/mosaicing/im_improve.c:		pnew->x_reference[i] = pold->x_reference[i];
libvips/mosaicing/im_improve.c:		pnew->y_reference[i] = pold->y_reference[i];
libvips/mosaicing/im_improve.c:		pnew->x_secondary[i] = pold->x_secondary[i];
libvips/mosaicing/im_improve.c:		pnew->y_secondary[i] = pold->y_secondary[i];
libvips/mosaicing/im_improve.c:		pnew->contrast[i] = pold->contrast[i];
libvips/mosaicing/im_improve.c:		pnew->correlation[i] = pold->correlation[i];
libvips/mosaicing/im_improve.c:		pnew->deviation[i] = pold->deviation[i];
libvips/mosaicing/im_improve.c:		pnew->dx[i] = pold->dx[i];
libvips/mosaicing/im_improve.c:		pnew->dy[i] = pold->dy[i];
libvips/mosaicing/im_improve.c:	pnew->l_scale = pold->l_scale;
libvips/mosaicing/im_improve.c:	pnew->l_angle = pold->l_angle;
libvips/mosaicing/im_improve.c:	pnew->l_deltax = pold->l_deltax;
libvips/mosaicing/im_improve.c:	pnew->l_deltay = pold->l_deltay;
libvips/mosaicing/im_improve.c:	corr = &pold->correlation[0];
libvips/mosaicing/im_improve.c:	for( i = 0; i < pold->nopoints; i++ )
libvips/mosaicing/im_improve.c:			if( pold->deviation[i]/corr[i] < min_dev )
libvips/mosaicing/im_improve.c:				min_dev = pold->deviation[i]/corr[i] ;
libvips/mosaicing/im_improve.c:			if( pold->deviation[i]/corr[i] > max_dev )
libvips/mosaicing/im_improve.c:				max_dev = pold->deviation[i]/corr[i];
libvips/mosaicing/im_improve.c:	thresh_dev = min_dev + (max_dev - min_dev)*0.3;
libvips/mosaicing/im_improve.c:        for( i = 0, j = 0; i < pold->nopoints; i++ ) 
libvips/mosaicing/im_improve.c:		if( pold->correlation[i] > 0.01 )
libvips/mosaicing/im_improve.c:                	if( pold->deviation[i]/corr[i] <= thresh_dev ) {
libvips/mosaicing/im_improve.c:				pnew->x_reference[j] = pold->x_reference[i];
libvips/mosaicing/im_improve.c:				pnew->y_reference[j] = pold->y_reference[i];
libvips/mosaicing/im_improve.c:				pnew->x_secondary[j] = pold->x_secondary[i];
libvips/mosaicing/im_improve.c:				pnew->y_secondary[j] = pold->y_secondary[i];
libvips/mosaicing/im_improve.c:				pnew->contrast[j] = pold->contrast[i];
libvips/mosaicing/im_improve.c:				pnew->correlation[j] = pold->correlation[i];
libvips/mosaicing/im_improve.c:				pnew->deviation[j] = pold->deviation[i];
libvips/mosaicing/im_improve.c:				pnew->dx[j] = pold->dx[i];
libvips/mosaicing/im_improve.c:				pnew->dy[j] = pold->dy[i];
libvips/mosaicing/im_improve.c:        pnew->nopoints = j;
libvips/mosaicing/im_improve.c:		pnew->x_reference[i] = 0;
libvips/mosaicing/im_improve.c:		pnew->y_reference[i] = 0;
libvips/mosaicing/im_improve.c:		pnew->x_secondary[i] = 0;
libvips/mosaicing/im_improve.c:		pnew->y_secondary[i] = 0;
libvips/mosaicing/im_improve.c:		pnew->contrast[i] = 0;
libvips/mosaicing/im_improve.c:		pnew->correlation[i] = 0.0;
libvips/mosaicing/im_improve.c:		pnew->deviation[i] = 0.0;
libvips/mosaicing/im_improve.c:		pnew->dx[i] = 0.0;
libvips/mosaicing/im_improve.c:		pnew->dy[i] = 0.0;
libvips/mosaicing/im_improve.c:	/* Return non-zero if we changed something.
libvips/mosaicing/im_improve.c:	if( j != pold->nopoints )
libvips/mosaicing/im_improve.c:		return( -1 );
libvips/mosaicing/im_improve.c:	/* p has the current state - make a new state, q, with only those
libvips/mosaicing/im_improve.c:		if( q->nopoints < 2 )
libvips/mosaicing/im_improve.c:			return( -1 );
libvips/mosaicing/im_improve.c:	/* q has the output - copy to outpoints.
libvips/conversion/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
libvips/conversion/im_clip2fmt.c: *	- works for char, uchar too
libvips/conversion/im_clip2fmt.c: *	- floating point code removed from integer clip operations
libvips/conversion/im_clip2fmt.c: *	- uses nint() instead of own rounding code
libvips/conversion/im_clip2fmt.c: *	- calculated the number of >255 clips for float/double input
libvips/conversion/im_clip2fmt.c: *	- rejects complex input correctly now
libvips/conversion/im_clip2fmt.c: *	- adapted to work with partial images
libvips/conversion/im_clip2fmt.c: *	- nint() removed, now just +0.5
libvips/conversion/im_clip2fmt.c: *	- im_warning code removed
libvips/conversion/im_clip2fmt.c: *	- adapted for partial v2
libvips/conversion/im_clip2fmt.c: *	- now detects and prints over/underflows
libvips/conversion/im_clip2fmt.c: *	- unsigned integer clips now faster!
libvips/conversion/im_clip2fmt.c: *	- falls back to im_copy() correctly
libvips/conversion/im_clip2fmt.c: *	- switched to rint()
libvips/conversion/im_clip2fmt.c: *	- now uses evalend callback
libvips/conversion/im_clip2fmt.c: *	- now does complex too
libvips/conversion/im_clip2fmt.c: *	- now uses IM_RINT() macro
libvips/conversion/im_clip2fmt.c: *	- slightly faster and simpler
libvips/conversion/im_clip2fmt.c: *	- generalised to im_clip2fmt(), all other clippers now just call
libvips/conversion/im_clip2fmt.c: *	- now does floor(), not rint() ... you'll need to round yourself
libvips/conversion/im_clip2fmt.c: *	  before calling this if you want round-to-nearest
libvips/conversion/im_clip2fmt.c: * 	- use new evalstart/evalend system
libvips/conversion/im_clip2fmt.c: * 	- oops, complex->complex conversion was broken
libvips/conversion/im_clip2fmt.c: * 	- modernised
libvips/conversion/im_clip2fmt.c: * 	- gtk-doc
libvips/conversion/im_clip2fmt.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_clip2fmt.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_clip2fmt.c:/* Global state. Track over/under-flows for all sequences in this.
libvips/conversion/im_clip2fmt.c:	clip->overflow = 0;
libvips/conversion/im_clip2fmt.c:	clip->underflow = 0;
libvips/conversion/im_clip2fmt.c:	if( clip->overflow || clip->underflow ) 
libvips/conversion/im_clip2fmt.c:			clip->underflow, clip->overflow );
libvips/conversion/im_clip2fmt.c:	clip->in = in;
libvips/conversion/im_clip2fmt.c:	clip->out = out;
libvips/conversion/im_clip2fmt.c:	clip->ofmt = ofmt;
libvips/conversion/im_clip2fmt.c:	clip->underflow = 0;
libvips/conversion/im_clip2fmt.c:	clip->overflow = 0;
libvips/conversion/im_clip2fmt.c:	clip->underflow += seq->underflow;
libvips/conversion/im_clip2fmt.c:	clip->overflow += seq->overflow;
libvips/conversion/im_clip2fmt.c:	IM_FREEF( im_region_free, seq->ir );
libvips/conversion/im_clip2fmt.c:	seq->ir = NULL;
libvips/conversion/im_clip2fmt.c:	seq->overflow = 0;
libvips/conversion/im_clip2fmt.c:	seq->underflow = 0;
libvips/conversion/im_clip2fmt.c:	if( !(seq->ir = im_region_create( in )) ) 
libvips/conversion/im_clip2fmt.c:/* Clip non-complex types to a float type.
libvips/conversion/im_clip2fmt.c:/* Clip any non-complex to a complex type ... set imaginary to zero.
libvips/conversion/im_clip2fmt.c:	switch( clip->out->BandFmt ) { \
libvips/conversion/im_clip2fmt.c:	REGION *ir = seq->ir;
libvips/conversion/im_clip2fmt.c:	Rect *r = &or->valid;
libvips/conversion/im_clip2fmt.c:	int le = r->left;
libvips/conversion/im_clip2fmt.c:	int to = r->top;
libvips/conversion/im_clip2fmt.c:		return( -1 );
libvips/conversion/im_clip2fmt.c:		switch( clip->in->BandFmt ) { 
libvips/conversion/im_clip2fmt.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_clip2fmt.c:		return( -1 );
libvips/conversion/im_clip2fmt.c:		return( -1 );
libvips/conversion/im_clip2fmt.c:	if( in->BandFmt == fmt )
libvips/conversion/im_clip2fmt.c:		return( -1 );
libvips/conversion/im_clip2fmt.c:		return( -1 );
libvips/conversion/im_clip2fmt.c:	out->BandFmt = fmt;
libvips/conversion/im_clip2fmt.c:		return( -1 );
libvips/conversion/im_rot180.c: *	- IM_CODING_LABQ allowed now
libvips/conversion/im_rot180.c: *	- name changed
libvips/conversion/im_rot180.c: *	- memory leaks fixed
libvips/conversion/im_rot180.c: *	- oops! memory allocation problem fixed
libvips/conversion/im_rot180.c: * 	- IM_MAXLINES increased
libvips/conversion/im_rot180.c: *	- rewritten for partials
libvips/conversion/im_rot180.c: *	- adapted from im_rot90
libvips/conversion/im_rot180.c: *	- sets Xoffset / Yoffset
libvips/conversion/im_rot180.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_rot180.c: * 	- cleanups
libvips/conversion/im_rot180.c: * 	- gtkdoc
libvips/conversion/im_rot180.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_rot180.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_rot180.c:	Rect *r = &or->valid;
libvips/conversion/im_rot180.c:	int le = r->left;
libvips/conversion/im_rot180.c:	int to = r->top;
libvips/conversion/im_rot180.c:	need.left = in->Xsize - ri;
libvips/conversion/im_rot180.c:	need.top = in->Ysize - bo;
libvips/conversion/im_rot180.c:	need.width = r->width;
libvips/conversion/im_rot180.c:	need.height = r->height;
libvips/conversion/im_rot180.c:		return( -1 );
libvips/conversion/im_rot180.c:			need.left + need.width - 1, 
libvips/conversion/im_rot180.c:			need.top + need.height - (y - to) - 1 );
libvips/conversion/im_rot180.c:			p -= ps;
libvips/conversion/im_rot180.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_rot180.c:		return( -1 );
libvips/conversion/im_rot180.c:		return( -1 );
libvips/conversion/im_rot180.c:		return( -1 );
libvips/conversion/im_rot180.c:	out->Xoffset = in->Xsize;
libvips/conversion/im_rot180.c:	out->Yoffset = in->Ysize;
libvips/conversion/im_rot270.c: *	- IM_CODING_LABQ allowed now
libvips/conversion/im_rot270.c: *	- name changed
libvips/conversion/im_rot270.c: *	- memory leaks fixed
libvips/conversion/im_rot270.c: *	- oops! memory allocation problem fixed
libvips/conversion/im_rot270.c: * 	- IM_MAXLINES increased
libvips/conversion/im_rot270.c: *	- rewritten for partials
libvips/conversion/im_rot270.c: *	- speed-up ... replace memcpy() with a loop for small pixels
libvips/conversion/im_rot270.c: *	- sets Xoffset / Yoffset
libvips/conversion/im_rot270.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_rot270.c: * 	- cleanups
libvips/conversion/im_rot270.c: * 	- gtkdoc
libvips/conversion/im_rot270.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_rot270.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_rot270.c:	Rect *r = &or->valid;
libvips/conversion/im_rot270.c:	int le = r->left;
libvips/conversion/im_rot270.c:	int to = r->top;
libvips/conversion/im_rot270.c:	need.left = in->Xsize - bo;
libvips/conversion/im_rot270.c:	need.width = r->height;
libvips/conversion/im_rot270.c:	need.height = r->width;
libvips/conversion/im_rot270.c:		return( -1 );
libvips/conversion/im_rot270.c:			need.left + need.width - (y - to) - 1,
libvips/conversion/im_rot270.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_rot270.c:		return( -1 );
libvips/conversion/im_rot270.c:		return( -1 );
libvips/conversion/im_rot270.c:	out->Xsize = in->Ysize;
libvips/conversion/im_rot270.c:	out->Ysize = in->Xsize;
libvips/conversion/im_rot270.c:		return( -1 );
libvips/conversion/im_rot270.c:	out->Xoffset = 0;
libvips/conversion/im_rot270.c:	out->Yoffset = in->Xsize;
libvips/conversion/im_insert.c: *	- ANSIfied
libvips/conversion/im_insert.c: *	- Nicos' reformatting undone. Grr!
libvips/conversion/im_insert.c: *	- modernised
libvips/conversion/im_insert.c: *	- now does IM_CODING_LABQ too
libvips/conversion/im_insert.c: *	- partialized
libvips/conversion/im_insert.c: *	- adapted for im_prepare_to() stuff
libvips/conversion/im_insert.c: *	- sets Xoffset / Yoffset
libvips/conversion/im_insert.c: * 	- add sanity range checks
libvips/conversion/im_insert.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_insert.c: * 	- cleanups
libvips/conversion/im_insert.c: * 	- formatalike/bandalike
libvips/conversion/im_insert.c: * 	- gtkdoc
libvips/conversion/im_insert.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_insert.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_insert.c: * - check in and out
libvips/conversion/im_insert.c: * - cast in1 and in2 up to a common format
libvips/conversion/im_insert.c: * - equalise bands 
libvips/conversion/im_insert.c: * - make an input array
libvips/conversion/im_insert.c: * - run the supplied area operation passing one of the up-banded,
libvips/conversion/im_insert.c: *   up-casted and up-sized inputs as the first param
libvips/conversion/im_insert.c:	need = or->valid;
libvips/conversion/im_insert.c:	need.left -= x;
libvips/conversion/im_insert.c:	need.top -= y;
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c:	if( im_region_region( or, ir, &or->valid, need.left, need.top ) )
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c:/* Paste in parts of ir that fall within or --- ir is an input REGION for an 
libvips/conversion/im_insert.c:	/* Does any of the sub-image appear in the area we have been asked
libvips/conversion/im_insert.c:	im_rect_intersectrect( &or->valid, pos, &ovl );
libvips/conversion/im_insert.c:		ovl.left -= pos->left;
libvips/conversion/im_insert.c:		ovl.top -= pos->top;
libvips/conversion/im_insert.c:			ovl.left + pos->left, ovl.top + pos->top ) )
libvips/conversion/im_insert.c:			return( -1 );
libvips/conversion/im_insert.c:	 * sub-image?
libvips/conversion/im_insert.c:	if( im_rect_includesrect( &ins->rsub, &or->valid ) ) 
libvips/conversion/im_insert.c:			ins->rsub.left, ins->rsub.top ) );
libvips/conversion/im_insert.c:	im_rect_intersectrect( &or->valid, &ins->rsub, &ovl );
libvips/conversion/im_insert.c:	if( im_rect_includesrect( &ins->rmain, &or->valid ) &&
libvips/conversion/im_insert.c:			ins->rmain.left, ins->rmain.top ) );
libvips/conversion/im_insert.c:	if( !(im_rect_includesrect( &ins->rsub, &or->valid ) &&
libvips/conversion/im_insert.c:		im_rect_includesrect( &ins->rmain, &or->valid )) )
libvips/conversion/im_insert.c:		/* Could be clever --- but just black the whole thing for
libvips/conversion/im_insert.c:	if( paste_region( or, ir[0], &ins->rmain ) )
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c:	if( paste_region( or, ir[1], &ins->rsub ) )
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c: * must have one band. In this case, an n-band image is formed from the 
libvips/conversion/im_insert.c: * one-band image by joining n copies of the one-band image together, and then
libvips/conversion/im_insert.c: * the two n-band images are operated upon.
libvips/conversion/im_insert.c: * <link linkend="VIPS-arithmetic">arithmetic</link>).
libvips/conversion/im_insert.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_insert.c:	if( x > RANGE || x < -RANGE || y > RANGE || y < -RANGE ) {
libvips/conversion/im_insert.c:		return( -1 ); 
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c:	ins->main = vec[0];
libvips/conversion/im_insert.c:	ins->sub = vec[1];
libvips/conversion/im_insert.c:	ins->out = out;
libvips/conversion/im_insert.c:	ins->x = x;
libvips/conversion/im_insert.c:	ins->y = y;
libvips/conversion/im_insert.c:	ins->rmain.left = 0;
libvips/conversion/im_insert.c:	ins->rmain.top = 0;
libvips/conversion/im_insert.c:	ins->rmain.width = vec[0]->Xsize;
libvips/conversion/im_insert.c:	ins->rmain.height = vec[0]->Ysize;
libvips/conversion/im_insert.c:	ins->rsub.left = x;
libvips/conversion/im_insert.c:	ins->rsub.top = y;
libvips/conversion/im_insert.c:	ins->rsub.width = vec[1]->Xsize;
libvips/conversion/im_insert.c:	ins->rsub.height = vec[1]->Ysize;
libvips/conversion/im_insert.c:	im_rect_unionrect( &ins->rmain, &ins->rsub, &ins->rout );
libvips/conversion/im_insert.c:	ins->rmain.left -= ins->rout.left;
libvips/conversion/im_insert.c:	ins->rmain.top -= ins->rout.top;
libvips/conversion/im_insert.c:	ins->rsub.left -= ins->rout.left;
libvips/conversion/im_insert.c:	ins->rsub.top -= ins->rout.top;
libvips/conversion/im_insert.c:	ins->rout.left = 0;
libvips/conversion/im_insert.c:	ins->rout.top = 0;
libvips/conversion/im_insert.c:	out->Xsize = ins->rout.width;
libvips/conversion/im_insert.c:	out->Ysize = ins->rout.height;
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c:	out->Xoffset = ins->rmain.left;
libvips/conversion/im_insert.c:	out->Yoffset = ins->rmain.top;
libvips/conversion/im_insert.c: * must have one band. In this case, an n-band image is formed from the 
libvips/conversion/im_insert.c: * one-band image by joining n copies of the one-band image together, and then
libvips/conversion/im_insert.c: * the two n-band images are operated upon.
libvips/conversion/im_insert.c: * <link linkend="VIPS-arithmetic">arithmetic</link>).
libvips/conversion/im_insert.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_insert.c:	if( x > RANGE || x < -RANGE || y > RANGE || y < -RANGE ) {
libvips/conversion/im_insert.c:		return( -1 ); 
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c:	ins->main = vec[0];
libvips/conversion/im_insert.c:	ins->sub = vec[1];
libvips/conversion/im_insert.c:	ins->out = out;
libvips/conversion/im_insert.c:	ins->x = x;
libvips/conversion/im_insert.c:	ins->y = y;
libvips/conversion/im_insert.c:	ins->rmain.left = 0;
libvips/conversion/im_insert.c:	ins->rmain.top = 0;
libvips/conversion/im_insert.c:	ins->rmain.width = vec[0]->Xsize;
libvips/conversion/im_insert.c:	ins->rmain.height = vec[0]->Ysize;
libvips/conversion/im_insert.c:	ins->rsub.left = x;
libvips/conversion/im_insert.c:	ins->rsub.top = y;
libvips/conversion/im_insert.c:	ins->rsub.width = vec[1]->Xsize;
libvips/conversion/im_insert.c:	ins->rsub.height = vec[1]->Ysize;
libvips/conversion/im_insert.c:	ins->rout = ins->rmain;
libvips/conversion/im_insert.c:	out->Xsize = ins->rout.width;
libvips/conversion/im_insert.c:	out->Ysize = ins->rout.height;
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c: * must have one band. In this case, an n-band image is formed from the 
libvips/conversion/im_insert.c: * one-band image by joining n copies of the one-band image together, and then
libvips/conversion/im_insert.c: * the two n-band images are operated upon.
libvips/conversion/im_insert.c: * <link linkend="VIPS-arithmetic">arithmetic</link>).
libvips/conversion/im_insert.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_insert.c:			return( -1 );
libvips/conversion/im_insert.c:		return( -1 );
libvips/conversion/im_vips2mask.c: * 	- allow 1xn-band images too
libvips/conversion/im_vips2mask.c: * 	- oop, broken for nx1 m-band images 
libvips/conversion/im_vips2mask.c: * 	- now casts to double for you
libvips/conversion/im_vips2mask.c: * 	- gtkdoc
libvips/conversion/im_vips2mask.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_vips2mask.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_vips2mask.c:	if( in->BandFmt != IM_BANDFMT_DOUBLE ) {
libvips/conversion/im_vips2mask.c:	if( in->Bands == 1 ) {
libvips/conversion/im_vips2mask.c:		width = in->Xsize;
libvips/conversion/im_vips2mask.c:		height = in->Ysize;
libvips/conversion/im_vips2mask.c:	else if( in->Xsize == 1 ) {
libvips/conversion/im_vips2mask.c:		width = in->Bands;
libvips/conversion/im_vips2mask.c:		height = in->Ysize;
libvips/conversion/im_vips2mask.c:	else if( in->Ysize == 1 ) {
libvips/conversion/im_vips2mask.c:		width = in->Xsize;
libvips/conversion/im_vips2mask.c:		height = in->Bands;
libvips/conversion/im_vips2mask.c:	if( in->Bands > 1 && in->Ysize == 1 ) {
libvips/conversion/im_vips2mask.c:		double *data = (double *) in->data;
libvips/conversion/im_vips2mask.c:				out->coeff[x + y * width] =
libvips/conversion/im_vips2mask.c:		memcpy( out->coeff, in->data, 
libvips/conversion/im_tbjoin.c: *	- externs removed
libvips/conversion/im_tbjoin.c: *	- tidied up
libvips/conversion/im_tbjoin.c: *	- now works for IM_CODING_LABQ too
libvips/conversion/im_tbjoin.c: *	- image compatibility bug fixed
libvips/conversion/im_tbjoin.c: *	- y arg to 2nd set of im_writeline()s was wrong
libvips/conversion/im_tbjoin.c: *	- rewritten in terms of im_insert()
libvips/conversion/im_tbjoin.c: *	- sets Xoffset / Yoffset
libvips/conversion/im_tbjoin.c: * 	- gtkdoc
libvips/conversion/im_tbjoin.c: * 	- cleanups
libvips/conversion/im_tbjoin.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_tbjoin.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_tbjoin.c: * Join @top and @bottom together, up-down. If one is wider than the
libvips/conversion/im_tbjoin.c: * must have one band. In this case, an n-band image is formed from the 
libvips/conversion/im_tbjoin.c: * one-band image by joining n copies of the one-band image together, and then
libvips/conversion/im_tbjoin.c: * the two n-band images are operated upon.
libvips/conversion/im_tbjoin.c: * <link linkend="VIPS-arithmetic">arithmetic</link>).
libvips/conversion/im_tbjoin.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_tbjoin.c:		im_insert( top, bottom, t1, 0, top->Ysize ) ||
libvips/conversion/im_tbjoin.c:			0, 0, IM_MIN( top->Xsize, bottom->Xsize ), t1->Ysize ) )
libvips/conversion/im_tbjoin.c:		return( -1 );
libvips/conversion/im_tbjoin.c:	out->Xoffset = 0;
libvips/conversion/im_tbjoin.c:	out->Yoffset = top->Ysize;
libvips/conversion/im_rot90.c: *	- IM_CODING_LABQ allowed now
libvips/conversion/im_rot90.c: *	- name changed
libvips/conversion/im_rot90.c: *	- memory leaks fixed
libvips/conversion/im_rot90.c: *	- oops! memory allocation problem fixed
libvips/conversion/im_rot90.c: * 	- IM_MAXLINES increased
libvips/conversion/im_rot90.c: *	- rewritten for partials
libvips/conversion/im_rot90.c: *	- speed-up ... replace memcpy() with a loop for small pixels
libvips/conversion/im_rot90.c: *	- sets Xoffset / Yoffset
libvips/conversion/im_rot90.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_rot90.c: * 	- cleanups
libvips/conversion/im_rot90.c: * 	- gtkdoc
libvips/conversion/im_rot90.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_rot90.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_rot90.c:	Rect *r = &or->valid;
libvips/conversion/im_rot90.c:	int le = r->left;
libvips/conversion/im_rot90.c:	int to = r->top;
libvips/conversion/im_rot90.c:	need.top = in->Ysize - ri;
libvips/conversion/im_rot90.c:	need.width = r->height;
libvips/conversion/im_rot90.c:	need.height = r->width;
libvips/conversion/im_rot90.c:		return( -1 );
libvips/conversion/im_rot90.c:			need.left + y - to, 
libvips/conversion/im_rot90.c:			need.top + need.height - 1 );
libvips/conversion/im_rot90.c:			p -= ls;
libvips/conversion/im_rot90.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_rot90.c:		return( -1 );
libvips/conversion/im_rot90.c:		return( -1 );
libvips/conversion/im_rot90.c:	out->Xsize = in->Ysize;
libvips/conversion/im_rot90.c:	out->Ysize = in->Xsize;
libvips/conversion/im_rot90.c:		return( -1 );
libvips/conversion/im_rot90.c:	out->Xoffset = in->Ysize;
libvips/conversion/im_rot90.c:	out->Yoffset = 0;
libvips/conversion/im_mask2vips.c: *	- new IM_ARRAY()
libvips/conversion/im_mask2vips.c: * 	- gtkdoc
libvips/conversion/im_mask2vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_mask2vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_mask2vips.c: * Write a one-band, %IM_BANDFMT_DOUBLE image to @out based on mask @in.
libvips/conversion/im_mask2vips.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_mask2vips.c:	if( !in || !in->coeff ) {
libvips/conversion/im_mask2vips.c:		return( -1 );
libvips/conversion/im_mask2vips.c:	im_initdesc( out, in->xsize, in->ysize, 1, 
libvips/conversion/im_mask2vips.c:		return( -1 );
libvips/conversion/im_mask2vips.c:	if( !(buf = IM_ARRAY( out, in->xsize, double )) )
libvips/conversion/im_mask2vips.c:		return( -1 );
libvips/conversion/im_mask2vips.c:	for( p = in->coeff, y = 0; y < out->Ysize; y++ ) {
libvips/conversion/im_mask2vips.c:		for( x = 0; x < out->Xsize; x++ )
libvips/conversion/im_mask2vips.c:			return( -1 );
libvips/conversion/im_grid.c: * 	- oops, clipping was wrong
libvips/conversion/im_grid.c: * 	- gtkdoc
libvips/conversion/im_grid.c: * 	- small cleanups
libvips/conversion/im_grid.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_grid.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_grid.c:	Rect *r = &or->valid;
libvips/conversion/im_grid.c:	int twidth = grid->in->Xsize;
libvips/conversion/im_grid.c:	int theight = grid->tile_height;
libvips/conversion/im_grid.c:	int xs = (r->left / twidth) * twidth;
libvips/conversion/im_grid.c:	int ys = (r->top / theight) * theight;
libvips/conversion/im_grid.c:	/* The tile enclosing the top-left corner of the requested area.
libvips/conversion/im_grid.c:	/* If the request fits inside a single tile, we can just pointer-copy.
libvips/conversion/im_grid.c:		irect.left -= xs;
libvips/conversion/im_grid.c:		irect.top -= ys;
libvips/conversion/im_grid.c:		irect.top += grid->across * ys + theight * (xs / twidth);
libvips/conversion/im_grid.c:			return( -1 );
libvips/conversion/im_grid.c:			input.left -= x;
libvips/conversion/im_grid.c:			input.top -= y;
libvips/conversion/im_grid.c:			input.top += grid->across * y + theight * (x / twidth);
libvips/conversion/im_grid.c:				return( -1 );
libvips/conversion/im_grid.c: * smaller images. Volumetric or time-sequence images are often laid out like
libvips/conversion/im_grid.c: * @across tiles across and @down tiles down in row-major order.
libvips/conversion/im_grid.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_grid.c:		return( -1 );
libvips/conversion/im_grid.c:		return( -1 );
libvips/conversion/im_grid.c:	if( in->Ysize % tile_height != 0 ||
libvips/conversion/im_grid.c:		in->Ysize / tile_height != across * down ) {
libvips/conversion/im_grid.c:		return( -1 );
libvips/conversion/im_grid.c:	grid->in = in;
libvips/conversion/im_grid.c:	grid->out = out;
libvips/conversion/im_grid.c:	grid->tile_height = tile_height;
libvips/conversion/im_grid.c:	grid->across = across;
libvips/conversion/im_grid.c:	grid->down = down;
libvips/conversion/im_grid.c:		return( -1 );
libvips/conversion/im_grid.c:	out->Xsize = in->Xsize * across;
libvips/conversion/im_grid.c:	out->Ysize = tile_height * down;
libvips/conversion/im_grid.c:		return( -1 );
libvips/conversion/im_grid.c:		return( -1 );
libvips/conversion/im_black.c: *	- adapted for partials
libvips/conversion/im_black.c: *	- ANSIfied
libvips/conversion/im_black.c: * 	- memory leaks fixed!
libvips/conversion/im_black.c: *	- IM_ANY added
libvips/conversion/im_black.c: * 	- gtkdoc
libvips/conversion/im_black.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_black.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_black.c:/* Generate function --- just black out the region.
libvips/conversion/im_black.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_black.c:		return( -1 );
libvips/conversion/im_black.c:		return( -1 );
libvips/conversion/im_black.c:		return( -1 );
libvips/conversion/im_black.c:		return( -1 );
libvips/conversion/im_c2real.c: *	- stupid stupid includes and externs fixed
libvips/conversion/im_c2real.c: *	- I have been editing for 1 1/2 hours and I'm still drowning in
libvips/conversion/im_c2real.c: *	- modernised
libvips/conversion/im_c2real.c: *	- im_c2amph() adapted to make im_c2real() and im_c2imag()
libvips/conversion/im_c2real.c: * 	- modernised
libvips/conversion/im_c2real.c: * 	- gtk-doc
libvips/conversion/im_c2real.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_c2real.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_c2real.c:	int n = w * im->Bands;
libvips/conversion/im_c2real.c:	switch( im->BandFmt ) {
libvips/conversion/im_c2real.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_c2real.c:                return( -1 );
libvips/conversion/im_c2real.c:	if( in->BandFmt == IM_BANDFMT_DPCOMPLEX ) 
libvips/conversion/im_c2real.c:		out->BandFmt = IM_BANDFMT_DOUBLE;
libvips/conversion/im_c2real.c:		out->BandFmt = IM_BANDFMT_FLOAT;
libvips/conversion/im_c2real.c:                return( -1 );
libvips/conversion/im_embed.c: *	- added extend pixels from edge mode
libvips/conversion/im_embed.c: *	- sets Xoffset / Yoffset to x / y
libvips/conversion/im_embed.c: *	- added replicate and mirror modes
libvips/conversion/im_embed.c: *	- added solid white mode
libvips/conversion/im_embed.c: * 	- degenerate to im_copy() for 0/0/w/h
libvips/conversion/im_embed.c: * 	- more general ... x and y can be negative
libvips/conversion/im_embed.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_embed.c: * 	- gtkdoc
libvips/conversion/im_embed.c: * 	- use im_region_paint()
libvips/conversion/im_embed.c: * 	- cleanups
libvips/conversion/im_embed.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_embed.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_embed.c:/* Per-call struct.
libvips/conversion/im_embed.c:	*out = embed->border[i];
libvips/conversion/im_embed.c:	im_rect_intersectrect( out, &embed->rsub, out );
libvips/conversion/im_embed.c:		extend.height = embed->height;
libvips/conversion/im_embed.c:		extend.width = embed->width;
libvips/conversion/im_embed.c:	const int bs = IM_IMAGE_SIZEOF_PEL( embed->in );
libvips/conversion/im_embed.c: * embed->border[i]. p points to the top-left source pixel to fill with. 
libvips/conversion/im_embed.c:	const int bs = IM_IMAGE_SIZEOF_PEL( embed->in );
libvips/conversion/im_embed.c:		todo.height -= 1;
libvips/conversion/im_embed.c:	Rect *r = &or->valid;
libvips/conversion/im_embed.c:	if( im_rect_includesrect( &embed->rsub, r ) ) {
libvips/conversion/im_embed.c:		need.left -= embed->x;
libvips/conversion/im_embed.c:		need.top -= embed->y;
libvips/conversion/im_embed.c:			return( -1 );
libvips/conversion/im_embed.c:	im_rect_intersectrect( r, &embed->rsub, &ovl );
libvips/conversion/im_embed.c:		ovl.left -= embed->x;
libvips/conversion/im_embed.c:		ovl.top -= embed->y;
libvips/conversion/im_embed.c:			ovl.left + embed->x, ovl.top + embed->y ) )
libvips/conversion/im_embed.c:			return( -1 );
libvips/conversion/im_embed.c:		ovl.left += embed->x;
libvips/conversion/im_embed.c:		ovl.top += embed->y;
libvips/conversion/im_embed.c:	switch( embed->type ) {
libvips/conversion/im_embed.c:			im_region_paint( or, &embed->border[i], 
libvips/conversion/im_embed.c:				embed->type == 0 ? 0 : 255 );
libvips/conversion/im_embed.c:			im_rect_intersectrect( r, &embed->border[i], &todo );
libvips/conversion/im_embed.c:					edge.left -= embed->x;
libvips/conversion/im_embed.c:					edge.top -= embed->y;
libvips/conversion/im_embed.c:						return( -1 );
libvips/conversion/im_embed.c:	embed->in = in;
libvips/conversion/im_embed.c:	embed->out = out;
libvips/conversion/im_embed.c:	embed->type = type;
libvips/conversion/im_embed.c:	embed->x = x;
libvips/conversion/im_embed.c:	embed->y = y;
libvips/conversion/im_embed.c:	embed->width = width;
libvips/conversion/im_embed.c:	embed->height = height;
libvips/conversion/im_embed.c:	embed->rout.left = 0;
libvips/conversion/im_embed.c:	embed->rout.top = 0;
libvips/conversion/im_embed.c:	embed->rout.width = out->Xsize;
libvips/conversion/im_embed.c:	embed->rout.height = out->Ysize;
libvips/conversion/im_embed.c:	want.width = in->Xsize;
libvips/conversion/im_embed.c:	want.height = in->Ysize;
libvips/conversion/im_embed.c:	im_rect_intersectrect( &want, &embed->rout, &embed->rsub );
libvips/conversion/im_embed.c:	if( im_rect_isempty( &embed->rsub ) ) {
libvips/conversion/im_embed.c:	embed->border[0].left = embed->rsub.left;
libvips/conversion/im_embed.c:	embed->border[0].top = 0;
libvips/conversion/im_embed.c:	embed->border[0].width = embed->rsub.width;
libvips/conversion/im_embed.c:	embed->border[0].height = embed->rsub.top;
libvips/conversion/im_embed.c:	embed->border[1].left = IM_RECT_RIGHT( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[1].top = embed->rsub.top;
libvips/conversion/im_embed.c:	embed->border[1].width = out->Xsize - IM_RECT_RIGHT( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[1].height = embed->rsub.height;
libvips/conversion/im_embed.c:	embed->border[2].left = embed->rsub.left;	
libvips/conversion/im_embed.c:	embed->border[2].top = IM_RECT_BOTTOM( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[2].width = embed->rsub.width;
libvips/conversion/im_embed.c:	embed->border[2].height = out->Ysize - IM_RECT_BOTTOM( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[3].left = 0;	
libvips/conversion/im_embed.c:	embed->border[3].top = embed->rsub.top;
libvips/conversion/im_embed.c:	embed->border[3].width = embed->rsub.left;
libvips/conversion/im_embed.c:	embed->border[3].height = embed->rsub.height;
libvips/conversion/im_embed.c:	/* Corner rects. Top-left, top-right, bottom-right, bottom-left. Order
libvips/conversion/im_embed.c:	embed->border[4].left = 0;
libvips/conversion/im_embed.c:	embed->border[4].top = 0;
libvips/conversion/im_embed.c:	embed->border[4].width = embed->rsub.left;
libvips/conversion/im_embed.c:	embed->border[4].height = embed->rsub.top;
libvips/conversion/im_embed.c:	embed->border[5].left = IM_RECT_RIGHT( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[5].top = 0;
libvips/conversion/im_embed.c:	embed->border[5].width = out->Xsize - IM_RECT_RIGHT( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[5].height = embed->rsub.top;
libvips/conversion/im_embed.c:	embed->border[6].left = IM_RECT_RIGHT( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[6].top = IM_RECT_BOTTOM( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[6].width = out->Xsize - IM_RECT_RIGHT( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[6].height = out->Ysize - IM_RECT_BOTTOM( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[7].left = 0;
libvips/conversion/im_embed.c:	embed->border[7].top = IM_RECT_BOTTOM( &embed->rsub );
libvips/conversion/im_embed.c:	embed->border[7].width = embed->rsub.left;
libvips/conversion/im_embed.c:	embed->border[7].height = out->Ysize - IM_RECT_BOTTOM( &embed->rsub );
libvips/conversion/im_embed.c:                return( -1 );
libvips/conversion/im_embed.c:	out->Xsize = width;
libvips/conversion/im_embed.c:	out->Ysize = height;
libvips/conversion/im_embed.c:		return( -1 );
libvips/conversion/im_embed.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_embed.c:		return( -1 );
libvips/conversion/im_embed.c:		return( -1 );
libvips/conversion/im_embed.c:		return( -1 );
libvips/conversion/im_embed.c:	if( x == 0 && y == 0 && width == in->Xsize && height == in->Ysize )
libvips/conversion/im_embed.c:			return( -1 );
libvips/conversion/im_embed.c:			-x % in->Xsize : in->Xsize - x % in->Xsize;
libvips/conversion/im_embed.c:			-y % in->Ysize : in->Ysize - y % in->Ysize;
libvips/conversion/im_embed.c:		if( im_open_local_array( out, t, 1, "embed-type2", "p" ) ||
libvips/conversion/im_embed.c:				width / in->Xsize + 2, 
libvips/conversion/im_embed.c:				height / in->Ysize + 2 ) ||
libvips/conversion/im_embed.c:			return( -1 );
libvips/conversion/im_embed.c:		const int w2 = in->Xsize * 2;
libvips/conversion/im_embed.c:		const int h2 = in->Ysize * 2;
libvips/conversion/im_embed.c:		const int nx = x < 0 ? -x % w2 : w2 - x % w2;
libvips/conversion/im_embed.c:		const int ny = y < 0 ? -y % h2 : h2 - y % h2;
libvips/conversion/im_embed.c:		if( im_open_local_array( out, t, 7, "embed-type3", "p" ) ||
libvips/conversion/im_embed.c:				3 * (in->Xsize / IM__TILE_WIDTH + 1) +
libvips/conversion/im_embed.c:				3 * (in->Ysize / IM__TILE_HEIGHT + 1) ) ||
libvips/conversion/im_embed.c:				width / t[4]->Xsize + 2, 
libvips/conversion/im_embed.c:				height / t[4]->Ysize + 2 ) ||
libvips/conversion/im_embed.c:				return( -1 );
libvips/conversion/im_embed.c:	out->Xoffset = x;
libvips/conversion/im_embed.c:	out->Yoffset = y;
libvips/conversion/im_subsample.c: *	- adapted from im_shrink()
libvips/conversion/im_subsample.c: *	- fall back to im_copy() for x/y factors == 1
libvips/conversion/im_subsample.c: * 	- don't fall back to pixel-wise shrinks for smalltile, it kills
libvips/conversion/im_subsample.c: * 	- gtkdoc
libvips/conversion/im_subsample.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_subsample.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_subsample.c:/* Subsample a REGION. We fetch in IM_MAX_WIDTH pixel-wide strips, left-to-right
libvips/conversion/im_subsample.c:	Rect *r = &or->valid;
libvips/conversion/im_subsample.c:	int le = r->left;
libvips/conversion/im_subsample.c:	int to = r->top;
libvips/conversion/im_subsample.c:	int owidth = IM_MAX_WIDTH / st->xshrink;
libvips/conversion/im_subsample.c:			int ow = IM_MIN( owidth, ri - x );
libvips/conversion/im_subsample.c:			int iw = ow * st->xshrink - (st->xshrink - 1);
libvips/conversion/im_subsample.c:			s.left = x * st->xshrink;
libvips/conversion/im_subsample.c:			s.top = y * st->yshrink;
libvips/conversion/im_subsample.c:				return( -1 );
libvips/conversion/im_subsample.c:				p += ps * st->xshrink;
libvips/conversion/im_subsample.c:	Rect *r = &or->valid;
libvips/conversion/im_subsample.c:	int le = r->left;
libvips/conversion/im_subsample.c:	int to = r->top;
libvips/conversion/im_subsample.c:			s.left = x * st->xshrink;
libvips/conversion/im_subsample.c:			s.top = y * st->yshrink;
libvips/conversion/im_subsample.c:				return( -1 );
libvips/conversion/im_subsample.c: * Subsample an image by an integer fraction. This is fast nearest-neighbour
libvips/conversion/im_subsample.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_subsample.c:		return( -1 );
libvips/conversion/im_subsample.c:		return( -1 );
libvips/conversion/im_subsample.c:		return( -1 );
libvips/conversion/im_subsample.c:	out->Xsize = in->Xsize / xshrink;
libvips/conversion/im_subsample.c:	out->Ysize = in->Ysize / yshrink;
libvips/conversion/im_subsample.c:	out->Xres = in->Xres / xshrink;
libvips/conversion/im_subsample.c:	out->Yres = in->Yres / yshrink;
libvips/conversion/im_subsample.c:	if( out->Xsize <= 0 || out->Ysize <= 0 ) {
libvips/conversion/im_subsample.c:		return( -1 );
libvips/conversion/im_subsample.c:		return( -1 );
libvips/conversion/im_subsample.c:	st->xshrink = xshrink;
libvips/conversion/im_subsample.c:	st->yshrink = yshrink;
libvips/conversion/im_subsample.c:		return( -1 );
libvips/conversion/im_subsample.c:			return( -1 );
libvips/conversion/im_subsample.c:			return( -1 );
libvips/conversion/im_system.c: *	- hacked it in
libvips/conversion/im_system.c: *	- use mktemp() if mkstemp() is not available
libvips/conversion/im_system.c: *	- out can be NULL
libvips/conversion/im_system.c: *	- use g_mkstemp()
libvips/conversion/im_system.c: * 	- add .v suffix (thanks Roland)
libvips/conversion/im_system.c: * 	- use vipsbuf
libvips/conversion/im_system.c: * 	- rewrite to make it simpler
libvips/conversion/im_system.c: * 	- gtkdoc
libvips/conversion/im_system.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_system.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_system.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_system.c:			return( -1 );
libvips/conversion/im_system.c:			return( -1 );
libvips/conversion/im_system.c:	else if( (fp = im_popenf( cmd, "r", im->filename )) ) {
libvips/conversion/im_c2rect.c: *	- from im_c2amph()
libvips/conversion/im_c2rect.c: * 	- modernised
libvips/conversion/im_c2rect.c: * 	- gtk-doc
libvips/conversion/im_c2rect.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_c2rect.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_c2rect.c:	int n = w * im->Bands;
libvips/conversion/im_c2rect.c:	switch( im->BandFmt ) {
libvips/conversion/im_c2rect.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_c2rect.c:                return( -1 );
libvips/conversion/im_c2rect.c:                return( -1 );
libvips/conversion/im_text.c: *	- !HAVE_PANGOFT2 was broken, thanks Kenneth
libvips/conversion/im_text.c: *	- gah, still broken, thanks Stefan
libvips/conversion/im_text.c: * 	- return an error for im_text( "" ) rather than trying to make an
libvips/conversion/im_text.c: * 	- gtkdoc
libvips/conversion/im_text.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_text.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_text.c:	pango_layout_set_markup( layout, text, -1 );
libvips/conversion/im_text.c:                return( -1 );
libvips/conversion/im_text.c:        im_initdesc( out, bitmap->width, bitmap->rows, 1, 
libvips/conversion/im_text.c:                return( -1 );
libvips/conversion/im_text.c:	for( y = 0; y < bitmap->rows; y++ ) 
libvips/conversion/im_text.c:			(PEL *) bitmap->buffer + y * bitmap->pitch ) )
libvips/conversion/im_text.c:			return( -1 );
libvips/conversion/im_text.c:		return( -1 );
libvips/conversion/im_text.c:		return( -1 );
libvips/conversion/im_text.c:	if( pango_layout_get_width( layout ) != -1 )
libvips/conversion/im_text.c:		pango_ft2_render_layout( &bitmap, layout, -left, -top );
libvips/conversion/im_text.c:		return( -1 );
libvips/conversion/im_text.c:		return( -1 );
libvips/conversion/im_text.c:		return( -1 );
libvips/conversion/im_text.c: * @text: utf-8 text string to render
libvips/conversion/im_text.c: * Draw the string @text to an image. @out is a one-band 8-bit
libvips/conversion/im_text.c: * are used for anti-aliasing.
libvips/conversion/im_text.c: * @text is the text to render as a UTF-8 string. It can contain Pango markup,
libvips/conversion/im_text.c: * case, @alignment can be used to set the alignment style for multi-line
libvips/conversion/im_text.c: * text. 0 means left-align, 1 centre, 2 right-align.
libvips/conversion/im_text.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_text.c:	if( !pango_parse_markup( text, -1, 0, NULL, NULL, NULL, NULL ) ) {
libvips/conversion/im_text.c:		return( -1 );
libvips/conversion/im_text.c:		return( -1 );
libvips/conversion/im_text.c:	return( -1 );
libvips/conversion/im_gbandjoin.c:/* im_gbandjoin -- bandwise join of a set of images
libvips/conversion/im_gbandjoin.c: *	- rewritten for partials
libvips/conversion/im_gbandjoin.c: *	- now in ANSI C
libvips/conversion/im_gbandjoin.c: *	- now works for any number of input images, except zero
libvips/conversion/im_gbandjoin.c: *	- new IM_NEW()
libvips/conversion/im_gbandjoin.c: * 	- fall back to im_copy() for 1 input image
libvips/conversion/im_gbandjoin.c: * 	- cleanups
libvips/conversion/im_gbandjoin.c: * 	- gtk-doc
libvips/conversion/im_gbandjoin.c: * 	- im_bandjoin() just calls this
libvips/conversion/im_gbandjoin.c: * 	- works for RAD coding too
libvips/conversion/im_gbandjoin.c: * 	- formatalike inputs
libvips/conversion/im_gbandjoin.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_gbandjoin.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_gbandjoin.c:	IMAGE **in;		/* Array of input images, NULL-terminated */
libvips/conversion/im_gbandjoin.c:	join->nim = nim;
libvips/conversion/im_gbandjoin.c:	if( !(join->in = IM_ARRAY( out, nim + 1, IMAGE * )) || 
libvips/conversion/im_gbandjoin.c:		!(join->is = IM_ARRAY( out, nim, int )) ) 
libvips/conversion/im_gbandjoin.c:	if( im_open_local_array( out, join->in, nim, "im_gbandjoin", "p" ) ||
libvips/conversion/im_gbandjoin.c:		im__formatalike_vec( in, join->in, nim ) )
libvips/conversion/im_gbandjoin.c:		join->is[i] = IM_IMAGE_SIZEOF_PEL( join->in[i] );
libvips/conversion/im_gbandjoin.c:	/* Remember to NULL-terminate. We pass ->in[] to
libvips/conversion/im_gbandjoin.c:	join->in[nim] = NULL;
libvips/conversion/im_gbandjoin.c:	Rect *r = &or->valid;
libvips/conversion/im_gbandjoin.c:	const int ps = IM_IMAGE_SIZEOF_PEL( or->im );
libvips/conversion/im_gbandjoin.c:	for( i = 0; i < join->nim; i++ )
libvips/conversion/im_gbandjoin.c:			return( -1 );
libvips/conversion/im_gbandjoin.c:	for( y = 0; y < r->height; y++ ) {
libvips/conversion/im_gbandjoin.c:		qb = (PEL *) IM_REGION_ADDR( or, r->left, r->top + y );
libvips/conversion/im_gbandjoin.c:		for( i = 0; i < join->nim; i++ ) {
libvips/conversion/im_gbandjoin.c:			int k = join->is[i];
libvips/conversion/im_gbandjoin.c:				r->left, r->top + y );
libvips/conversion/im_gbandjoin.c:			for( x = 0; x < r->width; x++ ) {
libvips/conversion/im_gbandjoin.c: * <link linkend="VIPS-arithmetic">arithmetic</link>).
libvips/conversion/im_gbandjoin.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_gbandjoin.c:		return( -1 );
libvips/conversion/im_gbandjoin.c:		return( -1 );
libvips/conversion/im_gbandjoin.c:			return( -1 );
libvips/conversion/im_gbandjoin.c:		return( -1 );
libvips/conversion/im_gbandjoin.c:	if( im_cp_desc_array( out, join->in ) )
libvips/conversion/im_gbandjoin.c:                return( -1 ); 
libvips/conversion/im_gbandjoin.c:	out->Bands = 0;
libvips/conversion/im_gbandjoin.c:		out->Bands += join->in[i]->Bands;
libvips/conversion/im_gbandjoin.c:	if( im_demand_hint_array( out, IM_THINSTRIP, join->in ) )
libvips/conversion/im_gbandjoin.c:		return( -1 );
libvips/conversion/im_gbandjoin.c:		im_start_many, join_bands, im_stop_many, join->in, join ) )
libvips/conversion/im_gbandjoin.c:		return( -1 );
libvips/conversion/im_gbandjoin.c: * <link linkend="VIPS-arithmetic">arithmetic</link>).
libvips/conversion/im_gbandjoin.c: * Returns: 0 on success, -1 on error
libvips/conversion/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/conversion/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/conversion/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/conversion/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/conversion/Makefile.in:am__mv = mv -f
libvips/conversion/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/conversion/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/conversion/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/conversion/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/conversion/Makefile.in:	$(LDFLAGS) -o $@
libvips/conversion/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
libvips/conversion/Makefile.in:all: all-am
libvips/conversion/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/conversion/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/conversion/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/conversion/Makefile'; \
libvips/conversion/Makefile.in:	  $(AUTOMAKE) --gnu libvips/conversion/Makefile
libvips/conversion/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/conversion/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/conversion/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/conversion/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/conversion/Makefile.in:clean-noinstLTLIBRARIES:
libvips/conversion/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/conversion/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/conversion/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/conversion/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/conversion/Makefile.in:mostlyclean-compile:
libvips/conversion/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/conversion/Makefile.in:distclean-compile:
libvips/conversion/Makefile.in:	-rm -f *.tab.c
libvips/conversion/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/conversion/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/conversion/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/conversion/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/conversion/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/conversion/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/conversion/Makefile.in:mostlyclean-libtool:
libvips/conversion/Makefile.in:	-rm -f *.lo
libvips/conversion/Makefile.in:clean-libtool:
libvips/conversion/Makefile.in:	-rm -rf .libs _libs
libvips/conversion/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/conversion/Makefile.in:	mkid -fID $$unique
libvips/conversion/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/conversion/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/conversion/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/conversion/Makefile.in:	  if test $$# -gt 0; then \
libvips/conversion/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/conversion/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/conversion/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/conversion/Makefile.in:distclean-tags:
libvips/conversion/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/conversion/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/conversion/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/conversion/Makefile.in:			   sort -u` ;; \
libvips/conversion/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/conversion/Makefile.in:	  if test -d $$d/$$file; then \
libvips/conversion/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/conversion/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/conversion/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/conversion/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/conversion/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/conversion/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/conversion/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/conversion/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/conversion/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/conversion/Makefile.in:check-am: all-am
libvips/conversion/Makefile.in:check: check-am
libvips/conversion/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/conversion/Makefile.in:install: install-am
libvips/conversion/Makefile.in:install-exec: install-exec-am
libvips/conversion/Makefile.in:install-data: install-data-am
libvips/conversion/Makefile.in:uninstall: uninstall-am
libvips/conversion/Makefile.in:install-am: all-am
libvips/conversion/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/conversion/Makefile.in:installcheck: installcheck-am
libvips/conversion/Makefile.in:install-strip:
libvips/conversion/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/conversion/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/conversion/Makefile.in:mostlyclean-generic:
libvips/conversion/Makefile.in:clean-generic:
libvips/conversion/Makefile.in:distclean-generic:
libvips/conversion/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/conversion/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/conversion/Makefile.in:maintainer-clean-generic:
libvips/conversion/Makefile.in:clean: clean-am
libvips/conversion/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/conversion/Makefile.in:	mostlyclean-am
libvips/conversion/Makefile.in:distclean: distclean-am
libvips/conversion/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/conversion/Makefile.in:	-rm -f Makefile
libvips/conversion/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/conversion/Makefile.in:	distclean-tags
libvips/conversion/Makefile.in:dvi: dvi-am
libvips/conversion/Makefile.in:dvi-am:
libvips/conversion/Makefile.in:html: html-am
libvips/conversion/Makefile.in:html-am:
libvips/conversion/Makefile.in:info: info-am
libvips/conversion/Makefile.in:info-am:
libvips/conversion/Makefile.in:install-data-am:
libvips/conversion/Makefile.in:install-dvi: install-dvi-am
libvips/conversion/Makefile.in:install-dvi-am:
libvips/conversion/Makefile.in:install-exec-am:
libvips/conversion/Makefile.in:install-html: install-html-am
libvips/conversion/Makefile.in:install-html-am:
libvips/conversion/Makefile.in:install-info: install-info-am
libvips/conversion/Makefile.in:install-info-am:
libvips/conversion/Makefile.in:install-man:
libvips/conversion/Makefile.in:install-pdf: install-pdf-am
libvips/conversion/Makefile.in:install-pdf-am:
libvips/conversion/Makefile.in:install-ps: install-ps-am
libvips/conversion/Makefile.in:install-ps-am:
libvips/conversion/Makefile.in:installcheck-am:
libvips/conversion/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/conversion/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/conversion/Makefile.in:	-rm -f Makefile
libvips/conversion/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/conversion/Makefile.in:mostlyclean: mostlyclean-am
libvips/conversion/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/conversion/Makefile.in:	mostlyclean-libtool
libvips/conversion/Makefile.in:pdf: pdf-am
libvips/conversion/Makefile.in:pdf-am:
libvips/conversion/Makefile.in:ps: ps-am
libvips/conversion/Makefile.in:ps-am:
libvips/conversion/Makefile.in:uninstall-am:
libvips/conversion/Makefile.in:.MAKE: install-am install-strip
libvips/conversion/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/conversion/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/conversion/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/conversion/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/conversion/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/conversion/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/conversion/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/conversion/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/conversion/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/conversion/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/conversion/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/conversion/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/conversion/im_scale.c: *	- adapted for partial v2
libvips/conversion/im_scale.c: * 	- ANSI
libvips/conversion/im_scale.c: *	- calculation of offset now includes scale
libvips/conversion/im_scale.c: * 	- set Type on output too
libvips/conversion/im_scale.c: * 	- what? no, don't set Type, useful to be able to scale histograms, for
libvips/conversion/im_scale.c: * 	- gtkdoc
libvips/conversion/im_scale.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_scale.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_scale.c: * as unsigned 8-bit, scaled so that the maximum value is 255 and the
libvips/conversion/im_scale.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_scale.c:		return( -1 );
libvips/conversion/im_scale.c:	mn = stats->coeff[0];
libvips/conversion/im_scale.c:	mx = stats->coeff[1];
libvips/conversion/im_scale.c:		return( im_black( out, in->Xsize, in->Ysize, in->Bands ) );
libvips/conversion/im_scale.c:	scale = 255.0 / (mx - mn);
libvips/conversion/im_scale.c:	offset = -(mn * scale);
libvips/conversion/im_scale.c:		return( -1 );
libvips/conversion/conver_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/conver_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/conver_dispatch.c: * @see_also: <link linkend="libvips-resample">resample</link>
libvips/conversion/conver_dispatch.c: * can change the band format (for example, cast to 32-bit unsigned
libvips/conversion/conver_dispatch.c:		return( -1 );
libvips/conversion/conver_dispatch.c:		return( -1 );
libvips/conversion/conver_dispatch.c:		return( -1 );
libvips/conversion/conver_dispatch.c:		return( -1 );
libvips/conversion/conver_dispatch.c:		return( -1 );
libvips/conversion/conver_dispatch.c:	return( im_gbandjoin( iv->vec, argv[1], iv->n ) );
libvips/conversion/conver_dispatch.c:	"join two non-complex images to form complex",
libvips/conversion/conver_dispatch.c:	"flip image left-right",
libvips/conversion/conver_dispatch.c:	"flip image top-bottom",
libvips/conversion/conver_dispatch.c:	"insert sub-image into main image at position",
libvips/conversion/conver_dispatch.c:	if( xv->n != yv->n ) {
libvips/conversion/conver_dispatch.c:		return( -1 );
libvips/conversion/conver_dispatch.c:	if( im_insertset( argv[0], argv[1], argv[2], xv->n, xv->vec, yv->vec ) )
libvips/conversion/conver_dispatch.c:		return( -1 );
libvips/conversion/conver_dispatch.c:	"insert sub-image into main image at position, no expansion",
libvips/conversion/conver_dispatch.c:	"join two images left-right",
libvips/conversion/conver_dispatch.c:	"join two images top-bottom",
libvips/conversion/conver_dispatch.c:	return( im_mask2vips( mo->mask, argv[1] ) );
libvips/conversion/conver_dispatch.c:	if( !(mo->mask = im_vips2mask( argv[0], mo->name )) )
libvips/conversion/conver_dispatch.c:		return( -1 );
libvips/conversion/conver_dispatch.c:	"scale image linearly to fit range 0-255",
libvips/conversion/conver_dispatch.c:	"logarithmic scale of image to fit range 0-255",
libvips/conversion/im_msb.c: * Written on: 2006-03-13
libvips/conversion/im_msb.c: * 	- removed extra im_free() in im_copy() fallback
libvips/conversion/im_msb.c: * 	- removed warning on uchar fallback: it happens a lot with nip2 and
libvips/conversion/im_msb.c: * 	- revised, cleanups
libvips/conversion/im_msb.c: * 	- gtkdoc
libvips/conversion/im_msb.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_msb.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_msb.c:	unsigned char *stop = out + n * msb->repeat;
libvips/conversion/im_msb.c:	for( in += msb->index; out < stop; in += msb->width, ++out )
libvips/conversion/im_msb.c:	unsigned char *stop = out + n * msb->repeat;
libvips/conversion/im_msb.c:	for( in += msb->index; out < stop; in += msb->width, ++out )
libvips/conversion/im_msb.c: * Turn any integer image to 8-bit unsigned char by discarding all but the most
libvips/conversion/im_msb.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_msb.c:	if( in->Coding == IM_CODING_NONE &&
libvips/conversion/im_msb.c:		in->BandFmt == IM_BANDFMT_UCHAR )
libvips/conversion/im_msb.c:		return( -1 );
libvips/conversion/im_msb.c:	if( in->Coding == IM_CODING_NONE ) {
libvips/conversion/im_msb.c:			return( -1 );
libvips/conversion/im_msb.c:		msb->width = IM_IMAGE_SIZEOF_ELEMENT( in );
libvips/conversion/im_msb.c:		msb->index = im_amiMSBfirst() ? 0 : msb->width - 1;
libvips/conversion/im_msb.c:		msb->repeat = in->Bands;
libvips/conversion/im_msb.c:		if( vips_bandfmt_isuint( in->BandFmt ) )
libvips/conversion/im_msb.c:	else if( IM_CODING_LABQ == in->Coding )
libvips/conversion/im_msb.c:		return( -1 );
libvips/conversion/im_msb.c:		return( -1 );
libvips/conversion/im_msb.c:	out->BandFmt = IM_BANDFMT_UCHAR;
libvips/conversion/im_msb.c:	out->Coding = IM_CODING_NONE;
libvips/conversion/im_msb.c: * Turn any integer image to a single-band 8-bit unsigned char by discarding 
libvips/conversion/im_msb.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_msb.c:		return( -1 );
libvips/conversion/im_msb.c:		return( -1 );
libvips/conversion/im_msb.c:	if( in->Coding == IM_CODING_NONE ) {
libvips/conversion/im_msb.c:			return( -1 );
libvips/conversion/im_msb.c:		if( band >= in->Bands ) {
libvips/conversion/im_msb.c:			return( -1 );
libvips/conversion/im_msb.c:		msb->width = IM_IMAGE_SIZEOF_ELEMENT( in );
libvips/conversion/im_msb.c:		msb->index = im_amiMSBfirst() ? 
libvips/conversion/im_msb.c:			msb->width * band : msb->width * (band + 1) - 1;
libvips/conversion/im_msb.c:		msb->repeat = 1;
libvips/conversion/im_msb.c:		if( vips_bandfmt_isuint( in->BandFmt ) )
libvips/conversion/im_msb.c:	else if( IM_CODING_LABQ == in->Coding ) {
libvips/conversion/im_msb.c:			return( -1 );
libvips/conversion/im_msb.c:		msb->width = 4;
libvips/conversion/im_msb.c:		msb->repeat = 1;
libvips/conversion/im_msb.c:		msb->index = band;
libvips/conversion/im_msb.c:		return( -1 );
libvips/conversion/im_msb.c:		return( -1 );
libvips/conversion/im_msb.c:	out->BandFmt = IM_BANDFMT_UCHAR;
libvips/conversion/im_msb.c:	out->Coding = IM_CODING_NONE;
libvips/conversion/im_msb.c:	out->Bands = 1;
libvips/conversion/im_c2imag.c: *	- im_c2amph() adapted to make im_c2real() and im_c2imag()
libvips/conversion/im_c2imag.c: * 	- modernised
libvips/conversion/im_c2imag.c: * 	- gtk-doc
libvips/conversion/im_c2imag.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_c2imag.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_c2imag.c:	int n = w * im->Bands;
libvips/conversion/im_c2imag.c:	switch( im->BandFmt ) {
libvips/conversion/im_c2imag.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_c2imag.c:                return( -1 );
libvips/conversion/im_c2imag.c:	if( in->BandFmt == IM_BANDFMT_DPCOMPLEX ) 
libvips/conversion/im_c2imag.c:		out->BandFmt = IM_BANDFMT_DOUBLE;
libvips/conversion/im_c2imag.c:		out->BandFmt = IM_BANDFMT_FLOAT;
libvips/conversion/im_c2imag.c:                return( -1 );
libvips/conversion/im_fliphor.c: *	- now allows IM_CODING_LABQ too
libvips/conversion/im_fliphor.c: *	- yuk! needs rewriting
libvips/conversion/im_fliphor.c: *	- rewritten
libvips/conversion/im_fliphor.c: *	- sets Xoffset / Yoffset
libvips/conversion/im_fliphor.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_fliphor.c: * 	- cleanups
libvips/conversion/im_fliphor.c: * 	- gtkdoc
libvips/conversion/im_fliphor.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_fliphor.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_fliphor.c:	Rect *r = &or->valid;
libvips/conversion/im_fliphor.c:	int le = r->left;
libvips/conversion/im_fliphor.c:	int to = r->top;
libvips/conversion/im_fliphor.c:	int ps = IM_IMAGE_SIZEOF_PEL( ir->im );	/* sizeof pel */
libvips/conversion/im_fliphor.c:	int hgt = ir->im->Xsize - r->width;
libvips/conversion/im_fliphor.c:	in.left = hgt - r->left;
libvips/conversion/im_fliphor.c:	lastx = IM_RECT_RIGHT( &in ) - 1;
libvips/conversion/im_fliphor.c:		return( -1 );
libvips/conversion/im_fliphor.c:			p -= ps;
libvips/conversion/im_fliphor.c: * Flips an image left-right.
libvips/conversion/im_fliphor.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_fliphor.c:		return( -1 );
libvips/conversion/im_fliphor.c:	out->Xoffset = in->Xsize;
libvips/conversion/im_fliphor.c:	out->Yoffset = 0;
libvips/conversion/im_system_image.c: * 	- from im_system()
libvips/conversion/im_system_image.c: * 	- gtkdoc
libvips/conversion/im_system_image.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_system_image.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_system_image.c:	const char *in_name = in_image->filename;
libvips/conversion/im_system_image.c:		return( -1 );
libvips/conversion/im_system_image.c: * something like "vips-49857-1" for the first %%s in @in_format, then
libvips/conversion/im_system_image.c: *   "%s.jpg", "%s.jpg", "convert %s -swirl 45 %s", 
libvips/conversion/im_system_image.c:		(im_callback_fn) unlink, out->filename, NULL ) ) {
libvips/conversion/im_c2amph.c: *	- stupid stupid includes and externs fixed
libvips/conversion/im_c2amph.c: *	- I have been editing for 1 1/2 hours and I'm still drowning in
libvips/conversion/im_c2amph.c: *	- modernised
libvips/conversion/im_c2amph.c: *	- degree output, for consistency
libvips/conversion/im_c2amph.c: *	- slightly better behaviour in edge cases
libvips/conversion/im_c2amph.c: * 	- modernised
libvips/conversion/im_c2amph.c: * 	- gtk-doc
libvips/conversion/im_c2amph.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_c2amph.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_c2amph.c:	int n = w * im->Bands;
libvips/conversion/im_c2amph.c:	switch( im->BandFmt ) {
libvips/conversion/im_c2amph.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_c2amph.c:                return( -1 );
libvips/conversion/im_c2amph.c:                return( -1 );
libvips/conversion/im_zoom.c: *	- rewritten to ANSI-C
libvips/conversion/im_zoom.c: *	- now works for any type, including IM_CODING_LABQ
libvips/conversion/im_zoom.c: *	- new IM_ARRAY() macro
libvips/conversion/im_zoom.c: *	- separate x and y zoom factors
libvips/conversion/im_zoom.c: *	- partial, yuk! this is so complicated ...
libvips/conversion/im_zoom.c: *	- sets demand_hint
libvips/conversion/im_zoom.c: *	- check for integer overflow in zoom facs ... was happening with ip's 
libvips/conversion/im_zoom.c: *	- fall back to im_copy() for x & y factors == 1
libvips/conversion/im_zoom.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_zoom.c: * 	- gtkdoc
libvips/conversion/im_zoom.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_zoom.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_zoom.c: * sizes of the order of tens of bytes. char-wise copy is quicker than 
libvips/conversion/im_zoom.c: * Also, I haven't tested it but int-wise copying may be faster still, as 
libvips/conversion/im_zoom.c: * tcv.  2006-09-01
libvips/conversion/im_zoom.c:#define ROUND_DOWN(N,P) ((N) - ((N) % P)) 
libvips/conversion/im_zoom.c:#define ROUND_UP(N,P) (ROUND_DOWN( (N) + (P) - 1, (P) ))
libvips/conversion/im_zoom.c:	const int ps = IM_IMAGE_SIZEOF_PEL( ir->im );
libvips/conversion/im_zoom.c:	const int rs = ps * (right - left);
libvips/conversion/im_zoom.c:	const int ileft = left / zm->xfac;
libvips/conversion/im_zoom.c:	const int iright = right / zm->xfac;
libvips/conversion/im_zoom.c:	const int itop = top / zm->yfac;
libvips/conversion/im_zoom.c:	const int ibottom = bottom / zm->yfac;
libvips/conversion/im_zoom.c:		right % zm->xfac == 0 &&
libvips/conversion/im_zoom.c:		left % zm->xfac == 0 &&
libvips/conversion/im_zoom.c:		top % zm->yfac == 0 &&
libvips/conversion/im_zoom.c:		bottom % zm->yfac == 0 );
libvips/conversion/im_zoom.c:		PEL *q = (PEL *) IM_REGION_ADDR( or, left, y * zm->yfac );
libvips/conversion/im_zoom.c:			for( z = 0; z < zm->xfac; z++ ) {
libvips/conversion/im_zoom.c:		/* Copy the expanded line yfac-1 times.
libvips/conversion/im_zoom.c:		for( z = 1; z < zm->yfac; z++ ) {
libvips/conversion/im_zoom.c:/* Paint the part of the region containing only part-pels.
libvips/conversion/im_zoom.c:	const int ps = IM_IMAGE_SIZEOF_PEL( ir->im );
libvips/conversion/im_zoom.c:	const int rs = ps * (right - left);
libvips/conversion/im_zoom.c:	const int ix = left / zm->xfac;
libvips/conversion/im_zoom.c:	const int iy = top / zm->yfac;
libvips/conversion/im_zoom.c:	const int ptbound = (iy + 1) * zm->yfac - top;
libvips/conversion/im_zoom.c:	const int ptbot = bottom - top;
libvips/conversion/im_zoom.c:	g_assert( right - left >= 0 && bottom - top >= 0 );
libvips/conversion/im_zoom.c:		PEL *p = (PEL *) IM_REGION_ADDR( ir, ix, y / zm->yfac );
libvips/conversion/im_zoom.c:		int xt = (ix + 1) * zm->xfac - left;
libvips/conversion/im_zoom.c:			--xt;
libvips/conversion/im_zoom.c:				xt = zm->xfac;
libvips/conversion/im_zoom.c:		yt = zm->yfac;
libvips/conversion/im_zoom.c:	const Rect *r = &or->valid;
libvips/conversion/im_zoom.c:	 * part-pixels all around the edges.
libvips/conversion/im_zoom.c:	left = ROUND_DOWN( r->left, zm->xfac );
libvips/conversion/im_zoom.c:	right = ROUND_UP( ri, zm->xfac );
libvips/conversion/im_zoom.c:	top = ROUND_DOWN( r->top, zm->yfac );
libvips/conversion/im_zoom.c:	bottom = ROUND_UP( bo, zm->yfac );
libvips/conversion/im_zoom.c:	width = right - left;
libvips/conversion/im_zoom.c:	height = bottom - top;
libvips/conversion/im_zoom.c:	s.left = left / zm->xfac;
libvips/conversion/im_zoom.c:	s.top = top / zm->yfac;
libvips/conversion/im_zoom.c:	s.width = width / zm->xfac;
libvips/conversion/im_zoom.c:	s.height = height / zm->yfac;
libvips/conversion/im_zoom.c:		return( -1 );
libvips/conversion/im_zoom.c:	left = ROUND_UP( r->left, zm->xfac );
libvips/conversion/im_zoom.c:	right = ROUND_DOWN( ri, zm->xfac );
libvips/conversion/im_zoom.c:	top = ROUND_UP( r->top, zm->yfac );
libvips/conversion/im_zoom.c:	bottom = ROUND_DOWN( bo, zm->yfac );
libvips/conversion/im_zoom.c:	width = right - left;
libvips/conversion/im_zoom.c:	height = bottom - top;
libvips/conversion/im_zoom.c:	if( top - r->top > 0 ) 
libvips/conversion/im_zoom.c:			r->left, ri, r->top, IM_MIN( top, bo ) );
libvips/conversion/im_zoom.c:	if( left - r->left > 0 && height > 0 )
libvips/conversion/im_zoom.c:			r->left, IM_MIN( left, ri ), top, bottom );
libvips/conversion/im_zoom.c:	if( ri - right > 0 && height > 0 )
libvips/conversion/im_zoom.c:			IM_MAX( right, r->left ), ri, top, bottom );
libvips/conversion/im_zoom.c:	if( bo - bottom > 0 && height >= 0 )
libvips/conversion/im_zoom.c:			r->left, ri, IM_MAX( bottom, r->top ), bo );
libvips/conversion/im_zoom.c: * Zoom an image by repeating pixels. This is fast nearest-neighbour
libvips/conversion/im_zoom.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_zoom.c:		return( -1 );
libvips/conversion/im_zoom.c:	if( (double) in->Xsize * xfac > (double) INT_MAX / 2 || 
libvips/conversion/im_zoom.c:		(double) in->Ysize * yfac > (double) INT_MAX / 2 ) { 
libvips/conversion/im_zoom.c:		return( -1 );
libvips/conversion/im_zoom.c:		return( -1 );
libvips/conversion/im_zoom.c:		return( -1 );
libvips/conversion/im_zoom.c:	out->Xsize = in->Xsize * xfac;
libvips/conversion/im_zoom.c:	out->Ysize = in->Ysize * yfac;
libvips/conversion/im_zoom.c:		return( -1 );
libvips/conversion/im_zoom.c:	zm->xfac = xfac;
libvips/conversion/im_zoom.c:	zm->yfac = yfac;
libvips/conversion/im_zoom.c:		return( -1 );
libvips/conversion/im_zoom.c:		return( -1 );
libvips/conversion/im_extract.c: *	- speed up! why wasn't this done before? Why am I stupid?
libvips/conversion/im_extract.c: *	- layout, messages fixed
libvips/conversion/im_extract.c: *	- adapted for partial v2
libvips/conversion/im_extract.c: *	- ANSIfied
libvips/conversion/im_extract.c: *	- behaviour for IM_CODING_LABQ fixed
libvips/conversion/im_extract.c: *	- better messages
libvips/conversion/im_extract.c: *	- new IM_NEW()
libvips/conversion/im_extract.c: *	- new use of im_region_region()
libvips/conversion/im_extract.c: *	- im_extract_area() and im_extract_band() added
libvips/conversion/im_extract.c: *	- im_extract_band() now numbers from zero
libvips/conversion/im_extract.c: *	- oh what pain, im_extract now numbers bands from zero as well
libvips/conversion/im_extract.c: *	- zero xoff/yoff for extracted area
libvips/conversion/im_extract.c: *	- nope, -ve the origin
libvips/conversion/im_extract.c: *	- added im_extract_bands(), remove many bands from image
libvips/conversion/im_extract.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_extract.c: * 	- cleanups
libvips/conversion/im_extract.c: * 	- gtkdoc
libvips/conversion/im_extract.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_extract.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_extract.c:	Rect *r = &or->valid;
libvips/conversion/im_extract.c:	int es = IM_IMAGE_SIZEOF_ELEMENT( ir->im );	
libvips/conversion/im_extract.c:	int ipel = IM_IMAGE_SIZEOF_PEL( ir->im );
libvips/conversion/im_extract.c:	int opel = IM_IMAGE_SIZEOF_PEL( or->im );
libvips/conversion/im_extract.c:	iarea = or->valid;
libvips/conversion/im_extract.c:	iarea.left += extract->left;
libvips/conversion/im_extract.c:	iarea.top += extract->top;
libvips/conversion/im_extract.c:		return( -1 );
libvips/conversion/im_extract.c:	for( y = 0; y < r->height; y++ ) {
libvips/conversion/im_extract.c:			extract->left + r->left, 
libvips/conversion/im_extract.c:			extract->top + r->top + y ) + 
libvips/conversion/im_extract.c:			extract->band * es;
libvips/conversion/im_extract.c:		q = IM_REGION_ADDR( or, r->left, r->top + y );
libvips/conversion/im_extract.c:		for( x = 0; x < r->width; x++ ) {
libvips/conversion/im_extract.c:	iarea = or->valid;
libvips/conversion/im_extract.c:	iarea.left += extract->left;
libvips/conversion/im_extract.c:	iarea.top += extract->top;
libvips/conversion/im_extract.c:		return( -1 );
libvips/conversion/im_extract.c:	if( im_region_region( or, ir, &or->valid, iarea.left, iarea.top ) )
libvips/conversion/im_extract.c:		return( -1 );
libvips/conversion/im_extract.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_extract.c:		return( -1 );
libvips/conversion/im_extract.c:        if( band < 0 || nbands < 1 || band + nbands > in->Bands ) {
libvips/conversion/im_extract.c:                return( -1 );
libvips/conversion/im_extract.c:	if( left + width > in->Xsize ||
libvips/conversion/im_extract.c:		top + height > in->Ysize ||
libvips/conversion/im_extract.c:		return( -1 );
libvips/conversion/im_extract.c:                 return( -1 );
libvips/conversion/im_extract.c:        out->Bands = nbands;
libvips/conversion/im_extract.c:        out->Xsize = width;
libvips/conversion/im_extract.c:        out->Ysize = height;
libvips/conversion/im_extract.c:                return( -1 );
libvips/conversion/im_extract.c:                return( -1 );
libvips/conversion/im_extract.c:        extract->in = in;
libvips/conversion/im_extract.c:        extract->out = out;
libvips/conversion/im_extract.c:        extract->left = left;
libvips/conversion/im_extract.c:        extract->top = top;
libvips/conversion/im_extract.c:        extract->width = width;
libvips/conversion/im_extract.c:        extract->height = height;
libvips/conversion/im_extract.c:        extract->band = band;
libvips/conversion/im_extract.c:        extract->nbands = nbands;
libvips/conversion/im_extract.c:	if( band == 0 && nbands == in->Bands ) {
libvips/conversion/im_extract.c:			return( -1 );
libvips/conversion/im_extract.c:			return( -1 );
libvips/conversion/im_extract.c:        out->Xoffset = -left;
libvips/conversion/im_extract.c:        out->Yoffset = -top;
libvips/conversion/im_extract.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_extract.c:		left, top, width, height, 0, in->Bands ) );
libvips/conversion/im_extract.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_extract.c:		0, 0, in->Xsize, in->Ysize, band, nbands ) );
libvips/conversion/im_extract.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_gaussnoise.c: *	- im_outcheck() call added
libvips/conversion/im_gaussnoise.c: *	- declaration for drand48() added
libvips/conversion/im_gaussnoise.c: *	- partialised, adapting im_black()
libvips/conversion/im_gaussnoise.c: *	- drand48() chaged to random() for portability
libvips/conversion/im_gaussnoise.c: *	- tries rand() if random() is not available
libvips/conversion/im_gaussnoise.c: *	- uses RAND_MAX, d'oh
libvips/conversion/im_gaussnoise.c: * 	- cleanups
libvips/conversion/im_gaussnoise.c: * 	- gtkdoc
libvips/conversion/im_gaussnoise.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_gaussnoise.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_gaussnoise.c:/* Generate function --- just fill the region with noise. "dummy" is our
libvips/conversion/im_gaussnoise.c:	for( y = 0; y < or->valid.height; y++ ) {
libvips/conversion/im_gaussnoise.c:			IM_REGION_ADDR( or, or->valid.left, y + or->valid.top );
libvips/conversion/im_gaussnoise.c:			q[x] = (sum - 6.0) * gin->sigma + gin->mean;
libvips/conversion/im_gaussnoise.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_gaussnoise.c:		return( -1 );
libvips/conversion/im_gaussnoise.c:		return( -1 );
libvips/conversion/im_gaussnoise.c:		return( -1 );
libvips/conversion/im_gaussnoise.c:		return( -1 );
libvips/conversion/im_gaussnoise.c:	gin->mean = mean;
libvips/conversion/im_gaussnoise.c:	gin->sigma = sigma;
libvips/conversion/im_gaussnoise.c:		return( -1 );
libvips/conversion/im_flipver.c: *	- adapted from new im_fliphor().
libvips/conversion/im_flipver.c: *	- ooops! IM_REGION_SIZEOF_LINE() not valid until im_prepare() has been 
libvips/conversion/im_flipver.c: *	- ahem, memcpy() line size calc was wrong, occasional segvs
libvips/conversion/im_flipver.c: *	- sets Xoffset / Yoffset
libvips/conversion/im_flipver.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_flipver.c: * 	- cleanups
libvips/conversion/im_flipver.c: * 	- gtkdoc
libvips/conversion/im_flipver.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_flipver.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_flipver.c:	Rect *r = &or->valid;
libvips/conversion/im_flipver.c:	int le = r->left;
libvips/conversion/im_flipver.c:	int to = r->top;
libvips/conversion/im_flipver.c:	in.top = ir->im->Ysize - bo;
libvips/conversion/im_flipver.c:		return( -1 );
libvips/conversion/im_flipver.c:	p = (PEL *) IM_REGION_ADDR( ir, le, in.top + in.height - 1 );
libvips/conversion/im_flipver.c:		p -= psk;
libvips/conversion/im_flipver.c: * Flips an image top-bottom.
libvips/conversion/im_flipver.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_flipver.c:		return( -1 );
libvips/conversion/im_flipver.c:	out->Xoffset = 0;
libvips/conversion/im_flipver.c:	out->Yoffset = in->Ysize;
libvips/conversion/im_ri2c.c: *	- rewritten with partials
libvips/conversion/im_ri2c.c: *	- more general
libvips/conversion/im_ri2c.c: * 	- bandalike
libvips/conversion/im_ri2c.c: * 	- better upcasting
libvips/conversion/im_ri2c.c: * 	- gtkdoc
libvips/conversion/im_ri2c.c: * 	- cleanups
libvips/conversion/im_ri2c.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_ri2c.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_ri2c.c:	int len = n * im->Bands;
libvips/conversion/im_ri2c.c:	switch( im->BandFmt ) {
libvips/conversion/im_ri2c.c: * must have one band. In this case, an n-band image is formed from the 
libvips/conversion/im_ri2c.c: * one-band image by joining n copies of the one-band image together, and then
libvips/conversion/im_ri2c.c: * the two n-band images are operated upon.
libvips/conversion/im_ri2c.c: * <link linkend="VIPS-arithmetic">arithmetic</link>).
libvips/conversion/im_ri2c.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_ri2c.c:	/* Check input image. We don't need to check that sizes match --
libvips/conversion/im_ri2c.c:		return( -1 );
libvips/conversion/im_ri2c.c:	if( in1->BandFmt == IM_BANDFMT_DOUBLE || 
libvips/conversion/im_ri2c.c:		in2->BandFmt == IM_BANDFMT_DOUBLE ) 
libvips/conversion/im_ri2c.c:		return( -1 );
libvips/conversion/im_ri2c.c:	/* Remember to NULL-terminate.
libvips/conversion/im_ri2c.c:		return( -1 );
libvips/conversion/im_ri2c.c:	out->BandFmt = fmt == IM_BANDFMT_DOUBLE ? 
libvips/conversion/im_ri2c.c:		return( -1 );
libvips/conversion/im_scaleps.c: *	- externs fixed
libvips/conversion/im_scaleps.c: *	- includes fixed
libvips/conversion/im_scaleps.c: *	- ANSIfied
libvips/conversion/im_scaleps.c: *	- cleaned up
libvips/conversion/im_scaleps.c: *	- rewritten ... got rid of the stuff for handling -ves, never used
libvips/conversion/im_scaleps.c: * 	- gtkdoc
libvips/conversion/im_scaleps.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_scaleps.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_scaleps.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_scaleps.c:	if( im_open_local_array( out, t, 4, "im_scaleps-1", "p" ) || 
libvips/conversion/im_scaleps.c:		return( -1 );
libvips/conversion/im_scaleps.c:		return( im_black( out, in->Xsize, in->Ysize, in->Bands ) );
libvips/conversion/im_scaleps.c:		return( -1 );
libvips/conversion/im_replicate.c: *	- some optimisations for some cases
libvips/conversion/im_replicate.c: * 	- gtkdoc
libvips/conversion/im_replicate.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_replicate.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_replicate.c:	Rect *r = &or->valid;
libvips/conversion/im_replicate.c:	int twidth = in->Xsize;
libvips/conversion/im_replicate.c:	int theight = in->Ysize;
libvips/conversion/im_replicate.c:	int xs = (r->left / twidth) * twidth;
libvips/conversion/im_replicate.c:	int ys = (r->top / theight) * theight;
libvips/conversion/im_replicate.c:	/* The tile enclosing the top-left corner of the requested area.
libvips/conversion/im_replicate.c:	/* If the request fits inside a single tile, we can just pointer-copy.
libvips/conversion/im_replicate.c:		irect.left -= xs;
libvips/conversion/im_replicate.c:		irect.top -= ys;
libvips/conversion/im_replicate.c:			return( -1 );
libvips/conversion/im_replicate.c:			return( -1 );
libvips/conversion/im_replicate.c:			paint.left -= x;
libvips/conversion/im_replicate.c:			paint.top -= y;
libvips/conversion/im_replicate.c:				return( -1 );
libvips/conversion/im_replicate.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_replicate.c:		return( -1 );
libvips/conversion/im_replicate.c:		return( -1 );
libvips/conversion/im_replicate.c:	out->Xsize *= across;
libvips/conversion/im_replicate.c:	out->Ysize *= down;
libvips/conversion/im_replicate.c:		return( -1 );
libvips/conversion/im_replicate.c:		return( -1 );
libvips/conversion/im_wrap.c: * Written on: 2008-01-15
libvips/conversion/im_wrap.c: * 	- rewritten in terms of im_replicate()/im_extract_area()
libvips/conversion/im_wrap.c: * 	- gtkdoc
libvips/conversion/im_wrap.c: * 	- allows any x/y 
libvips/conversion/im_wrap.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_wrap.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_wrap.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_wrap.c:	x = x < 0 ? -x % in->Xsize : in->Xsize - x % in->Xsize;
libvips/conversion/im_wrap.c:	y = y < 0 ? -y % in->Ysize : in->Ysize - y % in->Ysize;
libvips/conversion/im_wrap.c:		im_extract_area( t, out, x, y, in->Xsize, in->Ysize ) )
libvips/conversion/im_wrap.c:		return( -1 );
libvips/conversion/im_wrap.c:	out->Xoffset = x;
libvips/conversion/im_wrap.c:	out->Yoffset = y;
libvips/conversion/im_copy.c: *	- adapted to work with partial images
libvips/conversion/im_copy.c: *	- adapted for partial v2
libvips/conversion/im_copy.c: *	- and ANSI C
libvips/conversion/im_copy.c: *	- now does IM_CODING_LABQ too
libvips/conversion/im_copy.c: *	- new use of im_region_region()
libvips/conversion/im_copy.c: *	- added im_copy_set()
libvips/conversion/im_copy.c: *	- hint is IM_ANY
libvips/conversion/im_copy.c: *	- added xoff/yoff to copy_set
libvips/conversion/im_copy.c: *	- im_copy() now zeros Xoffset/Yoffset (since origin is the same as
libvips/conversion/im_copy.c: *	- added im_copy_swap()
libvips/conversion/im_copy.c: *	- added im_copy_morph()
libvips/conversion/im_copy.c: *	- oop, im_copy_set() was messed up
libvips/conversion/im_copy.c: * 	- added im_copy_set_meta(), handy wrapper for nip2 to set meta fields
libvips/conversion/im_copy.c: * 	- moved im__convert_saveable() here so it's always defined (was part
libvips/conversion/im_copy.c: * 	- added im__saveable_t ... so we can have CMYK JPEG write
libvips/conversion/im_copy.c: * 	- added IM_CODING_RAD support
libvips/conversion/im_copy.c: * 	- gtk-doc
libvips/conversion/im_copy.c: * 	- cleanups
libvips/conversion/im_copy.c: * 	- removed im_copy_from() and associated stuff
libvips/conversion/im_copy.c: * 	- added im_copy_native()
libvips/conversion/im_copy.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_copy.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_copy.c:	Rect *r = &or->valid;
libvips/conversion/im_copy.c:		return( -1 );
libvips/conversion/im_copy.c:	if( im_region_region( or, ir, r, r->left, r->top ) )
libvips/conversion/im_copy.c:		return( -1 );
libvips/conversion/im_copy.c:		return( -1 );
libvips/conversion/im_copy.c:		return( -1 );
libvips/conversion/im_copy.c:		return( -1 );
libvips/conversion/im_copy.c:		return( -1 );
libvips/conversion/im_copy.c:	out->Type = type;
libvips/conversion/im_copy.c:	out->Xres = xres;
libvips/conversion/im_copy.c:	out->Yres = yres;
libvips/conversion/im_copy.c:	out->Xoffset = xoffset;
libvips/conversion/im_copy.c:	out->Yoffset = yoffset;
libvips/conversion/im_copy.c:	out->Bands = bands;
libvips/conversion/im_copy.c:	out->BandFmt = bandfmt;
libvips/conversion/im_copy.c:	out->Coding = coding;
libvips/conversion/im_copy.c:	/* Sanity check: we (may) have changed bytes-per-pixel since we've
libvips/conversion/im_copy.c:		return( -1 );
libvips/conversion/im_copy.c:		return( -1 );
libvips/conversion/im_copy.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_copy.c:		in->Type, in->Xres, in->Yres, 0, 0 ) );
libvips/conversion/im_copy.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_copy.c:		in->Bands, in->BandFmt, in->Coding ) );
libvips/conversion/im_copy.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_copy.c:		in->Type, in->Xres, in->Yres, 0, 0,
libvips/conversion/im_copy.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_copy.c:/* Swap 4- of bytes.
libvips/conversion/im_copy.c:/* Swap 8- of bytes.
libvips/conversion/im_copy.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_copy.c:                return( -1 );
libvips/conversion/im_copy.c:	switch( in->BandFmt ) {
libvips/conversion/im_copy.c:			return( -1 );
libvips/conversion/im_copy.c:			return( -1 );
libvips/conversion/im_copy.c:			return( -1 );
libvips/conversion/im_copy.c:			return( -1 );
libvips/conversion/im_copy.c:		return( -1 );
libvips/conversion/im_copy.c: * @is_msb_first: %TRUE if @in is in most-significant first form
libvips/conversion/im_copy.c: * Returns: 0 on success, -1 on error.
libvips/conversion/im_copy.c:	if( !(out = im_open( "convert-for-save", "p" )) )
libvips/conversion/im_copy.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/conversion/im_copy.c:	 * probably un-gamma-correct the RGB :(
libvips/conversion/im_copy.c:	if( in->Coding == IM_CODING_RAD ) {
libvips/conversion/im_copy.c:	if( in->Coding == IM_CODING_NONE ) {
libvips/conversion/im_copy.c:		if( in->Bands == 2 && saveable != IM__RGBA ) {
libvips/conversion/im_copy.c:		else if( in->Bands > 3 && saveable == IM__RGB ) {
libvips/conversion/im_copy.c:		else if( in->Bands > 4 && 
libvips/conversion/im_copy.c:	if( in->Bands == 3 && in->BandFmt == IM_BANDFMT_SHORT && 
libvips/conversion/im_copy.c:		in->Type == IM_TYPE_LABS ) {
libvips/conversion/im_copy.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/conversion/im_copy.c:	if( in->Coding != IM_CODING_NONE ) {
libvips/conversion/im_copy.c:	if( in->Bands == 3 && in->Type == IM_TYPE_LCH ) {
libvips/conversion/im_copy.c:                if( im_open_local_array( out, t, 2, "conv-1", "p" ) ||
libvips/conversion/im_copy.c:	if( in->Bands == 3 && in->Type == IM_TYPE_YXY ) {
libvips/conversion/im_copy.c:                if( im_open_local_array( out, t, 2, "conv-1", "p" ) ||
libvips/conversion/im_copy.c:	if( in->Bands == 3 && in->Type == IM_TYPE_UCS ) {
libvips/conversion/im_copy.c:                if( im_open_local_array( out, t, 2, "conv-1", "p" ) ||
libvips/conversion/im_copy.c:	if( in->Bands == 3 && in->Type == IM_TYPE_LAB ) {
libvips/conversion/im_copy.c:                if( im_open_local_array( out, t, 2, "conv-1", "p" ) ||
libvips/conversion/im_copy.c:	if( in->Bands == 3 && in->Type == IM_TYPE_XYZ ) {
libvips/conversion/im_copy.c:                if( im_open_local_array( out, t, 2, "conv-1", "p" ) ||
libvips/conversion/im_copy.c:		if( !t || im_clip2fmt( in, t, format_table[in->BandFmt] ) ) {
libvips/conversion/im_copy_file.c: * 	- from im_system()
libvips/conversion/im_copy_file.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_copy_file.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_copy_file.c: * variable) named something like "vips-12-34985.v" and the image is written
libvips/conversion/im_copy_file.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_copy_file.c:			return( -1 );
libvips/conversion/im_copy_file.c:			return( -1 );
libvips/conversion/im_copy_file.c:			return( -1 );
libvips/conversion/im_copy_file.c:			return( -1 );
libvips/conversion/im_lrjoin.c: *	- args to memcpy() were reversed
libvips/conversion/im_lrjoin.c: *	- tided up and ANSIfied
libvips/conversion/im_lrjoin.c: * 	- now accepts IM_CODING_LABQ
libvips/conversion/im_lrjoin.c: *	- memory leaks removed
libvips/conversion/im_lrjoin.c: *	- bug in calculation of output Xsize removed (thanks Thomson!)
libvips/conversion/im_lrjoin.c: *	- bug in checking of image compatibility fixed
libvips/conversion/im_lrjoin.c: *	- rewritten in terms of im_insert()
libvips/conversion/im_lrjoin.c: *	- sets Xoffset / Yoffset
libvips/conversion/im_lrjoin.c: * 	- gtkdoc
libvips/conversion/im_lrjoin.c: * 	- cleanups
libvips/conversion/im_lrjoin.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_lrjoin.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_lrjoin.c: * Join @left and @right together, left-right. If one is taller than the
libvips/conversion/im_lrjoin.c: * must have one band. In this case, an n-band image is formed from the 
libvips/conversion/im_lrjoin.c: * one-band image by joining n copies of the one-band image together, and then
libvips/conversion/im_lrjoin.c: * the two n-band images are operated upon.
libvips/conversion/im_lrjoin.c: * <link linkend="VIPS-arithmetic">arithmetic</link>).
libvips/conversion/im_lrjoin.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_lrjoin.c:		im_insert( left, right, t1, left->Xsize, 0 ) ||
libvips/conversion/im_lrjoin.c:			0, 0, t1->Xsize, IM_MIN( left->Ysize, right->Ysize ) ) )
libvips/conversion/im_lrjoin.c:		return( -1 );
libvips/conversion/im_lrjoin.c:	out->Xoffset = left->Xsize;
libvips/conversion/im_lrjoin.c:	out->Yoffset = 0;
libvips/conversion/im_falsecolour.c: *	- rewritten for PIO
libvips/conversion/im_falsecolour.c: *	- now walks edges of colour cube to get more saturated appearance
libvips/conversion/im_falsecolour.c: * 	- uses falsecolour scale from PET scanner
libvips/conversion/im_falsecolour.c: * 	- hmm, reversed scale
libvips/conversion/im_falsecolour.c: * 	- cleanups
libvips/conversion/im_falsecolour.c: * 	- gtkdoc
libvips/conversion/im_falsecolour.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/conversion/im_falsecolour.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/conversion/im_falsecolour.c: * Turn a 1-band 8-bit image into a 3-band 8-bit image with a false colour
libvips/conversion/im_falsecolour.c: * Returns: 0 on success, -1 on error
libvips/conversion/im_falsecolour.c:		return( -1 );
libvips/conversion/im_falsecolour.c:		return( -1 );
libvips/conversion/im_falsecolour.c:		return( -1 );
libvips/convolution/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/convolution/im_spcor.c: *	- updated
libvips/convolution/im_spcor.c: *	- ANSIfied, a little
libvips/convolution/im_spcor.c: *	- rewritten
libvips/convolution/im_spcor.c: *	- partialed 
libvips/convolution/im_spcor.c: *	- speed-ups
libvips/convolution/im_spcor.c: *	- new correlation coefficient (see above), from Niblack "An
libvips/convolution/im_spcor.c: *	- now does short/ushort as well
libvips/convolution/im_spcor.c: *	- oops, could segv for short images
libvips/convolution/im_spcor.c: *	- sets Xoffset / Yoffset
libvips/convolution/im_spcor.c: *	- use im_embed() with edge stretching on the input, not the output
libvips/convolution/im_spcor.c: * 2006-10-24 tcv
libvips/convolution/im_spcor.c: *      - add im_spcor2
libvips/convolution/im_spcor.c: * 2007-11-12 tcv
libvips/convolution/im_spcor.c: *      - make im_spcor a wrapper selecting either im__spcor or im__spcor2
libvips/convolution/im_spcor.c: * 2008-09-09 JC
libvips/convolution/im_spcor.c: * 	- roll back the windowed version for now, it has some tile edge effects
libvips/convolution/im_spcor.c: * 	- gtkdoc
libvips/convolution/im_spcor.c: * 	- cleanups
libvips/convolution/im_spcor.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_spcor.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_spcor.c:/* Hold per-call state here.
libvips/convolution/im_spcor.c:	double c1;		/* sqrt(sumij (ref(i,j)-mean(ref))^2) */
libvips/convolution/im_spcor.c:	IN *b = (IN *) ref->data; \
libvips/convolution/im_spcor.c:	for( j = 0; j < ref->Ysize; j++ ) { \
libvips/convolution/im_spcor.c:		for( i = 0; i < ref->Xsize; i++ ) \
libvips/convolution/im_spcor.c:	imean = sum1 / (ref->Xsize * ref->Ysize); \
libvips/convolution/im_spcor.c:	 * sum-of-squares-of-differences for this window on \
libvips/convolution/im_spcor.c:	 * ir, and also sum-of-products-of-differences from mean. \
libvips/convolution/im_spcor.c:	for( j = 0; j < ref->Ysize; j++ ) { \
libvips/convolution/im_spcor.c:		for( i = 0; i < ref->Xsize; i++ ) { \
libvips/convolution/im_spcor.c:			/* Accumulate sum-of-squares-of- \
libvips/convolution/im_spcor.c:			double t = ip - imean; \
libvips/convolution/im_spcor.c:			/* Accumulate product-of-difference from mean. \
libvips/convolution/im_spcor.c:			sum3 += (rp - spcor->rmean) * (ip - imean); \
libvips/convolution/im_spcor.c:		b1 += ref->Xsize; \
libvips/convolution/im_spcor.c:	IMAGE *ref = spcor->ref;
libvips/convolution/im_spcor.c:	Rect *r = &or->valid;
libvips/convolution/im_spcor.c:	int le = r->left;
libvips/convolution/im_spcor.c:	int to = r->top;
libvips/convolution/im_spcor.c:	irect.left = or->valid.left;
libvips/convolution/im_spcor.c:	irect.top = or->valid.top;
libvips/convolution/im_spcor.c:	irect.width = or->valid.width + ref->Xsize - 1;
libvips/convolution/im_spcor.c:	irect.height = or->valid.height + ref->Ysize - 1;
libvips/convolution/im_spcor.c:		return( -1 );
libvips/convolution/im_spcor.c:			switch( ref->BandFmt ) {
libvips/convolution/im_spcor.c:			cc = sum3 / (spcor->c1 * c2);
libvips/convolution/im_spcor.c:/* Pre-calculate stuff for our reference image.
libvips/convolution/im_spcor.c:	size_t sz = ref->Xsize * ref->Ysize;
libvips/convolution/im_spcor.c:	PEL *p = (PEL *) ref->data;
libvips/convolution/im_spcor.c:	/* Pre-calculate stuff on our reference image.
libvips/convolution/im_spcor.c:	spcor->ref = ref;
libvips/convolution/im_spcor.c:	if( im_avg( spcor->ref, &spcor->rmean ) )
libvips/convolution/im_spcor.c:	/* Find sqrt-of-sum-of-squares-of-differences.
libvips/convolution/im_spcor.c:		double t = (int) p[i] - spcor->rmean;
libvips/convolution/im_spcor.c:	spcor->c1 = sqrt( s );
libvips/convolution/im_spcor.c:		return( -1 );
libvips/convolution/im_spcor.c:	if( in->Xsize < ref->Xsize || 
libvips/convolution/im_spcor.c:		in->Ysize < ref->Ysize ) {
libvips/convolution/im_spcor.c:		return( -1 );
libvips/convolution/im_spcor.c:		return( -1 );
libvips/convolution/im_spcor.c:		return( -1 );
libvips/convolution/im_spcor.c:	out->BandFmt = IM_BANDFMT_FLOAT;
libvips/convolution/im_spcor.c:	out->Xsize = in->Xsize - ref->Xsize + 1;
libvips/convolution/im_spcor.c:	out->Ysize = in->Ysize - ref->Ysize + 1;
libvips/convolution/im_spcor.c:	/* Pre-calculate some stuff.
libvips/convolution/im_spcor.c:		return( -1 );
libvips/convolution/im_spcor.c:		return( -1 );
libvips/convolution/im_spcor.c:		return( -1 );
libvips/convolution/im_spcor.c:	out->Xoffset = -ref->Xsize / 2;
libvips/convolution/im_spcor.c:	out->Yoffset = -ref->Ysize / 2;
libvips/convolution/im_spcor.c: * calculated. One-band, 8 or 16-bit images only. @in and @ref must have the
libvips/convolution/im_spcor.c: *          sumij (ref(i,j)-mean(ref))(inkl(i,j)-mean(inkl))
libvips/convolution/im_spcor.c: * c(k,l) = ------------------------------------------------
libvips/convolution/im_spcor.c: *          sqrt(sumij (ref(i,j)-mean(ref))^2) *
libvips/convolution/im_spcor.c: *                      sqrt(sumij (inkl(i,j)-mean(inkl))^2)
libvips/convolution/im_spcor.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_spcor.c:			ref->Xsize / 2, ref->Ysize / 2, 
libvips/convolution/im_spcor.c:			in->Xsize + ref->Xsize - 1, 
libvips/convolution/im_spcor.c:			in->Ysize + ref->Ysize - 1 ) ||
libvips/convolution/im_spcor.c:		return( -1 );
libvips/convolution/im_spcor.c:	out->Xoffset = 0;
libvips/convolution/im_spcor.c:	out->Yoffset = 0;
libvips/convolution/im_conv_f.c: *      - adapted for partial v2
libvips/convolution/im_conv_f.c: *      - memory leaks fixed
libvips/convolution/im_conv_f.c: *      - ANSIfied
libvips/convolution/im_conv_f.c: *	- adapted im_convbi() to im_convbf()
libvips/convolution/im_conv_f.c: *	- new IM_ARRAY() macro
libvips/convolution/im_conv_f.c: *	- evalend callbacks
libvips/convolution/im_conv_f.c: *	- more typedef
libvips/convolution/im_conv_f.c: *	- redone from im_conv() 
libvips/convolution/im_conv_f.c: *	- rejects masks with scale == 0
libvips/convolution/im_conv_f.c: *	- now uses im_embed() with edge stretching on the input, not
libvips/convolution/im_conv_f.c: *	- sets Xoffset / Yoffset
libvips/convolution/im_conv_f.c: * 	- simpler inner loop avoids gcc4 bug 
libvips/convolution/im_conv_f.c: * 	- only rebuild the buffer offsets if bpl changes
libvips/convolution/im_conv_f.c: * 	- tiny speedups and cleanups
libvips/convolution/im_conv_f.c: * 	- add restrict, though it doesn't seem to help gcc
libvips/convolution/im_conv_f.c: * 	- add mask-all-zero check
libvips/convolution/im_conv_f.c: * 	- rename as im_conv_f() to make it easier to vips.c to make the
libvips/convolution/im_conv_f.c: * 	- gtkdoc
libvips/convolution/im_conv_f.c: * 	- more cleanups
libvips/convolution/im_conv_f.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_conv_f.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_conv_f.c:	int nnz;		/* Number of non-zero mask elements */
libvips/convolution/im_conv_f.c:	double *coeff;		/* Array of non-zero mask coefficients */
libvips/convolution/im_conv_f.c:	int *coeff_pos;		/* Index of each nnz element in mask->coeff */
libvips/convolution/im_conv_f.c:	IM_FREEF( im_free_dmask, conv->mask );
libvips/convolution/im_conv_f.c:	const int ne = mask->xsize * mask->ysize;
libvips/convolution/im_conv_f.c:        conv->in = in;
libvips/convolution/im_conv_f.c:        conv->out = out;
libvips/convolution/im_conv_f.c:        conv->mask = NULL;
libvips/convolution/im_conv_f.c:        conv->nnz = 0;
libvips/convolution/im_conv_f.c:        conv->coeff = NULL;
libvips/convolution/im_conv_f.c:        	!(conv->coeff = IM_ARRAY( out, ne, double )) ||
libvips/convolution/im_conv_f.c:        	!(conv->coeff_pos = IM_ARRAY( out, ne, int )) ||
libvips/convolution/im_conv_f.c:        	!(conv->mask = im_dup_dmask( mask, "conv_mask" )) )
libvips/convolution/im_conv_f.c:        /* Find non-zero mask elements.
libvips/convolution/im_conv_f.c:                if( mask->coeff[i] ) {
libvips/convolution/im_conv_f.c:			conv->coeff[conv->nnz] = mask->coeff[i];
libvips/convolution/im_conv_f.c:			conv->coeff_pos[conv->nnz] = i;
libvips/convolution/im_conv_f.c:			conv->nnz += 1;
libvips/convolution/im_conv_f.c:	if( conv->nnz == 0 ) {
libvips/convolution/im_conv_f.c:		conv->coeff[0] = mask->coeff[0];
libvips/convolution/im_conv_f.c:		conv->coeff_pos[0] = 0;
libvips/convolution/im_conv_f.c:		conv->nnz = 1;
libvips/convolution/im_conv_f.c:	int *offsets;		/* Offsets for each non-zero matrix element */
libvips/convolution/im_conv_f.c:	PEL **pts;		/* Per-non-zero mask element image pointers */
libvips/convolution/im_conv_f.c:	IM_FREEF( im_region_free, seq->ir );
libvips/convolution/im_conv_f.c:	seq->conv = conv;
libvips/convolution/im_conv_f.c:	seq->ir = NULL;
libvips/convolution/im_conv_f.c:	seq->pts = NULL;
libvips/convolution/im_conv_f.c:	seq->last_bpl = -1;
libvips/convolution/im_conv_f.c:	seq->ir = im_region_create( in );
libvips/convolution/im_conv_f.c:	seq->offsets = IM_ARRAY( out, conv->nnz, int );
libvips/convolution/im_conv_f.c:	seq->pts = IM_ARRAY( out, conv->nnz, PEL * );
libvips/convolution/im_conv_f.c:	if( !seq->ir || !seq->offsets || !seq->pts ) {
libvips/convolution/im_conv_f.c:	ITYPE ** restrict p = (ITYPE **) seq->pts; \
libvips/convolution/im_conv_f.c:		IM_UNROLL( conv->nnz, INNER ); \
libvips/convolution/im_conv_f.c:		sum = (sum / mask->scale) + mask->offset; \
libvips/convolution/im_conv_f.c:	REGION *ir = seq->ir;
libvips/convolution/im_conv_f.c:	DOUBLEMASK *mask = conv->mask;
libvips/convolution/im_conv_f.c:	double * restrict t = conv->coeff; 
libvips/convolution/im_conv_f.c:	Rect *r = &or->valid;
libvips/convolution/im_conv_f.c:	int le = r->left;
libvips/convolution/im_conv_f.c:	int to = r->top;
libvips/convolution/im_conv_f.c:	s.width += mask->xsize - 1;
libvips/convolution/im_conv_f.c:	s.height += mask->ysize - 1;
libvips/convolution/im_conv_f.c:		return( -1 );
libvips/convolution/im_conv_f.c:	if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) {
libvips/convolution/im_conv_f.c:		seq->last_bpl = IM_REGION_LSKIP( ir );
libvips/convolution/im_conv_f.c:		for( i = 0; i < conv->nnz; i++ ) {
libvips/convolution/im_conv_f.c:			z = conv->coeff_pos[i];
libvips/convolution/im_conv_f.c:			x = z % conv->mask->xsize;
libvips/convolution/im_conv_f.c:			y = z / conv->mask->xsize;
libvips/convolution/im_conv_f.c:			seq->offsets[i] = 
libvips/convolution/im_conv_f.c:				IM_REGION_ADDR( ir, x + le, y + to ) -
libvips/convolution/im_conv_f.c:                for( z = 0; z < conv->nnz; z++ ) 
libvips/convolution/im_conv_f.c:                        seq->pts[z] = seq->offsets[z] +  
libvips/convolution/im_conv_f.c:		switch( in->BandFmt ) {
libvips/convolution/im_conv_f.c:		return( -1 );
libvips/convolution/im_conv_f.c:	if( mask->scale == 0 ) {
libvips/convolution/im_conv_f.c:		im_error( "im_conv_f", "%s", "mask scale must be non-zero" );
libvips/convolution/im_conv_f.c:		return( -1 );
libvips/convolution/im_conv_f.c:		return( -1 );
libvips/convolution/im_conv_f.c:	/* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output
libvips/convolution/im_conv_f.c:		return( -1 );
libvips/convolution/im_conv_f.c:	if( vips_bandfmt_isint( in->BandFmt ) ) 
libvips/convolution/im_conv_f.c:		out->BandFmt = IM_BANDFMT_FLOAT;
libvips/convolution/im_conv_f.c:	out->Xsize -= mask->xsize - 1;
libvips/convolution/im_conv_f.c:	out->Ysize -= mask->ysize - 1;
libvips/convolution/im_conv_f.c:	if( out->Xsize <= 0 || out->Ysize <= 0 ) {
libvips/convolution/im_conv_f.c:		return( -1 );
libvips/convolution/im_conv_f.c:		return( -1 );
libvips/convolution/im_conv_f.c:		return( -1 );
libvips/convolution/im_conv_f.c:	out->Xoffset = -mask->xsize / 2;
libvips/convolution/im_conv_f.c:	out->Yoffset = -mask->ysize / 2;
libvips/convolution/im_conv_f.c: * Convolve @in with @mask using floating-point arithmetic. The output image 
libvips/convolution/im_conv_f.c: * @out is also %IM_BANDFMT_DOUBLE. Non-complex images
libvips/convolution/im_conv_f.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_conv_f.c:		im_embed( in, t1, 1, mask->xsize / 2, mask->ysize / 2, 
libvips/convolution/im_conv_f.c:			in->Xsize + mask->xsize - 1, 
libvips/convolution/im_conv_f.c:			in->Ysize + mask->ysize - 1 ) ||
libvips/convolution/im_conv_f.c:		return( -1 );
libvips/convolution/im_conv_f.c:	out->Xoffset = 0;
libvips/convolution/im_conv_f.c:	out->Yoffset = 0;
libvips/convolution/im_addgnoise.c: *	- junked!
libvips/convolution/im_addgnoise.c: *	- now uses partial im_gaussnoise() and partial im_add() to do the
libvips/convolution/im_addgnoise.c: *	- oops, failed for not-1-band images
libvips/convolution/im_addgnoise.c: * 2008-01-28 tcv:
libvips/convolution/im_addgnoise.c: *      - now works (was broken)
libvips/convolution/im_addgnoise.c: *      - no limit on bands
libvips/convolution/im_addgnoise.c: * 	- no need to bandup here now, im_add() does that
libvips/convolution/im_addgnoise.c: * 	- gtkdoc
libvips/convolution/im_addgnoise.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_addgnoise.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_addgnoise.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_addgnoise.c:		im_gaussnoise( t, in->Xsize, in->Ysize, 0, sigma ) ||
libvips/convolution/im_addgnoise.c:		return( -1 );
libvips/convolution/im_fastcor.c: *	- ANSIfied
libvips/convolution/im_fastcor.c: *	- in1 and in2 swapped, to match order for im_spcor
libvips/convolution/im_fastcor.c: *	- memory leaks fixed
libvips/convolution/im_fastcor.c: * 	- partialed
libvips/convolution/im_fastcor.c: *	- speed-ups
libvips/convolution/im_fastcor.c: *	- now uses im_embed() with edge stretching on the output
libvips/convolution/im_fastcor.c: *	- sets Xoffset / Yoffset
libvips/convolution/im_fastcor.c: *	- use im_embed() with edge stretching on the input, not the output
libvips/convolution/im_fastcor.c: *	- calculate sum of squares of differences, rather than abs of
libvips/convolution/im_fastcor.c: * 	- gtkdoc
libvips/convolution/im_fastcor.c: * 	- cleanups
libvips/convolution/im_fastcor.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_fastcor.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_fastcor.c:	Rect *r = &or->valid;
libvips/convolution/im_fastcor.c:	irect.left = or->valid.left;
libvips/convolution/im_fastcor.c:	irect.top = or->valid.top;
libvips/convolution/im_fastcor.c:	irect.width = or->valid.width + ref->Xsize - 1;
libvips/convolution/im_fastcor.c:	irect.height = or->valid.height + ref->Ysize - 1;
libvips/convolution/im_fastcor.c:		return( -1 );
libvips/convolution/im_fastcor.c:	for( y = 0; y < r->height; y++ ) {
libvips/convolution/im_fastcor.c:			IM_REGION_ADDR( or, r->left, r->top + y );
libvips/convolution/im_fastcor.c:		for( x = 0; x < r->width; x++ ) {
libvips/convolution/im_fastcor.c:			PEL *b = (PEL *) ref->data;
libvips/convolution/im_fastcor.c:				IM_REGION_ADDR( ir, r->left + x, r->top + y );
libvips/convolution/im_fastcor.c:			for( j = 0; j < ref->Ysize; j++ ) {
libvips/convolution/im_fastcor.c:				for( i = 0; i < ref->Xsize; i++ ) {
libvips/convolution/im_fastcor.c:					int t = b[i] - a[i];
libvips/convolution/im_fastcor.c:				b += ref->Xsize;
libvips/convolution/im_fastcor.c:		return( -1 );
libvips/convolution/im_fastcor.c:	if( in->Xsize < ref->Xsize || in->Ysize < ref->Ysize ) {
libvips/convolution/im_fastcor.c:		return( -1 );
libvips/convolution/im_fastcor.c:		return( -1 );
libvips/convolution/im_fastcor.c:		return( -1 );
libvips/convolution/im_fastcor.c:	out->BandFmt = IM_BANDFMT_UINT;
libvips/convolution/im_fastcor.c:	out->Xsize = in->Xsize - ref->Xsize + 1;
libvips/convolution/im_fastcor.c:	out->Ysize = in->Ysize - ref->Ysize + 1;
libvips/convolution/im_fastcor.c:		return( -1 );
libvips/convolution/im_fastcor.c:	out->Xoffset = -ref->Xsize / 2;
libvips/convolution/im_fastcor.c:	out->Yoffset = -ref->Ysize / 2;
libvips/convolution/im_fastcor.c: * differences calculated. One-band, 8-bit unsigned images only. The output
libvips/convolution/im_fastcor.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_fastcor.c:			ref->Xsize / 2, ref->Ysize / 2, 
libvips/convolution/im_fastcor.c:			in->Xsize + ref->Xsize - 1, 
libvips/convolution/im_fastcor.c:			in->Ysize + ref->Ysize - 1 ) ||
libvips/convolution/im_fastcor.c:		return( -1 );
libvips/convolution/im_fastcor.c:	out->Xoffset = 0;
libvips/convolution/im_fastcor.c:	out->Yoffset = 0;
libvips/convolution/im_convsep_f.c: *	- rewritten using im_conv()
libvips/convolution/im_convsep_f.c: *	- now uses im_embed() with edge stretching on the input, not
libvips/convolution/im_convsep_f.c: *	- sets Xoffset / Yoffset
libvips/convolution/im_convsep_f.c: * 	- gtkdoc
libvips/convolution/im_convsep_f.c: * 	- more cleanups
libvips/convolution/im_convsep_f.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_convsep_f.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_convsep_f.c:	int scale;		/* Our scale ... we have to ^2 mask->scale */
libvips/convolution/im_convsep_f.c:	IM_FREEF( im_free_dmask, conv->mask );
libvips/convolution/im_convsep_f.c:        conv->in = in;
libvips/convolution/im_convsep_f.c:        conv->out = out;
libvips/convolution/im_convsep_f.c:        conv->mask = NULL;
libvips/convolution/im_convsep_f.c:	conv->size = mask->xsize * mask->ysize;
libvips/convolution/im_convsep_f.c:	conv->scale = mask->scale * mask->scale;
libvips/convolution/im_convsep_f.c:		!(conv->mask = im_dup_dmask( mask, "conv_mask" )) )
libvips/convolution/im_convsep_f.c:	IM_FREEF( im_region_free, seq->ir );
libvips/convolution/im_convsep_f.c:	seq->conv = conv;
libvips/convolution/im_convsep_f.c:	seq->ir = NULL;
libvips/convolution/im_convsep_f.c:	seq->sum = NULL;
libvips/convolution/im_convsep_f.c:	seq->ir = im_region_create( in );
libvips/convolution/im_convsep_f.c:	if( vips_bandfmt_isint( conv->out->BandFmt ) )
libvips/convolution/im_convsep_f.c:		seq->sum = (PEL *) 
libvips/convolution/im_convsep_f.c:		seq->sum = (PEL *) 
libvips/convolution/im_convsep_f.c:	if( !seq->ir || !seq->sum ) {
libvips/convolution/im_convsep_f.c:#define VERTICAL_CONV { z -= 1; li -= lskip; sum += coeff[z] * vfrom[li]; }
libvips/convolution/im_convsep_f.c:#define HORIZONTAL_CONV { z -= 1; li -= bands; sum += coeff[z] * hfrom[li]; }
libvips/convolution/im_convsep_f.c:	vto = (double *) seq->sum; \
libvips/convolution/im_convsep_f.c:		z = conv->size;  \
libvips/convolution/im_convsep_f.c:	hfrom = (double *) seq->sum; \
libvips/convolution/im_convsep_f.c:		z = conv->size;  \
libvips/convolution/im_convsep_f.c:		sum = (sum / conv->scale) + mask->offset; \
libvips/convolution/im_convsep_f.c:	REGION *ir = seq->ir;
libvips/convolution/im_convsep_f.c:	DOUBLEMASK *mask = conv->mask;
libvips/convolution/im_convsep_f.c:	double *coeff = conv->mask->coeff; 
libvips/convolution/im_convsep_f.c:	int bands = in->Bands;
libvips/convolution/im_convsep_f.c:	Rect *r = &or->valid;
libvips/convolution/im_convsep_f.c:	int le = r->left;
libvips/convolution/im_convsep_f.c:	int to = r->top;
libvips/convolution/im_convsep_f.c:	s.width += conv->size - 1;
libvips/convolution/im_convsep_f.c:	s.height += conv->size - 1;
libvips/convolution/im_convsep_f.c:		return( -1 );
libvips/convolution/im_convsep_f.c:		switch( in->BandFmt ) {
libvips/convolution/im_convsep_f.c:		return( -1 );
libvips/convolution/im_convsep_f.c:	if( mask->xsize != 1 && mask->ysize != 1 ) {
libvips/convolution/im_convsep_f.c:                return( -1 );
libvips/convolution/im_convsep_f.c:	if( mask->scale == 0 ) {
libvips/convolution/im_convsep_f.c:		im_error( "im_convsep_f", "%s", "mask scale must be non-zero" );
libvips/convolution/im_convsep_f.c:		return( -1 );
libvips/convolution/im_convsep_f.c:		return( -1 );
libvips/convolution/im_convsep_f.c:	/* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output
libvips/convolution/im_convsep_f.c:		return( -1 );
libvips/convolution/im_convsep_f.c:	if( vips_bandfmt_isint( in->BandFmt ) ) 
libvips/convolution/im_convsep_f.c:		out->BandFmt = IM_BANDFMT_FLOAT;
libvips/convolution/im_convsep_f.c:	out->Xsize -= conv->size - 1;
libvips/convolution/im_convsep_f.c:	out->Ysize -= conv->size - 1;
libvips/convolution/im_convsep_f.c:	if( out->Xsize <= 0 || out->Ysize <= 0 ) {
libvips/convolution/im_convsep_f.c:		return( -1 );
libvips/convolution/im_convsep_f.c:		return( -1 );
libvips/convolution/im_convsep_f.c:	out->Xoffset = -conv->size / 2;
libvips/convolution/im_convsep_f.c:	out->Yoffset = -conv->size / 2;
libvips/convolution/im_convsep_f.c: * Perform a separable convolution of @in with @mask using floating-point 
libvips/convolution/im_convsep_f.c: * @out is also %IM_BANDFMT_DOUBLE. Non-complex images
libvips/convolution/im_convsep_f.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_convsep_f.c:	int size = mask->xsize * mask->ysize;
libvips/convolution/im_convsep_f.c:			in->Xsize + size - 1, 
libvips/convolution/im_convsep_f.c:			in->Ysize + size - 1 ) ||
libvips/convolution/im_convsep_f.c:		return( -1 );
libvips/convolution/im_convsep_f.c:	out->Xoffset = 0;
libvips/convolution/im_convsep_f.c:	out->Yoffset = 0;
libvips/convolution/im_sharpen.c: * Returns 0 on success and -1 on error
libvips/convolution/im_sharpen.c: *	- updated for latest 7.3 mods
libvips/convolution/im_sharpen.c: *	- m3 parameter removed
libvips/convolution/im_sharpen.c: *	- bug fixes and speed-ups
libvips/convolution/im_sharpen.c: *	- x3 parameter added
libvips/convolution/im_sharpen.c: *	- xs are now double
libvips/convolution/im_sharpen.c: *	- xs are now ys
libvips/convolution/im_sharpen.c: *	- better LUT generation
libvips/convolution/im_sharpen.c: *	- uses seperable convolution for umask
libvips/convolution/im_sharpen.c: *	- tiny clean ups
libvips/convolution/im_sharpen.c: *	- fix for band extract index changed
libvips/convolution/im_sharpen.c: *	- switched to gaussian mask and radius
libvips/convolution/im_sharpen.c: *	- uses extract_bands() to remove and reattach ab for slight speedup
libvips/convolution/im_sharpen.c: *	- accepts LabS as well as LabQ for slight speedup
libvips/convolution/im_sharpen.c: *	- small code tidies
libvips/convolution/im_sharpen.c: *	- ~15% speed up in total
libvips/convolution/im_sharpen.c: * 	- convolve first to help region sharing
libvips/convolution/im_sharpen.c: * 	- gtkdoc
libvips/convolution/im_sharpen.c: * 	- cleanups
libvips/convolution/im_sharpen.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_sharpen.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_sharpen.c:/* A lut --- we need indexes in the range [-x3,x2], so add x3 to indexes
libvips/convolution/im_sharpen.c:	if( !(slut->lut = IM_ARRAY( out, x2 + x3 + 1, int )) )
libvips/convolution/im_sharpen.c:	slut->x1 = x1;
libvips/convolution/im_sharpen.c:	slut->x2 = x2;
libvips/convolution/im_sharpen.c:	slut->x3 = x3;
libvips/convolution/im_sharpen.c:		slut->lut[x3 + i] = i*m1;
libvips/convolution/im_sharpen.c:		slut->lut[x3 - i] = -i*m1;
libvips/convolution/im_sharpen.c:		slut->lut[x3 + i] = x1*m1 + (i-x1)*m2; 
libvips/convolution/im_sharpen.c:		slut->lut[x3 - i] = -(x1*m1 + (i-x1)*m2);
libvips/convolution/im_sharpen.c:	int range = slut->x2 + slut->x3;
libvips/convolution/im_sharpen.c:	int *lut = slut->lut;
libvips/convolution/im_sharpen.c:	int x3 = slut->x3;
libvips/convolution/im_sharpen.c:			int s1 = x3 + (v1 - v2);
libvips/convolution/im_sharpen.c:	if( !(line = im_create_imask( "sharpen-line", base->xsize, 1 )) ) {
libvips/convolution/im_sharpen.c:	for( i = 0; i < base->xsize; i++ ) {
libvips/convolution/im_sharpen.c:		line->coeff[i] = 
libvips/convolution/im_sharpen.c:			base->coeff[base->xsize * (base->ysize / 2) + i];
libvips/convolution/im_sharpen.c:		total += line->coeff[i];
libvips/convolution/im_sharpen.c:	line->scale = total;
libvips/convolution/im_sharpen.c: * generate a high-frequency signal. This signal is passed through a lookup
libvips/convolution/im_sharpen.c:                   y2 |- - - - - -----------
libvips/convolution/im_sharpen.c:              -x1     | ...   |    
libvips/convolution/im_sharpen.c:  -------------------...---------------------->
libvips/convolution/im_sharpen.c:  ______/ _ _ _ _ _ _ | -y3
libvips/convolution/im_sharpen.c: * pixels/mm). These figures refer to the image raster, not the half-tone 
libvips/convolution/im_sharpen.c: * Returns: 0 on success, -1 on error.
libvips/convolution/im_sharpen.c:	double x2 = (y2 - x1 * (m1 - m2)) / m2;
libvips/convolution/im_sharpen.c:	double x3 = (y3 - x1 * (m1 - m2)) / m2;
libvips/convolution/im_sharpen.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/convolution/im_sharpen.c:			return( -1 );
libvips/convolution/im_sharpen.c:  		return( -1 );
libvips/convolution/im_sharpen.c:		return( -1 );
libvips/convolution/im_sharpen.c:		return( -1 );
libvips/convolution/im_sharpen.c:		return( -1 );
libvips/convolution/im_sharpen.c:		return( -1 );
libvips/convolution/im_sharpen.c:		return( -1 );
libvips/convolution/im_sharpen.c:		return( -1 );
libvips/convolution/im_sharpen.c:		return( -1 );
libvips/convolution/im_sharpen.c:		return( -1 );
libvips/convolution/convol_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/convol_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/convol_dispatch.c:	"find high-contrast points in an image",
libvips/convolution/convol_dispatch.c:	return( im_compass( argv[0], argv[1], mo->mask ) );
libvips/convolution/convol_dispatch.c:	"convolve with 8-way rotating integer mask",
libvips/convolution/convol_dispatch.c:	return( im_conv( argv[0], argv[1], mo->mask ) );
libvips/convolution/convol_dispatch.c:	return( im_conv_f( argv[0], argv[1], mo->mask ) );
libvips/convolution/convol_dispatch.c:	return( im_convsep( argv[0], argv[1], mo->mask ) );
libvips/convolution/convol_dispatch.c:	return( im_convsep_f( argv[0], argv[1], mo->mask ) );
libvips/convolution/convol_dispatch.c:	"non-normalised correlation of gradient of in2 within in1",
libvips/convolution/convol_dispatch.c:	return( im_gradient( argv[0], argv[1], mo->mask ) );
libvips/convolution/convol_dispatch.c:	"convolve with 2-way rotating mask",
libvips/convolution/convol_dispatch.c:	return( im_lindetect( argv[0], argv[1], mo->mask ) );
libvips/convolution/convol_dispatch.c:	"convolve with 4-way rotating mask",
libvips/convolution/im_convsep.c: *	- rewritten using im_conv()
libvips/convolution/im_convsep.c: *	- rejects masks with scale == 0
libvips/convolution/im_convsep.c: *	- now uses im_embed() with edge stretching on the input, not
libvips/convolution/im_convsep.c: *	- sets Xoffset / Yoffset
libvips/convolution/im_convsep.c: *	- scale down int convolves at 1/2 way mark, much less likely to integer
libvips/convolution/im_convsep.c: * 	- int rounding was +1 too much, argh
libvips/convolution/im_convsep.c: * 	- gtkdoc
libvips/convolution/im_convsep.c: * 	- more cleanups
libvips/convolution/im_convsep.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_convsep.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_convsep.c:	int scale;	/* Our scale ... we have to square mask->scale */
libvips/convolution/im_convsep.c:/* End of evaluation --- print overflows and underflows.
libvips/convolution/im_convsep.c:	if( conv->overflow || conv->underflow )
libvips/convolution/im_convsep.c:			"detected" ), conv->overflow, conv->underflow );
libvips/convolution/im_convsep.c:	if( conv->mask ) {
libvips/convolution/im_convsep.c:		(void) im_free_imask( conv->mask );
libvips/convolution/im_convsep.c:		conv->mask = NULL;
libvips/convolution/im_convsep.c:        conv->in = in;
libvips/convolution/im_convsep.c:        conv->out = out;
libvips/convolution/im_convsep.c:        conv->mask = NULL;
libvips/convolution/im_convsep.c:	conv->size = mask->xsize * mask->ysize;
libvips/convolution/im_convsep.c:	conv->scale = mask->scale * mask->scale;
libvips/convolution/im_convsep.c:        conv->underflow = 0;
libvips/convolution/im_convsep.c:        conv->overflow = 0;
libvips/convolution/im_convsep.c:		!(conv->mask = im_dup_imask( mask, "conv_mask" )) )
libvips/convolution/im_convsep.c:	conv->overflow += seq->overflow;
libvips/convolution/im_convsep.c:	conv->underflow += seq->underflow;
libvips/convolution/im_convsep.c:	IM_FREEF( im_region_free, seq->ir );
libvips/convolution/im_convsep.c:	seq->conv = conv;
libvips/convolution/im_convsep.c:	seq->ir = NULL;
libvips/convolution/im_convsep.c:	seq->sum = NULL;
libvips/convolution/im_convsep.c:	seq->underflow = 0;
libvips/convolution/im_convsep.c:	seq->overflow = 0;
libvips/convolution/im_convsep.c:	seq->ir = im_region_create( in );
libvips/convolution/im_convsep.c:	if( vips_bandfmt_isint( conv->out->BandFmt ) )
libvips/convolution/im_convsep.c:		seq->sum = (PEL *) 
libvips/convolution/im_convsep.c:		seq->sum = (PEL *) 
libvips/convolution/im_convsep.c:	if( !seq->ir || !seq->sum ) {
libvips/convolution/im_convsep.c:#define VERTICAL_CONV { z -= 1; li -= lskip; sum += coeff[z] * vfrom[li]; }
libvips/convolution/im_convsep.c:#define HORIZONTAL_CONV { z -= 1; li -= bands; sum += coeff[z] * hfrom[li]; }
libvips/convolution/im_convsep.c:	vto = (int *) seq->sum; \
libvips/convolution/im_convsep.c:		z = conv->size;  \
libvips/convolution/im_convsep.c:		sum = ((sum + rounding) / mask->scale) + mask->offset; \
libvips/convolution/im_convsep.c:	hfrom = (int *) seq->sum; \
libvips/convolution/im_convsep.c:		z = conv->size;  \
libvips/convolution/im_convsep.c:		sum = ((sum + rounding) / mask->scale) + mask->offset; \
libvips/convolution/im_convsep.c:	vto = (double *) seq->sum; \
libvips/convolution/im_convsep.c:		z = conv->size;  \
libvips/convolution/im_convsep.c:	hfrom = (double *) seq->sum; \
libvips/convolution/im_convsep.c:		z = conv->size;  \
libvips/convolution/im_convsep.c:		sum = (sum / conv->scale) + mask->offset; \
libvips/convolution/im_convsep.c:	REGION *ir = seq->ir;
libvips/convolution/im_convsep.c:	INTMASK *mask = conv->mask;
libvips/convolution/im_convsep.c:	int rounding = mask->scale / 2;
libvips/convolution/im_convsep.c:	int bands = in->Bands;
libvips/convolution/im_convsep.c:	int *coeff = conv->mask->coeff; 
libvips/convolution/im_convsep.c:	Rect *r = &or->valid;
libvips/convolution/im_convsep.c:	int le = r->left;
libvips/convolution/im_convsep.c:	int to = r->top;
libvips/convolution/im_convsep.c:	s.width += conv->size - 1;
libvips/convolution/im_convsep.c:	s.height += conv->size - 1;
libvips/convolution/im_convsep.c:		return( -1 );
libvips/convolution/im_convsep.c:		switch( in->BandFmt ) {
libvips/convolution/im_convsep.c:		return( -1 );
libvips/convolution/im_convsep.c:	if( mask->xsize != 1 && mask->ysize != 1 ) {
libvips/convolution/im_convsep.c:                return( -1 );
libvips/convolution/im_convsep.c:	if( mask->scale == 0 ) {
libvips/convolution/im_convsep.c:		im_error( "im_convsep", "%s", "mask scale must be non-zero" );
libvips/convolution/im_convsep.c:		return( -1 );
libvips/convolution/im_convsep.c:		return( -1 );
libvips/convolution/im_convsep.c:	/* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output
libvips/convolution/im_convsep.c:		return( -1 );
libvips/convolution/im_convsep.c:	out->Xsize -= conv->size - 1;
libvips/convolution/im_convsep.c:	out->Ysize -= conv->size - 1;
libvips/convolution/im_convsep.c:	if( out->Xsize <= 0 || out->Ysize <= 0 ) {
libvips/convolution/im_convsep.c:		return( -1 );
libvips/convolution/im_convsep.c:		return( -1 );
libvips/convolution/im_convsep.c:	out->Xoffset = -mask->xsize / 2;
libvips/convolution/im_convsep.c:	out->Yoffset = -mask->ysize / 2;
libvips/convolution/im_convsep.c: * always has the same #VipsBandFmt as the input image. Non-complex images
libvips/convolution/im_convsep.c: * includes round-to-nearest.
libvips/convolution/im_convsep.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_convsep.c:	int size = mask->xsize * mask->ysize;
libvips/convolution/im_convsep.c:			in->Xsize + size - 1, 
libvips/convolution/im_convsep.c:			in->Ysize + size - 1 ) ||
libvips/convolution/im_convsep.c:		return( -1 );
libvips/convolution/im_convsep.c:	out->Xoffset = 0;
libvips/convolution/im_convsep.c:	out->Yoffset = 0;
libvips/convolution/im_compass.c: *	- rewritten, calling im_conv() and im_maxvalue()
libvips/convolution/im_compass.c: * 	- gtkdoc
libvips/convolution/im_compass.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_compass.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_compass.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_compass.c:		return( -1 );
libvips/convolution/im_compass.c:				im_rotate_imask45( mask, mask->filename ) )) )
libvips/convolution/im_compass.c:			return( -1 );
libvips/convolution/im_compass.c:			return( -1 );
libvips/convolution/im_compass.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_compass.c:		return( -1 );
libvips/convolution/im_compass.c:				im_rotate_imask45( mask, mask->filename ) )) )
libvips/convolution/im_compass.c:			return( -1 );
libvips/convolution/im_compass.c:			return( -1 );
libvips/convolution/im_compass.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_compass.c:		return( -1 );
libvips/convolution/im_compass.c:		im_rotate_imask90( mask, mask->filename ) )) ) 
libvips/convolution/im_compass.c:		return( -1 );
libvips/convolution/im_compass.c:		return( -1 );
libvips/convolution/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/convolution/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/convolution/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/convolution/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/convolution/Makefile.in:am__mv = mv -f
libvips/convolution/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/convolution/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/convolution/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/convolution/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/convolution/Makefile.in:	$(LDFLAGS) -o $@
libvips/convolution/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/convolution/Makefile.in:all: all-am
libvips/convolution/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/convolution/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/convolution/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/convolution/Makefile'; \
libvips/convolution/Makefile.in:	  $(AUTOMAKE) --gnu libvips/convolution/Makefile
libvips/convolution/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/convolution/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/convolution/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/convolution/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/convolution/Makefile.in:clean-noinstLTLIBRARIES:
libvips/convolution/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/convolution/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/convolution/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/convolution/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/convolution/Makefile.in:mostlyclean-compile:
libvips/convolution/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/convolution/Makefile.in:distclean-compile:
libvips/convolution/Makefile.in:	-rm -f *.tab.c
libvips/convolution/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/convolution/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/convolution/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/convolution/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/convolution/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/convolution/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/convolution/Makefile.in:mostlyclean-libtool:
libvips/convolution/Makefile.in:	-rm -f *.lo
libvips/convolution/Makefile.in:clean-libtool:
libvips/convolution/Makefile.in:	-rm -rf .libs _libs
libvips/convolution/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/convolution/Makefile.in:	mkid -fID $$unique
libvips/convolution/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/convolution/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/convolution/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/convolution/Makefile.in:	  if test $$# -gt 0; then \
libvips/convolution/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/convolution/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/convolution/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/convolution/Makefile.in:distclean-tags:
libvips/convolution/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/convolution/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/convolution/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/convolution/Makefile.in:			   sort -u` ;; \
libvips/convolution/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/convolution/Makefile.in:	  if test -d $$d/$$file; then \
libvips/convolution/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/convolution/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/convolution/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/convolution/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/convolution/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/convolution/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/convolution/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/convolution/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/convolution/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/convolution/Makefile.in:check-am: all-am
libvips/convolution/Makefile.in:check: check-am
libvips/convolution/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/convolution/Makefile.in:install: install-am
libvips/convolution/Makefile.in:install-exec: install-exec-am
libvips/convolution/Makefile.in:install-data: install-data-am
libvips/convolution/Makefile.in:uninstall: uninstall-am
libvips/convolution/Makefile.in:install-am: all-am
libvips/convolution/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/convolution/Makefile.in:installcheck: installcheck-am
libvips/convolution/Makefile.in:install-strip:
libvips/convolution/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/convolution/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/convolution/Makefile.in:mostlyclean-generic:
libvips/convolution/Makefile.in:clean-generic:
libvips/convolution/Makefile.in:distclean-generic:
libvips/convolution/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/convolution/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/convolution/Makefile.in:maintainer-clean-generic:
libvips/convolution/Makefile.in:clean: clean-am
libvips/convolution/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/convolution/Makefile.in:	mostlyclean-am
libvips/convolution/Makefile.in:distclean: distclean-am
libvips/convolution/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/convolution/Makefile.in:	-rm -f Makefile
libvips/convolution/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/convolution/Makefile.in:	distclean-tags
libvips/convolution/Makefile.in:dvi: dvi-am
libvips/convolution/Makefile.in:dvi-am:
libvips/convolution/Makefile.in:html: html-am
libvips/convolution/Makefile.in:html-am:
libvips/convolution/Makefile.in:info: info-am
libvips/convolution/Makefile.in:info-am:
libvips/convolution/Makefile.in:install-data-am:
libvips/convolution/Makefile.in:install-dvi: install-dvi-am
libvips/convolution/Makefile.in:install-dvi-am:
libvips/convolution/Makefile.in:install-exec-am:
libvips/convolution/Makefile.in:install-html: install-html-am
libvips/convolution/Makefile.in:install-html-am:
libvips/convolution/Makefile.in:install-info: install-info-am
libvips/convolution/Makefile.in:install-info-am:
libvips/convolution/Makefile.in:install-man:
libvips/convolution/Makefile.in:install-pdf: install-pdf-am
libvips/convolution/Makefile.in:install-pdf-am:
libvips/convolution/Makefile.in:install-ps: install-ps-am
libvips/convolution/Makefile.in:install-ps-am:
libvips/convolution/Makefile.in:installcheck-am:
libvips/convolution/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/convolution/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/convolution/Makefile.in:	-rm -f Makefile
libvips/convolution/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/convolution/Makefile.in:mostlyclean: mostlyclean-am
libvips/convolution/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/convolution/Makefile.in:	mostlyclean-libtool
libvips/convolution/Makefile.in:pdf: pdf-am
libvips/convolution/Makefile.in:pdf-am:
libvips/convolution/Makefile.in:ps: ps-am
libvips/convolution/Makefile.in:ps-am:
libvips/convolution/Makefile.in:uninstall-am:
libvips/convolution/Makefile.in:.MAKE: install-am install-strip
libvips/convolution/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/convolution/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/convolution/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/convolution/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/convolution/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/convolution/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/convolution/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/convolution/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/convolution/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/convolution/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/convolution/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/convolution/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/convolution/im_contrast_surface.c: * Written on: 2006-03-13
libvips/convolution/im_contrast_surface.c: * 	- gtkdoc
libvips/convolution/im_contrast_surface.c: * 	- small cleanups
libvips/convolution/im_contrast_surface.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_contrast_surface.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_contrast_surface.c: * point in the input image. Sub-sample by a factor of spacing.
libvips/convolution/im_contrast_surface.c: * Returns: 0 on success, -1 on error.
libvips/convolution/im_contrast_surface.c:		   in->Xsize + DOUBLE (half_win_size),
libvips/convolution/im_contrast_surface.c:		   in->Ysize + DOUBLE (half_win_size))
libvips/convolution/im_contrast_surface.c:    return -1;
libvips/convolution/im_contrast_surface.c:  out->Xoffset = 0;
libvips/convolution/im_contrast_surface.c:  out->Yoffset = 0;
libvips/convolution/im_contrast_surface.c:    return -1;
libvips/convolution/im_contrast_surface.c:      return -1;
libvips/convolution/im_contrast_surface.c:  if (DOUBLE (half_win_size) >= LESSER (in->Xsize, in->Ysize))
libvips/convolution/im_contrast_surface.c:      return -1;
libvips/convolution/im_contrast_surface.c:    return -1;
libvips/convolution/im_contrast_surface.c:  params->half_win_size = half_win_size;
libvips/convolution/im_contrast_surface.c:  params->spacing = spacing;
libvips/convolution/im_contrast_surface.c:    return -1;
libvips/convolution/im_contrast_surface.c:  out->BandFmt = IM_BANDFMT_UINT;
libvips/convolution/im_contrast_surface.c:  out->Xsize = 1 + ((in->Xsize - DOUBLE_ADD_ONE (half_win_size)) / spacing);
libvips/convolution/im_contrast_surface.c:  out->Ysize = 1 + ((in->Ysize - DOUBLE_ADD_ONE (half_win_size)) / spacing);
libvips/convolution/im_contrast_surface.c:  out->Xoffset = -half_win_size;
libvips/convolution/im_contrast_surface.c:  out->Yoffset = -half_win_size;
libvips/convolution/im_contrast_surface.c:    return -1;
libvips/convolution/im_contrast_surface.c:    (unsigned int *) IM_REGION_ADDR (to_make, to_make->valid.left,
libvips/convolution/im_contrast_surface.c:				     to_make->valid.top);
libvips/convolution/im_contrast_surface.c:  int bottom = to_make->valid.top + to_make->valid.height;
libvips/convolution/im_contrast_surface.c:    params->spacing * to_make->valid.left,
libvips/convolution/im_contrast_surface.c:    params->spacing * to_make->valid.top,
libvips/convolution/im_contrast_surface.c:    DOUBLE_ADD_ONE (params->half_win_size) +
libvips/convolution/im_contrast_surface.c:      (params->spacing * (to_make->valid.width - 1)),
libvips/convolution/im_contrast_surface.c:    DOUBLE_ADD_ONE (params->half_win_size) +
libvips/convolution/im_contrast_surface.c:      (params->spacing * (to_make->valid.height - 1))
libvips/convolution/im_contrast_surface.c:      || !im_rect_equalsrect (&make_from->valid, &area))
libvips/convolution/im_contrast_surface.c:    return -1;
libvips/convolution/im_contrast_surface.c:  for (y = to_make->valid.top; y < bottom; ++y, row += lskip)
libvips/convolution/im_contrast_surface.c:    for (xoff = 0; xoff < to_make->valid.width; ++xoff)
libvips/convolution/im_contrast_surface.c:	calc_cont (make_from, DOUBLE (params->half_win_size),
libvips/convolution/im_contrast_surface.c:		   (xoff + to_make->valid.left) * params->spacing,
libvips/convolution/im_contrast_surface.c:		   y * params->spacing);
libvips/convolution/im_contrast_surface.c:	  abs (row[xoff + 1] - row[xoff]) + abs (row[xoff + lskip] -
libvips/convolution/im_contrast_surface.c:      contrast += abs (row[xoff + lskip] - row[xoff]);
libvips/convolution/im_contrast_surface.c:    contrast += abs (row[xoff + 1] - row[xoff]);
libvips/convolution/im_gradcor.c: * Written on: 2007-06-07
libvips/convolution/im_gradcor.c: * 	- gtkdoc
libvips/convolution/im_gradcor.c: * 	- cleanups
libvips/convolution/im_gradcor.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_gradcor.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:	return( -1 );
libvips/convolution/im_gradcor.c:  if( large-> Xsize < small-> Xsize || large-> Ysize < small-> Ysize ){
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:  out-> Xsize= 1 + large-> Xsize - small-> Xsize;
libvips/convolution/im_gradcor.c:  out-> Ysize= 1 + large-> Ysize - small-> Ysize;
libvips/convolution/im_gradcor.c:  out-> BandFmt= IM_BANDFMT_FLOAT;
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c: * calculated. One-band, integer images only. @in and @ref must have the
libvips/convolution/im_gradcor.c: * dot-product correlation of the two vector images.
libvips/convolution/im_gradcor.c: * equivalent to the complex-number method of:
libvips/convolution/im_gradcor.c: * ARGYRIOU, V. et al. 2003. Estimation of sub-pixel motion using
libvips/convolution/im_gradcor.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_gradcor.c:			ref->Xsize / 2, ref->Ysize / 2, 
libvips/convolution/im_gradcor.c:			in->Xsize + ref->Xsize - 1, 
libvips/convolution/im_gradcor.c:			in->Ysize + ref->Ysize - 1 ) ||
libvips/convolution/im_gradcor.c:		return( -1 );
libvips/convolution/im_gradcor.c:	out->Xoffset = 0;
libvips/convolution/im_gradcor.c:	out->Yoffset = 0;
libvips/convolution/im_gradcor.c: * and one pixel less width. One-band integer formats only. The result is
libvips/convolution/im_gradcor.c: * mask [[-1, 1]].
libvips/convolution/im_gradcor.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:	return( -1 );
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:  -- out-> Xsize;
libvips/convolution/im_gradcor.c:  out-> BandFmt= IM_BANDFMT_INT; /* do not change without updating im_gradcor() */
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:  switch( in-> BandFmt ){
libvips/convolution/im_gradcor.c: * and one pixel less height. One-band integer formats only. The result is
libvips/convolution/im_gradcor.c: * mask [[-1], [1]].
libvips/convolution/im_gradcor.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:	return( -1 );
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:  -- out-> Ysize;
libvips/convolution/im_gradcor.c:  out-> BandFmt= IM_BANDFMT_INT; /* do not change without updating im_gradcor() */
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:  switch( in-> BandFmt ){
libvips/convolution/im_gradcor.c:  seq-> region_xgrad= (int*) NULL;
libvips/convolution/im_gradcor.c:  seq-> region_ygrad= (int*) NULL;
libvips/convolution/im_gradcor.c:  seq-> region_xgrad_area= 0;
libvips/convolution/im_gradcor.c:  seq-> region_ygrad_area= 0;
libvips/convolution/im_gradcor.c:  seq-> reg= im_region_create( (IMAGE*) vptr_large );
libvips/convolution/im_gradcor.c:  if( ! seq-> reg ){
libvips/convolution/im_gradcor.c:    im_free( (void*) seq-> region_xgrad );
libvips/convolution/im_gradcor.c:    im_free( (void*) seq-> region_ygrad );
libvips/convolution/im_gradcor.c:    im_region_free( seq-> reg );
libvips/convolution/im_gradcor.c:    seq-> region_xgrad= (int*) NULL;
libvips/convolution/im_gradcor.c:    seq-> region_ygrad= (int*) NULL;
libvips/convolution/im_gradcor.c:    seq-> reg= (REGION*) NULL;
libvips/convolution/im_gradcor.c:  REGION *make_from= seq-> reg;
libvips/convolution/im_gradcor.c:    to_make-> valid. left,
libvips/convolution/im_gradcor.c:    to_make-> valid. top,
libvips/convolution/im_gradcor.c:    to_make-> valid. width + small_xgrad-> Xsize,
libvips/convolution/im_gradcor.c:    to_make-> valid. height + small_ygrad-> Ysize
libvips/convolution/im_gradcor.c:  size_t region_xgrad_width= require. width - 1;
libvips/convolution/im_gradcor.c:  size_t region_ygrad_height= require. height - 1;
libvips/convolution/im_gradcor.c:    return -1;
libvips/convolution/im_gradcor.c:    size_t read_skip= ( IM_REGION_LSKIP( make_from ) / sizeof(TYPE) ) - region_xgrad_width;         \
libvips/convolution/im_gradcor.c:    if( seq-> region_xgrad_area < area_need ){                                                      \
libvips/convolution/im_gradcor.c:      free( seq-> region_xgrad );                                                                   \
libvips/convolution/im_gradcor.c:      seq-> region_xgrad= malloc( area_need * sizeof(int) );                                        \
libvips/convolution/im_gradcor.c:      if( ! seq-> region_xgrad )                                                                    \
libvips/convolution/im_gradcor.c:        return -1;                                                                                  \
libvips/convolution/im_gradcor.c:      seq-> region_xgrad_area= area_need;                                                           \
libvips/convolution/im_gradcor.c:      int *writing= seq-> region_xgrad;                                                             \
libvips/convolution/im_gradcor.c:          *writing= reading[1] - reading[0];                                                        \
libvips/convolution/im_gradcor.c:    size_t read_skip= read_line - require. width;                                                   \
libvips/convolution/im_gradcor.c:    if( seq-> region_ygrad_area < area_need ){                                                      \
libvips/convolution/im_gradcor.c:      free( seq-> region_ygrad );                                                                   \
libvips/convolution/im_gradcor.c:      seq-> region_ygrad= malloc( area_need * sizeof(int) );                                        \
libvips/convolution/im_gradcor.c:      if( ! seq-> region_ygrad )                                                                    \
libvips/convolution/im_gradcor.c:        return -1;                                                                                  \
libvips/convolution/im_gradcor.c:      seq-> region_ygrad_area= area_need;                                                           \
libvips/convolution/im_gradcor.c:      int *writing= seq-> region_ygrad;                                                             \
libvips/convolution/im_gradcor.c:          *writing= reading[ read_line ] - reading[0];                                              \
libvips/convolution/im_gradcor.c:  switch( make_from-> im-> BandFmt ){
libvips/convolution/im_gradcor.c:    float *write_end= writing + write_skip * to_make-> valid. height;
libvips/convolution/im_gradcor.c:    size_t write_width= to_make-> valid. width;
libvips/convolution/im_gradcor.c:    size_t small_xgrad_width= small_xgrad-> Xsize;
libvips/convolution/im_gradcor.c:    size_t small_ygrad_width= small_ygrad-> Xsize;
libvips/convolution/im_gradcor.c:    int *small_xgrad_end= (int*) small_xgrad-> data + small_xgrad_width * small_xgrad-> Ysize;
libvips/convolution/im_gradcor.c:    int *small_ygrad_end= (int*) small_ygrad-> data + small_ygrad_width * small_ygrad-> Ysize;
libvips/convolution/im_gradcor.c:    int *region_xgrad_start= seq-> region_xgrad;
libvips/convolution/im_gradcor.c:    int *region_ygrad_start= seq-> region_ygrad;
libvips/convolution/im_gradcor.c:    size_t region_xgrad_start_skip= region_xgrad_width - write_width;
libvips/convolution/im_gradcor.c:    size_t region_ygrad_start_skip= require. width - write_width;
libvips/convolution/im_gradcor.c:    size_t region_xgrad_read_skip= region_xgrad_width - small_xgrad_width;
libvips/convolution/im_gradcor.c:    size_t region_ygrad_read_skip= require. width - small_ygrad_width;
libvips/convolution/im_gradcor.c:    write_skip-= write_width;
libvips/convolution/im_gradcor.c:          int *small_xgrad_read= (int*) small_xgrad-> data;
libvips/convolution/im_gradcor.c:          int *small_ygrad_read= (int*) small_ygrad-> data;
libvips/convolution/im_gradcor.c:    to_make-> valid. left,                                                                                \
libvips/convolution/im_gradcor.c:    to_make-> valid. top,                                                                                 \
libvips/convolution/im_gradcor.c:    to_make-> valid. width + 1,                                                                           \
libvips/convolution/im_gradcor.c:    to_make-> valid. height                                                                               \
libvips/convolution/im_gradcor.c:    return -1;                                                                                            \
libvips/convolution/im_gradcor.c:    int *write_end= writing + write_skip * to_make-> valid. height;                                       \
libvips/convolution/im_gradcor.c:    size_t write_width= to_make-> valid. width;                                                           \
libvips/convolution/im_gradcor.c:    size_t read_skip= ( IM_REGION_LSKIP( make_from ) / sizeof(TYPE) ) - write_width;                      \
libvips/convolution/im_gradcor.c:    write_skip-= write_width;                                                                             \
libvips/convolution/im_gradcor.c:        *writing= (int)( reading[1] - reading[0] );                                                       \
libvips/convolution/im_gradcor.c:    to_make-> valid. left,                                                                                \
libvips/convolution/im_gradcor.c:    to_make-> valid. top,                                                                                 \
libvips/convolution/im_gradcor.c:    to_make-> valid. width,                                                                               \
libvips/convolution/im_gradcor.c:    to_make-> valid. height + 1                                                                           \
libvips/convolution/im_gradcor.c:    return -1;                                                                                            \
libvips/convolution/im_gradcor.c:    int *write_end= writing + write_skip * to_make-> valid. height;                                       \
libvips/convolution/im_gradcor.c:    size_t write_width= to_make-> valid. width;                                                           \
libvips/convolution/im_gradcor.c:    size_t read_skip= read_line - write_width;                                                            \
libvips/convolution/im_gradcor.c:    write_skip-= write_width;                                                                             \
libvips/convolution/im_gradcor.c:        *writing= (int)( reading[ read_line ] - reading[0] );                                             \
libvips/convolution/im_conv.c: *      - adapted for partial v2
libvips/convolution/im_conv.c: *      - memory leaks fixed
libvips/convolution/im_conv.c: *      - ANSIfied
libvips/convolution/im_conv.c: *	- inner loop unrolled with a switch - 25% speed-up!
libvips/convolution/im_conv.c: *	- tiny rounding error removed
libvips/convolution/im_conv.c: *	- new IM_ARRAY() macro
libvips/convolution/im_conv.c: *	- various simplifications
libvips/convolution/im_conv.c: *	- evalend callback added
libvips/convolution/im_conv.c: *	- use of IM_REGION_ADDR() updated
libvips/convolution/im_conv.c: *	- output size was incorrect! see comment below
libvips/convolution/im_conv.c: *	- bug with large non-square matricies fixed too
libvips/convolution/im_conv.c: *	- uses new im_embed() function
libvips/convolution/im_conv.c: *	- wierd bug ... im_free_imask is no longer directly called for close
libvips/convolution/im_conv.c: *	- reworked and simplified, about 10% faster
libvips/convolution/im_conv.c: *	- slightly better range clipping
libvips/convolution/im_conv.c: *	- reject masks with scale == 0
libvips/convolution/im_conv.c: *	- im_conv() now uses im_embed() with edge stretching on the input, not
libvips/convolution/im_conv.c: *	- sets Xoffset / Yoffset
libvips/convolution/im_conv.c: * 	- simpler inner loop avoids gcc4 bug 
libvips/convolution/im_conv.c: * 	- new evalstart/end callbacks
libvips/convolution/im_conv.c: * 	- int rounding was +1 too much, argh
libvips/convolution/im_conv.c: * 	- only rebuild the buffer offsets if bpl changes
libvips/convolution/im_conv.c: * 	- tiny speedups and cleanups
libvips/convolution/im_conv.c: * 	- add restrict, though it doesn't seem to help gcc
libvips/convolution/im_conv.c: * 	- only check for non-zero elements once
libvips/convolution/im_conv.c: * 	- add mask-all-zero check
libvips/convolution/im_conv.c: * 	- cleanups
libvips/convolution/im_conv.c: * 	- gtkdoc
libvips/convolution/im_conv.c: * 	- more cleanups
libvips/convolution/im_conv.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/convolution/im_conv.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/convolution/im_conv.c:	int nnz;		/* Number of non-zero mask elements */
libvips/convolution/im_conv.c:	int *coeff;		/* Array of non-zero mask coefficients */
libvips/convolution/im_conv.c:	int *coeff_pos;		/* Index of each nnz element in mask->coeff */
libvips/convolution/im_conv.c:	IM_FREEF( im_free_imask, conv->mask );
libvips/convolution/im_conv.c:	conv->overflow = 0;
libvips/convolution/im_conv.c:	conv->underflow = 0;
libvips/convolution/im_conv.c:	if( conv->overflow || conv->underflow )
libvips/convolution/im_conv.c:			conv->overflow, conv->underflow );
libvips/convolution/im_conv.c:	const int ne = mask->xsize * mask->ysize;
libvips/convolution/im_conv.c:        conv->in = in;
libvips/convolution/im_conv.c:        conv->out = out;
libvips/convolution/im_conv.c:        conv->mask = NULL;
libvips/convolution/im_conv.c:        conv->nnz = 0;
libvips/convolution/im_conv.c:        conv->coeff = NULL;
libvips/convolution/im_conv.c:        conv->coeff_pos = NULL;
libvips/convolution/im_conv.c:        conv->underflow = 0;
libvips/convolution/im_conv.c:        conv->overflow = 0;
libvips/convolution/im_conv.c:        	!(conv->coeff = IM_ARRAY( out, ne, int )) ||
libvips/convolution/im_conv.c:        	!(conv->coeff_pos = IM_ARRAY( out, ne, int )) ||
libvips/convolution/im_conv.c:        	!(conv->mask = im_dup_imask( mask, "conv_mask" )) )
libvips/convolution/im_conv.c:        /* Find non-zero mask elements.
libvips/convolution/im_conv.c:                if( mask->coeff[i] ) {
libvips/convolution/im_conv.c:			conv->coeff[conv->nnz] = mask->coeff[i];
libvips/convolution/im_conv.c:			conv->coeff_pos[conv->nnz] = i;
libvips/convolution/im_conv.c:			conv->nnz += 1;
libvips/convolution/im_conv.c:	if( conv->nnz == 0 ) {
libvips/convolution/im_conv.c:		conv->coeff[0] = mask->coeff[0];
libvips/convolution/im_conv.c:		conv->coeff_pos[0] = 0;
libvips/convolution/im_conv.c:		conv->nnz = 1;
libvips/convolution/im_conv.c:	int *offsets;		/* Offsets for each non-zero matrix element */
libvips/convolution/im_conv.c:	PEL **pts;		/* Per-non-zero mask element pointers */
libvips/convolution/im_conv.c:	conv->overflow += seq->overflow;
libvips/convolution/im_conv.c:	conv->underflow += seq->underflow;
libvips/convolution/im_conv.c:	IM_FREEF( im_region_free, seq->ir );
libvips/convolution/im_conv.c:	seq->conv = conv;
libvips/convolution/im_conv.c:	seq->ir = NULL;
libvips/convolution/im_conv.c:	seq->pts = NULL;
libvips/convolution/im_conv.c:	seq->underflow = 0;
libvips/convolution/im_conv.c:	seq->overflow = 0;
libvips/convolution/im_conv.c:	seq->last_bpl = -1;
libvips/convolution/im_conv.c:	seq->ir = im_region_create( in );
libvips/convolution/im_conv.c:	seq->offsets = IM_ARRAY( out, conv->nnz, int );
libvips/convolution/im_conv.c:	seq->pts = IM_ARRAY( out, conv->nnz, PEL * );
libvips/convolution/im_conv.c:	if( !seq->ir || !seq->offsets || !seq->pts ) {
libvips/convolution/im_conv.c:	TYPE ** restrict p = (TYPE **) seq->pts; \
libvips/convolution/im_conv.c:		IM_UNROLL( conv->nnz, INNER ); \
libvips/convolution/im_conv.c:		sum = ((sum + rounding) / mask->scale) + mask->offset; \
libvips/convolution/im_conv.c:	TYPE ** restrict p = (TYPE **) seq->pts; \
libvips/convolution/im_conv.c:		IM_UNROLL( conv->nnz, INNER ); \
libvips/convolution/im_conv.c:		sum = (sum / mask->scale) + mask->offset; \
libvips/convolution/im_conv.c:	REGION *ir = seq->ir;
libvips/convolution/im_conv.c:	INTMASK *mask = conv->mask;
libvips/convolution/im_conv.c:	int * restrict t = conv->coeff; 
libvips/convolution/im_conv.c:	int rounding = mask->scale / 2;
libvips/convolution/im_conv.c:	Rect *r = &or->valid;
libvips/convolution/im_conv.c:	int le = r->left;
libvips/convolution/im_conv.c:	int to = r->top;
libvips/convolution/im_conv.c:	s.width += mask->xsize - 1;
libvips/convolution/im_conv.c:	s.height += mask->ysize - 1;
libvips/convolution/im_conv.c:		return( -1 );
libvips/convolution/im_conv.c:	if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) {
libvips/convolution/im_conv.c:		seq->last_bpl = IM_REGION_LSKIP( ir );
libvips/convolution/im_conv.c:		for( i = 0; i < conv->nnz; i++ ) {
libvips/convolution/im_conv.c:			z = conv->coeff_pos[i];
libvips/convolution/im_conv.c:			x = z % conv->mask->xsize;
libvips/convolution/im_conv.c:			y = z / conv->mask->xsize;
libvips/convolution/im_conv.c:			seq->offsets[i] = 
libvips/convolution/im_conv.c:				IM_REGION_ADDR( ir, x + le, y + to ) -
libvips/convolution/im_conv.c:                for( z = 0; z < conv->nnz; z++ ) 
libvips/convolution/im_conv.c:                        seq->pts[z] = seq->offsets[z] +  
libvips/convolution/im_conv.c:		switch( in->BandFmt ) {
libvips/convolution/im_conv.c:		return( -1 );
libvips/convolution/im_conv.c:	if( mask->scale == 0 ) {
libvips/convolution/im_conv.c:		im_error( "im_conv", "%s", "mask scale must be non-zero" );
libvips/convolution/im_conv.c:		return( -1 );
libvips/convolution/im_conv.c:		return( -1 );
libvips/convolution/im_conv.c:	/* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output
libvips/convolution/im_conv.c:		return( -1 );
libvips/convolution/im_conv.c:	out->Xsize -= mask->xsize - 1;
libvips/convolution/im_conv.c:	out->Ysize -= mask->ysize - 1;
libvips/convolution/im_conv.c:	if( out->Xsize <= 0 || out->Ysize <= 0 ) {
libvips/convolution/im_conv.c:		return( -1 );
libvips/convolution/im_conv.c:		return( -1 );
libvips/convolution/im_conv.c:	out->Xoffset = -mask->xsize / 2;
libvips/convolution/im_conv.c:	out->Yoffset = -mask->ysize / 2;
libvips/convolution/im_conv.c: * always has the same #VipsBandFmt as the input image. Non-complex images
libvips/convolution/im_conv.c: * includes round-to-nearest.
libvips/convolution/im_conv.c: * Returns: 0 on success, -1 on error
libvips/convolution/im_conv.c:		im_embed( in, t1, 1, mask->xsize / 2, mask->ysize / 2, 
libvips/convolution/im_conv.c:			in->Xsize + mask->xsize - 1, 
libvips/convolution/im_conv.c:			in->Ysize + mask->ysize - 1 ) ||
libvips/convolution/im_conv.c:		return( -1 );
libvips/convolution/im_conv.c:	out->Xoffset = 0;
libvips/convolution/im_conv.c:	out->Yoffset = 0;
libvips/arithmetic/im_minpos.c: *	- correct result for more than 1 band now.
libvips/arithmetic/im_minpos.c: *	- im_incheck() added
libvips/arithmetic/im_minpos.c: *	- now returns double for value, like im_max()
libvips/arithmetic/im_minpos.c: * 	- gtkdoc comment
libvips/arithmetic/im_minpos.c: * 	- rewrite, from im_maxpos()
libvips/arithmetic/im_minpos.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_minpos.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_minpos.c:/* Merge the sequence value back into the per-call state.
libvips/arithmetic/im_minpos.c:	if( minpos->min < global_minpos->min ) 
libvips/arithmetic/im_minpos.c:			xpos = r->left + x / reg->im->Bands; \
libvips/arithmetic/im_minpos.c:			ypos = r->top + y; \
libvips/arithmetic/im_minpos.c:			xpos = r->left + x / reg->im->Bands; \
libvips/arithmetic/im_minpos.c:			ypos = r->top + y; \
libvips/arithmetic/im_minpos.c:	const Rect *r = &reg->valid;
libvips/arithmetic/im_minpos.c:	xpos = minpos->xpos;
libvips/arithmetic/im_minpos.c:	ypos = minpos->ypos;
libvips/arithmetic/im_minpos.c:	min = minpos->min;
libvips/arithmetic/im_minpos.c:	for( y = 0; y < r->height; y++ ) { 
libvips/arithmetic/im_minpos.c:		PEL *in = (PEL *) IM_REGION_ADDR( reg, r->left, r->top + y ); 
libvips/arithmetic/im_minpos.c:		switch( reg->im->BandFmt ) {
libvips/arithmetic/im_minpos.c:	minpos->xpos = xpos;
libvips/arithmetic/im_minpos.c:	minpos->ypos = ypos;
libvips/arithmetic/im_minpos.c:	minpos->min = min;
libvips/arithmetic/im_minpos.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_minpos.c:		return( -1 );
libvips/arithmetic/im_minpos.c:		return( -1 );
libvips/arithmetic/im_minpos.c:	if( im__value( in, &global_minpos->min ) )
libvips/arithmetic/im_minpos.c:		return( -1 );
libvips/arithmetic/im_minpos.c:	global_minpos->xpos = 0;
libvips/arithmetic/im_minpos.c:	global_minpos->ypos = 0;
libvips/arithmetic/im_minpos.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) )
libvips/arithmetic/im_minpos.c:		global_minpos->min *= global_minpos->min;
libvips/arithmetic/im_minpos.c:		return( -1 );
libvips/arithmetic/im_minpos.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) )
libvips/arithmetic/im_minpos.c:		global_minpos->min = sqrt( global_minpos->min );
libvips/arithmetic/im_minpos.c:		*xpos = global_minpos->xpos;
libvips/arithmetic/im_minpos.c:		*ypos = global_minpos->ypos;
libvips/arithmetic/im_minpos.c:		*out = global_minpos->min;
libvips/arithmetic/im_minpos.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/arithmetic/im_sign.c: *	- from im_cmulnorm
libvips/arithmetic/im_sign.c: * 	- gtkdoc, tidies
libvips/arithmetic/im_sign.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_sign.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_sign.c:			q[x] = -1; \
libvips/arithmetic/im_sign.c:	int n = w * im->Bands;
libvips/arithmetic/im_sign.c:	switch( im->BandFmt ) {
libvips/arithmetic/im_sign.c: * Finds the unit vector in the direction of the pixel value. For non-complex
libvips/arithmetic/im_sign.c: * images, it returns a signed char image with values -1, 0, and 1 for negative,
libvips/arithmetic/im_sign.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_sign.c:                return( -1 );
libvips/arithmetic/im_sign.c:	if( !vips_bandfmt_iscomplex( in->BandFmt ) ) 
libvips/arithmetic/im_sign.c:		out->BandFmt = IM_BANDFMT_CHAR;
libvips/arithmetic/im_sign.c:                return( -1 );
libvips/arithmetic/im_remainder.c: *	- im_divide adapted to make im_remainder
libvips/arithmetic/im_remainder.c: *	- im_remainderconst added
libvips/arithmetic/im_remainder.c: *	- im_remainderconst_vec added
libvips/arithmetic/im_remainder.c: *	- updated for 1 band $op n band image -> n band image case
libvips/arithmetic/im_remainder.c: * 	- oop, broken for _vec case :-(
libvips/arithmetic/im_remainder.c: * 	- better /0 test
libvips/arithmetic/im_remainder.c: * 	- revise upcasting system
libvips/arithmetic/im_remainder.c: * 	- add gtkdoc comments
libvips/arithmetic/im_remainder.c: * 	- constant ops clip to target range
libvips/arithmetic/im_remainder.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_remainder.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_remainder.c:/* Integer remainder-after-division.
libvips/arithmetic/im_remainder.c:			q[x] = -1; \
libvips/arithmetic/im_remainder.c:/* Float remainder-after-division.
libvips/arithmetic/im_remainder.c:			q[x] = a - b * floor (a / b); \
libvips/arithmetic/im_remainder.c:			q[x] = -1; \
libvips/arithmetic/im_remainder.c:	const int ne = width * im->Bands;
libvips/arithmetic/im_remainder.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_remainder.c: * non-complex format. For float formats, im_remainder() calculates @in1 -
libvips/arithmetic/im_remainder.c: * must have one band. In this case, an n-band image is formed from the 
libvips/arithmetic/im_remainder.c: * one-band image by joining n copies of the one-band image together, and then
libvips/arithmetic/im_remainder.c: * the two n-band images are operated upon.
libvips/arithmetic/im_remainder.c: * <link linkend="VIPS-arithmetic">arithmetic</link>), and that format is the
libvips/arithmetic/im_remainder.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_remainder.c:		return( -1 );
libvips/arithmetic/im_remainder.c:		return( -1 );
libvips/arithmetic/im_remainder.c:		return( -1 );
libvips/arithmetic/im_remainder.c:	out->BandFmt = format_table[in->BandFmt];
libvips/arithmetic/im_remainder.c:	 * can do bitwise-and without having to cast for each pixel), some
libvips/arithmetic/im_remainder.c:		return( -1 );
libvips/arithmetic/im_remainder.c:	/* Band-up the input image if we have a >1 vector and
libvips/arithmetic/im_remainder.c:	 * a 1-band image.
libvips/arithmetic/im_remainder.c:	if( n > 1 && out->Bands == 1 ) {
libvips/arithmetic/im_remainder.c:			return( -1 );
libvips/arithmetic/im_remainder.c:			return( -1 );
libvips/arithmetic/im_remainder.c:			return( -1 );
libvips/arithmetic/im_remainder.c:/* Integer remainder-after-divide, single constant.
libvips/arithmetic/im_remainder.c:/* Float remainder-after-divide, single constant.
libvips/arithmetic/im_remainder.c:			q[x] = a - c * floor (a / c); \
libvips/arithmetic/im_remainder.c:			q[x] = -1; \
libvips/arithmetic/im_remainder.c:	const int ne = width * im->Bands;
libvips/arithmetic/im_remainder.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_remainder.c:/* Integer remainder-after-divide, per-band constant.
libvips/arithmetic/im_remainder.c:/* Float remainder-after-divide, per-band constant.
libvips/arithmetic/im_remainder.c:				q[i] = a - b * floor (a / b); \
libvips/arithmetic/im_remainder.c:				q[i] = -1; \
libvips/arithmetic/im_remainder.c:	int b = im->Bands;
libvips/arithmetic/im_remainder.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_remainder.c: * non-complex format. For float formats, im_remainder() calculates @in -
libvips/arithmetic/im_remainder.c: * must have one band. Either the image is up-banded by joining n copies of
libvips/arithmetic/im_remainder.c: * the one-band image together, or the array is upbanded by copying the single
libvips/arithmetic/im_remainder.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_remainder.c:		return( -1 );
libvips/arithmetic/im_remainder.c:		in, out, n, c, in->BandFmt,
libvips/arithmetic/im_remainder.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_multiply.c: *	- now works for partial images
libvips/arithmetic/im_multiply.c: *	- adapted for partial v2
libvips/arithmetic/im_multiply.c: *	- ANSIfied
libvips/arithmetic/im_multiply.c: *	- coredump-inducing bug in complex*complex fixed
libvips/arithmetic/im_multiply.c: *	- char*short bug fixed
libvips/arithmetic/im_multiply.c: *	- new im_add adapted to make new im_multiply
libvips/arithmetic/im_multiply.c: *	- updated for 1 band $op n band image -> n band image case
libvips/arithmetic/im_multiply.c: * 	- add liboil support
libvips/arithmetic/im_multiply.c: * 	- revise upcasting system
libvips/arithmetic/im_multiply.c: * 	- add gtkdoc comments
libvips/arithmetic/im_multiply.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_multiply.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_multiply.c:		q[0] = x1 * x2 - y1 * y2; \
libvips/arithmetic/im_multiply.c:	const int sz = width * im->Bands;
libvips/arithmetic/im_multiply.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_multiply.c: * must have one band. In this case, an n-band image is formed from the 
libvips/arithmetic/im_multiply.c: * one-band image by joining n copies of the one-band image together, and then
libvips/arithmetic/im_multiply.c: * the two n-band images are operated upon.
libvips/arithmetic/im_multiply.c: * <link linkend="VIPS-arithmetic">arithmetic</link>), then the 
libvips/arithmetic/im_multiply.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_stats.c:	- adapted to partial images
libvips/arithmetic/im_stats.c:	- special struct abandoned; now returns DOUBLEMASK.
libvips/arithmetic/im_stats.c:	- adapted for partial v2
libvips/arithmetic/im_stats.c:	- ANSIfied
libvips/arithmetic/im_stats.c:	- init of mask changed to use actual values, not IM_MAXDOUBLE and
libvips/arithmetic/im_stats.c:	  (-IM_MAXDOUBLE). These caused problems when assigned to floats.
libvips/arithmetic/im_stats.c:	- forgot to init global max/min properly! sorry.
libvips/arithmetic/im_stats.c:	- still did not init max and min correctly --- now fixed for good
libvips/arithmetic/im_stats.c: *	- use 64 bit arithmetic 
libvips/arithmetic/im_stats.c: *	- argh nope min/max was broken again for >1CPU in short pipelines on 
libvips/arithmetic/im_stats.c: * 	- rework based on new im__wrapscan() / im_max() ideas for a proper fix
libvips/arithmetic/im_stats.c: * 	- gtkdoc comment
libvips/arithmetic/im_stats.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_stats.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_stats.c:/* Track min/max/sum/sum-of-squares for each thread during a scan.
libvips/arithmetic/im_stats.c:	if( !(stats = IM_ARRAY( NULL, 4 * im->Bands, double )) )
libvips/arithmetic/im_stats.c:	for( i = 0; i < 4 * im->Bands; i++ )
libvips/arithmetic/im_stats.c:	for( i = 0; i < 4 * im->Bands; i += 4 ) {
libvips/arithmetic/im_stats.c:	for( z = 0; z < im->Bands; z++ ) { \
libvips/arithmetic/im_stats.c:			q += im->Bands; \
libvips/arithmetic/im_stats.c:	switch( im->BandFmt ) {
libvips/arithmetic/im_stats.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_stats.c:	if( !(global_stats = IM_ARRAY( im, 4 * im->Bands, double )) )
libvips/arithmetic/im_stats.c:	for( i = 0; i < 4 * im->Bands; i += 4 ) {
libvips/arithmetic/im_stats.c:	if( !(out = im_create_dmask( "stats", 6, im->Bands + 1 )) )
libvips/arithmetic/im_stats.c:	out->coeff[0] = value;
libvips/arithmetic/im_stats.c:	out->coeff[1] = value;
libvips/arithmetic/im_stats.c:	out->coeff[2] = 0.0;
libvips/arithmetic/im_stats.c:	out->coeff[3] = 0.0;
libvips/arithmetic/im_stats.c:	pels = (gint64) im->Xsize * im->Ysize;
libvips/arithmetic/im_stats.c:	vals = pels * im->Bands;
libvips/arithmetic/im_stats.c:	for( i = 0; i < im->Bands; i++ ) {
libvips/arithmetic/im_stats.c:		row = out->coeff + (i + 1) * 6;
libvips/arithmetic/im_stats.c:		out->coeff[0] = IM_MIN( out->coeff[0], row[0] );
libvips/arithmetic/im_stats.c:		out->coeff[1] = IM_MAX( out->coeff[1], row[1] );
libvips/arithmetic/im_stats.c:		out->coeff[2] += row[2];
libvips/arithmetic/im_stats.c:		out->coeff[3] += row[3];
libvips/arithmetic/im_stats.c:		row[5] = sqrt( fabs( row[3] - (row[2] * row[2] / pels) ) / 
libvips/arithmetic/im_stats.c:			(pels - 1) );
libvips/arithmetic/im_stats.c:	out->coeff[4] = out->coeff[2] / vals;
libvips/arithmetic/im_stats.c:	out->coeff[5] = sqrt( fabs( out->coeff[3] - 
libvips/arithmetic/im_stats.c:		(out->coeff[2] * out->coeff[2] / vals) ) / (vals - 1) );
libvips/arithmetic/im_recomb.c: *	- mildly modernised
libvips/arithmetic/im_recomb.c: *	- better error checks, partial
libvips/arithmetic/im_recomb.c: * 	- gtkdoc
libvips/arithmetic/im_recomb.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_recomb.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_recomb.c:		double *m = mat->coeff; \
libvips/arithmetic/im_recomb.c:		for( v = 0; v < mat->ysize; v++ ) { \
libvips/arithmetic/im_recomb.c:			for( u = 0; u < mat->xsize; u++ ) \
libvips/arithmetic/im_recomb.c:		p += mat->xsize; \
libvips/arithmetic/im_recomb.c:	switch( in->BandFmt ) {
libvips/arithmetic/im_recomb.c: * an n-element vector, where n is the number of bands in @in, and multipled by
libvips/arithmetic/im_recomb.c: * the n x m matrix @recomb to produce the m-band image @out.
libvips/arithmetic/im_recomb.c: * Returns: 0 on success, -1 on error.
libvips/arithmetic/im_recomb.c:		return( -1 );
libvips/arithmetic/im_recomb.c:	if( in->Bands != recomb->xsize ) {
libvips/arithmetic/im_recomb.c:		return( -1 );
libvips/arithmetic/im_recomb.c:		return( -1 );
libvips/arithmetic/im_recomb.c:	out->Bands = recomb->ysize;
libvips/arithmetic/im_recomb.c:	if( vips_bandfmt_isint( in->BandFmt ) ) 
libvips/arithmetic/im_recomb.c:		out->BandFmt = IM_BANDFMT_FLOAT;
libvips/arithmetic/im_recomb.c:		return( -1 );
libvips/arithmetic/im_recomb.c:		return( -1 );
libvips/arithmetic/im_recomb.c:		return( -1 );
libvips/arithmetic/im_maxpos_vec.c: * Written on: 2006-09-01
libvips/arithmetic/im_maxpos_vec.c: * 	- gtkdoc comments
libvips/arithmetic/im_maxpos_vec.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_maxpos_vec.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_maxpos_vec.c: * For 8 and 16-bit images, it's much faster to find the histogram and then
libvips/arithmetic/im_maxpos_vec.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_maxpos_vec.c:  /* efficiency decreases as more sequences are used - speed may still increase   */
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:  if( ! ( vips_bandfmt_isint( im->BandFmt ) || 
libvips/arithmetic/im_maxpos_vec.c:	vips_bandfmt_isfloat( im->BandFmt ) ) ){
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:  if( 1 != im-> Bands ){
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:  if( IM_CODING_NONE != im-> Coding ){
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c: * For 8 and 16-bit images, it's much faster to find the histogram and then
libvips/arithmetic/im_maxpos_vec.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_maxpos_vec.c:  /* effeciency decreases as more sequences are used - speed may still increase   */
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:  if( ! ( vips_bandfmt_isint( im->BandFmt ) || 
libvips/arithmetic/im_maxpos_vec.c:	vips_bandfmt_isfloat( im->BandFmt ) ) ){
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:  if( 1 != im-> Bands ){
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:  if( IM_CODING_NONE != im-> Coding ){
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:    return -1;
libvips/arithmetic/im_maxpos_vec.c:  list-> xs= im_malloc( NULL, 3 * n * sizeof( int ) );
libvips/arithmetic/im_maxpos_vec.c:  list-> vals= im_malloc( NULL, n * sizeof( double ) );
libvips/arithmetic/im_maxpos_vec.c:  if( ! list-> xs || ! list-> vals ){
libvips/arithmetic/im_maxpos_vec.c:    im_free( list-> xs );
libvips/arithmetic/im_maxpos_vec.c:    im_free( list-> vals );
libvips/arithmetic/im_maxpos_vec.c:  list-> ys= list-> xs + n;
libvips/arithmetic/im_maxpos_vec.c:  list-> ptrs= list-> ys + n;
libvips/arithmetic/im_maxpos_vec.c:  im_free( list-> xs );
libvips/arithmetic/im_maxpos_vec.c:  im_free( list-> vals );
libvips/arithmetic/im_maxpos_vec.c:    list-> xs[ i ]= 0;
libvips/arithmetic/im_maxpos_vec.c:    list-> ys[ i ]= 0;
libvips/arithmetic/im_maxpos_vec.c:    list-> vals[ i ]= 0;
libvips/arithmetic/im_maxpos_vec.c:    list-> ptrs[ i ]= i + 1;
libvips/arithmetic/im_maxpos_vec.c:  list-> ptrs[ n - 1 ]= -1;
libvips/arithmetic/im_maxpos_vec.c:  list-> start= 0;
libvips/arithmetic/im_maxpos_vec.c:  int y= reg-> valid. top;                                                              \
libvips/arithmetic/im_maxpos_vec.c:  int ymax= y + reg-> valid. height;                                                    \
libvips/arithmetic/im_maxpos_vec.c:  int xmax= reg-> valid. left + reg-> valid. width;                                     \
libvips/arithmetic/im_maxpos_vec.c:  type *row= (type*)IM_REGION_ADDR( reg, reg-> valid. left, y ) - reg-> valid. left;    \
libvips/arithmetic/im_maxpos_vec.c:    for( x= reg-> valid. left; x < xmax; ++x )                                          \
libvips/arithmetic/im_maxpos_vec.c:      if( row[ x ] > list-> vals[ list-> start ] )                                      \
libvips/arithmetic/im_maxpos_vec.c:  switch( reg-> im-> BandFmt ){
libvips/arithmetic/im_maxpos_vec.c:  int pointer= list-> start;
libvips/arithmetic/im_maxpos_vec.c:  while( -1 != list-> ptrs[ pointer ] && val > list-> vals[ list-> ptrs[ pointer ] ] )
libvips/arithmetic/im_maxpos_vec.c:    pointer= list-> ptrs[ pointer ];
libvips/arithmetic/im_maxpos_vec.c:  list-> xs[ list-> start ]= x;
libvips/arithmetic/im_maxpos_vec.c:  list-> ys[ list-> start ]= y;
libvips/arithmetic/im_maxpos_vec.c:  list-> vals[ list-> start ]= val;
libvips/arithmetic/im_maxpos_vec.c:  if( list-> start != pointer ){  
libvips/arithmetic/im_maxpos_vec.c:    /* we are adding mid-chain not at the very bottom */
libvips/arithmetic/im_maxpos_vec.c:    int second= list-> ptrs[ list-> start ];
libvips/arithmetic/im_maxpos_vec.c:    list-> ptrs[ list-> start ]= list-> ptrs[ pointer ];
libvips/arithmetic/im_maxpos_vec.c:    list-> ptrs[ pointer ]= list-> start;
libvips/arithmetic/im_maxpos_vec.c:    list-> start= second;
libvips/arithmetic/im_maxpos_vec.c:  int prev= -1;
libvips/arithmetic/im_maxpos_vec.c:  int pointer= list-> start;
libvips/arithmetic/im_maxpos_vec.c:  while( -1 != list-> ptrs[ pointer ] ){
libvips/arithmetic/im_maxpos_vec.c:    int next= list-> ptrs[ pointer ];
libvips/arithmetic/im_maxpos_vec.c:    list-> ptrs[ pointer ]= prev;
libvips/arithmetic/im_maxpos_vec.c:  list-> ptrs[ pointer ]= prev;
libvips/arithmetic/im_maxpos_vec.c:  list-> start= pointer;
libvips/arithmetic/im_maxpos_vec.c:  for( ; -1 != pointer; pointer= list-> ptrs[ pointer ] )
libvips/arithmetic/im_maxpos_vec.c:    if( list-> vals[ pointer ] > master_list-> vals[ master_list-> start ] )
libvips/arithmetic/im_maxpos_vec.c:      add_to_maxpos_list( master_list, list-> xs[ pointer ], list-> ys[ pointer ], list-> vals[ pointer ] );
libvips/arithmetic/im_maxpos_vec.c:      /* since we are now high->low, if this one isn't big enough, none of the rest are */
libvips/arithmetic/im_maxpos_vec.c:    list-> xs[ i ]= 0;
libvips/arithmetic/im_maxpos_vec.c:    list-> ys[ i ]= 0;
libvips/arithmetic/im_maxpos_vec.c:    list-> vals[ i ]= DBL_MAX;
libvips/arithmetic/im_maxpos_vec.c:    list-> ptrs[ i ]= i + 1;
libvips/arithmetic/im_maxpos_vec.c:  list-> ptrs[ n - 1 ]= -1;
libvips/arithmetic/im_maxpos_vec.c:  list-> start= 0;
libvips/arithmetic/im_maxpos_vec.c:  int y= reg-> valid. top;                                                              \
libvips/arithmetic/im_maxpos_vec.c:  int ymax= y + reg-> valid. height;                                                    \
libvips/arithmetic/im_maxpos_vec.c:  int xmax= reg-> valid. left + reg-> valid. width;                                     \
libvips/arithmetic/im_maxpos_vec.c:  type *row= (type*)IM_REGION_ADDR( reg, reg-> valid. left, y ) - reg-> valid. left;    \
libvips/arithmetic/im_maxpos_vec.c:    for( x= reg-> valid. left; x < xmax; ++x )                                          \
libvips/arithmetic/im_maxpos_vec.c:      if( row[ x ] < list-> vals[ list-> start ] )                                      \
libvips/arithmetic/im_maxpos_vec.c:  switch( reg-> im-> BandFmt ){
libvips/arithmetic/im_maxpos_vec.c:  int pointer= list-> start;
libvips/arithmetic/im_maxpos_vec.c:  while( -1 != list-> ptrs[ pointer ] && val < list-> vals[ list-> ptrs[ pointer ] ] )
libvips/arithmetic/im_maxpos_vec.c:    pointer= list-> ptrs[ pointer ];
libvips/arithmetic/im_maxpos_vec.c:  list-> xs[ list-> start ]= x;
libvips/arithmetic/im_maxpos_vec.c:  list-> ys[ list-> start ]= y;
libvips/arithmetic/im_maxpos_vec.c:  list-> vals[ list-> start ]= val;
libvips/arithmetic/im_maxpos_vec.c:  if( list-> start != pointer ){  
libvips/arithmetic/im_maxpos_vec.c:    /* we are adding mid-chain not at the very bottom */
libvips/arithmetic/im_maxpos_vec.c:    int second= list-> ptrs[ list-> start ];
libvips/arithmetic/im_maxpos_vec.c:    list-> ptrs[ list-> start ]= list-> ptrs[ pointer ];
libvips/arithmetic/im_maxpos_vec.c:    list-> ptrs[ pointer ]= list-> start;
libvips/arithmetic/im_maxpos_vec.c:    list-> start= second;
libvips/arithmetic/im_maxpos_vec.c:  int prev= -1;
libvips/arithmetic/im_maxpos_vec.c:  int pointer= list-> start;
libvips/arithmetic/im_maxpos_vec.c:  while( -1 != list-> ptrs[ pointer ] ){
libvips/arithmetic/im_maxpos_vec.c:    int next= list-> ptrs[ pointer ];
libvips/arithmetic/im_maxpos_vec.c:    list-> ptrs[ pointer ]= prev;
libvips/arithmetic/im_maxpos_vec.c:  list-> ptrs[ pointer ]= prev;
libvips/arithmetic/im_maxpos_vec.c:  list-> start= pointer;
libvips/arithmetic/im_maxpos_vec.c:  for( ; -1 != pointer; pointer= list-> ptrs[ pointer ] )
libvips/arithmetic/im_maxpos_vec.c:    if( list-> vals[ pointer ] < master_list-> vals[ master_list-> start ] )
libvips/arithmetic/im_maxpos_vec.c:      add_to_minpos_list( master_list, list-> xs[ pointer ], list-> ys[ pointer ], list-> vals[ pointer ] );
libvips/arithmetic/im_maxpos_vec.c:      /* since we are now high->low, if this one isn't big enough, none of the rest are */
libvips/arithmetic/math.c:/* math.c --- call various -lm functions (trig, log etc.) on imags
libvips/arithmetic/math.c: *	- adapted from im_lintra to work with partial images
libvips/arithmetic/math.c: *	- incorrect implementation of complex logs removed
libvips/arithmetic/math.c: *	- adapted for partial v2
libvips/arithmetic/math.c: *	- ANSIfied
libvips/arithmetic/math.c: *	- im_logtra() adapted to make im_sintra()
libvips/arithmetic/math.c: *	- adapted for im_wrapone()
libvips/arithmetic/math.c: *	- im_asintra() added
libvips/arithmetic/math.c: * 	- gtkdoc
libvips/arithmetic/math.c: * 	- tiny cleanups
libvips/arithmetic/math.c: * 	- use im__math()
libvips/arithmetic/math.c: * 	- im_sintra() adapted to make math.c
libvips/arithmetic/math.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/math.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/math.c:/* What we do for each band element. Non-complex only.
libvips/arithmetic/math.c:	const int ne = width * im->Bands; \
libvips/arithmetic/math.c:        switch( im->BandFmt ) { \
libvips/arithmetic/math.c:/* Do a math (eg. sin(), acos(), log()) type-function. No complex, everything
libvips/arithmetic/math.c:		return( -1 );
libvips/arithmetic/math.c:		return( -1 );
libvips/arithmetic/math.c:	if( vips_bandfmt_isint( in->BandFmt ) ) 
libvips/arithmetic/math.c:		out->BandFmt = IM_BANDFMT_FLOAT;
libvips/arithmetic/math.c:		return( -1 );
libvips/arithmetic/math.c: * double, in which case the output is double.  Non-complex images only.
libvips/arithmetic/math.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/math.c: * double, in which case the output is double.  Non-complex images only.
libvips/arithmetic/math.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/math.c: * double, in which case the output is double.  Non-complex images only.
libvips/arithmetic/math.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/math.c: * case the output is double.  Non-complex images only.
libvips/arithmetic/math.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/math.c: * double, in which case the output is double.  Non-complex images only.
libvips/arithmetic/math.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/math.c: * case the output is double.  Non-complex images only.
libvips/arithmetic/math.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/math.c: * double, in which case the output is double.  Non-complex images only.
libvips/arithmetic/math.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/math.c: * double, in which case the output is double.  Non-complex images only.
libvips/arithmetic/math.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_maxpos_avg.c: * Written on: 2006-09-25
libvips/arithmetic/im_maxpos_avg.c: * 	- changed spelling of occurrences
libvips/arithmetic/im_maxpos_avg.c: * 	- check for !occurrences before using val
libvips/arithmetic/im_maxpos_avg.c: * 	- renamed avg as sum, a bit clearer
libvips/arithmetic/im_maxpos_avg.c: * 	- gtkdoc comment
libvips/arithmetic/im_maxpos_avg.c: * 	- rewrite from im_maxpos()
libvips/arithmetic/im_maxpos_avg.c: * 	- now handles many bands, complex, faster
libvips/arithmetic/im_maxpos_avg.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_maxpos_avg.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_maxpos_avg.c:/* Merge the sequence value back into the per-call state.
libvips/arithmetic/im_maxpos_avg.c:	if( maxposavg->max > global_maxposavg->max ) 
libvips/arithmetic/im_maxpos_avg.c:			xpos += r->left + x / reg->im->Bands; \
libvips/arithmetic/im_maxpos_avg.c:			ypos += r->top + y; \
libvips/arithmetic/im_maxpos_avg.c:			xpos = r->left + x / reg->im->Bands; \
libvips/arithmetic/im_maxpos_avg.c:			ypos = r->top + y; \
libvips/arithmetic/im_maxpos_avg.c:			xpos += r->left + x / reg->im->Bands; \
libvips/arithmetic/im_maxpos_avg.c:			ypos += r->top + y; \
libvips/arithmetic/im_maxpos_avg.c:			xpos = r->left + x / reg->im->Bands; \
libvips/arithmetic/im_maxpos_avg.c:			ypos = r->top + y; \
libvips/arithmetic/im_maxpos_avg.c:	const Rect *r = &reg->valid;
libvips/arithmetic/im_maxpos_avg.c:	xpos = maxposavg->xpos;
libvips/arithmetic/im_maxpos_avg.c:	ypos = maxposavg->ypos;
libvips/arithmetic/im_maxpos_avg.c:	max = maxposavg->max;
libvips/arithmetic/im_maxpos_avg.c:	occurences = maxposavg->occurences;
libvips/arithmetic/im_maxpos_avg.c:	for( y = 0; y < r->height; y++ ) { 
libvips/arithmetic/im_maxpos_avg.c:		PEL *in = (PEL *) IM_REGION_ADDR( reg, r->left, r->top + y ); 
libvips/arithmetic/im_maxpos_avg.c:		switch( reg->im->BandFmt ) {
libvips/arithmetic/im_maxpos_avg.c:	maxposavg->xpos = xpos;
libvips/arithmetic/im_maxpos_avg.c:	maxposavg->ypos = ypos;
libvips/arithmetic/im_maxpos_avg.c:	maxposavg->max = max;
libvips/arithmetic/im_maxpos_avg.c:	maxposavg->occurences = occurences;
libvips/arithmetic/im_maxpos_avg.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_maxpos_avg.c:		return( -1 );
libvips/arithmetic/im_maxpos_avg.c:		return( -1 );
libvips/arithmetic/im_maxpos_avg.c:	if( im__value( in, &global_maxposavg->max ) )
libvips/arithmetic/im_maxpos_avg.c:		return( -1 );
libvips/arithmetic/im_maxpos_avg.c:	global_maxposavg->xpos = 0;
libvips/arithmetic/im_maxpos_avg.c:	global_maxposavg->ypos = 0;
libvips/arithmetic/im_maxpos_avg.c:	global_maxposavg->occurences = 1;
libvips/arithmetic/im_maxpos_avg.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) )
libvips/arithmetic/im_maxpos_avg.c:		global_maxposavg->max *= global_maxposavg->max;
libvips/arithmetic/im_maxpos_avg.c:		return( -1 );
libvips/arithmetic/im_maxpos_avg.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) )
libvips/arithmetic/im_maxpos_avg.c:		global_maxposavg->max = sqrt( global_maxposavg->max );
libvips/arithmetic/im_maxpos_avg.c:		*xpos = (double) global_maxposavg->xpos / 
libvips/arithmetic/im_maxpos_avg.c:			global_maxposavg->occurences;
libvips/arithmetic/im_maxpos_avg.c:		*ypos = (double) global_maxposavg->ypos / 
libvips/arithmetic/im_maxpos_avg.c:			global_maxposavg->occurences;
libvips/arithmetic/im_maxpos_avg.c:		*out = global_maxposavg->max;
libvips/arithmetic/arith_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/arith_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/arith_dispatch.c: * @see_also: <link linkend="libvips-boolean">boolean</link>
libvips/arithmetic/arith_dispatch.c: * must have one band. In this case, an n-band image is formed from the 
libvips/arithmetic/arith_dispatch.c: * one-band image by joining n copies of the one-band image together, and then
libvips/arithmetic/arith_dispatch.c: * the two n-band images are operated upon.
libvips/arithmetic/arith_dispatch.c: * im_remainder_vec(), you can mix single-element arrays or single-band 
libvips/arithmetic/arith_dispatch.c:	return( im_recomb( argv[0], argv[1], mo->mask ) );
libvips/arithmetic/arith_dispatch.c:		return( -1 );
libvips/arithmetic/arith_dispatch.c:		return( -1 );
libvips/arithmetic/arith_dispatch.c:	return( im_expntra_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/arithmetic/arith_dispatch.c:	if( dva->n != dvb->n ) {
libvips/arithmetic/arith_dispatch.c:		return( -1 );
libvips/arithmetic/arith_dispatch.c:	return( im_lintra_vec( dva->n, dva->vec, argv[1], dvb->vec, argv[3] ) );
libvips/arithmetic/arith_dispatch.c:	N_( "calculate a*in + b -> out, a and b vectors" ),
libvips/arithmetic/arith_dispatch.c:		return( -1 );
libvips/arithmetic/arith_dispatch.c:		return( -1 );
libvips/arithmetic/arith_dispatch.c:  xes->vec = IM_ARRAY( NULL, n, int );
libvips/arithmetic/arith_dispatch.c:  xes->n = n;
libvips/arithmetic/arith_dispatch.c:  yes->vec = IM_ARRAY( NULL, n, int );
libvips/arithmetic/arith_dispatch.c:  yes->n = n;
libvips/arithmetic/arith_dispatch.c:  maxima->vec = IM_ARRAY( NULL, n, double );
libvips/arithmetic/arith_dispatch.c:  maxima->n = n;
libvips/arithmetic/arith_dispatch.c:  if( !xes->vec || !yes->vec || !maxima->vec ||
libvips/arithmetic/arith_dispatch.c:    im_maxpos_vec( argv[0], xes->vec, yes->vec, maxima->vec, n ) )
libvips/arithmetic/arith_dispatch.c:    return -1;
libvips/arithmetic/arith_dispatch.c:  xes->vec = IM_ARRAY( NULL, n, int );
libvips/arithmetic/arith_dispatch.c:  xes->n = n;
libvips/arithmetic/arith_dispatch.c:  yes->vec = IM_ARRAY( NULL, n, int );
libvips/arithmetic/arith_dispatch.c:  yes->n = n;
libvips/arithmetic/arith_dispatch.c:  minima->vec = IM_ARRAY( NULL, n, double );
libvips/arithmetic/arith_dispatch.c:  minima->n = n;
libvips/arithmetic/arith_dispatch.c:  if( !xes->vec || !yes->vec || !minima->vec ||
libvips/arithmetic/arith_dispatch.c:    im_minpos_vec( argv[0], xes->vec, yes->vec, minima->vec, n ) )
libvips/arithmetic/arith_dispatch.c:    return -1;
libvips/arithmetic/arith_dispatch.c:	if( !(mo->mask = 
libvips/arithmetic/arith_dispatch.c:			x, y, w, h, u, v, NULL, 0, mo->name )) ) {
libvips/arithmetic/arith_dispatch.c:		return( -1 );
libvips/arithmetic/arith_dispatch.c:		return( -1 );
libvips/arithmetic/arith_dispatch.c:		return( -1 );
libvips/arithmetic/arith_dispatch.c:	return( im_remainder_vec( argv[0], argv[1], dv->n, dv->vec ) );
libvips/arithmetic/arith_dispatch.c:	return( im_powtra_vec( argv[0], argv[1], rv->n, rv->vec ) );
libvips/arithmetic/arith_dispatch.c:	if( !(mo->mask = im_stats( argv[0] )) )
libvips/arithmetic/arith_dispatch.c:		return( -1 );
libvips/arithmetic/arith_dispatch.c:  IMAGE **ins= IM_ARRAY( out, ins_vec-> n + 1, IMAGE* );
libvips/arithmetic/arith_dispatch.c:    return -1;
libvips/arithmetic/arith_dispatch.c:  for( i= 0; i < ins_vec-> n; ++i )
libvips/arithmetic/arith_dispatch.c:    ins[ i ]= ins_vec-> vec[ i ];
libvips/arithmetic/arith_dispatch.c:  ins[ ins_vec-> n ]= NULL;
libvips/arithmetic/arith_dispatch.c:  if( xs_vec-> n != ins_vec-> n ){
libvips/arithmetic/arith_dispatch.c:    return -1;
libvips/arithmetic/arith_dispatch.c:  return im_linreg( ins, out, xs_vec-> vec );
libvips/arithmetic/im_maxpos.c: * 	23/11/92:  J.Cupitt - correct result for more than 1 band now.
libvips/arithmetic/im_maxpos.c: *	- im_incheck() call added
libvips/arithmetic/im_maxpos.c: *	- now returns double for value, like im_max()
libvips/arithmetic/im_maxpos.c: * 	- gtkdoc comment
libvips/arithmetic/im_maxpos.c: * 	- rewrite based on im_max() to get partial
libvips/arithmetic/im_maxpos.c: * 	- move im_max() in here as a convenience function
libvips/arithmetic/im_maxpos.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_maxpos.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_maxpos.c:/* Merge the sequence value back into the per-call state.
libvips/arithmetic/im_maxpos.c:	if( maxpos->max > global_maxpos->max ) 
libvips/arithmetic/im_maxpos.c:			xpos = r->left + x / reg->im->Bands; \
libvips/arithmetic/im_maxpos.c:			ypos = r->top + y; \
libvips/arithmetic/im_maxpos.c:			xpos = r->left + x / reg->im->Bands; \
libvips/arithmetic/im_maxpos.c:			ypos = r->top + y; \
libvips/arithmetic/im_maxpos.c:	const Rect *r = &reg->valid;
libvips/arithmetic/im_maxpos.c:	xpos = maxpos->xpos;
libvips/arithmetic/im_maxpos.c:	ypos = maxpos->ypos;
libvips/arithmetic/im_maxpos.c:	max = maxpos->max;
libvips/arithmetic/im_maxpos.c:	for( y = 0; y < r->height; y++ ) { 
libvips/arithmetic/im_maxpos.c:		PEL *in = (PEL *) IM_REGION_ADDR( reg, r->left, r->top + y ); 
libvips/arithmetic/im_maxpos.c:		switch( reg->im->BandFmt ) {
libvips/arithmetic/im_maxpos.c:	maxpos->xpos = xpos;
libvips/arithmetic/im_maxpos.c:	maxpos->ypos = ypos;
libvips/arithmetic/im_maxpos.c:	maxpos->max = max;
libvips/arithmetic/im_maxpos.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_maxpos.c:		return( -1 );
libvips/arithmetic/im_maxpos.c:		return( -1 );
libvips/arithmetic/im_maxpos.c:	if( im__value( in, &global_maxpos->max ) )
libvips/arithmetic/im_maxpos.c:		return( -1 );
libvips/arithmetic/im_maxpos.c:	global_maxpos->xpos = 0;
libvips/arithmetic/im_maxpos.c:	global_maxpos->ypos = 0;
libvips/arithmetic/im_maxpos.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) )
libvips/arithmetic/im_maxpos.c:		global_maxpos->max *= global_maxpos->max;
libvips/arithmetic/im_maxpos.c:		return( -1 );
libvips/arithmetic/im_maxpos.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) )
libvips/arithmetic/im_maxpos.c:		global_maxpos->max = sqrt( global_maxpos->max );
libvips/arithmetic/im_maxpos.c:		*xpos = global_maxpos->xpos;
libvips/arithmetic/im_maxpos.c:		*ypos = global_maxpos->ypos;
libvips/arithmetic/im_maxpos.c:		*out = global_maxpos->max;
libvips/arithmetic/im_maxpos.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_avg.c: *	- now does partial images
libvips/arithmetic/im_avg.c: *	- less likely to overflow
libvips/arithmetic/im_avg.c: *	- adapted for partial v2
libvips/arithmetic/im_avg.c: *	- ANSI C
libvips/arithmetic/im_avg.c: *	- modernised again
libvips/arithmetic/im_avg.c: * 	- oops! return( NULL ) in im_avg(), instead of return( -1 )
libvips/arithmetic/im_avg.c: *	- now returns double
libvips/arithmetic/im_avg.c: *	- use 64 bit arithmetic 
libvips/arithmetic/im_avg.c: * 	- add liboil support
libvips/arithmetic/im_avg.c: * 	- gtkdoc, minor reformatting
libvips/arithmetic/im_avg.c: * 	- rewrite for im__wrapiter()
libvips/arithmetic/im_avg.c: * 	- add complex case (needed for im_max())
libvips/arithmetic/im_avg.c: * 	- wrapscan stuff moved here
libvips/arithmetic/im_avg.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_avg.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_avg.c:	return( wrapscan->start( in, wrapscan->a, wrapscan->b ) );
libvips/arithmetic/im_avg.c:	return( wrapscan->stop( seq, wrapscan->a, wrapscan->b ) );
libvips/arithmetic/im_avg.c:	Rect *r = &reg->valid;
libvips/arithmetic/im_avg.c:	p = (PEL *) IM_REGION_ADDR( reg, r->left, r->top ); 
libvips/arithmetic/im_avg.c:	for( y = 0; y < r->height; y++ ) { 
libvips/arithmetic/im_avg.c:		if( wrapscan->scan( p, r->width, seq, 
libvips/arithmetic/im_avg.c:			wrapscan->a, wrapscan->b ) )
libvips/arithmetic/im_avg.c:			return( -1 );
libvips/arithmetic/im_avg.c:	const int sz = n * im->Bands;
libvips/arithmetic/im_avg.c:	switch( im->BandFmt ) {
libvips/arithmetic/im_avg.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_avg.c:		return( -1 );
libvips/arithmetic/im_avg.c:		return( -1 );
libvips/arithmetic/im_avg.c:	pels = (gint64) in->Xsize * in->Ysize;
libvips/arithmetic/im_avg.c:	vals = pels * in->Bands;
libvips/arithmetic/im_avg.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) )
libvips/arithmetic/im_avg.c:		return( -1 );
libvips/arithmetic/im_add.c: *	- now works for partial images
libvips/arithmetic/im_add.c: * 	- adapted for partial v2
libvips/arithmetic/im_add.c: *	- simplified: now just handles 10 cases (instead of 50), using
libvips/arithmetic/im_add.c: *	- now uses im_wrapmany() rather than im_generate()
libvips/arithmetic/im_add.c: *	- SWAP() removed, *p++ removed
libvips/arithmetic/im_add.c: *	- im__cast_and_call() now matches bands as well
libvips/arithmetic/im_add.c: *	- ... so 1 band + 4 band image -> 4 band image
libvips/arithmetic/im_add.c: * 	- add liboil support
libvips/arithmetic/im_add.c: * 	- revise upcasting system
libvips/arithmetic/im_add.c: * 	- im__cast_and_call() no longer sets bbits for you
libvips/arithmetic/im_add.c: * 	- add gtkdoc comments
libvips/arithmetic/im_add.c: * 	- remove separate complex case, just double size
libvips/arithmetic/im_add.c: * 	- im__cast_and_call() becomes im__arith_binary()
libvips/arithmetic/im_add.c: * 	- more of operation scaffold moved inside
libvips/arithmetic/im_add.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_add.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_add.c:	const int sz = width * im->Bands * 
libvips/arithmetic/im_add.c:		(vips_bandfmt_iscomplex( im->BandFmt ) ? 2 : 1);
libvips/arithmetic/im_add.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_add.c:		/* Must be int+int -> int.
libvips/arithmetic/im_add.c:	fmt = in[0]->BandFmt;
libvips/arithmetic/im_add.c:		fmt = im__format_common( fmt, in[i]->BandFmt );
libvips/arithmetic/im_add.c:			return( -1 );
libvips/arithmetic/im_add.c:/* Make an n-band image. Input 1 or n bands.
libvips/arithmetic/im_add.c:	if( in->Bands == n ) 
libvips/arithmetic/im_add.c:	if( in->Bands != 1 ) {
libvips/arithmetic/im_add.c:		return( -1 );
libvips/arithmetic/im_add.c:		return( -1 );
libvips/arithmetic/im_add.c:		return( -1 );
libvips/arithmetic/im_add.c:	if( im__bandup( in1, out1, IM_MAX( in1->Bands, in2->Bands ) ) ||
libvips/arithmetic/im_add.c:		im__bandup( in2, out2, IM_MAX( in1->Bands, in2->Bands ) ) )
libvips/arithmetic/im_add.c:		return( -1 );
libvips/arithmetic/im_add.c: * - check in and out
libvips/arithmetic/im_add.c: * - cast in1 and in2 up to a common format
libvips/arithmetic/im_add.c: * - cast the common format to the output format with the supplied table
libvips/arithmetic/im_add.c: * - equalise bands 
libvips/arithmetic/im_add.c: * - run the supplied buffer operation passing one of the up-banded,
libvips/arithmetic/im_add.c: *   up-casted and up-sized inputs as the first param
libvips/arithmetic/im_add.c:		return( -1 );
libvips/arithmetic/im_add.c:		return( -1 );
libvips/arithmetic/im_add.c:		return( -1 );
libvips/arithmetic/im_add.c:	/* What number of bands will we write? Same as up-banded input.
libvips/arithmetic/im_add.c:	out->Bands = t[2]->Bands;
libvips/arithmetic/im_add.c:	out->BandFmt = format_table[t[2]->BandFmt];
libvips/arithmetic/im_add.c:		return( -1 );
libvips/arithmetic/im_add.c: * must have one band. In this case, an n-band image is formed from the 
libvips/arithmetic/im_add.c: * one-band image by joining n copies of the one-band image together, and then
libvips/arithmetic/im_add.c: * the two n-band images are operated upon.
libvips/arithmetic/im_add.c: * <link linkend="VIPS-arithmetic">arithmetic</link>), then the 
libvips/arithmetic/im_add.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/arithmetic/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/arithmetic/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/arithmetic/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/arithmetic/Makefile.in:am__mv = mv -f
libvips/arithmetic/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/arithmetic/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/arithmetic/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/arithmetic/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/arithmetic/Makefile.in:	$(LDFLAGS) -o $@
libvips/arithmetic/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/arithmetic/Makefile.in:all: all-am
libvips/arithmetic/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/arithmetic/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/arithmetic/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/arithmetic/Makefile'; \
libvips/arithmetic/Makefile.in:	  $(AUTOMAKE) --gnu libvips/arithmetic/Makefile
libvips/arithmetic/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/arithmetic/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/arithmetic/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/arithmetic/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/arithmetic/Makefile.in:clean-noinstLTLIBRARIES:
libvips/arithmetic/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/arithmetic/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/arithmetic/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/arithmetic/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/arithmetic/Makefile.in:mostlyclean-compile:
libvips/arithmetic/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/arithmetic/Makefile.in:distclean-compile:
libvips/arithmetic/Makefile.in:	-rm -f *.tab.c
libvips/arithmetic/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/arithmetic/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/arithmetic/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/arithmetic/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/arithmetic/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/arithmetic/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/arithmetic/Makefile.in:mostlyclean-libtool:
libvips/arithmetic/Makefile.in:	-rm -f *.lo
libvips/arithmetic/Makefile.in:clean-libtool:
libvips/arithmetic/Makefile.in:	-rm -rf .libs _libs
libvips/arithmetic/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/arithmetic/Makefile.in:	mkid -fID $$unique
libvips/arithmetic/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/arithmetic/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/arithmetic/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/arithmetic/Makefile.in:	  if test $$# -gt 0; then \
libvips/arithmetic/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/arithmetic/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/arithmetic/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/arithmetic/Makefile.in:distclean-tags:
libvips/arithmetic/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/arithmetic/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/arithmetic/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/arithmetic/Makefile.in:			   sort -u` ;; \
libvips/arithmetic/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/arithmetic/Makefile.in:	  if test -d $$d/$$file; then \
libvips/arithmetic/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/arithmetic/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/arithmetic/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/arithmetic/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/arithmetic/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/arithmetic/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/arithmetic/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/arithmetic/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/arithmetic/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/arithmetic/Makefile.in:check-am: all-am
libvips/arithmetic/Makefile.in:check: check-am
libvips/arithmetic/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/arithmetic/Makefile.in:install: install-am
libvips/arithmetic/Makefile.in:install-exec: install-exec-am
libvips/arithmetic/Makefile.in:install-data: install-data-am
libvips/arithmetic/Makefile.in:uninstall: uninstall-am
libvips/arithmetic/Makefile.in:install-am: all-am
libvips/arithmetic/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/arithmetic/Makefile.in:installcheck: installcheck-am
libvips/arithmetic/Makefile.in:install-strip:
libvips/arithmetic/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/arithmetic/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/arithmetic/Makefile.in:mostlyclean-generic:
libvips/arithmetic/Makefile.in:clean-generic:
libvips/arithmetic/Makefile.in:distclean-generic:
libvips/arithmetic/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/arithmetic/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/arithmetic/Makefile.in:maintainer-clean-generic:
libvips/arithmetic/Makefile.in:clean: clean-am
libvips/arithmetic/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/arithmetic/Makefile.in:	mostlyclean-am
libvips/arithmetic/Makefile.in:distclean: distclean-am
libvips/arithmetic/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/arithmetic/Makefile.in:	-rm -f Makefile
libvips/arithmetic/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/arithmetic/Makefile.in:	distclean-tags
libvips/arithmetic/Makefile.in:dvi: dvi-am
libvips/arithmetic/Makefile.in:dvi-am:
libvips/arithmetic/Makefile.in:html: html-am
libvips/arithmetic/Makefile.in:html-am:
libvips/arithmetic/Makefile.in:info: info-am
libvips/arithmetic/Makefile.in:info-am:
libvips/arithmetic/Makefile.in:install-data-am:
libvips/arithmetic/Makefile.in:install-dvi: install-dvi-am
libvips/arithmetic/Makefile.in:install-dvi-am:
libvips/arithmetic/Makefile.in:install-exec-am:
libvips/arithmetic/Makefile.in:install-html: install-html-am
libvips/arithmetic/Makefile.in:install-html-am:
libvips/arithmetic/Makefile.in:install-info: install-info-am
libvips/arithmetic/Makefile.in:install-info-am:
libvips/arithmetic/Makefile.in:install-man:
libvips/arithmetic/Makefile.in:install-pdf: install-pdf-am
libvips/arithmetic/Makefile.in:install-pdf-am:
libvips/arithmetic/Makefile.in:install-ps: install-ps-am
libvips/arithmetic/Makefile.in:install-ps-am:
libvips/arithmetic/Makefile.in:installcheck-am:
libvips/arithmetic/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/arithmetic/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/arithmetic/Makefile.in:	-rm -f Makefile
libvips/arithmetic/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/arithmetic/Makefile.in:mostlyclean: mostlyclean-am
libvips/arithmetic/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/arithmetic/Makefile.in:	mostlyclean-libtool
libvips/arithmetic/Makefile.in:pdf: pdf-am
libvips/arithmetic/Makefile.in:pdf-am:
libvips/arithmetic/Makefile.in:ps: ps-am
libvips/arithmetic/Makefile.in:ps-am:
libvips/arithmetic/Makefile.in:uninstall-am:
libvips/arithmetic/Makefile.in:.MAKE: install-am install-strip
libvips/arithmetic/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/arithmetic/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/arithmetic/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/arithmetic/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/arithmetic/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/arithmetic/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/arithmetic/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/arithmetic/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/arithmetic/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/arithmetic/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/arithmetic/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/arithmetic/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/arithmetic/im_invert.c: *      - memory leaks fixed
libvips/arithmetic/im_invert.c: *      - adapted for partial v2
libvips/arithmetic/im_invert.c: *      - ANSIfied
libvips/arithmetic/im_invert.c: *	- tidied up again
libvips/arithmetic/im_invert.c: * 	- gtk-doc comment
libvips/arithmetic/im_invert.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_invert.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_invert.c:	int le = or->valid.left;
libvips/arithmetic/im_invert.c:	int to = or->valid.top;
libvips/arithmetic/im_invert.c:	int bo = IM_RECT_BOTTOM( &or->valid );
libvips/arithmetic/im_invert.c:	if( im_prepare( ir, &or->valid ) )
libvips/arithmetic/im_invert.c:		return( -1 );
libvips/arithmetic/im_invert.c:		 * IM_REGION_N_ELEMENTS() rather than ir->valid.width, we work 
libvips/arithmetic/im_invert.c:			q[x] = 255 - p[x];
libvips/arithmetic/im_invert.c: * this operation calculates (255 - @in).
libvips/arithmetic/im_invert.c: * This is not a generally useful program -- it is included as an example of 
libvips/arithmetic/im_invert.c: * a very simple new-style IO function. 
libvips/arithmetic/im_invert.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_invert.c:		return( -1 );
libvips/arithmetic/im_invert.c:		return( -1 );
libvips/arithmetic/im_invert.c:	/* Set demand hints. Like most one-to-one operations, we work best
libvips/arithmetic/im_invert.c:		 return( -1 );
libvips/arithmetic/im_invert.c:	 * region creation and destruction for one-image-in
libvips/arithmetic/im_invert.c:		return( -1 );
libvips/arithmetic/im_deviate.c: *	- now does partial images
libvips/arithmetic/im_deviate.c: *	- less likely to overflow
libvips/arithmetic/im_deviate.c: *	- adapted from im_avg
libvips/arithmetic/im_deviate.c: *	- adapted for partial v2
libvips/arithmetic/im_deviate.c: *	- ANSIfied
libvips/arithmetic/im_deviate.c: *	- modernised again
libvips/arithmetic/im_deviate.c: * 	- oops! return( NULL ) in im_avg(), instead of return( -1 )
libvips/arithmetic/im_deviate.c: *	- now returns double, not float
libvips/arithmetic/im_deviate.c: *	- use 64 bit arithmetic 
libvips/arithmetic/im_deviate.c: * 	- add liboil support
libvips/arithmetic/im_deviate.c: * 	- gtk-doc comment
libvips/arithmetic/im_deviate.c: * 	- minor reformatting
libvips/arithmetic/im_deviate.c: * 	- use im__wrapscan()
libvips/arithmetic/im_deviate.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_deviate.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_deviate.c:	const int sz = n * im->Bands;
libvips/arithmetic/im_deviate.c:	switch( im->BandFmt ) {
libvips/arithmetic/im_deviate.c: * Non-complex images only.
libvips/arithmetic/im_deviate.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_deviate.c:		return( -1 );
libvips/arithmetic/im_deviate.c:		return( -1 );
libvips/arithmetic/im_deviate.c:		NOTE: NR suggests a two-pass algorithm to minimise roundoff. 
libvips/arithmetic/im_deviate.c:		But that's too expensive for us :-( so do it the old one-pass 
libvips/arithmetic/im_deviate.c:	vals = (gint64) in->Xsize * (gint64) in->Ysize * (gint64) in->Bands;
libvips/arithmetic/im_deviate.c:	*out = sqrt( fabs( s2 - (s * s / vals) ) / (vals - 1) );
libvips/arithmetic/im_abs.c: *	- adapted from im_lintra to work with partial images
libvips/arithmetic/im_abs.c: *	- complex and signed support added
libvips/arithmetic/im_abs.c: *	- adapted for partial v2
libvips/arithmetic/im_abs.c: *	- ANSI conversion
libvips/arithmetic/im_abs.c: *	- spe29873r6k3h()**!@lling errors removed
libvips/arithmetic/im_abs.c: *	- adapted for im_wrap...
libvips/arithmetic/im_abs.c: *	- tiny speed up
libvips/arithmetic/im_abs.c: * 	- add liboil support
libvips/arithmetic/im_abs.c: * 	- gtkdoc
libvips/arithmetic/im_abs.c: * 	- tiny polish
libvips/arithmetic/im_abs.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_abs.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_abs.c:			q[x] = 0 - v; \
libvips/arithmetic/im_abs.c:	int sz = width * im->Bands;
libvips/arithmetic/im_abs.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_abs.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_abs.c:		return( -1 );
libvips/arithmetic/im_abs.c:	if( vips_bandfmt_isuint( in->BandFmt ) )
libvips/arithmetic/im_abs.c:		return( -1 );
libvips/arithmetic/im_abs.c:	switch( in->BandFmt ) {
libvips/arithmetic/im_abs.c:			out->BandFmt = IM_BANDFMT_FLOAT;
libvips/arithmetic/im_abs.c:			out->BandFmt = IM_BANDFMT_DOUBLE;
libvips/arithmetic/im_abs.c:                        return( -1 );
libvips/arithmetic/im_abs.c:		return( -1 );
libvips/arithmetic/im_subtract.c: * @(#) Returns 0 on success and -1 on error
libvips/arithmetic/im_subtract.c: *	- now works for partial images
libvips/arithmetic/im_subtract.c: * 	- adapted for partial v2
libvips/arithmetic/im_subtract.c: *	- simplified: now just handles 10 cases (instead of 50), using
libvips/arithmetic/im_subtract.c: *	- now uses im_wrapmany() rather than im_generate()
libvips/arithmetic/im_subtract.c: * 	- new im_add() adapted to make this
libvips/arithmetic/im_subtract.c: *	- what was this SWAP() stuff? failed for small - big!
libvips/arithmetic/im_subtract.c: *	- cast up more quickly to help accuracy
libvips/arithmetic/im_subtract.c: *	- updated for 1 band $op n band image -> n band image case
libvips/arithmetic/im_subtract.c: * 	- add liboil support
libvips/arithmetic/im_subtract.c: * 	- revise upcasting system
libvips/arithmetic/im_subtract.c: * 	- add gtkdoc comments
libvips/arithmetic/im_subtract.c: * 	- remove separate complex case, just double size
libvips/arithmetic/im_subtract.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_subtract.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_subtract.c:		q[x] = p1[x] - p2[x]; \
libvips/arithmetic/im_subtract.c:	const int sz = width * im->Bands * 
libvips/arithmetic/im_subtract.c:		(vips_bandfmt_iscomplex( im->BandFmt ) ? 2 : 1);
libvips/arithmetic/im_subtract.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_subtract.c: * This operation calculates @in1 - @in2 and writes the result to @out. 
libvips/arithmetic/im_subtract.c: * must have one band. In this case, an n-band image is formed from the 
libvips/arithmetic/im_subtract.c: * one-band image by joining n copies of the one-band image together, and then
libvips/arithmetic/im_subtract.c: * the two n-band images are operated upon.
libvips/arithmetic/im_subtract.c: * <link linkend="VIPS-arithmetic">arithmetic</link>), then the 
libvips/arithmetic/im_subtract.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_divide.c: *	- now works for partial images
libvips/arithmetic/im_divide.c: *	- adapted for partial v2
libvips/arithmetic/im_divide.c: *	- ANSIfied
libvips/arithmetic/im_divide.c: *	- coredump-inducing bug in complex*complex fixed
libvips/arithmetic/im_divide.c: *	- char*short bug fixed
libvips/arithmetic/im_divide.c: *	- new im_multiply adapted to make new im_divide
libvips/arithmetic/im_divide.c: *	- updated for 1 band $op n band image -> n band image case
libvips/arithmetic/im_divide.c: * 	- add liboil support
libvips/arithmetic/im_divide.c: * 	- revise upcasting system
libvips/arithmetic/im_divide.c: * 	- add gtkdoc comments
libvips/arithmetic/im_divide.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_divide.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_divide.c:		double arg = atan2( X[1], X[0] ) - atan2( Y[1], Y[0] ); \
libvips/arithmetic/im_divide.c:			Z[1] = (X[1] - X[0] * a) / b;  \
libvips/arithmetic/im_divide.c:			Z[1] = (X[1] * a - X[0]) / b; \
libvips/arithmetic/im_divide.c:	int sz = width * im->Bands;
libvips/arithmetic/im_divide.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_divide.c: * must have one band. In this case, an n-band image is formed from the 
libvips/arithmetic/im_divide.c: * one-band image by joining n copies of the one-band image together, and then
libvips/arithmetic/im_divide.c: * the two n-band images are operated upon.
libvips/arithmetic/im_divide.c: * <link linkend="VIPS-arithmetic">arithmetic</link>), then the 
libvips/arithmetic/im_divide.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_bandmean.c: * 	- hacked about a bit
libvips/arithmetic/im_bandmean.c: * 	- gtkdoc
libvips/arithmetic/im_bandmean.c: * 	- get rid of the complex case, just double the width
libvips/arithmetic/im_bandmean.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_bandmean.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_bandmean.c:		q1[i] = sum > 0 ? (sum + b / 2) / b : (sum - b / 2) / b; \
libvips/arithmetic/im_bandmean.c:	const int sz = n * (vips_bandfmt_iscomplex( in->BandFmt ) ? 2 : 1);
libvips/arithmetic/im_bandmean.c:	const int b = in->Bands;
libvips/arithmetic/im_bandmean.c:        switch( in->BandFmt ) {
libvips/arithmetic/im_bandmean.c: * im_bandmean() writes a one-band image where each pixel is the average of 
libvips/arithmetic/im_bandmean.c: * the same as the input band format. Integer types use round-to-nearest
libvips/arithmetic/im_bandmean.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_bandmean.c:	if( in->Bands == 1 ) 
libvips/arithmetic/im_bandmean.c:		return( -1 );
libvips/arithmetic/im_bandmean.c:		return( -1 );
libvips/arithmetic/im_bandmean.c:	out->Bands = 1;
libvips/arithmetic/im_bandmean.c:	out->Type = IM_TYPE_B_W;
libvips/arithmetic/im_bandmean.c:		return( -1 );
libvips/arithmetic/im_measure.c: *	- now uses doubles for addressing
libvips/arithmetic/im_measure.c: *	- could miss by up to h pixels previously!
libvips/arithmetic/im_measure.c: *	- ANSIfied
libvips/arithmetic/im_measure.c: *	- now issues warning if any deviations are greater than 20% of the
libvips/arithmetic/im_measure.c: *	- more careful about warning for averages <0, or averages near zero
libvips/arithmetic/im_measure.c: *	- can get these cases with im_measure() of IM_TYPE_LAB images
libvips/arithmetic/im_measure.c: *	- number bands from zero in error messages
libvips/arithmetic/im_measure.c: *	- works on labq
libvips/arithmetic/im_measure.c: * 	- add gtkdoc comments
libvips/arithmetic/im_measure.c: * 	- remove deprecated im_extract()
libvips/arithmetic/im_measure.c: * 	- changes for im_extract() broke averaging
libvips/arithmetic/im_measure.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_measure.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_measure.c:		m = (sel[patch] - 1) % u;  
libvips/arithmetic/im_measure.c:		n = (sel[patch] - 1) / u;
libvips/arithmetic/im_measure.c:		for( i = 0; i < im->Bands; i++, j++ ) {
libvips/arithmetic/im_measure.c:				return( -1 );
libvips/arithmetic/im_measure.c:				return( -1 );
libvips/arithmetic/im_measure.c: * @sel: array of patch numbers to measure (numbered from 1 in row-major order)
libvips/arithmetic/im_measure.c:	if( im->Coding == IM_CODING_LABQ ) {
libvips/arithmetic/im_measure.c:		if( !(t1 = im_open( "measure-temp", "p" )) )
libvips/arithmetic/im_measure.c:	if( !(mask = im_create_dmask( name, im->Bands, nsel )) )
libvips/arithmetic/im_measure.c:	if( measure_patches( im, mask->coeff, left, top, width, height, 
libvips/arithmetic/round.c:/* round.c --- various rounding operations
libvips/arithmetic/round.c: *	- adapted from im_abs()
libvips/arithmetic/round.c: * 	- gtkdoc
libvips/arithmetic/round.c: * 	- tiny cleanups
libvips/arithmetic/round.c: * 	- im_ceil.c adapted to make round.c
libvips/arithmetic/round.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/round.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/round.c:	const int ne = width * im->Bands * \
libvips/arithmetic/round.c:		(vips_bandfmt_iscomplex( im->BandFmt ) ? 2 : 1); \
libvips/arithmetic/round.c:        switch( im->BandFmt ) { \
libvips/arithmetic/round.c:		return( -1 );
libvips/arithmetic/round.c:	if( vips_bandfmt_isint( in->BandFmt ) )
libvips/arithmetic/round.c:		return( -1 );
libvips/arithmetic/round.c:		return( -1 );
libvips/arithmetic/round.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/round.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/round.c: * IM_RINT() is a pseudo-round-to-nearest. It is much faster than
libvips/arithmetic/round.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_cross_phase.c: * Written on: 2008-01-09
libvips/arithmetic/im_cross_phase.c: * 2008-02-04 tcv:
libvips/arithmetic/im_cross_phase.c: *   - exp( i.th ) == cos(th)+i.sin(th) NOT sin(th)+i.cos(th)
libvips/arithmetic/im_cross_phase.c: *   - add quadratic version (ifdef'd out ATM - still using trigonometric one)
libvips/arithmetic/im_cross_phase.c: * 	- gtk-doc comment
libvips/arithmetic/im_cross_phase.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_cross_phase.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_cross_phase.c:  TYPE *Z_stop= Z + 2 * n * ((IMAGE*)im)-> Bands;          \
libvips/arithmetic/im_cross_phase.c:    double arg= atan2( X[1], X[0] ) - atan2( Y[1], Y[0] ); \
libvips/arithmetic/im_cross_phase.c:  TYPE *Z_stop= Z + 2 * n * ((IMAGE*)im)-> Bands; \
libvips/arithmetic/im_cross_phase.c:      double im= ( X[1] - X[0] * a ) / b;         \
libvips/arithmetic/im_cross_phase.c:      double im= ( X[1] * a - X[0] ) / b;         \
libvips/arithmetic/im_cross_phase.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_cross_phase.c:    return -1;
libvips/arithmetic/im_cross_phase.c:    return -1;
libvips/arithmetic/im_cross_phase.c:    IM_BANDFMT_COMPLEX == a-> BandFmt ? complex_phase_float : complex_phase_double, a, NULL );
libvips/arithmetic/im_linreg.c: * Written on: 2006-12-26
libvips/arithmetic/im_linreg.c: *	- make x_anal() static, fix some signed/unsigned warnings
libvips/arithmetic/im_linreg.c: * 	- gtkdoc comment
libvips/arithmetic/im_linreg.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_linreg.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_linreg.c: * @ins: NULL-terminated array of input images
libvips/arithmetic/im_linreg.c: * single band images. The output is a seven-band douuble image
libvips/arithmetic/im_linreg.c:    return( -1 );
libvips/arithmetic/im_linreg.c:      return( -1 );
libvips/arithmetic/im_linreg.c:      return( -1 );
libvips/arithmetic/im_linreg.c:    if( 1 != ins[ n ]-> Bands ){
libvips/arithmetic/im_linreg.c:      return( -1 );
libvips/arithmetic/im_linreg.c:    if( ins[ n ]-> Coding ){
libvips/arithmetic/im_linreg.c:      return( -1 );
libvips/arithmetic/im_linreg.c:      if( ins[ n ]-> BandFmt != ins[ 0 ]-> BandFmt ){
libvips/arithmetic/im_linreg.c:        return( -1 );
libvips/arithmetic/im_linreg.c:      if( vips_bandfmt_iscomplex( ins[ 0 ]->BandFmt ) ){
libvips/arithmetic/im_linreg.c:        im_error( FUNCTION_NAME, "image has non-scalar band format" );
libvips/arithmetic/im_linreg.c:        return( -1 );
libvips/arithmetic/im_linreg.c:    if( n && ( ins[ n ]-> Xsize != ins[ 0 ]-> Xsize
libvips/arithmetic/im_linreg.c:        || ins[ n ]-> Ysize != ins[ 0 ]-> Ysize ) ){
libvips/arithmetic/im_linreg.c:      return( -1 );
libvips/arithmetic/im_linreg.c:    return( -1 );
libvips/arithmetic/im_linreg.c:    return( -1 );
libvips/arithmetic/im_linreg.c:  out-> Bands= 7;
libvips/arithmetic/im_linreg.c:  out-> BandFmt= IM_BANDFMT_DOUBLE;
libvips/arithmetic/im_linreg.c:  out-> Type= 0;
libvips/arithmetic/im_linreg.c:    return( -1 );
libvips/arithmetic/im_linreg.c:    return( -1 );
libvips/arithmetic/im_linreg.c:  switch( ins[ 0 ]-> BandFmt ){
libvips/arithmetic/im_linreg.c:    default:  /* keep -Wall happy */
libvips/arithmetic/im_linreg.c:      return( -1 );
libvips/arithmetic/im_linreg.c:  x_vals-> xs= IM_ARRAY( im, 2 * n, double );
libvips/arithmetic/im_linreg.c:  if( ! x_vals-> xs )
libvips/arithmetic/im_linreg.c:  x_vals-> difs= x_vals-> xs + n;
libvips/arithmetic/im_linreg.c:  x_vals-> n= n;
libvips/arithmetic/im_linreg.c:  x_vals-> mean= 0.0;
libvips/arithmetic/im_linreg.c:    x_vals-> xs[ i ]= xs[ i ];
libvips/arithmetic/im_linreg.c:    x_vals-> mean+= xs[ i ];
libvips/arithmetic/im_linreg.c:  x_vals-> mean/= n;
libvips/arithmetic/im_linreg.c:  x_vals-> nsig2= 0.0;
libvips/arithmetic/im_linreg.c:    x_vals-> difs[ i ]= xs[ i ] - x_vals-> mean;
libvips/arithmetic/im_linreg.c:    x_vals-> nsig2+= x_vals-> difs[ i ] * x_vals-> difs[ i ];
libvips/arithmetic/im_linreg.c:  x_vals-> err_term= ( 1.0 / (double) n ) + ( ( x_vals-> mean * x_vals-> mean ) / x_vals-> nsig2 );
libvips/arithmetic/im_linreg.c:  seq-> regs= im_start_many( NULL, ins, NULL );                                                     \
libvips/arithmetic/im_linreg.c:  seq-> ptrs= IM_ARRAY( out, x_vals-> n, TYPE* );                                                   \
libvips/arithmetic/im_linreg.c:  seq-> skips= IM_ARRAY( out, x_vals-> n, size_t );                                                 \
libvips/arithmetic/im_linreg.c:  if( ! seq-> ptrs || ! seq-> regs || ! seq-> skips ){                                              \
libvips/arithmetic/im_linreg.c:#define y(a)    ( (double) (* seq-> ptrs[(a)] ) )
libvips/arithmetic/im_linreg.c:#define x(a)    ( (double) ( x_vals-> xs[(a)] ) )
libvips/arithmetic/im_linreg.c:#define xd(a)   ( (double) ( x_vals-> difs[(a)] ) )
libvips/arithmetic/im_linreg.c:#define Sxd2    ( x_vals-> nsig2 )
libvips/arithmetic/im_linreg.c:#define mean_x  ( x_vals-> mean )
libvips/arithmetic/im_linreg.c:  unsigned int n= x_vals-> n;                                                                       \
libvips/arithmetic/im_linreg.c:  double *out_end= out + out_skip * to_make-> valid. height;                                        \
libvips/arithmetic/im_linreg.c:  out_skip-= out_n;                                                                                 \
libvips/arithmetic/im_linreg.c:  if( im_prepare_many( seq-> regs, & to_make-> valid ) )                                            \
libvips/arithmetic/im_linreg.c:    return -1;                                                                                      \
libvips/arithmetic/im_linreg.c:    seq-> ptrs[ i ]= (TYPE*) IM_REGION_ADDR( seq-> regs[ i ], to_make-> valid. left, to_make-> valid. top ); \
libvips/arithmetic/im_linreg.c:    seq-> skips[ i ]= ( IM_REGION_LSKIP( seq-> regs[ i ] ) / sizeof( TYPE ) ) - IM_REGION_N_ELEMENTS( seq-> regs[ i ] ); \
libvips/arithmetic/im_linreg.c:  for( ; out < out_end; out+= out_skip, skip_all_ ## TYPE( seq-> ptrs, seq-> skips, n ) )           \
libvips/arithmetic/im_linreg.c:    for( out_stop= out + out_n; out < out_stop; out+= 7, incr_all_ ## TYPE( seq-> ptrs, n ) ){      \
libvips/arithmetic/im_linreg.c:      y_x0= mean_y - dy_dx * mean_x;                                                                \
libvips/arithmetic/im_linreg.c:        double yd= y(i) - mean_y;                                                                   \
libvips/arithmetic/im_linreg.c:        double e= y(i) - dy_dx * x(i) - y_x0;                                                       \
libvips/arithmetic/im_linreg.c:      Se2/= ( N - 2.0 );                                                                            \
libvips/arithmetic/im_linreg.c:      d_y_x0= sqrt( Se2 * x_vals-> err_term );                                                      \
libvips/arithmetic/im_linreg.c:  if( seq-> regs )                                                                                  \
libvips/arithmetic/im_linreg.c:    im_stop_many( seq-> regs, NULL, NULL );                                                         \
libvips/arithmetic/im_point_bilinear.c: * Written on: 2006-09-26
libvips/arithmetic/im_point_bilinear.c: * 	- rewrite in terms of im_affinei() and im_avg()
libvips/arithmetic/im_point_bilinear.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_point_bilinear.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_point_bilinear.c: * Non-integral values are calculated using the supplied @interpolate.
libvips/arithmetic/im_point_bilinear.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_point_bilinear.c:	if( band >= im->Bands || 
libvips/arithmetic/im_point_bilinear.c:		x > im->Xsize || y > im->Ysize ) {
libvips/arithmetic/im_point_bilinear.c:		return( -1 );
libvips/arithmetic/im_point_bilinear.c:			x - floor( x ), y - floor( y ),
libvips/arithmetic/im_point_bilinear.c:		return( -1 );
libvips/arithmetic/im_point_bilinear.c: * Use bilinear interpolation if @x or @y are non-integral. 
libvips/arithmetic/im_point_bilinear.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_lintra.c:/* im_lintra.c -- linear transform 
libvips/arithmetic/im_lintra.c: *	- adapted to work with partial images
libvips/arithmetic/im_lintra.c: *	- adapted for partial v2
libvips/arithmetic/im_lintra.c: *	- new IM_NEW()
libvips/arithmetic/im_lintra.c: *	- more typedefs 
libvips/arithmetic/im_lintra.c: *	- adapted for im_wrap...
libvips/arithmetic/im_lintra.c: *	- operations on complex images now just transform the real channel
libvips/arithmetic/im_lintra.c: *	- complex was broken
libvips/arithmetic/im_lintra.c: *	- return(0) missing from generate, arrgh!
libvips/arithmetic/im_lintra.c: *	- im_lintra_vec added
libvips/arithmetic/im_lintra.c: *	- fall back to im_copy() for a == 1, b == 0
libvips/arithmetic/im_lintra.c: *	- auug, failing to multiply imag for complex! (thanks matt)
libvips/arithmetic/im_lintra.c: *	- removed im_copy() fallback ... meant that output format could change
libvips/arithmetic/im_lintra.c: *	  with value :-( very confusing
libvips/arithmetic/im_lintra.c: *	- added 1 band image * n band vector case
libvips/arithmetic/im_lintra.c: * 	- add liboil support
libvips/arithmetic/im_lintra.c: * 	- gtkdoc comment, minor reformat
libvips/arithmetic/im_lintra.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/im_lintra.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/im_lintra.c:/* Define what we do for each band element type. Non-complex input, any
libvips/arithmetic/im_lintra.c:			&b, IM_MIN( CHUNKS, n - i ) );
libvips/arithmetic/im_lintra.c:			&c, IM_MIN( CHUNKS, n - i ) );
libvips/arithmetic/im_lintra.c:	double a = inf->a[0];
libvips/arithmetic/im_lintra.c:	double b = inf->b[0];
libvips/arithmetic/im_lintra.c:	int sz = width * im->Bands;
libvips/arithmetic/im_lintra.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_lintra.c:/* Define what we do for each band element type. Non-complex input, any
libvips/arithmetic/im_lintra.c:	double *a = inf->a;
libvips/arithmetic/im_lintra.c:	double *b = inf->b;
libvips/arithmetic/im_lintra.c:	int nb = im->Bands;
libvips/arithmetic/im_lintra.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_lintra.c:	double *a = inf->a;
libvips/arithmetic/im_lintra.c:	double *b = inf->b;
libvips/arithmetic/im_lintra.c:	int nb = inf->n;
libvips/arithmetic/im_lintra.c:        switch( im->BandFmt ) {
libvips/arithmetic/im_lintra.c: * Pass an image through a linear transform - ie. @out = @in * @a + @b. Output
libvips/arithmetic/im_lintra.c: * element and the image only has a single band, the result is a many-band
libvips/arithmetic/im_lintra.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/im_lintra.c:		return( -1 );
libvips/arithmetic/im_lintra.c:		return( -1 );
libvips/arithmetic/im_lintra.c:	if( vips_bandfmt_isint( in->BandFmt ) ) 
libvips/arithmetic/im_lintra.c:		out->BandFmt = IM_BANDFMT_FLOAT;
libvips/arithmetic/im_lintra.c:	if( in->Bands == 1 )
libvips/arithmetic/im_lintra.c:		out->Bands = n;
libvips/arithmetic/im_lintra.c:		!(inf->a = IM_ARRAY( out, n, double )) ||
libvips/arithmetic/im_lintra.c:		!(inf->b = IM_ARRAY( out, n, double )) )
libvips/arithmetic/im_lintra.c:		return( -1 );
libvips/arithmetic/im_lintra.c:	inf->n = n;
libvips/arithmetic/im_lintra.c:		inf->a[i] = a[i];
libvips/arithmetic/im_lintra.c:		inf->b[i] = b[i];
libvips/arithmetic/im_lintra.c:			return( -1 );
libvips/arithmetic/im_lintra.c:	else if( in->Bands == 1 ) {
libvips/arithmetic/im_lintra.c:			return( -1 );
libvips/arithmetic/im_lintra.c:			return( -1 );
libvips/arithmetic/im_lintra.c: * Pass an image through a linear transform - ie. @out = @in * @a + @b. Output
libvips/arithmetic/im_lintra.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/power.c:/* power.c --- various power functions
libvips/arithmetic/power.c: *	- now reports total number of x/0, rather than each one.
libvips/arithmetic/power.c: *	- rewritten for PIO with im_wrapone()
libvips/arithmetic/power.c: *	- incorrect complex code removed
libvips/arithmetic/power.c: *	- /0 reporting removed for ease of programming
libvips/arithmetic/power.c: *	- return( 0 ) missing, oops!
libvips/arithmetic/power.c: *	- _vec form added
libvips/arithmetic/power.c: * 	- gtkdoc
libvips/arithmetic/power.c: * 	- tiny cleanups
libvips/arithmetic/power.c: * 	- im_powtra() adapated to make power.c
libvips/arithmetic/power.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/arithmetic/power.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/arithmetic/power.c:	const int ne = n * im->Bands * \
libvips/arithmetic/power.c:		(vips_bandfmt_iscomplex( im->BandFmt ) ? 2 : 1); \
libvips/arithmetic/power.c:        switch( im->BandFmt ) { \
libvips/arithmetic/power.c:	const int bands = im->Bands; \
libvips/arithmetic/power.c:        switch( im->BandFmt ) { \
libvips/arithmetic/power.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/power.c:		return( -1 );
libvips/arithmetic/power.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/power.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/power.c:		return( -1 );
libvips/arithmetic/power.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/power.c: * Returns: 0 on success, -1 on error
libvips/arithmetic/power.c: * Returns: 0 on success, -1 on error
libvips/colour/im_XYZ2Yxy.c: *	- from lab2xyz
libvips/colour/im_XYZ2Yxy.c: * 	- gtkdoc
libvips/colour/im_XYZ2Yxy.c: * 	- cleanups
libvips/colour/im_XYZ2Yxy.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_XYZ2Yxy.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_XYZ2Yxy.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_disp2XYZ.c: * @(#) Returns: -1 on error, else 0
libvips/colour/im_disp2XYZ.c: *	- memory leak fixed
libvips/colour/im_disp2XYZ.c: *	- error message added
libvips/colour/im_disp2XYZ.c: *	- partialed
libvips/colour/im_disp2XYZ.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_disp2XYZ.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_disp2XYZ.c:	if( in->Bands != 3 || in->BandFmt != IM_BANDFMT_UCHAR || 
libvips/colour/im_disp2XYZ.c:		in->Coding != IM_CODING_NONE ) {
libvips/colour/im_disp2XYZ.c:			"%s", _( "input not 3-band uncoded char" ) );
libvips/colour/im_disp2XYZ.c:		return( -1 );
libvips/colour/im_disp2XYZ.c:		return( -1 );
libvips/colour/im_disp2XYZ.c:	out->BandFmt = IM_BANDFMT_FLOAT;
libvips/colour/im_disp2XYZ.c:	out->Type = IM_TYPE_XYZ;
libvips/colour/im_disp2XYZ.c:		return( -1 );
libvips/colour/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/colour/im_LabQ2LabS.c: * 	- adapted from im_LabQ2Lab()
libvips/colour/im_LabQ2LabS.c: *	- uses new im_wrap_oneonebuf() fn
libvips/colour/im_LabQ2LabS.c: *	- new im_wrapone function
libvips/colour/im_LabQ2LabS.c: * 	- gtkdoc
libvips/colour/im_LabQ2LabS.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_LabQ2LabS.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_LabQ2LabS.c:		/* Get x-tra bits.
libvips/colour/im_LabQ2LabS.c: * Unpack a LabQ (#IM_CODING_LABQ) image to a three-band signed short image.
libvips/colour/im_LabQ2LabS.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_LabQ2LabS.c:		return( -1 );
libvips/colour/im_LabQ2LabS.c:		return( -1 );
libvips/colour/im_LabQ2LabS.c:	out->Bands = 3;
libvips/colour/im_LabQ2LabS.c:	out->Type = IM_TYPE_LABS;
libvips/colour/im_LabQ2LabS.c:	out->BandFmt = IM_BANDFMT_SHORT;
libvips/colour/im_LabQ2LabS.c:	out->Coding = IM_CODING_NONE;
libvips/colour/im_LabQ2LabS.c:		return( -1 );
libvips/colour/im_icc_transform.c: * 	- attach profiles and intents to output images
libvips/colour/im_icc_transform.c: * 	- added im_icc_import_embedded() to import with an embedded profile
libvips/colour/im_icc_transform.c: * 	- lock around cmsDoTransform
libvips/colour/im_icc_transform.c: * 	- set RGB16 on 16-bit RGB export
libvips/colour/im_icc_transform.c: * 	- catch lcms error messages
libvips/colour/im_icc_transform.c: * 	- gtkdoc
libvips/colour/im_icc_transform.c: * 	- small cleanups
libvips/colour/im_icc_transform.c: * 	- call attach_profile() before im_wrapone() so the profile will get
libvips/colour/im_icc_transform.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_icc_transform.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_icc_transform.c:	return( -1 );
libvips/colour/im_icc_transform.c:	return( -1 );
libvips/colour/im_icc_transform.c:	return( -1 );
libvips/colour/im_icc_transform.c:	return( -1 );
libvips/colour/im_icc_transform.c:	return( -1 );
libvips/colour/im_icc_transform.c: * Returns: non-zero if the ICC library is present.
libvips/colour/im_icc_transform.c:	/* We need to single-thread calls to LCMS.
libvips/colour/im_icc_transform.c:	IM_FREEF( cmsDeleteTransform, icc->trans );
libvips/colour/im_icc_transform.c:	IM_FREEF( cmsCloseProfile, icc->in_profile );
libvips/colour/im_icc_transform.c:	IM_FREEF( cmsCloseProfile, icc->out_profile );
libvips/colour/im_icc_transform.c:	IM_FREEF( g_mutex_free, icc->lock );
libvips/colour/im_icc_transform.c:	icc->in = in;
libvips/colour/im_icc_transform.c:	icc->out = out;
libvips/colour/im_icc_transform.c:	icc->input_profile_filename = NULL;
libvips/colour/im_icc_transform.c:	icc->output_profile_filename = NULL;
libvips/colour/im_icc_transform.c:	icc->intent = intent;
libvips/colour/im_icc_transform.c:	icc->in_profile = 0;
libvips/colour/im_icc_transform.c:	icc->out_profile = 0;
libvips/colour/im_icc_transform.c:	icc->trans = 0;
libvips/colour/im_icc_transform.c:	icc->lock = g_mutex_new();
libvips/colour/im_icc_transform.c:		icc->input_profile_filename = 
libvips/colour/im_icc_transform.c:		if( !(icc->in_profile = cmsOpenProfileFromFile(
libvips/colour/im_icc_transform.c:		icc->output_profile_filename = 
libvips/colour/im_icc_transform.c:		if( !(icc->out_profile = cmsOpenProfileFromFile(
libvips/colour/im_icc_transform.c:		icc->out_profile = cmsCreateLabProfile( NULL );
libvips/colour/im_icc_transform.c:		icc->in_profile = cmsCreateLabProfile( NULL );
libvips/colour/im_icc_transform.c:	if( !icc->in_profile || !icc->out_profile ) {
libvips/colour/im_icc_transform.c:	if( !(icc->in_profile = cmsOpenProfileFromMem( data, data_length )) ) {
libvips/colour/im_icc_transform.c:	icc->out_profile = cmsCreateLabProfile( NULL );
libvips/colour/im_icc_transform.c:/* Pack a buffer of floats into lcms's fixed-point formats. Cut from
libvips/colour/im_icc_transform.c: * lcms-1.0.8.
libvips/colour/im_icc_transform.c:		if( a < -128. ) 
libvips/colour/im_icc_transform.c:			a = -128;
libvips/colour/im_icc_transform.c:		if( b < -128. ) 
libvips/colour/im_icc_transform.c:			b = -128;
libvips/colour/im_icc_transform.c:                lab[1] = ((double) fixed[1] / 256.0) - 128.0;
libvips/colour/im_icc_transform.c:                lab[2] = ((double) fixed[2] / 256.0) - 128.0;
libvips/colour/im_icc_transform.c:	g_mutex_lock( icc->lock );
libvips/colour/im_icc_transform.c:	cmsDoTransform( icc->trans, in, out, n );
libvips/colour/im_icc_transform.c:	g_mutex_unlock( icc->lock );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c: * profile-connection space with the input profile and then to the output
libvips/colour/im_icc_transform.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_icc_transform.c:		return( -1 ); 
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	if( !cmsIsIntentSupported( icc->in_profile, 
libvips/colour/im_icc_transform.c:	if( !cmsIsIntentSupported( icc->out_profile, 
libvips/colour/im_icc_transform.c:	switch( cmsGetColorSpace( icc->in_profile ) ) {
libvips/colour/im_icc_transform.c:		if( in->Bands != 4 ) {
libvips/colour/im_icc_transform.c:			return( -1 );
libvips/colour/im_icc_transform.c:		if( in->Bands != 3 ) {
libvips/colour/im_icc_transform.c:			return( -1 );
libvips/colour/im_icc_transform.c:			cmsGetColorSpace( icc->in_profile ) );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	switch( cmsGetColorSpace( icc->out_profile ) ) {
libvips/colour/im_icc_transform.c:		out->Type = IM_TYPE_CMYK;
libvips/colour/im_icc_transform.c:		out->BandFmt = IM_BANDFMT_UCHAR;
libvips/colour/im_icc_transform.c:		out->Bands = 4;
libvips/colour/im_icc_transform.c:		out->Type = IM_TYPE_RGB;
libvips/colour/im_icc_transform.c:		out->BandFmt = IM_BANDFMT_UCHAR;
libvips/colour/im_icc_transform.c:		out->Bands = 3;
libvips/colour/im_icc_transform.c:			cmsGetColorSpace( icc->out_profile ) );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	switch( in->BandFmt ) {
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	if( !(icc->trans = cmsCreateTransform( icc->in_profile, in_icc_format,
libvips/colour/im_icc_transform.c:		icc->out_profile, out_icc_format, intent, 0 )) )
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	/* Buffer of encoded 16-bit pixels we write to.
libvips/colour/im_icc_transform.c:		g_mutex_lock( icc->lock );
libvips/colour/im_icc_transform.c:		cmsDoTransform( icc->trans, in, encoded, chunk );
libvips/colour/im_icc_transform.c:		g_mutex_unlock( icc->lock );
libvips/colour/im_icc_transform.c:		in += chunk * IM_IMAGE_SIZEOF_PEL( icc->in );
libvips/colour/im_icc_transform.c:		n -= chunk;
libvips/colour/im_icc_transform.c:		return( -1 ); 
libvips/colour/im_icc_transform.c:	if( !cmsIsIntentSupported( icc->in_profile, 
libvips/colour/im_icc_transform.c:		icc->intent, LCMS_USED_AS_INPUT ) )
libvips/colour/im_icc_transform.c:			icc->intent, decode_intent( icc->intent ) );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	out->Type = IM_TYPE_LAB;
libvips/colour/im_icc_transform.c:	out->BandFmt = IM_BANDFMT_FLOAT;
libvips/colour/im_icc_transform.c:	out->Bands = 3;
libvips/colour/im_icc_transform.c:	switch( cmsGetColorSpace( icc->in_profile ) ) {
libvips/colour/im_icc_transform.c:		if( in->Bands != 4 ) {
libvips/colour/im_icc_transform.c:			return( -1 );
libvips/colour/im_icc_transform.c:		if( in->Bands != 3 ) {
libvips/colour/im_icc_transform.c:			return( -1 );
libvips/colour/im_icc_transform.c:			"space 0x%x" ), cmsGetColorSpace( icc->in_profile ) );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	switch( in->BandFmt ) {
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	if( !(icc->trans = cmsCreateTransform( icc->in_profile, icc_format,
libvips/colour/im_icc_transform.c:		icc->out_profile, TYPE_Lab_16, icc->intent, 0 )) )
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	/* Buffer of encoded 16-bit pixels we transform.
libvips/colour/im_icc_transform.c:		g_mutex_lock( icc->lock );
libvips/colour/im_icc_transform.c:		cmsDoTransform( icc->trans, encoded, out, chunk );
libvips/colour/im_icc_transform.c:		g_mutex_unlock( icc->lock );
libvips/colour/im_icc_transform.c:		out += chunk * IM_IMAGE_SIZEOF_PEL( icc->out );
libvips/colour/im_icc_transform.c:		n -= chunk;
libvips/colour/im_icc_transform.c: * @depth can be 8 or 16, for 8 or 16-bit image export.
libvips/colour/im_icc_transform.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_icc_transform.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/colour/im_icc_transform.c:			return( -1 );
libvips/colour/im_icc_transform.c:	if( in->Coding == IM_CODING_RAD ) {
libvips/colour/im_icc_transform.c:			return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 ); 
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	if( !cmsIsIntentSupported( icc->out_profile, 
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	switch( cmsGetColorSpace( icc->out_profile ) ) {
libvips/colour/im_icc_transform.c:		out->Type = IM_TYPE_CMYK;
libvips/colour/im_icc_transform.c:		out->BandFmt = depth == 8 ? 
libvips/colour/im_icc_transform.c:		out->Bands = 4;
libvips/colour/im_icc_transform.c:		out->Type = depth == 8 ? 
libvips/colour/im_icc_transform.c:		out->BandFmt = depth == 8 ? 
libvips/colour/im_icc_transform.c:		out->Bands = 3;
libvips/colour/im_icc_transform.c:			"space 0x%x" ), cmsGetColorSpace( icc->out_profile ) );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	if( !(icc->trans = cmsCreateTransform( icc->in_profile, TYPE_Lab_16,
libvips/colour/im_icc_transform.c:		icc->out_profile, icc_format, intent, 0 )) )
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_icc_transform.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/colour/im_icc_transform.c:		IMAGE *t1 = im_open_local( out, "im_icc_ac2rc-1", "p" );
libvips/colour/im_icc_transform.c:			return( -1 );
libvips/colour/im_icc_transform.c:	if( in->Coding == IM_CODING_RAD ) {
libvips/colour/im_icc_transform.c:			return( -1 );
libvips/colour/im_icc_transform.c:	if( im_open_local_array( out, t, 2, "im_icc_ac2rc-2", "p" ) ||
libvips/colour/im_icc_transform.c:		return( -1 );
libvips/colour/im_LabS2Lab.c: * 	- adapted from im_LabS2LabQ()
libvips/colour/im_LabS2Lab.c: * 	- gtkdoc, cleanup
libvips/colour/im_LabS2Lab.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_LabS2Lab.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_LabS2Lab.c: * Convert a LabS three-band signed short image to a three-band float image.
libvips/colour/im_LabS2Lab.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_LabS2Lab.c:		return( -1 );
libvips/colour/im_LabS2Lab.c:		return( -1 );
libvips/colour/im_LabS2Lab.c:	out->Type = IM_TYPE_LAB;
libvips/colour/im_LabS2Lab.c:	out->BandFmt = IM_BANDFMT_FLOAT;
libvips/colour/im_LabS2Lab.c:		return( -1 );
libvips/colour/im_XYZ2disp.c: * @(#) Returns: -1 on error, else 0
libvips/colour/im_XYZ2disp.c: * Author: J-P. Laurent
libvips/colour/im_XYZ2disp.c: *	- error message added
libvips/colour/im_XYZ2disp.c: *	- out->Type set to IM_TYPE_RGB
libvips/colour/im_XYZ2disp.c: *	- memory leak fixed
libvips/colour/im_XYZ2disp.c: *	- uses im_wrapone()
libvips/colour/im_XYZ2disp.c: *	- oops! now uses PEL, not float for output pointer
libvips/colour/im_XYZ2disp.c: *	- sometimes produced incorrect result at extrema
libvips/colour/im_XYZ2disp.c: *	- reformatted
libvips/colour/im_XYZ2disp.c: *	- now uses IM_RINT() and clip()
libvips/colour/im_XYZ2disp.c: *	- some speed-ups ... 3x faster
libvips/colour/im_XYZ2disp.c: *	- slightly less accurate, but who cares
libvips/colour/im_XYZ2disp.c: *	- added out-of-mem check for table build
libvips/colour/im_XYZ2disp.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_XYZ2disp.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_XYZ2disp.c:	float rstep = (d->d_YCR - d->d_Y0R) / 1500.0;
libvips/colour/im_XYZ2disp.c:	float gstep = (d->d_YCG - d->d_Y0G) / 1500.0;
libvips/colour/im_XYZ2disp.c:	float bstep = (d->d_YCB - d->d_Y0B) / 1500.0;
libvips/colour/im_XYZ2disp.c:		Yr =  table->mat_XYZ2lum[0][0] * X 
libvips/colour/im_XYZ2disp.c:		    + table->mat_XYZ2lum[0][1] * Y 
libvips/colour/im_XYZ2disp.c:		    + table->mat_XYZ2lum[0][2] * Z;
libvips/colour/im_XYZ2disp.c:		Yg =  table->mat_XYZ2lum[1][0] * X 
libvips/colour/im_XYZ2disp.c:		    + table->mat_XYZ2lum[1][1] * Y 
libvips/colour/im_XYZ2disp.c:		    + table->mat_XYZ2lum[1][2] * Z;
libvips/colour/im_XYZ2disp.c:		Yb =  table->mat_XYZ2lum[2][0] * X 
libvips/colour/im_XYZ2disp.c:		    + table->mat_XYZ2lum[2][1] * Y 
libvips/colour/im_XYZ2disp.c:		    + table->mat_XYZ2lum[2][2] * Z;
libvips/colour/im_XYZ2disp.c:		/* Clip -ves.
libvips/colour/im_XYZ2disp.c:		Yr = IM_MAX( Yr, d->d_Y0R );
libvips/colour/im_XYZ2disp.c:		Yg = IM_MAX( Yg, d->d_Y0G );
libvips/colour/im_XYZ2disp.c:		Yb = IM_MAX( Yb, d->d_Y0B );
libvips/colour/im_XYZ2disp.c:		i = IM_MIN( 1500, (Yr - d->d_Y0R) / rstep );
libvips/colour/im_XYZ2disp.c:		r = table->t_Yr2r[i];
libvips/colour/im_XYZ2disp.c:		i = IM_MIN( 1500, (Yg - d->d_Y0G) / gstep );
libvips/colour/im_XYZ2disp.c:		g = table->t_Yg2g[i];
libvips/colour/im_XYZ2disp.c:		i = IM_MIN( 1500, (Yb - d->d_Y0B) / bstep );
libvips/colour/im_XYZ2disp.c:		b = table->t_Yb2b[i];
libvips/colour/im_XYZ2disp.c:		r = IM_MIN( r, d->d_Vrwr );
libvips/colour/im_XYZ2disp.c:		g = IM_MIN( g, d->d_Vrwg );
libvips/colour/im_XYZ2disp.c:		b = IM_MIN( b, d->d_Vrwb );
libvips/colour/im_XYZ2disp.c:	if( in->Bands != 3 || in->BandFmt != IM_BANDFMT_FLOAT || 
libvips/colour/im_XYZ2disp.c:		in->Coding != IM_CODING_NONE ) {
libvips/colour/im_XYZ2disp.c:			"%s", _( "3-band uncoded float only" ) );
libvips/colour/im_XYZ2disp.c:		return( -1 );
libvips/colour/im_XYZ2disp.c:		return( -1 );
libvips/colour/im_XYZ2disp.c:	out->BandFmt = IM_BANDFMT_UCHAR;
libvips/colour/im_XYZ2disp.c:	out->Type = IM_TYPE_RGB;
libvips/colour/im_XYZ2disp.c:		return( -1 );
libvips/colour/im_XYZ2Lab.c: *	- uses im_wrapone()
libvips/colour/im_XYZ2Lab.c: *	- in-line conversion
libvips/colour/im_XYZ2Lab.c: *	- swapped cbrt() for pow(), more portable
libvips/colour/im_XYZ2Lab.c: * 	- swapped pow() for cbrt() again, pow() is insanely slow on win32
libvips/colour/im_XYZ2Lab.c: * 	- added a configure test for cbrt().
libvips/colour/im_XYZ2Lab.c: *	- use a large LUT instead, about 5x faster
libvips/colour/im_XYZ2Lab.c: *	- ahem, build the LUT outside the eval thread
libvips/colour/im_XYZ2Lab.c: * 	- gtkdoc
libvips/colour/im_XYZ2Lab.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_XYZ2Lab.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_XYZ2Lab.c:		nX = QUANT_ELEMENTS * p[0] / temp->X0;
libvips/colour/im_XYZ2Lab.c:		nY = QUANT_ELEMENTS * p[1] / temp->Y0;
libvips/colour/im_XYZ2Lab.c:		nZ = QUANT_ELEMENTS * p[2] / temp->Z0;
libvips/colour/im_XYZ2Lab.c:		if( i > QUANT_ELEMENTS - 2 )
libvips/colour/im_XYZ2Lab.c:			i = QUANT_ELEMENTS - 2;
libvips/colour/im_XYZ2Lab.c:		f = nX - i;
libvips/colour/im_XYZ2Lab.c:		cbx = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]);
libvips/colour/im_XYZ2Lab.c:		if( i > QUANT_ELEMENTS - 2 )
libvips/colour/im_XYZ2Lab.c:			i = QUANT_ELEMENTS - 2;
libvips/colour/im_XYZ2Lab.c:		f = nY - i;
libvips/colour/im_XYZ2Lab.c:		cby = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]);
libvips/colour/im_XYZ2Lab.c:		if( i > QUANT_ELEMENTS - 2 )
libvips/colour/im_XYZ2Lab.c:			i = QUANT_ELEMENTS - 2;
libvips/colour/im_XYZ2Lab.c:		f = nZ - i;
libvips/colour/im_XYZ2Lab.c:		cbz = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]);
libvips/colour/im_XYZ2Lab.c:		q[0] = 116.0 * cby - 16.0;
libvips/colour/im_XYZ2Lab.c:		q[1] = 500.0 * (cbx - cby);
libvips/colour/im_XYZ2Lab.c:		q[2] = 200.0 * (cby - cbz);
libvips/colour/im_XYZ2Lab.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_XYZ2Lab.c:		return( -1 );
libvips/colour/im_XYZ2Lab.c:	temp->X0 = X0;
libvips/colour/im_XYZ2Lab.c:	temp->Y0 = Y0;
libvips/colour/im_XYZ2Lab.c:	temp->Z0 = Z0;
libvips/colour/im_XYZ2Lab.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_LabQ2Lab.c: *	- adapted for partial v2
libvips/colour/im_LabQ2Lab.c: *	- adapted to new im_wrap_oneonebuf() function.
libvips/colour/im_LabQ2Lab.c: *	- new im_wrapone function
libvips/colour/im_LabQ2Lab.c: *	- changed char to unsigned char for RS/6000 
libvips/colour/im_LabQ2Lab.c: * 	- small tidies and speed-ups
libvips/colour/im_LabQ2Lab.c: *	- L* = 100.0 now handled correctly
libvips/colour/im_LabQ2Lab.c: * 	- gtkdoc
libvips/colour/im_LabQ2Lab.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_LabQ2Lab.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_LabQ2Lab.c: * Unpack a LabQ (#IM_CODING_LABQ) image to a three-band float image.
libvips/colour/im_LabQ2Lab.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_LabQ2Lab.c:		return( -1 );
libvips/colour/im_LabQ2Lab.c:		return( -1 );
libvips/colour/im_LabQ2Lab.c:	out->Bands = 3;
libvips/colour/im_LabQ2Lab.c:	out->Type = IM_TYPE_LAB;
libvips/colour/im_LabQ2Lab.c:	out->BandFmt = IM_BANDFMT_FLOAT;
libvips/colour/im_LabQ2Lab.c:	out->Coding = IM_CODING_NONE;
libvips/colour/im_LabQ2Lab.c:		return( -1 );
libvips/colour/im_Lab2LCh.c: * 	- gtkdoc
libvips/colour/im_Lab2LCh.c: * 	- cleanups
libvips/colour/im_Lab2LCh.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_Lab2LCh.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_Lab2LCh.c:		return( -1 );
libvips/colour/im_Lab2LCh.c:		return( -1 );
libvips/colour/im_Lab2LCh.c:	out->Type = type;
libvips/colour/im_Lab2LCh.c:		return( -1 );
libvips/colour/im_Lab2LCh.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_Lab2XYZ.c: *	- ANSIfied
libvips/colour/im_Lab2XYZ.c: *	- sets Type of output
libvips/colour/im_Lab2XYZ.c: *	- better error messages
libvips/colour/im_Lab2XYZ.c: *	- partialed
libvips/colour/im_Lab2XYZ.c: *	- in-line conversion
libvips/colour/im_Lab2XYZ.c: *	- new im_wrapone function
libvips/colour/im_Lab2XYZ.c: * 	- gtkdoc
libvips/colour/im_Lab2XYZ.c: * 	- cleanups
libvips/colour/im_Lab2XYZ.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_Lab2XYZ.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_Lab2XYZ.c:			Y = (L * temp->Y0) / 903.3;
libvips/colour/im_Lab2XYZ.c:			cby = 7.787 * (Y / temp->Y0) + 16.0 / 116.0;
libvips/colour/im_Lab2XYZ.c:			Y = temp->Y0 * cby * cby * cby;
libvips/colour/im_Lab2XYZ.c:			X = temp->X0 * (tmp - 0.13793) / 7.787;
libvips/colour/im_Lab2XYZ.c:			X = temp->X0 * tmp * tmp * tmp;
libvips/colour/im_Lab2XYZ.c:		tmp = cby - b / 200.0;
libvips/colour/im_Lab2XYZ.c:			Z = temp->Z0 * (tmp - 0.13793) / 7.787;
libvips/colour/im_Lab2XYZ.c:			Z = temp->Z0 * tmp * tmp * tmp;
libvips/colour/im_Lab2XYZ.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_Lab2XYZ.c:		return( -1 );
libvips/colour/im_Lab2XYZ.c:	temp->X0 = X0;
libvips/colour/im_Lab2XYZ.c:	temp->Y0 = Y0;
libvips/colour/im_Lab2XYZ.c:	temp->Z0 = Z0;
libvips/colour/im_Lab2XYZ.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_LabS2LabQ.c: * 	- adapted from im_LabQ2LabS()
libvips/colour/im_LabS2LabQ.c: *	- adapted to new im_wrap_oneonebuf() function
libvips/colour/im_LabS2LabQ.c: *	- oops! rounding was broken
libvips/colour/im_LabS2LabQ.c: *	- added round-to-nearest
libvips/colour/im_LabS2LabQ.c: *	- somewhat slower ...
libvips/colour/im_LabS2LabQ.c: * 	- a/b ==0 rounding was broken
libvips/colour/im_LabS2LabQ.c: * 	- gtkdoc, cleanup
libvips/colour/im_LabS2LabQ.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_LabS2LabQ.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_LabS2LabQ.c:		/* Make sure we round -ves in the right direction!
libvips/colour/im_LabS2LabQ.c:			a -= 16;
libvips/colour/im_LabS2LabQ.c:		if( a < -32768 )
libvips/colour/im_LabS2LabQ.c:			a = -32768;
libvips/colour/im_LabS2LabQ.c:			b -= 16;
libvips/colour/im_LabS2LabQ.c:		if( b < -32768 )
libvips/colour/im_LabS2LabQ.c:			b = -32768;
libvips/colour/im_LabS2LabQ.c: * Convert a LabS three-band signed short image to LabQ
libvips/colour/im_LabS2LabQ.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_LabS2LabQ.c:		return( -1 );
libvips/colour/im_LabS2LabQ.c:		return( -1 );
libvips/colour/im_LabS2LabQ.c:	out->Bands = 4;
libvips/colour/im_LabS2LabQ.c:	out->Type = IM_TYPE_LAB;
libvips/colour/im_LabS2LabQ.c:	out->BandFmt = IM_BANDFMT_UCHAR;
libvips/colour/im_LabS2LabQ.c:	out->Coding = IM_CODING_LABQ;
libvips/colour/im_LabS2LabQ.c:		return( -1 );
libvips/colour/im_dE_fromLab.c: *	- partialed!
libvips/colour/im_dE_fromLab.c: * 	- use im__colour_binary() 
libvips/colour/im_dE_fromLab.c: * 	- gtkdoc comment
libvips/colour/im_dE_fromLab.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_dE_fromLab.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_dE_fromLab.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_Lab2LabS.c: *	- from im_Lab2LabQ
libvips/colour/im_Lab2LabS.c: *	- gtkdoc
libvips/colour/im_Lab2LabS.c: *	- cleanups
libvips/colour/im_Lab2LabS.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_Lab2LabS.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_Lab2LabS.c: * Turn Lab to LabS, signed 16-bit int fixed point.
libvips/colour/im_Lab2LabS.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_Lab2LabS.c:		return( -1 );
libvips/colour/im_Lab2LabS.c:		return( -1 );
libvips/colour/im_Lab2LabS.c:	out->Type = IM_TYPE_LABS;
libvips/colour/im_Lab2LabS.c:	out->BandFmt = IM_BANDFMT_SHORT;
libvips/colour/im_Lab2LabS.c:		return( -1 );
libvips/colour/im_rad2float.c: * 	- from LabQ2Lab and Radiance sources
libvips/colour/im_rad2float.c: * 	- gtkdoc 
libvips/colour/im_rad2float.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_rad2float.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_rad2float.c: * Copyright (c) 1990 - 2009 The Regents of the University of California,
libvips/colour/im_rad2float.c: * 3. The end-user documentation included with the redistribution,
libvips/colour/im_rad2float.c: *       if and wherever such third-party acknowledgments normally appear.
libvips/colour/im_rad2float.c:/* Begin copy-paste from Radiance sources.
libvips/colour/im_rad2float.c:#define  BYTE 	unsigned char	/* 8-bit unsigned integer */
libvips/colour/im_rad2float.c:		f = ldexp(1.0, (int)clr[EXP]-(COLXS+8));
libvips/colour/im_rad2float.c:/* End copy-paste from Radiance sources.
libvips/colour/im_rad2float.c:	while (--n > 0) {
libvips/colour/im_rad2float.c:		if (inp[0][RED] == inp[-1][RED] &&
libvips/colour/im_rad2float.c:			    inp[0][GRN] == inp[-1][GRN] &&
libvips/colour/im_rad2float.c:			    inp[0][BLU] == inp[-1][BLU] &&
libvips/colour/im_rad2float.c:			    inp[0][EXP] == inp[-1][EXP])
libvips/colour/im_rad2float.c:			copycolor(outbuf[0], outbuf[-1]);
libvips/colour/im_rad2float.c: * Unpack a RAD (#IM_CODING_RAD) image to a three-band float image.
libvips/colour/im_rad2float.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_rad2float.c:	if( in->Coding != IM_CODING_RAD ) {
libvips/colour/im_rad2float.c:		return( -1 );
libvips/colour/im_rad2float.c:		return( -1 );
libvips/colour/im_rad2float.c:	out->Bands = 3;
libvips/colour/im_rad2float.c:	out->BandFmt = IM_BANDFMT_FLOAT;
libvips/colour/im_rad2float.c:	out->Coding = IM_CODING_NONE;
libvips/colour/im_rad2float.c:		return( -1 );
libvips/colour/im_dECMC_fromLab.c: *	- oops, wasn't testing input args correctly
libvips/colour/im_dECMC_fromLab.c: * 	- use im__colour_binary()
libvips/colour/im_dECMC_fromLab.c: * 	- gtkdoc comment
libvips/colour/im_dECMC_fromLab.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_dECMC_fromLab.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_dECMC_fromLab.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_lab_morph.c: * 	- added
libvips/colour/im_lab_morph.c: * 	- cleanups
libvips/colour/im_lab_morph.c: * 	- gtkdoc
libvips/colour/im_lab_morph.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_lab_morph.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_lab_morph.c:	parm->in = in;
libvips/colour/im_lab_morph.c:	parm->out = out;
libvips/colour/im_lab_morph.c:	parm->L_scale = L_scale;
libvips/colour/im_lab_morph.c:	parm->L_offset = L_offset;
libvips/colour/im_lab_morph.c:	parm->a_scale = a_scale;
libvips/colour/im_lab_morph.c:	parm->b_scale = b_scale;
libvips/colour/im_lab_morph.c:	if( mask->xsize != 3 || mask->ysize < 1 || mask->ysize > 100 ) {
libvips/colour/im_lab_morph.c:		return( -1 );
libvips/colour/im_lab_morph.c:	for( i = 0; i < mask->ysize; i++ ) {
libvips/colour/im_lab_morph.c:		double L = mask->coeff[i*3];
libvips/colour/im_lab_morph.c:		double a = mask->coeff[i*3 + 1];
libvips/colour/im_lab_morph.c:		double b = mask->coeff[i*3 + 2];
libvips/colour/im_lab_morph.c:		if( L < 0 || L > 100 || a < -120 || a > 120 || 
libvips/colour/im_lab_morph.c:			b < -120 || b > 120 ) {
libvips/colour/im_lab_morph.c:			return( -1 );
libvips/colour/im_lab_morph.c:		for( j = 0; j < mask->ysize; j++ ) {
libvips/colour/im_lab_morph.c:			double L = mask->coeff[j*3];
libvips/colour/im_lab_morph.c:			double a = mask->coeff[j*3 + 1];
libvips/colour/im_lab_morph.c:			double b = mask->coeff[j*3 + 2];
libvips/colour/im_lab_morph.c:		for( j = mask->ysize - 1; j >= 0; j-- ) {
libvips/colour/im_lab_morph.c:			double L = mask->coeff[j*3];
libvips/colour/im_lab_morph.c:			double a = mask->coeff[j*3 + 1];
libvips/colour/im_lab_morph.c:			double b = mask->coeff[j*3 + 2];
libvips/colour/im_lab_morph.c:		parm->a_offset[i] = a_low + 
libvips/colour/im_lab_morph.c:			(a_high - a_low) * ((i - L_low) / (L_high - L_low));
libvips/colour/im_lab_morph.c:		parm->b_offset[i] = b_low + 
libvips/colour/im_lab_morph.c:			(b_high - b_low) * ((i - L_low) / (L_high - L_low));
libvips/colour/im_lab_morph.c:		a -= parm->a_offset[(int) L]; 
libvips/colour/im_lab_morph.c:		b -= parm->b_offset[(int) L]; 
libvips/colour/im_lab_morph.c:		L = (L + parm->L_offset) * parm->L_scale; 
libvips/colour/im_lab_morph.c:		a *= parm->a_scale; 
libvips/colour/im_lab_morph.c:		b *= parm->b_scale; 
libvips/colour/im_lab_morph.c: *       <entry>-3.95</entry>
libvips/colour/im_lab_morph.c: *       <entry>-2.62</entry>
libvips/colour/im_lab_morph.c: *       <entry>-1.95</entry>
libvips/colour/im_lab_morph.c: *       <entry>-2.01</entry>
libvips/colour/im_lab_morph.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_lab_morph.c:	if( in->Coding == IM_CODING_LABQ ) {
libvips/colour/im_lab_morph.c:			return( -1 );
libvips/colour/im_lab_morph.c:		return( -1 );
libvips/colour/im_UCS2LCh.c: *	- error messages added
libvips/colour/im_UCS2LCh.c: *	- memory leak fixed
libvips/colour/im_UCS2LCh.c: *	- uses im_wrap_oneonebuf() now
libvips/colour/im_UCS2LCh.c: * 	- gtkdoc
libvips/colour/im_UCS2LCh.c: * 	- argh, im_col_make_tables_UCS(); missing, thanks Peter
libvips/colour/im_UCS2LCh.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_UCS2LCh.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_UCS2LCh.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_Yxy2XYZ.c: *	- from lab2xyz
libvips/colour/im_Yxy2XYZ.c: * 	- gtkdoc
libvips/colour/im_Yxy2XYZ.c: * 	- cleanups
libvips/colour/im_Yxy2XYZ.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_Yxy2XYZ.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_Yxy2XYZ.c:	        Z = (X - x * X - x * Y) / x;
libvips/colour/im_Yxy2XYZ.c: * Returns: 0 on success, -1 on error.
libvips/colour/disp.c: * 	- from colour.c
libvips/colour/disp.c: * 	- oop, im_disp2Lab() was broken
libvips/colour/disp.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/disp.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/disp.c: * @see_also: <link linkend="libvips-colour">colour</link>
libvips/colour/disp.c:	{			/* XYZ -> luminance matrix */
libvips/colour/disp.c:		{  3.2410, -1.5374, -0.4986 },
libvips/colour/disp.c:		{  -0.9692, 1.8760, 0.0416 },
libvips/colour/disp.c:		{  0.0556, -0.2040, 1.0570 }
libvips/colour/disp.c:/* Values for my Ultra2, 20/2/98. Figures from a Minolta CA-100 CRT analyser.
libvips/colour/disp.c:	"ultra2-20/2/98",
libvips/colour/disp.c:	{			/* XYZ -> luminance matrix */
libvips/colour/disp.c:		{  .704, -0.302, -.103 },
libvips/colour/disp.c:		{ -.708, 1.317, .032 },
libvips/colour/disp.c:		{  .005, -.015, .071 }
libvips/colour/disp.c:	{			/* XYZ -> luminance matrix */
libvips/colour/disp.c:		{  .660, -0.276, -.10 },
libvips/colour/disp.c:		{ -.663, 1.293, .0265 },
libvips/colour/disp.c:		{  .003, -.017, .0734 }
libvips/colour/disp.c:	{			/* XYZ -> luminance matrix */
libvips/colour/disp.c:		{  .660, -0.276, -.10 },
libvips/colour/disp.c:		{ -.663, 1.293, .0265 },
libvips/colour/disp.c:		{  .003, -.017, .0734 }
libvips/colour/disp.c:	{			/* XYZ -> luminance matrix */
libvips/colour/disp.c:		{  .660, -0.276, -.10 },
libvips/colour/disp.c:		{ -.663, 1.293, .0265 },
libvips/colour/disp.c:		{  .003, -.017, .0734 }
libvips/colour/disp.c:	{                       /* XYZ -> luminance matrix */
libvips/colour/disp.c:		{  .749, -0.322, -.123 },
libvips/colour/disp.c:		{ -.755, 1.341, .033 },
libvips/colour/disp.c:		{  .007, -.019, .0898 }
libvips/colour/disp.c:/* Values for Mitsubishi dye-sub colour printer.
libvips/colour/disp.c:	{                       /* XYZ -> luminance matrix */
libvips/colour/disp.c:		{ 1.1997, -0.6296, -0.2755 },
libvips/colour/disp.c:		{ -1.1529, 1.7383, -0.1074 },
libvips/colour/disp.c:		{ -0.047, -0.109, 0.3829 }
libvips/colour/disp.c:	{			/* XYZ -> luminance matrix */
libvips/colour/disp.c:		{  .660, -0.276, -.10 },
libvips/colour/disp.c:		{ -.663, 1.293, .0265 },
libvips/colour/disp.c:		{  .003, -.017, .0734 }
libvips/colour/disp.c:		if( g_ascii_strcasecmp( d->d_name, name ) == 0 )
libvips/colour/disp.c:	c = (d->d_B - 100.0) / 500.0;
libvips/colour/disp.c:	yo = d->d_Y0R;
libvips/colour/disp.c:	a = d->d_YCR - yo;
libvips/colour/disp.c:	ga = d->d_gammaR;
libvips/colour/disp.c:	p = d->d_P / 100.0;
libvips/colour/disp.c:	f = d->d_Vrwr / p;
libvips/colour/disp.c:	maxr = (float) d->d_Vrwr;
libvips/colour/disp.c:	table->ristep = maxr / 1500.0;
libvips/colour/disp.c:	table->rstep = a / 1500.0;
libvips/colour/disp.c:		table->t_Yr2r[i] = f * (pow( i * table->rstep / a, ga_i ) - c);
libvips/colour/disp.c:		table->t_r2Yr[i] = yo + 
libvips/colour/disp.c:			a * pow( i * table->ristep / f + c, ga );
libvips/colour/disp.c:	yo = d->d_Y0G;
libvips/colour/disp.c:	a = d->d_YCG - yo;
libvips/colour/disp.c:	ga = d->d_gammaG;
libvips/colour/disp.c:	p = d->d_P / 100.0;
libvips/colour/disp.c:	f = d->d_Vrwg / p;
libvips/colour/disp.c:	maxg = (float)d->d_Vrwg;
libvips/colour/disp.c:	table->gistep = maxg / 1500.0;
libvips/colour/disp.c:	table->gstep = a / 1500.0;
libvips/colour/disp.c:		table->t_Yg2g[i] = f * (pow( i * table->gstep / a, ga_i ) - c);
libvips/colour/disp.c:		table->t_g2Yg[i] = yo + 
libvips/colour/disp.c:			a * pow( i * table->gistep / f + c, ga );
libvips/colour/disp.c:	yo = d->d_Y0B;
libvips/colour/disp.c:	a = d->d_YCB - yo;
libvips/colour/disp.c:	ga = d->d_gammaB;
libvips/colour/disp.c:	p = d->d_P / 100.0;
libvips/colour/disp.c:	f = d->d_Vrwb / p;
libvips/colour/disp.c:	maxb = (float)d->d_Vrwb;
libvips/colour/disp.c:	table->bistep = maxb / 1500.0;
libvips/colour/disp.c:	table->bstep = a / 1500.0;
libvips/colour/disp.c:		table->t_Yb2b[i] = f * (pow( i * table->bstep / a, ga_i ) - c);
libvips/colour/disp.c:		table->t_b2Yb[i] = yo + 
libvips/colour/disp.c:			a * pow( i * table->bistep / f + c, ga );
libvips/colour/disp.c:	if( d->d_type == DISP_DUMB ) 
libvips/colour/disp.c:			table->mat_XYZ2lum[i][j] = d->d_mat[i][j];
libvips/colour/disp.c:			temp[i][j] = d->d_mat[i][j];
libvips/colour/disp.c:			table->mat_lum2XYZ[i][j] = temp[i][j];
libvips/colour/disp.c:		d->d_name )) ) {
libvips/colour/disp.c:		g_hash_table_insert( im__col_display_tables, d->d_name, table );
libvips/colour/disp.c:	float *mat = &table->mat_lum2XYZ[0][0];
libvips/colour/disp.c:		return( -1 );
libvips/colour/disp.c:	switch( d->d_type ) {
libvips/colour/disp.c:		i = r / table->ristep;
libvips/colour/disp.c:		Yr = table->t_r2Yr[i];
libvips/colour/disp.c:		i = g / table->gistep;
libvips/colour/disp.c:		Yg = table->t_g2Yg[i];
libvips/colour/disp.c:		i = b / table->bistep;
libvips/colour/disp.c:		Yb = table->t_b2Yb[i];
libvips/colour/disp.c:		Yr = d->d_Y0R + r*(d->d_YCR-d->d_Y0R)/255.0;
libvips/colour/disp.c:		Yg = d->d_Y0G + g*(d->d_YCG-d->d_Y0G)/255.0;
libvips/colour/disp.c:		Yb = d->d_Y0B + b*(d->d_YCB-d->d_Y0B)/255.0;
libvips/colour/disp.c:		return( -1 );
libvips/colour/disp.c:/* Turn XYZ into display colour. Return or=1 for out of gamut - rgb will
libvips/colour/disp.c:	float *mat = &table->mat_XYZ2lum[0][0];
libvips/colour/disp.c:	/* Any negatives? If yes, set the out-of-range flag and bump up.
libvips/colour/disp.c:	if( Yr < d->d_Y0R ) { 
libvips/colour/disp.c:		Yr = d->d_Y0R; 
libvips/colour/disp.c:	if( Yg < d->d_Y0G ) { 
libvips/colour/disp.c:		Yg = d->d_Y0G; 
libvips/colour/disp.c:	if( Yb < d->d_Y0B ) { 
libvips/colour/disp.c:		Yb = d->d_Y0B; 
libvips/colour/disp.c:	/* Work out colour value (0-Vrw) to feed the tube to get that
libvips/colour/disp.c:	switch( d->d_type ) {
libvips/colour/disp.c:		Yint = (Yr - d->d_Y0R) / table->rstep;
libvips/colour/disp.c:		r = IM_RINT( table->t_Yr2r[Yint] );
libvips/colour/disp.c:		Yint = (Yg - d->d_Y0G) / table->gstep;
libvips/colour/disp.c:		g = IM_RINT( table->t_Yg2g[Yint] );
libvips/colour/disp.c:		Yint = (Yb - d->d_Y0B) / table->bstep;
libvips/colour/disp.c:		b = IM_RINT( table->t_Yb2b[Yint] );
libvips/colour/disp.c:		r = IM_RINT( ((Yr - d->d_Y0R) / (d->d_YCR - d->d_Y0R)) * 255 );
libvips/colour/disp.c:		g = IM_RINT( ((Yg - d->d_Y0G) / (d->d_YCG - d->d_Y0G)) * 255 );
libvips/colour/disp.c:		b = IM_RINT( ((Yb - d->d_Y0B) / (d->d_YCB - d->d_Y0B)) * 255 );
libvips/colour/disp.c:		if( r > d->d_Vrwr ) { 
libvips/colour/disp.c:			r = d->d_Vrwr; 
libvips/colour/disp.c:		if( g > d->d_Vrwg ) { 
libvips/colour/disp.c:			g = d->d_Vrwg; 
libvips/colour/disp.c:		if( b > d->d_Vrwb ) { 
libvips/colour/disp.c:			b = d->d_Vrwb; 
libvips/colour/disp.c:		return( -1 );
libvips/colour/disp.c: * Returns: 0 on success, -1 on error.
libvips/colour/disp.c:		return( -1 );
libvips/colour/disp.c:		return( -1 );
libvips/colour/disp.c:		return( -1 );
libvips/colour/disp.c:		return( -1 );
libvips/colour/im_LCh2Lab.c: *	- error messages added
libvips/colour/im_LCh2Lab.c: *	- memory leak fixed
libvips/colour/im_LCh2Lab.c: *	- uses im_wrap_oneonebuf() now
libvips/colour/im_LCh2Lab.c: *	- im_wrap v2
libvips/colour/im_LCh2Lab.c: * 	- gtkdoc
libvips/colour/im_LCh2Lab.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_LCh2Lab.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_LCh2Lab.c: * Returns: 0 on success, -1 on error.
libvips/colour/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/colour/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/colour/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/colour/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/colour/Makefile.in:am__mv = mv -f
libvips/colour/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/colour/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/colour/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/colour/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/colour/Makefile.in:	$(LDFLAGS) -o $@
libvips/colour/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/colour/Makefile.in:all: all-am
libvips/colour/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/colour/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/colour/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/colour/Makefile'; \
libvips/colour/Makefile.in:	  $(AUTOMAKE) --gnu libvips/colour/Makefile
libvips/colour/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/colour/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/colour/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/colour/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/colour/Makefile.in:clean-noinstLTLIBRARIES:
libvips/colour/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/colour/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/colour/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/colour/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/colour/Makefile.in:mostlyclean-compile:
libvips/colour/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/colour/Makefile.in:distclean-compile:
libvips/colour/Makefile.in:	-rm -f *.tab.c
libvips/colour/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/colour/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/colour/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/colour/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/colour/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/colour/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/colour/Makefile.in:mostlyclean-libtool:
libvips/colour/Makefile.in:	-rm -f *.lo
libvips/colour/Makefile.in:clean-libtool:
libvips/colour/Makefile.in:	-rm -rf .libs _libs
libvips/colour/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/colour/Makefile.in:	mkid -fID $$unique
libvips/colour/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/colour/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/colour/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/colour/Makefile.in:	  if test $$# -gt 0; then \
libvips/colour/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/colour/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/colour/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/colour/Makefile.in:distclean-tags:
libvips/colour/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/colour/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/colour/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/colour/Makefile.in:			   sort -u` ;; \
libvips/colour/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/colour/Makefile.in:	  if test -d $$d/$$file; then \
libvips/colour/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/colour/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/colour/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/colour/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/colour/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/colour/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/colour/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/colour/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/colour/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/colour/Makefile.in:check-am: all-am
libvips/colour/Makefile.in:check: check-am
libvips/colour/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/colour/Makefile.in:install: install-am
libvips/colour/Makefile.in:install-exec: install-exec-am
libvips/colour/Makefile.in:install-data: install-data-am
libvips/colour/Makefile.in:uninstall: uninstall-am
libvips/colour/Makefile.in:install-am: all-am
libvips/colour/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/colour/Makefile.in:installcheck: installcheck-am
libvips/colour/Makefile.in:install-strip:
libvips/colour/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/colour/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/colour/Makefile.in:mostlyclean-generic:
libvips/colour/Makefile.in:clean-generic:
libvips/colour/Makefile.in:distclean-generic:
libvips/colour/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/colour/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/colour/Makefile.in:maintainer-clean-generic:
libvips/colour/Makefile.in:clean: clean-am
libvips/colour/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/colour/Makefile.in:	mostlyclean-am
libvips/colour/Makefile.in:distclean: distclean-am
libvips/colour/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/colour/Makefile.in:	-rm -f Makefile
libvips/colour/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/colour/Makefile.in:	distclean-tags
libvips/colour/Makefile.in:dvi: dvi-am
libvips/colour/Makefile.in:dvi-am:
libvips/colour/Makefile.in:html: html-am
libvips/colour/Makefile.in:html-am:
libvips/colour/Makefile.in:info: info-am
libvips/colour/Makefile.in:info-am:
libvips/colour/Makefile.in:install-data-am:
libvips/colour/Makefile.in:install-dvi: install-dvi-am
libvips/colour/Makefile.in:install-dvi-am:
libvips/colour/Makefile.in:install-exec-am:
libvips/colour/Makefile.in:install-html: install-html-am
libvips/colour/Makefile.in:install-html-am:
libvips/colour/Makefile.in:install-info: install-info-am
libvips/colour/Makefile.in:install-info-am:
libvips/colour/Makefile.in:install-man:
libvips/colour/Makefile.in:install-pdf: install-pdf-am
libvips/colour/Makefile.in:install-pdf-am:
libvips/colour/Makefile.in:install-ps: install-ps-am
libvips/colour/Makefile.in:install-ps-am:
libvips/colour/Makefile.in:installcheck-am:
libvips/colour/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/colour/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/colour/Makefile.in:	-rm -f Makefile
libvips/colour/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/colour/Makefile.in:mostlyclean: mostlyclean-am
libvips/colour/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/colour/Makefile.in:	mostlyclean-libtool
libvips/colour/Makefile.in:pdf: pdf-am
libvips/colour/Makefile.in:pdf-am:
libvips/colour/Makefile.in:ps: ps-am
libvips/colour/Makefile.in:ps-am:
libvips/colour/Makefile.in:uninstall-am:
libvips/colour/Makefile.in:.MAKE: install-am install-strip
libvips/colour/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/colour/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/colour/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/colour/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/colour/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/colour/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/colour/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/colour/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/colour/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/colour/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/colour/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/colour/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/colour/colour_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/colour_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/colour_dispatch.c: * @see_also: <link linkend="libvips-arithmetic">arithmetic</link>
libvips/colour/colour_dispatch.c: * Radiance images have four 8-bits bands and store 8 bits of R, G and B and
libvips/colour/colour_dispatch.c: * 	 LabQ images have four 8-bit bands and store 10 bits of L and 11 bits 
libvips/colour/colour_dispatch.c: *	 three-band #IM_BANDFMT_SHORT image, scaled to fit the full range of 
libvips/colour/colour_dispatch.c: * 	 Lab colourspace represents CIELAB colour values with a three-band
libvips/colour/colour_dispatch.c: * 	 CIE XYZ colour space represented as a three-band %IM_BANDFMT_FLOAT
libvips/colour/colour_dispatch.c: * 	 CIE Yxy colour space represented as a three-band %IM_BANDFMT_FLOAT
libvips/colour/colour_dispatch.c: *	(also refered to as <code>disp</code>+) This is a generic 8-bit RGB
libvips/colour/colour_dispatch.c: *	<link linkend="libvips-disp">disp</link>.
libvips/colour/colour_dispatch.c:	"calculate delta-E CIE2000 for two Lab images",
libvips/colour/colour_dispatch.c:	"calculate delta-E CMC(1:1) for two Lab images",
libvips/colour/colour_dispatch.c:	"calculate delta-E for two XYZ images",
libvips/colour/colour_dispatch.c:	"calculate delta-E for two Lab images",
libvips/colour/colour_dispatch.c:	"calculate delta-E for two displayable images",
libvips/colour/colour_dispatch.c:	"calculate delta-E CMC(1:1) for two displayable images",
libvips/colour/colour_dispatch.c:		mo->mask, L_offset, L_scale, a_scale, b_scale ) );
libvips/colour/im_float2rad.c: * 	- from im_rad2float and Radiance sources
libvips/colour/im_float2rad.c: * 	- gtkdoc 
libvips/colour/im_float2rad.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_float2rad.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_float2rad.c: * Copyright (c) 1990 - 2009 The Regents of the University of California,
libvips/colour/im_float2rad.c: * 3. The end-user documentation included with the redistribution,
libvips/colour/im_float2rad.c: *       if and wherever such third-party acknowledgments normally appear.
libvips/colour/im_float2rad.c:/* Begin copy-paste from Radiance sources.
libvips/colour/im_float2rad.c:#define  BYTE 	unsigned char	/* 8-bit unsigned integer */
libvips/colour/im_float2rad.c:        if (d <= 1e-32) {
libvips/colour/im_float2rad.c:/* End copy-paste from Radiance sources.
libvips/colour/im_float2rad.c:	while (n-- > 0) {
libvips/colour/im_float2rad.c: * Convert a three-band float image to Radiance 32-bit packed format.
libvips/colour/im_float2rad.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_float2rad.c:		return( -1 );
libvips/colour/im_float2rad.c:		return( -1 );
libvips/colour/im_float2rad.c:	out->Bands = 4;
libvips/colour/im_float2rad.c:	out->BandFmt = IM_BANDFMT_UCHAR;
libvips/colour/im_float2rad.c:	out->Coding = IM_CODING_RAD;
libvips/colour/im_float2rad.c:		return( -1 );
libvips/colour/im_LCh2UCS.c: * 	- gtkdoc
libvips/colour/im_LCh2UCS.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_LCh2UCS.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_LCh2UCS.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_LabQ2disp.c: * @(#) Returns: -1 on error, else 0
libvips/colour/im_LabQ2disp.c: *	- adapted from old ip code
libvips/colour/im_LabQ2disp.c: * 	- small tidies, added to VIPS
libvips/colour/im_LabQ2disp.c: * 	- LUT build split into separate function
libvips/colour/im_LabQ2disp.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_LabQ2disp.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_LabQ2disp.c:		/* Scale to 0-63.
libvips/colour/im_LabQ2disp.c:                q[0] = cal->red[t];
libvips/colour/im_LabQ2disp.c:                q[1] = cal->green[t];
libvips/colour/im_LabQ2disp.c:                q[2] = cal->blue[t];
libvips/colour/im_LabQ2disp.c:/* Build Lab->disp tables. 
libvips/colour/im_LabQ2disp.c:        cal->disp = d;
libvips/colour/im_LabQ2disp.c:                                im_col_XYZ2rgb( cal->disp, 
libvips/colour/im_LabQ2disp.c:                                cal->red[t] = rb;
libvips/colour/im_LabQ2disp.c:                                cal->green[t] = gb;
libvips/colour/im_LabQ2disp.c:                                cal->blue[t] = bb;
libvips/colour/im_LabQ2disp.c:		return( -1 );
libvips/colour/im_LabQ2disp.c:                return( -1 );
libvips/colour/im_LabQ2disp.c:        out->Bands = 3;
libvips/colour/im_LabQ2disp.c:        out->BandFmt = IM_BANDFMT_UCHAR;
libvips/colour/im_LabQ2disp.c:        out->Coding = IM_CODING_NONE;
libvips/colour/im_LabQ2disp.c:        out->Type = IM_TYPE_RGB;
libvips/colour/im_LabQ2disp.c:                return( -1 );
libvips/colour/im_LabQ2disp.c:		return( -1 );
libvips/colour/derived.c: *	- horrible error killed im_dE_fromXYZ() and im_dE_fromdisp()
libvips/colour/derived.c: *	- sRGB added
libvips/colour/derived.c: *	- minor reformatting
libvips/colour/derived.c: * 	- gtkdoc comments
libvips/colour/derived.c: * 	- minor cleanups
libvips/colour/derived.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/derived.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/derived.c: * Returns: 0 on success, -1 on error.
libvips/colour/derived.c:		return( -1 );
libvips/colour/derived.c: * Returns: 0 on success, -1 on error.
libvips/colour/derived.c:		return( -1 );
libvips/colour/derived.c: * Returns: 0 on success, -1 on error.
libvips/colour/derived.c:		return( -1 );
libvips/colour/derived.c: * Returns: 0 on success, -1 on error.
libvips/colour/derived.c:		return( -1 );
libvips/colour/derived.c: * Returns: 0 on success, -1 on error.
libvips/colour/derived.c:		return( -1 );
libvips/colour/derived.c: * Returns: 0 on success, -1 on error.
libvips/colour/derived.c:		return( -1 );
libvips/colour/derived.c:	out->Type = IM_TYPE_sRGB;
libvips/colour/derived.c: * Returns: 0 on success, -1 on error.
libvips/colour/derived.c:		return( -1 );
libvips/colour/derived.c: * Returns: 0 on success, -1 on error.
libvips/colour/derived.c:		return( -1 );
libvips/colour/im_dE00_fromLab.c: *	- from dECMC
libvips/colour/im_dE00_fromLab.c: * 	- add im__colour_binary() and use it
libvips/colour/im_dE00_fromLab.c: * 	- gtkdoc comment
libvips/colour/im_dE00_fromLab.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_dE00_fromLab.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_dE00_fromLab.c:		return( -1 );
libvips/colour/im_dE00_fromLab.c:		return( -1 );
libvips/colour/im_dE00_fromLab.c:	out->Bands = 1;
libvips/colour/im_dE00_fromLab.c:	out->Type = IM_TYPE_B_W;
libvips/colour/im_dE00_fromLab.c:		return( -1 );
libvips/colour/im_dE00_fromLab.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_Lab2LabQ.c: * this is an image wrapper which calls line-wise packing
libvips/colour/im_Lab2LabQ.c: *	- adapted for partial v2
libvips/colour/im_Lab2LabQ.c: *	- some nint->+0.5, for speed and to ease portability
libvips/colour/im_Lab2LabQ.c: *	- other nint->rint
libvips/colour/im_Lab2LabQ.c: *	- now inclues <math.h>!
libvips/colour/im_Lab2LabQ.c: *	- all nint(), rint() removed for speed
libvips/colour/im_Lab2LabQ.c: *	- now -128 rather than -127 for a, b
libvips/colour/im_Lab2LabQ.c: *	- checks input type properly
libvips/colour/im_Lab2LabQ.c: *	- uses new im_wrap_oneonebuf()
libvips/colour/im_Lab2LabQ.c: *	- changed L to scale by 10.24, not 10.23
libvips/colour/im_Lab2LabQ.c: *	- now uses IM_RINT() for rounding
libvips/colour/im_Lab2LabQ.c: *	- L* = 100.0 now allowed
libvips/colour/im_Lab2LabQ.c: *	- go int earlier for speed up
libvips/colour/im_Lab2LabQ.c: *	- oops, were not clipping a/b range correctly
libvips/colour/im_Lab2LabQ.c: *	- gtkdoc
libvips/colour/im_Lab2LabQ.c: *	- cleanups
libvips/colour/im_Lab2LabQ.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/im_Lab2LabQ.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/im_Lab2LabQ.c:		 * does not matter, since L is >0. L*=100.0 -> 1023.
libvips/colour/im_Lab2LabQ.c:		lsbs = (intv & 0x3) << 6;       /* 00000011 -> 11000000 */
libvips/colour/im_Lab2LabQ.c:		else if( intv < -1024 )
libvips/colour/im_Lab2LabQ.c:			intv = -1024;
libvips/colour/im_Lab2LabQ.c:		lsbs |= (intv & 0x7) << 3;      /* 00000111 -> 00111000 */
libvips/colour/im_Lab2LabQ.c:		else if( intv < -1024 )
libvips/colour/im_Lab2LabQ.c:			intv = -1024;
libvips/colour/im_Lab2LabQ.c: * Convert a Lab three-band float image to LabQ (#IM_CODING_LABQ).
libvips/colour/im_Lab2LabQ.c: * Returns: 0 on success, -1 on error.
libvips/colour/im_Lab2LabQ.c:		return( -1 );
libvips/colour/im_Lab2LabQ.c:		return( -1 );
libvips/colour/im_Lab2LabQ.c:	out->Bands = 4;
libvips/colour/im_Lab2LabQ.c:	out->Type = IM_TYPE_LAB;
libvips/colour/im_Lab2LabQ.c:	out->BandFmt = IM_BANDFMT_UCHAR;
libvips/colour/im_Lab2LabQ.c:	out->Coding = IM_CODING_LABQ;
libvips/colour/im_Lab2LabQ.c:		return( -1 );
libvips/colour/colour.c: * Code by: DS, JC, J-Ph.L.
libvips/colour/colour.c: *	- final tidies before v7 release
libvips/colour/colour.c: *	- ANSIfied
libvips/colour/colour.c: *	- code for samples removed
libvips/colour/colour.c: *	- nint() -> rint() to make ANSI easier
libvips/colour/colour.c: *	- new display characterisation
libvips/colour/colour.c: *	- speed-up to im_col_XYZ2rgb() and im_col_rgb2XYZ()
libvips/colour/colour.c: *	- new display profile for ultra2
libvips/colour/colour.c: *	- new sRGB profile
libvips/colour/colour.c: *	- error_exit() removed, now clips
libvips/colour/colour.c: * 	- tiny clean-up for calcul_tables()
libvips/colour/colour.c: * 	- some reformatting
libvips/colour/colour.c: * 	- tiny cleanup for make_hI() prevents cond jump on ui in valgrind
libvips/colour/colour.c: * 	- more tiny cond jump valgrind fixes
libvips/colour/colour.c: * 	- gtkdoc comments
libvips/colour/colour.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/colour/colour.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/colour/colour.c:	float dL = L1 - L2;
libvips/colour/colour.c:	float da = a1 - a2;
libvips/colour/colour.c:	float db = b1 - b2;
libvips/colour/colour.c:		Lucs = (c1 * log( L ) + c2 * L - c3);
libvips/colour/colour.c:			Ll[ i ] = (c1 * log( L ) + c2 * L - c3);
libvips/colour/colour.c:		LI[i] = (j-1)/10.0 + (i/10.0-Ll[j-1]) / ((Ll[j]-Ll[j-1])*10.0);
libvips/colour/colour.c:	return( LI[known] + (LI[known+1]-LI[known])*(Lucs*10.0-known) );
libvips/colour/colour.c:		CI[i] = (j - 1) / 10.0 + 
libvips/colour/colour.c:			(i / 10.0 - Cl[j - 1]) / ((Cl[j] - Cl[j - 1]) * 10.0);
libvips/colour/colour.c:	return( CI[known] + (CI[known+1]-CI[known])*(Cucs*10.0-known) );
libvips/colour/colour.c:		k5 = -134.5;
libvips/colour/colour.c:		k6 = -.924;
libvips/colour/colour.c:		k5 = -12.7;
libvips/colour/colour.c:		k6 = -.218;
libvips/colour/colour.c:		k8 = -83.0;
libvips/colour/colour.c:			k5 = -134.5;
libvips/colour/colour.c:			k6 = -.924;
libvips/colour/colour.c:			k5 = -12.7;
libvips/colour/colour.c:			k6 = -.218;
libvips/colour/colour.c:			k8 = -83.0;
libvips/colour/colour.c:			hI[j][i] = k - 1 + (i - hl[j][k - 1]) / 
libvips/colour/colour.c:				(hl[j][k] - hl[j][k - 1]);
libvips/colour/colour.c:		(hI[r][(known + 1) % 360] - hI[r][known]) * (hucs - known) );
libvips/colour/colour.c:		made_ucs_tables = -1;
libvips/colour/colour.c: * Luo, Cui, Rigg, "The Development of the CIE 2000 Colour-Difference 
libvips/colour/colour.c:		double L1 = 116 * nY1 - 16;
libvips/colour/colour.c:		double a1 = 500 * (nX1 - nY1);
libvips/colour/colour.c:		double b1 = 200 * (nY1 - nZ1);
libvips/colour/colour.c:		double L2 = 116 * nY2 - 16;
libvips/colour/colour.c:		double a2 = 500 * (nX2 - nY2);
libvips/colour/colour.c:		double b2 = 200 * (nY2 - nZ2);
libvips/colour/colour.c:	double G = 0.5 * (1 - sqrt( Cb7 / (Cb7 + pow( 25, 7 )) ));
libvips/colour/colour.c:	double hdb = fabs( h1d - h2d ) < 180 ?
libvips/colour/colour.c:	 	fabs( h1d + h2d - 360 ) / 2;
libvips/colour/colour.c:	double hdbd = (hdb - 275) / 25;
libvips/colour/colour.c:	double dtheta = 30 * exp( -(hdbd * hdbd) );
libvips/colour/colour.c:	double RT = -sin( IM_RAD( 2 * dtheta ) ) * RC;
libvips/colour/colour.c:	double T = 1 - 
libvips/colour/colour.c:		0.17 * cos( IM_RAD( hdb - 30 ) ) +
libvips/colour/colour.c:		0.32 * cos( IM_RAD( 3 * hdb + 6 ) ) -
libvips/colour/colour.c:		0.20 * cos( IM_RAD( 4 * hdb - 63 ) );
libvips/colour/colour.c:	double Ldb50 = Ldb - 50;
libvips/colour/colour.c:	double dhd = fabs( h1d - h2d ) < 180 ?
libvips/colour/colour.c:		h1d - h2d :
libvips/colour/colour.c:		360 - (h1d - h2d);
libvips/colour/colour.c:	double dLd = L1d - L2d;
libvips/colour/colour.c:	double dCd = C1d - C2d;
libvips/mask/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/mask/im_matinv.c: * @(#) it in the place of *mat.  Returns -1 on error.  Scale and offset
libvips/mask/im_matinv.c: * Written on: 2006-09-08
libvips/mask/im_matinv.c: *  - page 43-45 of numerical recipes in C 1998
libvips/mask/im_matinv.c: * 2006-09-08 tcv:
libvips/mask/im_matinv.c: *  - complete rewrite; algorithm unchanged
libvips/mask/im_matinv.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mask/im_matinv.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mask/im_matinv.c:#define MATRIX( mask, i, j )   ( (mask)-> coeff[ (j) + (i) * (mask)-> xsize ] )
libvips/mask/im_matinv.c: * represent the row-wise permutations made by the permuatation matrix P.
libvips/mask/im_matinv.c: * Computing, 2nd ed.  Cambridge: Cambridge University Press, pp. 43-50.
libvips/mask/im_matinv.c:  if( mat-> xsize != mat-> ysize ){
libvips/mask/im_matinv.c:    im_error( FUNCTION_NAME, "non-square matrix" );
libvips/mask/im_matinv.c:#define   N   ( mat -> xsize )
libvips/mask/im_matinv.c:  /* copy all coefficients and then perform decomposition in-place */
libvips/mask/im_matinv.c:  memcpy( lu-> coeff, mat-> coeff, N * N * sizeof( double ) );
libvips/mask/im_matinv.c:#define   perm            ( lu-> coeff + N * N )
libvips/mask/im_matinv.c:    double max= -1.0;
libvips/mask/im_matinv.c:    /* loop over ROWS in upper-half, except diagonal */
libvips/mask/im_matinv.c:        LU( i, j )-= LU( i, k ) * LU( k, j );
libvips/mask/im_matinv.c:    /* loop over ROWS in diagonal and lower-half */     
libvips/mask/im_matinv.c:        LU( i, j )-= LU( i, k ) * LU( k, j );
libvips/mask/im_matinv.c:      im_error( FUNCTION_NAME, "singular or near-singular matrix" );
libvips/mask/im_matinv.c:      /* no need to copy this scale back up - we won't use it */
libvips/mask/im_matinv.c:  if( lu-> xsize + 1 != lu-> ysize ){
libvips/mask/im_matinv.c:    return -1;
libvips/mask/im_matinv.c:#define   N            ( lu -> xsize )
libvips/mask/im_matinv.c:#define   perm         ( lu-> coeff + N * N )
libvips/mask/im_matinv.c:      vec[ i ]-= LU( i, j ) * vec [ j ];
libvips/mask/im_matinv.c:  for( i= N - 1; i >= 0; --i ){
libvips/mask/im_matinv.c:      vec[ i ]-= LU( i, j ) * vec [ j ];
libvips/mask/im_matinv.c:  if( mat-> xsize != mat-> ysize ){
libvips/mask/im_matinv.c:    im_error( FUNCTION_NAME, "non-square matrix" );
libvips/mask/im_matinv.c:#define   N                ( mat -> xsize )
libvips/mask/im_matinv.c:  if( mat-> xsize != mat-> ysize ){
libvips/mask/im_matinv.c:    im_error( FUNCTION_NAME, "non-square matrix" );
libvips/mask/im_matinv.c:    return -1;
libvips/mask/im_matinv.c:#define   N                ( mat -> xsize )
libvips/mask/im_matinv.c:      return -1;
libvips/mask/im_matinv.c:      to_return= -1;
libvips/mask/im_matinv.c:    memcpy( mat-> coeff + i * size, matrix[ i ], size * sizeof( double ) );
libvips/mask/im_matinv.c:      memcpy( matrix[ i ], mat-> coeff + i * size, size * sizeof( double ) );
libvips/mask/im_matinv.c:#define   N                ( lu-> xsize )
libvips/mask/im_matinv.c:    return -1;
libvips/mask/im_matinv.c:  inv-> scale= 1.0;
libvips/mask/im_matinv.c:  inv-> offset= 0.0;
libvips/mask/im_matinv.c:#define   N                ( mat -> xsize )
libvips/mask/im_matinv.c:  inv-> scale= 1.0;
libvips/mask/im_matinv.c:  inv-> offset= 0.0;
libvips/mask/im_matinv.c:        im_error( function_name, "singular or near-singular matrix" );
libvips/mask/im_matinv.c:        return -1;
libvips/mask/im_matinv.c:      double det= MAT( 0, 0 ) * MAT( 1, 1 ) - MAT( 0, 1 ) * MAT( 1, 0 );
libvips/mask/im_matinv.c:        im_error( function_name, "singular or near-singular matrix" );
libvips/mask/im_matinv.c:        return -1;
libvips/mask/im_matinv.c:      INV( 0, 1 )= -MAT( 0, 1 ) / det;
libvips/mask/im_matinv.c:      INV( 1, 0 )= -MAT( 1, 0 ) / det;
libvips/mask/im_matinv.c:      double det= MAT( 0, 0 ) * ( MAT( 1, 1 ) * MAT( 2, 2 ) - MAT( 1, 2 ) * MAT( 2, 1 ) ) 
libvips/mask/im_matinv.c:                - MAT( 0, 1 ) * ( MAT( 1, 0 ) * MAT( 2, 2 ) - MAT( 1, 2 ) * MAT( 2, 0 ) ) 
libvips/mask/im_matinv.c:                + MAT( 0, 2 ) * ( MAT( 1, 0 ) * MAT( 2, 1 ) - MAT( 1, 1 ) * MAT( 2, 0 ) );
libvips/mask/im_matinv.c:        im_error( function_name, "singular or near-singular matrix" );
libvips/mask/im_matinv.c:        return -1;
libvips/mask/im_matinv.c:      INV( 0, 0 )= ( MAT( 1, 1 ) * MAT( 2, 2 ) - MAT( 1, 2 ) * MAT( 2, 1 ) ) / det;
libvips/mask/im_matinv.c:      INV( 0, 1 )= ( MAT( 0, 2 ) * MAT( 2, 1 ) - MAT( 0, 1 ) * MAT( 2, 2 ) ) / det;
libvips/mask/im_matinv.c:      INV( 0, 2 )= ( MAT( 0, 1 ) * MAT( 1, 2 ) - MAT( 0, 2 ) * MAT( 1, 1 ) ) / det;
libvips/mask/im_matinv.c:      INV( 1, 0 )= ( MAT( 1, 2 ) * MAT( 2, 0 ) - MAT( 1, 0 ) * MAT( 2, 2 ) ) / det;
libvips/mask/im_matinv.c:      INV( 1, 1 )= ( MAT( 0, 0 ) * MAT( 2, 2 ) - MAT( 0, 2 ) * MAT( 2, 0 ) ) / det;
libvips/mask/im_matinv.c:      INV( 1, 2 )= ( MAT( 0, 2 ) * MAT( 1, 0 ) - MAT( 0, 0 ) * MAT( 1, 2 ) ) / det;
libvips/mask/im_matinv.c:      INV( 2, 0 )= ( MAT( 1, 0 ) * MAT( 2, 1 ) - MAT( 1, 1 ) * MAT( 2, 0 ) ) / det;
libvips/mask/im_matinv.c:      INV( 2, 1 )= ( MAT( 0, 1 ) * MAT( 2, 0 ) - MAT( 0, 0 ) * MAT( 2, 1 ) ) / det;
libvips/mask/im_matinv.c:      INV( 2, 2 )= ( MAT( 0, 0 ) * MAT( 1, 1 ) - MAT( 0, 1 ) * MAT( 1, 0 ) ) / det;
libvips/mask/im_matinv.c:      return -1;
libvips/mask/mask_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mask/mask_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mask/mask_dispatch.c:	if( !(out->mask = 
libvips/mask/mask_dispatch.c:		im_matinv( in->mask, out->name )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(out->mask = 
libvips/mask/mask_dispatch.c:		im_mattrn( in->mask, out->name )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(out->mask = 
libvips/mask/mask_dispatch.c:		im_matcat( in1->mask, in2->mask, out->name )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(out->mask = 
libvips/mask/mask_dispatch.c:		im_matmul( in1->mask, in2->mask, out->name )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mo->mask = im_read_dmask( argv[0] )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mo->mask = 
libvips/mask/mask_dispatch.c:		im_gauss_dmask( mo->name, sigma, min_amp )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mo->mask = 
libvips/mask/mask_dispatch.c:		im_gauss_imask( mo->name, sigma, min_amp )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mo->mask = 
libvips/mask/mask_dispatch.c:		im_gauss_imask_sep( mo->name, sigma, min_amp )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mo->mask = 
libvips/mask/mask_dispatch.c:		im_log_imask( mo->name, sigma, min_amp )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mo->mask = 
libvips/mask/mask_dispatch.c:		im_log_dmask( mo->name, sigma, min_amp )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mout->mask = im_rotate_imask45( min->mask, mout->name )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mout->mask = im_rotate_imask90( min->mask, mout->name )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mout->mask = im_rotate_dmask45( min->mask, mout->name )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:	if( !(mout->mask = im_rotate_dmask90( min->mask, mout->name )) )
libvips/mask/mask_dispatch.c:		return( -1 );
libvips/mask/mask_dispatch.c:  *( (int*) argv[1] )= ( (INTMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> xsize;
libvips/mask/mask_dispatch.c:  *( (int*) argv[1] )= ( (INTMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> ysize;
libvips/mask/mask_dispatch.c:  *( (int*) argv[1] )= ( (DOUBLEMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> xsize;
libvips/mask/mask_dispatch.c:  *( (int*) argv[1] )= ( (DOUBLEMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> ysize;
libvips/mask/matalloc.c: * @(#) pages 705- of numerical recipes in C 1998
libvips/mask/matalloc.c:#define TINY	1.0e-200
libvips/mask/matalloc.c:	v = (int *)im_malloc(NULL,(unsigned)(nh - nl + 1) * sizeof(int));
libvips/mask/matalloc.c:		return(v-nl);
libvips/mask/matalloc.c:	v = (float *)im_malloc(NULL,(unsigned)(nh - nl + 1) * sizeof(float));
libvips/mask/matalloc.c:		return(v-nl);
libvips/mask/matalloc.c:	v = (double *)im_malloc(NULL,(unsigned)(nh - nl + 1) * sizeof(double));
libvips/mask/matalloc.c:		return(v-nl);
libvips/mask/matalloc.c:	m = (int**)im_malloc(NULL,(unsigned)(nrh-nrl+1) * sizeof(int *));
libvips/mask/matalloc.c:	m -= nrl;
libvips/mask/matalloc.c:		m[i] = (int *)im_malloc(NULL,(unsigned) (nch-ncl+1) * sizeof(int));
libvips/mask/matalloc.c:		m[i] -= ncl;
libvips/mask/matalloc.c:	for (i=nrh; i>=nrl; i--)
libvips/mask/matalloc.c:	m = (float**)im_malloc(NULL,(unsigned)(nrh-nrl+1) * sizeof(float *));
libvips/mask/matalloc.c:	m -= nrl;
libvips/mask/matalloc.c:		m[i] = (float *)im_malloc(NULL,(unsigned) (nch-ncl+1) * sizeof(float));
libvips/mask/matalloc.c:		m[i] -= ncl;
libvips/mask/matalloc.c:	for (i=nrh; i>=nrl; i--)
libvips/mask/matalloc.c:	m = (double**)im_malloc(NULL,(unsigned)(nrh-nrl+1) * sizeof(double *));
libvips/mask/matalloc.c:	m -= nrl;
libvips/mask/matalloc.c:		m[i] = (double *)im_malloc(NULL,(unsigned) (nch-ncl+1) * sizeof(double));
libvips/mask/matalloc.c:		m[i] -= ncl;
libvips/mask/matalloc.c:	for (i=nrh; i>=nrl; i--)
libvips/mask/rotmask.c: * @(#) Returns an int pointer to valid offsets on sucess and -1 on error
libvips/mask/rotmask.c: * @(#) Returns an int pointer to valid offsets on sucess and -1 on error
libvips/mask/rotmask.c: *	- small revisions, needs rewriting really
libvips/mask/rotmask.c: *	- absolutely foul desp code revised
libvips/mask/rotmask.c: *	- many bugs and mem leaks fixed
libvips/mask/rotmask.c: *	- oops, fns were not preserving scale and offset
libvips/mask/rotmask.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mask/rotmask.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mask/rotmask.c:	cpnt1 = pnt; cpnt2 = pnt + size2 - 1;
libvips/mask/rotmask.c:		*cpnt2-- = size2 - 1 - temp;
libvips/mask/rotmask.c:			temp -= (size-1);
libvips/mask/rotmask.c:			*cpnt2-- = size2 - 1 - temp;
libvips/mask/rotmask.c:		for( x = 0; x < size_2 - y; x++ ) {
libvips/mask/rotmask.c:			temp -= size;
libvips/mask/rotmask.c:			*cpnt2-- = size2 - 1 - temp;
libvips/mask/rotmask.c:		for( x = 0; x < size_2 - y; x++ ) {
libvips/mask/rotmask.c:			*cpnt2-- = size2 - 1 - temp;
libvips/mask/rotmask.c:			temp -= ( size - 1 );
libvips/mask/rotmask.c:			*cpnt2-- = size2 - 1 - temp;
libvips/mask/rotmask.c:	temp = size * (size - 1);
libvips/mask/rotmask.c:		temp -= (size-1);
libvips/mask/rotmask.c:		temp = size * (size - 1) + y;
libvips/mask/rotmask.c:			temp -= size;
libvips/mask/rotmask.c:/* Tye pf offset-generating function.
libvips/mask/rotmask.c:	int size = m->xsize * m->ysize;
libvips/mask/rotmask.c:	if( m->xsize != m->ysize || (m->xsize % 2) == 0 ) {
libvips/mask/rotmask.c:	if( !(offsets = fn( m->xsize )) )
libvips/mask/rotmask.c:	if( !(out = im_create_dmask( name, m->xsize, m->ysize )) ) {
libvips/mask/rotmask.c:	out->scale = m->scale;
libvips/mask/rotmask.c:	out->offset = m->offset;
libvips/mask/rotmask.c:		out->coeff[i] = m->coeff[offsets[i]];
libvips/mask/rotmask.c:	int size = m->xsize * m->ysize;
libvips/mask/rotmask.c:	if( m->xsize != m->ysize || (m->xsize % 2) == 0 ) {
libvips/mask/rotmask.c:	if( !(offsets = fn( m->xsize )) )
libvips/mask/rotmask.c:	if( !(out = im_create_imask( name, m->xsize, m->ysize )) ) {
libvips/mask/rotmask.c:	out->scale = m->scale;
libvips/mask/rotmask.c:	out->offset = m->offset;
libvips/mask/rotmask.c:		out->coeff[i] = m->coeff[offsets[i]];
libvips/mask/im_matmul.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mask/im_matmul.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mask/im_matmul.c:	if( in1->xsize != in2->ysize ) {
libvips/mask/im_matmul.c:	if( !(mat = im_create_dmask( name, in2->xsize, in1->ysize )) ) {
libvips/mask/im_matmul.c:	out = mat->coeff;
libvips/mask/im_matmul.c:	s1 = in1->coeff;
libvips/mask/im_matmul.c:	for( yc = 0; yc < in1->ysize; yc++ ) {
libvips/mask/im_matmul.c:		s2 = in2->coeff;
libvips/mask/im_matmul.c:		for( col = 0; col < in2->xsize; col++ ) {
libvips/mask/im_matmul.c:			for( sum = 0.0, xc = 0; xc < in1->xsize; xc++ ) {
libvips/mask/im_matmul.c:				b += in2->xsize;
libvips/mask/im_matmul.c:		s1 += in1->xsize;
libvips/mask/im_gaussmasks.c: *	- ansified, mem leaks plugged
libvips/mask/im_gaussmasks.c: *	- mask too large check added
libvips/mask/im_gaussmasks.c: * 	- bumped max mask size *40
libvips/mask/im_gaussmasks.c: * 	- added _sep variant
libvips/mask/im_gaussmasks.c: * 	- set scale in _sep variant, why not
libvips/mask/im_gaussmasks.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mask/im_gaussmasks.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mask/im_gaussmasks.c:		temp = exp( - ((double)(x * x))/sig2 );
libvips/mask/im_gaussmasks.c:			cfs[k] = exp( -distance / sig2 );
libvips/mask/im_gaussmasks.c:	mc = m->coeff + offset;
libvips/mask/im_gaussmasks.c:			pt2 = mc - (y * xm) + x;
libvips/mask/im_gaussmasks.c:			pt3 = mc + (y * xm) - x; 
libvips/mask/im_gaussmasks.c:			pt4 = mc - (y * xm) - x;
libvips/mask/im_gaussmasks.c:	for( k = 0, y = 0; y < m->ysize; y++ )
libvips/mask/im_gaussmasks.c:		for( x = 0; x < m->xsize; x++, k++ )
libvips/mask/im_gaussmasks.c:			sum += m->coeff[k];
libvips/mask/im_gaussmasks.c:	m->scale = sum;
libvips/mask/im_gaussmasks.c:	m->offset = 0.0;
libvips/mask/im_gaussmasks.c:	if( !(im = im_scale_dmask( dm, dm->filename )) ) {
libvips/mask/im_gaussmasks.c:	if( !(im2 = im_create_imask( filename, im->xsize, 1 )) ) {
libvips/mask/im_gaussmasks.c:	for( i = 0; i < im->xsize; i++ ) {
libvips/mask/im_gaussmasks.c:		im2->coeff[i] = im->coeff[i + im->xsize * (im->ysize / 2)];
libvips/mask/im_gaussmasks.c:		sum += im2->coeff[i];
libvips/mask/im_gaussmasks.c:	im2->scale = sum;
libvips/mask/im_matcat.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mask/im_matcat.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mask/im_matcat.c:	if( in1->xsize != in2->xsize ) {
libvips/mask/im_matcat.c:	newxsize = in1->xsize;
libvips/mask/im_matcat.c:	newysize = in1->ysize + in2->ysize;
libvips/mask/im_matcat.c:	memcpy( mat->coeff, in1->coeff, 
libvips/mask/im_matcat.c:		in1->xsize * in1->ysize * sizeof( double ) );
libvips/mask/im_matcat.c:	out = mat->coeff + in1->xsize * in1->ysize;
libvips/mask/im_matcat.c:	memcpy( out, in2->coeff, 
libvips/mask/im_matcat.c:		in2->xsize * in2->ysize * sizeof( double ) );
libvips/mask/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/mask/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/mask/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/mask/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/mask/Makefile.in:am__mv = mv -f
libvips/mask/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/mask/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/mask/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/mask/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/mask/Makefile.in:	$(LDFLAGS) -o $@
libvips/mask/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/mask/Makefile.in:all: all-am
libvips/mask/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/mask/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/mask/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/mask/Makefile'; \
libvips/mask/Makefile.in:	  $(AUTOMAKE) --gnu libvips/mask/Makefile
libvips/mask/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/mask/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/mask/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/mask/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/mask/Makefile.in:clean-noinstLTLIBRARIES:
libvips/mask/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/mask/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/mask/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/mask/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/mask/Makefile.in:mostlyclean-compile:
libvips/mask/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/mask/Makefile.in:distclean-compile:
libvips/mask/Makefile.in:	-rm -f *.tab.c
libvips/mask/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/mask/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/mask/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/mask/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/mask/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/mask/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/mask/Makefile.in:mostlyclean-libtool:
libvips/mask/Makefile.in:	-rm -f *.lo
libvips/mask/Makefile.in:clean-libtool:
libvips/mask/Makefile.in:	-rm -rf .libs _libs
libvips/mask/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/mask/Makefile.in:	mkid -fID $$unique
libvips/mask/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/mask/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/mask/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/mask/Makefile.in:	  if test $$# -gt 0; then \
libvips/mask/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/mask/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/mask/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/mask/Makefile.in:distclean-tags:
libvips/mask/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/mask/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/mask/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/mask/Makefile.in:			   sort -u` ;; \
libvips/mask/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/mask/Makefile.in:	  if test -d $$d/$$file; then \
libvips/mask/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/mask/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/mask/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/mask/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/mask/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/mask/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/mask/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/mask/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/mask/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/mask/Makefile.in:check-am: all-am
libvips/mask/Makefile.in:check: check-am
libvips/mask/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/mask/Makefile.in:install: install-am
libvips/mask/Makefile.in:install-exec: install-exec-am
libvips/mask/Makefile.in:install-data: install-data-am
libvips/mask/Makefile.in:uninstall: uninstall-am
libvips/mask/Makefile.in:install-am: all-am
libvips/mask/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/mask/Makefile.in:installcheck: installcheck-am
libvips/mask/Makefile.in:install-strip:
libvips/mask/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/mask/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/mask/Makefile.in:mostlyclean-generic:
libvips/mask/Makefile.in:clean-generic:
libvips/mask/Makefile.in:distclean-generic:
libvips/mask/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/mask/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/mask/Makefile.in:maintainer-clean-generic:
libvips/mask/Makefile.in:clean: clean-am
libvips/mask/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/mask/Makefile.in:	mostlyclean-am
libvips/mask/Makefile.in:distclean: distclean-am
libvips/mask/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/mask/Makefile.in:	-rm -f Makefile
libvips/mask/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/mask/Makefile.in:	distclean-tags
libvips/mask/Makefile.in:dvi: dvi-am
libvips/mask/Makefile.in:dvi-am:
libvips/mask/Makefile.in:html: html-am
libvips/mask/Makefile.in:html-am:
libvips/mask/Makefile.in:info: info-am
libvips/mask/Makefile.in:info-am:
libvips/mask/Makefile.in:install-data-am:
libvips/mask/Makefile.in:install-dvi: install-dvi-am
libvips/mask/Makefile.in:install-dvi-am:
libvips/mask/Makefile.in:install-exec-am:
libvips/mask/Makefile.in:install-html: install-html-am
libvips/mask/Makefile.in:install-html-am:
libvips/mask/Makefile.in:install-info: install-info-am
libvips/mask/Makefile.in:install-info-am:
libvips/mask/Makefile.in:install-man:
libvips/mask/Makefile.in:install-pdf: install-pdf-am
libvips/mask/Makefile.in:install-pdf-am:
libvips/mask/Makefile.in:install-ps: install-ps-am
libvips/mask/Makefile.in:install-ps-am:
libvips/mask/Makefile.in:installcheck-am:
libvips/mask/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/mask/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/mask/Makefile.in:	-rm -f Makefile
libvips/mask/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/mask/Makefile.in:mostlyclean: mostlyclean-am
libvips/mask/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/mask/Makefile.in:	mostlyclean-libtool
libvips/mask/Makefile.in:pdf: pdf-am
libvips/mask/Makefile.in:pdf-am:
libvips/mask/Makefile.in:ps: ps-am
libvips/mask/Makefile.in:ps-am:
libvips/mask/Makefile.in:uninstall-am:
libvips/mask/Makefile.in:.MAKE: install-am install-strip
libvips/mask/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/mask/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/mask/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/mask/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/mask/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/mask/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/mask/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/mask/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/mask/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/mask/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/mask/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/mask/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/mask/im_logmasks.c: *	- ansified, mem leaks plugged
libvips/mask/im_logmasks.c: *	- mask too large check added
libvips/mask/im_logmasks.c: *	- ahem, was broken since '96, thanks matt
libvips/mask/im_logmasks.c: *	- makes mask out to zero, not out to minimum, thanks again matt
libvips/mask/im_logmasks.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mask/im_logmasks.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mask/im_logmasks.c:	/* Stop used-before-set warnings.
libvips/mask/im_logmasks.c:		 * by Young and Fu AP 1986 pp 220-221
libvips/mask/im_logmasks.c:			(2.0 - (distance / sig2)) * 
libvips/mask/im_logmasks.c:			exp( (-1.0) * distance / (2.0 * sig2) )
libvips/mask/im_logmasks.c:			(2.0 - (distance / sig2)) * 
libvips/mask/im_logmasks.c:			exp( -distance / (2.0 * sig2) );
libvips/mask/im_logmasks.c:			fabs( val - last ) < min_ampl ) 
libvips/mask/im_logmasks.c:				(2.0 - (distance / sig2)) *
libvips/mask/im_logmasks.c:				exp( -distance / (2.0 * sig2) );
libvips/mask/im_logmasks.c:	mc = m->coeff + offset;
libvips/mask/im_logmasks.c:			pt2 = mc - (y * xm) + x;
libvips/mask/im_logmasks.c:			pt3 = mc + (y * xm) - x; 
libvips/mask/im_logmasks.c:			pt4 = mc - (y * xm) - x;
libvips/mask/im_logmasks.c:	for( k = 0, y = 0; y < m->ysize; y++ )
libvips/mask/im_logmasks.c:		for( x = 0; x < m->xsize; x++, k++ )
libvips/mask/im_logmasks.c:			sum += m->coeff[k];
libvips/mask/im_logmasks.c:	m->scale = sum;
libvips/mask/im_logmasks.c:	m->offset = 0.0;
libvips/mask/im_logmasks.c:	if( !(im = im_scale_dmask( dm, dm->filename )) ) {
libvips/mask/rw_mask.c: *    -	Mask reading routines no longer fail if scale and offset are missing.
libvips/mask/rw_mask.c: *    - Code tidied up, better error recovery.
libvips/mask/rw_mask.c: *    -	Bugs fixed in im_dup_*mask. No longer coredump.
libvips/mask/rw_mask.c: *    -	Bugs fixed in im_write_*mask. Now work for non-square matricies.
libvips/mask/rw_mask.c: *    -	im_copy_*mask_matrix, im_copy_matrix_*mask added: copy VIPS mask 
libvips/mask/rw_mask.c: *	to size-1.
libvips/mask/rw_mask.c: *    - some ANSIfication and tidies
libvips/mask/rw_mask.c: *    -	im_free_*mask() now return zero, so they can be used as close
libvips/mask/rw_mask.c: *    - new IM_NEW(), IM_ARRAY() macros added
libvips/mask/rw_mask.c: *    -	oops! forgot to init IM_ARRAY() memory to zero
libvips/mask/rw_mask.c: *    - im_scale_dmask rewritten
libvips/mask/rw_mask.c: *    - im_read_*mask() rewritten, now more robust
libvips/mask/rw_mask.c: *    - im_write_*mask() rewritten
libvips/mask/rw_mask.c: *    - new functions im_write_*mask_name()
libvips/mask/rw_mask.c: *    -	im_create_imaskv(), im_create_dmaskv() make masks and init from
libvips/mask/rw_mask.c: *    - tabs allowed as column separators
libvips/mask/rw_mask.c: *    - "," allowed as column separator ... helps CSV read
libvips/mask/rw_mask.c: *    - use g_ascii_strtod() and friends
libvips/mask/rw_mask.c: * 2006-09-08 tcv
libvips/mask/rw_mask.c: *    - add im_norm_dmask()
libvips/mask/rw_mask.c: * 	- move im_print_*mask() here
libvips/mask/rw_mask.c: * 	- reading a float mask with im_read_imask() produced an incorrect 
libvips/mask/rw_mask.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mask/rw_mask.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mask/rw_mask.c:	if( m->coeff )
libvips/mask/rw_mask.c:		im_free( m->coeff );
libvips/mask/rw_mask.c:	if( m->filename )
libvips/mask/rw_mask.c:		im_free( m->filename );
libvips/mask/rw_mask.c:	if( m->coeff )
libvips/mask/rw_mask.c:		im_free( m->coeff );
libvips/mask/rw_mask.c:	if( m->filename )
libvips/mask/rw_mask.c:		im_free( m->filename );
libvips/mask/rw_mask.c:	m->coeff = NULL;
libvips/mask/rw_mask.c:	m->filename = NULL;
libvips/mask/rw_mask.c:	m->scale = 1;
libvips/mask/rw_mask.c:	m->offset = 0;
libvips/mask/rw_mask.c:	m->xsize = 0;
libvips/mask/rw_mask.c:	m->ysize = 0;
libvips/mask/rw_mask.c:	if( !(m->coeff = IM_ARRAY( NULL, size, int )) ) {
libvips/mask/rw_mask.c:	(void) memset( (char *) m->coeff, 0, size * sizeof( int ) );
libvips/mask/rw_mask.c:	if( !(m->filename = im_strdup( NULL, filename )) ) {
libvips/mask/rw_mask.c:	m->xsize = xs; m->ysize = ys;
libvips/mask/rw_mask.c:		m->coeff[i] = va_arg( ap, int );
libvips/mask/rw_mask.c:	m->coeff = NULL;
libvips/mask/rw_mask.c:	m->filename = NULL;
libvips/mask/rw_mask.c:	m->scale = 1.0;
libvips/mask/rw_mask.c:	m->offset = 0.0;
libvips/mask/rw_mask.c:	m->xsize = 0;
libvips/mask/rw_mask.c:	m->ysize = 0;
libvips/mask/rw_mask.c:	if( !(m->coeff = IM_ARRAY( NULL, size, double )) ) {
libvips/mask/rw_mask.c:	(void) memset( (char *) m->coeff, 0, size * sizeof( double ) );
libvips/mask/rw_mask.c:	if( !(m->filename = im_strdup( NULL, filename )) ) {
libvips/mask/rw_mask.c:	m->xsize = xs; m->ysize = ys;
libvips/mask/rw_mask.c:		m->coeff[i] = va_arg( ap, double );
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:			"%s", _( "scale should be non-zero" ) );
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:	m->scale = sc;
libvips/mask/rw_mask.c:	m->offset = off;
libvips/mask/rw_mask.c:			m->coeff[i] = g_ascii_strtod( p, NULL );
libvips/mask/rw_mask.c:	if( ceil( dmask->scale ) != dmask->scale || 
libvips/mask/rw_mask.c:		ceil( dmask->offset ) != dmask->offset ) {
libvips/mask/rw_mask.c:	for( i = 0; i < dmask->xsize * dmask->ysize; i++ ) 
libvips/mask/rw_mask.c:		if( ceil( dmask->coeff[i] ) != dmask->coeff[i] ) {
libvips/mask/rw_mask.c:				i % dmask->xsize,
libvips/mask/rw_mask.c:				i / dmask->xsize );
libvips/mask/rw_mask.c:		dmask->xsize, dmask->ysize )) ) {
libvips/mask/rw_mask.c:	imask->scale = dmask->scale;
libvips/mask/rw_mask.c:	imask->offset = dmask->offset;
libvips/mask/rw_mask.c:	for( i = 0; i < dmask->xsize * dmask->ysize; i++ ) 
libvips/mask/rw_mask.c:		imask->coeff[i] = dmask->coeff[i];
libvips/mask/rw_mask.c:	const int size = m->xsize * m->ysize;
libvips/mask/rw_mask.c:	if( !name || m->xsize <= 0 || m->ysize <= 0 ) {
libvips/mask/rw_mask.c:	if( !(out = im_create_imask( name, m->xsize, m->ysize )) )
libvips/mask/rw_mask.c:	maxval = m->coeff[0];
libvips/mask/rw_mask.c:		if( m->coeff[i] > maxval )
libvips/mask/rw_mask.c:			maxval = m->coeff[i];
libvips/mask/rw_mask.c:		out->coeff[i] = IM_RINT( m->coeff[i] * 100.0 / maxval );
libvips/mask/rw_mask.c:	out->offset = m->offset;
libvips/mask/rw_mask.c:		isum += out->coeff[i]; 
libvips/mask/rw_mask.c:		dsum += m->coeff[i];
libvips/mask/rw_mask.c:	if( dsum == m->scale )
libvips/mask/rw_mask.c:		out->scale = isum;
libvips/mask/rw_mask.c:		out->scale = 1.0;
libvips/mask/rw_mask.c:		out->scale = IM_RINT( m->scale * isum / dsum );
libvips/mask/rw_mask.c:	const int n = mask->xsize * mask->ysize;
libvips/mask/rw_mask.c:	const double scale = (mask->scale == 0) ? 0 : (1.0 / mask->scale);
libvips/mask/rw_mask.c:	if( 1.0 == scale && 0.0 == mask->offset )
libvips/mask/rw_mask.c:		mask->coeff[i] = mask->coeff[i] * scale + mask->offset;
libvips/mask/rw_mask.c:	mask->scale = 1.0;
libvips/mask/rw_mask.c:	mask->offset = 0.0;
libvips/mask/rw_mask.c:	const int xs = m->xsize;
libvips/mask/rw_mask.c:	const int ys = m->ysize;
libvips/mask/rw_mask.c:        new->offset = m->offset; 
libvips/mask/rw_mask.c:	new->scale = m->scale;
libvips/mask/rw_mask.c:		new->coeff[i] = m->coeff[i];
libvips/mask/rw_mask.c:	int xs = m->xsize;
libvips/mask/rw_mask.c:	int ys = m->ysize;
libvips/mask/rw_mask.c:        new->offset = m->offset; 
libvips/mask/rw_mask.c:	new->scale = m->scale;
libvips/mask/rw_mask.c:        pnt1 = m->coeff;
libvips/mask/rw_mask.c:        pnt2 = new->coeff;
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:		m->xsize, m->ysize, m->scale, m->offset ) ) {
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:	for( i = 0, y = 0; y < m->ysize; y++ ) {
libvips/mask/rw_mask.c:		for( x = 0; x < m->xsize; x++, i++ ) 
libvips/mask/rw_mask.c:			if( write_line( fp, "%d ", m->coeff[i] ) ) {
libvips/mask/rw_mask.c:				return( -1 );
libvips/mask/rw_mask.c:			return( -1 );
libvips/mask/rw_mask.c:/* Write the INTMASK m into m->filename
libvips/mask/rw_mask.c:	if( !m->filename ) { 
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:	return( im_write_imask_name( m, m->filename ) );
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:	if( write_line( fp, "%d %d ", m->xsize, m->ysize ) ||
libvips/mask/rw_mask.c:		write_double( fp, m->scale ) ||
libvips/mask/rw_mask.c:		write_double( fp, m->offset ) ||
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:	for( i = 0, y = 0; y < m->ysize; y++ ) {
libvips/mask/rw_mask.c:		for( x = 0; x < m->xsize; x++, i++ ) 
libvips/mask/rw_mask.c:			if( write_double( fp, m->coeff[i] ) ||
libvips/mask/rw_mask.c:				return( -1 );
libvips/mask/rw_mask.c:			return( -1 );
libvips/mask/rw_mask.c:/* Write the DOUBLEMASK m into m->filename
libvips/mask/rw_mask.c:	if( !m->filename ) { 
libvips/mask/rw_mask.c:		return( -1 );
libvips/mask/rw_mask.c:	return( im_write_dmask_name( m, m->filename ) );
libvips/mask/rw_mask.c:	int *p = mask->coeff;
libvips/mask/rw_mask.c:	for( y = 0; y < mask->ysize; y++ )
libvips/mask/rw_mask.c:		for( x = 0; x < mask->xsize; x++ )
libvips/mask/rw_mask.c:	int *p = mask->coeff;
libvips/mask/rw_mask.c:	for( y = 0; y < mask->ysize; y++ )
libvips/mask/rw_mask.c:		for( x = 0; x < mask->xsize; x++ )
libvips/mask/rw_mask.c:	double *p = mask->coeff;
libvips/mask/rw_mask.c:	for( y = 0; y < mask->ysize; y++ )
libvips/mask/rw_mask.c:		for( x = 0; x < mask->xsize; x++ )
libvips/mask/rw_mask.c:	double *p = mask->coeff;
libvips/mask/rw_mask.c:	for( y = 0; y < mask->ysize; y++ )
libvips/mask/rw_mask.c:		for( x = 0; x < mask->xsize; x++ )
libvips/mask/rw_mask.c:	int *pm = m->coeff;
libvips/mask/rw_mask.c:		m->filename, m->xsize, m->ysize, m->scale, m->offset );
libvips/mask/rw_mask.c:        for( k = 0, j = 0; j < m->ysize; j++ ) {
libvips/mask/rw_mask.c:                for( i = 0; i < m->xsize; i++, k++ )
libvips/mask/rw_mask.c:	double *pm = m->coeff;
libvips/mask/rw_mask.c:		m->filename, m->xsize, m->ysize, m->scale, m->offset );
libvips/mask/rw_mask.c:        for( k = 0, j = 0; j < m->ysize; j++ ) {
libvips/mask/rw_mask.c:                for( i = 0; i < m->xsize; i++, k++ )
libvips/mask/im_mattrn.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/mask/im_mattrn.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/mask/im_mattrn.c:	if( !(mat = im_create_dmask( name, in->ysize, in->xsize )) ) {
libvips/mask/im_mattrn.c:	out = mat->coeff;
libvips/mask/im_mattrn.c:	a = in->coeff;
libvips/mask/im_mattrn.c:	for( yc = 0; yc < mat->ysize; yc++ ) {
libvips/mask/im_mattrn.c:		for( xc = 0; xc < mat->xsize; xc++ ) {
libvips/mask/im_mattrn.c:			b += in->xsize;
libvips/freq_filt/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/freq_filt/freq_dispatch.c: *	- oops, im_freqflt() was wrong
libvips/freq_filt/freq_dispatch.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/freq_dispatch.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/freq_dispatch.c: * @short_description: fourier transforms and frequency-domin filters
libvips/freq_filt/freq_dispatch.c: * @see_also: <link linkend="libvips-image">image</link>
libvips/freq_filt/freq_dispatch.c: * To and from Fourier space, filter in Fourier space, convert Fourier-space
libvips/freq_filt/freq_dispatch.c:	"frequency-domain filter of in with mask",
libvips/freq_filt/freq_dispatch.c:	"forward fast-fourier transform",
libvips/freq_filt/freq_dispatch.c:	"inverse fast-fourier transform",
libvips/freq_filt/freq_dispatch.c:	"real part of inverse fast-fourier transform",
libvips/freq_filt/freq_dispatch.c:	"non-normalised correlation of gradient of in2 within in1",
libvips/freq_filt/im_invfftr.c: *	- from im_invfft.c
libvips/freq_filt/im_invfftr.c: *	- oops, fix for segv on wider than high fftw transforms
libvips/freq_filt/im_invfftr.c: *	- added fftw3 support
libvips/freq_filt/im_invfftr.c: * 	- gtkdoc
libvips/freq_filt/im_invfftr.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/im_invfftr.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/im_invfftr.c:	IMAGE *cmplx = im_open_local( dummy, "invfft1-1", "t" );
libvips/freq_filt/im_invfftr.c:	IMAGE *real = im_open_local( out, "invfft1-2", "t" );
libvips/freq_filt/im_invfftr.c:	const int half_width = in->Xsize / 2 + 1;
libvips/freq_filt/im_invfftr.c:		in->Ysize * half_width * 2, double );
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:	if( in->Coding != IM_CODING_NONE || in->Bands != 1 ) {
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:	real->BandFmt = IM_BANDFMT_DOUBLE;
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:	/* Build half-complex image.
libvips/freq_filt/im_invfftr.c:	for( y = 0; y < cmplx->Ysize; y++ ) {
libvips/freq_filt/im_invfftr.c:		p = ((double *) cmplx->data) + y * in->Xsize * 2; 
libvips/freq_filt/im_invfftr.c:	if( !(plan = rfftw2d_create_plan( in->Ysize, in->Xsize,
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:		(fftw_complex *) half_complex, (fftw_real *) real->data );
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:	IMAGE *cmplx = im_open_local( dummy, "invfft1-1", "t" );
libvips/freq_filt/im_invfftr.c:	IMAGE *real = im_open_local( out, "invfft1-2", "t" );
libvips/freq_filt/im_invfftr.c:	const int half_width = in->Xsize / 2 + 1;
libvips/freq_filt/im_invfftr.c:		in->Ysize * half_width * 2, double );
libvips/freq_filt/im_invfftr.c:		in->Ysize * half_width * 2, double );
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:	if( in->Coding != IM_CODING_NONE || in->Bands != 1 ) {
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:	real->BandFmt = IM_BANDFMT_DOUBLE;
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:	/* Build half-complex image.
libvips/freq_filt/im_invfftr.c:	for( y = 0; y < cmplx->Ysize; y++ ) {
libvips/freq_filt/im_invfftr.c:		p = ((double *) cmplx->data) + y * in->Xsize * 2; 
libvips/freq_filt/im_invfftr.c:	if( !(plan = fftw_plan_dft_c2r_2d( in->Ysize, in->Xsize,
libvips/freq_filt/im_invfftr.c:		(fftw_complex *) planner_scratch, (double *) real->data,
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:		(fftw_complex *) half_complex, (double *) real->data );
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:/* Fall back to vips's built-in fft.
libvips/freq_filt/im_invfftr.c:	int bpx = im_ispoweroftwo( in->Xsize );
libvips/freq_filt/im_invfftr.c:	int bpy = im_ispoweroftwo( in->Ysize );
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:        if( in->Coding != IM_CODING_NONE || 
libvips/freq_filt/im_invfftr.c:		in->Bands != 1 || !im_iscomplex( in ) ) {
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:	/* Make sure we have a single-precision complex input image.
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:	if( im_c2imag( t1, t2 ) || im_lintra( -1.0, t2, 0.0, imag ) )
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:	if( im__fft_sp( (float *) real->data, (float *) imag->data, 
libvips/freq_filt/im_invfftr.c:		bpx - 1, bpy - 1 ) ) {
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:	out->BandFmt = IM_BANDFMT_FLOAT;
libvips/freq_filt/im_invfftr.c:                return( -1 );
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:	for( p1 = (float *) real->data, y = 0; y < out->Ysize; y++ ) {
libvips/freq_filt/im_invfftr.c:		for( x = 0; x < out->Xsize; x++ ) {
libvips/freq_filt/im_invfftr.c:			return( -1 );
libvips/freq_filt/im_invfftr.c: * Returns: 0 on success, -1 on error.
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:		return( -1 );
libvips/freq_filt/im_invfftr.c:	if( out->Bands == 1 )
libvips/freq_filt/im_invfftr.c:		out->Type = IM_TYPE_B_W;
libvips/freq_filt/im_invfftr.c:		out->Type = IM_TYPE_MULTIBAND;
libvips/freq_filt/fft_sp.c:/* fft -- fast fourier transform, adapted from 
libvips/freq_filt/fft_sp.c:**   two-dimensional arrays, (including copying columns
libvips/freq_filt/fft_sp.c:** performs a 2-dimensional fft where loglen is the log of the length of
libvips/freq_filt/fft_sp.c:** performs a 2-dimensional fft where logrows is the log of the number of
libvips/freq_filt/fft_sp.c:** performs a 1-dimensional fft on every skip-th entry
libvips/freq_filt/fft_sp.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/fft_sp.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/fft_sp.c:		return(-1);
libvips/freq_filt/fft_sp.c:	nv2=n >> 1 ; nm1=n-1 ; j=0 ;
libvips/freq_filt/fft_sp.c:			return(-1);
libvips/freq_filt/fft_sp.c:		wi = -sin(2*IM_PI/n);
libvips/freq_filt/fft_sp.c:			Const[i] = wr*Const[i-1] - wi*iConst[i-1];
libvips/freq_filt/fft_sp.c:			iConst[i] = wr*iConst[i-1] + wi*Const[i-1];
libvips/freq_filt/fft_sp.c:			j-=k ; k>>=1 ;
libvips/freq_filt/fft_sp.c:					return(-1);
libvips/freq_filt/fft_sp.c:					tr = *rvecj*Const[c] - *ivecj*iConst[c];
libvips/freq_filt/fft_sp.c:				*rvecj = *rveci - tr;
libvips/freq_filt/fft_sp.c:				*ivecj = *iveci - ti;
libvips/freq_filt/fft_sp.c:		if ( fftn(rvec+i,ivec+i,logcols,1) == -1) {
libvips/freq_filt/fft_sp.c:			return(-1);
libvips/freq_filt/fft_sp.c:		if ( fftn(rvec+i,ivec+i,logrows,cols) == -1) {
libvips/freq_filt/fft_sp.c:			return(-1);
libvips/freq_filt/im_fwfft.c: *	- rewritten to use im_clip2f() rather than own code
libvips/freq_filt/im_fwfft.c: * 	- memory leaks fixed
libvips/freq_filt/im_fwfft.c: *	- frees memory more quickly
libvips/freq_filt/im_fwfft.c: *	- fftw code added
libvips/freq_filt/im_fwfft.c: *	- output Type set to IM_TYPE_FOURIER to help nip
libvips/freq_filt/im_fwfft.c: *	- exploits real_to_complex() path in libfftw for real input (thanks
libvips/freq_filt/im_fwfft.c: *	  Matt) for a 2x speed-up
libvips/freq_filt/im_fwfft.c: *	- fix a segv for wider than high images in the real_to_complex() path
libvips/freq_filt/im_fwfft.c: *	- fixes to real_to_complex() path to give the correct result for
libvips/freq_filt/im_fwfft.c: *	  non-square images, including odd widths and heights
libvips/freq_filt/im_fwfft.c: *	- added fftw3 support
libvips/freq_filt/im_fwfft.c: * 	- cleanups
libvips/freq_filt/im_fwfft.c: * 	- gtkdoc
libvips/freq_filt/im_fwfft.c: * 	- have a "t" image linked to out to keep the image alive for longer
libvips/freq_filt/im_fwfft.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/im_fwfft.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/im_fwfft.c:	const int size = in->Xsize * in->Ysize;
libvips/freq_filt/im_fwfft.c:	const int half_width = in->Xsize / 2 + 1;
libvips/freq_filt/im_fwfft.c:		in->Ysize * half_width * 2, double );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	if( in->Coding != IM_CODING_NONE || in->Bands != 1 ) {
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:	if( !(plan = rfftw2d_create_plan( in->Ysize, in->Xsize,
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:		(fftw_real *) real->data, (fftw_complex *) half_complex );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:	out->BandFmt = IM_BANDFMT_DPCOMPLEX;
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	p = half_complex + ((in->Xsize + 1) / 2 - 1) * 2; 
libvips/freq_filt/im_fwfft.c:	for( x = half_width; x < out->Xsize; x++ ) {
libvips/freq_filt/im_fwfft.c:		q[1] = -1.0 * p[1] / size;
libvips/freq_filt/im_fwfft.c:		p -= 2;
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	for( y = 1; y < out->Ysize; y++ ) {
libvips/freq_filt/im_fwfft.c:			((out->Ysize - y + 1) * half_width - 2 + 
libvips/freq_filt/im_fwfft.c:				(in->Xsize & 1));
libvips/freq_filt/im_fwfft.c:		for( x = half_width; x < out->Xsize; x++ ) {
libvips/freq_filt/im_fwfft.c:			q[1] = -1.0 * p[1] / size;
libvips/freq_filt/im_fwfft.c:			p -= 2;
libvips/freq_filt/im_fwfft.c:			return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	if( in->Coding != IM_CODING_NONE || in->Bands != 1 ) {
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:	if( !(plan = fftw2d_create_plan( in->Ysize, in->Xsize,
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	fftwnd_one( plan, (fftw_complex *) cmplx->data, NULL );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:	out->BandFmt = IM_BANDFMT_DPCOMPLEX;
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	for( p = (double *) cmplx->data, y = 0; y < out->Ysize; y++ ) {
libvips/freq_filt/im_fwfft.c:		int size = out->Xsize * out->Ysize;
libvips/freq_filt/im_fwfft.c:		for( x = 0; x < out->Xsize; x++ ) {
libvips/freq_filt/im_fwfft.c:			return( -1 );
libvips/freq_filt/im_fwfft.c:	const int size = in->Xsize * in->Ysize;
libvips/freq_filt/im_fwfft.c:	const int half_width = in->Xsize / 2 + 1;
libvips/freq_filt/im_fwfft.c:		in->Ysize * half_width * 2, double );
libvips/freq_filt/im_fwfft.c:		in->Xsize * in->Ysize, double );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	if( in->Coding != IM_CODING_NONE || in->Bands != 1 ) {
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:	 * planner, we can't overwrite real->data
libvips/freq_filt/im_fwfft.c:	if( !(plan = fftw_plan_dft_r2c_2d( in->Ysize, in->Xsize,
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:		(double *) real->data, (fftw_complex *) half_complex );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:	out->BandFmt = IM_BANDFMT_DPCOMPLEX;
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	p = half_complex + ((in->Xsize + 1) / 2 - 1) * 2; 
libvips/freq_filt/im_fwfft.c:	for( x = half_width; x < out->Xsize; x++ ) {
libvips/freq_filt/im_fwfft.c:		q[1] = -1.0 * p[1] / size;
libvips/freq_filt/im_fwfft.c:		p -= 2;
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	for( y = 1; y < out->Ysize; y++ ) {
libvips/freq_filt/im_fwfft.c:			((out->Ysize - y + 1) * half_width - 2 + 
libvips/freq_filt/im_fwfft.c:				(in->Xsize & 1));
libvips/freq_filt/im_fwfft.c:		for( x = half_width; x < out->Xsize; x++ ) {
libvips/freq_filt/im_fwfft.c:			q[1] = -1.0 * p[1] / size;
libvips/freq_filt/im_fwfft.c:			p -= 2;
libvips/freq_filt/im_fwfft.c:			return( -1 );
libvips/freq_filt/im_fwfft.c:		in->Xsize * in->Ysize * 2, double );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	if( in->Coding != IM_CODING_NONE || in->Bands != 1 ) {
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:	if( !(plan = fftw_plan_dft_2d( in->Ysize, in->Xsize,
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:		(fftw_complex *) cmplx->data, (fftw_complex *) cmplx->data );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:	out->BandFmt = IM_BANDFMT_DPCOMPLEX;
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	for( p = (double *) cmplx->data, y = 0; y < out->Ysize; y++ ) {
libvips/freq_filt/im_fwfft.c:		int size = out->Xsize * out->Ysize;
libvips/freq_filt/im_fwfft.c:		for( x = 0; x < out->Xsize; x++ ) {
libvips/freq_filt/im_fwfft.c:			return( -1 );
libvips/freq_filt/im_fwfft.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) )
libvips/freq_filt/im_fwfft.c:/* Transform a 1 band image with vips's built-in fft routine.
libvips/freq_filt/im_fwfft.c:	int size = in->Xsize * in->Ysize;
libvips/freq_filt/im_fwfft.c:	int bpx = im_ispoweroftwo( in->Xsize );
libvips/freq_filt/im_fwfft.c:	int bpy = im_ispoweroftwo( in->Ysize );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:        if( in->Coding != IM_CODING_NONE || in->Bands != 1 || 
libvips/freq_filt/im_fwfft.c:			"%s", _( "one band non-complex uncoded only" ) );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	if( im_black( t1, in->Xsize, in->Ysize, 1 ) )
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	if( im__fft_sp( (float *) real->data, (float *) imag->data, 
libvips/freq_filt/im_fwfft.c:		bpx - 1, bpy - 1 ) ) {
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:	out->BandFmt = IM_BANDFMT_COMPLEX;
libvips/freq_filt/im_fwfft.c:                return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	for( p1 = (float *) real->data, p2 = (float *) imag->data,
libvips/freq_filt/im_fwfft.c:		y = 0; y < out->Ysize; y++ ) {
libvips/freq_filt/im_fwfft.c:		for( x = 0; x < out->Xsize; x++ ) {
libvips/freq_filt/im_fwfft.c:			return( -1 );
libvips/freq_filt/im_fwfft.c:/* Transform an n-band image with a 1-band processing function.
libvips/freq_filt/im_fwfft.c:	if( in->Bands == 1 ) 
libvips/freq_filt/im_fwfft.c:	if( !(bands = IM_ARRAY( dummy, in->Bands, IMAGE * )) ||
libvips/freq_filt/im_fwfft.c:		!(fft = IM_ARRAY( dummy, in->Bands, IMAGE * )) ||
libvips/freq_filt/im_fwfft.c:		im_open_local_array( dummy, bands, in->Bands, "bands", "p" ) ||
libvips/freq_filt/im_fwfft.c:		im_open_local_array( dummy, fft, in->Bands, "fft", "p" ) )
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	for( b = 0; b < in->Bands; b++ ) 
libvips/freq_filt/im_fwfft.c:			return( -1 );
libvips/freq_filt/im_fwfft.c:		im_gbandjoin( fft, t, in->Bands ) ||
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c: * Returns: 0 on success, -1 on error.
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:		return( -1 );
libvips/freq_filt/im_fwfft.c:	out->Type = IM_TYPE_FOURIER;
libvips/freq_filt/im_invfft.c: *	- rewritten, based on new im_fwfft() code
libvips/freq_filt/im_invfft.c: *	- frees memory more quickly
libvips/freq_filt/im_invfft.c: *	- fftw code added
libvips/freq_filt/im_invfft.c: *	- Type reset
libvips/freq_filt/im_invfft.c: *	- tiny speed-up ... save 1 copy on write
libvips/freq_filt/im_invfft.c: *	- oops, fix for segv on wider than high fftw transforms
libvips/freq_filt/im_invfft.c: *	- added fftw3 support
libvips/freq_filt/im_invfft.c: * 	- gtkdoc
libvips/freq_filt/im_invfft.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/im_invfft.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:	if( in->Coding != IM_CODING_NONE || in->Bands != 1 ) {
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:	if( !(plan = fftw2d_create_plan( in->Ysize, in->Xsize,
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:	fftwnd_one( plan, (fftw_complex *) cmplx->data, NULL );
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:		in->Xsize * in->Ysize * 2, double );
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:	if( in->Coding != IM_CODING_NONE || in->Bands != 1 ) {
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:	if( !(plan = fftw_plan_dft_2d( in->Ysize, in->Xsize,
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:		(fftw_complex *) cmplx->data, (fftw_complex *) cmplx->data );
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:/* Fall back to VIPS's built-in fft
libvips/freq_filt/im_invfft.c:	int bpx = im_ispoweroftwo( in->Xsize );
libvips/freq_filt/im_invfft.c:	int bpy = im_ispoweroftwo( in->Ysize );
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:        if( in->Coding != IM_CODING_NONE || 
libvips/freq_filt/im_invfft.c:		in->Bands != 1 || !im_iscomplex( in ) ) {
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:	/* Make sure we have a single-precision complex input image.
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:	if( im_c2imag( t1, t2 ) || im_lintra( -1.0, t2, 0.0, imag ) )
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:	if( im__fft_sp( (float *) real->data, (float *) imag->data, 
libvips/freq_filt/im_invfft.c:		bpx - 1, bpy - 1 ) ) {
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:	out->BandFmt = IM_BANDFMT_COMPLEX;
libvips/freq_filt/im_invfft.c:                return( -1 );
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:	for( p1 = (float *) real->data, p2 = (float *) imag->data,
libvips/freq_filt/im_invfft.c:		y = 0; y < out->Ysize; y++ ) {
libvips/freq_filt/im_invfft.c:		for( x = 0; x < out->Xsize; x++ ) {
libvips/freq_filt/im_invfft.c:			return( -1 );
libvips/freq_filt/im_invfft.c: * Returns: 0 on success, -1 on error.
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:		return( -1 );
libvips/freq_filt/im_invfft.c:	if( out->Bands == 1 )
libvips/freq_filt/im_invfft.c:		out->Type = IM_TYPE_B_W;
libvips/freq_filt/im_invfft.c:		out->Type = IM_TYPE_MULTIBAND;
libvips/freq_filt/im_freq_mask.c: *	- modernised 
libvips/freq_filt/im_freq_mask.c: * 	- gtkdoc
libvips/freq_filt/im_freq_mask.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/im_freq_mask.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/im_freq_mask.c:	if( !(line = IM_ARRAY( out, out->Xsize, float )) )
libvips/freq_filt/im_freq_mask.c:		return( -1 );
libvips/freq_filt/im_freq_mask.c:	hxsplus1 = out->Xsize/2 + 1;
libvips/freq_filt/im_freq_mask.c:        for( y = 0; y < out->Ysize/2; y++ ) {
libvips/freq_filt/im_freq_mask.c:                for( x = 0; x < out->Xsize/2; x++ )
libvips/freq_filt/im_freq_mask.c:                for( x = out->Xsize/2; x < out->Xsize; x++ )
libvips/freq_filt/im_freq_mask.c:                        *cpline++ = *cpcoeff--;
libvips/freq_filt/im_freq_mask.c:                        return( -1 );
libvips/freq_filt/im_freq_mask.c:        for( y = out->Ysize/2; y < out->Ysize; y++ ) {
libvips/freq_filt/im_freq_mask.c:                cpcoeff = coeff; coeff -= hxsplus1;
libvips/freq_filt/im_freq_mask.c:                for( x = 0; x < out->Xsize/2; x++ )
libvips/freq_filt/im_freq_mask.c:                for( x = out->Xsize/2; x < out->Xsize; x++ )
libvips/freq_filt/im_freq_mask.c:                        *cpline++ = *cpcoeff--;
libvips/freq_filt/im_freq_mask.c:                        return( -1 );
libvips/freq_filt/im_freq_mask.c:		return( -1 );
libvips/freq_filt/im_freq_mask.c:                return( -1 );
libvips/freq_filt/im_freq_mask.c:			return( -1 );
libvips/freq_filt/im_freq_mask.c:			return( -1 );
libvips/freq_filt/im_freq_mask.c:	       return( -1 );
libvips/freq_filt/im_freq_mask.c: * Returns: 0 on success, -1 on error
libvips/freq_filt/im_freq_mask.c:		return( -1 );
libvips/freq_filt/im_freq_mask.c:        if( build_freq_mask( mask, in->Xsize, in->Ysize, flag, ap ) )
libvips/freq_filt/im_freq_mask.c:                return( -1 );
libvips/freq_filt/im_freq_mask.c:                return( -1 );
libvips/freq_filt/im_freq_mask.c: * This operation creates a one-band float image of the specified size. The
libvips/freq_filt/im_freq_mask.c: * <emphasis>High-pass, low-pass masks:</emphasis> A high pass filter 
libvips/freq_filt/im_freq_mask.c: * <emphasis>Ring-pass, ring-reject masks:</emphasis> A ring filter passes or
libvips/freq_filt/im_freq_mask.c: * <emphasis>Band-pass, band-reject masks:</emphasis> These masks are used to
libvips/freq_filt/im_freq_mask.c: * Returns: 0 on success, -1 on error
libvips/freq_filt/im_freq_mask.c:		return( -1 );
libvips/freq_filt/im_rotquad.c: *	- now works for any type, any number of bands.
libvips/freq_filt/im_rotquad.c: *	- uses bcopy instead of a loop: mucho faster.
libvips/freq_filt/im_rotquad.c: * now uses memcpy - for Sys5 compat K.Martinez 29/4/92
libvips/freq_filt/im_rotquad.c: *	- some ANSIfication
libvips/freq_filt/im_rotquad.c: *	- some more modernisation
libvips/freq_filt/im_rotquad.c: *	- redone in term of extract()/insert(), for great partialisation
libvips/freq_filt/im_rotquad.c: *	- sets Xoffset / Yoffset
libvips/freq_filt/im_rotquad.c: * 	- redone in terms of im_wrap()
libvips/freq_filt/im_rotquad.c: * 	- gtkdoc
libvips/freq_filt/im_rotquad.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/im_rotquad.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/im_rotquad.c: * top-left is now in the centre. Handy for moving Fourier images to optical
libvips/freq_filt/im_rotquad.c: * Returns: 0 on success, -1 on error
libvips/freq_filt/im_rotquad.c:	return( im_wrap( in, out, in->Xsize / 2, in->Ysize / 2 ) );
libvips/freq_filt/im_fractsurf.c: *	 - modernised, a little
libvips/freq_filt/im_fractsurf.c: * 	- cleanups
libvips/freq_filt/im_fractsurf.c: * 	- gtkdoc
libvips/freq_filt/im_fractsurf.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/im_fractsurf.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/im_fractsurf.c: * Returns: 0 on success, -1 on error.
libvips/freq_filt/im_fractsurf.c:		return( -1 );
libvips/freq_filt/im_fractsurf.c:		return( -1 );
libvips/freq_filt/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/freq_filt/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/freq_filt/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/freq_filt/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvips/freq_filt/Makefile.in:am__mv = mv -f
libvips/freq_filt/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/freq_filt/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvips/freq_filt/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvips/freq_filt/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
libvips/freq_filt/Makefile.in:	$(LDFLAGS) -o $@
libvips/freq_filt/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 
libvips/freq_filt/Makefile.in:all: all-am
libvips/freq_filt/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/freq_filt/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/freq_filt/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/freq_filt/Makefile'; \
libvips/freq_filt/Makefile.in:	  $(AUTOMAKE) --gnu libvips/freq_filt/Makefile
libvips/freq_filt/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/freq_filt/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/freq_filt/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/freq_filt/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/freq_filt/Makefile.in:clean-noinstLTLIBRARIES:
libvips/freq_filt/Makefile.in:	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
libvips/freq_filt/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvips/freq_filt/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvips/freq_filt/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvips/freq_filt/Makefile.in:mostlyclean-compile:
libvips/freq_filt/Makefile.in:	-rm -f *.$(OBJEXT)
libvips/freq_filt/Makefile.in:distclean-compile:
libvips/freq_filt/Makefile.in:	-rm -f *.tab.c
libvips/freq_filt/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/freq_filt/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
libvips/freq_filt/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvips/freq_filt/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
libvips/freq_filt/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvips/freq_filt/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
libvips/freq_filt/Makefile.in:mostlyclean-libtool:
libvips/freq_filt/Makefile.in:	-rm -f *.lo
libvips/freq_filt/Makefile.in:clean-libtool:
libvips/freq_filt/Makefile.in:	-rm -rf .libs _libs
libvips/freq_filt/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/freq_filt/Makefile.in:	mkid -fID $$unique
libvips/freq_filt/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/freq_filt/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/freq_filt/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/freq_filt/Makefile.in:	  if test $$# -gt 0; then \
libvips/freq_filt/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/freq_filt/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/freq_filt/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/freq_filt/Makefile.in:distclean-tags:
libvips/freq_filt/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/freq_filt/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/freq_filt/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/freq_filt/Makefile.in:			   sort -u` ;; \
libvips/freq_filt/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/freq_filt/Makefile.in:	  if test -d $$d/$$file; then \
libvips/freq_filt/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/freq_filt/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/freq_filt/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/freq_filt/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/freq_filt/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/freq_filt/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/freq_filt/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/freq_filt/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/freq_filt/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/freq_filt/Makefile.in:check-am: all-am
libvips/freq_filt/Makefile.in:check: check-am
libvips/freq_filt/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvips/freq_filt/Makefile.in:install: install-am
libvips/freq_filt/Makefile.in:install-exec: install-exec-am
libvips/freq_filt/Makefile.in:install-data: install-data-am
libvips/freq_filt/Makefile.in:uninstall: uninstall-am
libvips/freq_filt/Makefile.in:install-am: all-am
libvips/freq_filt/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/freq_filt/Makefile.in:installcheck: installcheck-am
libvips/freq_filt/Makefile.in:install-strip:
libvips/freq_filt/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/freq_filt/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/freq_filt/Makefile.in:mostlyclean-generic:
libvips/freq_filt/Makefile.in:clean-generic:
libvips/freq_filt/Makefile.in:distclean-generic:
libvips/freq_filt/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/freq_filt/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/freq_filt/Makefile.in:maintainer-clean-generic:
libvips/freq_filt/Makefile.in:clean: clean-am
libvips/freq_filt/Makefile.in:clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
libvips/freq_filt/Makefile.in:	mostlyclean-am
libvips/freq_filt/Makefile.in:distclean: distclean-am
libvips/freq_filt/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/freq_filt/Makefile.in:	-rm -f Makefile
libvips/freq_filt/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvips/freq_filt/Makefile.in:	distclean-tags
libvips/freq_filt/Makefile.in:dvi: dvi-am
libvips/freq_filt/Makefile.in:dvi-am:
libvips/freq_filt/Makefile.in:html: html-am
libvips/freq_filt/Makefile.in:html-am:
libvips/freq_filt/Makefile.in:info: info-am
libvips/freq_filt/Makefile.in:info-am:
libvips/freq_filt/Makefile.in:install-data-am:
libvips/freq_filt/Makefile.in:install-dvi: install-dvi-am
libvips/freq_filt/Makefile.in:install-dvi-am:
libvips/freq_filt/Makefile.in:install-exec-am:
libvips/freq_filt/Makefile.in:install-html: install-html-am
libvips/freq_filt/Makefile.in:install-html-am:
libvips/freq_filt/Makefile.in:install-info: install-info-am
libvips/freq_filt/Makefile.in:install-info-am:
libvips/freq_filt/Makefile.in:install-man:
libvips/freq_filt/Makefile.in:install-pdf: install-pdf-am
libvips/freq_filt/Makefile.in:install-pdf-am:
libvips/freq_filt/Makefile.in:install-ps: install-ps-am
libvips/freq_filt/Makefile.in:install-ps-am:
libvips/freq_filt/Makefile.in:installcheck-am:
libvips/freq_filt/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/freq_filt/Makefile.in:	-rm -rf ./$(DEPDIR)
libvips/freq_filt/Makefile.in:	-rm -f Makefile
libvips/freq_filt/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/freq_filt/Makefile.in:mostlyclean: mostlyclean-am
libvips/freq_filt/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvips/freq_filt/Makefile.in:	mostlyclean-libtool
libvips/freq_filt/Makefile.in:pdf: pdf-am
libvips/freq_filt/Makefile.in:pdf-am:
libvips/freq_filt/Makefile.in:ps: ps-am
libvips/freq_filt/Makefile.in:ps-am:
libvips/freq_filt/Makefile.in:uninstall-am:
libvips/freq_filt/Makefile.in:.MAKE: install-am install-strip
libvips/freq_filt/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/freq_filt/Makefile.in:	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
libvips/freq_filt/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
libvips/freq_filt/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
libvips/freq_filt/Makefile.in:	install install-am install-data install-data-am install-dvi \
libvips/freq_filt/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
libvips/freq_filt/Makefile.in:	install-html-am install-info install-info-am install-man \
libvips/freq_filt/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
libvips/freq_filt/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/freq_filt/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/freq_filt/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvips/freq_filt/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am
libvips/freq_filt/im_disp_ps.c: *	- im_ioflag() changed to im_iocheck()
libvips/freq_filt/im_disp_ps.c: *	- rewritten for partials
libvips/freq_filt/im_disp_ps.c: *	- frees memory more quickly
libvips/freq_filt/im_disp_ps.c: *	- any number of bands
libvips/freq_filt/im_disp_ps.c: * 	- gtkdoc
libvips/freq_filt/im_disp_ps.c: * 	- cleanups
libvips/freq_filt/im_disp_ps.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/im_disp_ps.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/im_disp_ps.c:		return( -1 );
libvips/freq_filt/im_disp_ps.c:	if( in->BandFmt != IM_BANDFMT_COMPLEX ) {
libvips/freq_filt/im_disp_ps.c:			return( -1 );
libvips/freq_filt/im_disp_ps.c:		return( -1 );
libvips/freq_filt/im_disp_ps.c: * Make a displayable (ie. 8-bit unsigned int) power spectrum. 
libvips/freq_filt/im_disp_ps.c: * If @in is non-complex, it is transformed to Fourier space. Then the
libvips/freq_filt/im_disp_ps.c: * Returns: 0 on success, -1 on error.
libvips/freq_filt/im_disp_ps.c:		return( -1 );
libvips/freq_filt/im_disp_ps.c:		return( -1 );
libvips/freq_filt/fmask4th.c: * @(#)  0 -\> idealhpf, parameters: frequency cutoff
libvips/freq_filt/fmask4th.c: * @(#)  1 -\> ideallpf, parameters: frequency cutoff
libvips/freq_filt/fmask4th.c: * @(#)  2 -\> buthpf, parameters: order, frequency cutoff, amplitude cutoff
libvips/freq_filt/fmask4th.c: * @(#)  3 -\> butlpf, parameters: order, frequency cutoff, amplitude cutoff
libvips/freq_filt/fmask4th.c: * @(#)  4 -\> gaussianlpf, parameters: frequency cutoff, amplitude cutoff
libvips/freq_filt/fmask4th.c: * @(#)  5 -\> gaussianhpf, parameters: frequency cutoff, amplitude cutoff
libvips/freq_filt/fmask4th.c: * @(#)  6 -\> idealrpf, parameters: frequency cutoff, width
libvips/freq_filt/fmask4th.c: * @(#)  7 -\> idealrrf, parameters: frequency cutoff, width
libvips/freq_filt/fmask4th.c: * @(#)  8 -\> butrpf, parameters: order, freq cutoff, width, ampl cutoff
libvips/freq_filt/fmask4th.c: * @(#)  9 -\> butrrf, parameters: order, freq cutoff, width, ampl cutoff
libvips/freq_filt/fmask4th.c: * @(#)  10 -\> gaussianrpf, parameters: frequency cutoff, width, ampl cutoff
libvips/freq_filt/fmask4th.c: * @(#)  11 -\> gaussianrrf, parameters: frequency cutoff, width, ampl cutoff
libvips/freq_filt/fmask4th.c: * @(#)  18 -> fractal, parameters: fractal dimension
libvips/freq_filt/fmask4th.c: *	- modernised
libvips/freq_filt/fmask4th.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/fmask4th.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/fmask4th.c:		return( -1 );
libvips/freq_filt/fmask4th.c:	cnst = (1.0 / ac) - 1.0;
libvips/freq_filt/fmask4th.c:	cnst = (1.0/ac) - 1.0;
libvips/freq_filt/fmask4th.c:	cnst = -log( ac );
libvips/freq_filt/fmask4th.c:			*cpcoeff++ = 1.0 - exp( -cnst * distance2 );
libvips/freq_filt/fmask4th.c:	cnst = -log( ac );
libvips/freq_filt/fmask4th.c:			*cpcoeff++ =  exp( - cnst * distance2 );
libvips/freq_filt/fmask4th.c:/* The band is a RING of internal radius fc-df and external radius fc+df*/
libvips/freq_filt/fmask4th.c:	if( fc <= 1.0 && df < 1.0 && fc - df > 0.0 ) { 
libvips/freq_filt/fmask4th.c:		radius1_2 = (fc-df)*(fc-df); 
libvips/freq_filt/fmask4th.c:	else if( fc - df > 1.0 && df >= 1.0 && fc <= xs/2 ) {
libvips/freq_filt/fmask4th.c:		radius1_2 = (fc - df) * (fc - df) * 4.0 / ((double)(xs * xs));
libvips/freq_filt/fmask4th.c:/* The band is a RING of internal radius fc-df and external radius fc+df*/
libvips/freq_filt/fmask4th.c:	if( fc <= 1.0 && df < 1.0 && fc - df > 0.0 ) { 
libvips/freq_filt/fmask4th.c:		radius1_2 = (fc-df)*(fc-df); 
libvips/freq_filt/fmask4th.c:	else if( fc - df > 1.0 && df >= 1.0 && fc <= xs/2 ) {
libvips/freq_filt/fmask4th.c:		radius1_2 = (fc - df) * (fc - df) * 4.0 / ((double)(xs * xs));
libvips/freq_filt/fmask4th.c:/* The band is a RING of internal radius fc-df and external radius fc+df*/
libvips/freq_filt/fmask4th.c:	if( fc <= 1.0 && df < 1.0 && fc-df > 0.0 ) { 
libvips/freq_filt/fmask4th.c:	else if( fc - df > 1.0 && df >= 1.0 && fc <= xs/2 ) { 
libvips/freq_filt/fmask4th.c:	cnst = (1.0/ac) - 1.0;
libvips/freq_filt/fmask4th.c:					pow( (d-nfc)*(d-nfc)/ndf2, order ));
libvips/freq_filt/fmask4th.c:/* The band is a RING of internal radius fc-df and external radius fc+df*/
libvips/freq_filt/fmask4th.c:	if( fc <= 1.0 && df < 1.0 && fc-df > 0.0 ) { 
libvips/freq_filt/fmask4th.c:	else if( fc - df > 1.0 && df >= 1.0 && fc <= xs/2 ) { 
libvips/freq_filt/fmask4th.c:	cnst = (1.0/ac) - 1.0;
libvips/freq_filt/fmask4th.c:					ndf2/((d-nfc)*(d-nfc)), order ));
libvips/freq_filt/fmask4th.c:/* The band is a RING of internal radius fc-df and external radius fc+df*/
libvips/freq_filt/fmask4th.c:	if( fc <= 1.0 && df < 1.0 && fc - df > 0.0 ) { 
libvips/freq_filt/fmask4th.c:	else if( fc - df > 1.0 && df >= 1.0 && fc <= xs/2 ) { 
libvips/freq_filt/fmask4th.c:	cnst = -log( ac );
libvips/freq_filt/fmask4th.c:			*cpcoeff++ = exp( -cnst * (d-nfc) * (d-nfc)/ndf2 );
libvips/freq_filt/fmask4th.c:/* The band is a RING of internal radius fc-df and external radius fc+df*/
libvips/freq_filt/fmask4th.c:	if( fc <= 1.0 && df < 1.0 && fc - df > 0.0 ) { 
libvips/freq_filt/fmask4th.c:	else if( fc - df > 1.0 && df >= 1.0 && fc <= xs/2 ) { 
libvips/freq_filt/fmask4th.c:	cnst = -log( ac );
libvips/freq_filt/fmask4th.c:			*cpcoeff++ = 1.0 - 
libvips/freq_filt/fmask4th.c:				exp( -cnst * (d-nfc) * (d-nfc) / ndf2 );
libvips/freq_filt/fmask4th.c: * or since beta=2*H + 1, beta= 7-2*D
libvips/freq_filt/fmask4th.c: * < |vsubk|^2 > decay as 1/( |f|^(8-2*D) )
libvips/freq_filt/fmask4th.c: * sqrt(fsubx*fsubx+fsuby*fsuby)^(D-4) or
libvips/freq_filt/fmask4th.c: * (fsubx*fsubx+fsuby*fsuby)^((D-4)/2) <--- This relation is used.
libvips/freq_filt/fmask4th.c: * On the other hand if D=3-H, the filtermask should decay as
libvips/freq_filt/fmask4th.c: * (fsubx*fsubx+fsuby*fsuby)^(-(H+1)/2) , 0<H<1
libvips/freq_filt/fmask4th.c:	cnst = (frdim - 4.0)/2.0;
libvips/freq_filt/fmask4th.c: * from -xsize/2 up to (xsize/2 - 1) inclusive and
libvips/freq_filt/fmask4th.c: * from -ysize/2  up to (ysize/2 - 1) inclusive
libvips/freq_filt/fmask4th.c:		/* High pass - low pass 
libvips/freq_filt/fmask4th.c:		/* Ring pass - ring reject.
libvips/freq_filt/im_phasecor_fft.c: * Written on: 2008-01-16
libvips/freq_filt/im_phasecor_fft.c: * 	- cleanups
libvips/freq_filt/im_phasecor_fft.c: * 	- gtkdoc
libvips/freq_filt/im_phasecor_fft.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/im_phasecor_fft.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/im_phasecor_fft.c: * Convert the two input images to Fourier space, calculate phase-correlation,
libvips/freq_filt/im_phasecor_fft.c: * Returns: 0 on success, -1 on error
libvips/freq_filt/im_phasecor_fft.c:		return( -1 );
libvips/freq_filt/fmaskcir.c: * @(#) 12 -\> idealbpf, parameters: frequency cutoff, width
libvips/freq_filt/fmaskcir.c: * @(#) 13 -\> idealbrf, parameters: frequency cutoff, width
libvips/freq_filt/fmaskcir.c: * @(#) 14 -\> butbpf, parameters: order, freq cutoff, width, ampl cutoff
libvips/freq_filt/fmaskcir.c: * @(#) 15 -\> butbrf, parameters: order, freq cutoff, width, ampl cutoff
libvips/freq_filt/fmaskcir.c: * @(#) 16 -\> gaussianbpf, parameters: frequency cutoff, width, ampl cutoff
libvips/freq_filt/fmaskcir.c: * @(#) 17 -\> gaussianbrf, parameters: frequency cutoff, width, ampl cutoff
libvips/freq_filt/fmaskcir.c: *	- modernised
libvips/freq_filt/fmaskcir.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/fmaskcir.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/fmaskcir.c: * xminus is the non scrambled distribution of (x-x0)*(x-x0) centred at 0
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:	/* if ys = 8 then y = {0,1,2,3,-4,-3,-2,-1}.
libvips/freq_filt/fmaskcir.c:		y[i+ys/2] = -ys/2 + i; 
libvips/freq_filt/fmaskcir.c:		x[i+xs/2] = -xs/2 + i; 
libvips/freq_filt/fmaskcir.c:	for( i = -ys/2; i < ys/2; i++ ) { 
libvips/freq_filt/fmaskcir.c:		pm[i] = (i - y0)*(i - y0); 
libvips/freq_filt/fmaskcir.c:	for( i = -xs/2; i < xs/2; i++ ) { 
libvips/freq_filt/fmaskcir.c:		pm[i] = (i-x0)*(i-x0); 
libvips/freq_filt/fmaskcir.c:/* at (fcx, fcy) and (-fcx, -fcy) 					*/
libvips/freq_filt/fmaskcir.c:	int xs = out->Xsize;
libvips/freq_filt/fmaskcir.c:	int ys = out->Ysize;
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:			return( -1 );
libvips/freq_filt/fmaskcir.c:/* The band is a CIRCLE of internal radius fc-df and external radius fc+df*/
libvips/freq_filt/fmaskcir.c:	int xs = out->Xsize;
libvips/freq_filt/fmaskcir.c:	int ys = out->Ysize;
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:			return( -1 );
libvips/freq_filt/fmaskcir.c:/* The band is two CIRCLES centred at (fcx, fcy) and (-fcx, -fcy)	*/
libvips/freq_filt/fmaskcir.c:	int xs = out->Xsize;
libvips/freq_filt/fmaskcir.c:	int ys = out->Ysize;
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:	/* Filter shape: radius d0, centres at (x0, y0), (-x0,-y0)
libvips/freq_filt/fmaskcir.c:	 * H(d) = cnst1/(1 + cnst2 * pow((d-d0)/d0, 2*order)) +
libvips/freq_filt/fmaskcir.c:	 * for d=+d0 H(+d0) = 1.0; for d=-d0 H(-d0) = 1.0;
libvips/freq_filt/fmaskcir.c:	 * for d=+da H(+da) = ampl_cutof; for d=-da H1(-da) = ampl_cutof;
libvips/freq_filt/fmaskcir.c:	 * xa = x0*(1 - radius/sqrt(x0*x0+y0*y0))
libvips/freq_filt/fmaskcir.c:	 * ya = y0*(1 - radius/sqrt(x0*x0+y0*y0))
libvips/freq_filt/fmaskcir.c:	cnst = (1.0/ac) - 1.0;
libvips/freq_filt/fmaskcir.c:		     	return( -1 );
libvips/freq_filt/fmaskcir.c:/* The band is a the 1-H(f) of above					*/
libvips/freq_filt/fmaskcir.c:	int xs = out->Xsize;
libvips/freq_filt/fmaskcir.c:	int ys = out->Ysize;
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:	cnst = (1.0/ac) - 1.0;
libvips/freq_filt/fmaskcir.c:				*cpline = 1.0 - cnsta *
libvips/freq_filt/fmaskcir.c:			return( -1 );
libvips/freq_filt/fmaskcir.c:/* The band is a RING of internal radius fc-df and external radius fc+df*/
libvips/freq_filt/fmaskcir.c:	int xs = out->Xsize;
libvips/freq_filt/fmaskcir.c:	int ys = out->Ysize;
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:	cnst = -log( ac );
libvips/freq_filt/fmaskcir.c:	cnsta = 1.0/(1.0 + exp( - cnst * 4.0 * (x0*x0+y0*y0) / nr2 )); 
libvips/freq_filt/fmaskcir.c:				(exp( -cnst * d1_2/nr2 ) + 
libvips/freq_filt/fmaskcir.c:				exp( -cnst * d2_2/nr2 ));
libvips/freq_filt/fmaskcir.c:			return( -1 );
libvips/freq_filt/fmaskcir.c:/* The band is a RING of internal radius fc-df and external radius fc+df*/
libvips/freq_filt/fmaskcir.c:	int xs = out->Xsize;
libvips/freq_filt/fmaskcir.c:	int ys = out->Ysize;
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:		return( -1 );
libvips/freq_filt/fmaskcir.c:	cnst = -log( ac );
libvips/freq_filt/fmaskcir.c:	cnsta = 1.0/(1.0 + exp( - cnst * 4.0 * (x0*x0+y0*y0) / nr2 )); 
libvips/freq_filt/fmaskcir.c:			*cpline = 1.0 - cnsta *
libvips/freq_filt/fmaskcir.c:				(exp( -cnst * d1_2/nr2 ) + 
libvips/freq_filt/fmaskcir.c:				exp( -cnst * d2_2/nr2 ));
libvips/freq_filt/fmaskcir.c:			return( -1 );
libvips/freq_filt/fmaskcir.c:		/* Band pass - band reject.
libvips/freq_filt/fmaskcir.c:			return( -1 );
libvips/freq_filt/im_freqflt.c: * @(#) Returns 0 on success and -1 on error
libvips/freq_filt/im_freqflt.c: *	- im_multiply() called, rather than im_cmultim()
libvips/freq_filt/im_freqflt.c: *	- im_clip2*() called, rather than im_any2*()
libvips/freq_filt/im_freqflt.c: *	- rewritten
libvips/freq_filt/im_freqflt.c: *	- frees memory more quickly
libvips/freq_filt/im_freqflt.c: *	- use im_invfftr() to get real back for speedup
libvips/freq_filt/im_freqflt.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/freq_filt/im_freqflt.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/freq_filt/im_freqflt.c: * Returns: 0 on success, -1 on error.
libvips/freq_filt/im_freqflt.c:	if( !(dummy = im_open( "memory-1", "p" )) )
libvips/freq_filt/im_freqflt.c:		return( -1 );
libvips/freq_filt/im_freqflt.c:	if( vips_bandfmt_iscomplex( in->BandFmt ) ) {
libvips/freq_filt/im_freqflt.c:		IMAGE *t1 = im_open_local( dummy, "im_freqflt-1", "p" );
libvips/freq_filt/im_freqflt.c:			return( -1 );
libvips/freq_filt/im_freqflt.c:		/* Harder - fft first, then mult, then force back to start
libvips/freq_filt/im_freqflt.c:		if( im_open_local_array( dummy, t, 3, "im_freqflt-1", "p" ) ||
libvips/freq_filt/im_freqflt.c:			!(t3 = im_open_local( out, "im_freqflt-3", "t" )) ||
libvips/freq_filt/im_freqflt.c:			im_clip2fmt( t[2], t3, in->BandFmt ) ||
libvips/freq_filt/im_freqflt.c:			return( -1 );
libvips/include/vips/morphology.h: * 	- from proto.h
libvips/include/vips/morphology.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/morphology.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/Makefile.am:	vips --cpph all > vipsc++.h
libvips/include/vips/check.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/check.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/buf.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/buf.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/buf.h:	int lasti;		/* For read-recent */
libvips/include/vips/util.h: *	- C++ stuff added
libvips/include/vips/util.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/util.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/util.h:/* Some platforms don't have M_PI in math.h :-(
libvips/include/vips/util.h:/* Convert degrees->rads and vice-versa. 
libvips/include/vips/util.h:#define IM_ABS(x) (((x) >= 0) ? (x) : -(x))
libvips/include/vips/util.h:/* Duff's device. Do OPERation N times in a 16-way unrolled loop.
libvips/include/vips/util.h:			 } while( --duff_count > 0 ); \
libvips/include/vips/util.h:#define IM_RINT( R ) ((int)((R)>0?((R)+0.5):((R)-0.5)))
libvips/include/vips/util.h:		(SEQ)->underflow++;   \
libvips/include/vips/util.h:		(SEQ)->overflow++;   \
libvips/include/vips/util.h:		(SEQ)->underflow++;   \
libvips/include/vips/util.h:		(SEQ)->overflow++;   \
libvips/include/vips/util.h:		(SEQ)->underflow++;   \
libvips/include/vips/util.h:		(SEQ)->overflow++;   \
libvips/include/vips/util.h:		(SEQ)->underflow++;   \
libvips/include/vips/util.h:		(SEQ)->overflow++;   \
libvips/include/vips/mosaicing.h: * 	- from proto.h
libvips/include/vips/mosaicing.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/mosaicing.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/resample.h: * 	- from proto.h
libvips/include/vips/resample.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/resample.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/version.h:#define IM_VERSION_STRING	"7.22.1-Thu Jun 24 20:46:16 BST 2010"
libvips/include/vips/conversion.h: * 	- from proto.h
libvips/include/vips/conversion.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/conversion.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/vips.h: * 	- now does C++ extern stuff
libvips/include/vips/vips.h: *	- many more protos
libvips/include/vips/vips.h: *	- protos split out
libvips/include/vips/vips.h: *	- IM_ANY added
libvips/include/vips/vips.h: *	- sRGB colourspace added
libvips/include/vips/vips.h: *	- VASARI_MAGIC_INTEL and VASARI_MAGIC_SPARC added
libvips/include/vips/vips.h: *	- new locks for threading, no more threadgroup stuff in IMAGE
libvips/include/vips/vips.h: *	- override RGB/CMYK macros on cygwin
libvips/include/vips/vips.h: *	- new Xoffset/Yoffset fields
libvips/include/vips/vips.h: *	- rationalized macro names
libvips/include/vips/vips.h: * 	- added Meta header field
libvips/include/vips/vips.h: * 	- added meta.h for new metadata API
libvips/include/vips/vips.h: * 	- scrapped stupid VAS_HD
libvips/include/vips/vips.h: * 	- added sizeof_header field for mmap window read of RAW files
libvips/include/vips/vips.h: * 	- now you have to define IM_ENABLE_DEPRECATED to get broken #defined
libvips/include/vips/vips.h: * 	- added GNUC attributes
libvips/include/vips/vips.h: * 	- added RGB16, GREY16
libvips/include/vips/vips.h: * 	- added im_window_t
libvips/include/vips/vips.h: * 	- added preclose and evalstart callbacks
libvips/include/vips/vips.h: * 	- brought time struct in here
libvips/include/vips/vips.h: * 	- MAGIC values should be unsigned
libvips/include/vips/vips.h: * 	- added invalidate callbacks
libvips/include/vips/vips.h: * 	- include <time.h>, thanks nicola
libvips/include/vips/vips.h: * 	- move deprecated stuff to its own header
libvips/include/vips/vips.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/vips.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/vips.h:#include <glib-object.h>
libvips/include/vips/cimg_funcs.h: * 	- from proto.h
libvips/include/vips/cimg_funcs.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/cimg_funcs.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/interpolate.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/interpolate.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/interpolate.h: * pre-computed matricies we have.
libvips/include/vips/interpolate.h: * is in the fixed-point tables. For 16-bit pixels, we need 16 bits for the
libvips/include/vips/histograms_lut.h: * 	- from proto.h
libvips/include/vips/histograms_lut.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/histograms_lut.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/format.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/format.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/format.h:	/* Null-terminated list of allowed suffixes, eg. ".tif", ".tiff".
libvips/include/vips/format.h:/* Low-level read/write operations.
libvips/include/vips/debug.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/debug.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/freq_filt.h: * 	- from proto.h
libvips/include/vips/freq_filt.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/freq_filt.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/boolean.h: * 	- from proto.h
libvips/include/vips/boolean.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/boolean.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/relational.h: * 	- from proto.h
libvips/include/vips/relational.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/relational.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/private.h:/* Declarations which are public-facing, but private. See internal.h for
libvips/include/vips/private.h: * 	- from vips.h
libvips/include/vips/private.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/private.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/private.h:/* Per-thread buffer cache. Held in a GPrivate.
libvips/include/vips/private.h:/* Per-image buffer cache. Hash to this from im_buffer_cache_t.
libvips/include/vips/struct.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/struct.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/object.h:    Copyright (C) 1991-2003 The National Gallery
libvips/include/vips/object.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/object.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/object.h:/* Useful flag combinations. User-visible ones are:
libvips/include/vips/object.h:   Other combinations are used internally, eg. supplying the cast-table for an 
libvips/include/vips/object.h:	 * from a hash :-(
libvips/include/vips/convolution.h: * 	- from proto.h
libvips/include/vips/convolution.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/convolution.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/inplace.h: * 	- from proto.h
libvips/include/vips/inplace.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/inplace.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/error.h:    Copyright (C) 1991-2005 The National Gallery
libvips/include/vips/error.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/error.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/thread.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/thread.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/arithmetic.h: * 	- from proto.h
libvips/include/vips/arithmetic.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/arithmetic.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/callback.h:    Copyright (C) 1991-2005 The National Gallery
libvips/include/vips/callback.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/callback.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/almostdeprecated.h: * 	- from vips.h
libvips/include/vips/almostdeprecated.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/almostdeprecated.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/include/vips/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/include/vips/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/include/vips/Makefile.in:am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
libvips/include/vips/Makefile.in:  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
libvips/include/vips/Makefile.in:all: all-am
libvips/include/vips/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/include/vips/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/include/vips/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/include/vips/Makefile'; \
libvips/include/vips/Makefile.in:	  $(AUTOMAKE) --gnu libvips/include/vips/Makefile
libvips/include/vips/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/include/vips/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/include/vips/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/include/vips/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/include/vips/Makefile.in:mostlyclean-libtool:
libvips/include/vips/Makefile.in:	-rm -f *.lo
libvips/include/vips/Makefile.in:clean-libtool:
libvips/include/vips/Makefile.in:	-rm -rf .libs _libs
libvips/include/vips/Makefile.in:install-pkgincludeHEADERS: $(pkginclude_HEADERS)
libvips/include/vips/Makefile.in:	test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
libvips/include/vips/Makefile.in:	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
libvips/include/vips/Makefile.in:	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
libvips/include/vips/Makefile.in:uninstall-pkgincludeHEADERS:
libvips/include/vips/Makefile.in:	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
libvips/include/vips/Makefile.in:	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
libvips/include/vips/Makefile.in:	test -n "$$files" || exit 0; \
libvips/include/vips/Makefile.in:	echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
libvips/include/vips/Makefile.in:	cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
libvips/include/vips/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/include/vips/Makefile.in:	mkid -fID $$unique
libvips/include/vips/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/include/vips/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/include/vips/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/include/vips/Makefile.in:	  if test $$# -gt 0; then \
libvips/include/vips/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/include/vips/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/include/vips/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/include/vips/Makefile.in:distclean-tags:
libvips/include/vips/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/include/vips/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/include/vips/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/include/vips/Makefile.in:			   sort -u` ;; \
libvips/include/vips/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/include/vips/Makefile.in:	  if test -d $$d/$$file; then \
libvips/include/vips/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/include/vips/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/include/vips/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/include/vips/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/include/vips/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/include/vips/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/include/vips/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/include/vips/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/include/vips/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/include/vips/Makefile.in:check-am: all-am
libvips/include/vips/Makefile.in:check: check-am
libvips/include/vips/Makefile.in:all-am: Makefile $(HEADERS)
libvips/include/vips/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
libvips/include/vips/Makefile.in:install: install-am
libvips/include/vips/Makefile.in:install-exec: install-exec-am
libvips/include/vips/Makefile.in:install-data: install-data-am
libvips/include/vips/Makefile.in:uninstall: uninstall-am
libvips/include/vips/Makefile.in:install-am: all-am
libvips/include/vips/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/include/vips/Makefile.in:installcheck: installcheck-am
libvips/include/vips/Makefile.in:install-strip:
libvips/include/vips/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/include/vips/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/include/vips/Makefile.in:mostlyclean-generic:
libvips/include/vips/Makefile.in:clean-generic:
libvips/include/vips/Makefile.in:distclean-generic:
libvips/include/vips/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/include/vips/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/include/vips/Makefile.in:maintainer-clean-generic:
libvips/include/vips/Makefile.in:clean: clean-am
libvips/include/vips/Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
libvips/include/vips/Makefile.in:distclean: distclean-am
libvips/include/vips/Makefile.in:	-rm -f Makefile
libvips/include/vips/Makefile.in:distclean-am: clean-am distclean-generic distclean-tags
libvips/include/vips/Makefile.in:dvi: dvi-am
libvips/include/vips/Makefile.in:dvi-am:
libvips/include/vips/Makefile.in:html: html-am
libvips/include/vips/Makefile.in:html-am:
libvips/include/vips/Makefile.in:info: info-am
libvips/include/vips/Makefile.in:info-am:
libvips/include/vips/Makefile.in:install-data-am: install-pkgincludeHEADERS
libvips/include/vips/Makefile.in:install-dvi: install-dvi-am
libvips/include/vips/Makefile.in:install-dvi-am:
libvips/include/vips/Makefile.in:install-exec-am:
libvips/include/vips/Makefile.in:install-html: install-html-am
libvips/include/vips/Makefile.in:install-html-am:
libvips/include/vips/Makefile.in:install-info: install-info-am
libvips/include/vips/Makefile.in:install-info-am:
libvips/include/vips/Makefile.in:install-man:
libvips/include/vips/Makefile.in:install-pdf: install-pdf-am
libvips/include/vips/Makefile.in:install-pdf-am:
libvips/include/vips/Makefile.in:install-ps: install-ps-am
libvips/include/vips/Makefile.in:install-ps-am:
libvips/include/vips/Makefile.in:installcheck-am:
libvips/include/vips/Makefile.in:maintainer-clean: maintainer-clean-am
libvips/include/vips/Makefile.in:	-rm -f Makefile
libvips/include/vips/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/include/vips/Makefile.in:mostlyclean: mostlyclean-am
libvips/include/vips/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
libvips/include/vips/Makefile.in:pdf: pdf-am
libvips/include/vips/Makefile.in:pdf-am:
libvips/include/vips/Makefile.in:ps: ps-am
libvips/include/vips/Makefile.in:ps-am:
libvips/include/vips/Makefile.in:uninstall-am: uninstall-pkgincludeHEADERS
libvips/include/vips/Makefile.in:.MAKE: install-am install-strip
libvips/include/vips/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvips/include/vips/Makefile.in:	clean-libtool ctags distclean distclean-generic \
libvips/include/vips/Makefile.in:	distclean-libtool distclean-tags distdir dvi dvi-am html \
libvips/include/vips/Makefile.in:	html-am info info-am install install-am install-data \
libvips/include/vips/Makefile.in:	install-data-am install-dvi install-dvi-am install-exec \
libvips/include/vips/Makefile.in:	install-exec-am install-html install-html-am install-info \
libvips/include/vips/Makefile.in:	install-info-am install-man install-pdf install-pdf-am \
libvips/include/vips/Makefile.in:	install-pkgincludeHEADERS install-ps install-ps-am \
libvips/include/vips/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvips/include/vips/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvips/include/vips/Makefile.in:	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
libvips/include/vips/Makefile.in:	tags uninstall uninstall-am uninstall-pkgincludeHEADERS
libvips/include/vips/Makefile.in:	vips --cpph all > vipsc++.h
libvips/include/vips/memory.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/memory.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/colour.h: *	- C++ stuff added
libvips/include/vips/colour.h: *	- new display calibration added
libvips/include/vips/colour.h: * 	- added IM_ prefix to colour temps
libvips/include/vips/colour.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/colour.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/region.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/region.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/region.h:/* Sub-area of image.
libvips/include/vips/region.h:	int bpl;		/* Bytes-per-line for data */
libvips/include/vips/region.h:	((size_t)((R)->bpl))
libvips/include/vips/region.h:	((size_t)((R)->valid.width * (R)->im->Bands))
libvips/include/vips/region.h:	((size_t)((R)->valid.width * IM_IMAGE_SIZEOF_PEL((R)->im)))
libvips/include/vips/region.h:	( (im_rect_includespoint( &(B)->valid, (X), (Y) ))? \
libvips/include/vips/region.h:	  ((B)->data + ((Y) - (B)->valid.top) * IM_REGION_LSKIP(B) + \
libvips/include/vips/region.h:	  ((X) - (B)->valid.left) * IM_IMAGE_SIZEOF_PEL((B)->im)): \
libvips/include/vips/region.h:		(B)->valid.left, \
libvips/include/vips/region.h:		(B)->valid.top, \
libvips/include/vips/region.h:		(B)->valid.width, \
libvips/include/vips/region.h:		(B)->valid.height ), abort(), (char *) NULL) \
libvips/include/vips/region.h:	((B)->data + \
libvips/include/vips/region.h:	((Y)-(B)->valid.top) * IM_REGION_LSKIP(B) + \
libvips/include/vips/region.h:	((X)-(B)->valid.left) * IM_IMAGE_SIZEOF_PEL((B)->im))
libvips/include/vips/region.h:#define IM_REGION_ADDR_TOPLEFT(B)   ( (B)->data )
libvips/include/vips/mask.h: * 	- from proto.h
libvips/include/vips/mask.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/mask.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/generate.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/generate.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/other.h: * 	- from proto.h
libvips/include/vips/other.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/other.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/semaphore.h: *	- reworked for posix/solaris threads
libvips/include/vips/semaphore.h: *	- restructured, made part of public API
libvips/include/vips/semaphore.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/semaphore.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/internal.h: *	- cut from proto.h
libvips/include/vips/internal.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/internal.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/transform.h:    Copyright (C) 1991-2003 The National Gallery
libvips/include/vips/transform.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/transform.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/meta.h:    Copyright (C) 1991-2005 The National Gallery
libvips/include/vips/meta.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/meta.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/meta.h:#define IM_META_EXIF_NAME "exif-data"
libvips/include/vips/meta.h:#define IM_META_ICC_NAME "icc-profile-data"
libvips/include/vips/meta.h:#define IM_META_XML "xml-header"
libvips/include/vips/meta.h:#define IM_META_RESOLUTION_UNIT "resolution-unit"
libvips/include/vips/header.h: * 	- from proto.h
libvips/include/vips/header.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/header.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/disp.h: * 	- from colour.h
libvips/include/vips/disp.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/disp.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/disp.h:	float d_mat[3][3]; 		/* XYZ -> luminance matrix */
libvips/include/vips/dispatch.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/dispatch.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/dispatch.h:#include <glib-object.h>
libvips/include/vips/dispatch.h: * you should use the built-in VIPS type converters.
libvips/include/vips/dispatch.h:#define IM_TYPE_INT "integer"		/* 32-bit integer */
libvips/include/vips/dispatch.h:#define IM_TYPE_STRING "string"         /* Zero-terminated char array */
libvips/include/vips/dispatch.h: * IM_TYPE_ARG: Two ways of making an im_object --- with and without a 
libvips/include/vips/dispatch.h: * command-line string to help you along. Arguments with a string are thing 
libvips/include/vips/dispatch.h:	IM_FN_PTOP = 0x4,	/* Point-to-point ... can be done with a LUT */
libvips/include/vips/dispatch.h:	char *desc;		/* Description - eg "photographic negative" */
libvips/include/vips/dispatch.h:	char *name;		/* Command-line name in */
libvips/include/vips/dispatch.h:	void *mask;		/* Mask --- DOUBLE or INT */
libvips/include/vips/dispatch.h:/* Built-in VIPS types.
libvips/include/vips/dispatch.h:/* Add a plug-in package.
libvips/include/vips/dispatch.h:/* Close all plug-ins.
libvips/include/vips/deprecated.h: * 	- from vips.h
libvips/include/vips/deprecated.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/deprecated.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/deprecated.h:#define FMTNOTSET	-1	
libvips/include/vips/rect.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/rect.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/rect.h:#define IM_RECT_RIGHT(R) ((R)->left + (R)->width)
libvips/include/vips/rect.h:#define IM_RECT_BOTTOM(R) ((R)->top + (R)->height)
libvips/include/vips/rect.h:#define IM_RECT_HCENTRE(R) ((R)->left + (R)->width / 2)
libvips/include/vips/rect.h:#define IM_RECT_VCENTRE(R) ((R)->top + (R)->height / 2)
libvips/include/vips/image.h: * 	- from vips.h
libvips/include/vips/image.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/image.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/image.h:	IM_BANDFMT_NOTSET = -1,
libvips/include/vips/image.h:	int kill;		/* set to non-zero to block partial eval */
libvips/include/vips/image.h:	guint32 magic;		/* magic from header, endian-ness of image */
libvips/include/vips/image.h:	void *(*start)();	/* user-supplied start function */
libvips/include/vips/image.h:	int (*generate)();	/* user-supplied generate function */
libvips/include/vips/image.h:	int (*stop)();		/* user-supplied stop function */
libvips/include/vips/image.h:	GMutex *sslock;		/* start-stop lock */
libvips/include/vips/image.h:	/* Extra user-defined fields ... see im_meta_get_int() etc.
libvips/include/vips/image.h:	GSList *preclosefns; 	/* list of pre-close callbacks */
libvips/include/vips/image.h:	/* Post-close callbacks happen on finalize. Eg. deleting the file
libvips/include/vips/image.h:	(im__sizeof_bandfmt[(I)->BandFmt])
libvips/include/vips/image.h:	(IM_IMAGE_SIZEOF_ELEMENT(I) * (I)->Bands)
libvips/include/vips/image.h:	(IM_IMAGE_SIZEOF_PEL(I) * (I)->Xsize)
libvips/include/vips/image.h:	((I)->Bands * (I)->Xsize)
libvips/include/vips/image.h:	( ((X) >= 0 && (X) < (I)->Xsize && \
libvips/include/vips/image.h:	   (Y) >= 0 && (Y) < (I)->Ysize) ? \
libvips/include/vips/image.h:	     ((I)->data + \
libvips/include/vips/image.h:		(I)->Xsize, \
libvips/include/vips/image.h:		(I)->Ysize ), abort(), (char *) NULL) \
libvips/include/vips/image.h:	((I)->data + \
libvips/include/vips/video.h: * 	- from proto.h
libvips/include/vips/video.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/video.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/threadpool.h: *	- from thread.h
libvips/include/vips/threadpool.h: * 	- from threadgroup
libvips/include/vips/threadpool.h: * 	- rework with a simpler distributed work allocation model
libvips/include/vips/threadpool.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvips/include/vips/threadpool.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvips/include/vips/threadpool.h:/* Per-thread state. Allocate functions can use these members to
libvips/include/vips/threadpool.h:/* Constructor for per-thread state.
libvips/include/vips/threadpool.h:/* A work allocate function. This is run single-threaded by a worker to
libvips/include/vips/threadpool.h: * Return non-zero for errors. Set *stop for "no more work to do"
libvips/include/vips/threadpool.h: * whatever). Return non-zero for errors. 
libvips/include/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvips/include/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvips/include/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvips/include/Makefile.in:RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
libvips/include/Makefile.in:	html-recursive info-recursive install-data-recursive \
libvips/include/Makefile.in:	install-dvi-recursive install-exec-recursive \
libvips/include/Makefile.in:	install-html-recursive install-info-recursive \
libvips/include/Makefile.in:	install-pdf-recursive install-ps-recursive install-recursive \
libvips/include/Makefile.in:	installcheck-recursive installdirs-recursive pdf-recursive \
libvips/include/Makefile.in:	ps-recursive uninstall-recursive
libvips/include/Makefile.in:RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
libvips/include/Makefile.in:  distclean-recursive maintainer-clean-recursive
libvips/include/Makefile.in:AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
libvips/include/Makefile.in:	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
libvips/include/Makefile.in:  while test -n "$$dir1"; do \
libvips/include/Makefile.in:    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
libvips/include/Makefile.in:        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
libvips/include/Makefile.in:        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
libvips/include/Makefile.in:        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
libvips/include/Makefile.in:          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
libvips/include/Makefile.in:    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
libvips/include/Makefile.in:all: all-recursive
libvips/include/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvips/include/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvips/include/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvips/include/Makefile'; \
libvips/include/Makefile.in:	  $(AUTOMAKE) --gnu libvips/include/Makefile
libvips/include/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvips/include/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/include/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/include/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvips/include/Makefile.in:mostlyclean-libtool:
libvips/include/Makefile.in:	-rm -f *.lo
libvips/include/Makefile.in:clean-libtool:
libvips/include/Makefile.in:	-rm -rf .libs _libs
libvips/include/Makefile.in:	    *=* | --[!k]*);; \
libvips/include/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
libvips/include/Makefile.in:	    local_target="$$target-am"; \
libvips/include/Makefile.in:	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
libvips/include/Makefile.in:	fi; test -z "$$fail"
libvips/include/Makefile.in:	    *=* | --[!k]*);; \
libvips/include/Makefile.in:	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
libvips/include/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
libvips/include/Makefile.in:	    local_target="$$target-am"; \
libvips/include/Makefile.in:	done && test -z "$$fail"
libvips/include/Makefile.in:tags-recursive:
libvips/include/Makefile.in:ctags-recursive:
libvips/include/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/include/Makefile.in:	mkid -fID $$unique
libvips/include/Makefile.in:TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
libvips/include/Makefile.in:	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
libvips/include/Makefile.in:	  include_option=--etags-include; \
libvips/include/Makefile.in:	  include_option=--include; \
libvips/include/Makefile.in:	    test ! -f $$subdir/TAGS || \
libvips/include/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/include/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvips/include/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvips/include/Makefile.in:	  if test $$# -gt 0; then \
libvips/include/Makefile.in:CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
libvips/include/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvips/include/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvips/include/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvips/include/Makefile.in:distclean-tags:
libvips/include/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvips/include/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvips/include/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvips/include/Makefile.in:			   sort -u` ;; \
libvips/include/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvips/include/Makefile.in:	  if test -d $$d/$$file; then \
libvips/include/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvips/include/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvips/include/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/include/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvips/include/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvips/include/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvips/include/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvips/include/Makefile.in:	    test -f "$(distdir)/$$file" \
libvips/include/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvips/include/Makefile.in:	    test -d "$(distdir)/$$subdir" \
libvips/include/Makefile.in:check-am: all-am
libvips/include/Makefile.in:check: check-recursive
libvips/include/Makefile.in:all-am: Makefile
libvips/include/Makefile.in:installdirs: installdirs-recursive
libvips/include/Makefile.in:installdirs-am:
libvips/include/Makefile.in:install: install-recursive
libvips/include/Makefile.in:install-exec: install-exec-recursive
libvips/include/Makefile.in:install-data: install-data-recursive
libvips/include/Makefile.in:uninstall: uninstall-recursive
libvips/include/Makefile.in:install-am: all-am
libvips/include/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvips/include/Makefile.in:installcheck: installcheck-recursive
libvips/include/Makefile.in:install-strip:
libvips/include/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvips/include/Makefile.in:	  `test -z '$(STRIP)' || \
libvips/include/Makefile.in:mostlyclean-generic:
libvips/include/Makefile.in:clean-generic:
libvips/include/Makefile.in:distclean-generic:
libvips/include/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvips/include/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvips/include/Makefile.in:maintainer-clean-generic:
libvips/include/Makefile.in:clean: clean-recursive
libvips/include/Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
libvips/include/Makefile.in:distclean: distclean-recursive
libvips/include/Makefile.in:	-rm -f Makefile
libvips/include/Makefile.in:distclean-am: clean-am distclean-generic distclean-tags
libvips/include/Makefile.in:dvi: dvi-recursive
libvips/include/Makefile.in:dvi-am:
libvips/include/Makefile.in:html: html-recursive
libvips/include/Makefile.in:html-am:
libvips/include/Makefile.in:info: info-recursive
libvips/include/Makefile.in:info-am:
libvips/include/Makefile.in:install-data-am:
libvips/include/Makefile.in:install-dvi: install-dvi-recursive
libvips/include/Makefile.in:install-dvi-am:
libvips/include/Makefile.in:install-exec-am:
libvips/include/Makefile.in:install-html: install-html-recursive
libvips/include/Makefile.in:install-html-am:
libvips/include/Makefile.in:install-info: install-info-recursive
libvips/include/Makefile.in:install-info-am:
libvips/include/Makefile.in:install-man:
libvips/include/Makefile.in:install-pdf: install-pdf-recursive
libvips/include/Makefile.in:install-pdf-am:
libvips/include/Makefile.in:install-ps: install-ps-recursive
libvips/include/Makefile.in:install-ps-am:
libvips/include/Makefile.in:installcheck-am:
libvips/include/Makefile.in:maintainer-clean: maintainer-clean-recursive
libvips/include/Makefile.in:	-rm -f Makefile
libvips/include/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvips/include/Makefile.in:mostlyclean: mostlyclean-recursive
libvips/include/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
libvips/include/Makefile.in:pdf: pdf-recursive
libvips/include/Makefile.in:pdf-am:
libvips/include/Makefile.in:ps: ps-recursive
libvips/include/Makefile.in:ps-am:
libvips/include/Makefile.in:uninstall-am:
libvips/include/Makefile.in:.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
libvips/include/Makefile.in:	install-am install-strip tags-recursive
libvips/include/Makefile.in:	all all-am check check-am clean clean-generic clean-libtool \
libvips/include/Makefile.in:	ctags ctags-recursive distclean distclean-generic \
libvips/include/Makefile.in:	distclean-libtool distclean-tags distdir dvi dvi-am html \
libvips/include/Makefile.in:	html-am info info-am install install-am install-data \
libvips/include/Makefile.in:	install-data-am install-dvi install-dvi-am install-exec \
libvips/include/Makefile.in:	install-exec-am install-html install-html-am install-info \
libvips/include/Makefile.in:	install-info-am install-man install-pdf install-pdf-am \
libvips/include/Makefile.in:	install-ps install-ps-am install-strip installcheck \
libvips/include/Makefile.in:	installcheck-am installdirs installdirs-am maintainer-clean \
libvips/include/Makefile.in:	maintainer-clean-generic mostlyclean mostlyclean-generic \
libvips/include/Makefile.in:	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
libvips/include/Makefile.in:	uninstall uninstall-am
libvipsCC/Makefile.am:	-I$(top_srcdir)/libvips/include \
libvipsCC/Makefile.am:	-I$(top_srcdir)/libvipsCC/include \
libvipsCC/Makefile.am:	-no-undefined \
libvipsCC/Makefile.am:	-version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@
libvipsCC/Makefile.am:	packages=`vips --list packages | \
libvipsCC/Makefile.am:	    vips --cppc $$name >> vipsc++.cc ; \
libvipsCC/VImage.cc:    Copyright (C) 1991-2001 The National Gallery
libvipsCC/VImage.cc:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/VImage.cc:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/VImage.cc:	if( im && im->filename ) 
libvipsCC/VImage.cc:		printf( " (im->filename = \"%s\")", im->filename );
libvipsCC/VImage.cc:		(*i)->debug_print();
libvipsCC/VImage.cc:// Add a ref - this (output image) depends upon VipsImage in
libvipsCC/VImage.cc:	in->nrefs++;
libvipsCC/VImage.cc:		(*i)->removeref();
libvipsCC/VImage.cc:	nrefs--;
libvipsCC/VImage.cc:	if( !(_ref->im = im_open( name, mode )) )
libvipsCC/VImage.cc:	_ref->close_on_delete = 1;
libvipsCC/VImage.cc:	_ref->debug_print();
libvipsCC/VImage.cc:	_ref->im = in;
libvipsCC/VImage.cc:	_ref->close_on_delete = 0;
libvipsCC/VImage.cc:	_ref->debug_print();
libvipsCC/VImage.cc:	if( !(_ref->im = im_image( buffer, width, height, 
libvipsCC/VImage.cc:	_ref->close_on_delete = 1;
libvipsCC/VImage.cc:	_ref->debug_print();
libvipsCC/VImage.cc:	if( !(_ref->im = im_open( filename, "p" )) )
libvipsCC/VImage.cc:	_ref->close_on_delete = 1;
libvipsCC/VImage.cc:	_ref->debug_print();
libvipsCC/VImage.cc:	_ref->nrefs++; 
libvipsCC/VImage.cc:	_ref->removeref(); 
libvipsCC/VImage.cc:	_ref->nrefs++; 
libvipsCC/VImage.cc:	if( im_incheck( _ref->im ) )
libvipsCC/VImage.cc:	return( (void *) _ref->im->data );
libvipsCC/VImage.cc:	if( im_copy( _ref->im, out._ref->im ) )
libvipsCC/VImage.cc:	out._ref->addref( _ref );
libvipsCC/VImage.cc:	if( im_copy( _ref->im, out._ref->im ) )
libvipsCC/VImage.cc:	out._ref->addref( _ref );
libvipsCC/VImage.cc:	if( im_copy( _ref->im, out._ref->im ) )
libvipsCC/VImage.cc:	out._ref->addref( _ref );
libvipsCC/VImage.cc:int VImage::Xsize() { return( _ref->im->Xsize ); }
libvipsCC/VImage.cc:int VImage::Ysize() { return( _ref->im->Ysize ); }
libvipsCC/VImage.cc:int VImage::Bands() { return( _ref->im->Bands ); }
libvipsCC/VImage.cc:	{ return( (TBandFmt) _ref->im->BandFmt ); }
libvipsCC/VImage.cc:	{ return( (TCoding) _ref->im->Coding ); }
libvipsCC/VImage.cc:VImage::TType VImage::Type() { return( (TType) _ref->im->Type ); }
libvipsCC/VImage.cc:float VImage::Xres() { return( _ref->im->Xres ); }
libvipsCC/VImage.cc:float VImage::Yres() { return( _ref->im->Yres ); }
libvipsCC/VImage.cc:int VImage::Length() { return( _ref->im->Length ); }
libvipsCC/VImage.cc:	{ return( (TCompression) _ref->im->Compression ); }
libvipsCC/VImage.cc:short VImage::Level() { return( _ref->im->Level ); }
libvipsCC/VImage.cc:int VImage::Xoffset() { return( _ref->im->Xoffset ); }
libvipsCC/VImage.cc:int VImage::Yoffset() { return( _ref->im->Yoffset ); }
libvipsCC/VImage.cc:const char *VImage::filename() { return( _ref->im->filename ); }
libvipsCC/VImage.cc:const char *VImage::Hist() { return( im_history_get( _ref->im ) ); }
libvipsCC/VImage.cc:	if( im_meta_set( _ref->im, field, value ) )
libvipsCC/VImage.cc:	return( im_meta_remove( _ref->im, field ) );
libvipsCC/VImage.cc:	if( im_meta_get( _ref->im, field, value_copy ) )
libvipsCC/VImage.cc:	return( im_meta_get_typeof( _ref->im, field ) );
libvipsCC/VImage.cc:	if( im_meta_get_int( _ref->im, field, &result ) )
libvipsCC/VImage.cc:	if( im_meta_get_double( _ref->im, field, &result ) )
libvipsCC/VImage.cc:	if( im_meta_get_string( _ref->im, field, &result ) )
libvipsCC/VImage.cc:	if( im_meta_get_area( _ref->im, field, &result ) )
libvipsCC/VImage.cc:	if( im_meta_get_blob( _ref->im, field, &result, length ) )
libvipsCC/VImage.cc:	if( im_meta_set_int( _ref->im, field, value ) )
libvipsCC/VImage.cc:	if( im_meta_set_double( _ref->im, field, value ) )
libvipsCC/VImage.cc:	if( im_meta_set_string( _ref->im, field, value ) )
libvipsCC/VImage.cc:	if( im_meta_set_area( _ref->im, field, free_fn, value ) )
libvipsCC/VImage.cc:	if( im_meta_set_blob( _ref->im, field, free_fn, value, length ) )
libvipsCC/VImage.cc:	im_initdesc( _ref->im, x, y, b, 0, 
libvipsCC/VImage.cc:	if( im_setupout( _ref->im ) )
libvipsCC/VImage.cc:	base = new im_object[f->argc]; 
libvipsCC/VImage.cc:	for( int i = 0; i < f->argc; i++ ) {
libvipsCC/VImage.cc:		im_type_desc *ty = f->argv[i].desc;
libvipsCC/VImage.cc:		if( !(ty->flags & IM_TYPE_OUTPUT) ) {
libvipsCC/VImage.cc:			if( strcmp( ty->type, IM_TYPE_IMAGEVEC ) == 0 ||
libvipsCC/VImage.cc:				strcmp( ty->type, IM_TYPE_DOUBLEVEC ) == 0 ||
libvipsCC/VImage.cc:				strcmp( ty->type, IM_TYPE_INTVEC ) == 0 ) {
libvipsCC/VImage.cc:				if( io->vec ) {
libvipsCC/VImage.cc:					delete[] io->vec;
libvipsCC/VImage.cc:					io->vec = NULL;
libvipsCC/VImage.cc:	if( f->disp( base ) ) 
libvipsCC/VDisplay.cc:    Copyright (C) 1991-2001 The National Gallery
libvipsCC/VDisplay.cc:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/VDisplay.cc:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/VDisplay.cc:	if( d->d_name )
libvipsCC/VDisplay.cc:		im_free( d->d_name );
libvipsCC/VDisplay.cc:	if( in->d_name )
libvipsCC/VDisplay.cc:		if( !(out->d_name = strdup( in->d_name )) ) {
libvipsCC/VDisplay.cc:// Check that luts are up-to-date
libvipsCC/VDisplay.cc:	ref->nrefs--;
libvipsCC/VDisplay.cc:	if( !ref->nrefs ) 
libvipsCC/VDisplay.cc:	ref->nrefs--;
libvipsCC/VDisplay.cc:	if( ref->nrefs > 0 ) 
libvipsCC/VDisplay.cc:		ref->cleanref();
libvipsCC/VDisplay.cc:	ref->nrefs++; 
libvipsCC/VDisplay.cc:			err.app( im_col_displays( i )->d_name );
libvipsCC/VDisplay.cc:	ref->disp = scr;
libvipsCC/VDisplay.cc:	ref->disp = im_col_displays( 7 );
libvipsCC/VDisplay.cc:	{ ref->wready(); return( ((im_col_display*)ref->disp)->d_YCW ); }
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = v.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[v.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = v[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_imagevec_object*) _vec.data(0))->n = ins.size();
libvipsCC/vipsc++.cc:	((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[ins.size()];
libvipsCC/vipsc++.cc:		((im_imagevec_object*) _vec.data(0))->vec[i] = ins[i].image();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = xs.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[xs.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = xs[i];
libvipsCC/vipsc++.cc:		out._ref->addref( ins[i]._ref );
libvipsCC/vipsc++.cc:// im_lintra_vec: calculate a*in + b -> out, a and b vectors
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(0))->n = a.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(0))->vec = new double[a.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(0))->vec[i] = a[i];
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = b.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[b.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = b[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(1))->name = (char*)"noname";
libvipsCC/vipsc++.cc:	mask.embed( (DOUBLEMASK *)((im_mask_object*)_vec.data(1))->mask );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = v.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[v.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = v[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = x.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[x.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = x[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(1))->name = (char*)"noname";
libvipsCC/vipsc++.cc:	statistics.embed( (DOUBLEMASK *)((im_mask_object*)_vec.data(1))->mask );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:// im_greyc: noise-removing filter
libvipsCC/vipsc++.cc:	dst._ref->addref( src._ref );
libvipsCC/vipsc++.cc:// im_greyc_mask: noise-removing filter, with a mask
libvipsCC/vipsc++.cc:	dst._ref->addref( src._ref );
libvipsCC/vipsc++.cc:	dst._ref->addref( mask._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_dE00_fromLab: calculate delta-E CIE2000 for two Lab images
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// im_dECMC_fromLab: calculate delta-E CMC(1:1) for two Lab images
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// im_dECMC_fromdisp: calculate delta-E CMC(1:1) for two displayable images
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// im_dE_fromLab: calculate delta-E for two Lab images
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// im_dE_fromXYZ: calculate delta-E for two XYZ images
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// im_dE_fromdisp: calculate delta-E for two displayable images
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = greyscale.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_fliphor: flip image left-right
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_flipver: flip image top-bottom
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_imagevec_object*) _vec.data(0))->n = in.size();
libvipsCC/vipsc++.cc:	((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[in.size()];
libvipsCC/vipsc++.cc:		((im_imagevec_object*) _vec.data(0))->vec[i] = in[i].image();
libvipsCC/vipsc++.cc:		out._ref->addref( in[i]._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:// im_insert: insert sub-image into main image at position
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sub._ref );
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(3))->n = x.size();
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(3))->vec = new int[x.size()];
libvipsCC/vipsc++.cc:		((im_intvec_object*) _vec.data(3))->vec[i] = x[i];
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(4))->n = y.size();
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(4))->vec = new int[y.size()];
libvipsCC/vipsc++.cc:		((im_intvec_object*) _vec.data(4))->vec[i] = y[i];
libvipsCC/vipsc++.cc:// im_insert_noexpand: insert sub-image into main image at position, no expansion
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sub._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_lrjoin: join two images left-right
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(0))->mask = input.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:// im_ri2c: join two non-complex images to form complex
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_scale: scale image linearly to fit range 0-255
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_scaleps: logarithmic scale of image to fit range 0-255
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_tbjoin: join two images top-bottom
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(1))->name = (char*)"noname";
libvipsCC/vipsc++.cc:	output.embed( (DOUBLEMASK *)((im_mask_object*)_vec.data(1))->mask );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	output._ref->addref( input._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_compass: convolve with 8-way rotating integer mask
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_contrast_surface: find high-contrast points in an image
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// im_gradcor: non-normalised correlation of gradient of in2 within in1
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// im_gradient: convolve with 2-way rotating mask
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_lindetect: convolve with 4-way rotating mask
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:// im_clip: convert to unsigned 8-bit integer
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// im_icc_export: convert a float LAB to an 8-bit device image with an ICC profile
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_clip2c: convert to signed 8-bit integer
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_clip2d: convert to double-precision float
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_clip2f: convert to single-precision float
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_clip2i: convert to signed 32-bit integer
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_convsub: convolve uchar to uchar, sub-sampling by xskip, yskip
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr;
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_clip2s: convert to signed 16-bit integer
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_clip2ui: convert to unsigned 32-bit integer
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(3))->n = x.size();
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(3))->vec = new int[x.size()];
libvipsCC/vipsc++.cc:		((im_intvec_object*) _vec.data(3))->vec[i] = x[i];
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(4))->n = y.size();
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(4))->vec = new int[y.size()];
libvipsCC/vipsc++.cc:		((im_intvec_object*) _vec.data(4))->vec[i] = y[i];
libvipsCC/vipsc++.cc:// im_clip2us: convert to unsigned 16-bit integer
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_contrast_surface_raw: find high-contrast points in an image
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:// im_gradcor_raw: non-normalised correlation of gradient of in2 within in1, no padding
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = mask.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = mask.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:// im_freqflt: frequency-domain filter of in with mask
libvipsCC/vipsc++.cc:// im_fwfft: forward fast-fourier transform
libvipsCC/vipsc++.cc:// im_invfft: inverse fast-fourier transform
libvipsCC/vipsc++.cc:// im_phasecor_fft: non-normalised correlation of gradient of in2 within in1
libvipsCC/vipsc++.cc:// im_invfftr: real part of inverse fast-fourier transform
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:// im_gammacorrect: gamma-correct image
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_heq: histogram-equalise image
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( index._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( value._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(0))->mask = measures.mask().dptr;
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(0))->mask = xyes.mask().dptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( lut._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( lut._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(4))->n = ink.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(4))->vec = new double[ink.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(4))->vec[i] = ink[i];
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(4))->n = ink.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(4))->vec = new double[ink.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(4))->vec[i] = ink[i];
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(4))->n = x1.size();
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(4))->vec = new int[x1.size()];
libvipsCC/vipsc++.cc:		((im_intvec_object*) _vec.data(4))->vec[i] = x1[i];
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(5))->n = y1.size();
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(5))->vec = new int[y1.size()];
libvipsCC/vipsc++.cc:		((im_intvec_object*) _vec.data(5))->vec[i] = y1[i];
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(6))->n = x2.size();
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(6))->vec = new int[x2.size()];
libvipsCC/vipsc++.cc:		((im_intvec_object*) _vec.data(6))->vec[i] = x2[i];
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(7))->n = y2.size();
libvipsCC/vipsc++.cc:	((im_intvec_object*) _vec.data(7))->vec = new int[y2.size()];
libvipsCC/vipsc++.cc:		((im_intvec_object*) _vec.data(7))->vec[i] = y2[i];
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = mask.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_rank_image: point-wise pixel rank
libvipsCC/vipsc++.cc:	((im_imagevec_object*) _vec.data(0))->n = in.size();
libvipsCC/vipsc++.cc:	((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[in.size()];
libvipsCC/vipsc++.cc:		((im_imagevec_object*) _vec.data(0))->vec[i] = in[i].image();
libvipsCC/vipsc++.cc:		out._ref->addref( in[i]._ref );
libvipsCC/vipsc++.cc:// im_maxvalue: point-wise maximum value
libvipsCC/vipsc++.cc:	((im_imagevec_object*) _vec.data(0))->n = in.size();
libvipsCC/vipsc++.cc:	((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[in.size()];
libvipsCC/vipsc++.cc:		((im_imagevec_object*) _vec.data(0))->vec[i] = in[i].image();
libvipsCC/vipsc++.cc:		out._ref->addref( in[i]._ref );
libvipsCC/vipsc++.cc:// im_zerox: find +ve or -ve zero crossings in image
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	((im_mask_object*) _vec.data(2))->mask = mask.mask().iptr;
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:// im__find_lroverlap: search for left-right overlap of ref and sec
libvipsCC/vipsc++.cc:// im__find_tboverlap: search for top-bottom overlap of ref and sec
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_lrmerge: left-right merge of in1 and in2
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:// im_lrmerge1: first-order left-right merge of ref and sec
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:// im_lrmosaic: left-right mosaic of ref and sec
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:// im_lrmosaic1: first-order left-right mosaic of ref and sec
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:// im_match_linear: resample ref so that tie-points match
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:// im_match_linear_search: search sec, then resample so that tie-points match
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_tbmerge: top-bottom merge of in1 and in2
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:// im_tbmerge1: first-order top-bottom merge of in1 and in2
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:// im_tbmosaic: top-bottom mosaic of in1 and in2
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:// im_tbmosaic1: first-order top-bottom mosaic of ref and sec
libvipsCC/vipsc++.cc:	out._ref->addref( ref._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( sec._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_feye: generate IM_BANDFMT_FLOAT [-1,1] frequency/amplitude image
libvipsCC/vipsc++.cc:// im_fzone: generate IM_BANDFMT_FLOAT [-1,1] zone plate image
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:	out._ref->addref( cond._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( cond._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in1._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in2._ref );
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->n = vec.size();
libvipsCC/vipsc++.cc:	((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()];
libvipsCC/vipsc++.cc:		((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i];
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/vipsc++.cc:// im_rightshift_size: decrease size by a power-of-two factor
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// im_stretch3: stretch 3%, sub-pixel displace by xdisp/ydisp
libvipsCC/vipsc++.cc:	out._ref->addref( in._ref );
libvipsCC/vipsc++.cc:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvipsCC/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvipsCC/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvipsCC/Makefile.in:am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
libvipsCC/Makefile.in:  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
libvipsCC/Makefile.in:libvipsCC_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
libvipsCC/Makefile.in:	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
libvipsCC/Makefile.in:	$(CXXFLAGS) $(libvipsCC_la_LDFLAGS) $(LDFLAGS) -o $@
libvipsCC/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
libvipsCC/Makefile.in:am__mv = mv -f
libvipsCC/Makefile.in:LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvipsCC/Makefile.in:	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
libvipsCC/Makefile.in:CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
libvipsCC/Makefile.in:	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
libvipsCC/Makefile.in:	$(LDFLAGS) -o $@
libvipsCC/Makefile.in:RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
libvipsCC/Makefile.in:	html-recursive info-recursive install-data-recursive \
libvipsCC/Makefile.in:	install-dvi-recursive install-exec-recursive \
libvipsCC/Makefile.in:	install-html-recursive install-info-recursive \
libvipsCC/Makefile.in:	install-pdf-recursive install-ps-recursive install-recursive \
libvipsCC/Makefile.in:	installcheck-recursive installdirs-recursive pdf-recursive \
libvipsCC/Makefile.in:	ps-recursive uninstall-recursive
libvipsCC/Makefile.in:RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
libvipsCC/Makefile.in:  distclean-recursive maintainer-clean-recursive
libvipsCC/Makefile.in:AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
libvipsCC/Makefile.in:	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
libvipsCC/Makefile.in:  while test -n "$$dir1"; do \
libvipsCC/Makefile.in:    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
libvipsCC/Makefile.in:        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
libvipsCC/Makefile.in:        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
libvipsCC/Makefile.in:        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
libvipsCC/Makefile.in:          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
libvipsCC/Makefile.in:    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
libvipsCC/Makefile.in:	-I$(top_srcdir)/libvips/include \
libvipsCC/Makefile.in:	-I$(top_srcdir)/libvipsCC/include \
libvipsCC/Makefile.in:	-no-undefined \
libvipsCC/Makefile.in:	-version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@
libvipsCC/Makefile.in:all: all-recursive
libvipsCC/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvipsCC/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvipsCC/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvipsCC/Makefile'; \
libvipsCC/Makefile.in:	  $(AUTOMAKE) --gnu libvipsCC/Makefile
libvipsCC/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvipsCC/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvipsCC/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvipsCC/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvipsCC/Makefile.in:install-libLTLIBRARIES: $(lib_LTLIBRARIES)
libvipsCC/Makefile.in:	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
libvipsCC/Makefile.in:	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
libvipsCC/Makefile.in:	  if test -f $$p; then \
libvipsCC/Makefile.in:	test -z "$$list2" || { \
libvipsCC/Makefile.in:	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
libvipsCC/Makefile.in:	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
libvipsCC/Makefile.in:uninstall-libLTLIBRARIES:
libvipsCC/Makefile.in:	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
libvipsCC/Makefile.in:	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
libvipsCC/Makefile.in:	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
libvipsCC/Makefile.in:clean-libLTLIBRARIES:
libvipsCC/Makefile.in:	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
libvipsCC/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
libvipsCC/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
libvipsCC/Makefile.in:	  rm -f "$${dir}/so_locations"; \
libvipsCC/Makefile.in:	$(libvipsCC_la_LINK) -rpath $(libdir) $(libvipsCC_la_OBJECTS) $(libvipsCC_la_LIBADD) $(LIBS)
libvipsCC/Makefile.in:mostlyclean-compile:
libvipsCC/Makefile.in:	-rm -f *.$(OBJEXT)
libvipsCC/Makefile.in:distclean-compile:
libvipsCC/Makefile.in:	-rm -f *.tab.c
libvipsCC/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvipsCC/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
libvipsCC/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
libvipsCC/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
libvipsCC/Makefile.in:@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
libvipsCC/Makefile.in:@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
libvipsCC/Makefile.in:mostlyclean-libtool:
libvipsCC/Makefile.in:	-rm -f *.lo
libvipsCC/Makefile.in:clean-libtool:
libvipsCC/Makefile.in:	-rm -rf .libs _libs
libvipsCC/Makefile.in:	    *=* | --[!k]*);; \
libvipsCC/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
libvipsCC/Makefile.in:	    local_target="$$target-am"; \
libvipsCC/Makefile.in:	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
libvipsCC/Makefile.in:	fi; test -z "$$fail"
libvipsCC/Makefile.in:	    *=* | --[!k]*);; \
libvipsCC/Makefile.in:	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
libvipsCC/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
libvipsCC/Makefile.in:	    local_target="$$target-am"; \
libvipsCC/Makefile.in:	done && test -z "$$fail"
libvipsCC/Makefile.in:tags-recursive:
libvipsCC/Makefile.in:ctags-recursive:
libvipsCC/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvipsCC/Makefile.in:	mkid -fID $$unique
libvipsCC/Makefile.in:TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
libvipsCC/Makefile.in:	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
libvipsCC/Makefile.in:	  include_option=--etags-include; \
libvipsCC/Makefile.in:	  include_option=--include; \
libvipsCC/Makefile.in:	    test ! -f $$subdir/TAGS || \
libvipsCC/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvipsCC/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvipsCC/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvipsCC/Makefile.in:	  if test $$# -gt 0; then \
libvipsCC/Makefile.in:CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
libvipsCC/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvipsCC/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvipsCC/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvipsCC/Makefile.in:distclean-tags:
libvipsCC/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvipsCC/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvipsCC/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvipsCC/Makefile.in:			   sort -u` ;; \
libvipsCC/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvipsCC/Makefile.in:	  if test -d $$d/$$file; then \
libvipsCC/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvipsCC/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvipsCC/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvipsCC/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvipsCC/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvipsCC/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvipsCC/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvipsCC/Makefile.in:	    test -f "$(distdir)/$$file" \
libvipsCC/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvipsCC/Makefile.in:	    test -d "$(distdir)/$$subdir" \
libvipsCC/Makefile.in:check-am: all-am
libvipsCC/Makefile.in:check: check-recursive
libvipsCC/Makefile.in:all-am: Makefile $(LTLIBRARIES)
libvipsCC/Makefile.in:installdirs: installdirs-recursive
libvipsCC/Makefile.in:installdirs-am:
libvipsCC/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
libvipsCC/Makefile.in:install: install-recursive
libvipsCC/Makefile.in:install-exec: install-exec-recursive
libvipsCC/Makefile.in:install-data: install-data-recursive
libvipsCC/Makefile.in:uninstall: uninstall-recursive
libvipsCC/Makefile.in:install-am: all-am
libvipsCC/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvipsCC/Makefile.in:installcheck: installcheck-recursive
libvipsCC/Makefile.in:install-strip:
libvipsCC/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvipsCC/Makefile.in:	  `test -z '$(STRIP)' || \
libvipsCC/Makefile.in:mostlyclean-generic:
libvipsCC/Makefile.in:clean-generic:
libvipsCC/Makefile.in:distclean-generic:
libvipsCC/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvipsCC/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvipsCC/Makefile.in:maintainer-clean-generic:
libvipsCC/Makefile.in:clean: clean-recursive
libvipsCC/Makefile.in:clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
libvipsCC/Makefile.in:	mostlyclean-am
libvipsCC/Makefile.in:distclean: distclean-recursive
libvipsCC/Makefile.in:	-rm -rf ./$(DEPDIR)
libvipsCC/Makefile.in:	-rm -f Makefile
libvipsCC/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
libvipsCC/Makefile.in:	distclean-tags
libvipsCC/Makefile.in:dvi: dvi-recursive
libvipsCC/Makefile.in:dvi-am:
libvipsCC/Makefile.in:html: html-recursive
libvipsCC/Makefile.in:html-am:
libvipsCC/Makefile.in:info: info-recursive
libvipsCC/Makefile.in:info-am:
libvipsCC/Makefile.in:install-data-am:
libvipsCC/Makefile.in:install-dvi: install-dvi-recursive
libvipsCC/Makefile.in:install-dvi-am:
libvipsCC/Makefile.in:install-exec-am: install-libLTLIBRARIES
libvipsCC/Makefile.in:install-html: install-html-recursive
libvipsCC/Makefile.in:install-html-am:
libvipsCC/Makefile.in:install-info: install-info-recursive
libvipsCC/Makefile.in:install-info-am:
libvipsCC/Makefile.in:install-man:
libvipsCC/Makefile.in:install-pdf: install-pdf-recursive
libvipsCC/Makefile.in:install-pdf-am:
libvipsCC/Makefile.in:install-ps: install-ps-recursive
libvipsCC/Makefile.in:install-ps-am:
libvipsCC/Makefile.in:installcheck-am:
libvipsCC/Makefile.in:maintainer-clean: maintainer-clean-recursive
libvipsCC/Makefile.in:	-rm -rf ./$(DEPDIR)
libvipsCC/Makefile.in:	-rm -f Makefile
libvipsCC/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvipsCC/Makefile.in:mostlyclean: mostlyclean-recursive
libvipsCC/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
libvipsCC/Makefile.in:	mostlyclean-libtool
libvipsCC/Makefile.in:pdf: pdf-recursive
libvipsCC/Makefile.in:pdf-am:
libvipsCC/Makefile.in:ps: ps-recursive
libvipsCC/Makefile.in:ps-am:
libvipsCC/Makefile.in:uninstall-am: uninstall-libLTLIBRARIES
libvipsCC/Makefile.in:.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
libvipsCC/Makefile.in:	install-am install-strip tags-recursive
libvipsCC/Makefile.in:	all all-am check check-am clean clean-generic \
libvipsCC/Makefile.in:	clean-libLTLIBRARIES clean-libtool ctags ctags-recursive \
libvipsCC/Makefile.in:	distclean distclean-compile distclean-generic \
libvipsCC/Makefile.in:	distclean-libtool distclean-tags distdir dvi dvi-am html \
libvipsCC/Makefile.in:	html-am info info-am install install-am install-data \
libvipsCC/Makefile.in:	install-data-am install-dvi install-dvi-am install-exec \
libvipsCC/Makefile.in:	install-exec-am install-html install-html-am install-info \
libvipsCC/Makefile.in:	install-info-am install-libLTLIBRARIES install-man install-pdf \
libvipsCC/Makefile.in:	install-pdf-am install-ps install-ps-am install-strip \
libvipsCC/Makefile.in:	installcheck installcheck-am installdirs installdirs-am \
libvipsCC/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvipsCC/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
libvipsCC/Makefile.in:	pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
libvipsCC/Makefile.in:	uninstall-libLTLIBRARIES
libvipsCC/Makefile.in:	packages=`vips --list packages | \
libvipsCC/Makefile.in:	    vips --cppc $$name >> vipsc++.cc ; \
libvipsCC/VError.cc:    Copyright (C) 1991-2001 The National Gallery
libvipsCC/VError.cc:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/VError.cc:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/VMask.cc:    Copyright (C) 1991-2001 The National Gallery
libvipsCC/VMask.cc:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/VMask.cc:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/VMask.cc:/* Functions for VMask - refcounting layer over VPMask.
libvipsCC/VMask.cc:	ref->nrefs--;
libvipsCC/VMask.cc:	if( !ref->nrefs )
libvipsCC/VMask.cc:	ref->nrefs--;
libvipsCC/VMask.cc:	if( ref->nrefs > 0 )
libvipsCC/VMask.cc:		delete ref->pmask;
libvipsCC/VMask.cc:	ref->nrefs++; 
libvipsCC/VMask.cc:// Make sure this is a private copy of pmask --- dup if nrefs != 1
libvipsCC/VMask.cc:	if( ref->nrefs > 1 ) {
libvipsCC/VMask.cc:		ref2->pmask = ref->pmask->dup();
libvipsCC/VMask.cc:		ref->nrefs--;
libvipsCC/VMask.cc:	file << *(ref->pmask);
libvipsCC/VMask.cc:	if( ref->pmask )
libvipsCC/VMask.cc:	ref->pmask = new _private_detail::VPIMask( i );
libvipsCC/VMask.cc:	out.mask().dptr->scale = scale();
libvipsCC/VMask.cc:	out.mask().dptr->offset = offset();
libvipsCC/VMask.cc:	out.mask().iptr->scale = int( scale() );
libvipsCC/VMask.cc:	out.mask().iptr->offset = int( offset() );
libvipsCC/VMask.cc:	if( ref->pmask )
libvipsCC/VMask.cc:	ref->pmask = new _private_detail::VPDMask( i );
libvipsCC/VMask.cc:/* Functions for P*Mask - layer over im_*_*mask() functions.
libvipsCC/VMask.cc:	data.iptr->scale = scale;
libvipsCC/VMask.cc:	data.iptr->offset = offset;
libvipsCC/VMask.cc:		data.iptr->coeff[i] = coeff[i];
libvipsCC/VMask.cc:// Duplicate -- we are a VPIMask, return a new VPIMask which is a copy of us.
libvipsCC/VMask.cc:	out->embed( msk );
libvipsCC/VMask.cc:	return( data.iptr->xsize );
libvipsCC/VMask.cc:	return( data.iptr->ysize );
libvipsCC/VMask.cc:	return( data.iptr->scale );
libvipsCC/VMask.cc:	return( data.iptr->offset );
libvipsCC/VMask.cc:	return( data.iptr->filename );
libvipsCC/VMask.cc:	int *p = data.iptr->coeff;
libvipsCC/VMask.cc:	file << this->xsize() << "\t" << this->ysize() << "\t";
libvipsCC/VMask.cc:	file << this->scale() << "\t" << this->offset() << "\n";
libvipsCC/VMask.cc:	for( i = 0; i < this->ysize(); i++ ) {
libvipsCC/VMask.cc:		for( j = 0; j < this->xsize(); j++ )
libvipsCC/VMask.cc:	return( data.iptr->coeff ); 
libvipsCC/VMask.cc:	data.dptr->scale = scale;
libvipsCC/VMask.cc:	data.dptr->offset = offset;
libvipsCC/VMask.cc:		data.dptr->coeff[i] = coeff[i];
libvipsCC/VMask.cc:// Duplicate -- we are a VPIMask, return a new VPIMask which is a copy of us.
libvipsCC/VMask.cc:	out->embed( msk );
libvipsCC/VMask.cc:	return( data.dptr->xsize );
libvipsCC/VMask.cc:	return( data.dptr->ysize );
libvipsCC/VMask.cc:	return( data.dptr->scale );
libvipsCC/VMask.cc:	return( data.dptr->offset );
libvipsCC/VMask.cc:	return( data.dptr->filename );
libvipsCC/VMask.cc:	double *p = data.dptr->coeff;
libvipsCC/VMask.cc:	file << this->xsize() << "\t" << this->ysize() << "\t";
libvipsCC/VMask.cc:	file << this->scale() << "\t" << this->offset() << "\n";
libvipsCC/VMask.cc:	for( i = 0; i < this->ysize(); i++ ) {
libvipsCC/VMask.cc:		for( j = 0; j < this->xsize(); j++ )
libvipsCC/VMask.cc:	return( data.dptr->coeff ); 
libvipsCC/VMask.cc:	if( ref->nrefs != 1 )
libvipsCC/VMask.cc:	return( ((_private_detail::VPIMask *)ref->pmask)->array()[x] ); 
libvipsCC/VMask.cc:	if( ref->nrefs != 1 )
libvipsCC/VMask.cc:	return( ((_private_detail::VPDMask *)ref->pmask)->array()[x] ); 
libvipsCC/include/vips/Makefile.am:	packages=`vips --list packages | \
libvipsCC/include/vips/Makefile.am:	    vips --cpph $$name >> vipsc++.h ; \
libvipsCC/include/vips/VError.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/include/vips/VError.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/include/vips/vips:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/include/vips/vips:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/include/vips/vips:#include <glib-object.h>
libvipsCC/include/vips/VDisplay.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/include/vips/VDisplay.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/include/vips/VDisplay.h:		// Check that luts are up-to-date
libvipsCC/include/vips/VDisplay.h:	VDisplay( const VDisplay &a ) { ref = a.ref; ref->nrefs++; }
libvipsCC/include/vips/VDisplay.h:	void *disp() const { return( ref->disp ); }
libvipsCC/include/vips/VDisplay.h:		{ ref->cluts(); return( ref->luts ); }
libvipsCC/include/vips/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvipsCC/include/vips/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvipsCC/include/vips/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvipsCC/include/vips/Makefile.in:am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
libvipsCC/include/vips/Makefile.in:  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
libvipsCC/include/vips/Makefile.in:all: all-am
libvipsCC/include/vips/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvipsCC/include/vips/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvipsCC/include/vips/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvipsCC/include/vips/Makefile'; \
libvipsCC/include/vips/Makefile.in:	  $(AUTOMAKE) --gnu libvipsCC/include/vips/Makefile
libvipsCC/include/vips/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvipsCC/include/vips/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvipsCC/include/vips/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvipsCC/include/vips/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvipsCC/include/vips/Makefile.in:mostlyclean-libtool:
libvipsCC/include/vips/Makefile.in:	-rm -f *.lo
libvipsCC/include/vips/Makefile.in:clean-libtool:
libvipsCC/include/vips/Makefile.in:	-rm -rf .libs _libs
libvipsCC/include/vips/Makefile.in:install-pkgincludeHEADERS: $(pkginclude_HEADERS)
libvipsCC/include/vips/Makefile.in:	test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
libvipsCC/include/vips/Makefile.in:	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
libvipsCC/include/vips/Makefile.in:	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
libvipsCC/include/vips/Makefile.in:uninstall-pkgincludeHEADERS:
libvipsCC/include/vips/Makefile.in:	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
libvipsCC/include/vips/Makefile.in:	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
libvipsCC/include/vips/Makefile.in:	test -n "$$files" || exit 0; \
libvipsCC/include/vips/Makefile.in:	echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
libvipsCC/include/vips/Makefile.in:	cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
libvipsCC/include/vips/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvipsCC/include/vips/Makefile.in:	mkid -fID $$unique
libvipsCC/include/vips/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvipsCC/include/vips/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvipsCC/include/vips/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvipsCC/include/vips/Makefile.in:	  if test $$# -gt 0; then \
libvipsCC/include/vips/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvipsCC/include/vips/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvipsCC/include/vips/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvipsCC/include/vips/Makefile.in:distclean-tags:
libvipsCC/include/vips/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvipsCC/include/vips/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvipsCC/include/vips/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvipsCC/include/vips/Makefile.in:			   sort -u` ;; \
libvipsCC/include/vips/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvipsCC/include/vips/Makefile.in:	  if test -d $$d/$$file; then \
libvipsCC/include/vips/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvipsCC/include/vips/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvipsCC/include/vips/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvipsCC/include/vips/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvipsCC/include/vips/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvipsCC/include/vips/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvipsCC/include/vips/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvipsCC/include/vips/Makefile.in:	    test -f "$(distdir)/$$file" \
libvipsCC/include/vips/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvipsCC/include/vips/Makefile.in:check-am: all-am
libvipsCC/include/vips/Makefile.in:check: check-am
libvipsCC/include/vips/Makefile.in:all-am: Makefile $(HEADERS)
libvipsCC/include/vips/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
libvipsCC/include/vips/Makefile.in:install: install-am
libvipsCC/include/vips/Makefile.in:install-exec: install-exec-am
libvipsCC/include/vips/Makefile.in:install-data: install-data-am
libvipsCC/include/vips/Makefile.in:uninstall: uninstall-am
libvipsCC/include/vips/Makefile.in:install-am: all-am
libvipsCC/include/vips/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvipsCC/include/vips/Makefile.in:installcheck: installcheck-am
libvipsCC/include/vips/Makefile.in:install-strip:
libvipsCC/include/vips/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvipsCC/include/vips/Makefile.in:	  `test -z '$(STRIP)' || \
libvipsCC/include/vips/Makefile.in:mostlyclean-generic:
libvipsCC/include/vips/Makefile.in:clean-generic:
libvipsCC/include/vips/Makefile.in:distclean-generic:
libvipsCC/include/vips/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvipsCC/include/vips/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvipsCC/include/vips/Makefile.in:maintainer-clean-generic:
libvipsCC/include/vips/Makefile.in:clean: clean-am
libvipsCC/include/vips/Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
libvipsCC/include/vips/Makefile.in:distclean: distclean-am
libvipsCC/include/vips/Makefile.in:	-rm -f Makefile
libvipsCC/include/vips/Makefile.in:distclean-am: clean-am distclean-generic distclean-tags
libvipsCC/include/vips/Makefile.in:dvi: dvi-am
libvipsCC/include/vips/Makefile.in:dvi-am:
libvipsCC/include/vips/Makefile.in:html: html-am
libvipsCC/include/vips/Makefile.in:html-am:
libvipsCC/include/vips/Makefile.in:info: info-am
libvipsCC/include/vips/Makefile.in:info-am:
libvipsCC/include/vips/Makefile.in:install-data-am: install-pkgincludeHEADERS
libvipsCC/include/vips/Makefile.in:install-dvi: install-dvi-am
libvipsCC/include/vips/Makefile.in:install-dvi-am:
libvipsCC/include/vips/Makefile.in:install-exec-am:
libvipsCC/include/vips/Makefile.in:install-html: install-html-am
libvipsCC/include/vips/Makefile.in:install-html-am:
libvipsCC/include/vips/Makefile.in:install-info: install-info-am
libvipsCC/include/vips/Makefile.in:install-info-am:
libvipsCC/include/vips/Makefile.in:install-man:
libvipsCC/include/vips/Makefile.in:install-pdf: install-pdf-am
libvipsCC/include/vips/Makefile.in:install-pdf-am:
libvipsCC/include/vips/Makefile.in:install-ps: install-ps-am
libvipsCC/include/vips/Makefile.in:install-ps-am:
libvipsCC/include/vips/Makefile.in:installcheck-am:
libvipsCC/include/vips/Makefile.in:maintainer-clean: maintainer-clean-am
libvipsCC/include/vips/Makefile.in:	-rm -f Makefile
libvipsCC/include/vips/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvipsCC/include/vips/Makefile.in:mostlyclean: mostlyclean-am
libvipsCC/include/vips/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
libvipsCC/include/vips/Makefile.in:pdf: pdf-am
libvipsCC/include/vips/Makefile.in:pdf-am:
libvipsCC/include/vips/Makefile.in:ps: ps-am
libvipsCC/include/vips/Makefile.in:ps-am:
libvipsCC/include/vips/Makefile.in:uninstall-am: uninstall-pkgincludeHEADERS
libvipsCC/include/vips/Makefile.in:.MAKE: install-am install-strip
libvipsCC/include/vips/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
libvipsCC/include/vips/Makefile.in:	clean-libtool ctags distclean distclean-generic \
libvipsCC/include/vips/Makefile.in:	distclean-libtool distclean-tags distdir dvi dvi-am html \
libvipsCC/include/vips/Makefile.in:	html-am info info-am install install-am install-data \
libvipsCC/include/vips/Makefile.in:	install-data-am install-dvi install-dvi-am install-exec \
libvipsCC/include/vips/Makefile.in:	install-exec-am install-html install-html-am install-info \
libvipsCC/include/vips/Makefile.in:	install-info-am install-man install-pdf install-pdf-am \
libvipsCC/include/vips/Makefile.in:	install-pkgincludeHEADERS install-ps install-ps-am \
libvipsCC/include/vips/Makefile.in:	install-strip installcheck installcheck-am installdirs \
libvipsCC/include/vips/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
libvipsCC/include/vips/Makefile.in:	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
libvipsCC/include/vips/Makefile.in:	tags uninstall uninstall-am uninstall-pkgincludeHEADERS
libvipsCC/include/vips/Makefile.in:	packages=`vips --list packages | \
libvipsCC/include/vips/Makefile.in:	    vips --cpph $$name >> vipsc++.h ; \
libvipsCC/include/vips/VMask.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/include/vips/VMask.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/include/vips/VMask.h:/* This first section is private. Only expose the non-P versions of these
libvipsCC/include/vips/VMask.h:// Private wrapper over *MASK - user does not see this
libvipsCC/include/vips/VMask.h:	MASKUNION data;			// Mask pointer - INT or DOUBLE
libvipsCC/include/vips/VMask.h:	// Make sure this is a private copy of pmask --- dup if nrefs != 1
libvipsCC/include/vips/VMask.h:	VMask( const VMask &a ) { ref = a.ref; ref->nrefs++; }
libvipsCC/include/vips/VMask.h:		{ return( ref->pmask->xsize() ); }
libvipsCC/include/vips/VMask.h:		{ return( ref->pmask->ysize() ); }
libvipsCC/include/vips/VMask.h:		{ return( ref->pmask->filename() ); }
libvipsCC/include/vips/VMask.h:		{ return( ref->pmask->type ); }
libvipsCC/include/vips/VMask.h:	_private_detail::MASKUNION mask() const { return( ref->pmask->data ); }
libvipsCC/include/vips/VMask.h:		ref->pmask = new _private_detail::VPIMask( xsize, ysize );
libvipsCC/include/vips/VMask.h:		ref->pmask = new _private_detail::VPIMask( xsize, ysize, 
libvipsCC/include/vips/VMask.h:		ref->pmask = new _private_detail::VPIMask( xsize, ysize, 
libvipsCC/include/vips/VMask.h:		ref->pmask = new _private_detail::VPIMask( name );
libvipsCC/include/vips/VMask.h:		return( ((_private_detail::VPIMask *)ref->pmask)->scale() ); 
libvipsCC/include/vips/VMask.h:		return( ((_private_detail::VPIMask *)ref->pmask)->offset() ); 
libvipsCC/include/vips/VMask.h:	// Type conversion: INTMASK->DOUBLEMASK
libvipsCC/include/vips/VMask.h:	// Type conversion: INTMASK->image
libvipsCC/include/vips/VMask.h:		ref->pmask = new _private_detail::VPDMask( xsize, ysize );
libvipsCC/include/vips/VMask.h:		ref->pmask = new _private_detail::VPDMask( xsize, ysize, 
libvipsCC/include/vips/VMask.h:		ref->pmask = new _private_detail::VPDMask( xsize, ysize, 
libvipsCC/include/vips/VMask.h:		ref->pmask = new _private_detail::VPDMask( name );
libvipsCC/include/vips/VMask.h:		return( ((_private_detail::VPDMask *)ref->pmask)->scale() ); 
libvipsCC/include/vips/VMask.h:		return( ((_private_detail::VPDMask *)ref->pmask)->offset() ); 
libvipsCC/include/vips/VMask.h:	// Type conversion: double->int
libvipsCC/include/vips/VMask.h:	// Type conversion: DOUBLEMASK->image
libvipsCC/include/vips/VImage.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/include/vips/VImage.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/include/vips/VImage.h:	 * this->, which isn't what we need. Just make it public and hope no
libvipsCC/include/vips/VImage.h:		// Add a ref - this (output image) depends upon IMAGE in
libvipsCC/include/vips/VImage.h:		// Linked list needs "==" -- use address equivalence
libvipsCC/include/vips/VImage.h:		FMTNOTSET      = -1,
libvipsCC/include/vips/VImage.h:	// Assignment - delete old ref
libvipsCC/include/vips/VImage.h:	virtual ~VImage() throw( VError ) { _ref->removeref(); }
libvipsCC/include/vips/VImage.h:	_VipsImage *image() const { return( _ref->im ); }
libvipsCC/include/vips/VImage.h:	// And some in-line operator equivalences done by hand
libvipsCC/include/vips/VImage.h:	friend VImage operator-( VImage a, VImage b ) throw( VError )
libvipsCC/include/vips/VImage.h:	friend VImage operator-( double a, VImage b ) throw( VError )
libvipsCC/include/vips/VImage.h:		{ return( b.lin( -1.0, a ) ); }
libvipsCC/include/vips/VImage.h:	friend VImage operator-( VImage a, double b ) throw( VError )
libvipsCC/include/vips/VImage.h:		{ return( a.lin( 1.0, -b ) ); }
libvipsCC/include/vips/VImage.h:		{ return( b.pow( -1.0 ).lin( a, 0.0 ) ); }
libvipsCC/include/vips/VImage.h:	friend VImage operator-( VImage a ) throw( VError )
libvipsCC/include/vips/VImage.h:		{ return( a * -1 ); }
libvipsCC/include/vips/VImage.h:		{ return( this->vips2mask() ); }
libvipsCC/include/vips/vipscpp.h:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
libvipsCC/include/vips/vipscpp.h:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
libvipsCC/include/vips/vipscpp.h:/* This header is just for compatibility with the pre-namespace C++ bindings.
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/vips/vipsc++.h:// VIPS library 7.22.1-Tue Jun 22 10:26:51 BST 2010
libvipsCC/include/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
libvipsCC/include/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
libvipsCC/include/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
libvipsCC/include/Makefile.in:RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
libvipsCC/include/Makefile.in:	html-recursive info-recursive install-data-recursive \
libvipsCC/include/Makefile.in:	install-dvi-recursive install-exec-recursive \
libvipsCC/include/Makefile.in:	install-html-recursive install-info-recursive \
libvipsCC/include/Makefile.in:	install-pdf-recursive install-ps-recursive install-recursive \
libvipsCC/include/Makefile.in:	installcheck-recursive installdirs-recursive pdf-recursive \
libvipsCC/include/Makefile.in:	ps-recursive uninstall-recursive
libvipsCC/include/Makefile.in:RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
libvipsCC/include/Makefile.in:  distclean-recursive maintainer-clean-recursive
libvipsCC/include/Makefile.in:AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
libvipsCC/include/Makefile.in:	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
libvipsCC/include/Makefile.in:  while test -n "$$dir1"; do \
libvipsCC/include/Makefile.in:    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
libvipsCC/include/Makefile.in:        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
libvipsCC/include/Makefile.in:        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
libvipsCC/include/Makefile.in:        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
libvipsCC/include/Makefile.in:          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
libvipsCC/include/Makefile.in:    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
libvipsCC/include/Makefile.in:all: all-recursive
libvipsCC/include/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
libvipsCC/include/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
libvipsCC/include/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvipsCC/include/Makefile'; \
libvipsCC/include/Makefile.in:	  $(AUTOMAKE) --gnu libvipsCC/include/Makefile
libvipsCC/include/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
libvipsCC/include/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvipsCC/include/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvipsCC/include/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libvipsCC/include/Makefile.in:mostlyclean-libtool:
libvipsCC/include/Makefile.in:	-rm -f *.lo
libvipsCC/include/Makefile.in:clean-libtool:
libvipsCC/include/Makefile.in:	-rm -rf .libs _libs
libvipsCC/include/Makefile.in:	    *=* | --[!k]*);; \
libvipsCC/include/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
libvipsCC/include/Makefile.in:	    local_target="$$target-am"; \
libvipsCC/include/Makefile.in:	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
libvipsCC/include/Makefile.in:	fi; test -z "$$fail"
libvipsCC/include/Makefile.in:	    *=* | --[!k]*);; \
libvipsCC/include/Makefile.in:	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
libvipsCC/include/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
libvipsCC/include/Makefile.in:	    local_target="$$target-am"; \
libvipsCC/include/Makefile.in:	done && test -z "$$fail"
libvipsCC/include/Makefile.in:tags-recursive:
libvipsCC/include/Makefile.in:ctags-recursive:
libvipsCC/include/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvipsCC/include/Makefile.in:	mkid -fID $$unique
libvipsCC/include/Makefile.in:TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
libvipsCC/include/Makefile.in:	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
libvipsCC/include/Makefile.in:	  include_option=--etags-include; \
libvipsCC/include/Makefile.in:	  include_option=--include; \
libvipsCC/include/Makefile.in:	    test ! -f $$subdir/TAGS || \
libvipsCC/include/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvipsCC/include/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
libvipsCC/include/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
libvipsCC/include/Makefile.in:	  if test $$# -gt 0; then \
libvipsCC/include/Makefile.in:CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
libvipsCC/include/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
libvipsCC/include/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
libvipsCC/include/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
libvipsCC/include/Makefile.in:distclean-tags:
libvipsCC/include/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
libvipsCC/include/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
libvipsCC/include/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
libvipsCC/include/Makefile.in:			   sort -u` ;; \
libvipsCC/include/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
libvipsCC/include/Makefile.in:	  if test -d $$d/$$file; then \
libvipsCC/include/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
libvipsCC/include/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
libvipsCC/include/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvipsCC/include/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
libvipsCC/include/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
libvipsCC/include/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
libvipsCC/include/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
libvipsCC/include/Makefile.in:	    test -f "$(distdir)/$$file" \
libvipsCC/include/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
libvipsCC/include/Makefile.in:	    test -d "$(distdir)/$$subdir" \
libvipsCC/include/Makefile.in:check-am: all-am
libvipsCC/include/Makefile.in:check: check-recursive
libvipsCC/include/Makefile.in:all-am: Makefile
libvipsCC/include/Makefile.in:installdirs: installdirs-recursive
libvipsCC/include/Makefile.in:installdirs-am:
libvipsCC/include/Makefile.in:install: install-recursive
libvipsCC/include/Makefile.in:install-exec: install-exec-recursive
libvipsCC/include/Makefile.in:install-data: install-data-recursive
libvipsCC/include/Makefile.in:uninstall: uninstall-recursive
libvipsCC/include/Makefile.in:install-am: all-am
libvipsCC/include/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
libvipsCC/include/Makefile.in:installcheck: installcheck-recursive
libvipsCC/include/Makefile.in:install-strip:
libvipsCC/include/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
libvipsCC/include/Makefile.in:	  `test -z '$(STRIP)' || \
libvipsCC/include/Makefile.in:mostlyclean-generic:
libvipsCC/include/Makefile.in:clean-generic:
libvipsCC/include/Makefile.in:distclean-generic:
libvipsCC/include/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
libvipsCC/include/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
libvipsCC/include/Makefile.in:maintainer-clean-generic:
libvipsCC/include/Makefile.in:clean: clean-recursive
libvipsCC/include/Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
libvipsCC/include/Makefile.in:distclean: distclean-recursive
libvipsCC/include/Makefile.in:	-rm -f Makefile
libvipsCC/include/Makefile.in:distclean-am: clean-am distclean-generic distclean-tags
libvipsCC/include/Makefile.in:dvi: dvi-recursive
libvipsCC/include/Makefile.in:dvi-am:
libvipsCC/include/Makefile.in:html: html-recursive
libvipsCC/include/Makefile.in:html-am:
libvipsCC/include/Makefile.in:info: info-recursive
libvipsCC/include/Makefile.in:info-am:
libvipsCC/include/Makefile.in:install-data-am:
libvipsCC/include/Makefile.in:install-dvi: install-dvi-recursive
libvipsCC/include/Makefile.in:install-dvi-am:
libvipsCC/include/Makefile.in:install-exec-am:
libvipsCC/include/Makefile.in:install-html: install-html-recursive
libvipsCC/include/Makefile.in:install-html-am:
libvipsCC/include/Makefile.in:install-info: install-info-recursive
libvipsCC/include/Makefile.in:install-info-am:
libvipsCC/include/Makefile.in:install-man:
libvipsCC/include/Makefile.in:install-pdf: install-pdf-recursive
libvipsCC/include/Makefile.in:install-pdf-am:
libvipsCC/include/Makefile.in:install-ps: install-ps-recursive
libvipsCC/include/Makefile.in:install-ps-am:
libvipsCC/include/Makefile.in:installcheck-am:
libvipsCC/include/Makefile.in:maintainer-clean: maintainer-clean-recursive
libvipsCC/include/Makefile.in:	-rm -f Makefile
libvipsCC/include/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
libvipsCC/include/Makefile.in:mostlyclean: mostlyclean-recursive
libvipsCC/include/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
libvipsCC/include/Makefile.in:pdf: pdf-recursive
libvipsCC/include/Makefile.in:pdf-am:
libvipsCC/include/Makefile.in:ps: ps-recursive
libvipsCC/include/Makefile.in:ps-am:
libvipsCC/include/Makefile.in:uninstall-am:
libvipsCC/include/Makefile.in:.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
libvipsCC/include/Makefile.in:	install-am install-strip tags-recursive
libvipsCC/include/Makefile.in:	all all-am check check-am clean clean-generic clean-libtool \
libvipsCC/include/Makefile.in:	ctags ctags-recursive distclean distclean-generic \
libvipsCC/include/Makefile.in:	distclean-libtool distclean-tags distdir dvi dvi-am html \
libvipsCC/include/Makefile.in:	html-am info info-am install install-am install-data \
libvipsCC/include/Makefile.in:	install-data-am install-dvi install-dvi-am install-exec \
libvipsCC/include/Makefile.in:	install-exec-am install-html install-html-am install-info \
libvipsCC/include/Makefile.in:	install-info-am install-man install-pdf install-pdf-am \
libvipsCC/include/Makefile.in:	install-ps install-ps-am install-strip installcheck \
libvipsCC/include/Makefile.in:	installcheck-am installdirs installdirs-am maintainer-clean \
libvipsCC/include/Makefile.in:	maintainer-clean-generic mostlyclean mostlyclean-generic \
libvipsCC/include/Makefile.in:	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
libvipsCC/include/Makefile.in:	uninstall uninstall-am
ltmain.sh:# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ltmain.sh:# Usage: $progname [OPTION]... [MODE-ARG]...
ltmain.sh:# Provide generalized library-building support services.
ltmain.sh:#     --config             show all configuration variables
ltmain.sh:#     --debug              enable verbose shell tracing
ltmain.sh:# -n, --dry-run            display commands without modifying any files
ltmain.sh:#     --features           display basic configuration information and exit
ltmain.sh:#     --mode=MODE          use operation mode MODE
ltmain.sh:#     --preserve-dup-deps  don't remove duplicate dependency libraries
ltmain.sh:#     --quiet, --silent    don't print informational messages
ltmain.sh:#     --tag=TAG            use configuration variables from tag TAG
ltmain.sh:# -v, --verbose            print informational messages (default)
ltmain.sh:#     --version            print version information
ltmain.sh:# -h, --help               print short or long help message
ltmain.sh:# MODE-ARGS vary depending on the MODE.
ltmain.sh:# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
ltmain.sh:#       host-triplet:	$host
ltmain.sh:#       $progname:		(GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1
ltmain.sh:# Report bugs to <bug-libtool@gnu.org>.
ltmain.sh:VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"
ltmain.sh:if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
ltmain.sh:  alias -g '${1+"$@"}'='"$@"'
ltmain.sh:  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
ltmain.sh:: ${CP="cp -f"}
ltmain.sh:: ${EGREP="/bin/grep -E"}
ltmain.sh:: ${FGREP="/bin/grep -F"}
ltmain.sh:: ${LN_S="ln -s"}
ltmain.sh:: ${MV="mv -f"}
ltmain.sh:: ${RM="rm -f"}
ltmain.sh:: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
ltmain.sh:: ${Xsed="$SED -e 1s/^X//"}
ltmain.sh:  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
ltmain.sh:  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
ltmain.sh:# In the unlikely event $progname began with a '-', it would play havoc with
ltmain.sh:# func_echo (imagine progname=-n), so we prepend ./ in that case:
ltmain.sh:  -*) progname=./$progname ;;
ltmain.sh:  [\\/]*|[A-Za-z]:\\*) ;;
ltmain.sh:       test -x "$progdir/$progname" && break
ltmain.sh:     test -n "$progdir" || progdir=`pwd`
ltmain.sh:# metacharacters that are still active within double-quoted strings.
ltmain.sh:Xsed="${SED}"' -e 1s/^X//'
ltmain.sh:# Re-`\' parameter expansions in output of double_quote_subst that were
ltmain.sh:# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
ltmain.sh:    # fails when set -e is in force, so we need another command to
ltmain.sh:help="Try \`$progname --help' for more information."  ## default
ltmain.sh:# func_mkdir_p directory-path
ltmain.sh:# Make sure the entire path to DIRECTORY-PATH is available.
ltmain.sh:    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
ltmain.sh:      # Protect directory names starting with `-'
ltmain.sh:        -*) my_directory_path="./$my_directory_path" ;;
ltmain.sh:      while test ! -d "$my_directory_path"; do
ltmain.sh:        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
ltmain.sh:      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
ltmain.sh:      test -d "$my_directory_path" || \
ltmain.sh:    my_template="${TMPDIR-/tmp}/${1-$progname}"
ltmain.sh:      # Return a directory name, but don't create it in dry-run mode
ltmain.sh:      my_tmpdir="${my_template}-$$"
ltmain.sh:      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
ltmain.sh:      if test ! -d "$my_tmpdir"; then
ltmain.sh:        my_tmpdir="${my_template}-${RANDOM-0}$$"
ltmain.sh:      # If we're not in dry-run mode, bomb out on failure
ltmain.sh:      test -d "$my_tmpdir" || \
ltmain.sh:# is double-quoted, suitable for a subsequent eval, whereas
ltmain.sh:	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
ltmain.sh:      # Double-quote args containing shell metacharacters to delay
ltmain.sh:	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
ltmain.sh:      # Double-quote args containing shell metacharacters to delay
ltmain.sh:    my_fail_exp="${2-:}"
ltmain.sh:    ${opt_silent-false} || {
ltmain.sh:    if ${opt_dry_run-false}; then :; else
ltmain.sh:      if test "$my_status" -eq 0; then :; else
ltmain.sh:    my_fail_exp="${2-:}"
ltmain.sh:    ${opt_silent-false} || {
ltmain.sh:    if ${opt_dry_run-false}; then :; else
ltmain.sh:      if test "$my_status" -eq 0; then :; else
ltmain.sh:    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
ltmain.sh:        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
ltmain.sh:    $SED -n '/^# Usage:/,/# -h/ {
ltmain.sh:    $ECHO "run \`$progname --help | more' for full usage"
ltmain.sh:    $SED -n '/^# Usage:/,/# Report bugs to/ {
ltmain.sh:	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
ltmain.sh:	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
ltmain.sh:if test "X$1" = X--no-reexec; then
ltmain.sh:  # Discard the --no-reexec flag, and continue.
ltmain.sh:elif test "X$1" = X--fallback-echo; then
ltmain.sh:  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
ltmain.sh:if test "X$1" = X--fallback-echo; then
ltmain.sh:# will be execed at the end.  This prevents here-documents from being
ltmain.sh:      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
ltmain.sh:    *[!-_A-Za-z0-9,/]*)
ltmain.sh:	# also don't use non-portable quotes within backquotes within
ltmain.sh:	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
ltmain.sh:# the script to make things like `libtool --version' happen quickly.
ltmain.sh:  # Shorthand for --mode=foo, only valid as the first argument
ltmain.sh:    shift; set dummy --mode clean ${1+"$@"}; shift
ltmain.sh:    shift; set dummy --mode compile ${1+"$@"}; shift
ltmain.sh:    shift; set dummy --mode execute ${1+"$@"}; shift
ltmain.sh:    shift; set dummy --mode finish ${1+"$@"}; shift
ltmain.sh:    shift; set dummy --mode install ${1+"$@"}; shift
ltmain.sh:    shift; set dummy --mode link ${1+"$@"}; shift
ltmain.sh:    shift; set dummy --mode uninstall ${1+"$@"}; shift
ltmain.sh:  # Parse non-mode specific arguments:
ltmain.sh:  while test "$#" -gt 0; do
ltmain.sh:      --config)		func_config					;;
ltmain.sh:      --debug)		preserve_args="$preserve_args $opt"
ltmain.sh:			opt_debug='set -x'
ltmain.sh:      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
ltmain.sh:      --dry-run | -n)	opt_dry_run=:					;;
ltmain.sh:      --features)       func_features					;;
ltmain.sh:      --finish)		mode="finish"					;;
ltmain.sh:      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
ltmain.sh:      --preserve-dup-deps)
ltmain.sh:      --quiet|--silent)	preserve_args="$preserve_args $opt"
ltmain.sh:      --verbose| -v)	preserve_args="$preserve_args $opt"
ltmain.sh:      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
ltmain.sh:      -dlopen=*|--mode=*|--tag=*)
ltmain.sh:      -\?|-h)		func_usage					;;
ltmain.sh:      --help)		opt_help=:					;;
ltmain.sh:      --version)	func_version					;;
ltmain.sh:      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
ltmain.sh:  # Having warned about all mis-specified options, bail out if
ltmain.sh:      if test -z "$macro_version"; then
ltmain.sh:## ----------- ##
ltmain.sh:## ----------- ##
ltmain.sh:  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
ltmain.sh:  # Only execute mode is allowed to have -dlopen flags.
ltmain.sh:  if test -n "$execute_dlfiles" && test "$mode" != execute; then
ltmain.sh:    func_error "unrecognized option \`-dlopen'"
ltmain.sh:  # Change the help message to a mode-specific one.
ltmain.sh:  help="Try \`$progname --help --mode=$mode' for more information."
ltmain.sh:    test -f "$1" &&
ltmain.sh:      $SED -e 4q "$1" 2>/dev/null \
ltmain.sh:    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
ltmain.sh:	exec 0<&5 5<&-
ltmain.sh:# Execute tilde-delimited COMMANDS.
ltmain.sh:# FAIL_CMD may read-access the current command in variable CMD!
ltmain.sh:      func_show_eval "$cmd" "${2-:}"
ltmain.sh:# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
ltmain.sh:# if one wasn't chosen via the "--tag" command line option.
ltmain.sh:    if test -n "$available_tags" && test -z "$tagname"; then
ltmain.sh:	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
ltmain.sh:	      # Double-quote args containing other shell metacharacters.
ltmain.sh:	# was found and let the user know that the "--tag" command
ltmain.sh:	if test -z "$tagname"; then
ltmain.sh:	  func_fatal_error "specify a tag with \`--tag'"
ltmain.sh:# $write_libobj - a libtool object file
ltmain.sh:# Name of the non-PIC object
ltmain.sh:    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
ltmain.sh:	# Accept any command-line options.
ltmain.sh:	-o)
ltmain.sh:	  test -n "$libobj" && \
ltmain.sh:	    func_fatal_error "you cannot specify \`-o' more than once"
ltmain.sh:	-pie | -fpie | -fPIE)
ltmain.sh:	-shared | -static | -prefer-pic | -prefer-non-pic)
ltmain.sh:	-no-suppress)
ltmain.sh:	-Xcompiler)
ltmain.sh:	-Wc,*)
ltmain.sh:	  func_stripname '-Wc,' '' "$arg"
ltmain.sh:      func_fatal_error "you must specify an argument for -Xcompile"
ltmain.sh:      func_fatal_error "you must specify a target with \`-o'"
ltmain.sh:      test -z "$libobj" && {
ltmain.sh:    # If the user specifies -o file.o, it is replaced with file.lo
ltmain.sh:      -shared)
ltmain.sh:      -static)
ltmain.sh:      -prefer-pic)
ltmain.sh:      -prefer-non-pic)
ltmain.sh:    test -z "$base_compile" && \
ltmain.sh:      # non-PIC code in shared libraries is not supported
ltmain.sh:    # not support -o with -c
ltmain.sh:      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
ltmain.sh:      if test -f "$lockfile"; then
ltmain.sh:your compiler does not support \`-c' and \`-o' together.  If you
ltmain.sh:avoid parallel builds (make -j) in this platform, or get a better
ltmain.sh:    if test -n "$fix_srcfile_path"; then
ltmain.sh:      if test -z "$output_obj"; then
ltmain.sh:	command="$command -o $lobj"
ltmain.sh:          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
ltmain.sh:your compiler does not support \`-c' and \`-o' together.  If you
ltmain.sh:avoid parallel builds (make -j) in this platform, or get a better
ltmain.sh:      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
ltmain.sh:    # Only build a position-dependent object if we build old libraries.
ltmain.sh:	command="$command -o $obj"
ltmain.sh:your compiler does not support \`-c' and \`-o' together.  If you
ltmain.sh:avoid parallel builds (make -j) in this platform, or get a better
ltmain.sh:      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
ltmain.sh:"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
ltmain.sh:(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
ltmain.sh:"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
ltmain.sh:  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
ltmain.sh:  -no-suppress      do not suppress compiler output for multiple passes
ltmain.sh:  -prefer-pic       try to building PIC objects only
ltmain.sh:  -prefer-non-pic   try to building non-PIC objects only
ltmain.sh:  -shared           do not build a \`.o' file suitable for static linking
ltmain.sh:  -static           only build a \`.o' file suitable for static linking
ltmain.sh:COMPILE-COMMAND is a command to be used in creating a \`standard' object file
ltmain.sh:"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
ltmain.sh:  -dlopen FILE      add the directory containing FILE to the library path
ltmain.sh:This mode sets the library path environment variable according to \`-dlopen'
ltmain.sh:"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
ltmain.sh:the \`--dry-run' option if you just want to see what would be executed."
ltmain.sh:"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
ltmain.sh:INSTALL-COMMAND is the installation command.  The first component should be
ltmain.sh:The following components of INSTALL-COMMAND are treated specially:
ltmain.sh:  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
ltmain.sh:BSD-compatible install options are recognized)."
ltmain.sh:"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
ltmain.sh:LINK-COMMAND is a command using the C compiler that you would use to create
ltmain.sh:The following components of LINK-COMMAND are treated specially:
ltmain.sh:  -all-static       do not do any dynamic linking at all
ltmain.sh:  -avoid-version    do not add a version suffix if possible
ltmain.sh:  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
ltmain.sh:  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
ltmain.sh:  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
ltmain.sh:  -export-symbols SYMFILE
ltmain.sh:  -export-symbols-regex REGEX
ltmain.sh:  -LLIBDIR          search LIBDIR for required installed libraries
ltmain.sh:  -lNAME            OUTPUT-FILE requires the installed library libNAME
ltmain.sh:  -module           build a library that can dlopened
ltmain.sh:  -no-fast-install  disable the fast-install mode
ltmain.sh:  -no-install       link a not-installable executable
ltmain.sh:  -no-undefined     declare that a library does not refer to external symbols
ltmain.sh:  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
ltmain.sh:  -objectlist FILE  Use a list of object files found in FILE to specify objects
ltmain.sh:  -precious-files-regex REGEX
ltmain.sh:  -release RELEASE  specify package release information
ltmain.sh:  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
ltmain.sh:  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
ltmain.sh:  -shared           only do dynamic linking of libtool libraries
ltmain.sh:  -shrext SUFFIX    override the standard shared library file extension
ltmain.sh:  -static           do not do any dynamic linking of uninstalled libtool libraries
ltmain.sh:  -static-libtool-libs
ltmain.sh:  -version-info CURRENT[:REVISION[:AGE]]
ltmain.sh:  -weak LIBNAME     declare that the target provides the LIBNAME interface
ltmain.sh:All other options (arguments beginning with \`-') are ignored.
ltmain.sh:If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
ltmain.sh:only library objects (\`.lo' files) may be specified, and \`-rpath' is
ltmain.sh:If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
ltmain.sh:If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
ltmain.sh:"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
ltmain.sh:(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
ltmain.sh:    $ECHO "Try \`$progname --help' for more information about other modes."
ltmain.sh:  # Now that we've collected a possible --mode arg, show help if necessary
ltmain.sh:    test -z "$cmd" && \
ltmain.sh:    # Handle -dlopen flags immediately.
ltmain.sh:      test -f "$file" \
ltmain.sh:	if test -z "$dlname"; then
ltmain.sh:	  test -n "$library_names" && \
ltmain.sh:	    func_warning "\`$file' was not linked with \`-export-dynamic'"
ltmain.sh:	if test -f "$dir/$objdir/$dlname"; then
ltmain.sh:	  if test ! -f "$dir/$dlname"; then
ltmain.sh:	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
ltmain.sh:      test -n "$absdir" && dir="$absdir"
ltmain.sh:      if eval "test -z \"\$$shlibpath_var\""; then
ltmain.sh:      -*) ;;
ltmain.sh:      if test -n "$shlibpath_var"; then
ltmain.sh:      if test -n "$shlibpath_var"; then
ltmain.sh:    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
ltmain.sh:	if test -n "$finish_cmds"; then
ltmain.sh:	if test -n "$finish_eval"; then
ltmain.sh:    $ECHO "X----------------------------------------------------------------------" | $Xsed
ltmain.sh:    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
ltmain.sh:    if test -n "$shlibpath_var"; then
ltmain.sh:      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
ltmain.sh:    if test -n "$runpath_var"; then
ltmain.sh:      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
ltmain.sh:    if test -n "$hardcode_libdir_flag_spec"; then
ltmain.sh:      $ECHO "   - use the \`$flag' linker flag"
ltmain.sh:    if test -n "$admincmds"; then
ltmain.sh:      $ECHO "   - have your system administrator run these commands:$admincmds"
ltmain.sh:    if test -f /etc/ld.so.conf; then
ltmain.sh:      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
ltmain.sh:      solaris2.[6789]|solaris2.1[0-9])
ltmain.sh:    $ECHO "X----------------------------------------------------------------------" | $Xsed
ltmain.sh:      if test -n "$dest"; then
ltmain.sh:      -d) isdir=yes ;;
ltmain.sh:      -f)
ltmain.sh:      -g | -m | -o)
ltmain.sh:      -s)
ltmain.sh:	stripme=" -s"
ltmain.sh:      -*)
ltmain.sh:	if test -n "$prev"; then
ltmain.sh:    test -z "$install_prog" && \
ltmain.sh:    test -n "$prev" && \
ltmain.sh:    if test -z "$files"; then
ltmain.sh:      if test -z "$dest"; then
ltmain.sh:    test -d "$dest" && isdir=yes
ltmain.sh:      test "$#" -gt 1 && \
ltmain.sh:    [\\/]* | [A-Za-z]:[\\/]*) ;;
ltmain.sh:	if test -n "$relink_command"; then
ltmain.sh:	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
ltmain.sh:	  if test -n "$inst_prefix_dir"; then
ltmain.sh:	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
ltmain.sh:	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
ltmain.sh:	if test -n "$1"; then
ltmain.sh:	  test -n "$relink_command" && srcname="$realname"T
ltmain.sh:	  if test -n "$tstripme" && test -n "$striplib"; then
ltmain.sh:	  if test "$#" -gt 0; then
ltmain.sh:	    # Try `ln -sf' first, because the `ln' binary might depend on
ltmain.sh:	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
ltmain.sh:	    # so we also need to try rm && ln -s.
ltmain.sh:		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
ltmain.sh:	# Install the pseudo-library for information purposes.
ltmain.sh:	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
ltmain.sh:	if test -n "$destname"; then
ltmain.sh:	# Deduce the name of the destination old-style object file.
ltmain.sh:	test -n "$destfile" && \
ltmain.sh:	  # Deduce the name of the old-style object file.
ltmain.sh:	if test -n "$destname"; then
ltmain.sh:	    if test ! -f "$file"; then
ltmain.sh:	  test -z "$generated_by_libtool_version" && \
ltmain.sh:	    if test -f "$lib"; then
ltmain.sh:	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
ltmain.sh:	    if test -n "$libdir" && test ! -f "$libfile"; then
ltmain.sh:	  if test "$fast_install" = no && test -n "$relink_command"; then
ltmain.sh:	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
ltmain.sh:	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
ltmain.sh:	$opt_dry_run || if test -n "$outputname"; then
ltmain.sh:      if test -n "$stripme" && test -n "$old_striplib"; then
ltmain.sh:    test -n "$future_libdirs" && \
ltmain.sh:      func_warning "remember to run \`$progname --finish$future_libdirs'"
ltmain.sh:    if test -n "$current_libdirs"; then
ltmain.sh:      $opt_dry_run && current_libdirs=" -n$current_libdirs"
ltmain.sh:      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
ltmain.sh:    my_pic_p="${3-no}"
ltmain.sh:    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
ltmain.sh:    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
ltmain.sh:      if test -n "$NM" && test -n "$global_symbol_pipe"; then
ltmain.sh:    if test -n "$my_dlsyms"; then
ltmain.sh:/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
ltmain.sh:	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
ltmain.sh:	  if test -n "$exclude_expsyms"; then
ltmain.sh:	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
ltmain.sh:	  if test -n "$export_symbols_regex"; then
ltmain.sh:	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
ltmain.sh:	  if test -z "$export_symbols"; then
ltmain.sh:	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
ltmain.sh:	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
ltmain.sh:	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
ltmain.sh:	  test -f "$nlist" || : > "$nlist"
ltmain.sh:	  if test -n "$exclude_expsyms"; then
ltmain.sh:	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
ltmain.sh:	  if $GREP -v "^: " < "$nlist" |
ltmain.sh:	      if sort -k 3 </dev/null >/dev/null 2>&1; then
ltmain.sh:		sort -k 3
ltmain.sh:	    $GREP -v "^: " < "$nlist" > "$nlist"S
ltmain.sh:	  if test -f "$nlist"S; then
ltmain.sh:   runtime relocations are performed -- see ld's documentation
ltmain.sh:   on pseudo-relocs.  */"
ltmain.sh:	*" -static "*) ;;
ltmain.sh:	  # a FreeBSD bug that causes programs to crash when -lm is
ltmain.sh:	  # pic_flag when linking with -static.  The problem exists in
ltmain.sh:	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
ltmain.sh:	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
ltmain.sh:	  *-*-hpux*)
ltmain.sh:	  -pie | -fpie | -fPIE) ;;
ltmain.sh:	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
ltmain.sh:	  if test -f "$output_objdir/$my_outputname.def"; then
ltmain.sh:	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
ltmain.sh:	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
ltmain.sh:	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
ltmain.sh:	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
ltmain.sh:	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
ltmain.sh:	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
ltmain.sh:      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
ltmain.sh:      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
ltmain.sh:  win32_fileres=`file -L $1 2>/dev/null`
ltmain.sh:    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
ltmain.sh:       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
ltmain.sh:      win32_nmres=`eval $NM -f posix -A $1 |
ltmain.sh:	$SED -n -e '
ltmain.sh:    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
ltmain.sh:	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
ltmain.sh:	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
ltmain.sh:      *-darwin*)
ltmain.sh:	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
ltmain.sh:	  if test -n "$darwin_arches"; then
ltmain.sh:	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
ltmain.sh:	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
ltmain.sh:	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
ltmain.sh:	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
ltmain.sh:	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
ltmain.sh:	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
ltmain.sh:	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
ltmain.sh:	      $LIPO -create -output "$darwin_file" $darwin_files
ltmain.sh:	    $RM -rf unfat-$$
ltmain.sh:      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
ltmain.sh:	if test -n "$1" ; then
ltmain.sh:# $output - temporary wrapper script for $objdir/$outputname
ltmain.sh:# metacharacters that are still active within double-quoted strings.
ltmain.sh:Xsed='${SED} -e 1s/^X//'
ltmain.sh:if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
ltmain.sh:  alias -g '\${1+\"\$@\"}'='\"\$@\"'
ltmain.sh:  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
ltmain.sh:# The HP-UX ksh and POSIX shell print the target directory to stdout
ltmain.sh:    if test \"X\$1\" = X--no-reexec; then
ltmain.sh:      # Discard the --no-reexec flag, and continue.
ltmain.sh:      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
ltmain.sh:  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
ltmain.sh:  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
ltmain.sh:  while test -n \"\$file\"; do
ltmain.sh:    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
ltmain.sh:      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
ltmain.sh:    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
ltmain.sh:    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
ltmain.sh:	if test -n "$1" ; then
ltmain.sh:    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
ltmain.sh:  test -n \"\$absdir\" && thisdir=\"\$absdir\"
ltmain.sh:  program=lt-'$outputname'$exeext
ltmain.sh:  if test ! -f \"\$progdir/\$program\" ||
ltmain.sh:     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
ltmain.sh:    file=\"\$\$-\$program\"
ltmain.sh:    if test ! -d \"\$progdir\"; then
ltmain.sh:    if test -n \"\$relink_command\"; then
ltmain.sh:  if test -f \"\$progdir/\$program\"; then"
ltmain.sh:	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
ltmain.sh:    # Some systems cannot cope with colon-terminated $shlibpath_var
ltmain.sh:    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
ltmain.sh:	if test -n "$dllsearchpath"; then
ltmain.sh:	*-*-mingw | *-*-os2* | *-cegcc*)
ltmain.sh:# the $objdir directory.  This is a cygwin/mingw-specific
ltmain.sh:	if test -n "$1" ; then
ltmain.sh:# is running under the msys shell), or in the following cross-
ltmain.sh:# converts paths for any non-msys applications it launches,
ltmain.sh:  if test -n "$1" ; then
ltmain.sh:              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
ltmain.sh:              $SED -e "$lt_sed_naive_backslashify"`
ltmain.sh:            func_to_host_path_tmp1=`cygpath -w "$1"`
ltmain.sh:              $SED -e "$lt_sed_naive_backslashify"`
ltmain.sh:            # Unfortunately, winepath does not exit with a non-zero
ltmain.sh:            # error code of zero AND non-empty stdout, which explains
ltmain.sh:            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
ltmain.sh:            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
ltmain.sh:                $SED -e "$lt_sed_naive_backslashify"`
ltmain.sh:        if test -z "$func_to_host_path_result" ; then
ltmain.sh:  if test -n "$1" ; then
ltmain.sh:          $SED -e 's|^:*||' -e 's|:*$||'`
ltmain.sh:              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
ltmain.sh:              $SED -e "$lt_sed_naive_backslashify"`
ltmain.sh:            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
ltmain.sh:              $SED -e "$lt_sed_naive_backslashify"`
ltmain.sh:              if test -n "$func_to_host_pathlist_f" ; then
ltmain.sh:                if test -n "$func_to_host_path_result" ; then
ltmain.sh:                  if test -z "$func_to_host_pathlist_result" ; then
ltmain.sh:        if test -z "$func_to_host_pathlist_result" ; then
ltmain.sh:          # Fallback. This may break if $1 contains DOS-style drive
ltmain.sh:          # with winepath so that path translation in the cross-to-mingw
ltmain.sh:            $SED -e "$lt_replace_pathsep_nix_to_dos"`
ltmain.sh:/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
ltmain.sh:	        $SED -e 's/\([\\"]\)/\\\1/g' \
ltmain.sh:	             -e 's/^/  "/' -e 's/$/\\n"/'
ltmain.sh:	        $SED -e 's/\([\\"]\)/\\\1/g' \
ltmain.sh:	             -e 's/^/  "/' -e 's/$/\\n"/'
ltmain.sh:	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
ltmain.sh:	    if test -n "$dllsearchpath"; then
ltmain.sh:const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
ltmain.sh:#define LTWRAPPER_OPTION_PREFIX         "--lt-"
ltmain.sh:static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
ltmain.sh:static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
ltmain.sh:  /* argument is putenv-style "foo=bar", value of foo is set to bar */
ltmain.sh:static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
ltmain.sh:  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
ltmain.sh:static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
ltmain.sh:  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
ltmain.sh:  /* target_name transforms -- use actual target program name; might have lt- prefix */
ltmain.sh:  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
ltmain.sh:  /* DO want the lt- prefix here if it exists, so use target_name */
ltmain.sh:             have already dealt with, above (inluding dump-script), then
ltmain.sh:             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
ltmain.sh:             or a configure.ac-settable value.
ltmain.sh:  if (rval == -1)
ltmain.sh:	      p_len = q - p;
ltmain.sh:	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
ltmain.sh:	    p--;
ltmain.sh:      str += len - patlen;
ltmain.sh:  len = strlen (arg) - strlen (*value);
ltmain.sh:  strncpy (*name, arg, len-1);
ltmain.sh:  (*name)[len - 1] = '\0';
ltmain.sh:      /* some systems can't cope with a ':'-terminated path #' */
ltmain.sh:      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
ltmain.sh:          new_value[len-1] = '\0';
ltmain.sh:    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
ltmain.sh:      # -no-undefined on the libtool link line when we can be certain
ltmain.sh:    single_module="${wl}-single_module"
ltmain.sh:    # We need to know -static, to get the right output filenames.
ltmain.sh:      -shared)
ltmain.sh:      -all-static | -static | -static-libtool-libs)
ltmain.sh:	-all-static)
ltmain.sh:	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
ltmain.sh:	  if test -n "$link_static_flag"; then
ltmain.sh:	-static)
ltmain.sh:	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
ltmain.sh:	-static-libtool-libs)
ltmain.sh:	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
ltmain.sh:    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
ltmain.sh:    while test "$#" -gt 0; do
ltmain.sh:      if test -n "$prev"; then
ltmain.sh:	  test -f "$arg" \
ltmain.sh:	    *-*-darwin*)
ltmain.sh:	  if test -f "$arg"; then
ltmain.sh:	      # A libtool-controlled object.
ltmain.sh:		if test -z "$pic_object" ||
ltmain.sh:		   test -z "$non_pic_object" ||
ltmain.sh:		  # CHECK ME:  I think I busted this.  -Ossama
ltmain.sh:		    # Preload the old-style object.
ltmain.sh:		# Non-PIC object.
ltmain.sh:		  # A standard non-PIC object
ltmain.sh:		  if test -z "$pic_object" || test "$pic_object" = none ; then
ltmain.sh:		# Only an error if not doing a dry-run.
ltmain.sh:	  release="-$arg"
ltmain.sh:	  [\\/]* | [A-Za-z]:[\\/]*) ;;
ltmain.sh:	    func_fatal_error "only absolute run-paths are allowed"
ltmain.sh:      fi # test -n "$prev"
ltmain.sh:      -all-static)
ltmain.sh:	if test -n "$link_static_flag"; then
ltmain.sh:	  # See comment for -static flag below, for more details.
ltmain.sh:      -allow-undefined)
ltmain.sh:	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
ltmain.sh:      -avoid-version)
ltmain.sh:      -dlopen)
ltmain.sh:      -dlpreopen)
ltmain.sh:      -export-dynamic)
ltmain.sh:      -export-symbols | -export-symbols-regex)
ltmain.sh:	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
ltmain.sh:	  func_fatal_error "more than one -exported-symbols argument is not allowed"
ltmain.sh:	if test "X$arg" = "X-export-symbols"; then
ltmain.sh:      -framework)
ltmain.sh:      -inst-prefix-dir)
ltmain.sh:      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
ltmain.sh:      # so, if we see these flags be careful not to treat them like -L
ltmain.sh:      -L[A-Z][A-Z]*:*)
ltmain.sh:	no/*-*-irix* | /*-*-irix*)
ltmain.sh:      -L*)
ltmain.sh:	func_stripname '-L' '' "$arg"
ltmain.sh:	if test -z "$dir"; then
ltmain.sh:	  if test "$#" -gt 0; then
ltmain.sh:	    func_fatal_error "require no space between \`-L' and \`$1'"
ltmain.sh:	    func_fatal_error "need path for \`-L' option"
ltmain.sh:	[\\/]* | [A-Za-z]:[\\/]*) ;;
ltmain.sh:	  test -z "$absdir" && \
ltmain.sh:	*" -L$dir "*) ;;
ltmain.sh:	  deplibs="$deplibs -L$dir"
ltmain.sh:	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
ltmain.sh:	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
ltmain.sh:      -l*)
ltmain.sh:	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
ltmain.sh:	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
ltmain.sh:	  *-*-os2*)
ltmain.sh:	    test "X$arg" = "X-lc" && continue
ltmain.sh:	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
ltmain.sh:	    test "X$arg" = "X-lc" && continue
ltmain.sh:	  *-*-rhapsody* | *-*-darwin1.[012])
ltmain.sh:	  *-*-sco3.2v5* | *-*-sco5v6*)
ltmain.sh:	    test "X$arg" = "X-lc" && continue
ltmain.sh:	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
ltmain.sh:	    test "X$arg" = "X-lc" && continue
ltmain.sh:	elif test "X$arg" = "X-lc_r"; then
ltmain.sh:	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
ltmain.sh:	   # Do not include libc_r directly, use -pthread flag.
ltmain.sh:      -module)
ltmain.sh:      # Tru64 UNIX uses -model [arg] to determine the layout of C++
ltmain.sh:      # Darwin uses the -arch flag to determine output architecture.
ltmain.sh:      -model|-arch|-isysroot)
ltmain.sh:      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
ltmain.sh:      -multi_module)
ltmain.sh:	single_module="${wl}-multi_module"
ltmain.sh:      -no-fast-install)
ltmain.sh:      -no-install)
ltmain.sh:	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
ltmain.sh:	  func_warning "\`-no-install' is ignored for $host"
ltmain.sh:	  func_warning "assuming \`-no-fast-install' instead"
ltmain.sh:      -no-undefined)
ltmain.sh:      -objectlist)
ltmain.sh:      -o) prev=output ;;
ltmain.sh:      -precious-files-regex)
ltmain.sh:      -release)
ltmain.sh:      -rpath)
ltmain.sh:      -R)
ltmain.sh:      -R*)
ltmain.sh:	func_stripname '-R' '' "$arg"
ltmain.sh:	[\\/]* | [A-Za-z]:[\\/]*) ;;
ltmain.sh:	  func_fatal_error "only absolute run-paths are allowed"
ltmain.sh:      -shared)
ltmain.sh:	# The effects of -shared are defined in a previous loop.
ltmain.sh:      -shrext)
ltmain.sh:      -static | -static-libtool-libs)
ltmain.sh:	# The effects of -static are defined in a previous loop.
ltmain.sh:	# We used to do the same as -all-static on platforms that
ltmain.sh:      -thread-safe)
ltmain.sh:      -version-info)
ltmain.sh:      -version-number)
ltmain.sh:      -weak)
ltmain.sh:      -Wc,*)
ltmain.sh:	func_stripname '-Wc,' '' "$arg"
ltmain.sh:      -Wl,*)
ltmain.sh:	func_stripname '-Wl,' '' "$arg"
ltmain.sh:      -Xcompiler)
ltmain.sh:      -Xlinker)
ltmain.sh:      -XCClinker)
ltmain.sh:      # -msg_* for osf cc
ltmain.sh:      -msg_*)
ltmain.sh:      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
ltmain.sh:      # -r[0-9][0-9]* specifies the processor on the SGI compiler
ltmain.sh:      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
ltmain.sh:      # +DA*, +DD* enable 64-bit mode on the HP compiler
ltmain.sh:      # -q* pass through compiler args for the IBM compiler
ltmain.sh:      # -m*, -t[45]*, -txscale* pass through architecture-specific
ltmain.sh:      # -F/path gives path to uninstalled frameworks, gcc on darwin
ltmain.sh:      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
ltmain.sh:      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
ltmain.sh:      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
ltmain.sh:      -* | +*)
ltmain.sh:	# A libtool-controlled object.
ltmain.sh:	  if test -z "$pic_object" ||
ltmain.sh:	     test -z "$non_pic_object" ||
ltmain.sh:	    # CHECK ME:  I think I busted this.  -Ossama
ltmain.sh:	      # Preload the old-style object.
ltmain.sh:	  # Non-PIC object.
ltmain.sh:	    # A standard non-PIC object
ltmain.sh:	    if test -z "$pic_object" || test "$pic_object" = none ; then
ltmain.sh:	  # Only an error if not doing a dry-run.
ltmain.sh:	# A libtool-controlled library.
ltmain.sh:	  # This library was specified with -dlopen.
ltmain.sh:	  # The library was specified with -dlpreopen.
ltmain.sh:      if test -n "$arg"; then
ltmain.sh:    test -n "$prev" && \
ltmain.sh:    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
ltmain.sh:    if test -n "$shlibpath_var"; then
ltmain.sh:      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
ltmain.sh:    # that are linked more than once (e.g. -la -lb -la)
ltmain.sh:    notinst_deplibs= # not-installed libtool libraries
ltmain.sh:    notinst_path= # paths that contain not-installed libtool libraries
ltmain.sh:	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
ltmain.sh:      # so that -L comes before libs that need it for instance...
ltmain.sh:	  # Ignore non-libtool-libs
ltmain.sh:            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
ltmain.sh:	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
ltmain.sh:	-l*)
ltmain.sh:	    func_warning "\`-l' is ignored for archives/objects"
ltmain.sh:	  func_stripname '-l' '' "$deplib"
ltmain.sh:	      if test -f "$lib"; then
ltmain.sh:	  ;; # -l
ltmain.sh:	-L*)
ltmain.sh:	    func_stripname '-L' '' "$deplib"
ltmain.sh:	    func_stripname '-L' '' "$deplib"
ltmain.sh:	    func_warning "\`-L' is ignored for archives/objects"
ltmain.sh:	  ;; # -L
ltmain.sh:	-R*)
ltmain.sh:	    func_stripname '-R' '' "$deplib"
ltmain.sh:	    # but linking other static libraries is non-portable.
ltmain.sh:		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
ltmain.sh:	if test "$found" = yes || test -f "$lib"; then :
ltmain.sh:	# Convert "-framework foo" to "foo.ltframework"
ltmain.sh:	if test -n "$inherited_linker_flags"; then
ltmain.sh:	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
ltmain.sh:	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
ltmain.sh:	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
ltmain.sh:	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
ltmain.sh:	  if test -z "$libdir"; then
ltmain.sh:	    if test -z "$old_library"; then
ltmain.sh:	if test -z "$linklib"; then
ltmain.sh:	# This library was specified with -dlopen.
ltmain.sh:	  if test -z "$libdir"; then
ltmain.sh:	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
ltmain.sh:	  if test -z "$dlname" ||
ltmain.sh:	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
ltmain.sh:	  if test -z "$abs_ladir"; then
ltmain.sh:	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
ltmain.sh:	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
ltmain.sh:	# This library was specified with -dlpreopen.
ltmain.sh:	  if test -z "$libdir" && test "$linkmode" = prog; then
ltmain.sh:	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
ltmain.sh:	  if test -n "$old_library"; then
ltmain.sh:	    test -z "$libdir" && \
ltmain.sh:	  elif test -n "$dlname"; then
ltmain.sh:	if test -z "$libdir"; then
ltmain.sh:	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
ltmain.sh:	    -L*) func_stripname '-L' '' "$deplib"
ltmain.sh:	  if test -n "$library_names" &&
ltmain.sh:	       test -z "$old_library"; }; then
ltmain.sh:	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
ltmain.sh:	    # Skip directories that are in the system default run-time
ltmain.sh:		 test -n "$library_names"; }; }; then
ltmain.sh:	if test -n "$library_names" &&
ltmain.sh:	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
ltmain.sh:	  # Warn about portability, can't link against -module's on some
ltmain.sh:	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
ltmain.sh:	    # Skip directories that are in the system default run-time
ltmain.sh:	  if test -n "$old_archive_from_expsyms_cmds"; then
ltmain.sh:	    if test -n "$dlname"; then
ltmain.sh:	    elif test -n "$soname_spec"; then
ltmain.sh:	        func_arith $current - $age
ltmain.sh:		versuffix="-$major"
ltmain.sh:	    newlib=libimp-$func_stripname_result.a
ltmain.sh:	    if test -f "$output_objdir/$soname-def"; then :
ltmain.sh:	    if test -f "$output_objdir/$newlib"; then :; else
ltmain.sh:	  fi # test -n "$old_archive_from_expsyms_cmds"
ltmain.sh:		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
ltmain.sh:		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
ltmain.sh:		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
ltmain.sh:		    *-*-unixware7*) add_dir="-L$dir" ;;
ltmain.sh:		  *-*-darwin* )
ltmain.sh:		    # if the lib is a (non-dlopened) module then we can not
ltmain.sh:		    if /usr/bin/file -L $add 2> /dev/null |
ltmain.sh:			if test -z "$old_library" ; then
ltmain.sh:		      elif test -n "$old_library"; then
ltmain.sh:		*-*-sunos*) add_shlibpath="$dir" ;;
ltmain.sh:		add_dir="-L$dir"
ltmain.sh:		add="-l$name"
ltmain.sh:		add="-l$name"
ltmain.sh:		add_dir="-L$dir"
ltmain.sh:		if test -n "$inst_prefix_dir"; then
ltmain.sh:		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
ltmain.sh:		add="-l$name"
ltmain.sh:		add="-l$name"
ltmain.sh:	    if test -n "$add_shlibpath"; then
ltmain.sh:	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
ltmain.sh:	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
ltmain.sh:	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
ltmain.sh:	      test -n "$add" && deplibs="$add $deplibs"
ltmain.sh:	      add_dir="-L$libdir"
ltmain.sh:	      add="-l$name"
ltmain.sh:	      add="-l$name"
ltmain.sh:	      if test -n "$inst_prefix_dir" &&
ltmain.sh:		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
ltmain.sh:	      add_dir="-L$libdir"
ltmain.sh:	      if test -n "$inst_prefix_dir"; then
ltmain.sh:		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
ltmain.sh:	      add="-l$name"
ltmain.sh:	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
ltmain.sh:	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
ltmain.sh:	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
ltmain.sh:	      test -n "$add" && deplibs="$add $deplibs"
ltmain.sh:	    test -n "$old_library" && linklib="$old_library"
ltmain.sh:	    compile_deplibs="-l$name -L$dir $compile_deplibs"
ltmain.sh:	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
ltmain.sh:	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
ltmain.sh:	      if test -z "$global_symbol_pipe"; then
ltmain.sh:	  if test -n "$dependency_libs" &&
ltmain.sh:	    # Extract -R from dependency_libs
ltmain.sh:	      -R*) func_stripname '-R' '' "$libdir"
ltmain.sh:	      -L*) path="$deplib" ;;
ltmain.sh:		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
ltmain.sh:		  if test -z "$absdir"; then
ltmain.sh:		*-*-darwin*)
ltmain.sh:		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
ltmain.sh:		  if test -n "$deplibrary_names" ; then
ltmain.sh:		    if test -f "$absdir/$objdir/$depdepl" ; then
ltmain.sh:		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
ltmain.sh:                      if test -z "$darwin_install_name"; then
ltmain.sh:                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
ltmain.sh:		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
ltmain.sh:		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
ltmain.sh:		  path="-L$absdir/$objdir"
ltmain.sh:		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
ltmain.sh:		  test -z "$libdir" && \
ltmain.sh:		  path="-L$absdir"
ltmain.sh:	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
ltmain.sh:	    -L*) new_libs="$deplib $new_libs" ;;
ltmain.sh:	    -R*) ;;
ltmain.sh:	      # using -Wl,-lname, so that libtool does not consider it
ltmain.sh:	    -L*)
ltmain.sh:	if test -n "$i" ; then
ltmain.sh:      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
ltmain.sh:	func_warning "\`-dlopen' is ignored for archives"
ltmain.sh:      *\ -l* | *\ -L*)
ltmain.sh:	func_warning "\`-l' and \`-L' are ignored for archives" ;;
ltmain.sh:      test -n "$rpath" && \
ltmain.sh:	func_warning "\`-rpath' is ignored for archives"
ltmain.sh:      test -n "$xrpath" && \
ltmain.sh:	func_warning "\`-R' is ignored for archives"
ltmain.sh:      test -n "$vinfo" && \
ltmain.sh:	func_warning "\`-version-info/-version-number' is ignored for archives"
ltmain.sh:      test -n "$release" && \
ltmain.sh:	func_warning "\`-release' is ignored for archives"
ltmain.sh:      test -n "$export_symbols$export_symbols_regex" && \
ltmain.sh:	func_warning "\`-export-symbols' is ignored for archives"
ltmain.sh:      if test -n "$objs"; then
ltmain.sh:	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
ltmain.sh:	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
ltmain.sh:	func_warning "\`-dlopen self' is ignored for libtool libraries"
ltmain.sh:      test "$#" -gt 1 && \
ltmain.sh:	func_warning "ignoring multiple \`-rpath's for a libtool library"
ltmain.sh:      if test -z "$rpath"; then
ltmain.sh:	test -n "$vinfo" && \
ltmain.sh:	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
ltmain.sh:	test -n "$release" && \
ltmain.sh:	  func_warning "\`-release' is ignored for convenience libraries"
ltmain.sh:	test -n "$7" && \
ltmain.sh:	  func_fatal_help "too many parameters to \`-version-info'"
ltmain.sh:	  # There are really only two kinds -- those that
ltmain.sh:	  freebsd-aout|freebsd-elf|sunos)
ltmain.sh:	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
ltmain.sh:	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
ltmain.sh:	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
ltmain.sh:	if test "$age" -gt "$current"; then
ltmain.sh:	  func_arith $current - $age
ltmain.sh:	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
ltmain.sh:	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
ltmain.sh:	freebsd-aout)
ltmain.sh:	freebsd-elf)
ltmain.sh:	    func_arith $current - $age
ltmain.sh:	    func_arith $current - $age + 1
ltmain.sh:	  while test "$loop" -ne 0; do
ltmain.sh:	    func_arith $revision - $loop
ltmain.sh:	    func_arith $loop - 1
ltmain.sh:	  func_arith $current - $age
ltmain.sh:	  func_arith $current - $age
ltmain.sh:	  while test "$loop" -ne 0; do
ltmain.sh:	    func_arith $current - $loop
ltmain.sh:	    func_arith $loop - 1
ltmain.sh:	  # Use '-' rather than '.', since we only want one
ltmain.sh:	  func_arith $current - $age
ltmain.sh:	  versuffix="-$major"
ltmain.sh:	if test -z "$vinfo" && test -n "$release"; then
ltmain.sh:		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
ltmain.sh:	test -n "$removelist" && \
ltmain.sh:	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
ltmain.sh:      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
ltmain.sh:      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
ltmain.sh:      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
ltmain.sh:      if test -n "$xrpath"; then
ltmain.sh:	  temp_xrpath="$temp_xrpath -R$libdir"
ltmain.sh:	if test -n "$rpath"; then
ltmain.sh:	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
ltmain.sh:	  *-*-rhapsody* | *-*-darwin1.[012])
ltmain.sh:	  *-*-netbsd*)
ltmain.sh:	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
ltmain.sh:	  *-*-sco3.2v5* | *-*-sco5v6*)
ltmain.sh:	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
ltmain.sh:	      deplibs="$deplibs -lc"
ltmain.sh:	# release should show up in the -l (ie -lgmp5) so we don't want to
ltmain.sh:	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
ltmain.sh:	      -l*)
ltmain.sh:		func_stripname -l '' "$i"
ltmain.sh:		if test -n "$i" ; then
ltmain.sh:		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
ltmain.sh:	      -l*)
ltmain.sh:		func_stripname -l '' "$i"
ltmain.sh:		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
ltmain.sh:		  if test -n "$i" ; then
ltmain.sh:		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
ltmain.sh:	    -l*)
ltmain.sh:	      func_stripname -l '' "$a_deplib"
ltmain.sh:	      if test -n "$a_deplib" ; then
ltmain.sh:		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
ltmain.sh:		      if ls -lLd "$potent_lib" 2>/dev/null |
ltmain.sh:			 $GREP " -> " >/dev/null; then
ltmain.sh:		      while test -h "$potlib" 2>/dev/null; do
ltmain.sh:			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
ltmain.sh:			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
ltmain.sh:			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
ltmain.sh:			 $SED -e 10q |
ltmain.sh:	      if test -n "$a_deplib" ; then
ltmain.sh:		if test -z "$potlib" ; then
ltmain.sh:	      # Add a -L argument.
ltmain.sh:	    -l*)
ltmain.sh:	      func_stripname -l '' "$a_deplib"
ltmain.sh:	      if test -n "$a_deplib" ; then
ltmain.sh:		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
ltmain.sh:		    potlib="$potent_lib" # see symlink-check above in file_magic test
ltmain.sh:		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
ltmain.sh:	      if test -n "$a_deplib" ; then
ltmain.sh:		if test -z "$potlib" ; then
ltmain.sh:	      # Add a -L argument.
ltmain.sh:	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
ltmain.sh:	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
ltmain.sh:	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
ltmain.sh:	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
ltmain.sh:	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
ltmain.sh:	    $ECHO "*** All declared inter-library dependencies are being dropped."
ltmain.sh:	*-*-rhapsody* | *-*-darwin1.[012])
ltmain.sh:	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
ltmain.sh:	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
ltmain.sh:	    $ECHO "*** application is linked with the -dlopen flag."
ltmain.sh:	    if test -z "$global_symbol_pipe"; then
ltmain.sh:	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
ltmain.sh:	    $ECHO "*** or is declared to -dlopen it."
ltmain.sh:	      $ECHO "*** it was explicitly requested with -no-undefined,"
ltmain.sh:      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
ltmain.sh:	*-*-darwin*)
ltmain.sh:	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
ltmain.sh:	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
ltmain.sh:	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
ltmain.sh:	*" -L$path/$objdir "*) ;;
ltmain.sh:	  *" -L$path/$objdir "*)
ltmain.sh:	    new_libs="$new_libs -L$path/$objdir" ;;
ltmain.sh:	-L*)
ltmain.sh:      # All the library-specific variables (install_libdir is set above).
ltmain.sh:	    if test -n "$hardcode_libdir_flag_spec"; then
ltmain.sh:	      if test -n "$hardcode_libdir_separator"; then
ltmain.sh:		if test -z "$hardcode_libdirs"; then
ltmain.sh:	    elif test -n "$runpath_var"; then
ltmain.sh:	  if test -n "$hardcode_libdir_separator" &&
ltmain.sh:	     test -n "$hardcode_libdirs"; then
ltmain.sh:	    if test -n "$hardcode_libdir_flag_spec_ld"; then
ltmain.sh:	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
ltmain.sh:	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
ltmain.sh:	if test -n "$shlibpath"; then
ltmain.sh:	if test -n "$soname_spec"; then
ltmain.sh:	if test -z "$dlname"; then
ltmain.sh:	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
ltmain.sh:	if test -n "$export_symbols" && test -n "$include_expsyms"; then
ltmain.sh:	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
ltmain.sh:	if test -z "$export_symbols"; then
ltmain.sh:	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
ltmain.sh:	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
ltmain.sh:	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
ltmain.sh:	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
ltmain.sh:	if test -n "$export_symbols" && test -n "$include_expsyms"; then
ltmain.sh:	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
ltmain.sh:	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
ltmain.sh:	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
ltmain.sh:	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
ltmain.sh:	if test -n "$convenience"; then
ltmain.sh:	  if test -n "$whole_archive_flag_spec" &&
ltmain.sh:	    test -z "$libobjs"; then
ltmain.sh:	  if test -n "$whole_archive_flag_spec"; then
ltmain.sh:	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
ltmain.sh:	if test "$module" = yes && test -n "$module_cmds" ; then
ltmain.sh:	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
ltmain.sh:	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
ltmain.sh:	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
ltmain.sh:	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
ltmain.sh:	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
ltmain.sh:	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
ltmain.sh:	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
ltmain.sh:	    if test -n "$save_libobjs"; then
ltmain.sh:	      output=$output_objdir/$output_la-${k}.$objext
ltmain.sh:		   test "$len" -lt "$max_cmd_len"; then
ltmain.sh:		  if test "$k" -eq 1 ; then
ltmain.sh:		  last_robj=$output_objdir/$output_la-${k}.$objext
ltmain.sh:		  output=$output_objdir/$output_la-${k}.$objext
ltmain.sh:	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
ltmain.sh:	      if test -n "$last_robj"; then
ltmain.sh:	    if ${skipped_export-false}; then
ltmain.sh:	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
ltmain.sh:	      if test -n "$last_robj"; then
ltmain.sh:	    test -n "$save_libobjs" &&
ltmain.sh:	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
ltmain.sh:	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
ltmain.sh:          if ${skipped_export-false}; then
ltmain.sh:	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
ltmain.sh:	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
ltmain.sh:	    if test -n "$orig_export_symbols"; then
ltmain.sh:	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
ltmain.sh:	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
ltmain.sh:	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
ltmain.sh:	  if test "$module" = yes && test -n "$module_cmds" ; then
ltmain.sh:	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
ltmain.sh:	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
ltmain.sh:	if test -n "$delfiles"; then
ltmain.sh:	if test -n "$dlprefiles"; then
ltmain.sh:	  if test -n "$convenience"; then
ltmain.sh:	    if test -z "$whole_archive_flag_spec"; then
ltmain.sh:	# If -module or -export-dynamic was specified, set the dlname.
ltmain.sh:      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
ltmain.sh:	func_warning "\`-dlopen' is ignored for objects"
ltmain.sh:      *\ -l* | *\ -L*)
ltmain.sh:	func_warning "\`-l' and \`-L' are ignored for objects" ;;
ltmain.sh:      test -n "$rpath" && \
ltmain.sh:	func_warning "\`-rpath' is ignored for objects"
ltmain.sh:      test -n "$xrpath" && \
ltmain.sh:	func_warning "\`-R' is ignored for objects"
ltmain.sh:      test -n "$vinfo" && \
ltmain.sh:	func_warning "\`-version-info' is ignored for objects"
ltmain.sh:      test -n "$release" && \
ltmain.sh:	func_warning "\`-release' is ignored for objects"
ltmain.sh:	test -n "$objs$old_deplibs" && \
ltmain.sh:	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
ltmain.sh:      # single-version convenience libraries.  Whenever we create
ltmain.sh:      # different ones for PIC/non-PIC, this we'll have to duplicate
ltmain.sh:      # -Wl from whole_archive_flag_spec and hope we can get by with
ltmain.sh:      if test -n "$convenience"; then
ltmain.sh:	if test -n "$whole_archive_flag_spec"; then
ltmain.sh:	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
ltmain.sh:      # Create the old-style object.
ltmain.sh:      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
ltmain.sh:      if test -z "$libobj"; then
ltmain.sh:	if test -n "$gentop"; then
ltmain.sh:	if test -n "$gentop"; then
ltmain.sh:      if test -n "$pic_flag" || test "$pic_mode" != default; then
ltmain.sh:      if test -n "$gentop"; then
ltmain.sh:      test -n "$vinfo" && \
ltmain.sh:	func_warning "\`-version-info' is ignored for programs"
ltmain.sh:      test -n "$release" && \
ltmain.sh:	func_warning "\`-release' is ignored for programs"
ltmain.sh:      *-*-rhapsody* | *-*-darwin1.[012])
ltmain.sh:	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
ltmain.sh:	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
ltmain.sh:      *-*-darwin*)
ltmain.sh:	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
ltmain.sh:	      compile_command="$compile_command ${wl}-bind_at_load"
ltmain.sh:	      finalize_command="$finalize_command ${wl}-bind_at_load"
ltmain.sh:	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
ltmain.sh:	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
ltmain.sh:	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
ltmain.sh:	*" -L$path/$objdir "*) ;;
ltmain.sh:	  *" -L$path/$objdir "*)
ltmain.sh:	    new_libs="$new_libs -L$path/$objdir" ;;
ltmain.sh:	-L*)
ltmain.sh:      if test -n "$rpath$xrpath"; then
ltmain.sh:	  # This is the magic to use -rpath.
ltmain.sh:	if test -n "$hardcode_libdir_flag_spec"; then
ltmain.sh:	  if test -n "$hardcode_libdir_separator"; then
ltmain.sh:	    if test -z "$hardcode_libdirs"; then
ltmain.sh:	elif test -n "$runpath_var"; then
ltmain.sh:	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
ltmain.sh:	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
ltmain.sh:      if test -n "$hardcode_libdir_separator" &&
ltmain.sh:	 test -n "$hardcode_libdirs"; then
ltmain.sh:	if test -n "$hardcode_libdir_flag_spec"; then
ltmain.sh:	  if test -n "$hardcode_libdir_separator"; then
ltmain.sh:	    if test -z "$hardcode_libdirs"; then
ltmain.sh:	elif test -n "$runpath_var"; then
ltmain.sh:      if test -n "$hardcode_libdir_separator" &&
ltmain.sh:	 test -n "$hardcode_libdirs"; then
ltmain.sh:      if test -n "$libobjs" && test "$build_old_libs" = yes; then
ltmain.sh:	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
ltmain.sh:	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
ltmain.sh:      if test -n "$prelink_cmds"; then
ltmain.sh:	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
ltmain.sh:	if test -f "$output_objdir/${outputname}S.${objext}"; then
ltmain.sh:      if test -n "$compile_shlibpath$finalize_shlibpath"; then
ltmain.sh:      if test -n "$finalize_shlibpath"; then
ltmain.sh:      if test -n "$runpath_var"; then
ltmain.sh:	if test -n "$perm_rpath"; then
ltmain.sh:	if test -n "$finalize_perm_rpath"; then
ltmain.sh:	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
ltmain.sh:	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
ltmain.sh:      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
ltmain.sh:      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
ltmain.sh:      if test -n "$relink_command"; then
ltmain.sh:	  if eval test -z \"\${$var+set}\"; then
ltmain.sh:	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
ltmain.sh:	  elif eval var_value=\$$var; test -z "$var_value"; then
ltmain.sh:	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
ltmain.sh:      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
ltmain.sh:	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
ltmain.sh:	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
ltmain.sh:	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
ltmain.sh:	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
ltmain.sh:	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
ltmain.sh:	    # because it contains $host paths and files. If cross-
ltmain.sh:	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
ltmain.sh:		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
ltmain.sh:    # See if we need to build an old-fashioned archive.
ltmain.sh:	  if test "$preload" = yes && test -f "$symfileobj"; then
ltmain.sh:      if test -n "$addlibs"; then
ltmain.sh:      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
ltmain.sh:	if test -n "$dlprefiles"; then
ltmain.sh:	    done | sort | sort -uc >/dev/null 2>&1); then
ltmain.sh:		newobj=lt$counter-$objbase
ltmain.sh:		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
ltmain.sh:	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
ltmain.sh:	    if test "$len" -lt "$max_cmd_len"; then
ltmain.sh:	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
ltmain.sh:    test -n "$generated" && \
ltmain.sh:	if eval test -z \"\${$var+set}\"; then
ltmain.sh:	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
ltmain.sh:	elif eval var_value=\$$var; test -z "$var_value"; then
ltmain.sh:      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
ltmain.sh:      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
ltmain.sh:	    if test -z "$install_libdir"; then
ltmain.sh:		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
ltmain.sh:		test -z "$libdir" && \
ltmain.sh:		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
ltmain.sh:		test -z "$libdir" && \
ltmain.sh:		# Only pass preopened files to the pseudo-archive (for
ltmain.sh:		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
ltmain.sh:		test -z "$libdir" && \
ltmain.sh:		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
ltmain.sh:		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
ltmain.sh:# $outputname - a libtool library file
ltmain.sh:# Should we warn about portability when linking against -modules?
ltmain.sh:      -f) RM="$RM $arg"; rmforce=yes ;;
ltmain.sh:      -*) RM="$RM $arg" ;;
ltmain.sh:    test -z "$RM" && \
ltmain.sh:      # Don't error if the file doesn't exist and rm -f was used.
ltmain.sh:      if { test -L "$file"; } >/dev/null 2>&1 ||
ltmain.sh:	 { test -h "$file"; } >/dev/null 2>&1 ||
ltmain.sh:	 test -f "$file"; then
ltmain.sh:      elif test -d "$file"; then
ltmain.sh:	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
ltmain.sh:	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
ltmain.sh:	    if test -n "$library_names"; then
ltmain.sh:	    if test -n "$old_library"; then
ltmain.sh:	  if test -n "$pic_object" &&
ltmain.sh:	  # Add non-PIC object to the list of files to remove.
ltmain.sh:	  if test -n "$non_pic_object" &&
ltmain.sh:	    if test "$fast_install" = yes && test -n "$relink_command"; then
ltmain.sh:	      rmfiles="$rmfiles $objdir/lt-$name"
ltmain.sh:	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
ltmain.sh:      if test -d "$dir"; then
ltmain.sh:test -z "$mode" && {
ltmain.sh:test -z "$exec_cmd" && \
ltmain.sh:if test -n "$exec_cmd"; then
ltmain.sh:# time on that platform, so we default to a shared-only configuration.
ltmain.sh:# If a disable-shared tag is given, we'll fallback to a static-only
ltmain.sh:# configuration.  But we'll never go from static-only to shared-only.
ltmain.sh:# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
ltmain.sh:# ### END LIBTOOL TAG CONFIG: disable-shared
ltmain.sh:# ### BEGIN LIBTOOL TAG CONFIG: disable-static
ltmain.sh:# ### END LIBTOOL TAG CONFIG: disable-static
ltmain.sh:# mode:shell-script
ltmain.sh:# sh-indentation:2
m4/gtk-doc.m4:dnl -*- mode: autoconf -*-
m4/gtk-doc.m4:dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
m4/gtk-doc.m4:  AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
m4/gtk-doc.m4:  AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
m4/gtk-doc.m4:  AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
m4/gtk-doc.m4:  AC_ARG_WITH([html-dir],
m4/gtk-doc.m4:    AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
m4/gtk-doc.m4:    [with_html_dir='${datadir}/gtk-doc/html'])
m4/gtk-doc.m4:  AC_ARG_ENABLE([gtk-doc],
m4/gtk-doc.m4:    AS_HELP_STRING([--enable-gtk-doc],
m4/gtk-doc.m4:                   [use gtk-doc to build documentation [[default=no]]]),,
m4/gtk-doc.m4:      [PKG_CHECK_EXISTS([gtk-doc],,
m4/gtk-doc.m4:                        AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
m4/gtk-doc.m4:      [PKG_CHECK_EXISTS([gtk-doc >= $1],,
m4/gtk-doc.m4:                        AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
m4/gtk-doc.m4:  AC_MSG_CHECKING([whether to build gtk-doc documentation])
m4/gtk-doc.m4:  AC_ARG_ENABLE([gtk-doc-html],
m4/gtk-doc.m4:    AS_HELP_STRING([--enable-gtk-doc-html],
m4/gtk-doc.m4:    AC_ARG_ENABLE([gtk-doc-pdf],
m4/gtk-doc.m4:      AS_HELP_STRING([--enable-gtk-doc-pdf],
m4/gtk-doc.m4:  if test -z "$GTKDOC_MKPDF"; then
m4/gtk-doc.m4:  AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
m4/gtk-doc.m4:  AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
m4/ltversion.m4:# ltversion.m4 -- version numbers			-*- Autoconf -*-
m4/ltsugar.m4:# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
m4/ltsugar.m4:# -----------------------------
m4/ltsugar.m4:# ------------
m4/ltsugar.m4:# Autoconf-2.59 which quotes differently.
m4/ltsugar.m4:# lt_append(MACRO-NAME, STRING, [SEPARATOR])
m4/ltsugar.m4:# ------------------------------------------
m4/ltsugar.m4:# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
m4/ltsugar.m4:# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
m4/ltsugar.m4:# No SEPARATOR is output if MACRO-NAME was previously undefined (different
m4/ltsugar.m4:# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
m4/ltsugar.m4:# ----------------------------------------------------------
m4/ltsugar.m4:# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
m4/ltsugar.m4:# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
m4/ltsugar.m4:# -----------------------------------------------------------------------
m4/ltsugar.m4:# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
m4/ltsugar.m4:# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
m4/ltsugar.m4:	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
m4/ltsugar.m4:# -----------------------------
m4/ltsugar.m4:# --------------------------------------------
m4/ltsugar.m4:# ----------------------------------
m4/ltsugar.m4:# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
m4/ltsugar.m4:# -----------------------------------------------------------------
m4/ltsugar.m4:# --------------------------------------------------------------
m4/ltoptions.m4:# Helper functions for option handling.                    -*- Autoconf -*-
m4/ltoptions.m4:# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
m4/ltoptions.m4:# ------------------------------------------
m4/ltoptions.m4:[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
m4/ltoptions.m4:# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
m4/ltoptions.m4:# ---------------------------------------
m4/ltoptions.m4:# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
m4/ltoptions.m4:# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
m4/ltoptions.m4:# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
m4/ltoptions.m4:# ------------------------------------------------------------
m4/ltoptions.m4:# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
m4/ltoptions.m4:# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
m4/ltoptions.m4:# -------------------------------------------------------
m4/ltoptions.m4:# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
m4/ltoptions.m4:# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
m4/ltoptions.m4:# ----------------------------------------
m4/ltoptions.m4:# OPTION-LIST is a space-separated list of Libtool options associated
m4/ltoptions.m4:# with MACRO-NAME.  If any OPTION has a matching handler declared with
m4/ltoptions.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
m4/ltoptions.m4:  dnl `shared' nor `disable-shared' was passed, we enable building of shared
m4/ltoptions.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
m4/ltoptions.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
m4/ltoptions.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
m4/ltoptions.m4:  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
m4/ltoptions.m4:## --------------------------------- ##
m4/ltoptions.m4:## --------------------------------- ##
m4/ltoptions.m4:# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
m4/ltoptions.m4:# -----------------------------------------
m4/ltoptions.m4:[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
m4/ltoptions.m4:# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
m4/ltoptions.m4:# -----------------------------------------------
m4/ltoptions.m4:# ------
m4/ltoptions.m4:dnl aclocal-1.4 backwards compatibility:
m4/ltoptions.m4:# win32-dll
m4/ltoptions.m4:# ---------
m4/ltoptions.m4:LT_OPTION_DEFINE([LT_INIT], [win32-dll],
m4/ltoptions.m4:*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
m4/ltoptions.m4:test -z "$AS" && AS=as
m4/ltoptions.m4:test -z "$DLLTOOL" && DLLTOOL=dlltool
m4/ltoptions.m4:test -z "$OBJDUMP" && OBJDUMP=objdump
m4/ltoptions.m4:])# win32-dll
m4/ltoptions.m4:_LT_SET_OPTION([LT_INIT], [win32-dll])
m4/ltoptions.m4:put the `win32-dll' option into LT_INIT's first parameter.])
m4/ltoptions.m4:dnl aclocal-1.4 backwards compatibility:
m4/ltoptions.m4:# ----------------------------
m4/ltoptions.m4:# implement the --enable-shared flag, and supports the `shared' and
m4/ltoptions.m4:# `disable-shared' LT_INIT options.
m4/ltoptions.m4:    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
m4/ltoptions.m4:    [p=${PACKAGE-default}
m4/ltoptions.m4:LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
m4/ltoptions.m4:[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
m4/ltoptions.m4:[_LT_SET_OPTION([LT_INIT], [disable-shared])
m4/ltoptions.m4:dnl aclocal-1.4 backwards compatibility:
m4/ltoptions.m4:# ----------------------------
m4/ltoptions.m4:# implement the --enable-static flag, and support the `static' and
m4/ltoptions.m4:# `disable-static' LT_INIT options.
m4/ltoptions.m4:    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
m4/ltoptions.m4:    [p=${PACKAGE-default}
m4/ltoptions.m4:LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
m4/ltoptions.m4:[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
m4/ltoptions.m4:[_LT_SET_OPTION([LT_INIT], [disable-static])
m4/ltoptions.m4:dnl aclocal-1.4 backwards compatibility:
m4/ltoptions.m4:# ----------------------------------
m4/ltoptions.m4:# implement the --enable-fast-install flag, and support the `fast-install'
m4/ltoptions.m4:# and `disable-fast-install' LT_INIT options.
m4/ltoptions.m4:AC_ARG_ENABLE([fast-install],
m4/ltoptions.m4:    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
m4/ltoptions.m4:    [p=${PACKAGE-default}
m4/ltoptions.m4:LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
m4/ltoptions.m4:LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
m4/ltoptions.m4:[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
m4/ltoptions.m4:the `fast-install' option into LT_INIT's first parameter.])
m4/ltoptions.m4:[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
m4/ltoptions.m4:the `disable-fast-install' option into LT_INIT's first parameter.])
m4/ltoptions.m4:dnl aclocal-1.4 backwards compatibility:
m4/ltoptions.m4:# --------------------
m4/ltoptions.m4:# implement the --with-pic flag, and support the `pic-only' and `no-pic'
m4/ltoptions.m4:    [AS_HELP_STRING([--with-pic],
m4/ltoptions.m4:	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
m4/ltoptions.m4:test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
m4/ltoptions.m4:LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
m4/ltoptions.m4:LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
m4/ltoptions.m4:[_LT_SET_OPTION([LT_INIT], [pic-only])
m4/ltoptions.m4:put the `pic-only' option into LT_INIT's first parameter.])
m4/ltoptions.m4:dnl aclocal-1.4 backwards compatibility:
m4/ltoptions.m4:## ----------------- ##
m4/ltoptions.m4:## ----------------- ##
m4/lt~obsolete.m4:# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
m4/lt~obsolete.m4:# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
m4/libtool.m4:# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
m4/libtool.m4:# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
m4/libtool.m4:# ------------------
m4/libtool.m4:[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
m4/libtool.m4:# ------------------
m4/libtool.m4:# ------------------
m4/libtool.m4:m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# -------------------
m4/libtool.m4:# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
m4/libtool.m4:    \-*) ;;
m4/libtool.m4:cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
m4/libtool.m4:# ----------------------
m4/libtool.m4:[: ${CP="cp -f"}
m4/libtool.m4:: ${MV="mv -f"}
m4/libtool.m4:: ${RM="rm -f"}
m4/libtool.m4:# ---------
m4/libtool.m4:test -z "$LN_S" && LN_S="ln -s"
m4/libtool.m4:if test -n "\${ZSH_VERSION+set}" ; then
m4/libtool.m4:if test -n "${ZSH_VERSION+set}" ; then
m4/libtool.m4:# metacharacters that are still active within double-quoted strings.
m4/libtool.m4:test -z "$CC" && CC=cc
m4/libtool.m4:test -z "$LTCC" && LTCC=$CC
m4/libtool.m4:test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
m4/libtool.m4:test -z "$LD" && LD=ld
m4/libtool.m4:test -z "$ac_objext" && ac_objext=o
m4/libtool.m4:test -z "$MAGIC_CMD" && MAGIC_CMD=file
m4/libtool.m4:# ---------------
m4/libtool.m4:## ------------------------------------- ##
m4/libtool.m4:## ------------------------------------- ##
m4/libtool.m4:# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
m4/libtool.m4:# ----------------------------------------
m4/libtool.m4:# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
m4/libtool.m4:# ------------------------------
m4/libtool.m4:# -----------------------------------------------------
m4/libtool.m4:# -----------------------------
m4/libtool.m4:# full-stop to the whole comment if one is not present already.
m4/libtool.m4:## ------------------------ ##
m4/libtool.m4:## ------------------------ ##
m4/libtool.m4:# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
m4/libtool.m4:# -------------------------------------------------------------------
m4/libtool.m4:# --------------------------------------------------------
m4/libtool.m4:# ------------------------------------------------
m4/libtool.m4:# ---------------------------------------------------------
m4/libtool.m4:# --------------------------------------------------
m4/libtool.m4:# ---------------------------------------------------
m4/libtool.m4:# ---------------------------------------------------
m4/libtool.m4:# ------------------------------------------------
m4/libtool.m4:# ------------------------------------
m4/libtool.m4:[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
m4/libtool.m4:# ------------------------------
m4/libtool.m4:#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
m4/libtool.m4:# ----------------
m4/libtool.m4:# -----------------------------------
m4/libtool.m4:# -----------------------
m4/libtool.m4:# Produce commented declarations of non-tagged libtool config variables
m4/libtool.m4:# -------------------------
m4/libtool.m4:# ------------------------------
m4/libtool.m4:# -------------------
m4/libtool.m4:# The HP-UX ksh and POSIX shell print the target directory to stdout
m4/libtool.m4:      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
m4/libtool.m4:# Double-quote double-evaled strings.
m4/libtool.m4:      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
m4/libtool.m4:# Fix-up fallback echo if it was mangled by the above quoting rules.
m4/libtool.m4:*'\\\[$]0 --fallback-echo"')dnl "
m4/libtool.m4:  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
m4/libtool.m4:# ---------
m4/libtool.m4:SHELL=\${CONFIG_SHELL-$SHELL}
m4/libtool.m4:  -h, --help      print this help, then exit
m4/libtool.m4:  -V, --version   print version number, then exit
m4/libtool.m4:  -q, --quiet     do not print progress messages
m4/libtool.m4:  -d, --debug     don't remove temporary files
m4/libtool.m4:Report bugs to <bug-libtool@gnu.org>."
m4/libtool.m4:    --version | --v* | -V )
m4/libtool.m4:    --help | --h* | -h )
m4/libtool.m4:    --debug | --d* | -d )
m4/libtool.m4:    --quiet | --q* | --silent | --s* | -q )
m4/libtool.m4:    -*) AC_MSG_ERROR([unrecognized option: $[1]
m4/libtool.m4:Try \`$[0] --help' for more information.]) ;;
m4/libtool.m4:Try \`$[0] --help' for more information.]) ;;
m4/libtool.m4:    lt_config_lt_args="$lt_config_lt_args --quiet"
m4/libtool.m4:# ---------------
m4/libtool.m4:# If TAG is the built-in tag, create an initial libtool script with a
m4/libtool.m4:    if test -n "${ZSH_VERSION+set}" ; then
m4/libtool.m4:# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
m4/libtool.m4:# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
m4/libtool.m4:  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
m4/libtool.m4:    || (rm -f "$cfgfile"; exit 1)
m4/libtool.m4:  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
m4/libtool.m4:    || (rm -f "$cfgfile"; exit 1)
m4/libtool.m4:  mv -f "$cfgfile" "$ofile" ||
m4/libtool.m4:    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
m4/libtool.m4:# ---------------------
m4/libtool.m4:# --tag option, using:
m4/libtool.m4:#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
m4/libtool.m4:# C support is built-in for now
m4/libtool.m4:# -------------
m4/libtool.m4:# ------------------
m4/libtool.m4:# -----------------------
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# ----------------
m4/libtool.m4:LTCC=${LTCC-"$CC"}
m4/libtool.m4:LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
m4/libtool.m4:# ------------------------
m4/libtool.m4:# ----------------------
m4/libtool.m4:$RM -r conftest*
m4/libtool.m4:# -------------------------
m4/libtool.m4:      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
m4/libtool.m4:      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
m4/libtool.m4:    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
m4/libtool.m4:      if test -z "${LT_MULTI_MODULE}"; then
m4/libtool.m4:	# By default we will add the -single_module flag. You can override
m4/libtool.m4:	# non-empty at configure time, or by adding -multi_module to the
m4/libtool.m4:	rm -rf libconftest.dylib*
m4/libtool.m4:	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
m4/libtool.m4:-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
m4/libtool.m4:	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
m4/libtool.m4:	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
m4/libtool.m4:	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
m4/libtool.m4:	rm -rf libconftest.dylib*
m4/libtool.m4:	rm -f conftest.*
m4/libtool.m4:    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
m4/libtool.m4:      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
m4/libtool.m4:      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
m4/libtool.m4:      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
m4/libtool.m4:      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
m4/libtool.m4:	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
m4/libtool.m4:	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
m4/libtool.m4:	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
m4/libtool.m4:	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
m4/libtool.m4:      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
m4/libtool.m4:      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
m4/libtool.m4:# --------------------------
m4/libtool.m4:    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
m4/libtool.m4:    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
m4/libtool.m4:    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
m4/libtool.m4:    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
m4/libtool.m4:      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
m4/libtool.m4:# -----------------------
m4/libtool.m4:aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
m4/libtool.m4:# Check for a 64-bit object if we didn't find anything.
m4/libtool.m4:if test -z "$aix_libpath"; then
m4/libtool.m4:  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
m4/libtool.m4:if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
m4/libtool.m4:# -------------------
m4/libtool.m4:# -----------------------
m4/libtool.m4:SHELL=${CONFIG_SHELL-/bin/sh}
m4/libtool.m4:X*--fallback-echo)
m4/libtool.m4:ECHO=${lt_ECHO-echo}
m4/libtool.m4:if test "X[$]1" = X--no-reexec; then
m4/libtool.m4:  # Discard the --no-reexec flag, and continue.
m4/libtool.m4:elif test "X[$]1" = X--fallback-echo; then
m4/libtool.m4:  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
m4/libtool.m4:if test "X[$]1" = X--fallback-echo; then
m4/libtool.m4:# The HP-UX ksh and POSIX shell print the target directory to stdout
m4/libtool.m4:if test -z "$lt_ECHO"; then
m4/libtool.m4:      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
m4/libtool.m4:      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
m4/libtool.m4:         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
m4/libtool.m4:        # This shell has a builtin print -r that does the trick.
m4/libtool.m4:        ECHO='print -r'
m4/libtool.m4:      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
m4/libtool.m4:        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
m4/libtool.m4:        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
m4/libtool.m4:        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
m4/libtool.m4:	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
m4/libtool.m4:	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
m4/libtool.m4:        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
m4/libtool.m4:	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
m4/libtool.m4:	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
m4/libtool.m4:	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
m4/libtool.m4:if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
m4/libtool.m4:   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
m4/libtool.m4:# ---------------
m4/libtool.m4:[AC_ARG_ENABLE([libtool-lock],
m4/libtool.m4:  [AS_HELP_STRING([--disable-libtool-lock],
m4/libtool.m4:ia64-*-hpux*)
m4/libtool.m4:      *ELF-32*)
m4/libtool.m4:      *ELF-64*)
m4/libtool.m4:  rm -rf conftest*
m4/libtool.m4:*-*-irix6*)
m4/libtool.m4:	*32-bit*)
m4/libtool.m4:	  LD="${LD-ld} -melf32bsmip"
m4/libtool.m4:	  LD="${LD-ld} -melf32bmipn32"
m4/libtool.m4:	*64-bit*)
m4/libtool.m4:	  LD="${LD-ld} -melf64bmip"
m4/libtool.m4:	*32-bit*)
m4/libtool.m4:	  LD="${LD-ld} -32"
m4/libtool.m4:	  LD="${LD-ld} -n32"
m4/libtool.m4:	*64-bit*)
m4/libtool.m4:	  LD="${LD-ld} -64"
m4/libtool.m4:  rm -rf conftest*
m4/libtool.m4:x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
m4/libtool.m4:s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
m4/libtool.m4:      *32-bit*)
m4/libtool.m4:	  x86_64-*kfreebsd*-gnu)
m4/libtool.m4:	    LD="${LD-ld} -m elf_i386_fbsd"
m4/libtool.m4:	  x86_64-*linux*)
m4/libtool.m4:	    LD="${LD-ld} -m elf_i386"
m4/libtool.m4:	  ppc64-*linux*|powerpc64-*linux*)
m4/libtool.m4:	    LD="${LD-ld} -m elf32ppclinux"
m4/libtool.m4:	  s390x-*linux*)
m4/libtool.m4:	    LD="${LD-ld} -m elf_s390"
m4/libtool.m4:	  sparc64-*linux*)
m4/libtool.m4:	    LD="${LD-ld} -m elf32_sparc"
m4/libtool.m4:      *64-bit*)
m4/libtool.m4:	  x86_64-*kfreebsd*-gnu)
m4/libtool.m4:	    LD="${LD-ld} -m elf_x86_64_fbsd"
m4/libtool.m4:	  x86_64-*linux*)
m4/libtool.m4:	    LD="${LD-ld} -m elf_x86_64"
m4/libtool.m4:	  ppc*-*linux*|powerpc*-*linux*)
m4/libtool.m4:	    LD="${LD-ld} -m elf64ppc"
m4/libtool.m4:	  s390*-*linux*|s390*-*tpf*)
m4/libtool.m4:	    LD="${LD-ld} -m elf64_s390"
m4/libtool.m4:	  sparc*-*linux*)
m4/libtool.m4:	    LD="${LD-ld} -m elf64_sparc"
m4/libtool.m4:  rm -rf conftest*
m4/libtool.m4:*-*-sco3.2v5*)
m4/libtool.m4:  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
m4/libtool.m4:  CFLAGS="$CFLAGS -belf"
m4/libtool.m4:  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
m4/libtool.m4:    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
m4/libtool.m4:sparc*-*solaris*)
m4/libtool.m4:    *64-bit*)
m4/libtool.m4:      yes*) LD="${LD-ld} -m elf64_sparc" ;;
m4/libtool.m4:	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
m4/libtool.m4:	  LD="${LD-ld} -64"
m4/libtool.m4:  rm -rf conftest*
m4/libtool.m4:# -------------------
m4/libtool.m4:test -z "$AR" && AR=ar
m4/libtool.m4:test -z "$AR_FLAGS" && AR_FLAGS=cru
m4/libtool.m4:test -z "$STRIP" && STRIP=:
m4/libtool.m4:test -z "$RANLIB" && RANLIB=:
m4/libtool.m4:    [Commands used to install an old-style archive])
m4/libtool.m4:# Determine commands to create old-style static archives.
m4/libtool.m4:if test -n "$RANLIB"; then
m4/libtool.m4:    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
m4/libtool.m4:    [Commands used to build an old-style archive])
m4/libtool.m4:# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
m4/libtool.m4:#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
m4/libtool.m4:# ----------------------------------------------------------------
m4/libtool.m4:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
m4/libtool.m4:   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
m4/libtool.m4:   -e 's:$: $lt_compiler_flag:'`
m4/libtool.m4:   if (exit $ac_status) && test -s "$ac_outfile"; then
m4/libtool.m4:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
m4/libtool.m4:     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
m4/libtool.m4:#                  [ACTION-SUCCESS], [ACTION-FAILURE])
m4/libtool.m4:# ----------------------------------------------------
m4/libtool.m4:   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
m4/libtool.m4:     if test -s conftest.err; then
m4/libtool.m4:       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
m4/libtool.m4:   $RM -r conftest*
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:#---------------
m4/libtool.m4:    # Libtool will interpret -1 as no limit whatsoever
m4/libtool.m4:    lt_cv_sys_max_cmd_len=-1;
m4/libtool.m4:    # On Win9x/ME, this test blows up -- it succeeds, but takes
m4/libtool.m4:    # Worse, since 9x/ME are not pre-emptively multitasking,
m4/libtool.m4:    if test -x /sbin/sysctl; then
m4/libtool.m4:      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
m4/libtool.m4:    elif test -x /usr/sbin/sysctl; then
m4/libtool.m4:      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
m4/libtool.m4:    if test -x /sbin/sysconfig; then
m4/libtool.m4:      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
m4/libtool.m4:        *1*) lt_cv_sys_max_cmd_len=-1 ;;
m4/libtool.m4:    if test -n "$kargmax"; then
m4/libtool.m4:    if test -n "$lt_cv_sys_max_cmd_len"; then
m4/libtool.m4:      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
m4/libtool.m4:      # If test is not a shell built-in, we'll probably end up computing a
m4/libtool.m4:      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
m4/libtool.m4:if test -n $lt_cv_sys_max_cmd_len ; then
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# ----------------
m4/libtool.m4:# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
m4/libtool.m4:#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
m4/libtool.m4:# ----------------------------------------------------------------
m4/libtool.m4:  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
m4/libtool.m4:rm -fr conftest*
m4/libtool.m4:# ------------------
m4/libtool.m4:		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
m4/libtool.m4:	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
m4/libtool.m4:		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
m4/libtool.m4:		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
m4/libtool.m4:		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
m4/libtool.m4:    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# ---------------------------
m4/libtool.m4:# Check to see if options -c and -o are simultaneously supported by compiler.
m4/libtool.m4:AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
m4/libtool.m4:   $RM -r conftest 2>/dev/null
m4/libtool.m4:   lt_compiler_flag="-o out/conftest2.$ac_objext"
m4/libtool.m4:   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
m4/libtool.m4:   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
m4/libtool.m4:   -e 's:$: $lt_compiler_flag:'`
m4/libtool.m4:   if (exit $ac_status) && test -s out/conftest2.$ac_objext
m4/libtool.m4:     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
m4/libtool.m4:     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
m4/libtool.m4:   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
m4/libtool.m4:   $RM -r conftest
m4/libtool.m4:	[Does compiler simultaneously support -c and -o options?])
m4/libtool.m4:# ----------------------------------
m4/libtool.m4:    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
m4/libtool.m4:# ----------------
m4/libtool.m4:[rm -f .libs 2>/dev/null
m4/libtool.m4:if test -d .libs; then
m4/libtool.m4:  # MS-DOS does not allow filenames that begin with a dot.
m4/libtool.m4:  [Define to the sub-directory in which libtool stores uninstalled libraries.])
m4/libtool.m4:# --------------------------------------
m4/libtool.m4:if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
m4/libtool.m4:   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
m4/libtool.m4:  # We can hardcode non-existent directories.
m4/libtool.m4:     # when we should be linking with a yet-to-be-installed one
m4/libtool.m4:# ----------------
m4/libtool.m4:if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
m4/libtool.m4:  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
m4/libtool.m4:  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
m4/libtool.m4:# FIXME - insert some real tests, host_os isn't really good enough
m4/libtool.m4:    if test -n "$STRIP" ; then
m4/libtool.m4:      striplib="$STRIP -x"
m4/libtool.m4:      old_striplib="$STRIP -S"
m4/libtool.m4:# -----------------------------
m4/libtool.m4:  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
m4/libtool.m4:    # otherwise default to the standard path separator (i.e. ":") - it is
m4/libtool.m4:    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
m4/libtool.m4:    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
m4/libtool.m4:  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
m4/libtool.m4:    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
m4/libtool.m4:      test -d "$lt_sys_path" && \
m4/libtool.m4:  for (lt_i = NF; lt_i > 0; lt_i--) {
m4/libtool.m4:          lt_count--;
m4/libtool.m4:# when you set need_version to no, make sure it does not cause -set_version
m4/libtool.m4:aix[[4-9]]*)
m4/libtool.m4:	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
m4/libtool.m4:    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
m4/libtool.m4:    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
m4/libtool.m4:  # libtool to hard-code these into programs
m4/libtool.m4:      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
m4/libtool.m4:      test -d \$dldir || mkdir -p \$dldir~
m4/libtool.m4:      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
m4/libtool.m4:    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
m4/libtool.m4:      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
m4/libtool.m4:      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
m4/libtool.m4:      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
m4/libtool.m4:      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
m4/libtool.m4:        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
m4/libtool.m4:        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
m4/libtool.m4:      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
m4/libtool.m4:    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
m4/libtool.m4:  if test -x /usr/bin/objformat; then
m4/libtool.m4:  version_type=freebsd-$objformat
m4/libtool.m4:    freebsd-elf*)
m4/libtool.m4:    freebsd-*)
m4/libtool.m4:  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
m4/libtool.m4:  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
m4/libtool.m4:  # HP-UX runs *really* slowly unless shared libraries are mode 555.
m4/libtool.m4:interix[[3-9]]*)
m4/libtool.m4:    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
m4/libtool.m4:      libsuff= shlibsuff= libmagic=32-bit;;
m4/libtool.m4:    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
m4/libtool.m4:    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
m4/libtool.m4:      libsuff=64 shlibsuff=64 libmagic=64-bit;;
m4/libtool.m4:    *) libsuff= shlibsuff= libmagic=never-match;;
m4/libtool.m4:linux* | k*bsd*-gnu | kopensolaris*-gnu)
m4/libtool.m4:  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
m4/libtool.m4:    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
m4/libtool.m4:  if test -f /etc/ld.so.conf; then
m4/libtool.m4:    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
m4/libtool.m4:  # most powerpc-linux boxes support dynamic linking these days and
m4/libtool.m4:  # people can always --disable-shared, the test was removed, and we
m4/libtool.m4:netbsdelf*-gnu)
m4/libtool.m4:  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
m4/libtool.m4:    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
m4/libtool.m4:  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
m4/libtool.m4:  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
m4/libtool.m4:  if test -d /usr/nec ;then
m4/libtool.m4:  version_type=freebsd-elf
m4/libtool.m4:  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
m4/libtool.m4:    [Is shlibpath searched before the hard-coded library search path?])
m4/libtool.m4:    The last name is the one that the linker finds with -lNAME]])
m4/libtool.m4:    [Compile-time system search path for libraries])
m4/libtool.m4:    [Run-time system search path for libraries])
m4/libtool.m4:# --------------------------
m4/libtool.m4:dnl $ac_dummy forces splitting on constant user-supplied paths.
m4/libtool.m4:    test -z "$ac_dir" && ac_dir=.
m4/libtool.m4:    if test -f $ac_dir/$1; then
m4/libtool.m4:      if test -n "$file_magic_test_file"; then
m4/libtool.m4:*** bug-libtool@gnu.org
m4/libtool.m4:if test -n "$MAGIC_CMD"; then
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# --------------
m4/libtool.m4:if test -z "$lt_cv_path_MAGIC_CMD"; then
m4/libtool.m4:  if test -n "$ac_tool_prefix"; then
m4/libtool.m4:# ----------
m4/libtool.m4:# find the pathname to the GNU or non-GNU linker
m4/libtool.m4:AC_ARG_WITH([gnu-ld],
m4/libtool.m4:    [AS_HELP_STRING([--with-gnu-ld],
m4/libtool.m4:  # Check if gcc -print-prog-name=ld gives a path.
m4/libtool.m4:  *-*-mingw*)
m4/libtool.m4:    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
m4/libtool.m4:    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
m4/libtool.m4:      test -z "$LD" && LD="$ac_prog"
m4/libtool.m4:  AC_MSG_CHECKING([for non-GNU ld])
m4/libtool.m4:[if test -z "$LD"; then
m4/libtool.m4:    test -z "$ac_dir" && ac_dir=.
m4/libtool.m4:    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
m4/libtool.m4:      # Check to see if the program is GNU ld.  I'd rather use --version,
m4/libtool.m4:      # but apparently some variants of GNU ld only accept -v.
m4/libtool.m4:      # Break only if it was the GNU/non-GNU ld that we prefer.
m4/libtool.m4:      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
m4/libtool.m4:if test -n "$LD"; then
m4/libtool.m4:test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:#- --------------
m4/libtool.m4:[# I'd rather use --version here, but apparently some GNU lds only accept -v.
m4/libtool.m4:case `$LD -v 2>&1 </dev/null` in
m4/libtool.m4:# --------------
m4/libtool.m4:#   -- PORTME Some linkers may need a different reload flag.
m4/libtool.m4:  [lt_cv_ld_reload_flag='-r'])
m4/libtool.m4:reload_cmds='$LD$reload_flag -o $output$reload_objs'
m4/libtool.m4:      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
m4/libtool.m4:      reload_cmds='$LD$reload_flag -o $output$reload_objs'
m4/libtool.m4:# ----------------------
m4/libtool.m4:#  -- PORTME fill in with the dynamic library characteristics
m4/libtool.m4:# 'none' -- dependencies not supported.
m4/libtool.m4:# `unknown' -- same as none, but documents that we really don't know.
m4/libtool.m4:# 'pass_all' -- all dependencies passed with no checks.
m4/libtool.m4:# 'test_compile' -- check by making test program.
m4/libtool.m4:# 'file_magic [[regex]]' -- check by looking for files in library path
m4/libtool.m4:aix[[4-9]]*)
m4/libtool.m4:  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
m4/libtool.m4:  lt_cv_file_magic_cmd='/usr/bin/file -L'
m4/libtool.m4:  # unless we find 'file', for example because we are cross-compiling.
m4/libtool.m4:    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
m4/libtool.m4:    lt_cv_file_magic_cmd='$OBJDUMP -f'
m4/libtool.m4:  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
m4/libtool.m4:  lt_cv_file_magic_cmd='$OBJDUMP -f'
m4/libtool.m4:  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
m4/libtool.m4:      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
m4/libtool.m4:    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
m4/libtool.m4:    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
m4/libtool.m4:    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
m4/libtool.m4:interix[[3-9]]*)
m4/libtool.m4:  *-32|*"-32 ") libmagic=32-bit;;
m4/libtool.m4:  *-n32|*"-n32 ") libmagic=N32;;
m4/libtool.m4:  *-64|*"-64 ") libmagic=64-bit;;
m4/libtool.m4:  *) libmagic=never-match;;
m4/libtool.m4:linux* | k*bsd*-gnu | kopensolaris*-gnu)
m4/libtool.m4:netbsd* | netbsdelf*-gnu)
m4/libtool.m4:  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
m4/libtool.m4:    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
m4/libtool.m4:  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
m4/libtool.m4:  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
m4/libtool.m4:    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
m4/libtool.m4:    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
m4/libtool.m4:    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
m4/libtool.m4:    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
m4/libtool.m4:    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
m4/libtool.m4:test -z "$deplibs_check_method" && deplibs_check_method=unknown
m4/libtool.m4:# ----------
m4/libtool.m4:# find the pathname to a BSD- or MS-compatible name lister
m4/libtool.m4:AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
m4/libtool.m4:[if test -n "$NM"; then
m4/libtool.m4:  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
m4/libtool.m4:      test -z "$ac_dir" && ac_dir=.
m4/libtool.m4:      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
m4/libtool.m4:	# Check to see if the nm accepts a BSD-compat flag.
m4/libtool.m4:	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
m4/libtool.m4:	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
m4/libtool.m4:	  lt_cv_path_NM="$tmp_nm -B"
m4/libtool.m4:	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
m4/libtool.m4:	    lt_cv_path_NM="$tmp_nm -p"
m4/libtool.m4:  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
m4/libtool.m4:test -z "$NM" && NM=nm
m4/libtool.m4:_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
m4/libtool.m4:  rm -f conftest*])
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# --------
m4/libtool.m4:*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
m4/libtool.m4:*-ncr-sysv4.3*)
m4/libtool.m4:  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="-lm")
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# -------------------------------
m4/libtool.m4:  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
m4/libtool.m4:  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
m4/libtool.m4:    [-fno-rtti -fno-exceptions], [],
m4/libtool.m4:    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
m4/libtool.m4:# ----------------------
m4/libtool.m4:sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
m4/libtool.m4:# Define system-specific variables.
m4/libtool.m4:case `$NM -V 2>&1` in
m4/libtool.m4:lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
m4/libtool.m4:lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
m4/libtool.m4:lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
m4/libtool.m4:    # Fake it for dumpbin and say T for any non-static function
m4/libtool.m4:    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
m4/libtool.m4:  rm -f conftest*
m4/libtool.m4:    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
m4/libtool.m4:	mv -f "$nlist"T "$nlist"
m4/libtool.m4:	rm -f "$nlist"T
m4/libtool.m4:	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
m4/libtool.m4:	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
m4/libtool.m4:	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
m4/libtool.m4:  rm -rf conftest* conftst*
m4/libtool.m4:if test -z "$lt_cv_sys_global_symbol_pipe"; then
m4/libtool.m4:if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
m4/libtool.m4:# ---------------------------
m4/libtool.m4:    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
m4/libtool.m4:            # adding the `-m68020' flag to GCC prevents building anything better,
m4/libtool.m4:            # like `-m68040'.
m4/libtool.m4:            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
m4/libtool.m4:      # Although the cygwin gcc ignores -fPIC, still need this for old-style
m4/libtool.m4:      # (--disable-auto-import) libraries
m4/libtool.m4:	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
m4/libtool.m4:    interix[[3-9]]*)
m4/libtool.m4:      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
m4/libtool.m4:      if test -d /usr/nec; then
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
m4/libtool.m4:      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
m4/libtool.m4:      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
m4/libtool.m4:      # QNX uses GNU C++, but need to define -shared option too, otherwise
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
m4/libtool.m4:      aix[[4-9]]*)
m4/libtool.m4:	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
m4/libtool.m4:	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
m4/libtool.m4:	    # CC pic flag -KPIC is the default.
m4/libtool.m4:      linux* | k*bsd*-gnu | kopensolaris*-gnu)
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
m4/libtool.m4:	    # old Intel C++ for x86_64 which still supported -KPIC.
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
m4/libtool.m4:	    # ICC 10 doesn't accept -KPIC any more.
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
m4/libtool.m4:	    case `$CC -V 2>&1 | sed 5q` in
m4/libtool.m4:	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
m4/libtool.m4:      netbsd* | netbsdelf*-gnu)
m4/libtool.m4:        # QNX uses GNU C++, but need to define -shared option too, otherwise
m4/libtool.m4:        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:	    # NonStop-UX NCC 3.20
m4/libtool.m4:	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
m4/libtool.m4:            # adding the `-m68020' flag to GCC prevents building anything better,
m4/libtool.m4:            # like `-m68040'.
m4/libtool.m4:            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
m4/libtool.m4:      # Although the cygwin gcc ignores -fPIC, still need this for old-style
m4/libtool.m4:      # (--disable-auto-import) libraries
m4/libtool.m4:	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
m4/libtool.m4:      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
m4/libtool.m4:      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
m4/libtool.m4:    interix[[3-9]]*)
m4/libtool.m4:      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
m4/libtool.m4:      # QNX uses GNU C++, but need to define -shared option too, otherwise
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
m4/libtool.m4:      if test -d /usr/nec; then
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
m4/libtool.m4:	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
m4/libtool.m4:      # not for PA HP-UX.
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:      # PIC (with -KPIC) is the default.
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
m4/libtool.m4:    linux* | k*bsd*-gnu | kopensolaris*-gnu)
m4/libtool.m4:      # old Intel for x86_64 which still supported -KPIC.
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
m4/libtool.m4:      # ICC 10 doesn't accept -KPIC any more.
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
m4/libtool.m4:	case `$CC -V 2>&1 | sed 5q` in
m4/libtool.m4:	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:      # QNX uses GNU C++, but need to define -shared option too, otherwise
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:      if test -d /usr/nec ;then
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
m4/libtool.m4:	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
m4/libtool.m4:  # For platforms which do not support PIC, -DPIC is meaningless:
m4/libtool.m4:    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
m4/libtool.m4:if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
m4/libtool.m4:    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
m4/libtool.m4:# ----------------------------
m4/libtool.m4:  aix[[4-9]]*)
m4/libtool.m4:    # If we're using GNU nm, then we don't want the "-C" option.
m4/libtool.m4:    # -C means demangle to AIX nm, but means don't demangle with GNU nm
m4/libtool.m4:    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
m4/libtool.m4:      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
m4/libtool.m4:      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
m4/libtool.m4:    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
m4/libtool.m4:  linux* | k*bsd*-gnu)
m4/libtool.m4:  # include_expsyms should be a list of space-separated symbols to be *always*
m4/libtool.m4:  linux* | k*bsd*-gnu)
m4/libtool.m4:    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
m4/libtool.m4:    # ancient GNU ld didn't support --whole-archive et. al.
m4/libtool.m4:    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
m4/libtool.m4:      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
m4/libtool.m4:    case `$LD -v 2>&1` in
m4/libtool.m4:      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
m4/libtool.m4:    aix[[3-9]]*)
m4/libtool.m4:*** so that a non-GNU linker is found, and then restart.
m4/libtool.m4:            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
m4/libtool.m4:            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
m4/libtool.m4:	# support --undefined.  This deserves some investigation.  FIXME
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
m4/libtool.m4:      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
m4/libtool.m4:        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
m4/libtool.m4:	# If the export-symbols file already is a .def file (1st line
m4/libtool.m4:	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
m4/libtool.m4:    interix[[3-9]]*)
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
m4/libtool.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
m4/libtool.m4:      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
m4/libtool.m4:      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
m4/libtool.m4:    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
m4/libtool.m4:      if test "$host_os" = linux-dietlibc; then
m4/libtool.m4:	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
m4/libtool.m4:      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
m4/libtool.m4:	tmp_sharedflag='-shared'
m4/libtool.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
m4/libtool.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
m4/libtool.m4:	  tmp_addflag=' $pic_flag -Mnomain' ;;
m4/libtool.m4:	  tmp_addflag=' -i_dynamic' ;;
m4/libtool.m4:	  tmp_addflag=' -i_dynamic -nofor_main' ;;
m4/libtool.m4:	  tmp_addflag=' -nofor_main' ;;
m4/libtool.m4:	  tmp_sharedflag='--shared' ;;
m4/libtool.m4:	  tmp_sharedflag='-qmkshrobj'
m4/libtool.m4:	case `$CC -V 2>&1 | sed 5q` in
m4/libtool.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
m4/libtool.m4:	  tmp_sharedflag='-G' ;;
m4/libtool.m4:	  tmp_sharedflag='-G' ;;
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
m4/libtool.m4:	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
m4/libtool.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
m4/libtool.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
m4/libtool.m4:	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
m4/libtool.m4:	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
m4/libtool.m4:    netbsd* | netbsdelf*-gnu)
m4/libtool.m4:      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
m4/libtool.m4:      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
m4/libtool.m4:      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
m4/libtool.m4:      case `$LD -v 2>&1` in
m4/libtool.m4:        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
m4/libtool.m4:	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
m4/libtool.m4:      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
m4/libtool.m4:      # are no directories specified by -L.
m4/libtool.m4:      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
m4/libtool.m4:    aix[[4-9]]*)
m4/libtool.m4:	exp_sym_flag='-Bexport'
m4/libtool.m4:	# If we're using GNU nm, then we don't want the "-C" option.
m4/libtool.m4:	# -C means demangle to AIX nm, but means don't demangle with GNU nm
m4/libtool.m4:	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
m4/libtool.m4:	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
m4/libtool.m4:	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
m4/libtool.m4:	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
m4/libtool.m4:	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
m4/libtool.m4:	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
m4/libtool.m4:	exp_sym_flag='-bexport'
m4/libtool.m4:	no_entry_flag='-bnoentry'
m4/libtool.m4:      # or program results in "error TOC overflow" add -mminimal-toc to
m4/libtool.m4:      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
m4/libtool.m4:      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
m4/libtool.m4:	  collect2name=`${CC} -print-prog-name=collect2`
m4/libtool.m4:	  if test -f "$collect2name" &&
m4/libtool.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:	shared_flag='-shared'
m4/libtool.m4:	  shared_flag="$shared_flag "'${wl}-G'
m4/libtool.m4:	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
m4/libtool.m4:	# chokes on -Wl,-G. The following line is correct:
m4/libtool.m4:	  shared_flag='-G'
m4/libtool.m4:	    shared_flag='${wl}-G'
m4/libtool.m4:	    shared_flag='${wl}-bM:SRE'
m4/libtool.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
m4/libtool.m4:      # It seems that -bexpall does not export symbols beginning with
m4/libtool.m4:	# Warning - without using the other runtime loading flags (-brtl),
m4/libtool.m4:	# -berok will link without error, but may produce a broken library.
m4/libtool.m4:	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
m4/libtool.m4:        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
m4/libtool.m4:        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
m4/libtool.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
m4/libtool.m4:	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
m4/libtool.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
m4/libtool.m4:	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
m4/libtool.m4:	  # Warning - without using the other run time loading flags,
m4/libtool.m4:	  # -berok will link without error, but may produce a broken library.
m4/libtool.m4:	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
m4/libtool.m4:	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
m4/libtool.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
m4/libtool.m4:            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
m4/libtool.m4:            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
m4/libtool.m4:      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
m4/libtool.m4:      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
m4/libtool.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
m4/libtool.m4:      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
m4/libtool.m4:      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	# Try to use the -exported_symbol ld option, if it does not
m4/libtool.m4:	# work, assume that -exports_file does not work either and
m4/libtool.m4:        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
m4/libtool.m4:          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:    netbsd* | netbsdelf*-gnu)
m4/libtool.m4:      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:      if test -f /usr/libexec/ld.so; then
m4/libtool.m4:	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
m4/libtool.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
m4/libtool.m4:	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
m4/libtool.m4:	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
m4/libtool.m4:	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
m4/libtool.m4:	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
m4/libtool.m4:      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
m4/libtool.m4:	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:    osf4* | osf5*)	# as osf3* with the addition of -msym flag
m4/libtool.m4:	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
m4/libtool.m4:	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
m4/libtool.m4:	# Both c and cxx compiler support -rpath directly
m4/libtool.m4:	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
m4/libtool.m4:      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
m4/libtool.m4:	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
m4/libtool.m4:	case `$CC -V 2>&1` in
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
m4/libtool.m4:	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
m4/libtool.m4:	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
m4/libtool.m4:      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
m4/libtool.m4:	# but understands `-z linker_flag'.  GCC discards it without `$wl',
m4/libtool.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
m4/libtool.m4:	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
m4/libtool.m4:      if test -d /usr/nec; then
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:      # Note: We can NOT use -z defs as we might desire, because we do not
m4/libtool.m4:      # link with -lc, and that would cause any symbols used from libc to
m4/libtool.m4:      # ever link correctly.  If we're not using GNU ld we use -z text
m4/libtool.m4:      # though, which does catch some bad symbols but isn't as heavy-handed
m4/libtool.m4:      # as -z defs.
m4/libtool.m4:      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
m4/libtool.m4:      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
m4/libtool.m4:      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
m4/libtool.m4:      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
m4/libtool.m4:  # Assume -lc should be added
m4/libtool.m4:      # FIXME: we may have to deal with multi-command sequences.
m4/libtool.m4:      # Test whether the compiler implicitly links with -lc since on some
m4/libtool.m4:      # systems, -lgcc has to come before -lc. If gcc already passes -lc
m4/libtool.m4:      # to ld, don't add -lc before -lgcc.
m4/libtool.m4:      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
m4/libtool.m4:        compiler_flags=-v
m4/libtool.m4:        linker_flags=-v
m4/libtool.m4:        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
m4/libtool.m4:    [Whether or not to add -lc for building shared libraries])
m4/libtool.m4:    [Create an old-style archive from a shared archive])
m4/libtool.m4:    [Create a temporary old-style archive to link instead of a shared archive])
m4/libtool.m4:    [Whether we need a single "-rpath" flag with a separated argument])
m4/libtool.m4:    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
m4/libtool.m4:# ------------------------
m4/libtool.m4:if test -n "$compiler"; then
m4/libtool.m4:    if test -n "$RANLIB"; then
m4/libtool.m4:  aix[[4-9]]*)
m4/libtool.m4:# ------------
m4/libtool.m4:if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
m4/libtool.m4:    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# --------------------------
m4/libtool.m4:# and will be corrupted by setting them based on a non-working compiler.
m4/libtool.m4:  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
m4/libtool.m4:  if test -n "${lt_cv_path_LDCXX+set}"; then
m4/libtool.m4:  test -z "${LDCXX+set}" || LD=$LDCXX
m4/libtool.m4:  CC=${CXX-"c++"}
m4/libtool.m4:  if test -n "$compiler"; then
m4/libtool.m4:    # We don't want -fno-exception when compiling C++ code, so set the
m4/libtool.m4:      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
m4/libtool.m4:        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
m4/libtool.m4:        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
m4/libtool.m4:        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
m4/libtool.m4:        # ancient GNU ld didn't support --whole-archive et. al.
m4/libtool.m4:        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
m4/libtool.m4:	  $GREP 'no-whole-archive' > /dev/null; then
m4/libtool.m4:          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
m4/libtool.m4:        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
m4/libtool.m4:      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
m4/libtool.m4:      aix[[4-9]]*)
m4/libtool.m4:          exp_sym_flag='-Bexport'
m4/libtool.m4:          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
m4/libtool.m4:          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
m4/libtool.m4:	      *-brtl*)
m4/libtool.m4:          exp_sym_flag='-bexport'
m4/libtool.m4:          no_entry_flag='-bnoentry'
m4/libtool.m4:        # or program results in "error TOC overflow" add -mminimal-toc to
m4/libtool.m4:        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
m4/libtool.m4:        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
m4/libtool.m4:	  collect2name=`${CC} -print-prog-name=collect2`
m4/libtool.m4:	  if test -f "$collect2name" &&
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:          shared_flag='-shared'
m4/libtool.m4:	    shared_flag="$shared_flag "'${wl}-G'
m4/libtool.m4:	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
m4/libtool.m4:	  # chokes on -Wl,-G. The following line is correct:
m4/libtool.m4:	  shared_flag='-G'
m4/libtool.m4:	      shared_flag='${wl}-G'
m4/libtool.m4:	      shared_flag='${wl}-bM:SRE'
m4/libtool.m4:        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
m4/libtool.m4:        # It seems that -bexpall does not export symbols beginning with
m4/libtool.m4:          # Warning - without using the other runtime loading flags (-brtl),
m4/libtool.m4:          # -berok will link without error, but may produce a broken library.
m4/libtool.m4:          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
m4/libtool.m4:          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
m4/libtool.m4:          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
m4/libtool.m4:	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
m4/libtool.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
m4/libtool.m4:	    # Warning - without using the other run time loading flags,
m4/libtool.m4:	    # -berok will link without error, but may produce a broken library.
m4/libtool.m4:	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
m4/libtool.m4:	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
m4/libtool.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
m4/libtool.m4:	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
m4/libtool.m4:	  # support --undefined.  This deserves some investigation.  FIXME
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
m4/libtool.m4:        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
m4/libtool.m4:          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
m4/libtool.m4:          # If the export-symbols file already is a .def file (1st line
m4/libtool.m4:          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
m4/libtool.m4:      freebsd-elf*)
m4/libtool.m4:        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
m4/libtool.m4:            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
m4/libtool.m4:            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
m4/libtool.m4:              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
m4/libtool.m4:	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
m4/libtool.m4:	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
m4/libtool.m4:	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
m4/libtool.m4:	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
m4/libtool.m4:	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
m4/libtool.m4:      interix[[3-9]]*)
m4/libtool.m4:	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
m4/libtool.m4:	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
m4/libtool.m4:	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
m4/libtool.m4:	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
m4/libtool.m4:	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
m4/libtool.m4:	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
m4/libtool.m4:        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:      linux* | k*bsd*-gnu | kopensolaris*-gnu)
m4/libtool.m4:	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
m4/libtool.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
m4/libtool.m4:	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
m4/libtool.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
m4/libtool.m4:	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
m4/libtool.m4:	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
m4/libtool.m4:	    case `$CC -V 2>&1` in
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
m4/libtool.m4:		  ia64*) tmp_idyn=' -i_dynamic';;
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
m4/libtool.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
m4/libtool.m4:	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
m4/libtool.m4:	    case `$CC -V` in
m4/libtool.m4:	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
m4/libtool.m4:		rm -rf $tpldir~
m4/libtool.m4:		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
m4/libtool.m4:		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
m4/libtool.m4:		rm -rf $tpldir~
m4/libtool.m4:		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
m4/libtool.m4:		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
m4/libtool.m4:		rm -rf $tpldir~
m4/libtool.m4:		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
m4/libtool.m4:		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
m4/libtool.m4:		rm -rf $tpldir~
m4/libtool.m4:		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
m4/libtool.m4:		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
m4/libtool.m4:	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
m4/libtool.m4:	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
m4/libtool.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
m4/libtool.m4:	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
m4/libtool.m4:	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
m4/libtool.m4:		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
m4/libtool.m4:		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
m4/libtool.m4:	    case `$CC -V 2>&1 | sed 5q` in
m4/libtool.m4:	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
m4/libtool.m4:	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
m4/libtool.m4:	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
m4/libtool.m4:	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
m4/libtool.m4:	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
m4/libtool.m4:	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
m4/libtool.m4:	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
m4/libtool.m4:	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
m4/libtool.m4:        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
m4/libtool.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
m4/libtool.m4:	# Workaround some broken pre-1.5 toolchains
m4/libtool.m4:	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
m4/libtool.m4:	if test -f /usr/libexec/ld.so; then
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
m4/libtool.m4:	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
m4/libtool.m4:	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
m4/libtool.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
m4/libtool.m4:	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
m4/libtool.m4:	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
m4/libtool.m4:	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
m4/libtool.m4:	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
m4/libtool.m4:	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
m4/libtool.m4:	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
m4/libtool.m4:	          echo "-hidden">> $lib.exp~
m4/libtool.m4:	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
m4/libtool.m4:	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
m4/libtool.m4:	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
m4/libtool.m4:	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
m4/libtool.m4:	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
m4/libtool.m4:	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
m4/libtool.m4:	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
m4/libtool.m4:	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
m4/libtool.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
m4/libtool.m4:	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
m4/libtool.m4:	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
m4/libtool.m4:	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
m4/libtool.m4:		# but understands `-z linker_flag'.
m4/libtool.m4:		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
m4/libtool.m4:	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
m4/libtool.m4:	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
m4/libtool.m4:	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
m4/libtool.m4:	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
m4/libtool.m4:	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
m4/libtool.m4:	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
m4/libtool.m4:		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
m4/libtool.m4:	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
m4/libtool.m4:	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
m4/libtool.m4:	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
m4/libtool.m4:	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
m4/libtool.m4:		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
m4/libtool.m4:	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
m4/libtool.m4:	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
m4/libtool.m4:		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
m4/libtool.m4:		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
m4/libtool.m4:      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	# Note: We can NOT use -z defs as we might desire, because we do not
m4/libtool.m4:	# link with -lc, and that would cause any symbols used from libc to
m4/libtool.m4:	# ever link correctly.  If we're not using GNU ld we use -z text
m4/libtool.m4:	# though, which does catch some bad symbols but isn't as heavy-handed
m4/libtool.m4:	# as -z defs.
m4/libtool.m4:	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
m4/libtool.m4:	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
m4/libtool.m4:	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
m4/libtool.m4:	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
m4/libtool.m4:	    # NonStop-UX NCC 3.20
m4/libtool.m4:  fi # test -n "$compiler"
m4/libtool.m4:# ---------------------------------
m4/libtool.m4:    -L* | -R* | -l*)
m4/libtool.m4:       # Some compilers place space between "-{L,R}" and the path.
m4/libtool.m4:       if test $p = "-L" ||
m4/libtool.m4:          test $p = "-R"; then
m4/libtool.m4:	 -L* | -R*)
m4/libtool.m4:	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
m4/libtool.m4:	 # The "-l" case would never come before the object being
m4/libtool.m4:	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
m4/libtool.m4:	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
m4/libtool.m4:	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
m4/libtool.m4:  rm -f a.out a.exe
m4/libtool.m4:$RM -f confest.$objext
m4/libtool.m4:interix[[3-9]]*)
m4/libtool.m4:  case `$CC -V 2>&1 | sed 5q` in
m4/libtool.m4:    # The more standards-conforming stlport4 library is
m4/libtool.m4:    # -library=stlport4 depends on it.
m4/libtool.m4:    *" -library=stlport4 "*)
m4/libtool.m4:      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
m4/libtool.m4:    # The more standards-conforming stlport4 library is
m4/libtool.m4:    # -library=stlport4 depends on it.
m4/libtool.m4:    *" -library=stlport4 "*)
m4/libtool.m4:    # Adding this requires a known-good setup of shared libraries for
m4/libtool.m4:      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
m4/libtool.m4:*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
m4/libtool.m4:if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
m4/libtool.m4: _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
m4/libtool.m4:# ------------
m4/libtool.m4:if test -z "$F77" || test "X$F77" = "Xno"; then
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# --------------------------
m4/libtool.m4:# and will be corrupted by setting them based on a non-working compiler.
m4/libtool.m4:  CC=${F77-"f77"}
m4/libtool.m4:  if test -n "$compiler"; then
m4/libtool.m4:        if test -n "$RANLIB"; then
m4/libtool.m4:      aix[[4-9]]*)
m4/libtool.m4:  fi # test -n "$compiler"
m4/libtool.m4:# -----------
m4/libtool.m4:if test -z "$FC" || test "X$FC" = "Xno"; then
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# -------------------------
m4/libtool.m4:ac_ext=${ac_fc_srcext-f}
m4/libtool.m4:# and will be corrupted by setting them based on a non-working compiler.
m4/libtool.m4:  CC=${FC-"f95"}
m4/libtool.m4:  if test -n "$compiler"; then
m4/libtool.m4:        if test -n "$RANLIB"; then
m4/libtool.m4:      aix[[4-9]]*)
m4/libtool.m4:  fi # test -n "$compiler"
m4/libtool.m4:# --------------------------
m4/libtool.m4:CC=${GCJ-"gcj"}
m4/libtool.m4:if test -n "$compiler"; then
m4/libtool.m4:# -------------------------
m4/libtool.m4:CC=${RC-"windres"}
m4/libtool.m4:if test -n "$compiler"; then
m4/libtool.m4:# -----------
m4/libtool.m4:      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# ----------
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# --------------
m4/libtool.m4:test -z "$GREP" && GREP=grep
m4/libtool.m4:dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
m4/libtool.m4:# --------------
m4/libtool.m4:test -z "$OBJDUMP" && OBJDUMP=objdump
m4/libtool.m4:# ------------
m4/libtool.m4:# Check for a fully-functional sed program, that truncates
m4/libtool.m4:test -z "$SED" && SED=sed
m4/libtool.m4:Xsed="$SED -e 1s/^X//"
m4/libtool.m4:_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
m4/libtool.m4:    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
m4/libtool.m4:  test -z "$as_dir" && as_dir=.
m4/libtool.m4:  test ! -f $lt_ac_sed && continue
m4/libtool.m4:  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
m4/libtool.m4:    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
m4/libtool.m4:    cmp -s conftest.out conftest.nl || break
m4/libtool.m4:    test $lt_ac_count -gt 10 && break
m4/libtool.m4:    if test $lt_ac_count -gt $lt_ac_max; then
m4/libtool.m4:dnl aclocal-1.4 backwards compatibility:
m4/libtool.m4:# ------------------------
m4/libtool.m4:    && eval 'test $(( 1 + 1 )) -eq 2 \
m4/libtool.m4:    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
m4/libtool.m4:# ---------------------
m4/libtool.m4:# func_xform libobj-or-source
m4/libtool.m4:# func_arith arithmetic-term...
m4/libtool.m4:  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
m4/libtool.m4:  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
m4/libtool.m4:           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
m4/libtool.m4:           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
m4/libtool.m4:my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
m4/libtool.m4:my_sed_long_arg='1s/^-[[^=]]*=//'
m4/libtool.m4:  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
m4/libtool.m4:  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
m4/libtool.m4:  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
m4/libtool.m4:# func_xform libobj-or-source
m4/libtool.m4:  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
m4/libtool.m4:# func_arith arithmetic-term...
Makefile.am:C_PKGCONFIG = vipsCC-7.${IM_MINOR_VERSION}.pc
Makefile.am:	vips-7.${IM_MINOR_VERSION}.pc.in \
Makefile.am:	vipsCC-7.${IM_MINOR_VERSION}.pc.in \
Makefile.am:pkgconfig_DATA = vips-7.${IM_MINOR_VERSION}.pc $(C_PKGCONFIG)
Makefile.am:install-exec-hook:
Makefile.am:	-rm -rf ${DESTDIR}$(datadir)/doc/vips
Makefile.am:dist-hook:
Makefile.am:	-find $(distdir) -name .svn -exec rm -rf {} \;
Makefile.am:uninstall-hook:
Makefile.am:	-chmod -R u+w ${DESTDIR}$(datadir)/doc/vips
Makefile.am:	-rm -rf ${DESTDIR}$(datadir)/doc/vips
Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
Makefile.in:install_sh_PROGRAM = $(install_sh) -c
Makefile.in:install_sh_SCRIPT = $(install_sh) -c
Makefile.in:	$(srcdir)/vips-7.22.pc.in $(srcdir)/vipsCC-7.22.pc.in \
Makefile.in:	config.guess config.sub depcomp install-sh ltmain.sh missing \
Makefile.in:	mkinstalldirs py-compile
Makefile.in:CONFIG_CLEAN_FILES = vips-7.22.pc vipsCC-7.22.pc swig/python/setup.py
Makefile.in:RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
Makefile.in:	html-recursive info-recursive install-data-recursive \
Makefile.in:	install-dvi-recursive install-exec-recursive \
Makefile.in:	install-html-recursive install-info-recursive \
Makefile.in:	install-pdf-recursive install-ps-recursive install-recursive \
Makefile.in:	installcheck-recursive installdirs-recursive pdf-recursive \
Makefile.in:	ps-recursive uninstall-recursive
Makefile.in:am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
Makefile.in:  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
Makefile.in:RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
Makefile.in:  distclean-recursive maintainer-clean-recursive
Makefile.in:AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
Makefile.in:	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
Makefile.in:	distdir dist dist-all distcheck
Makefile.in:distdir = $(PACKAGE)-$(VERSION)
Makefile.in:  { test ! -d "$(distdir)" \
Makefile.in:    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
Makefile.in:         && rm -fr "$(distdir)"; }; }
Makefile.in:  while test -n "$$dir1"; do \
Makefile.in:    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
Makefile.in:        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
Makefile.in:        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
Makefile.in:        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
Makefile.in:          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
Makefile.in:    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
Makefile.in:GZIP_ENV = --best
Makefile.in:distuninstallcheck_listfiles = find . -type f -print
Makefile.in:distcleancheck_listfiles = find . -type f -print
Makefile.in:@ENABLE_CXX_TRUE@C_PKGCONFIG = vipsCC-7.${IM_MINOR_VERSION}.pc
Makefile.in:	vips-7.${IM_MINOR_VERSION}.pc.in \
Makefile.in:	vipsCC-7.${IM_MINOR_VERSION}.pc.in \
Makefile.in:pkgconfig_DATA = vips-7.${IM_MINOR_VERSION}.pc $(C_PKGCONFIG)
Makefile.in:	$(MAKE) $(AM_MAKEFLAGS) all-recursive
Makefile.in:am--refresh:
Makefile.in:	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
Makefile.in:	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
Makefile.in:	  $(AUTOMAKE) --gnu Makefile
Makefile.in:	$(SHELL) ./config.status --recheck
Makefile.in:config.h: stamp-h1
Makefile.in:	@if test ! -f $@; then \
Makefile.in:	  rm -f stamp-h1; \
Makefile.in:	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
Makefile.in:stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
Makefile.in:	@rm -f stamp-h1
Makefile.in:	rm -f stamp-h1
Makefile.in:distclean-hdr:
Makefile.in:	-rm -f config.h stamp-h1
Makefile.in:vips-7.22.pc: $(top_builddir)/config.status $(srcdir)/vips-7.22.pc.in
Makefile.in:vipsCC-7.22.pc: $(top_builddir)/config.status $(srcdir)/vipsCC-7.22.pc.in
Makefile.in:mostlyclean-libtool:
Makefile.in:	-rm -f *.lo
Makefile.in:clean-libtool:
Makefile.in:	-rm -rf .libs _libs
Makefile.in:distclean-libtool:
Makefile.in:	-rm -f libtool config.lt
Makefile.in:install-pkgconfigDATA: $(pkgconfig_DATA)
Makefile.in:	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
Makefile.in:	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
Makefile.in:	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
Makefile.in:uninstall-pkgconfigDATA:
Makefile.in:	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
Makefile.in:	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
Makefile.in:	test -n "$$files" || exit 0; \
Makefile.in:	echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
Makefile.in:	cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
Makefile.in:	    *=* | --[!k]*);; \
Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
Makefile.in:	    local_target="$$target-am"; \
Makefile.in:	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
Makefile.in:	fi; test -z "$$fail"
Makefile.in:	    *=* | --[!k]*);; \
Makefile.in:	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
Makefile.in:	    local_target="$$target-am"; \
Makefile.in:	done && test -z "$$fail"
Makefile.in:tags-recursive:
Makefile.in:ctags-recursive:
Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
Makefile.in:	mkid -fID $$unique
Makefile.in:TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
Makefile.in:	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
Makefile.in:	  include_option=--etags-include; \
Makefile.in:	  include_option=--include; \
Makefile.in:	    test ! -f $$subdir/TAGS || \
Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
Makefile.in:	  if test $$# -gt 0; then \
Makefile.in:CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
Makefile.in:distclean-tags:
Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
Makefile.in:	test -d "$(distdir)" || mkdir "$(distdir)"
Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
Makefile.in:			   sort -u` ;; \
Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
Makefile.in:	  if test -d $$d/$$file; then \
Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
Makefile.in:	    if test -d "$(distdir)/$$file"; then \
Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
Makefile.in:	    test -f "$(distdir)/$$file" \
Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
Makefile.in:	    test -d "$(distdir)/$$subdir" \
Makefile.in:	  dist-hook
Makefile.in:	-test -n "$(am__skip_mode_fix)" \
Makefile.in:	|| find "$(distdir)" -type d ! -perm -755 \
Makefile.in:		-exec chmod u+rwx,go+rx {} \; -o \
Makefile.in:	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
Makefile.in:	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
Makefile.in:	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
Makefile.in:	|| chmod -R a+r "$(distdir)"
Makefile.in:dist-gzip: distdir
Makefile.in:	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
Makefile.in:dist-bzip2: distdir
Makefile.in:	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
Makefile.in:dist-lzma: distdir
Makefile.in:	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
Makefile.in:dist-xz: distdir
Makefile.in:	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
Makefile.in:dist-tarZ: distdir
Makefile.in:	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
Makefile.in:dist-shar: distdir
Makefile.in:	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
Makefile.in:dist-zip: distdir
Makefile.in:	-rm -f $(distdir).zip
Makefile.in:	zip -rq $(distdir).zip $(distdir)
Makefile.in:dist dist-all: distdir
Makefile.in:	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
Makefile.in:# it guarantees that the distribution is self-contained by making another
Makefile.in:	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
Makefile.in:	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
Makefile.in:	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
Makefile.in:	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
Makefile.in:	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
Makefile.in:	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
Makefile.in:	chmod -R a-w $(distdir); chmod a+w $(distdir)
Makefile.in:	chmod a-w $(distdir)
Makefile.in:	test -d $(distdir)/_build || exit 0; \
Makefile.in:	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
Makefile.in:	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
Makefile.in:	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
Makefile.in:	  && chmod -R a-w "$$dc_install_base" \
Makefile.in:	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
Makefile.in:	  && rm -rf "$$dc_destdir" \
Makefile.in:	  && rm -rf $(DIST_ARCHIVES) \
Makefile.in:	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
Makefile.in:	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
Makefile.in:	        if test -n "$(DESTDIR)"; then \
Makefile.in:	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
Makefile.in:check-am: all-am
Makefile.in:check: check-recursive
Makefile.in:all-am: Makefile $(DATA) config.h
Makefile.in:installdirs: installdirs-recursive
Makefile.in:installdirs-am:
Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
Makefile.in:install: install-recursive
Makefile.in:install-exec: install-exec-recursive
Makefile.in:install-data: install-data-recursive
Makefile.in:uninstall: uninstall-recursive
Makefile.in:install-am: all-am
Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
Makefile.in:installcheck: installcheck-recursive
Makefile.in:install-strip:
Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
Makefile.in:	  `test -z '$(STRIP)' || \
Makefile.in:mostlyclean-generic:
Makefile.in:clean-generic:
Makefile.in:distclean-generic:
Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
Makefile.in:maintainer-clean-generic:
Makefile.in:clean: clean-recursive
Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
Makefile.in:distclean: distclean-recursive
Makefile.in:	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
Makefile.in:	-rm -f Makefile
Makefile.in:distclean-am: clean-am distclean-generic distclean-hdr \
Makefile.in:	distclean-libtool distclean-tags
Makefile.in:dvi: dvi-recursive
Makefile.in:dvi-am:
Makefile.in:html: html-recursive
Makefile.in:html-am:
Makefile.in:info: info-recursive
Makefile.in:info-am:
Makefile.in:install-data-am: install-pkgconfigDATA
Makefile.in:install-dvi: install-dvi-recursive
Makefile.in:install-dvi-am:
Makefile.in:install-exec-am:
Makefile.in:	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
Makefile.in:install-html: install-html-recursive
Makefile.in:install-html-am:
Makefile.in:install-info: install-info-recursive
Makefile.in:install-info-am:
Makefile.in:install-man:
Makefile.in:install-pdf: install-pdf-recursive
Makefile.in:install-pdf-am:
Makefile.in:install-ps: install-ps-recursive
Makefile.in:install-ps-am:
Makefile.in:installcheck-am:
Makefile.in:maintainer-clean: maintainer-clean-recursive
Makefile.in:	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
Makefile.in:	-rm -rf $(top_srcdir)/autom4te.cache
Makefile.in:	-rm -f Makefile
Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
Makefile.in:mostlyclean: mostlyclean-recursive
Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
Makefile.in:pdf: pdf-recursive
Makefile.in:pdf-am:
Makefile.in:ps: ps-recursive
Makefile.in:ps-am:
Makefile.in:uninstall-am: uninstall-pkgconfigDATA
Makefile.in:	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
Makefile.in:	ctags-recursive install-am install-exec-am install-strip \
Makefile.in:	tags-recursive uninstall-am
Makefile.in:	all all-am am--refresh check check-am clean clean-generic \
Makefile.in:	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
Makefile.in:	dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \
Makefile.in:	dist-zip distcheck distclean distclean-generic distclean-hdr \
Makefile.in:	distclean-libtool distclean-tags distcleancheck distdir \
Makefile.in:	distuninstallcheck dvi dvi-am html html-am info info-am \
Makefile.in:	install install-am install-data install-data-am install-dvi \
Makefile.in:	install-dvi-am install-exec install-exec-am install-exec-hook \
Makefile.in:	install-html install-html-am install-info install-info-am \
Makefile.in:	install-man install-pdf install-pdf-am install-pkgconfigDATA \
Makefile.in:	install-ps install-ps-am install-strip installcheck \
Makefile.in:	installcheck-am installdirs installdirs-am maintainer-clean \
Makefile.in:	maintainer-clean-generic mostlyclean mostlyclean-generic \
Makefile.in:	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
Makefile.in:	uninstall uninstall-am uninstall-hook uninstall-pkgconfigDATA
Makefile.in:install-exec-hook:
Makefile.in:	-rm -rf ${DESTDIR}$(datadir)/doc/vips
Makefile.in:	-cp -r ${top_srcdir}/doc/html ${top_srcdir}/doc/pdf ${DESTDIR}$(datadir)/doc/vips 
Makefile.in:dist-hook:
Makefile.in:	-find $(distdir) -name .svn -exec rm -rf {} \;
Makefile.in:uninstall-hook:
Makefile.in:	-chmod -R u+w ${DESTDIR}$(datadir)/doc/vips
Makefile.in:	-rm -rf ${DESTDIR}$(datadir)/doc/vips
man/im_andimage.3:im_eorimage, im_eorconst, im_eor_vec \- boolean
man/im_andimage.3:behave similarly. Use im_eorconst( in, out, -1 ) or 
man/im_andimage.3:All functions return 0 on success and -1 on error.
man/im_stretch3.3:im_stretch3 \-  stretch horizontally by 3%, displace sub-pixel
man/im_stretch3.3:by xdisp/ydisp. It uses bi-cubic interpolation, but runs quickly. It works
man/im_stretch3.3:The function returns 0 on success and -1 on error.
man/im_cmulnorm.3:im_cmulnorm, im_multiply \- multiply two images
man/im_cmulnorm.3: -------+-----------------------------------------
man/im_cmulnorm.3:(x1*x2 - y1*y2, x1*y2 + x2*y1).
man/im_cmulnorm.3:All functions return 0 on success and -1 on error.
man/im_cmulnorm.3:N. Dessipris \- 22/04/1991
man/im_cmulnorm.3:J. Cupitt (im_multiply) \- 22/04/1991
man/im_rotquad.3:im_rotquad \- rotates the four quadrants of an image
man/im_rotquad.3:that the coordinate (0,0) is near the centre of the image, the so-called
man/im_rotquad.3:The function returns 0 on success and -1 on error.
man/im_rotquad.3:N. Dessipris \- 06/07/1990
man/im_setbuf.3:im_setbuf \- sets an image descriptor to keep an image in ram
man/im_setbuf.3:N. Dessipris \- 11/04/1990
man/im_ceil.3:im_ceil \- for each pixel, find the smallest integral value not less than
man/im_ceil.3:The function returns 0 on success and -1 on error.
man/im_freqflt.3:im_freqflt \- filters an image with a float filter mask in the frequency domain
man/im_freqflt.3:should be one channel square images.  Image filtermask is a non-complex one
man/im_freqflt.3:The function returns 0 on success and -1 on error.
man/im_freqflt.3:N. Dessipris \- 10/05/1991
man/im_debugim.3:im_debug, im_printlines \- print raw image data pointed by an image descriptor
man/im_debugim.3:N. Dessipris \- 22/04/1991
man/im_sharpen.3:im_sharpen \- simple coring edge enhancement
man/im_sharpen.3:boosted to compensate for blurring introduced by the half-tone process, and
man/im_sharpen.3:  --+-> blur with ----> subtract --> LUT --> add ---->
man/im_sharpen.3:    +----------------------+                  |
man/im_sharpen.3:    +-----------------------------------------+
man/im_sharpen.3:original L* to generate a high-frequency signal.
man/im_sharpen.3:This high-frequency signal is passed through a look-up table specified by the
man/im_sharpen.3:                   y2 |- - - - - -----------
man/im_sharpen.3:              -x1     | ...   |    
man/im_sharpen.3:  -------------------...---------------------->
man/im_sharpen.3:  ______/ _ _ _ _ _ _ | -y3
man/im_sharpen.3:imagine a cross-section through an image. Sharpening filters boost apparent
man/im_sharpen.3:sharpness by performing the following transformation. Consider a cross-section
man/im_sharpen.3:  --------------------+------------------->
man/im_sharpen.3:  --------------------+------------------->
man/im_sharpen.3:more under- than over-shoot.
man/im_sharpen.3:   m1 == -2
man/im_sharpen.3:creates a terrible-looking image, but you will be able to see clearly what
man/im_sharpen.3:refer to the image raster, not the half-tone resolution.
man/im_sharpen.3:The function returns 0 on success and -1 on error.
man/im_icc_transform.3:im_icc_export_depth \- transform images using ICC profiles
man/im_icc_transform.3:returns non-zero if there is an ICC library available. Calls to the other
man/im_icc_transform.3:.B "icc-profile-data".
man/im_icc_transform.3:.B "icc-profile-data".
man/im_icc_transform.3:The functions return 0 on success and -1 on error.
man/batch_image_convert.1:batch_image_convert  \- use VIPS to convert a set of images to a new type
man/batch_image_convert.1:returns 0 on success and non-zero on error.
man/im_match_linear_search.3:im_match_linear_search, im_match_linear \- resample to make a match
man/im_match_linear_search.3:attempt sub-pixel correlation. 
man/im_match_linear_search.3:J.Ph.Laurent \- 12/12/92
man/im_match_linear_search.3:J.Cupitt \- 22/02/93
man/im_benchmark.3:im_benchmark \- do something complicated
man/im_benchmark.3:The function returns 0 on success and -1 on error.
man/im_ppm2vips.3:im_ppm2vips, im_vips2ppm \- convert PPM/PGM/PBM images to and from VIPS format
man/im_fav4.3:im_fav4 \- averages four frames
man/im_fav4.3:returns 0 on success or -1 on error
man/im_fastcor.3:im_fastcor, im_spcor \- correlate two images
man/im_fastcor.3:one-band images held
man/im_fastcor.3:The function returns 0 on success and -1 on error.
man/im_fastcor.3:The National Gallery and Birkbeck College, 1990-1997.
man/IM_MACROS.3:IM_RINT, IM_MAX, IM_MIN \- misc math macros
man/IM_MACROS.3:These macros provide some simple but fast math functions --- IM_MAX(3)
man/IM_MACROS.3:NOT use ++,--, or a function call in their argument lists.
man/IM_MACROS.3:  #define IM_RINT(R) ((int)((R)>0?((R)+0.5):((R)-0.5)))
man/IM_MACROS.3:J. Cupitt \- 23/7/93
man/im_flood.3:im_flood, im_flood_blob \- flood a area
man/im_flood.3:fills an enclosed area from a starting point, painting ink into 4-way
man/im_flood.3:floods with the ink colour, finding pels 4-way connected to the start pel
man/im_flood.3:All functions return 0 on success and -1 on error.
man/im_stats.3:im_stats \- calculate many image statistics in a single pass
man/im_stats.3:Non-complex images only! 
man/im_magick2vips.3:im_magick2vips \- read images with the libMagick
man/im_dE_fromLab.3:im_dE_fromLab, im_dECMC_fromLab, im_dE00_fromLab \- calculate colour differences
man/im_dE_fromLab.3:calculators in VIPS --- other colour difference functions, such as
man/im_dE_fromLab.3:The functions return 0 on success and -1 on error.
man/im_dE_fromLab.3:National Gallery, 1990 - 1993
man/im_dE_fromLab.3:J.Ph. Laurent \- 2/12/1992
man/im_dE_fromLab.3:J. Cupitt \- 21/7/93
man/im_avg.3:im_avg, im_deviate, im_min, im_minpos, im_max, im_maxpos \- find the mean, standard deviation, minimum and maximum of an image
man/im_avg.3: Var{E} = 1 / (N - 1) * (E{X^2} - E{X}^2 / N)
man/im_avg.3:finds the average of an image pointed by im.  Takes as input any non-complex
man/im_avg.3:input any non-complex image format and returns
man/im_avg.3:All functions return 0 on success and -1 on error.
man/im_avg.3:N. Dessipris \- 24/04/1991
man/im_avg.3:J. Cupitt \- 21/7/93
man/im_initdesc.3:im_initdesc \- initialises an image descriptor to specific values
man/im_initdesc.3:Example: make a 512 by 512 one-band memory buffer.
man/im_initdesc.3:N. Dessipris \- 22/04/1991
man/im_create_dmask.3:im_scale_dmask, im_write_dmask, im_write_imask \- operations on double or int
man/im_create_dmask.3:file has non-integer coefficients then the function im_read_dmask() should
man/im_create_dmask.3:be used instead.  There is a built-in checking for all mask members.
man/im_create_dmask.3:The function returns 0 on success and -1 on error.
man/im_create_dmask.3:mask coefficients.  It returns 0 on success and -1 on error.
man/im_create_dmask.3:N. Dessipris \- 02/05/1991
man/light_correct.1:light_correct \- correct illumination errors on set of images
man/light_correct.1:arguments should be images taken with the same lighting set-up which need
man/light_correct.1:grey-mean/pixel for each point, and then multiplying the result by all the
man/light_correct.1:returns 0 on success and non-zero on error.
man/light_correct.1:The National Gallery and Birkbeck College, 1989-1996.
man/im_printdesc.3:\- decode image descriptors
man/im_printdesc.3:The functions which return int return -1 on error, 
man/im_printdesc.3:N. Dessipris \- 11/04/1990
man/im_gaussnoise.3:im_gaussnoise \- creates a gaussian noisy picture
man/im_gaussnoise.3:The function returns 0 on success and -1 on error.
man/im_gaussnoise.3:N. Dessipris \- 10/05/1991
man/im_rank.3:im_rank, im_rank_raw \- rank filter 
man/im_rank.3:It works for any non-complex image type, with any number of bands. 
man/im_rank.3:The special cases n == 0 and n == m * m - 1 are useful dilate and expand 
man/im_rank.3:The function returns 0 on success and -1 on error.
man/im_rank.3:1989-1996 The National Gallery and Birkbeck College
man/header.1:header \- prints information about an image file
man/header.1:.B -f FIELD, --field=FIELD
man/header.1: pineapple:~/CVS/vips-7.12/src/iofuncs john$ header -f Xsize ~/pics/*.v   
man/header.1:N. Dessipris \- 12/07/1990
man/VipsInterpolate.3:\- 
man/VipsInterpolate.3:nearest-neighbour, bilinear and bicubic interpolator. You can pass these to
man/VipsInterpolate.3:  $ vips --list classes
man/VipsInterpolate.3:Unless otherwise noted, functions return 0 success and -1 on error.
man/im_rint.3:im_rint \- for each pixel, find the nearest integral value 
man/im_rint.3:The function returns 0 on success and -1 on error.
man/im_project.3:im_project \- find horizontal and vertical projections
man/im_project.3:result image is 1 x in->Ysize pixels, where each pixel is the sum of all the
man/im_project.3:result image is in->Xsize x 1 pixels, where each pixel is the sum of all the
man/im_project.3:The function returns 0 on success and -1 on error.
man/im_abs.3:im_abs \- finds the absolute value or the magnitude of an image
man/im_abs.3:The function returns 0 on success and -1 on error.
man/im_tile_cache.3:im_tile_cache \- cache an image, tilewise
man/im_tile_cache.3:tiles (a value of -1 for
man/im_tile_cache.3:This is a lower-level operation than
man/im_tile_cache.3:The function returns 0 on success, and non-zero on error, setting
man/simcontr.1:simcontr \- shows the effect of simultaneous contrast
man/simcontr.1:N. Dessipris \- 27/02/1992
man/im_col_XYZ2rgb.3:\- colour space conversion
man/im_col_XYZ2rgb.3:displayable. Additionally, functions are provided to move from (a,b)-style
man/im_col_XYZ2rgb.3:rectangular colour coordinates to (C,h)-style coordinates. h is always
man/im_col_XYZ2rgb.3:analytical conversion from UCS to Lab, so look-up tables are used. These have
man/im_col_XYZ2rgb.3:many times - tables are only built on the first call.
man/im_col_XYZ2rgb.3:structures provied by VIPS in the NULL-terminated array im_col_displays[]. See
man/im_col_XYZ2rgb.3:im_col_XYZ2rgb() takes a display, a look-up table and an XYZ coordinate are
man/im_col_XYZ2rgb.3:returns three values in the range 0-255. The extra value oflow is set to 0 if
man/im_col_XYZ2rgb.3:The functions (usually) return 0 on success and -1 on error.
man/im_col_XYZ2rgb.3:National Gallery, 1990-1993.
man/im_col_XYZ2rgb.3:D. Saunders \- 1988
man/im_col_XYZ2rgb.3:J.Ph. Laurent \- 2/12/1992
man/im_col_XYZ2rgb.3:J.Cupitt \- 21/7/93
man/im_tone_build.3:im_tone_build, im_tone_map, im_tone_analyse, im_tone_build_range \- tone-curve adjustment of LAB
man/im_tone_build.3:   0 +--------------------------------------->
man/im_tone_build.3:an unsigned 16-bit image with (in_max + 1) entries, each in the range [0,
man/im_tone_build.3:expressed as 0-100, as in LAB colour space, but you specify the scaling for the
man/im_tone_build.3:    Lb  - black point
man/im_tone_build.3:    Lw  - white point	
man/im_tone_build.3:    Ps  - shadow point
man/im_tone_build.3:    Pm  - mid-tone point
man/im_tone_build.3:    Ph  - highlight point
man/im_tone_build.3:at Lb+Ps(Lw-Lb), etc. Suggested values: Ps, Pm, Ph should be 0.2, 0.5 and 0.8.
man/im_tone_build.3:    S  - shadow adjustment factor (+/- 15)
man/im_tone_build.3:    M  - mid-tone adjustment factor (+/- 30)
man/im_tone_build.3:    H  - highlight adjustment factor (+/- 15)
man/im_tone_build.3:mid-tone and highlight areas. Suggested values:
man/im_tone_build.3:    0, 0,  0   - no change to input image
man/im_tone_build.3:    5, 0, -2   - boost shadows a little, depress highlights slightly
man/im_tone_build.3:     0.2 0.5 0.8 6.3 0.8 -3
man/im_tone_build.3:All functions returns 0 on success and -1 on error.
man/im_similarity_area.3:im_similarity_area, im_similarity \- apply a similarity transform to an image
man/im_similarity_area.3:many have any number of bands, be any size, and have any non-complex type.
man/im_similarity_area.3:	X = s * x - a * y + dx
man/im_similarity_area.3:the position of the transformed top-left-hand corner of the input image.
man/im_similarity_area.3:The functions return 0 on success and -1 on error.
man/im_similarity_area.3:N. Dessipris -\ 13/01/1992
man/im_similarity_area.3:J.Ph. Laurent -\ 12/12/92
man/im_similarity_area.3:J. Cupitt -\ 22/02/93
man/im_demand_hint.3:im_demand_hint \- hint on demand style for im_generate(3)
man/im_demand_hint.3:is a NULL-terminated list of the image upon which this output image directly
man/im_demand_hint.3:pels high. This is option suitable for point-to-point operations, such as
man/im_demand_hint.3:This image is not being demand-read from a disc file (even indirectly) so any
man/im_demand_hint.3:works exactly as im_demand_hint(3), but expects a pointer to a NULL-terminated
man/im_demand_hint.3:	if( in->Coding != NOCODING ) {
man/im_demand_hint.3:		return( -1 );
man/im_demand_hint.3:	if( in->BandFmt != FMTUCHAR ) {
man/im_demand_hint.3:		return( -1 );
man/im_demand_hint.3:		return( -1 );
man/im_demand_hint.3:		return( -1 );
man/im_demand_hint.3:		 return( -1 );
man/im_demand_hint.3:		return( -1 );
man/im_demand_hint.3:All functions returns 0 on success and non-zero on error.
man/im_demand_hint.3:J. Cupitt \- 3/9/93
man/im_falsecolour.3:im_falsecolour \- colour a mono image
man/im_falsecolour.3:Turns a one-band unsigned char image into a three band unsigned char image.
man/im_falsecolour.3:0 on success and -1 on error.
man/im_vips2mask.3:im_vips2mask, im_mask2vips \- convert between masks and images
man/im_vips2mask.3:writes the doubles held in mask in to the IMAGE out. It creates a one-band
man/im_vips2mask.3:image of the same size as in. It returns 0 on success and -1 on error. The
man/im_copy.3:im_copy, im_copy_set, im_copy_swap, im_copy_morph \- copy an image 
man/im_copy.3:The function returns 0 on success and -1 on error.
man/im_Lab2UCS.3:im_XYZ2UCS \- derived colour space conversion functions
man/im_Lab2UCS.3:        return( -1 );
man/im_Lab2UCS.3:The functions return 0 on success and -1 on error.
man/im_Lab2UCS.3:National Gallery and Birkbeck College, 1990 - 1993
man/im_Lab2UCS.3:K. Martinez \- 2/12/1992
man/im_Lab2UCS.3:J. Cupitt \- 21/7/93
man/im_open.3:im_open, im_open_local, im_open_local_array \- open VIPS 
man/im_open.3:determine the type to write -- for example:
man/im_open.3:files in a format native to your machine. It is only for paintbox-type
man/im_open.3:      return( -1 );
man/im_open.3:          return( -1 );
man/im_open.3:          return( -1 );
man/im_open.3:    return( -1 );
man/im_exp10tra.3:im_powtra, im_powtra_vec \- logarithmic, exponential and power transform of an image
man/im_exp10tra.3:Each of the above functions maps in through a log or anti-log 
man/im_exp10tra.3:which case the output is double. Non-complex images only!
man/im_exp10tra.3:Each function returns 0 on success and -1 on error.
man/im_exp10tra.3:N. Dessipris \- 24/04/1991
man/im_exp10tra.3:J. Cupitt (rewrite) \- 21/7/93
man/im_lintra.3:im_lintra, im_lintra_vec \- performs a linear transformation on an image
man/im_lintra.3:The function returns 0 on success and -1 on error.
man/im_lintra.3:N. Dessipris \- 24/04/1991
man/im_lintra.3:J. Cupitt (rewrite) \- 21/7/93
man/im_setupout.3:im_setupout \- set up an image descriptor for WIO output
man/im_setupout.3:            return( -1 );
man/im_setupout.3:        ... for type-compatibility, etc. etc.
man/im_setupout.3:            return( -1 );
man/im_setupout.3:            return( -1 );
man/im_setupout.3:        ... process from input to output, reading from in->data
man/im_setupout.3:The function returns 0 on success and -1 on error.
man/im_setupout.3:N. Dessipris \- 11/04/1990, updated on 22/04/1991
man/im_replicate.3:im_replicate \- replicate an image horizontally and vertically
man/im_replicate.3:The function returns 0 on success and -1 on error.
man/im_error.3:error_exit \- handle error messages from VIPS
man/im_error.3:Warnings should be used for non-critical recoverable errors such as values
man/im_error.3:N. Dessipris \- 22/04/1991
man/im_mean_std_int_buffer.3:im_mean_std_double_buffer, im_mean_std_int_buffer \- calculates the mean and the std of data held by a by an int or double buffer
man/im_mean_std_int_buffer.3:Both functions returns 0 on success and -1 on error.
man/im_mean_std_int_buffer.3:N. Dessipris \- 10/05/1991
man/im_embed.3:im_embed \- extract a portion of an image
man/im_embed.3:left-hand corner at position (x,y) within the output image. The value of type
man/im_embed.3: 0 - black pels (all bytes 0)
man/im_embed.3: 1 - extend pels from image to edge
man/im_embed.3: 2 - tile pels from image
man/im_embed.3: 3 - mirror pels from image
man/im_embed.3: 4 - white pels (all bytes 255)
man/im_embed.3:The function returns 0 on success and -1 on error.
man/im_embed.3:J. Cupitt \- 11/04/1995
man/sines.1:sines, squares \- creates a spatial sine or square wave form
man/sines.1:N. Dessipris \- 27/02/1992
man/im_conv.3:im_convsub \-  convolves an image with a generalised mask
man/im_conv.3:Input should be non-complex.  The size and type of the output image are
man/im_conv.3:convolve any non-complex input image to make an output image of the same
man/im_conv.3:Rounding is appropriate to the image type.  It works on any non-complex image,
man/im_conv.3:The functions returns 0 on success and -1 on error.
man/im_measure.3:im_measure \- measure colour patches off images
man/im_measure.3:are numbered left-to-right, top-to-bottom, starting with 1) and the name we
man/im_measure.3: +---+---+---+---+
man/im_measure.3: +---+---+---+---+
man/im_measure.3: +---+---+---+---+
man/im_ifthenelse.3:im_ifthenelse \- use an unsigned char image to join two images together
man/im_ifthenelse.3:conditional image c is non-zero at that point, the pel comes from a; if it
man/im_ifthenelse.3:0 on success and -1 on error.
man/im_rect_marginadjust.3:\- rectangle algebra functions
man/im_rect_marginadjust.3:#define IM_RECT_RIGHT(R) ((R)->left + (R)->width)
man/im_rect_marginadjust.3:#define IM_RECT_BOTTOM(R) ((R)->top + (R)->height)
man/im_rect_marginadjust.3:#define IM_RECT_HCENTRE(R) ((R)->left + (R)->width / 2)
man/im_rect_marginadjust.3:#define IM_RECT_VCENTRE(R) ((R)->top + (R)->height / 2)
man/im_rect_marginadjust.3:im_rect_includespoint(3) returns non-zero
man/im_rect_marginadjust.3:im_rect_includesrect(3) returns non-zero if
man/im_rect_marginadjust.3:im_rect_isempty(3) returns non-zero
man/im_rect_marginadjust.3:im_rect_equalsrect(3) returns non-zero if r1 and r2 are identical.
man/im_png2vips.3:im_png2vips, im_png2vips \- convert PNG images to and from VIPS format
man/im_png2vips.3:than writing a non-interlaced image.
man/im_subtract.3:im_subtract \- subtracts two images
man/im_subtract.3:This functions calculates in1 - in2 and writes the result in the image
man/im_subtract.3: in1    - uchar   char   ushort  short  uint  int 
man/im_subtract.3: -------|-----------------------------------------
man/im_subtract.3:All functions return 0 on success and -1 on error.
man/im_glds_matrix.3:im_glds_matrix, im_glds_asm, im_glds_contrast, im_glds_mean, im_glds_entropy \- calculate the spatial grey level difference matrix and features on it
man/im_glds_matrix.3:displacement vector (dx,dy) or else the program fails. im should be one-band
man/im_glds_matrix.3:SMC-3, No 6, Nov. 1973, pp 610-621.
man/im_glds_matrix.3:calculates the angular second moment of the co-occurrence matrix held by m.
man/im_glds_matrix.3:All functions returns 0 on success and -1 on error.
man/im_glds_matrix.3:N. Dessipris \- 10/05/1991
man/im_init.3:im_init \- make an IMAGE descriptor
man/im_init.3:N. Dessipris \- 11/04/1990
man/im_init.3:J.Cupitt \- 23/2/94
man/im_simcontr.3:im_simcontr \- shows the effect of simultaneous contrast
man/im_simcontr.3:The function returns 0 on success and -1 on error.
man/im_simcontr.3:N. Dessipris \- 10/05/1991
man/im_grad_x.3: im_grad_x, im_grad_y \- find horizontal or vertical differences
man/im_grad_x.3:The functions returns 0 on success and -1 on error.
man/im_lowpass.3:im_lowpass \- remove high frequencies quickly
man/im_lowpass.3:for simple and nasty low-pass filtering. The result is very poor, but good
man/im_lowpass.3:size, any non-complex type.
man/im_lowpass.3:The function returns 0 on success and -1 on error.
man/im_offsets45.3:im_rotate_imask90, im_rotate_dmask90 \- rotate square masks
man/im_offsets45.3:N. Dessipris \-28/05/1991
man/im_recomb.3:im_recomb \- matrix recombination of image
man/im_recomb.3:The function returns 0 on success and -1 on error.
man/im_recomb.3:National Gallery and Birkbeck College, 1990 - 1996
man/im_raw2vips.3:im_raw2vips, im_vips2raw \- wrap a raw binary file inside an IMAGE descriptor
man/im_iocheck.3:im_incheck, im_outcheck, im_iocheck \- checks image descriptors 
man/im_iocheck.3:its pels can be found from im\-\>data). If possible, it transforms the
man/im_iocheck.3:All functions returns 0 on success and -1 on error.
man/im_iocheck.3:J. Cupitt \- 23/7/93
man/im_jpeg2vips.3:im_jpeg2vips, im_vips2jpeg, im_vips2bufjpeg, im_vips2mimejpeg \- convert JPEG images to and from VIPS format
man/im_jpeg2vips.3:IMAGE. The entire image is read before returning. It can read most 8-bit JPEG
man/im_jpeg2vips.3:  filename.jpg:<shrink-factor>,<fail>
man/im_jpeg2vips.3:.B shrink-factor 
man/im_jpeg2vips.3:ICC profile named IM_META_ICC_NAME ("icc-profile-data"), the
man/im_jpeg2vips.3:outputs Content-Length and Content-Type fields making the result suitable for
man/im_histlin.3:im_histlin, im_updatehist, im_history_get \- manage image history
man/im_histlin.3:formats its arguments as printf(3), appends " # time-and-date", and appends
man/im_histlin.3:command-line action that would be required to do whatever it is that you've
man/im_histlin.3:The function returns 0 on success and -1 on error.
man/IM_ARRAY.3:IM_ARRAY, IM_NEW, IM_NUMBER \- memory allocation macros
man/IM_ARRAY.3:type-name *IM_NEW( IMAGE *im, type-name )
man/IM_ARRAY.3:type-name *IM_ARRAY( IMAGE *im, int number, type-name )
man/IM_ARRAY.3:J. Cupitt \- 23/7/93
man/im_subsample.3:im_subsample \- subsample image by integer factor
man/im_subsample.3:sub-samples image in by an x and y integer factor. It is much faster than
man/im_subsample.3:The function returns 0 on success and -1 on error.
man/im_subsample.3:1989-1996 The National Gallery and Birkbeck College
man/im_concurrency_set.3:im_concurrency_set, im_concurrency_get \- set and get the number of threads to
man/im_concurrency_set.3:Most command-line vips programs support the --vips-concurrency flag, which can
man/im_version.3:im_version, im_version_string \- return VIPS version info
man/im_version.3:and micro versions indicating bug-fixes.
man/im_version.3:The version number and the date are separated by a '-' character.
man/im_version.3:A typical value for tthe string might be "7.7.0-Thu Dec 16 18:10:01 GMT 1999".
man/im_version.3:The function returns 0 on success and non-zero on error.
man/im_version.3:J. Cupitt \- 15/12/99
man/im_cntlines.3:im_cntlines, im_profile \- calculate transitions between black and white pels horizontally or vertically
man/im_cntlines.3:searches inward from the edge of the image and finds the first non-zero pixel.
man/im_cntlines.3:first non-zero pixel for each column of input pixels.
man/im_cntlines.3:first non-zero pixel for each row of input pixels.
man/im_cntlines.3:All functions returns 0 on success and -1 on error.
man/binfile.1:im_binfile \- convert raw binary files to VIPS format
man/binfile.1:N. Dessipris \- 11/04/1990
man/batch_crop.1:batch_crop  \- crop a set of images
man/batch_crop.1:returns 0 on success and non-zero on error.
man/im_init_world.3:im_init_world, im_get_option_group \- start up VIPS
man/im_init_world.3: - initialises any libraries that VIPS is using, including GObject
man/im_init_world.3: - starts up the threading system
man/im_init_world.3: - guesses where the VIPS data files are and sets up i18n
man/im_init_world.3: - loads any plugins from libdir/vips-x.x
man/im_init_world.3:containing various VIPS command-line options. It can be used with GOption to
man/im_costra.3:im_acostra, im_asintra, im_atantra \- basic trig functions
man/im_costra.3:the input is double, in which case the output is double.  Non-complex images
man/im_costra.3:Each function returns 0 on success and -1 on error.
man/im_costra.3:J. Cupitt \- 21/7/93
man/im_matinv.3:im_matinv, im_matmul, im_mattrn \- matrix operations on DOUBLEMASKs
man/im_matinv.3:returns zero on success, and -1 on failure.
man/im_msb.3: im_msb, im_msb_band \- Convert to uchar by discarding bits
man/im_msb.3:The functions returns 0 on success and -1 on error.
man/im_meta.3:\- read and write extra header fields
man/im_meta.3:removed. It returns 0 for success, or -1 on error setting 
man/im_meta.3:reads an integer field. It returns 0 for success, or -1 on error, setting
man/im_meta.3:except that rather than being NULL-terminated, you must pass an explicit 
man/im_meta.3:The functions return 0 success and -1 on error.
man/im_smudge.3:im_smudge, im_smear \- filter and smudge in place
man/im_smudge.3:im_smudge() performs a low-pass filter of the pels inside rect r. Rect r is
man/im_smudge.3:All functions return 0 on success and -1 on error.
man/im_compass.3:im_compass, im_rank_image, im_maxvalue, im_lindetect, im_gradient \- extract features from an image with
man/im_compass.3:sorts the input images pixel-wise, then outputs an image in which each pixel
man/im_compass.3:It works for any uncoded, non-complex
man/im_compass.3:using look-up tables. The output is integer.  coefficients.  The size of the
man/im_compass.3:  im_rank_image( in, out, n, n - 1 )
man/im_compass.3:All functions returns 0 on success and -1 on error.
man/im_compass.3:N. Dessipris \- 02/05/1991
man/im_lrjoin.3:im_lrjoin, im_tbjoin \- join two images into one
man/im_lrjoin.3:These functions join two image left-right or top-bottom.  Both input images
man/im_lrjoin.3:The function returns 0 on success and -1 on error.
man/im_lrjoin.3:K. Martinez and N. Dessipris \- 25/04/1991
man/im_gammacorrect.3:im_gammacorrect \- carry out gamma correction
man/im_gammacorrect.3:N. Dessipris \- 10/05/1991
man/vips.1:vips \- run vips operations from the command line
man/vips.1:.B vips [flags] [command] [command-args]
man/vips.1:  example% ln -s vips im_invert
man/vips.1:.B -l PACKAGE, --list=PACKAGE
man/vips.1:.B -u OPERATION, --usage=OPERATION     
man/vips.1:.B -p PLUGIN, --plugin=PLUGIN       
man/vips.1:.B -k, --links               
man/vips.1:.B -h PACKAGE, --cpph=PACKAGE        
man/vips.1:.B -c PACKAGE, --cppc=PACKAGE        
man/vips.1:returns 0 on success and non-zero on error.
man/vips.1:The National Gallery and Birkbeck College, 1989-1996.
man/im_makerw.3:im_makerw \- make an IMAGE writeable
man/im_makerw.3:im_makerw(3) attempts to make image writeable, ready for an in-place operation.
man/im_makerw.3:The function returns 0 on success and -1 on error.
man/im_invert.3:im_invert \- inverts an image pointed by an image descriptor.
man/im_invert.3:The result at point x of the input image is 255-x at the output image.
man/im_invert.3:  This is not a generally useful program -- it is included as an example of a
man/im_invert.3:very simple new-style IO function. Feel the power of the source, Luke!
man/im_invert.3:The function returns 0 on success and -1 on error.
man/im_invert.3:J. Cupitt \- 21/7/93
man/im_LabQ2disp.3:im_LabQ2disp, im_LabQ2disp_build_table, im_LabQ2disp_table \- convert LabQ to display rgb quickly and badly
man/im_LabQ2disp.3:im_LabQ2disp_build_table() is just the table-build phase of im_LabQ2disp(). It
man/im_LabQ2disp.3:The functions return 0 on success and -1 on error.
man/im_LabQ2disp.3:National Gallery, 1990 - 1997
man/im_LabQ2disp.3:J. Cupitt \- 21/7/97
man/im_guess_prefix.3:im_guess_prefix, im_guess_libdir \- try to guess install directory
man/im_paintrect.3:im_fastlineuser \- suck pels up, and paint them down somewhere else
man/im_paintrect.3:into all array positions which are non-zero. Rect need not lie inside the
man/im_paintrect.3:image - the function clips carefully at the edges.
man/im_paintrect.3:size and at any position - the function clipps against the edges of the
man/im_paintrect.3:for every position along the line. There is no clipping - the endpoints may be
man/im_paintrect.3:All functions return 0 on success and -1 on error.
man/im_divide.3:im_divide \- divide two images
man/im_divide.3:  ((x1*x2 + y1*y2)/(x2*x2 + y2*y2), (y1*x2 - x1*y2)/(x2*x2 + y2*y2)).
man/im_divide.3:The function returns 0 on success and -1 on error.
man/im_binfile.3:im_binfile, im_image \- wrap a raw binary file inside an IMAGE descriptor
man/im_binfile.3:N. Dessipris \- 11/04/1990
man/im_equal.3:im_moreeqconst, im_moreeq_vec \- relational tests on images.
man/im_equal.3:All functions return 0 on success and -1 on error.
man/IM_REGION_ADDR.3:IM_REGION_N_ELEMENTS, IM_REGION_SIZEOF_LINE \- 
man/IM_REGION_ADDR.3:reg->valid, then IM_REGION_ADDR(3) will print an error message of the form:
man/IM_REGION_ADDR.3:with -D in your Makefile, or have a #define DEBUG right at the top of your
man/IM_REGION_ADDR.3:J. Cupitt \- 23/7/93
man/edvips.1:edvips \- edit header of a vips image file
man/edvips.1:  -x, --xsize=N       set Xsize to N
man/edvips.1:  -y, --ysize=N       set Ysize to N
man/edvips.1:  -b, --bands=N       set Bands to N
man/edvips.1:  -f, --format=F      set BandFmt to F (eg. IM_BANDFMT_UCHAR)
man/edvips.1:  -t, --type=T        set Type to T (eg. IM_TYPE_XYZ)
man/edvips.1:  -c, --coding=C      set Coding to C (eg. IM_CODING_LABQ)
man/edvips.1:  -X, --xres=R        set Xres to R pixels/mm
man/edvips.1:  -Y, --yres=R        set Yres to R pixels/mm
man/edvips.1:  -u, --xoffset=N     set Xoffset to N
man/edvips.1:  -v, --yoffset=N     set Yoffset to N
man/edvips.1:  -e, --setext        replace extension block with stdin
man/edvips.1:  edvips --xsize=512 --bands=6 fred.v
man/edvips.1:  edvips -x 512 -b 6 fred.v
man/edvips.1:  header -f getext fred.v | sed s/banana/pineapple/ | edvips -e fred.v
man/edvips.1:returns 0 on success and non-zero on error.
man/im_grey.3:im_grey, im_fgrey, im_make_xy \- creates a grey scale 
man/im_grey.3:creates a one-band FMTUCHAR grey scale image of sizes xsize by
man/im_grey.3:makes a two-band FMTUINT image where each pixel in band 0 has a value equal to
man/im_grey.3:The function returns 0 on success and -1 on error.
man/im_bandmean.3:im_bandmean \- average bands in an image
man/im_bandmean.3:writes a one-band image where each pixel is the average of the bands for that
man/im_bandmean.3:The function returns 0 on success and -1 on error.
man/im_analyze2vips.3:im_analyze2vips \- convert Analyze 7.5 images to VIPS format
man/im_analyze2vips.3:It reads the old-style 7.5 format, where the header and the image data are
man/im_analyze2vips.3:The fields in the Analyze header appear in the VIPS header with a "dsr-"
man/im_analyze2vips.3:  im_header_string "dsr-data_history.patient_id" fred.v
man/im_affinei.3:im_affinei \- apply an affine transform to an image
man/im_affinei.3:many have any number of bands, be any size, and have any non-complex type.
man/im_affinei.3:the position of the transformed top-left-hand corner of the input image.
man/im_affinei.3:The functions return 0 on success and -1 on error.
man/im_dE_fromdisp.3:im_dE_fromdisp, im_dE_fromXYZ, im_dECMC_fromdisp \- derived colour difference
man/im_dE_fromdisp.3:The functions return 0 on success and -1 on error.
man/im_dE_fromdisp.3:National Gallery and Birkbeck College, 1990 - 1993
man/im_dE_fromdisp.3:K. Martinez \- 2/12/1992
man/im_dE_fromdisp.3:J. Cupitt \- 21/7/93
man/im_generate.3:im_start_many, im_stop_many \- generate image pixels
man/im_generate.3:simple one-image-in, one-image-out operations. 
man/im_generate.3:input images, terminated with a NULL. It allocates a NULL-terminated array to
man/im_generate.3:        return( -1 );
man/im_generate.3:but with NULL-terminated arrays of IMAGEs and REGIONs.
man/im_generate.3:They are useful for many-images-in, one-image-out operations.
man/im_generate.3:to a NULL-terminates array of IMAGEs. It builds and returns as the sequence
man/im_generate.3:value a NULL-terminated array of REGIONs.
man/im_generate.3:assumes the sequence value is a pointer to a NULL-terminated
man/im_generate.3:success, and non-zero on failure.
man/im_generate.3:            return( -1 );
man/im_generate.3:        ... for type-compatibility, etc. etc.
man/im_generate.3:            return( -1 );
man/im_generate.3:            return( -1 );
man/im_generate.3:Most programs which use VIPS will also let you use the command-line argument
man/im_generate.3:--vips-concurrency to set parallelisation, see im_get_option_group(3).
man/im_generate.3:J. Cupitt \- 23/7/93
man/vipsthumbnail.1:vipsthumbnail \- make thumbnails of image files
man/vipsthumbnail.1: $ vipsthumbnail --size=64 -o thumbnails/%s.png fred.jpg
man/vipsthumbnail.1:.B -s N, --size=N
man/vipsthumbnail.1:.B -o FORMAT, --output=FORMAT     
man/vipsthumbnail.1:.B -d N, --disc=N       
man/vipsthumbnail.1:.B -p I, --interpolator=I               
man/vipsthumbnail.1:.B vips --list classes
man/vipsthumbnail.1:.B -n, --nosharpen
man/vipsthumbnail.1:.B -e PROFILE, --eprofile=PROFILE        
man/vipsthumbnail.1:Export thumbnails with this ICC profile. Images are only colour-transformed if
man/vipsthumbnail.1:.B --iprofile
man/vipsthumbnail.1:.B -i PROFILE, --iprofile=PROFILE        
man/vipsthumbnail.1:Images are only colour-transformed if
man/vipsthumbnail.1:.B --oprofile
man/vipsthumbnail.1:.B -l, --nodelete
man/vipsthumbnail.1:.B -v, --verbose
man/vipsthumbnail.1:returns 0 on success and non-zero on error.
man/im_grid.3:im_grid \- split a vertical image into a grid of smaller images
man/im_grid.3:The function returns 0 on success and -1 on error.
man/im_fractsurf.3:im_fractsurf \- creates a fractal surface
man/im_fractsurf.3:The function returns 0 on success and -1 on error.
man/im_fractsurf.3:N. Dessipris \- 06/07/1990
man/im_scale.3:im_scale, im_scaleps \- scale an image to unsigned char image
man/im_scale.3:These functions scale a non-complex image to a displayable
man/im_scale.3:scales to 0 - 255 by mapping each pixel through the equation
man/im_scale.3:The images produced by this non-linear transformation are only
man/im_scale.3:Each function returns 0 on success and -1 on error.
man/im_remainder.3:im_remainder, im_remainderconst, im_remainderconst_vec \- remainder after integer division
man/im_remainder.3:All functions return 0 on success and -1 on error.
man/im_invalidate.3:im_invalidate \- flush caches related to an image
man/im_rightshift_size.3: im_rightshift_size \- Decrease size by a power-of-two factor
man/im_rightshift_size.3:decreases the size of an integer type image by a power-of-two factor, very quickly, by summing the values of
man/im_rightshift_size.3:are positive and give the base-two logarithms of the scale factors.
man/im_rightshift_size.3:The functions returns 0 on success and -1 on error.
man/im_malloc.3:im_add_invalidate_callback \- add image callbacks
man/im_malloc.3:callback is called first --- this can be important for close callbacks. 
man/im_malloc.3:non-zero for failure. If the function fails, then the whole 
man/im_malloc.3:non-zero for failure. If the callback fails, evaluation is abandoned. This may
man/im_malloc.3:be used to provide a `cancel' feature in your user-interface.
man/im_malloc.3:    printf( "%d%% complete ...\\n", im->time->percent );
man/im_malloc.3:    return( -1 );
man/im_malloc.3:image. This is useful for removing images from other, higher-level caches.
man/im_malloc.3:All functions return 0 on success and non-zero on error.
man/im_malloc.3:J. Cupitt \- 23/7/93
man/im_partial.3:im_partial \- makes a PIO intermediate image
man/im_partial.3:This function is obsolete --- you should call im_open(3) instead.
man/im_partial.3:J.Cupitt \- 23/7/93
man/im_cooc_matrix.3:im_cooc_entropy \- calculate the co-occurrence matrix and features on it
man/im_cooc_matrix.3:creates a 256 by 256 one channel co-occurrence matrix of the box determined by
man/im_cooc_matrix.3:co-occurrence matrix are double normalised to the number of pairs involved.
man/im_cooc_matrix.3:IEEE Transactions on Systems, Man, and Cybernetics, Vol. SMC-3, No 6, Nov.
man/im_cooc_matrix.3:1973, pp 610-621. Input im should be one band unsigned char image.
man/im_cooc_matrix.3:If flag sym is 1, the created co-occurrence matrix is symmetric that is
man/im_cooc_matrix.3:dispacement vectors (dx, dy), (-dx, -dy) create exactly the same matrix.  If
man/im_cooc_matrix.3:sym is 0, the created co-occurrence matrix is not symmetric that is
man/im_cooc_matrix.3:dispacement vectors (dx, dy), (-dx, -dy) create different matrices.
man/im_cooc_matrix.3:calculates the angular second moment of the co-occurrence matrix held by m.
man/im_cooc_matrix.3:calculates the contrast of the co-occurrence matrix held by m.
man/im_cooc_matrix.3:calculates the correlation of the co-occurrence matrix held by m.
man/im_cooc_matrix.3:calculates the entropy of the co-occurrence matrix held by m.
man/im_cooc_matrix.3:All functions returns 0 on success and -1 on error.
man/im_cooc_matrix.3:N. Dessipris \- 2/12/1991
man/im_iterate.3:im_iterate \- PIO input from image
man/im_iterate.3:   - scan_fn() will see each of the pels in im exactly once
man/im_iterate.3:   - start_fn() and stop_fn() are both exclusive
man/im_iterate.3:All functions return 0 on success and non-zero on error.
man/im_iterate.3:J. Cupitt \- 23/7/93
man/im_circle.3:im_circle \- draws a circle within an image file
man/im_circle.3:The function returns 0 on success and -1 on error.
man/im_circle.3:N. Dessipris \- 10/05/1991
man/im_litecor.3:im_litecor \- perform light correction
man/im_litecor.3:The function returns 0 on success and -1 on error.
man/im_litecor.3:N. Dessipris \- 05/12/1991
man/im_render.3:im_render, im_render_fade, im_cache \- make image in the background
man/im_render.3:tiles (a value of -1 for
man/im_render.3:so cache tile calculation will be accelerated on multi-CPU machines. If image
man/im_render.3:The function returns 0 on success, and non-zero on error, setting
man/im_system.3:im_system \- run a command on an image
man/im_system.3:The function returns 0 on success and -1 on error.
man/im_zerox.3:im_zerox \- find the zero crossings of an image
man/im_zerox.3:If flag is -1 the negative zero crossings are returned.
man/im_zerox.3:set to zero. Input can have any number of channels, and be any non-complex type.
man/im_zerox.3:The function returns 0 on success and -1 on error.
man/im_zerox.3:N. Dessipris \- 14/05/1991
man/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
man/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
man/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
man/Makefile.in:am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
man/Makefile.in:  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
man/Makefile.in:all: all-am
man/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
man/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
man/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
man/Makefile.in:	  $(AUTOMAKE) --gnu man/Makefile
man/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
man/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
man/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
man/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
man/Makefile.in:mostlyclean-libtool:
man/Makefile.in:	-rm -f *.lo
man/Makefile.in:clean-libtool:
man/Makefile.in:	-rm -rf .libs _libs
man/Makefile.in:install-man1: $(man_MANS)
man/Makefile.in:	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
man/Makefile.in:	@list=''; test -n "$(man1dir)" || exit 0; \
man/Makefile.in:	  sed -n '/\.1[a-z]*$$/p'; \
man/Makefile.in:	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
man/Makefile.in:	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
man/Makefile.in:	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
man/Makefile.in:	  test -z "$$files" || { \
man/Makefile.in:uninstall-man1:
man/Makefile.in:	@list=''; test -n "$(man1dir)" || exit 0; \
man/Makefile.in:	  sed -n '/\.1[a-z]*$$/p'; \
man/Makefile.in:	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
man/Makefile.in:	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
man/Makefile.in:	test -z "$$files" || { \
man/Makefile.in:	  echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
man/Makefile.in:	  cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
man/Makefile.in:install-man3: $(man_MANS)
man/Makefile.in:	test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)"
man/Makefile.in:	@list=''; test -n "$(man3dir)" || exit 0; \
man/Makefile.in:	  sed -n '/\.3[a-z]*$$/p'; \
man/Makefile.in:	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
man/Makefile.in:	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
man/Makefile.in:	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
man/Makefile.in:	  test -z "$$files" || { \
man/Makefile.in:uninstall-man3:
man/Makefile.in:	@list=''; test -n "$(man3dir)" || exit 0; \
man/Makefile.in:	  sed -n '/\.3[a-z]*$$/p'; \
man/Makefile.in:	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
man/Makefile.in:	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
man/Makefile.in:	test -z "$$files" || { \
man/Makefile.in:	  echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \
man/Makefile.in:	  cd "$(DESTDIR)$(man3dir)" && rm -f $$files; }
man/Makefile.in:	@list='$(MANS)'; if test -n "$$list"; then \
man/Makefile.in:	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
man/Makefile.in:	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
man/Makefile.in:	  if test -n "$$list" && \
man/Makefile.in:	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
man/Makefile.in:	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
man/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
man/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
man/Makefile.in:			   sort -u` ;; \
man/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
man/Makefile.in:	  if test -d $$d/$$file; then \
man/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
man/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
man/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
man/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
man/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
man/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
man/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
man/Makefile.in:	    test -f "$(distdir)/$$file" \
man/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
man/Makefile.in:check-am: all-am
man/Makefile.in:check: check-am
man/Makefile.in:all-am: Makefile $(MANS)
man/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
man/Makefile.in:install: install-am
man/Makefile.in:install-exec: install-exec-am
man/Makefile.in:install-data: install-data-am
man/Makefile.in:uninstall: uninstall-am
man/Makefile.in:install-am: all-am
man/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
man/Makefile.in:installcheck: installcheck-am
man/Makefile.in:install-strip:
man/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
man/Makefile.in:	  `test -z '$(STRIP)' || \
man/Makefile.in:mostlyclean-generic:
man/Makefile.in:clean-generic:
man/Makefile.in:distclean-generic:
man/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
man/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
man/Makefile.in:maintainer-clean-generic:
man/Makefile.in:clean: clean-am
man/Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
man/Makefile.in:distclean: distclean-am
man/Makefile.in:	-rm -f Makefile
man/Makefile.in:distclean-am: clean-am distclean-generic
man/Makefile.in:dvi: dvi-am
man/Makefile.in:dvi-am:
man/Makefile.in:html: html-am
man/Makefile.in:html-am:
man/Makefile.in:info: info-am
man/Makefile.in:info-am:
man/Makefile.in:install-data-am: install-man
man/Makefile.in:install-dvi: install-dvi-am
man/Makefile.in:install-dvi-am:
man/Makefile.in:install-exec-am:
man/Makefile.in:install-html: install-html-am
man/Makefile.in:install-html-am:
man/Makefile.in:install-info: install-info-am
man/Makefile.in:install-info-am:
man/Makefile.in:install-man: install-man1 install-man3
man/Makefile.in:install-pdf: install-pdf-am
man/Makefile.in:install-pdf-am:
man/Makefile.in:install-ps: install-ps-am
man/Makefile.in:install-ps-am:
man/Makefile.in:installcheck-am:
man/Makefile.in:maintainer-clean: maintainer-clean-am
man/Makefile.in:	-rm -f Makefile
man/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
man/Makefile.in:mostlyclean: mostlyclean-am
man/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
man/Makefile.in:pdf: pdf-am
man/Makefile.in:pdf-am:
man/Makefile.in:ps: ps-am
man/Makefile.in:ps-am:
man/Makefile.in:uninstall-am: uninstall-man
man/Makefile.in:uninstall-man: uninstall-man1 uninstall-man3
man/Makefile.in:.MAKE: install-am install-strip
man/Makefile.in:.PHONY: all all-am check check-am clean clean-generic clean-libtool \
man/Makefile.in:	distclean distclean-generic distclean-libtool distdir dvi \
man/Makefile.in:	dvi-am html html-am info info-am install install-am \
man/Makefile.in:	install-data install-data-am install-dvi install-dvi-am \
man/Makefile.in:	install-exec install-exec-am install-html install-html-am \
man/Makefile.in:	install-info install-info-am install-man install-man1 \
man/Makefile.in:	install-man3 install-pdf install-pdf-am install-ps \
man/Makefile.in:	install-ps-am install-strip installcheck installcheck-am \
man/Makefile.in:	installdirs maintainer-clean maintainer-clean-generic \
man/Makefile.in:	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
man/Makefile.in:	ps ps-am uninstall uninstall-am uninstall-man uninstall-man1 \
man/Makefile.in:	uninstall-man3
man/im_Lab2LabQ.3:im_LabQ2Lab, im_Lab2LabQ, im_LabQ2LabS, im_LabS2LabQ, im_Lab2LabS, im_LabS2Lab \- pack and unpack LABPACK images.
man/im_Lab2LabQ.3:and b are shifted and masked to lie in [-32768,32767]. This is the best
man/im_Lab2LabQ.3:The functions return 0 on success and -1 on error.
man/im_Lab2LabQ.3:National Gallery, 1990 - 1993
man/im_Lab2LabQ.3:J. Cupitt \- 21/7/93
man/im_stdif.3:im_stdif, im_stdif_raw \- statistical differentiation of an image
man/im_stdif.3:statistically from its neighbours. It is useful for enhancing low-contrast
man/im_stdif.3:images with lots of detail, such as X-ray plates.
man/im_stdif.3:  vout(i,j) = a*m0 + (1-a)*meanv + 
man/im_stdif.3:          (vin(i,j) - meanv) * (b*s0) / (s0+b*stdv)
man/im_stdif.3:The opreation works on one-band UCHAR images only, and writes a one-band UCHAR
man/im_stdif.3:image as its result. The output image has the same size as the input - a black
man/im_stdif.3:All functions returns 0 on success and -1 on error.
man/im_stdif.3:1991-1996, The National Gallery and Birkbeck College
man/im_zoom.3:im_zoom \- zoom an image 
man/im_zoom.3:The function returns 0 on success and -1 on error.
man/glds.1:glds, glds_features \- calculate the spatial grey level difference matrix and features on it
man/glds.1:Vol. SMC-3, No 6, Nov. 1973, pp 610-621.
man/glds.1:N. Dessipris \- 27/02/1992
man/im_remosaic.3:im_remosaic \- rebuild a mosaic, substituting filenames
man/im_remosaic.3:Functions return 0 on success and -1 on error.
man/im_flt_imag_freq.3:im_flt_imag_freq \- filter a square image in the frequency domain
man/im_flt_imag_freq.3:The function returns 0 on success and -1 on error.
man/im_flt_imag_freq.3:N. Dessipris \- 10/08/1991
man/batch_rubber_sheet.1:batch_rubber_sheet \- warp a set of images with a rubber-sheet transformation
man/batch_rubber_sheet.1:returns 0 on success and non-zero on error.
man/im_addgnoise.3:im_addgnoise \- add gaussian noise to an image
man/im_addgnoise.3:descriptor out.  The function works on any non-complex input image. 
man/im_addgnoise.3:The function returns 0 on success and -1 on error.
man/im_addgnoise.3:N. Dessipris \- 25/04/1991
man/im_heq.3:im_heq, im_lhisteq, im_lhisteq_raw, im_hsp \- process an image using grey level transformations
man/im_heq.3:If bandno is -1 then all input bands are equalised independently.  In all
man/im_heq.3:All functions returns 0 on success and -1 on error.
man/im_heq.3:1991--1996 The National Gallery and Birkbeck College
man/im_correl.3:im_correl \- search for image match
man/im_correl.3:im_correl() is the base image-searching function used by the mosaicing
man/im_correl.3:--- the function extracts and generated just the parts needed. Correlation is
man/im_correl.3:J.Cupitt \- 22/02/93
man/im_correl.3:The National Gallery and Birkbeck College, 1989-1996.
man/im_csv2vips.3:im_csv2vips, im_vips2csv \- read and write CSV (comma separated values) files
man/im_csv2vips.3:  skip:lines-to-skip
man/im_csv2vips.3:  whi:whitespace-characters
man/im_csv2vips.3:  sep:separator-characters
man/im_csv2vips.3:  line:lines-to-read
man/im_csv2vips.3:The number of lines to read from the file. Default -1, meaning read to end of
man/im_csv2vips.3:  sep:separator-string
man/debugim.1:debugim, printlines \- prints the raw image data of a vasari file format
man/debugim.1:N. Dessipris \- 12/07/1990
man/im_rad2float.3:im_rad2float, im_float2rad \- convert RAD coded images to float and back
man/im_rad2float.3:images to 3-band float and back.
man/im_rad2float.3:unpacks a 4-band uchar image in
man/im_rad2float.3:format to 3-band float. RAD images are used by the 
man/im_rad2float.3:) but many will require the image to be unpacked to 3-band float for
man/im_rad2float.3:packs a 3-band float image back to 4-band uchar in
man/im_rad2float.3:The functions return 0 on success and -1 on error.
man/im_rad2float.3:J. Cupitt \- 23 March 2009
man/im_hist.3:im_hist \- create a displayable histogram from an image
man/im_hist.3:== -1 a displayable histogram of all input bands
man/im_hist.3:All functions returns 0 on success and -1 on error.
man/im_hist.3:N. Dessipris \- 10/05/1991
man/im_dilate.3:im_dilate, im_dilate_raw, im_erode, im_erode_raw \- perform morphological operations on a white object against a black background
man/im_dilate.3:(m-\>xsize/2,m-\>ysize/2) integer division.  All algorithms have been based on
man/im_dilate.3:the book "Fundamentals of Digital Image Processing" by A.  Jain, pp 384-388,
man/im_dilate.3:Prentice-Hall, 1989.  Essentially, 
man/im_dilate.3:All functions returns 0 on success and -1 on error.
man/im_dilate.3:1991-1995, Birkbeck College and the National Gallery
man/im_image_sanity.3:im_image_sanity \- check image descriptors for sanity
man/im_image_sanity.3:problem it prints a warning message and returns -1.
man/im_image_sanity.3:All functions returns 0 on success and -1 on error.
man/im_video_v4l1.3:im_video_v4l1 \- various image grabbers
man/im_video_v4l1.3:grabs a frame using Video4Linux. It grabs a 24-bit RGB colour image, at the
man/im_video_v4l1.3:set grab parameters. Each should be in the range (0 - 32768). 32768 is usually
man/im_video_v4l1.3:All functions return 0 on success and -1 on error.
man/im_region_create.3:im_region_create, im_region_free \- region creation and destruction
man/im_region_create.3:All int-valued functions return zero on success and non-zero on error.
man/im_region_create.3:J. Cupitt \- 23/7/93
man/im_eye.3:im_eye, im_feye \- creates a pattern which shows the spatial response of the human visual system
man/im_eye.3:creates an one band float image with pels in [-1,+1] of a pattern which has 
man/im_eye.3:- the spatial frequency increases from left to right.
man/im_eye.3:- the grey level intensity decreases from top to bottom.
man/im_eye.3:The function returns 0 on success and -1 on error.
man/im_eye.3:N. Dessipris \- 10/05/1991
man/im_close.3:im_close \- close an image descriptor
man/im_close.3:non-zero and sets im_errormsg(3). If im_close(3) fails, the image descriptor is
man/im_close.3:The function returns 0 on success and -1 on error.
man/im_close.3:N. Dessipris \- 11/04/1990
man/im_cp_desc.3:im_cp_desc, im_append_Hist \- copy most of an image descriptor to another
man/im_cp_desc.3:takes an output image and a NULL-terminated list of input images, which must
man/im_cp_desc.3:The function returns 0 on success and -1 on error.
man/im_cp_desc.3:N. Dessipris \- 11/04/1990
man/im_global_balance.3:im_global_balance, im_global_balancef \- perform global mosaic balancing on 
man/im_global_balance.3:--- such as video, or photographic sources.
man/im_global_balance.3:as to minimise the average grey-level difference between neighboring images at
man/im_global_balance.3:manually, if the automatically-found scales are causing burn-out.
man/im_global_balance.3:All functions return 0 on success and -1 on error.
man/im_global_balance.3:Birkbeck College and the National Gallery, 1991 - 1995.
man/im_text.3:im_text \- render a utf-8 text string into an image
man/im_text.3:The result is a one band 8 bit image with 0 - 255 as black to white. The
man/im_text.3:Fonts are specified pango-style as "family style size", for example "sans 12" 
man/im_text.3:The function returns 0 on success and -1 on error.
man/im_log_imask.3:im_log_dmask, im_log_imask \- create a laplacian of gaussian (log) 
man/im_log_imask.3:and image processing by Young and Fu, AP 1986 pages 220-221):
man/im_log_imask.3:         (2 - (r2 / s2)) * 
man/im_log_imask.3:	 exp(-r2 / (2 * s2))
man/im_log_imask.3:N. Dessipris \- 06/12/1991
man/im_extract.3:im_extract_areabands, im_extract_bands, im_extract_area \- extract a portion of an image
man/im_extract.3:The function returns 0 on success and -1 on error.
man/im_extract.3:J. Cupitt \- 11/04/1990
man/im_lrmosaic.3:im_lrmosaic, im_tbmosaic \- mosaic two images using a zero order procedure
man/im_lrmosaic.3:im_lrmosaic() and im_tbmosaic() are used to mosaic two images (left-right and
man/im_lrmosaic.3:top-bottom respectively).  Both input images are held by the IMAGE descriptors
man/im_lrmosaic.3:secondary image. The tie-point is not used as a start point for the search,
man/im_lrmosaic.3:halfcorrelationsize - sets the size of the fragments of ref 
man/im_lrmosaic.3:halfareasize - sets the size of the area of sec that is
man/im_lrmosaic.3:balancetype - sets the style of the balancing the functions 
man/im_lrmosaic.3:      0 - means do no balancing.
man/im_lrmosaic.3:      1 - means keep the left image unadjusted and adjust 
man/im_lrmosaic.3:      2 - means keep the right image unadjusted and scale 
man/im_lrmosaic.3:      3 - means adjust the contrast of both the left and 
man/im_lrmosaic.3:All functions return 0 on success and -1 on error.
man/im_piocheck.3:im_pincheck, im_poutcheck, im_piocheck \- checks image descriptors for 
man/im_piocheck.3:All functions returns 0 on success and -1 on error.
man/im_piocheck.3:J. Cupitt \- 23/7/93
man/VipsFormat.3:vips_format_write \- 
man/VipsFormat.3:A NULL-terminated array of possible file-name suffixes for this format. This
man/VipsFormat.3:error, it returns non-zero and sets an error message.
man/VipsFormat.3:appropriate format. On error, it returns non-zero and sets an error message.
man/VipsFormat.3:  $ vips --list classes
man/VipsFormat.3:The functions return 0 success and -1 on error.
man/im_lab_morph.3:im_lab_morph \- calculate colour differences
man/im_lab_morph.3: 		14.23   4.8     -3.95
man/im_lab_morph.3: 		18.74   2.76    -2.62
man/im_lab_morph.3: 		23.46   1.4     -1.95
man/im_lab_morph.3: 		27.53   1.76    -2.01
man/im_lab_morph.3:All functions return 0 on success and -1 on error.
man/im_histgr.3:\- create, display and process histograms or luts
man/im_histgr.3:writes the histogram of image in to image out. If bandno is -1,
man/im_histgr.3:For example, suppose you have an image from a 12-bit camera, where
man/im_histgr.3:makes a n-dimensional histogram from an n-band image (1, 2 and 3 bands only).
man/im_histgr.3:creates an look-up-table  with Xsize=256, Ysize=1, Bands=bands, Bbits=BBBYTE,
man/im_histgr.3:look-up tables.  
man/im_histgr.3:creates an look-up-table  with Xsize=sz, Ysize=1, Bands=bands, Bbits=BBSHORT,
man/im_histgr.3:look-up tables.  
man/im_histgr.3:sets out to non-zero if the look-up table (or histogram) in lut is monotonic,
man/im_histgr.3:All functions return 0 on success and -1 on error.
man/im_histgr.3:The National Gallery and Birkbeck College, 1991 \- 1994.
man/im_affine.3:im_affine \- apply an affine transform to an image
man/im_affine.3:many have any number of bands, be any size, and have any non-complex type.
man/im_affine.3:the position of the transformed top-left-hand corner of the input image.
man/im_affine.3:The functions return 0 on success and -1 on error.
man/im_maxpos_vec.3: im_maxpos_vec, im_minpos_vec \- Find highest or lowest pixel values
man/im_maxpos_vec.3:which have the highest values.  It writes those values (at double-precsion) 
man/im_maxpos_vec.3:The functions returns 0 on success and -1 on error.
man/im_lu_decomp.3: im_lu_decomp, im_lu_solve \- Solve SLEs by LU decomposition
man/im_lu_decomp.3:is singular (non-invertible), or close to singular then
man/im_lu_decomp.3:when it returns -1.
man/im_lu_decomp.3:Computing, 2nd ed.  Cambridge: Cambridge University Press, pp. 43-50.
man/im_lu_decomp.3:http://www.library.cornell.edu/nr/bookcpdf.html accessed 2006-09-19]
man/im_XYZ2disp.3:im_Lab2LCh, im_LCh2Lab, im_LCh2UCS, im_UCS2LCh \- convert images between 
man/im_XYZ2disp.3:The VIPS colour spaces inter-convert as follows:
man/im_XYZ2disp.3:                        +------- sRGB
man/im_XYZ2disp.3:  LabQ ----- Lab ----- XYZ ----- RGB
man/im_XYZ2disp.3:   |          |         +------- Yxy
man/im_XYZ2disp.3:   |          +------- LCh ----- UCS
man/im_XYZ2disp.3:   +-------- LabS
man/im_XYZ2disp.3:LabQ --- This is the principal VIPS colorimetric storage format. See
man/im_XYZ2disp.3:LabS --- This format represents coordinates in CIE Lab space as 16-bit
man/im_XYZ2disp.3:Lab --- Coordinates in CIE Lab space are represented as float values in the
man/im_XYZ2disp.3:XYZ --- CIE XYZ colour space.
man/im_XYZ2disp.3:Yxy --- CIE Yxy colour space.
man/im_XYZ2disp.3:RGB --- This format is compatible with the RGB colour systems used in other
man/im_XYZ2disp.3:sRGB --- This is a standard RGB, as defined by:
man/im_XYZ2disp.3:LCh --- Like Lab, but the rectangular ab coordinates are replaced with the
man/im_XYZ2disp.3:UCS --- A colour space based on the CMC(1:1) colour difference measurement.
man/im_XYZ2disp.3:information only --- no function reads the Type field to determine its
man/im_XYZ2disp.3:The functions return 0 on success and -1 on error.
man/im_XYZ2disp.3:National Gallery and Birkbeck College, 1990 - 1993
man/im_XYZ2disp.3:K. Martinez \- 2/12/1992
man/im_XYZ2disp.3:J. Cupitt \- 21/7/93
man/im_sines.3:im_sines \- creates a spatial sine wave form
man/im_sines.3:The function returns 0 on success and -1 on error.
man/im_sines.3:N. Dessipris \- 10/05/1991
man/im_thresh.3:im_thresh, im_slice \- threshold an image
man/im_thresh.3:packages - see 
man/im_thresh.3:These functions operate on any non-complex input.  The output image is a
man/im_thresh.3:The function returns 0 on success and -1 on error.
man/im_thresh.3:N. Dessipris \- 26/04/1991
man/im_shiftleft.3:im_shiftleft, im_shiftright \- bit shift operations
man/im_shiftleft.3:sign-preserving.
man/im_shiftleft.3:All functions return 0 on success and -1 on error.
man/im_quantim.3:im_quantim, im_quantlut, im_spatres \- quantise an image or a lut
man/im_quantim.3:and the importance of post-filtering before displaying.
man/im_quantim.3:All functions returns 0 on success and -1 on error.
man/im_quantim.3:N. Dessipris \- 10/05/1991
man/im_shrink.3:im_shrink \-  shrink an image
man/im_shrink.3:for small x and y factors. Any size image, any non-complex type, any number of
man/im_shrink.3:The functions returns 0 on success and -1 on error.
man/im_header.3:im_header_get_type, im_header_map \- read fields from the image header
man/im_header.3:a GValue. Return non-NULL from the map function to stop iteration early. It
man/im_header.3:All functions returns 0 on success and -1 on error.
man/im_openout.3:im_openout \- sets an image descriptor corresponding to an output file
man/im_openout.3:N. Dessipris \- 22/04/1991
man/im_tiff2vips.3:im_tiff2vips, im_tiff2vips \- convert TIFF images to and from VIPS format
man/im_tiff2vips.3:  filename.tif:<page-number>
man/im_tiff2vips.3:.B page-number 
man/im_tiff2vips.3:ZIP-coded image, split into 64 by 64 pixel tiles.
man/im_tiff2vips.3:  <compression>,<layout>,<multi-res>,<format>,<resolution>,<icc>
man/im_tiff2vips.3:   "none"      - no compression
man/im_tiff2vips.3:   "jpeg"      - JPEG compression
man/im_tiff2vips.3:   "deflate"   - ZIP (deflate) compression
man/im_tiff2vips.3:   "packbits"  - TIFF packbits compression
man/im_tiff2vips.3:   "ccittfax4" - CCITT Group 4 fax encoding
man/im_tiff2vips.3:   "lzw"       - Lempel-Ziv compression
man/im_tiff2vips.3:for 1-bit images, and deflate is the best lossless compression TIFF can do.
man/im_tiff2vips.3:   "strip"    - strip layout
man/im_tiff2vips.3:   "tile"     - tiled layout
man/im_tiff2vips.3:<multi-res> is one of:
man/im_tiff2vips.3:   "flat"     - single image
man/im_tiff2vips.3:   "pyramid"  - many images arranged in a pyramid
man/im_tiff2vips.3:The default multi-res mode is "flat".
man/im_tiff2vips.3:   "manybit"  - don't bit-reduce images
man/im_tiff2vips.3:   "onebit"   - one band 8 bit images are saved as 1 bit
man/im_tiff2vips.3:   "res_cm"   - output resolution unit is pixels per centimetre
man/im_tiff2vips.3:   "res_inch" - output resolution unit is pixels per inch
man/im_tiff2vips.3:The default resolution unit is taken from the header field "resolution-unit"
man/im_print.3:im_print \- print a string to stdout
man/im_print.3:The function returns 0 on success and -1 on error.
man/im_insert.3:im_insert \- insert one image into another
man/im_insert.3:The function returns 0 on success and -1 on error.
man/im_insert.3:J. Cupitt \- 11/04/1990
man/im_black.3:im_black \- make a black image
man/im_black.3:The function returns 0 on success and -1 on error.
man/im_black.3:National Gallery 1990 - 1993
man/im_black.3:J. Cupitt \- 11/04/1990
man/im_sign.3:im_sign \- find the unit vector in the direction of value
man/im_sign.3:finds the unit vector in the direction of the pixel value. For non-complex
man/im_sign.3:images, it returns a signed char image with values -1, 0, and 1 for negative,
man/im_sign.3:The function returns 0 on success and -1 on error.
man/im_mmapinrw.3:im_mmapinrw \- memory maps a VASARI image file  with read and write access
man/im_mmapinrw.3:N. Dessipris \- 11/04/1990
man/IM_IMAGE_ADDR.3:IM_IMAGE_SIZEOF_LINE, IM_IMAGE_N_ELEMENTS \- 
man/IM_IMAGE_ADDR.3:with -D in your Makefile, or have a #define DEBUG right at the top of your
man/IM_IMAGE_ADDR.3:J. Cupitt \- 23/7/93
man/cooc.1:cooc, cooc_features \- calculate the co-occurrence matrix and features on it
man/cooc.1:creates a 256 by 256 one channel co-occurrence matrix of the box
man/cooc.1:All entries of the co-occurrence matrix are double normalised to the number
man/cooc.1:Vol. SMC-3, No 6, Nov. 1973, pp 610-621.
man/cooc.1:If flag sym is 1, the created co-occurrence matrix is symmetric that is
man/cooc.1:dispacement vectors (dx, dy), (-dx, -dy) create exactly the same matrix.
man/cooc.1:If sym is 0, the created co-occurrence matrix is not symmetric that is
man/cooc.1:dispacement vectors (dx, dy), (-dx, -dy) create different matrices.
man/cooc.1:N. Dessipris \- 27/2/1992
man/im_clip.3:im_ri2c \- conversion between image types
man/im_clip.3:takes as inputs two non-complex images of equal sizes and number of
man/im_clip.3:The functions returns 0 on success and -1 on error.
man/im_region_buffer.3:.TH REGION-OPERATIONS 3 "11 April 1990"
man/im_region_buffer.3:im_region_equalsregion \- 
man/im_region_buffer.3:is the most powerful of the three --- you can use it to
man/im_region_buffer.3:If region->buffer->done is set, then the region is already calculated.
man/im_region_buffer.3:has to be SETBUF, MMAPIN, MMAPINRW, or OPENIN --- ie., the types passed by 
man/im_region_buffer.3:image. r is clipped against the size of reg's image, and against treg->valid.
man/im_region_buffer.3:r becomes the valid field in reg, (x,y) is the top left-hand corner of the
man/im_region_buffer.3:changes reg->valid, so that reg->valid.left == x and
man/im_region_buffer.3:reg->valid.top == y. width and height are clipped against the size of the
man/im_region_buffer.3:All int-valued functions return zero on success and non-zero on error.
man/im_region_buffer.3:J. Cupitt \- 23/7/93
man/im_maplut.3:im_maplut \- map an image through a lookup table
man/im_maplut.3:lut->Xsize * lut->Ysize == 256.
man/im_maplut.3:elements, and input pels whose value is greater than lut->Xsize * lut->Ysize
man/im_maplut.3:   - If LUT has one band, then the input may have any number of bands, and
man/im_maplut.3:   - If LUT has the same number of bands as the input, then each band of the
man/im_maplut.3:   - If the input has one band, then the LUT may have any number of bands, and
man/im_maplut.3:All functions returns 0 on success and -1 on error.
man/im_maplut.3:N. Dessipris \- 10/05/1991
man/im_prepare.3:im_prepare, im_prepare_to \- fill region with data
man/im_prepare.3:succeeds, VIPS guarantees that pels within reg->valid may be read from reg
man/im_prepare.3:The function returns 0 on success and non-zero on error.
man/im_prepare.3:J. Cupitt \- 23/7/93
man/im_writeline.3:im_writeline \- writes a line of data in the image descriptor
man/im_writeline.3:complete line of pels --- see lsize(3).
man/im_writeline.3:Any evaluation callbacks which have been added to image are triggered --- see
man/im_writeline.3:The function returns 0 on success and -1 on error.
man/im_floor.3:im_floor \- for each pixel, find the largest integral value not greater than
man/im_floor.3:The function returns 0 on success and -1 on error.
man/im_create_fmask.3:im_create_fmask \- create a frequency domain filter mask according to args
man/im_create_fmask.3:and must be square. Non-square masks may be added in a future version.
man/im_create_fmask.3:There are 18 types of filter mask supported in this VIPS - they are listed
man/im_create_fmask.3:-----------------------------------------------------------
man/im_create_fmask.3:-----------------------------------------------------------
man/im_create_fmask.3:-----------------------------------------------------------
man/im_create_fmask.3:HIGH PASS - LOW PASS FILTER MASKS (flag: 0 to 5)
man/im_create_fmask.3:H(r)=1.0/(1.0+(1.0/ac-1.0)*pow((fc*fc)/(r*r),order)).
man/im_create_fmask.3:H(r)=1.0/(1.0+(1.0/ac-1.0)*pow((r*r)/(fc*fc),order)).
man/im_create_fmask.3:H(r) = 1.0 - exp(log(ac)*r*r/(fc*fc)).
man/im_create_fmask.3:RING PASS - RING REJECT FILTER MASKS (flag: 6 to 11)
man/im_create_fmask.3:the ring starts at point fc-width/2 up to fc+width/2 along the positive
man/im_create_fmask.3:is a white ring of internal radius fc-df
man/im_create_fmask.3:H(r)=1./(1.+cnst*pow(((r-fc)*(r-fc)/(w2)),order))
man/im_create_fmask.3:H(fc+df)=H(fc-df)=ac*H(fc)
man/im_create_fmask.3:H(r)=1./(1.+cnst*pow((w2/((r-fc)*(r-fc))),order))
man/im_create_fmask.3:H(r)=exp(log(ac)*(r-fc) * (r-fc)/w2)
man/im_create_fmask.3:BAND PASS - BAND REJECT MASKS (flag:13 to 17) 
man/im_create_fmask.3:(-fcx,-fcy) each one having radius r.  The two disks have values of 1.0.
man/im_create_fmask.3:Butterworth shape filters centered at (fcx,fcy) and (-fcx,-fcy).
man/im_create_fmask.3:be different to that of (fcx-||r||,fcy-||r||), since the tail of
man/im_create_fmask.3:the mask centered at (-fcx,-fcy) will give a different contribution
man/im_create_fmask.3:to (fcx+||r||,fcy+||r||) than that to (fcx-||r||,fcy-||r||).
man/im_create_fmask.3:amplitude at a cutoff frequency ((fcx-||r||,fcy-||r||) as if the contribution
man/im_create_fmask.3:with centres at (x0, y0) and (-x0,-y0),
man/im_create_fmask.3:H1(d) = cnst1/(1 + cnst2 * pow((d-d0)/r, 2*order))
man/im_create_fmask.3:cnst2=1./ac - 1.,
man/im_create_fmask.3:With this configuration for d=+d0, H(+d0) = 1.0; for d=-d0 H(-d0) = 1.0.
man/im_create_fmask.3:If da=(xa,ya), then for d=+da, H1(+da)=ac and for d=-da, H1(-da)=ac.  In the
man/im_create_fmask.3:latter case it is assumed that xa=x0*(1-radius/sqrt(x0*x0+y0*y0)) and that
man/im_create_fmask.3:ya=y0*(1-radius/sqrt(x0*x0+y0*y0)).
man/im_create_fmask.3:H_bbr(d) = 1.0 - H_bbp(d),
man/im_create_fmask.3:H1(d) = cnst1 * exp(-cnst2 * (d-d0)*(d-d0)/(r*r))
man/im_create_fmask.3:H1(d) = cnst1 * exp(-cnst2 * (d+d0)*(d+d0)/(r*r))
man/im_create_fmask.3:cnst1=1/( 1+exp(-cnst*d02/((r/2)*(r/2))) ),
man/im_create_fmask.3:d02 = x0*x0+y0*y0 and cnst2=-log(ac).
man/im_create_fmask.3:H_gbr(d) = 1.0 - H_gbp(d),
man/im_create_fmask.3:The function returns 0 on success and -1 on error.
man/im_create_fmask.3:N. Dessipris \- 10/08/1991
man/VipsObject.3:\- 
man/VipsObject.3:/* Useful flag combinations. User-visible ones are:
man/VipsObject.3:   Other combinations are used internally, eg. supplying the cast-table 
man/VipsObject.3:is the non-internationalised nickname of the class and is used to simplify
man/VipsObject.3:class might have the description "bicubic interpolation (Catmull-Rom)".
man/VipsObject.3:encoded as a string. It used used by the VIPS command-line program to generate
man/VipsObject.3:Unless otherwise noted, functions return 0 success and -1 on error.
man/im_insertplace.3:im_insertplace \- paste small images into big images
man/im_insertplace.3:Paste image small into image big, with small's left-left-hand corner at (x,y)
man/im_insertplace.3:This is an in-place operation. Big is damaged! Careful.
man/im_insertplace.3:All functions return 0 on success and -1 on error.
man/im_line.3:im_line \- writes a line on a vasari image
man/im_line.3:The function returns 0 on success and -1 on error.
man/im_line.3:N. Dessipris \- 10/05/1991
man/im_zone.3:im_zone, im_fzone \- creates a zone plate
man/im_zone.3:in the range [-1,+1]. The zone plate has spatial frequencies increasing from
man/im_zone.3:0-255. 
man/im_zone.3:The function returns 0 on success and -1 on error.
man/im_zone.3:N. Dessipris \- 10/05/1991
man/im_lrmerge.3:im_lrmerge, im_tbmerge, im_lrsmerge, im_tbsmerge, im_lrmergeb, im_tbmergeb \- merges two images with a given dx and dy
man/im_lrmerge.3:possible to join non-rectangular images.
man/im_lrmerge.3:A value of "-1" means "unlimited". All other negative values are errors.
man/im_lrmerge.3:Both functions return 0 on success and -1 on error.
man/im_add.3:im_add, im_gadd, im_gaddim, im_gfadd \- add two images
man/im_add.3: in1    - uchar   char   ushort  short  uint  int 
man/im_add.3: -------|-----------------------------------------
man/im_add.3: in1    - uchar   char   ushort  short  uint  int 
man/im_add.3: -------|-----------------------------------------
man/im_add.3:adds the non-complex images pointed by in1 and in2.  Result is
man/im_add.3:All functions return 0 on success and -1 on error.
man/im_add.3:N. Dessipris \- 22/04/1991
man/im_add.3:J. Cupitt, im_add(), \- 21/7/93
man/im_dif_std.3:im_dif_std \- calculate the mean and the standard deviation of the difference image for a given displacement vector
man/im_dif_std.3:difference of the values pointed by the vector (end value - start value).
man/im_dif_std.3:The function returns 0 on success and -1 on error.
man/im_dif_std.3:N. Dessipris \- 10/05/1991
man/im_buildlut.3:im_buildlut \- build a LUT from a set of x/y points
man/im_buildlut.3:-1 on error, otherwise 0
man/im_rot180.3:im_rot180, im_rot270, im_rot90, im_fliphor, im_flipver \- rotate and flip 
man/im_rot180.3:All functions return 0 on success and -1 on error.
man/im_rot180.3:N. Dessipris \- 5/12/1991
man/im_wrapone.3:im_wrapone, im_wrapmany \- easy interface to partial image IO system
man/im_wrapone.3:You should write your operation as a buffer processing function --- for
man/im_wrapone.3:            *out++ = 255 - *in++;
man/im_wrapone.3:        if( in->BandFmt != FMTUCHAR || 
man/im_wrapone.3:            in->Coding != NOCODING ||
man/im_wrapone.3:            in->Bands != 1 ) {
man/im_wrapone.3:            return( -1 );
man/im_wrapone.3:            return( -1 );
man/im_wrapone.3:input images should be NULL-terminated, as for im_start_many(3).
man/im_wrapone.3:All int-valued functions return zero on success and non-zero on error.
man/im_wrapone.3:J. Cupitt \- 9/2/95
man/im_gauss_dmask.3:im_gauss_dmask, im_gauss_imask \- create a gaussian DOUBLEMASK or INTMASK
man/im_gauss_dmask.3:   H(r) = exp( -(r * r) / (2 * sigma * sigma) ).
man/im_gauss_dmask.3:N. Dessipris \- 06/12/1991
man/im_bandjoin.3:im_bandjoin, im_gbandjoin \- join two or more images
man/im_bandjoin.3:These function perform a band-wise join of two or more images.  Input
man/im_bandjoin.3:performs a band-wise join of two images. If the two images
man/im_bandjoin.3:performs a generalised band-wise join of no images.
man/im_bandjoin.3:bands, imarray[1] has k bands, ...., imarray[no-1] has z bands, output 
man/im_bandjoin.3:The functions returns 0 on success and -1 on error.
man/im_bandjoin.3:J. Cupitt, N. Dessipris \- 25/04/1991
man/im_bits_of_fmt.3:im_bits_of_fmt \- return number of bits of band format
man/im_bits_of_fmt.3:-1 is returned on error.
man/im_disp_ps.3:im_disp_ps \- creates a displayable power spectrum of an one band image
man/im_disp_ps.3:image descriptor out.  Input should be one band image of any non-complex
man/im_disp_ps.3:spectrum is passed through a non-linear transformation (im_scaleps(3)).  The
man/im_disp_ps.3:The function returns 0 on success and -1 on error.
man/im_disp_ps.3:N. Dessipris \- 23/05/1991
man/im_contrast_surface.3: im_contrast_surface, im_contrast_surface_raw \- Generate contrast surface
man/im_contrast_surface.3:The output is sub-sampled by a factor of spacing.
man/im_contrast_surface.3:Input must be single-band uncoded uchar, WIO or PIO.
man/im_contrast_surface.3:Output is single-band uncoded uint, WIO or PIO.
man/im_contrast_surface.3:The functions returns 0 on success and -1 on error.
man/im_fwfft.3:im_fwfft, im_invfft, im_invfftr \- forward and inverse fft on an image
man/im_fwfft.3:If VIPS has been built with support for libfftw, a high-speed FFT library,
man/im_fwfft.3:Unfortunately, libfftw does not have good out-of-memory behaviour. If you
man/im_fwfft.3:The function returns 0 on success and -1 on error.
man/im_invertlut.3:im_invertlut \- turn a set of greyscale measurements into a gamma-correcting
man/im_invertlut.3:It won't work too well for non-monotonic camera responses (should fix this).
man/im_invertlut.3:-1 on error, otherwise 0
man/im_histplot.3:im_histplot \- graph an image of one horizontal or vertical line
man/im_histplot.3:as 256 by line-length pixels. For all other unsigned integer types, 
man/im_histplot.3:finds the image maximum, and draws the graph as max by line-length pixels.
man/im_histplot.3:draws the graph as min + max by line-lenth pixels.
man/im_histplot.3:The function returns 0 on success and -1 on error.
man/im_exr2vips.3:im_exr2vips \- convert OpenEXR images to VIPS format
man/im_mmapin.3:im_mmapin \- memory maps a VASARI image file (read only) and returns
man/im_mmapin.3:N. Dessipris \- 11/04/1990
man/im_mpercent.3:im_mpercent \- find threshold corresponding to a percentage of an image values
man/im_mpercent.3:The function returns 0 on success and -1 on error.
man/im_mpercent.3:N. Dessipris \- 14/05/1991
man/im_iscomplex.3:im_fexists, im_amiMSBfirst \- classify image types
man/im_iscomplex.3:im_fexists(3) returns non-zero if the named file exists and is readable. Args
man/im_iscomplex.3:im_isvips(3) tests a file for vips-ness.
man/im_iscomplex.3:im_isMSBfirst(3) returns true (1) if the file is in most-significant-byte first
man/im_iscomplex.3:returns false (0)for intel-order images.
man/im_iscomplex.3:The rest of these functions test im\-\>BandFmt, returning logical truth
man/im_iscomplex.3:(non-zero) if BandFmt is one of a number of possibles, and returning zero if
man/im_iscomplex.3:im_isint(3) (is integer type) returns true if im\-\>BandFmt is one of FMTUCHAR,
man/im_iscomplex.3:im_isuint(3) (is unsigned integer type) returns true if im\-\>BandFmt is one of
man/im_iscomplex.3:im_isfloat(3) (is floating point type) returns true if im\-\>BandFmt is one of
man/im_iscomplex.3:im_isscalar(3) (is scalar type) returns true if im\-\>BandFmt is one of FMTUCHAR,
man/im_iscomplex.3:im_iscomplex(3) (is complex type) returns true if im\-\>BandFmt is one of
man/im_iscomplex.3:J. Cupitt \- 23/7/93
missing:scriptversion=2009-04-28.21; # UTC
missing:if test $# -eq 0; then
missing:  echo 1>&2 "Try \`$0 --help' for more information"
missing:sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
missing:sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
missing:if test -f configure.ac; then
missing:--run)
missing:  # if --run hadn't been passed.
missing:  -h|--h|--he|--hel|--help)
missing:  -h, --help      display this help and exit
missing:  -v, --version   output version information and exit
missing:  --run           try to run the given command, and emulate it if it fails
missing:  tar          try tar, gnutar, gtar, then tar without non-portable flags
missing:Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
missing:Send bug reports to <bug-automake@gnu.org>."
missing:  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
missing:  -*)
missing:    echo 1>&2 "Try \`$0 --help' for more information"
missing:  s/^gnu-//; t
missing:# don't have it and --version was passed (most likely to detect
missing:# the program).  This is about non-GNU programs, so use $1 not
missing:    # Not GNU programs, they don't have --version.
missing:    if test -n "$run"; then
missing:       echo 1>&2 "ERROR: \`tar' requires --run"
missing:    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
missing:    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
missing:    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
missing:       # Could not run --version or --help.  This is probably someone
missing:       # running `$TOOL --version' or `$TOOL --help' to check whether
missing:    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
missing:    test -z "$files" && files="config.h"
missing:				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
missing:    find . -type f -name Makefile.am -print |
missing:    file=`echo "$*" | sed -n "$sed_output"`
missing:    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
missing:    if test -f "$file"; then
missing:	test -z "$file" || exec >$file
missing:    rm -f y.tab.c y.tab.h
missing:    if test $# -ne 1; then
missing:	    if test -f "$SRCFILE"; then
missing:	    if test -f "$SRCFILE"; then
missing:    if test ! -f y.tab.h; then
missing:    if test ! -f y.tab.c; then
missing:    rm -f lex.yy.c
missing:    if test $# -ne 1; then
missing:	    if test -f "$SRCFILE"; then
missing:    if test ! -f lex.yy.c; then
missing:    file=`echo "$*" | sed -n "$sed_output"`
missing:    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
missing:    if test -f "$file"; then
missing:	test -z "$file" || exec >$file
missing:    # The file to touch is that specified with -o ...
missing:    file=`echo "$*" | sed -n "$sed_output"`
missing:    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
missing:    if test -z "$file"; then
missing:      file=`sed -n '
missing:      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
missing:    test -f $file || exit 1
missing:    if (gnutar --version > /dev/null 2>&1); then
missing:    if (gtar --version > /dev/null 2>&1); then
missing:# eval: (add-hook 'write-file-hooks 'time-stamp)
missing:# time-stamp-start: "scriptversion="
missing:# time-stamp-format: "%:y-%02m-%02d.%02H"
missing:# time-stamp-time-zone: "UTC"
missing:# time-stamp-end: "; # UTC"
mkinstalldirs:# mkinstalldirs --- make directory hierarchy
mkinstalldirs:# Created: 1993-05-16
mkinstalldirs:Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
mkinstalldirs:while test $# -gt 0 ; do
mkinstalldirs:    -h | --help | --h*)         # -h for help
mkinstalldirs:    -m)                         # -m PERM arg
mkinstalldirs:      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
mkinstalldirs:    --)                         # stop option processing
mkinstalldirs:    -*)                         # unknown option
mkinstalldirs:    *)                          # first non-opt arg
mkinstalldirs:  if test -d "$file"; then
mkinstalldirs:    if mkdir -p -- . 2>/dev/null; then
mkinstalldirs:      echo "mkdir -p -- $*"
mkinstalldirs:      exec mkdir -p -- "$@"
mkinstalldirs:    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
mkinstalldirs:      echo "mkdir -m $dirmode -p -- $*"
mkinstalldirs:      exec mkdir -m "$dirmode" -p -- "$@"
mkinstalldirs:  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
mkinstalldirs:      -*) pathcomp=./$pathcomp ;;
mkinstalldirs:    if test ! -d "$pathcomp"; then
mkinstalldirs:      if test ! -d "$pathcomp"; then
mkinstalldirs:  	if test ! -z "$dirmode"; then
mkinstalldirs:  	  if test ! -z "$lasterr"; then
mkinstalldirs:# mode: shell-script
mkinstalldirs:# sh-indentation: 2
NEWS:Non-backwards compatible changes
NEWS:- IMAGE->Hist is deprecated, use im_history_get() instead
NEWS:- im_append_Hist() removed
NEWS:- IMAGE->Bbits is deprecated (now ignored)
NEWS:- im_region_local() replaced by im_region_buffer()
NEWS:- new backwards and forwards compatible VIPS file format: it has a new 
NEWS:- speed ups: new pixel buffer cache saves and reuses computations, uses liboil 
NEWS:- SMP scaling: simplified lock system improves SMP scaling, double-buffered 
NEWS:- lower mem use: new mmap window cache shares file mappings, history buffers 
NEWS:- built-in support for new image formats: OpenEXR, Analyze7, CSV
NEWS:- RGB16 and GREY16 image hints
NEWS:- uses GOption for much better command-line argument handling
NEWS:- better C++ binding: namespaces, VError derives from std::exception, image
NEWS:- python binding 
NEWS:- gcc sentinel attributes added
NEWS:- added GValue as an arg type
NEWS:- added im_benchmark() and friends for testing
NEWS:- new functions: 
NEWS:Non-backwards compatible changes
NEWS:- no longer generates vips-config script, instead it makes .pc files for
NEWS:  pkg-config ... replace any "vips-config" with "pkg-config vips-7.10"
NEWS:- origin hint semantics changed ... it now records the position in the output
NEWS:- all float to int casts on pixel values are now floor() rather than rint(),
NEWS:- nip reworked for gtk+-2.4, now called nip2
NEWS:- now based on glib, so VIPS no longer has it's own thread, plugin and data
NEWS:- i18n support, although not quite complete yet
NEWS:- new error message API to make i18n possible (compatibility macros mean the
NEWS:- new 'start up VIPS' call, im_init_world(), sets up i18n and threads
NEWS:- C programs now just need "#include <vips/vips.h>", no other includes
NEWS:- wraps the Pango font rendering library, see im_text()
NEWS:- new function flag: NOCACHE ... means the result of the call should not be
NEWS:- im_embed() now supports a wider range of embedding styles, including a fast
NEWS:- all area operations use the new embed style to expand their input rather 
NEWS:- other new functions: im_render(), im_cache(), im_extract_bands(), 
NEWS:- many fixes and improvements to old funcs
NEWS:- configure and portability improvements
NEWS:- all serious bug fixes got back-ported to 7.8, I think
NEWS:Non-backwards compatible changes
NEWS:- output format options specified in filenames: new prototypes for load and
NEWS:- C++ API name changes ... error => VError
NEWS:- include path change
NEWS:    - C includes <vips/vips.h>
NEWS:    - C++ includes <vips/vipscpp.h>
NEWS:- im_extract*() numbers bands from zero, not from 1 ... also other funcs which
NEWS:- mosaic funcs have extra max blend width parameter
NEWS:- rewritten and much fancier ip (see separate docs), now called nip ... old ip
NEWS:- mmap windows remove 2GB image size limit
NEWS:- images have an origin hint field
NEWS:- icc transforms supported via wrapping of Little CMS
NEWS:- much, much faster Fourier transforms via wrapping of libfwfft
NEWS:- ppm/pgm/pbm read/write
NEWS:- C++ API enhancements: new constructors, more operator equivalences
NEWS:- new colourspace: Yxy
NEWS:- support for D50 colour temperature images
NEWS:- new functions: im_image(), im_system(), im_version*(), im_blend(),
NEWS:- new type: IMAGEVEC
NEWS:- header is much faster
NEWS:- ip/nip split to separate packages
NEWS:- better vips2dj
NEWS:- better cygwin support, mingw support too
NEWS:- Mac OS X and Windows build support
NEWS:- new set of sensible #define names, old names can be turned off with
NEWS:  -DIM_NO_VIPS7_COMPAT
NEWS:- many configure improvements
NEWS:- speed ups
NEWS:- fixes to implicit image format conversions 
NEWS:- im_zoom() spots integer overflow
NEWS:- im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0
NEWS:- fixes to refcounting in C++ API
NEWS:- mask casts in C++ were broken
NEWS:Non-backwards compatible changes
NEWS:- im_histplot() has new (and better) rules
NEWS:- im_andconst(), im_orconst() and im_eorconst() now take a
NEWS:- im_global_balance_float() renamed as im_global_balancef() to be
NEWS:- im_global_balance_search() removed ... you can do this efficiently
NEWS:- new parameter "gamma" to im_global_balance() and
NEWS:- im_malloc() now returns void *, not char *
NEWS:- tiny memory leak in im_list_remove() fixed
NEWS:- oops, the value for sRGB in the header was wrong, now 22
NEWS:- missing function descriptor for im_rank_raw()
NEWS:- im_dECMC_fromLab() was broken
NEWS:- im_erode() and im_dilate() output incorrect error messages
NEWS:- im_rotate_*mask*() functions were not preserving scale and offset
NEWS:- better display control bar
NEWS:- matrix operations now appear in the workspace
NEWS:- new UI elements: input options and toggles
NEWS:- better LUT optimisation --- arithmetic operations on UCHAR images should be
NEWS:- new macro language --- same as old one, but faster and much more powerful
NEWS:- all standard menus rewritten in new macro language, much nicer!
NEWS:- batch operations with Group/Ungroup
NEWS:- now uses GDK for drawing in image windows, much better colour handling on
NEWS:  8/16-bit graphics cards
NEWS:- image repaint is now threaded for an about-linear speedup as you add
NEWS:- many interface improvements and polishes
NEWS:- VIPS now uses POSIX threads (7.4 used Solaris threads) and has been rejigged
NEWS:- im_open() now knows about LSB- and MSB- first VIPS images, and
NEWS:- new parameter type IM_INPUT_REALVEC, a vector of doubles
NEWS:- new set of functions with vector constants: im_lintra_vec(),
NEWS:- new flag for function descriptors: "IM_FN_PTOP" set for point-to-point
NEWS:- im_tiff2vips() now reads and writes 16-bit images, and knows about zip
NEWS:- convenience functions im_extract_band() extracts a band from an image;
NEWS:- im_list_member() tests for list contains object
NEWS:- new functions im_write_*mask_name(), im_create_*maskv()
NEWS:- fourier filtering, forward transform, reverse transform, make power spectrum
NEWS:- new functions im_isMSBfirst() and im_amiMSBfirst() test images
NEWS:- im_malloc() now prints low-on-memory warnings to stderr with
NEWS:- D65_X0 updated for latest recommedations, D60, D93,
NEWS:- minor fixes to the C++ interface to bring it in line with the newer ANSI
NEWS:- more and more comprehensive prototypes in "proto.h" to aid C++ (use of
NEWS:- im_and*(), im_or*() and im_eor*() can now work on any
po/en_GB.po:# Copyright (C) 1990-2010 Imperial College, London and others.
po/en_GB.po:# See also http://www.gnu-darwin.org/www001/src/ports/graphics/vips/work/
po/en_GB.po:#                 vips-7.12.4/doc/pdf/vipsmanual.pdf
po/en_GB.po:"Project-Id-Version: libvips-doc 7.22.0\n"
po/en_GB.po:"Report-Msgid-Bugs-To: \n"
po/en_GB.po:"POT-Creation-Date: 2010-06-24 20:55+0100\n"
po/en_GB.po:"PO-Revision-Date: 2010-05-26 12:11+0100\n"
po/en_GB.po:"Last-Translator: John Cupitt <jcupitt@gmail.com>\n"
po/en_GB.po:"Language-Team: \n"
po/en_GB.po:"MIME-Version: 1.0\n"
po/en_GB.po:"Content-Type: text/plain; charset=UTF-8\n"
po/en_GB.po:"Content-Transfer-Encoding: 8bit\n"
po/en_GB.po:msgid "calculate a*in + b -> out, a and b vectors"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "input not 3-band uncoded char"
po/en_GB.po:msgid "3-band uncoded float only"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "layer buffer exhausted -- try making TIFF output tiles smaller"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:"unknown multi-res mode \"%s\"\n"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "can't have strip pyramid -- enabling tiling"
po/en_GB.po:msgid "can only pyramid LABQ and non-complex images"
po/en_GB.po:msgid "can't have 1-bit JPEG -- disabling JPEG"
po/en_GB.po:msgid "unsigned 8-bit int, 16-bit int, and 32-bit float only"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "%d-dimensional images not supported"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "libMagick-supported"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:"no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per "
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "qfac should be in 0-100"
po/en_GB.po:msgid "one band non-complex uncoded only"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "S not in range [-30,+30]"
po/en_GB.po:msgid "M not in range [-30,+30]"
po/en_GB.po:msgid "H not in range [-30,+30]"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "auto-rewind for %s failed"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "images must have the same number of bands, or one must be single-band"
po/en_GB.po:msgid "image must be non-complex"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "image must be 8- or 16-bit integer, signed or unsigned"
po/en_GB.po:msgid "image must be 8- or 16-bit unsigned integer"
po/en_GB.po:msgid "image must be 8- or 16-bit unsigned integer, or float"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "per-thread state for sink"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "out of memory --- size == %dMB"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "per-thread state for render"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "unable to mmap: \"%s\" - %s"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "per-thread state for sinkdisc"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "per-thread state for vipsthreadpool"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "open for read-write for native format images only"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "scale should be non-zero"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "1-band uchar uncoded only"
po/en_GB.po:msgid "flag not -1 or 1"
po/en_GB.po:msgid "non-complex uncoded only"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "input non-complex uncoded only"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "index should be in range 0 - %d"
po/en_GB.po:msgid "uncoded non-complex only"
po/en_GB.po:msgid "mwidth must be -1 or >= 0"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "found %d tie-points, need at least %d"
po/en_GB.po:msgid "not 1-band uchar image"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "non-complex input only"
po/en_GB.po:msgid "Nearest-neighbour interpolation"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "- VIPS driver program"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "vipsfile - edit vipsfile header"
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:#, c-format
po/en_GB.po:msgid "- thumbnail generator"
po/en_GB.po:msgid "- print image header"
po/en_GB.po:#, c-format
po/en_GB.po:msgid "Bicubic interpolation (Catmull-Rom)"
po/en_GB.po:msgid "B-Splines with antialiasing smoothing"
Coincidencia en el archivo binario po/en_GB.gmo
Coincidencia en el archivo binario po/de.gmo
po/Makefile.in.in:# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
po/Makefile.in.in:# - Modified by jacob berkman <jacob@ximian.com> to install
po/Makefile.in.in:#   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
po/Makefile.in.in:gettextsrcdir = $(datadir)/glib-2.0/gettext/po
po/Makefile.in.in:INCLUDES = -I.. -I$(top_srcdir)/intl
po/Makefile.in.in:COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
po/Makefile.in.in:	$(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox
po/Makefile.in.in:	$(MSGFMT) -o $@ $<
po/Makefile.in.in:	  && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $<
po/Makefile.in.in:	sed -f ../intl/po2msg.sed < $< > $*.msg \
po/Makefile.in.in:	  && rm -f $@ && $(GENCAT) $@ $*.msg
po/Makefile.in.in:all: all-@USE_NLS@
po/Makefile.in.in:all-yes: $(CATALOGS)
po/Makefile.in.in:all-no:
po/Makefile.in.in:	$(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \
po/Makefile.in.in:	  --add-comments --keyword=_ --keyword=N_ \
po/Makefile.in.in:	  --keyword=C_:1c,2 \
po/Makefile.in.in:	  --keyword=NC_:1c,2 \
po/Makefile.in.in:	  --keyword=g_dngettext:2,3 \
po/Makefile.in.in:	  --flag=N_:1:pass-c-format \
po/Makefile.in.in:	  --flag=C_:2:pass-c-format \
po/Makefile.in.in:	  --flag=NC_:2:pass-c-format \
po/Makefile.in.in:	  --flag=g_dngettext:2:pass-c-format \
po/Makefile.in.in:          --flag=g_strdup_printf:1:c-format \
po/Makefile.in.in:          --flag=g_string_printf:2:c-format \
po/Makefile.in.in:          --flag=g_string_append_printf:2:c-format \
po/Makefile.in.in:          --flag=g_error_new:3:c-format \
po/Makefile.in.in:          --flag=g_set_error:4:c-format \
po/Makefile.in.in:          --flag=g_markup_printf_escaped:1:c-format \
po/Makefile.in.in:          --flag=g_log:3:c-format \
po/Makefile.in.in:          --flag=g_print:1:c-format \
po/Makefile.in.in:          --flag=g_printerr:1:c-format \
po/Makefile.in.in:          --flag=g_printf:1:c-format \
po/Makefile.in.in:          --flag=g_fprintf:2:c-format \
po/Makefile.in.in:          --flag=g_sprintf:2:c-format \
po/Makefile.in.in:          --flag=g_snprintf:3:c-format \
po/Makefile.in.in:          --flag=g_scanner_error:2:c-format \
po/Makefile.in.in:          --flag=g_scanner_warn:2:c-format \
po/Makefile.in.in:	  --files-from=$(srcdir)/POTFILES.in \
po/Makefile.in.in:	&& test ! -f $(GETTEXT_PACKAGE).po \
po/Makefile.in.in:	   || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \
po/Makefile.in.in:install: install-exec install-data
po/Makefile.in.in:install-exec:
po/Makefile.in.in:install-data: install-data-@USE_NLS@
po/Makefile.in.in:install-data-no: all
po/Makefile.in.in:install-data-yes: all
po/Makefile.in.in:	if test -r "$(MKINSTALLDIRS)"; then \
po/Makefile.in.in:	  if test -r "$(MKINSTALLDIRS)"; then \
po/Makefile.in.in:	  if test -r $$cat; then \
po/Makefile.in.in:	  if test -r $$cat.m; then \
po/Makefile.in.in:	    if test -r $(srcdir)/$$cat.m ; then \
po/Makefile.in.in:	  if test -r "$(MKINSTALLDIRS)"; then \
po/Makefile.in.in:	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
po/Makefile.in.in:	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
po/Makefile.in.in:	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
po/Makefile.in.in:	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
po/Makefile.in.in:	  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
po/Makefile.in.in:	rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp
po/Makefile.in.in:	rm -fr *.o
po/Makefile.in.in:	rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
po/Makefile.in.in:maintainer-clean: distclean
po/Makefile.in.in:	rm -f $(GMOFILES)
po/Makefile.in.in:distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
po/Makefile.in.in:dist distdir: update-po $(DISTFILES)
po/Makefile.in.in:	    || cp -p $(srcdir)/$$file $(distdir); \
po/Makefile.in.in:update-po: Makefile
po/Makefile.in.in:	  if $(MSGMERGE) $$lang.po $(GETTEXT_PACKAGE).pot -o $$tmpdir/$$lang.new.po; then \
po/Makefile.in.in:	      rm -f $$tmpdir/$$lang.new.po; \
po/Makefile.in.in:	      if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
po/Makefile.in.in:	        rm -f $$tmpdir/$$lang.new.po; \
po/Makefile.in.in:	    rm -f $$tmpdir/$$lang.new.po; \
po/Makefile.in.in:	  rm -f $@-t $@ \
po/Makefile.in.in:	    && (sed -e '/^#/d' 						\
po/Makefile.in.in:		    -e "s/^\[.*\] +//" 					\
po/Makefile.in.in:		    -e '/^[ 	]*$$/d' 				\
po/Makefile.in.in:		    -e "s@.*@	$$posrcprefix& \\\\@" < $(srcdir)/$@.in	\
po/Makefile.in.in:		| sed -e '$$s/\\$$//') > $@-t \
po/Makefile.in.in:	    && chmod a-w $@-t \
po/Makefile.in.in:	    && mv $@-t $@ )
po/de.po:# Copyright (C) 1990-2009 Imperial College, London and others.
po/de.po:# See also http://www.gnu-darwin.org/www001/src/ports/graphics/vips/work/
po/de.po:#                 vips-7.12.4/doc/pdf/vipsmanual.pdf
po/de.po:"Project-Id-Version: libvips-doc 7.20.7-1\n"
po/de.po:"Report-Msgid-Bugs-To: \n"
po/de.po:"POT-Creation-Date: 2010-06-24 20:55+0100\n"
po/de.po:"PO-Revision-Date: 2010-05-17 22:00+0100\n"
po/de.po:"Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
po/de.po:"Language-Team: Debian German <debian-l10n-german@lists.debian.org>\n"
po/de.po:"MIME-Version: 1.0\n"
po/de.po:"Content-Type: text/plain; charset=UTF-8\n"
po/de.po:"Content-Transfer-Encoding: 8bit\n"
po/de.po:msgid "calculate a*in + b -> out, a and b vectors"
po/de.po:msgstr "Berechnen von a*in + b -> out, a und b Vektoren"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "»in«-Bänder müssen die gleiche Breite wie die Matrix haben"
po/de.po:#, c-format
po/de.po:msgstr "kein RAD-Bild"
po/de.po:msgstr "gegen die »lcms«-Bibliothek wird in diesem VIPS nicht verlinkt"
po/de.po:msgstr "gegen die »lmcs«-Bibliothek wird in diesem VIPS nicht verlinkt"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:"Ziel-%d (%s) nicht von Profil »%s« unterstützt; Rückfall auf Standardabsicht "
po/de.po:msgstr "CMYK-Eingabeprofil benötigt ein Eingabebild mit vier Bändern"
po/de.po:msgstr "RGB-Eingabeprofil benötigt ein Eingabebild mit drei Bändern"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "nur »uchar« oder »ushort«-Eingabe"
po/de.po:#, c-format
po/de.po:"Ziel-%d (%s) nicht vom Profil unterstützt; Rückfall auf Standardabsicht "
po/de.po:msgstr "CMYK-Profil benötigt ein Eingabebild mit vier Bändern"
po/de.po:msgstr "RGB-Profil benötigt ein Eingabebild mit drei Bändern"
po/de.po:msgstr "nicht unterstützte Bit-Tiefe"
po/de.po:msgid "input not 3-band uncoded char"
po/de.po:msgid "3-band uncoded float only"
po/de.po:msgstr "falsche Grauskala-Maskengröße"
po/de.po:#, c-format
po/de.po:msgstr "falscher Grauskala-Maskenwert, Reihe %d"
po/de.po:#, c-format
po/de.po:msgstr "%d Unter- und %d Überläufe entdeckt"
po/de.po:msgstr "Pangoft2-Unterstützung deaktiviert"
po/de.po:#, fuzzy, c-format
po/de.po:#, c-format
po/de.po:msgstr "%d Über- und %d Unterläufe entdeckt"
po/de.po:msgstr "1xN- oder Nx1-Eingabemaske wird erwartet"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "TIFF-Unterstützung ausgeschaltet"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgid "layer buffer exhausted -- try making TIFF output tiles smaller"
po/de.po:"Ebenenpuffer aufgebraucht -- versuchen Sie die TIFF-Ausgabekacheln zu "
po/de.po:msgstr "Schreiben des TIFF-Bildes fehlgeschlagen"
po/de.po:msgstr "falscher JPEG-Qualitätsparameter"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:"unknown multi-res mode \"%s\"\n"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgid "can't have strip pyramid -- enabling tiling"
po/de.po:"nicht ummantelte Pyramide nicht möglich -- Zerteilung wird eingeschaltet"
po/de.po:msgid "can only pyramid LABQ and non-complex images"
po/de.po:"nur LABQ und nicht-komplexe Bilder können pyramidenartig verwendet werden"
po/de.po:msgid "can't have 1-bit JPEG -- disabling JPEG"
po/de.po:msgstr "1-Bit-JPEG nicht möglich -- JPEG wird ausgeschaltet"
po/de.po:msgid "unsigned 8-bit int, 16-bit int, and 32-bit float only"
po/de.po:msgstr "nur vorzeichenlose 8-Bit-Ganzzahl und 32-Bit-Fließkommazahl"
po/de.po:#, c-format
po/de.po:msgstr "falsche Modus-Zeichenkette, sollte »binary« oder »ascii« sein"
po/de.po:msgstr "PNG-Unterstützung ausgeschaltet"
po/de.po:#, c-format
po/de.po:msgstr "PNG-Fehler: »%s«"
po/de.po:#, c-format
po/de.po:msgstr "PNG-Warnung: »%s«"
po/de.po:#, c-format
po/de.po:msgid "%d-dimensional images not supported"
po/de.po:msgstr "%d-dimensionale Bilder nicht unterstützt"
po/de.po:#, c-format
po/de.po:msgstr "libMagick-Unterstützung ausgeschaltet"
po/de.po:#, fuzzy, c-format
po/de.po:#, c-format
po/de.po:msgstr "nicht unterstützte Bit-Tiefe %d"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:"libMagick-Fehler: %s %s"
po/de.po:#, c-format
po/de.po:"libMagick-Fehler: %s %s"
po/de.po:msgid "libMagick-supported"
po/de.po:msgstr "libMagick-unterstützt"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "nur RGB-TIFF mit drei oder vier Bändern"
po/de.po:msgstr "nur CMYK-TIFF mit vier oder fünf Bändern"
po/de.po:#, c-format
po/de.po:"no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per "
po/de.po:"Keine Auflösungsinformationen für TIFF-Bild »%s« -- Standard auf 1 Bildpunkt "
po/de.po:#, c-format
po/de.po:msgstr "nicht unterstütztes Musterformat %d für LAB-Bild"
po/de.po:#, c-format
po/de.po:msgstr "nicht unterstützte Tiefe %d für LAB-Bild"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "nicht unterstütztes Musterformat %d für RGB-Bild"
po/de.po:#, c-format
po/de.po:msgstr "nicht unterstützte Tiefe %d für RGB-Bild"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "TIFF-Datei enthält nicht Seite %d"
po/de.po:msgstr "OpenEXR-Unterstützung ausgeschaltet"
po/de.po:#, c-format
po/de.po:msgstr "EXR-Fehler: %s"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "JPEG-Unterstützung ausgeschaltet"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "Fehler beim Lesen der Glanz-Kopfzeilen"
po/de.po:msgstr "Fehler beim Setzen der JPEG-Auflösung"
po/de.po:msgid "qfac should be in 0-100"
po/de.po:msgstr "»qfac« sollte in 0-100 liegen"
po/de.po:msgid "one band non-complex uncoded only"
po/de.po:msgstr "nur nicht-komplex mit einem Band"
po/de.po:#, c-format
po/de.po:msgstr "x-Wert keine Ganzzahl"
po/de.po:msgstr "x-Bereich zu klein"
po/de.po:msgstr "falsche Eingabematrix-Größe"
po/de.po:msgstr "falsche »in_max«-, »out_max«-Parameter"
po/de.po:msgstr "falsche »Lb«-, »Lw«-Parameter"
po/de.po:msgid "S not in range [-30,+30]"
po/de.po:msgstr "»S« nicht im Bereich [-30,+30]"
po/de.po:msgid "M not in range [-30,+30]"
po/de.po:msgstr "»M« nicht im Bereich [-30,+30]"
po/de.po:msgid "H not in range [-30,+30]"
po/de.po:msgstr "»H« nicht im Bereich [-30,+30]"
po/de.po:#, c-format
po/de.po:msgstr "Maskenbild nicht 8-Bit-kodiert mit einem Band"
po/de.po:msgstr "»ink«-Bild passt nicht in das Bild"
po/de.po:msgstr "»ink«-Bild nicht 1x1 Bildpunkte"
po/de.po:#, c-format
po/de.po:msgid "auto-rewind for %s failed"
po/de.po:msgstr "Null-Bild-Deskriptor"
po/de.po:#, c-format
po/de.po:msgid "images must have the same number of bands, or one must be single-band"
po/de.po:msgid "image must be non-complex"
po/de.po:msgstr "Bild muss nicht-komplex sein"
po/de.po:#, c-format
po/de.po:msgid "image must be 8- or 16-bit integer, signed or unsigned"
po/de.po:msgstr "Bild muss 8- oder 16-Bit vorzeichenlos ganzzahlig sein"
po/de.po:msgid "image must be 8- or 16-bit unsigned integer"
po/de.po:msgstr "Bild muss 8- oder 16-Bit vorzeichenlos ganzzahlig sein"
po/de.po:msgid "image must be 8- or 16-bit unsigned integer, or float"
po/de.po:msgstr "Bild muss 8- oder 16-Bit vorzeichenlos ganzzahlig sein"
po/de.po:msgstr "Bild muss 8- oder 16-Bit vorzeichenlos ganzzahlig sein"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "»stop«-Funktion für Bild »%s« fehlgeschlagen"
po/de.po:#, c-format
po/de.po:msgstr "»start«-Funktion für Bild »%s« fehlgeschlagen"
po/de.po:msgid "per-thread state for sink"
po/de.po:#, c-format
po/de.po:msgid "out of memory --- size == %dMB"
po/de.po:msgstr "Hauptspeicher reicht nicht aus --- Größe == %dMB"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "es kann nicht zu einem %s-Bild ausgegeben werden"
po/de.po:msgid "per-thread state for render"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgid "unable to mmap: \"%s\" - %s"
po/de.po:msgstr "»mmap« nicht möglich: \"%s\" - %s"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "»thinstrip«-Höhe auf N setzen (DEBUG)"
po/de.po:msgstr "»fatstrip«-Höhe auf N setzen (DEBUG)"
po/de.po:msgstr "VIPS-Optionen"
po/de.po:msgstr "VIPS-Optionen anzeigen"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "falscher Bild-Deskriptor"
po/de.po:#, c-format
po/de.po:msgstr "erforderlicher Konstrukt-Parameter %s zu %s nicht gesetzt"
po/de.po:msgstr "VIPS-Basisklasse"
po/de.po:msgstr "Klassen-Nickname"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "Bild-Deskriptor NULL"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, fuzzy, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "Eingabe von einem %s-Bild nicht möglich"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "kein solches »double«-Feld »%s«"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgid "per-thread state for sinkdisc"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "NULL-Dateiname oder -Modus"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "Windows-Fehler"
po/de.po:msgstr "Unix-Fehler"
po/de.po:#, c-format
po/de.po:msgstr "Vips-Diagnose"
po/de.po:msgstr "Vips-Warnung"
po/de.po:#, c-format
po/de.po:# double-Wert für Vektor prüfen
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgid "per-thread state for vipsthreadpool"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "»%s« ist kein VIPS-Bild"
po/de.po:#, c-format
po/de.po:msgstr "XML-Fehler beim Speichern"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgid "open for read-write for native format images only"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "Fehler beim Lesen der Matrix-Kopfzeilen"
po/de.po:msgid "scale should be non-zero"
po/de.po:#, fuzzy, c-format
po/de.po:msgid "1-band uchar uncoded only"
po/de.po:msgid "flag not -1 or 1"
po/de.po:msgstr "Markierung nicht -1 oder 1"
po/de.po:msgid "non-complex uncoded only"
po/de.po:msgstr "nur nicht-komplexes unkodiertes"
po/de.po:#, c-format
po/de.po:msgid "input non-complex uncoded only"
po/de.po:msgstr "Eingabe nur nicht-komplex unkodiert"
po/de.po:#, c-format
po/de.po:msgid "index should be in range 0 - %d"
po/de.po:msgstr "Index sollte im Bereich 0 - %d liegen"
po/de.po:msgid "uncoded non-complex only"
po/de.po:msgstr "nur unkodiert nicht-komplex"
po/de.po:msgid "mwidth must be -1 or >= 0"
po/de.po:msgstr "»mwidth« muss -1 oder >= 0 sein"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "falsche Anzahl von Argumenten in »join«-Zeile"
po/de.po:msgstr "falsche Anzahl von Argumenten in »join1«-Zeile"
po/de.po:msgstr "falsche Anzahl von Argumenten in »copy«-Zeile"
po/de.po:"Mosaik-Wurzel nicht in Beschreibungsdatei gefunden\n"
po/de.po:#, c-format
po/de.po:msgid "found %d tie-points, need at least %d"
po/de.po:msgid "not 1-band uchar image"
po/de.po:msgstr "kein »uchar«-Bild mit einem Band"
po/de.po:msgstr "falscher Balancetyp-Parameter"
po/de.po:#, c-format
po/de.po:msgid "non-complex input only"
po/de.po:msgstr "nur nicht-komplexe Eingabe"
po/de.po:msgid "Nearest-neighbour interpolation"
po/de.po:msgstr "Nächste-Nachbar-Interpolation"
po/de.po:msgstr "nur Ganzzahltyp-Bilder"
po/de.po:msgstr "kein Datei-Deskriptor"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "ohne »im_video_v4l1«-Unterstützung kompiliert"
po/de.po:msgstr "C++-Deklarationen für PAKET (oder »all«) ausgeben"
po/de.po:msgstr "C++-Bindings für PAKET (oder »all«) ausgeben"
po/de.po:#, c-format
po/de.po:msgid "- VIPS driver program"
po/de.po:msgstr "- VIPS-Treiberprogramm"
po/de.po:#, c-format
po/de.po:msgid "vipsfile - edit vipsfile header"
po/de.po:msgstr "»vipsfile« - »vipsfile«-Kopfzeilen bearbeiten"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgstr "VIPS-Kopfzeilen für %s konnten nicht gelesen werden"
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:#, c-format
po/de.po:msgid "- thumbnail generator"
po/de.po:msgid "- print image header"
po/de.po:msgstr "- Bild-Kopfzeilen ausgeben"
po/de.po:#, c-format
po/de.po:msgid "Bicubic interpolation (Catmull-Rom)"
po/de.po:msgid "B-Splines with antialiasing smoothing"
po/de.po:#~ msgstr "kein gepacktes Lab-Bild"
po/de.po:#~ msgstr "kein LabQ-Bild"
po/de.po:#~ msgid "input not 3-band short"
po/de.po:#~ msgstr " nur vorzeichenlose 8- oder 16-Bit-Bilder"
po/de.po:#~ msgid "non-complex images only"
po/de.po:#~ msgstr "nur nicht-komplexe Bilder"
po/de.po:#~ msgstr "nur »uchar«-Bilder"
po/de.po:#~ msgstr "falsche »lut«-Datei"
po/de.po:#~ msgid "non-complex only"
po/de.po:#~ msgstr "nur nicht-komplex"
po/de.po:#~ msgstr "Eingabe-»luts« sind kein vorzeichenloser Ganzzahltyp"
po/de.po:#~ msgstr "kein »1 mal n«- oder »n mal 1«-Bild"
po/de.po:#~ msgid "not 1024-point IM_BANDFMT_SHORT lut"
po/de.po:#~ msgstr "kein 1024-Punkt-»IM_BANDFMT_SHORT lut«"
po/vips7.pot:"Project-Id-Version: PACKAGE VERSION\n"
po/vips7.pot:"Report-Msgid-Bugs-To: \n"
po/vips7.pot:"POT-Creation-Date: 2010-06-24 20:55+0100\n"
po/vips7.pot:"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
po/vips7.pot:"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
po/vips7.pot:"Language-Team: LANGUAGE <LL@li.org>\n"
po/vips7.pot:"MIME-Version: 1.0\n"
po/vips7.pot:"Content-Type: text/plain; charset=CHARSET\n"
po/vips7.pot:"Content-Transfer-Encoding: 8bit\n"
po/vips7.pot:msgid "calculate a*in + b -> out, a and b vectors"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "input not 3-band uncoded char"
po/vips7.pot:msgid "3-band uncoded float only"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "layer buffer exhausted -- try making TIFF output tiles smaller"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:"unknown multi-res mode \"%s\"\n"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "can't have strip pyramid -- enabling tiling"
po/vips7.pot:msgid "can only pyramid LABQ and non-complex images"
po/vips7.pot:msgid "can't have 1-bit JPEG -- disabling JPEG"
po/vips7.pot:msgid "unsigned 8-bit int, 16-bit int, and 32-bit float only"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "%d-dimensional images not supported"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "libMagick-supported"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:"no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per "
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "qfac should be in 0-100"
po/vips7.pot:msgid "one band non-complex uncoded only"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "S not in range [-30,+30]"
po/vips7.pot:msgid "M not in range [-30,+30]"
po/vips7.pot:msgid "H not in range [-30,+30]"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "auto-rewind for %s failed"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "images must have the same number of bands, or one must be single-band"
po/vips7.pot:msgid "image must be non-complex"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "image must be 8- or 16-bit integer, signed or unsigned"
po/vips7.pot:msgid "image must be 8- or 16-bit unsigned integer"
po/vips7.pot:msgid "image must be 8- or 16-bit unsigned integer, or float"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "per-thread state for sink"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "out of memory --- size == %dMB"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "per-thread state for render"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "unable to mmap: \"%s\" - %s"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "per-thread state for sinkdisc"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "per-thread state for vipsthreadpool"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "open for read-write for native format images only"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "scale should be non-zero"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "1-band uchar uncoded only"
po/vips7.pot:msgid "flag not -1 or 1"
po/vips7.pot:msgid "non-complex uncoded only"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "input non-complex uncoded only"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "index should be in range 0 - %d"
po/vips7.pot:msgid "uncoded non-complex only"
po/vips7.pot:msgid "mwidth must be -1 or >= 0"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "found %d tie-points, need at least %d"
po/vips7.pot:msgid "not 1-band uchar image"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "non-complex input only"
po/vips7.pot:msgid "Nearest-neighbour interpolation"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "- VIPS driver program"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "vipsfile - edit vipsfile header"
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:#, c-format
po/vips7.pot:msgid "- thumbnail generator"
po/vips7.pot:msgid "- print image header"
po/vips7.pot:#, c-format
po/vips7.pot:msgid "Bicubic interpolation (Catmull-Rom)"
po/vips7.pot:msgid "B-Splines with antialiasing smoothing"
py-compile:# py-compile - Compile a Python program
py-compile:scriptversion=2005-05-14.22
py-compile:# 02110-1301, USA.
py-compile:# bugs to <bug-automake@gnu.org> or send patches to
py-compile:# <automake-patches@gnu.org>.
py-compile:if [ -z "$PYTHON" ]; then
py-compile:while test $# -ne 0; do
py-compile:    --basedir)
py-compile:      if test -z "$basedir"; then
py-compile:        echo "$0: Missing argument to --basedir." 1>&2
py-compile:    --destdir)
py-compile:      if test -z "$destdir"; then
py-compile:        echo "$0: Missing argument to --destdir." 1>&2
py-compile:    -h|--h*)
py-compile:Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..."
py-compile:Byte compile some python scripts FILES.  Use --destdir to specify any
py-compile:byte compiled file.  Specify --basedir for any additional path information you
py-compile:  py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py
py-compile:Report bugs to <bug-automake@gnu.org>.
py-compile:    -v|--v*)
py-compile:      echo "py-compile $scriptversion"
py-compile:if test -z "$files"; then
py-compile:    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
py-compile:if [ -z "$basedir" ]; then
py-compile:if [ -z "$destdir" ]; then
py-compile:$PYTHON -c "
py-compile:print 'Byte-compiling python modules...'
py-compile:                                            and filepath[-3:] == '.py'):
py-compile:$PYTHON -O -c "
py-compile:print 'Byte-compiling python modules (optimized versions) ...'
py-compile:                                            and filepath[-3:] == '.py'):
py-compile:# mode: shell-script
py-compile:# sh-indentation: 2
py-compile:# eval: (add-hook 'write-file-hooks 'time-stamp)
py-compile:# time-stamp-start: "scriptversion="
py-compile:# time-stamp-format: "%:y-%02m-%02d.%02H"
py-compile:# time-stamp-end: "$"
README:There are packages for most linuxes and OS X. There is a pre-compiled windows
README:----------------------
README:The easiest route is to use mingw/msys. This provides a GNU-style
README:You can also cross-compile from a unix system to windows.
README:---------------------
README:----------------------
README:	$ CFLAGS="-g -Wall" CXXFLAGS="-g -Wall" ./configure --prefix=/home/john/vips --enable-gtk-doc
README:VIPS has to have gettext, glib-2.x and libxml-2.0. The build system needs 
README:pkg-config and gnu make.
README:---------------------
README:Optional support libraries ... also try ./configure --help to see flags for
README:VIPS looks for stuff with pkg-config, so make sure pkg-config can find these
README:extra libraries. libtiff and libjpeg do not generally use pkg-config, so 
README:	./configure --prefix=/Users/john/vips \
README:		--with-tiff-includes=/opt/local/include \
README:		--with-tiff-libraries=/opt/local/lib \
README:		--with-jpeg-includes=/opt/local/include \
README:		--with-jpeg-libraries=/opt/local/lib
README:	CFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \
README:		CXXFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \
README:		./configure --without-python --prefix=/Users/john/vips 
README:	package pangoft2 in "pkg-config --list-all"
README:python-dev
README:----------
swig/python/setup.py.in:# vim: set fileencoding=latin-1:
swig/python/setup.py.in:configure_flags = '@VIPS_CFLAGS@ @VIPS_INCLUDES@ @VIPS_LIBS@ -I@top_srcdir@/libvips/include -I@top_srcdir@/libvipsCC/include'
swig/python/setup.py.in:	match = re.match ('-D(.*)(=(.*))?', flag)
swig/python/setup.py.in:	match = re.match ('-I(.*)', flag)
swig/python/setup.py.in:	match = re.match ('-L(.*)', flag)
swig/python/setup.py.in:	match = re.match ('-l(.*)', flag)
swig/python/setup.py.in:	match = re.match ('-(.*)', flag)
swig/python/setup.py.in:	description = 'vips-7.x image processing library',
swig/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
swig/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
swig/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
swig/Makefile.in:RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
swig/Makefile.in:	html-recursive info-recursive install-data-recursive \
swig/Makefile.in:	install-dvi-recursive install-exec-recursive \
swig/Makefile.in:	install-html-recursive install-info-recursive \
swig/Makefile.in:	install-pdf-recursive install-ps-recursive install-recursive \
swig/Makefile.in:	installcheck-recursive installdirs-recursive pdf-recursive \
swig/Makefile.in:	ps-recursive uninstall-recursive
swig/Makefile.in:RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
swig/Makefile.in:  distclean-recursive maintainer-clean-recursive
swig/Makefile.in:AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
swig/Makefile.in:	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
swig/Makefile.in:  while test -n "$$dir1"; do \
swig/Makefile.in:    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
swig/Makefile.in:        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
swig/Makefile.in:        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
swig/Makefile.in:        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
swig/Makefile.in:          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
swig/Makefile.in:    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
swig/Makefile.in:all: all-recursive
swig/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
swig/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
swig/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/Makefile'; \
swig/Makefile.in:	  $(AUTOMAKE) --gnu swig/Makefile
swig/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
swig/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
swig/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
swig/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
swig/Makefile.in:mostlyclean-libtool:
swig/Makefile.in:	-rm -f *.lo
swig/Makefile.in:clean-libtool:
swig/Makefile.in:	-rm -rf .libs _libs
swig/Makefile.in:	    *=* | --[!k]*);; \
swig/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
swig/Makefile.in:	    local_target="$$target-am"; \
swig/Makefile.in:	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
swig/Makefile.in:	fi; test -z "$$fail"
swig/Makefile.in:	    *=* | --[!k]*);; \
swig/Makefile.in:	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
swig/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
swig/Makefile.in:	    local_target="$$target-am"; \
swig/Makefile.in:	done && test -z "$$fail"
swig/Makefile.in:tags-recursive:
swig/Makefile.in:ctags-recursive:
swig/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
swig/Makefile.in:	mkid -fID $$unique
swig/Makefile.in:TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
swig/Makefile.in:	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
swig/Makefile.in:	  include_option=--etags-include; \
swig/Makefile.in:	  include_option=--include; \
swig/Makefile.in:	    test ! -f $$subdir/TAGS || \
swig/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
swig/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
swig/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
swig/Makefile.in:	  if test $$# -gt 0; then \
swig/Makefile.in:CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
swig/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
swig/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
swig/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
swig/Makefile.in:distclean-tags:
swig/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
swig/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
swig/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
swig/Makefile.in:			   sort -u` ;; \
swig/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
swig/Makefile.in:	  if test -d $$d/$$file; then \
swig/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
swig/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
swig/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
swig/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
swig/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
swig/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
swig/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
swig/Makefile.in:	    test -f "$(distdir)/$$file" \
swig/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
swig/Makefile.in:	    test -d "$(distdir)/$$subdir" \
swig/Makefile.in:check-am: all-am
swig/Makefile.in:check: check-recursive
swig/Makefile.in:all-am: Makefile
swig/Makefile.in:installdirs: installdirs-recursive
swig/Makefile.in:installdirs-am:
swig/Makefile.in:install: install-recursive
swig/Makefile.in:install-exec: install-exec-recursive
swig/Makefile.in:install-data: install-data-recursive
swig/Makefile.in:uninstall: uninstall-recursive
swig/Makefile.in:install-am: all-am
swig/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
swig/Makefile.in:installcheck: installcheck-recursive
swig/Makefile.in:install-strip:
swig/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
swig/Makefile.in:	  `test -z '$(STRIP)' || \
swig/Makefile.in:mostlyclean-generic:
swig/Makefile.in:clean-generic:
swig/Makefile.in:distclean-generic:
swig/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
swig/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
swig/Makefile.in:maintainer-clean-generic:
swig/Makefile.in:clean: clean-recursive
swig/Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
swig/Makefile.in:distclean: distclean-recursive
swig/Makefile.in:	-rm -f Makefile
swig/Makefile.in:distclean-am: clean-am distclean-generic distclean-tags
swig/Makefile.in:dvi: dvi-recursive
swig/Makefile.in:dvi-am:
swig/Makefile.in:html: html-recursive
swig/Makefile.in:html-am:
swig/Makefile.in:info: info-recursive
swig/Makefile.in:info-am:
swig/Makefile.in:install-data-am:
swig/Makefile.in:install-dvi: install-dvi-recursive
swig/Makefile.in:install-dvi-am:
swig/Makefile.in:install-exec-am:
swig/Makefile.in:install-html: install-html-recursive
swig/Makefile.in:install-html-am:
swig/Makefile.in:install-info: install-info-recursive
swig/Makefile.in:install-info-am:
swig/Makefile.in:install-man:
swig/Makefile.in:install-pdf: install-pdf-recursive
swig/Makefile.in:install-pdf-am:
swig/Makefile.in:install-ps: install-ps-recursive
swig/Makefile.in:install-ps-am:
swig/Makefile.in:installcheck-am:
swig/Makefile.in:maintainer-clean: maintainer-clean-recursive
swig/Makefile.in:	-rm -f Makefile
swig/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
swig/Makefile.in:mostlyclean: mostlyclean-recursive
swig/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
swig/Makefile.in:pdf: pdf-recursive
swig/Makefile.in:pdf-am:
swig/Makefile.in:ps: ps-recursive
swig/Makefile.in:ps-am:
swig/Makefile.in:uninstall-am:
swig/Makefile.in:.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
swig/Makefile.in:	install-am install-strip tags-recursive
swig/Makefile.in:	all all-am check check-am clean clean-generic clean-libtool \
swig/Makefile.in:	ctags ctags-recursive distclean distclean-generic \
swig/Makefile.in:	distclean-libtool distclean-tags distdir dvi dvi-am html \
swig/Makefile.in:	html-am info info-am install install-am install-data \
swig/Makefile.in:	install-data-am install-dvi install-dvi-am install-exec \
swig/Makefile.in:	install-exec-am install-html install-html-am install-info \
swig/Makefile.in:	install-info-am install-man install-pdf install-pdf-am \
swig/Makefile.in:	install-ps install-ps-am install-strip installcheck \
swig/Makefile.in:	installcheck-am installdirs installdirs-am maintainer-clean \
swig/Makefile.in:	maintainer-clean-generic mostlyclean mostlyclean-generic \
swig/Makefile.in:	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
swig/Makefile.in:	uninstall uninstall-am
swig/vipsCC/Makefile.am:	-I${top_srcdir}/libvips/include \
swig/vipsCC/Makefile.am:	-I${top_srcdir}/libvipsCC/include \
swig/vipsCC/Makefile.am:	cpp -DSWIG -E $(top_srcdir)/libvipsCC/include/vips/VImage.h > VImage.h
swig/vipsCC/Makefile.am:	swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $<
swig/vipsCC/Makefile.am:	swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $<
swig/vipsCC/Makefile.am:	swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $<
swig/vipsCC/Makefile.am:	swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $<
swig/vipsCC/Makefile.am:vimagemodule_la_LDFLAGS = -module -avoid-version 
swig/vipsCC/Makefile.am:vdisplaymodule_la_LDFLAGS = -module -avoid-version 
swig/vipsCC/Makefile.am:verrormodule_la_LDFLAGS = -module -avoid-version 
swig/vipsCC/Makefile.am:vmaskmodule_la_LDFLAGS = -module -avoid-version 
swig/vipsCC/VImage.py:# Do not make changes to this file unless you know what you are doing--modify
swig/vipsCC/VImage.py:# This file is compatible with both classic and new-style classes.
swig/vipsCC/VImage.py:    def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined - class is abstract")
swig/vipsCC/VImage.py:    raise ValueError ('unsupported vips -> pil image')
swig/vipsCC/VImage.py:    raise ValueError ('unsupported pil -> vips image')
swig/vipsCC/vimagemodule.cxx:/* ----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * changes to this file unless you know what you are doing--modify the SWIG 
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:     if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
swig/vipsCC/vimagemodule.cxx:   Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
swig/vipsCC/vimagemodule.cxx:      food(1)   // cast rank '1'  (1 -> 1.0)
swig/vipsCC/vimagemodule.cxx:#define SWIG_ERROR                 (-1)
swig/vipsCC/vimagemodule.cxx:/* Cast-Rank Mode */
swig/vipsCC/vimagemodule.cxx:#  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
swig/vipsCC/vimagemodule.cxx:#else /* no cast-rank mode */
swig/vipsCC/vimagemodule.cxx:    if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
swig/vipsCC/vimagemodule.cxx:  return (int)((l1 - f1) - (l2 - f2));
swig/vipsCC/vimagemodule.cxx:  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
swig/vipsCC/vimagemodule.cxx:    swig_cast_info *iter = ty->cast;
swig/vipsCC/vimagemodule.cxx:      if (strcmp(iter->type->name, c) == 0) {
swig/vipsCC/vimagemodule.cxx:        if (iter == ty->cast)
swig/vipsCC/vimagemodule.cxx:        iter->prev->next = iter->next;
swig/vipsCC/vimagemodule.cxx:        if (iter->next)
swig/vipsCC/vimagemodule.cxx:          iter->next->prev = iter->prev;
swig/vipsCC/vimagemodule.cxx:        iter->next = ty->cast;
swig/vipsCC/vimagemodule.cxx:        iter->prev = 0;
swig/vipsCC/vimagemodule.cxx:        if (ty->cast) ty->cast->prev = iter;
swig/vipsCC/vimagemodule.cxx:        ty->cast = iter;
swig/vipsCC/vimagemodule.cxx:      iter = iter->next;
swig/vipsCC/vimagemodule.cxx:    swig_cast_info *iter = ty->cast;
swig/vipsCC/vimagemodule.cxx:      if (iter->type == from) {
swig/vipsCC/vimagemodule.cxx:        if (iter == ty->cast)
swig/vipsCC/vimagemodule.cxx:        iter->prev->next = iter->next;
swig/vipsCC/vimagemodule.cxx:        if (iter->next)
swig/vipsCC/vimagemodule.cxx:          iter->next->prev = iter->prev;
swig/vipsCC/vimagemodule.cxx:        iter->next = ty->cast;
swig/vipsCC/vimagemodule.cxx:        iter->prev = 0;
swig/vipsCC/vimagemodule.cxx:        if (ty->cast) ty->cast->prev = iter;
swig/vipsCC/vimagemodule.cxx:        ty->cast = iter;
swig/vipsCC/vimagemodule.cxx:      iter = iter->next;
swig/vipsCC/vimagemodule.cxx:  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
swig/vipsCC/vimagemodule.cxx:  if (!ty || !ty->dcast) return ty;
swig/vipsCC/vimagemodule.cxx:  while (ty && (ty->dcast)) {
swig/vipsCC/vimagemodule.cxx:    ty = (*ty->dcast)(ptr);
swig/vipsCC/vimagemodule.cxx:  return ty->name;
swig/vipsCC/vimagemodule.cxx:     type, separated by vertical-bar characters.  We choose
swig/vipsCC/vimagemodule.cxx:  if (type->str != NULL) {
swig/vipsCC/vimagemodule.cxx:    const char *last_name = type->str;
swig/vipsCC/vimagemodule.cxx:    for (s = type->str; *s; s++)
swig/vipsCC/vimagemodule.cxx:    return type->name;
swig/vipsCC/vimagemodule.cxx:  swig_cast_info *cast = ti->cast;
swig/vipsCC/vimagemodule.cxx:  /* if (ti->clientdata == clientdata) return; */
swig/vipsCC/vimagemodule.cxx:  ti->clientdata = clientdata;
swig/vipsCC/vimagemodule.cxx:    if (!cast->converter) {
swig/vipsCC/vimagemodule.cxx:      swig_type_info *tc = cast->type;
swig/vipsCC/vimagemodule.cxx:      if (!tc->clientdata) {
swig/vipsCC/vimagemodule.cxx:    cast = cast->next;
swig/vipsCC/vimagemodule.cxx:  ti->owndata = 1;
swig/vipsCC/vimagemodule.cxx:    if (iter->size) {
swig/vipsCC/vimagemodule.cxx:      register size_t r = iter->size - 1;
swig/vipsCC/vimagemodule.cxx:	const char *iname = iter->types[i]->name;
swig/vipsCC/vimagemodule.cxx:	    return iter->types[i];
swig/vipsCC/vimagemodule.cxx:	      r = i - 1;
swig/vipsCC/vimagemodule.cxx:    iter = iter->next;
swig/vipsCC/vimagemodule.cxx:      for (; i < iter->size; ++i) {
swig/vipsCC/vimagemodule.cxx:	if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
swig/vipsCC/vimagemodule.cxx:	  return iter->types[i];
swig/vipsCC/vimagemodule.cxx:      iter = iter->next;
swig/vipsCC/vimagemodule.cxx:      uu = ((d - '0') << 4);
swig/vipsCC/vimagemodule.cxx:      uu = ((d - ('a'-10)) << 4);
swig/vipsCC/vimagemodule.cxx:      uu |= (d - '0');
swig/vipsCC/vimagemodule.cxx:      uu |= (d - ('a'-10));
swig/vipsCC/vimagemodule.cxx:  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
swig/vipsCC/vimagemodule.cxx:#define  SWIG_UnknownError    	   -1 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_IOError        	   -2 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_RuntimeError   	   -3 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_IndexError     	   -4 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_TypeError      	   -5 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_DivisionByZero 	   -6 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_OverflowError  	   -7 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_SyntaxError    	   -8 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_ValueError     	   -9 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_SystemError    	   -10
swig/vipsCC/vimagemodule.cxx:#define  SWIG_AttributeError 	   -11
swig/vipsCC/vimagemodule.cxx:#define  SWIG_MemoryError    	   -12 
swig/vipsCC/vimagemodule.cxx:#define  SWIG_NullReferenceError   -13
swig/vipsCC/vimagemodule.cxx:#  define Py_TYPE(op) ((op)->ob_type)
swig/vipsCC/vimagemodule.cxx:/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:} /* cc-mode */
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * It is exported to the generated module, used for -fastproxy
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:{ /* cc-mode */
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * of SWIG, and the README file for authors - http://www.swig.org/release.html.
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:} /* cc-mode */
swig/vipsCC/vimagemodule.cxx:  SwigPyClientData *data = (SwigPyClientData *)ty->clientdata;
swig/vipsCC/vimagemodule.cxx:  return data ? data->implicitconv : 0;
swig/vipsCC/vimagemodule.cxx:  SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0;
swig/vipsCC/vimagemodule.cxx:  PyObject *klass = data ? data->klass : 0;
swig/vipsCC/vimagemodule.cxx:    data->klass = obj;
swig/vipsCC/vimagemodule.cxx:    Py_INCREF(data->klass);
swig/vipsCC/vimagemodule.cxx:      data->newraw = 0;
swig/vipsCC/vimagemodule.cxx:      data->newargs = obj;
swig/vipsCC/vimagemodule.cxx:      data->newraw = 0;
swig/vipsCC/vimagemodule.cxx:      data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__");
swig/vipsCC/vimagemodule.cxx:      if (data->newraw) {
swig/vipsCC/vimagemodule.cxx:	Py_INCREF(data->newraw);
swig/vipsCC/vimagemodule.cxx:	data->newargs = PyTuple_New(1);
swig/vipsCC/vimagemodule.cxx:	PyTuple_SetItem(data->newargs, 0, obj);
swig/vipsCC/vimagemodule.cxx:	data->newargs = obj;
swig/vipsCC/vimagemodule.cxx:      Py_INCREF(data->newargs);
swig/vipsCC/vimagemodule.cxx:    data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__");
swig/vipsCC/vimagemodule.cxx:      data->destroy = 0;
swig/vipsCC/vimagemodule.cxx:    if (data->destroy) {
swig/vipsCC/vimagemodule.cxx:      Py_INCREF(data->destroy);
swig/vipsCC/vimagemodule.cxx:      flags = PyCFunction_GET_FLAGS(data->destroy);
swig/vipsCC/vimagemodule.cxx:      data->delargs = !(flags & (METH_O));
swig/vipsCC/vimagemodule.cxx:      data->delargs = 0;
swig/vipsCC/vimagemodule.cxx:      data->delargs = 0;
swig/vipsCC/vimagemodule.cxx:    data->implicitconv = 0;
swig/vipsCC/vimagemodule.cxx:  Py_XDECREF(data->newraw);
swig/vipsCC/vimagemodule.cxx:  Py_XDECREF(data->newargs);
swig/vipsCC/vimagemodule.cxx:  Py_XDECREF(data->destroy);
swig/vipsCC/vimagemodule.cxx:  return PyLong_FromVoidPtr(v->ptr);
swig/vipsCC/vimagemodule.cxx:  const char *name = SWIG_TypePrettyName(v->ty);
swig/vipsCC/vimagemodule.cxx:  if (v->next) {
swig/vipsCC/vimagemodule.cxx:    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
swig/vipsCC/vimagemodule.cxx:    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args);
swig/vipsCC/vimagemodule.cxx:  return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ?
swig/vipsCC/vimagemodule.cxx:  void *i = v->ptr;
swig/vipsCC/vimagemodule.cxx:  void *j = w->ptr;
swig/vipsCC/vimagemodule.cxx:  return (i < j) ? -1 : ((i > j) ? 1 : 0);
swig/vipsCC/vimagemodule.cxx:    || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0);
swig/vipsCC/vimagemodule.cxx:  PyObject *next = sobj->next;
swig/vipsCC/vimagemodule.cxx:  if (sobj->own == SWIG_POINTER_OWN) {
swig/vipsCC/vimagemodule.cxx:    swig_type_info *ty = sobj->ty;
swig/vipsCC/vimagemodule.cxx:    SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
swig/vipsCC/vimagemodule.cxx:    PyObject *destroy = data ? data->destroy : 0;
swig/vipsCC/vimagemodule.cxx:      if (data->delargs) {
swig/vipsCC/vimagemodule.cxx:	PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0);
swig/vipsCC/vimagemodule.cxx:  sobj->next = next;
swig/vipsCC/vimagemodule.cxx:  if (sobj->next) {    
swig/vipsCC/vimagemodule.cxx:    Py_INCREF(sobj->next);
swig/vipsCC/vimagemodule.cxx:    return sobj->next;
swig/vipsCC/vimagemodule.cxx:  sobj->own = 0;
swig/vipsCC/vimagemodule.cxx:  sobj->own = SWIG_POINTER_OWN;
swig/vipsCC/vimagemodule.cxx:      PyObject *obj = PyBool_FromLong(sobj->own);
swig/vipsCC/vimagemodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */
swig/vipsCC/vimagemodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */
swig/vipsCC/vimagemodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */
swig/vipsCC/vimagemodule.cxx:    0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */
swig/vipsCC/vimagemodule.cxx:	0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/vimagemodule.cxx:    sobj->ptr  = ptr;
swig/vipsCC/vimagemodule.cxx:    sobj->ty   = ty;
swig/vipsCC/vimagemodule.cxx:    sobj->own  = own;
swig/vipsCC/vimagemodule.cxx:    sobj->next = 0;
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
swig/vipsCC/vimagemodule.cxx:  fputs(v->ty->name,fp); 
swig/vipsCC/vimagemodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
swig/vipsCC/vimagemodule.cxx:    return SWIG_Python_str_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
swig/vipsCC/vimagemodule.cxx:    return SWIG_Python_str_FromFormat("<Swig Packed %s>", v->ty->name);
swig/vipsCC/vimagemodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
swig/vipsCC/vimagemodule.cxx:    return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name);
swig/vipsCC/vimagemodule.cxx:    return SWIG_Python_str_FromChar(v->ty->name);
swig/vipsCC/vimagemodule.cxx:  size_t i = v->size;
swig/vipsCC/vimagemodule.cxx:  size_t j = w->size;
swig/vipsCC/vimagemodule.cxx:  int s = (i < j) ? -1 : ((i > j) ? 1 : 0);
swig/vipsCC/vimagemodule.cxx:  return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
swig/vipsCC/vimagemodule.cxx:  return ((op)->ob_type == _PySwigPacked_type()) 
swig/vipsCC/vimagemodule.cxx:    || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0);
swig/vipsCC/vimagemodule.cxx:    free(sobj->pack);
swig/vipsCC/vimagemodule.cxx:	0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/vimagemodule.cxx:      sobj->pack = pack;
swig/vipsCC/vimagemodule.cxx:      sobj->ty   = ty;
swig/vipsCC/vimagemodule.cxx:      sobj->size = size;
swig/vipsCC/vimagemodule.cxx:    if (sobj->size != size) return 0;
swig/vipsCC/vimagemodule.cxx:    memcpy(ptr, sobj->pack, size);
swig/vipsCC/vimagemodule.cxx:    return sobj->ty;
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:      int oldown = sobj->own;
swig/vipsCC/vimagemodule.cxx:      sobj->own = own;
swig/vipsCC/vimagemodule.cxx:      void *vptr = sobj->ptr;
swig/vipsCC/vimagemodule.cxx:	swig_type_info *to = sobj->ty;
swig/vipsCC/vimagemodule.cxx:	  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
swig/vipsCC/vimagemodule.cxx:	    sobj = (SwigPyObject *)sobj->next;
swig/vipsCC/vimagemodule.cxx:        *own = *own | sobj->own;
swig/vipsCC/vimagemodule.cxx:	sobj->own = 0;
swig/vipsCC/vimagemodule.cxx:	SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
swig/vipsCC/vimagemodule.cxx:	if (data && !data->implicitconv) {
swig/vipsCC/vimagemodule.cxx:	  PyObject *klass = data->klass;
swig/vipsCC/vimagemodule.cxx:	    data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
swig/vipsCC/vimagemodule.cxx:	    data->implicitconv = 0;
swig/vipsCC/vimagemodule.cxx:		    iobj->own = 0;
swig/vipsCC/vimagemodule.cxx:    const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
swig/vipsCC/vimagemodule.cxx:      desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
swig/vipsCC/vimagemodule.cxx:      swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:  PyObject *newraw = data->newraw;
swig/vipsCC/vimagemodule.cxx:    inst = PyObject_Call(newraw, data->newargs, NULL);
swig/vipsCC/vimagemodule.cxx:    inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None);
swig/vipsCC/vimagemodule.cxx:    Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
swig/vipsCC/vimagemodule.cxx:    inst = PyInstance_NewRaw(data->newargs, dict);
swig/vipsCC/vimagemodule.cxx:  inst = PyInstance_NewRaw(data->newargs, dict);
swig/vipsCC/vimagemodule.cxx:  inst->in_class = (PyClassObject *)data->newargs;
swig/vipsCC/vimagemodule.cxx:  Py_INCREF(inst->in_class);
swig/vipsCC/vimagemodule.cxx:  inst->in_dict = PyDict_New();
swig/vipsCC/vimagemodule.cxx:  if (inst->in_dict == NULL) {
swig/vipsCC/vimagemodule.cxx:  inst->in_weakreflist = NULL;
swig/vipsCC/vimagemodule.cxx:  PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this);
swig/vipsCC/vimagemodule.cxx:    SwigPyClientData *clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------*
swig/vipsCC/vimagemodule.cxx: * -----------------------------------------------------------------------------*/
swig/vipsCC/vimagemodule.cxx:		    "PyModule_AddObject() needs non-NULL value");
swig/vipsCC/vimagemodule.cxx:    /* Internal error -- modules must have a dict! */
swig/vipsCC/vimagemodule.cxx:  swig_type_info **types = swig_module->types;
swig/vipsCC/vimagemodule.cxx:  for (i =0; i < swig_module->size; ++i) {
swig/vipsCC/vimagemodule.cxx:    if (ty->owndata) {
swig/vipsCC/vimagemodule.cxx:      SwigPyClientData *data = (SwigPyClientData *) ty->clientdata;
swig/vipsCC/vimagemodule.cxx:  swig_type_info *ty = v ? v->ty : 0;
swig/vipsCC/vimagemodule.cxx:  return ty ? ty->str : (char*)"";
swig/vipsCC/vimagemodule.cxx:      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
swig/vipsCC/vimagemodule.cxx:  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
swig/vipsCC/vimagemodule.cxx:{ /* cc-mode */
swig/vipsCC/vimagemodule.cxx:/* -------- TYPES TABLE (BEGIN) -------- */
swig/vipsCC/vimagemodule.cxx:/* -------- TYPES TABLE (END) -------- */
swig/vipsCC/vimagemodule.cxx:#  error "This python version requires swig to be run with the '-classic' option"
swig/vipsCC/vimagemodule.cxx:/*-----------------------------------------------
swig/vipsCC/vimagemodule.cxx:  ------------------------------------------------*/
swig/vipsCC/vimagemodule.cxx:    PyObject *operator->() const
swig/vipsCC/vimagemodule.cxx:      SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads
swig/vipsCC/vimagemodule.cxx:      SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads       
swig/vipsCC/vimagemodule.cxx:      return  (n > 0) ?  incr(n) : decr(-n);
swig/vipsCC/vimagemodule.cxx:    SwigPyIterator& operator -= (ptrdiff_t n)
swig/vipsCC/vimagemodule.cxx:      return *advance(-n);
swig/vipsCC/vimagemodule.cxx:      return copy()->advance(n);
swig/vipsCC/vimagemodule.cxx:    SwigPyIterator* operator - (ptrdiff_t n) const
swig/vipsCC/vimagemodule.cxx:      return copy()->advance(-n);
swig/vipsCC/vimagemodule.cxx:    ptrdiff_t operator - (const SwigPyIterator& x) const
swig/vipsCC/vimagemodule.cxx:   double rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
swig/vipsCC/vimagemodule.cxx:       diff = x - rd;
swig/vipsCC/vimagemodule.cxx:       diff = rd - x;
swig/vipsCC/vimagemodule.cxx:      if ((size_t) (-i) <= size)
swig/vipsCC/vimagemodule.cxx:      if ((size_t) (-i) <= size) {
swig/vipsCC/vimagemodule.cxx:    typename Sequence::iterator pos = self->begin();
swig/vipsCC/vimagemodule.cxx:    std::advance(pos, check_index(i,self->size()));
swig/vipsCC/vimagemodule.cxx:    typename Sequence::const_iterator pos = self->begin();
swig/vipsCC/vimagemodule.cxx:    std::advance(pos, check_index(i,self->size()));
swig/vipsCC/vimagemodule.cxx:    typename Sequence::size_type size = self->size();
swig/vipsCC/vimagemodule.cxx:      typename Sequence::const_iterator vb = self->begin();
swig/vipsCC/vimagemodule.cxx:      typename Sequence::const_iterator ve = self->begin();
swig/vipsCC/vimagemodule.cxx:    typename Sequence::size_type size = self->size();
swig/vipsCC/vimagemodule.cxx:    size_t ssize = jj - ii;
swig/vipsCC/vimagemodule.cxx:      typename Sequence::iterator sb = self->begin();
swig/vipsCC/vimagemodule.cxx:      std::advance(vmid, jj - ii);
swig/vipsCC/vimagemodule.cxx:      self->insert(std::copy(v.begin(), vmid, sb), vmid, v.end());
swig/vipsCC/vimagemodule.cxx:      typename Sequence::iterator sb = self->begin();
swig/vipsCC/vimagemodule.cxx:      typename Sequence::iterator se = self->begin();
swig/vipsCC/vimagemodule.cxx:      self->erase(sb,se);
swig/vipsCC/vimagemodule.cxx:      self->insert(sb, v.begin(), v.end());
swig/vipsCC/vimagemodule.cxx:    typename Sequence::size_type size = self->size();
swig/vipsCC/vimagemodule.cxx:      typename Sequence::iterator sb = self->begin();
swig/vipsCC/vimagemodule.cxx:      typename Sequence::iterator se = self->begin();
swig/vipsCC/vimagemodule.cxx:      self->erase(sb,se);
swig/vipsCC/vimagemodule.cxx:	return (current == iters->get_current());
swig/vipsCC/vimagemodule.cxx:	return std::distance(current, iters->get_current());
swig/vipsCC/vimagemodule.cxx:      while (n--) {
swig/vipsCC/vimagemodule.cxx:      while (n--) {
swig/vipsCC/vimagemodule.cxx:	--base::current;
swig/vipsCC/vimagemodule.cxx:      while (n--) {
swig/vipsCC/vimagemodule.cxx:      while (n--) {
swig/vipsCC/vimagemodule.cxx:	  --base::current;
swig/vipsCC/vimagemodule.cxx:    const T* operator->() const { return &m_value; }
swig/vipsCC/vimagemodule.cxx:    operator->() const {
swig/vipsCC/vimagemodule.cxx:    self& operator -- ()
swig/vipsCC/vimagemodule.cxx:      --_index;
swig/vipsCC/vimagemodule.cxx:    self& operator -= (difference_type n)
swig/vipsCC/vimagemodule.cxx:      _index -= n;
swig/vipsCC/vimagemodule.cxx:    self operator -(difference_type n) const
swig/vipsCC/vimagemodule.cxx:      return self(_seq, _index - n);
swig/vipsCC/vimagemodule.cxx:    difference_type operator - (const self& ri) const
swig/vipsCC/vimagemodule.cxx:      return _index - ri._index;
swig/vipsCC/vimagemodule.cxx:#   define LLONG_MIN (-LLONG_MAX - 1LL)
swig/vipsCC/vimagemodule.cxx:    // seq->assign(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented
swig/vipsCC/vimagemodule.cxx:      seq->insert(seq->end(),(value_type)(*it));
swig/vipsCC/vimagemodule.cxx:      if (desc && desc->clientdata) {
swig/vipsCC/vimagemodule.cxx:      return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF);
swig/vipsCC/vimagemodule.cxx:      return !(self->empty());
swig/vipsCC/vimagemodule.cxx:      return !(self->empty());
swig/vipsCC/vimagemodule.cxx:      return self->size();
swig/vipsCC/vimagemodule.cxx:      if (self->size() == 0)
swig/vipsCC/vimagemodule.cxx:      std::vector<int,std::allocator< int > >::value_type x = self->back();
swig/vipsCC/vimagemodule.cxx:      self->pop_back();
swig/vipsCC/vimagemodule.cxx:      self->erase(swig::getpos(self,i));
swig/vipsCC/vimagemodule.cxx:      PySlice_GetIndices(slice, self->size(), &i, &j, &step);
swig/vipsCC/vimagemodule.cxx:      PySlice_GetIndices(slice, self->size(), &i, &j, &step);
swig/vipsCC/vimagemodule.cxx:      PySlice_GetIndices(slice, self->size(), &i, &j, &step);
swig/vipsCC/vimagemodule.cxx:      self->push_back(x);
swig/vipsCC/vimagemodule.cxx:      return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF);
swig/vipsCC/vimagemodule.cxx:      return !(self->empty());
swig/vipsCC/vimagemodule.cxx:      return !(self->empty());
swig/vipsCC/vimagemodule.cxx:      return self->size();
swig/vipsCC/vimagemodule.cxx:      if (self->size() == 0)
swig/vipsCC/vimagemodule.cxx:      std::vector<double,std::allocator< double > >::value_type x = self->back();
swig/vipsCC/vimagemodule.cxx:      self->pop_back();
swig/vipsCC/vimagemodule.cxx:      self->erase(swig::getpos(self,i));
swig/vipsCC/vimagemodule.cxx:      PySlice_GetIndices(slice, self->size(), &i, &j, &step);
swig/vipsCC/vimagemodule.cxx:      PySlice_GetIndices(slice, self->size(), &i, &j, &step);
swig/vipsCC/vimagemodule.cxx:      PySlice_GetIndices(slice, self->size(), &i, &j, &step);
swig/vipsCC/vimagemodule.cxx:      self->push_back(x);
swig/vipsCC/vimagemodule.cxx:      return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF);
swig/vipsCC/vimagemodule.cxx:      return !(self->empty());
swig/vipsCC/vimagemodule.cxx:      return !(self->empty());
swig/vipsCC/vimagemodule.cxx:      return self->size();
swig/vipsCC/vimagemodule.cxx:      if (self->size() == 0)
swig/vipsCC/vimagemodule.cxx:      std::vector<vips::VImage,std::allocator< vips::VImage > >::value_type x = self->back();
swig/vipsCC/vimagemodule.cxx:      self->pop_back();
swig/vipsCC/vimagemodule.cxx:      self->erase(swig::getpos(self,i));
swig/vipsCC/vimagemodule.cxx:      PySlice_GetIndices(slice, self->size(), &i, &j, &step);
swig/vipsCC/vimagemodule.cxx:      PySlice_GetIndices(slice, self->size(), &i, &j, &step);
swig/vipsCC/vimagemodule.cxx:      PySlice_GetIndices(slice, self->size(), &i, &j, &step);
swig/vipsCC/vimagemodule.cxx:      self->push_back(x);
swig/vipsCC/vimagemodule.cxx:           representation of string in Python 3 is UCS-2/UCS-4 but we require
swig/vipsCC/vimagemodule.cxx:           a UTF-8 representation.
swig/vipsCC/vimagemodule.cxx:    if ((v < -FLT_MAX || v > FLT_MAX)) {
swig/vipsCC/vimagemodule.cxx:    buffer.data = self->data ();
swig/vipsCC/vimagemodule.cxx:    buffer.size = (size_t) self->Xsize () * self->Ysize () * 
swig/vipsCC/vimagemodule.cxx:        IM_IMAGE_SIZEOF_PEL (self->image ());
swig/vipsCC/vimagemodule.cxx:    vips_memory = self->data ();
swig/vipsCC/vimagemodule.cxx:    *buffer_len = (size_t) self->Xsize () * self->Ysize () * 
swig/vipsCC/vimagemodule.cxx:      IM_IMAGE_SIZEOF_PEL (self->image ());
swig/vipsCC/vimagemodule.cxx:      if (val) *val = new std::string(buf, size - 1);
swig/vipsCC/vimagemodule.cxx:/* Command-line args during parse.
swig/vipsCC/vimagemodule.cxx:  printf ("args_print: argc = %d\n", args->argc);
swig/vipsCC/vimagemodule.cxx:  for (i = 0; i < args->argc + 1; i++)
swig/vipsCC/vimagemodule.cxx:    printf ("\t%2d)\t%s\n", i, args->argv[i]);
swig/vipsCC/vimagemodule.cxx:  for (i = 0; i < args->n; i++)
swig/vipsCC/vimagemodule.cxx:    IM_FREE (args->str[i]);
swig/vipsCC/vimagemodule.cxx:  args->n = 0;
swig/vipsCC/vimagemodule.cxx:  args->argc = 0;
swig/vipsCC/vimagemodule.cxx:  IM_FREE (args->str);
swig/vipsCC/vimagemodule.cxx:  IM_FREE (args->argv);
swig/vipsCC/vimagemodule.cxx:  args->n = 0;
swig/vipsCC/vimagemodule.cxx:  args->str = NULL;
swig/vipsCC/vimagemodule.cxx:  args->argc = 0;
swig/vipsCC/vimagemodule.cxx:  args->argv = NULL;
swig/vipsCC/vimagemodule.cxx:  args->str = g_new (char *, n);
swig/vipsCC/vimagemodule.cxx:    args->str[i] = g_strdup (PyString_AsString (PyList_GetItem (av, i)));
swig/vipsCC/vimagemodule.cxx:  args->n = n;
swig/vipsCC/vimagemodule.cxx:  args->argc = n;
swig/vipsCC/vimagemodule.cxx:  args->argv = g_new (char *, n + 1);
swig/vipsCC/vimagemodule.cxx:    args->argv[i] = args->str[i];
swig/vipsCC/vimagemodule.cxx:  args->argv[i] = NULL;
swig/vipsCC/vimagemodule.cxx:    result = (PyObject *)((swig::SwigPyIterator const *)arg1)->value();
swig/vipsCC/vimagemodule.cxx:    result = (swig::SwigPyIterator *)(arg1)->incr(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (swig::SwigPyIterator *)(arg1)->incr();
swig/vipsCC/vimagemodule.cxx:    result = (swig::SwigPyIterator *)(arg1)->decr(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (swig::SwigPyIterator *)(arg1)->decr();
swig/vipsCC/vimagemodule.cxx:    result = ((swig::SwigPyIterator const *)arg1)->distance((swig::SwigPyIterator const &)*arg2);
swig/vipsCC/vimagemodule.cxx:    result = (bool)((swig::SwigPyIterator const *)arg1)->equal((swig::SwigPyIterator const &)*arg2);
swig/vipsCC/vimagemodule.cxx:  result = (swig::SwigPyIterator *)((swig::SwigPyIterator const *)arg1)->copy();
swig/vipsCC/vimagemodule.cxx:    result = (PyObject *)(arg1)->next();
swig/vipsCC/vimagemodule.cxx:    result = (PyObject *)(arg1)->__next__();
swig/vipsCC/vimagemodule.cxx:    result = (PyObject *)(arg1)->previous();
swig/vipsCC/vimagemodule.cxx:    result = (swig::SwigPyIterator *)(arg1)->advance(arg2);
swig/vipsCC/vimagemodule.cxx:  result = (bool)((swig::SwigPyIterator const *)arg1)->operator ==((swig::SwigPyIterator const &)*arg2);
swig/vipsCC/vimagemodule.cxx:  result = (bool)((swig::SwigPyIterator const *)arg1)->operator !=((swig::SwigPyIterator const &)*arg2);
swig/vipsCC/vimagemodule.cxx:    result = (swig::SwigPyIterator *) &(arg1)->operator +=(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (swig::SwigPyIterator *) &(arg1)->operator -=(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (swig::SwigPyIterator *)((swig::SwigPyIterator const *)arg1)->operator +(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (swig::SwigPyIterator *)((swig::SwigPyIterator const *)arg1)->operator -(arg2);
swig/vipsCC/vimagemodule.cxx:  result = ((swig::SwigPyIterator const *)arg1)->operator -((swig::SwigPyIterator const &)*arg2);
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_ValueError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_ValueError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:  result = (bool)((std::vector< int > const *)arg1)->empty();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< int > const *)arg1)->size();
swig/vipsCC/vimagemodule.cxx:  (arg1)->clear();
swig/vipsCC/vimagemodule.cxx:  (arg1)->swap(*arg2);
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< int > const *)arg1)->get_allocator();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< int > const *)arg1)->begin();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< int > const *)arg1)->end();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< int > const *)arg1)->rbegin();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< int > const *)arg1)->rend();
swig/vipsCC/vimagemodule.cxx:  (arg1)->pop_back();
swig/vipsCC/vimagemodule.cxx:  (arg1)->resize(arg2);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->erase(arg2);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:      arg3 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->erase(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:  (arg1)->push_back((std::vector< int >::value_type const &)*arg2);
swig/vipsCC/vimagemodule.cxx:  result = (std::vector< int >::value_type *) &((std::vector< int > const *)arg1)->front();
swig/vipsCC/vimagemodule.cxx:  result = (std::vector< int >::value_type *) &((std::vector< int > const *)arg1)->back();
swig/vipsCC/vimagemodule.cxx:  (arg1)->assign(arg2,(std::vector< int >::value_type const &)*arg3);
swig/vipsCC/vimagemodule.cxx:  (arg1)->resize(arg2,(std::vector< int >::value_type const &)*arg3);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->insert(arg2,(std::vector< int >::value_type const &)*arg3);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  (arg1)->insert(arg2,arg3,(std::vector< int >::value_type const &)*arg4);
swig/vipsCC/vimagemodule.cxx:  (arg1)->reserve(arg2);
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< int > const *)arg1)->capacity();
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_ValueError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_ValueError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:  result = (bool)((std::vector< double > const *)arg1)->empty();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< double > const *)arg1)->size();
swig/vipsCC/vimagemodule.cxx:  (arg1)->clear();
swig/vipsCC/vimagemodule.cxx:  (arg1)->swap(*arg2);
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< double > const *)arg1)->get_allocator();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< double > const *)arg1)->begin();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< double > const *)arg1)->end();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< double > const *)arg1)->rbegin();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< double > const *)arg1)->rend();
swig/vipsCC/vimagemodule.cxx:  (arg1)->pop_back();
swig/vipsCC/vimagemodule.cxx:  (arg1)->resize(arg2);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->erase(arg2);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:      arg3 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->erase(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:  (arg1)->push_back((std::vector< double >::value_type const &)*arg2);
swig/vipsCC/vimagemodule.cxx:  result = (std::vector< double >::value_type *) &((std::vector< double > const *)arg1)->front();
swig/vipsCC/vimagemodule.cxx:  result = (std::vector< double >::value_type *) &((std::vector< double > const *)arg1)->back();
swig/vipsCC/vimagemodule.cxx:  (arg1)->assign(arg2,(std::vector< double >::value_type const &)*arg3);
swig/vipsCC/vimagemodule.cxx:  (arg1)->resize(arg2,(std::vector< double >::value_type const &)*arg3);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->insert(arg2,(std::vector< double >::value_type const &)*arg3);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  (arg1)->insert(arg2,arg3,(std::vector< double >::value_type const &)*arg4);
swig/vipsCC/vimagemodule.cxx:  (arg1)->reserve(arg2);
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< double > const *)arg1)->capacity();
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_ValueError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_ValueError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:    SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
swig/vipsCC/vimagemodule.cxx:  result = (bool)((std::vector< vips::VImage > const *)arg1)->empty();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< vips::VImage > const *)arg1)->size();
swig/vipsCC/vimagemodule.cxx:  (arg1)->clear();
swig/vipsCC/vimagemodule.cxx:  (arg1)->swap(*arg2);
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< vips::VImage > const *)arg1)->get_allocator();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< vips::VImage > const *)arg1)->begin();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< vips::VImage > const *)arg1)->end();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< vips::VImage > const *)arg1)->rbegin();
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< vips::VImage > const *)arg1)->rend();
swig/vipsCC/vimagemodule.cxx:  (arg1)->pop_back();
swig/vipsCC/vimagemodule.cxx:  (arg1)->resize(arg2);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->erase(arg2);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:      arg3 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->erase(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:  (arg1)->push_back((std::vector< vips::VImage >::value_type const &)*arg2);
swig/vipsCC/vimagemodule.cxx:  result = (std::vector< vips::VImage >::value_type *) &((std::vector< vips::VImage > const *)arg1)->front();
swig/vipsCC/vimagemodule.cxx:  result = (std::vector< vips::VImage >::value_type *) &((std::vector< vips::VImage > const *)arg1)->back();
swig/vipsCC/vimagemodule.cxx:  (arg1)->assign(arg2,(std::vector< vips::VImage >::value_type const &)*arg3);
swig/vipsCC/vimagemodule.cxx:  (arg1)->resize(arg2,(std::vector< vips::VImage >::value_type const &)*arg3);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->insert(arg2,(std::vector< vips::VImage >::value_type const &)*arg3);
swig/vipsCC/vimagemodule.cxx:      arg2 = iter_t->get_current();
swig/vipsCC/vimagemodule.cxx:  (arg1)->insert(arg2,arg3,(std::vector< vips::VImage >::value_type const &)*arg4);
swig/vipsCC/vimagemodule.cxx:  (arg1)->reserve(arg2);
swig/vipsCC/vimagemodule.cxx:  result = ((std::vector< vips::VImage > const *)arg1)->capacity();
swig/vipsCC/vimagemodule.cxx:    result = (vips::VImage *) &(arg1)->operator =((vips::VImage const &)*arg2);
swig/vipsCC/vimagemodule.cxx:  result = (_VipsImage *)((vips::VImage const *)arg1)->image();
swig/vipsCC/vimagemodule.cxx:    result = (void *)((vips::VImage const *)arg1)->data();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->write(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->write((char const *)arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->write();
swig/vipsCC/vimagemodule.cxx:  (arg1)->debug_print();
swig/vipsCC/vimagemodule.cxx:  result = (int)(arg1)->Xsize();
swig/vipsCC/vimagemodule.cxx:  result = (int)(arg1)->Ysize();
swig/vipsCC/vimagemodule.cxx:  result = (int)(arg1)->Bands();
swig/vipsCC/vimagemodule.cxx:  result = (vips::VImage::TBandFmt)(arg1)->BandFmt();
swig/vipsCC/vimagemodule.cxx:  result = (vips::VImage::TCoding)(arg1)->Coding();
swig/vipsCC/vimagemodule.cxx:  result = (vips::VImage::TType)(arg1)->Type();
swig/vipsCC/vimagemodule.cxx:  result = (float)(arg1)->Xres();
swig/vipsCC/vimagemodule.cxx:  result = (float)(arg1)->Yres();
swig/vipsCC/vimagemodule.cxx:  result = (int)(arg1)->Length();
swig/vipsCC/vimagemodule.cxx:  result = (vips::VImage::TCompression)(arg1)->Compression();
swig/vipsCC/vimagemodule.cxx:  result = (short)(arg1)->Level();
swig/vipsCC/vimagemodule.cxx:  result = (int)(arg1)->Xoffset();
swig/vipsCC/vimagemodule.cxx:  result = (int)(arg1)->Yoffset();
swig/vipsCC/vimagemodule.cxx:  result = (char *)(arg1)->filename();
swig/vipsCC/vimagemodule.cxx:  result = (char *)(arg1)->Hist();
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->meta_remove((char const *)arg2);
swig/vipsCC/vimagemodule.cxx:  result = (arg1)->meta_get_typeof((char const *)arg2);
swig/vipsCC/vimagemodule.cxx:    result = (int)(arg1)->meta_get_int((char const *)arg2);
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->meta_get_double((char const *)arg2);
swig/vipsCC/vimagemodule.cxx:    result = (char *)(arg1)->meta_get_string((char const *)arg2);
swig/vipsCC/vimagemodule.cxx:    result = (void *)(arg1)->meta_get_area((char const *)arg2);
swig/vipsCC/vimagemodule.cxx:    result = (void *)(arg1)->meta_get_blob((char const *)arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    (arg1)->meta_set((char const *)arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    (arg1)->meta_set((char const *)arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    (arg1)->meta_set((char const *)arg2,(char const *)arg3);
swig/vipsCC/vimagemodule.cxx:    (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11);
swig/vipsCC/vimagemodule.cxx:    (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
swig/vipsCC/vimagemodule.cxx:    (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
swig/vipsCC/vimagemodule.cxx:    (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7,arg8);
swig/vipsCC/vimagemodule.cxx:    (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->abs();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->acos();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->add(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->asin();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->atan();
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->avg();
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->point_bilinear(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->bandmean();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->ceil();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->cos();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->cross_phase(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->deviate();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->divide(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->exp10();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->expn(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->expn(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->exp();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->floor();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->invert();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lin(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lin(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->log10();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->log();
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->max();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->maxpos();
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->maxpos_avg(*arg2,*arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->measure(arg2,arg3,arg4,arg5,arg6,arg7);
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->min();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->minpos();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->multiply(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->pow(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->pow(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->recomb(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->remainder(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->remainder(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->remainder(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->rint();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->sign();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->sin();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->stats();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->subtract(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->tan();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->andimage(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->andimage(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->andimage(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->orimage(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->orimage(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->orimage(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->eorimage(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->eorimage(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->eorimage(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->shiftleft(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->shiftleft(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->shiftright(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->shiftright(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->greyc(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->greyc_mask(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->LCh2Lab();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->LCh2UCS();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->Lab2LCh();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->Lab2LabQ();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->Lab2LabS();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->Lab2UCS();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->Lab2XYZ();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->Lab2XYZ_temp(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->Lab2disp(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->LabQ2LabS();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->LabQ2Lab();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->LabQ2XYZ();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->LabQ2disp(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->LabS2LabQ();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->LabS2Lab();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->UCS2LCh();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->UCS2Lab();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->UCS2XYZ();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->XYZ2Lab();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->XYZ2Lab_temp(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->XYZ2UCS();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->XYZ2Yxy();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->XYZ2disp(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->XYZ2sRGB();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->Yxy2XYZ();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->dE00_fromLab(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->dECMC_fromLab(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->dECMC_fromdisp(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->dE_fromLab(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->dE_fromXYZ(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->dE_fromdisp(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->disp2Lab(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->disp2XYZ(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->float2rad();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->icc_ac2rc(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->icc_export_depth(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->icc_import(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->icc_import_embedded(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->icc_transform(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lab_morph(arg2,arg3,arg4,arg5,arg6);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->rad2float();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->sRGB2XYZ();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->bandjoin(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->c2amph();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->c2imag();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->c2real();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->c2rect();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2fmt(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->copy();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->copy_file();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->copy_morph(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->copy_swap();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->copy_set(arg2,arg3,arg4,arg5,arg6);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->extract_area(arg2,arg3,arg4,arg5);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->extract_areabands(arg2,arg3,arg4,arg5,arg6,arg7);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->extract_band(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->extract_bands(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->extract(arg2,arg3,arg4,arg5,arg6);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->falsecolour();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->fliphor();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->flipver();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->grid(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->insert(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->insert(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->insert_noexpand(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->embed(arg2,arg3,arg4,arg5,arg6);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lrjoin(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->msb();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->msb_band(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->replicate(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->ri2c(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->rot180();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->rot270();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->rot90();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->scale();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->scaleps();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->subsample(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (char *)(arg1)->system(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->system_image(arg2,arg3,arg4,*arg5);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->tbjoin(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->vips2mask();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->wrap(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->zoom(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->addgnoise(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->compass(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->contrast_surface(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->conv(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->conv(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->convsep(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->convsep(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->fastcor(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->gradcor(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->gradient(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->grad_x();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->grad_y();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lindetect(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->sharpen(arg2,arg3,arg4,arg5,arg6,arg7);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->spcor(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->c2ps();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->resize_linear(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->cmulnorm(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->fav4(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->gadd(arg2,arg3,arg4,arg5);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->icc_export(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->litecor(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->affine(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2c();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2cm();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2d();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2dcm();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2f();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2i();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->convsub(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->convf(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->convsepf(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2s();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2ui();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->insertplace(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->clip2us();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->slice(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->segment(*arg2);
swig/vipsCC/vimagemodule.cxx:    (arg1)->line(arg2,arg3,arg4,arg5,arg6);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->thresh(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->convf_raw(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->conv_raw(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->contrast_surface_raw(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->convsepf_raw(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->convsep_raw(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->fastcor_raw(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->gradcor_raw(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->spcor_raw(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lhisteq_raw(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->stdif_raw(arg2,arg3,arg4,arg5,arg6,arg7);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->rank_raw(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->dilate_raw(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->erode_raw(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->similarity_area(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->similarity(arg2,arg3,arg4,arg5);
swig/vipsCC/vimagemodule.cxx:    (arg1)->vips2csv(arg2);
swig/vipsCC/vimagemodule.cxx:    (arg1)->vips2jpeg(arg2);
swig/vipsCC/vimagemodule.cxx:    (arg1)->vips2mimejpeg(arg2);
swig/vipsCC/vimagemodule.cxx:    (arg1)->vips2png(arg2);
swig/vipsCC/vimagemodule.cxx:    (arg1)->vips2ppm(arg2);
swig/vipsCC/vimagemodule.cxx:    (arg1)->vips2tiff(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->disp_ps();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->flt_image_freq(arg2,arg3,arg4,arg5,arg6,arg7);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->freqflt(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->fwfft();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->rotquad();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->invfft();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->phasecor_fft(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->invfftr();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->gammacorrect(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->heq(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->hist(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->histcum();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->histeq();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->hist_indexed(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->histgr(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->histnD(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->histnorm();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->histplot();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->histspec(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->hsp(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (int)(arg1)->ismonotonic();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lhisteq(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (int)(arg1)->mpercent(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->maplut(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->project(*arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->stdif(arg2,arg3,arg4,arg5,arg6,arg7);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->tone_analyse(arg2,arg3,arg4,arg5,arg6,arg7);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->tone_map(arg2);
swig/vipsCC/vimagemodule.cxx:    (arg1)->circle(arg2,arg3,arg4,arg5);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->flood_copy(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->flood_blob_copy(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->flood_other_copy(arg2,arg3,arg4,arg5);
swig/vipsCC/vimagemodule.cxx:    (arg1)->insertplace(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->line(arg2,arg3,arg4,arg5,arg6,arg7);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->cache(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (char *)(arg1)->getext();
swig/vipsCC/vimagemodule.cxx:    result = (int)(arg1)->header_get_typeof(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (int)(arg1)->header_int(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->header_double(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (char *)(arg1)->header_string(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (char *)(arg1)->history_get();
swig/vipsCC/vimagemodule.cxx:    (arg1)->printdesc();
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->cntlines(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->dilate(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->rank(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->label_regions(*arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->zerox(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->erode(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->profile(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->align_bands();
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->correl(arg2,arg3,arg4,arg5,arg6,arg7,arg8,*arg9,*arg10);
swig/vipsCC/vimagemodule.cxx:    result = (int)(arg1)->_find_lroverlap(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,*arg10,*arg11,*arg12,*arg13,*arg14);
swig/vipsCC/vimagemodule.cxx:    result = (int)(arg1)->_find_tboverlap(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,*arg10,*arg11,*arg12,*arg13,*arg14);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->global_balance(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->global_balancef(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lrmerge(arg2,arg3,arg4,arg5);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lrmerge1(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lrmosaic(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lrmosaic1(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->match_linear(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->match_linear_search(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12);
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->maxpos_subpel(*arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->remosaic(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->tbmerge(arg2,arg3,arg4,arg5);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->tbmerge1(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->tbmosaic(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->tbmosaic1(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->benchmark();
swig/vipsCC/vimagemodule.cxx:    result = (double)(arg1)->benchmark2();
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->benchmarkn(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->blend(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->equal(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->equal(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->equal(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->ifthenelse(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->less(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->less(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->less(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lesseq(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lesseq(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->lesseq(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->more(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->more(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->more(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->moreeq(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->moreeq(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->moreeq(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->notequal(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->notequal(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->notequal(arg2);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->rightshift_size(arg2,arg3,arg4);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->shrink(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    result = (arg1)->stretch3(arg2,arg3);
swig/vipsCC/vimagemodule.cxx:    resultobj = PyBuffer_FromMemory ((&result)->data, (&result)->size);
swig/vipsCC/vimagemodule.cxx:    if (PyObject_AsCharBuffer (obj0, &buffer, &buffer_len) == -1) {
swig/vipsCC/vimagemodule.cxx:    (&arg1)->data = (void *) buffer;
swig/vipsCC/vimagemodule.cxx:    (&arg1)->size = buffer_len;
swig/vipsCC/vimagemodule.cxx:/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
swig/vipsCC/vimagemodule.cxx:/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx: * two-dimensional array. Each row corresponds to a type (there are the same
swig/vipsCC/vimagemodule.cxx: * First off, we lookup the cast->type name to see if it is already loaded. 
swig/vipsCC/vimagemodule.cxx: *  1) If the cast->type has already been loaded AND the type we are adding
swig/vipsCC/vimagemodule.cxx: *     replace the cast->type pointer with the type pointer that has already
swig/vipsCC/vimagemodule.cxx: *     cast->type) are loaded, THEN the cast info has already been loaded by
swig/vipsCC/vimagemodule.cxx: *  3) Finally, if cast->type has not already been loaded, then we add that
swig/vipsCC/vimagemodule.cxx: *     swig_cast_info to the linked list (because the cast->type) pointer will
swig/vipsCC/vimagemodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:} /* c-mode */
swig/vipsCC/vimagemodule.cxx:      iter=iter->next;
swig/vipsCC/vimagemodule.cxx:    swig_module.next = module_head->next;
swig/vipsCC/vimagemodule.cxx:    module_head->next = &swig_module;
swig/vipsCC/vimagemodule.cxx:    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
swig/vipsCC/vimagemodule.cxx:      type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
swig/vipsCC/vimagemodule.cxx:      printf("SWIG_InitializeModule: found type %s\n", type->name);
swig/vipsCC/vimagemodule.cxx:      if (swig_module.type_initial[i]->clientdata) {
swig/vipsCC/vimagemodule.cxx:        type->clientdata = swig_module.type_initial[i]->clientdata;
swig/vipsCC/vimagemodule.cxx:        printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
swig/vipsCC/vimagemodule.cxx:    while (cast->type) {
swig/vipsCC/vimagemodule.cxx:      printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
swig/vipsCC/vimagemodule.cxx:        ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
swig/vipsCC/vimagemodule.cxx:        if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
swig/vipsCC/vimagemodule.cxx:          printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
swig/vipsCC/vimagemodule.cxx:          cast->type = ret;
swig/vipsCC/vimagemodule.cxx:          swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
swig/vipsCC/vimagemodule.cxx:          if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
swig/vipsCC/vimagemodule.cxx:        printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
swig/vipsCC/vimagemodule.cxx:        if (type->cast) {
swig/vipsCC/vimagemodule.cxx:          type->cast->prev = cast;
swig/vipsCC/vimagemodule.cxx:          cast->next = type->cast;
swig/vipsCC/vimagemodule.cxx:        type->cast = cast;
swig/vipsCC/vimagemodule.cxx:    /* Set entry in modules->types array equal to the type */
swig/vipsCC/vimagemodule.cxx:    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
swig/vipsCC/vimagemodule.cxx:    while (cast->type) {
swig/vipsCC/vimagemodule.cxx:      printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
swig/vipsCC/vimagemodule.cxx:    printf("---- Total casts: %d\n",j);
swig/vipsCC/vimagemodule.cxx:    if (swig_module.types[i]->clientdata) {
swig/vipsCC/vimagemodule.cxx:      equiv = swig_module.types[i]->cast;
swig/vipsCC/vimagemodule.cxx:        if (!equiv->converter) {
swig/vipsCC/vimagemodule.cxx:          if (equiv->type && !equiv->type->clientdata)
swig/vipsCC/vimagemodule.cxx:          SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
swig/vipsCC/vimagemodule.cxx:        equiv = equiv->next;
swig/vipsCC/vimagemodule.cxx:  /* c-mode */
swig/vipsCC/vimagemodule.cxx:  /* Python-specific SWIG API */
swig/vipsCC/vimagemodule.cxx:  /* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx:   * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:    for (var = v->vars; var; var=var->next) {
swig/vipsCC/vimagemodule.cxx:      tail = PyUnicode_FromString(var->name);
swig/vipsCC/vimagemodule.cxx:      if (var->next) {
swig/vipsCC/vimagemodule.cxx:    for (var = v->vars; var; var=var->next) {
swig/vipsCC/vimagemodule.cxx:      PyString_ConcatAndDel(&str,PyString_FromString(var->name));
swig/vipsCC/vimagemodule.cxx:      if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
swig/vipsCC/vimagemodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/vimagemodule.cxx:      swig_globalvar *n = var->next;
swig/vipsCC/vimagemodule.cxx:      free(var->name);
swig/vipsCC/vimagemodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/vimagemodule.cxx:      if (strcmp(var->name,n) == 0) {
swig/vipsCC/vimagemodule.cxx:        res = (*var->get_attr)();
swig/vipsCC/vimagemodule.cxx:      var = var->next;
swig/vipsCC/vimagemodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/vimagemodule.cxx:      if (strcmp(var->name,n) == 0) {
swig/vipsCC/vimagemodule.cxx:        res = (*var->set_attr)(p);
swig/vipsCC/vimagemodule.cxx:      var = var->next;
swig/vipsCC/vimagemodule.cxx:        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
swig/vipsCC/vimagemodule.cxx:        0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/vimagemodule.cxx:      result->vars = 0;
swig/vipsCC/vimagemodule.cxx:      gv->name = (char *)malloc(size);
swig/vipsCC/vimagemodule.cxx:      if (gv->name) {
swig/vipsCC/vimagemodule.cxx:        strncpy(gv->name,name,size);
swig/vipsCC/vimagemodule.cxx:        gv->get_attr = get_attr;
swig/vipsCC/vimagemodule.cxx:        gv->set_attr = set_attr;
swig/vipsCC/vimagemodule.cxx:        gv->next = v->vars;
swig/vipsCC/vimagemodule.cxx:    v->vars = gv;
swig/vipsCC/vimagemodule.cxx:  /* -----------------------------------------------------------------------------
swig/vipsCC/vimagemodule.cxx:   * ----------------------------------------------------------------------------- */
swig/vipsCC/vimagemodule.cxx:  /* -----------------------------------------------------------------------------*/
swig/vipsCC/vimagemodule.cxx:  /* -----------------------------------------------------------------------------*/
swig/vipsCC/vimagemodule.cxx:          size_t shift = (ci->ptype) - types;
swig/vipsCC/vimagemodule.cxx:          size_t ldoc = (c - methods[i].ml_doc);
swig/vipsCC/vimagemodule.cxx:          size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
swig/vipsCC/vimagemodule.cxx:            void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
swig/vipsCC/vimagemodule.cxx:              SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
swig/vipsCC/vimagemodule.cxx:/* -----------------------------------------------------------------------------*
swig/vipsCC/vimagemodule.cxx: * -----------------------------------------------------------------------------*/
swig/vipsCC/vimagemodule.cxx:    -1,
swig/vipsCC/vimagemodule.cxx:    if (im_init_world (args->argv[0])) {
swig/vipsCC/vimagemodule.cxx:    context = g_option_context_new ("- vips");
swig/vipsCC/vimagemodule.cxx:        &args->argc, &args->argv, &error)) {
swig/vipsCC/vimagemodule.cxx:      im_error ("vipsmodule", "%s", error->message);
swig/vipsCC/vimagemodule.cxx:    if (args->argv) 
swig/vipsCC/vimagemodule.cxx:    PySys_SetArgv (args->argc, args->argv);
swig/vipsCC/vdisplaymodule.cxx:/* ----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * changes to this file unless you know what you are doing--modify the SWIG 
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:     if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
swig/vipsCC/vdisplaymodule.cxx:   Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
swig/vipsCC/vdisplaymodule.cxx:      food(1)   // cast rank '1'  (1 -> 1.0)
swig/vipsCC/vdisplaymodule.cxx:#define SWIG_ERROR                 (-1)
swig/vipsCC/vdisplaymodule.cxx:/* Cast-Rank Mode */
swig/vipsCC/vdisplaymodule.cxx:#  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
swig/vipsCC/vdisplaymodule.cxx:#else /* no cast-rank mode */
swig/vipsCC/vdisplaymodule.cxx:    if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
swig/vipsCC/vdisplaymodule.cxx:  return (int)((l1 - f1) - (l2 - f2));
swig/vipsCC/vdisplaymodule.cxx:  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
swig/vipsCC/vdisplaymodule.cxx:    swig_cast_info *iter = ty->cast;
swig/vipsCC/vdisplaymodule.cxx:      if (strcmp(iter->type->name, c) == 0) {
swig/vipsCC/vdisplaymodule.cxx:        if (iter == ty->cast)
swig/vipsCC/vdisplaymodule.cxx:        iter->prev->next = iter->next;
swig/vipsCC/vdisplaymodule.cxx:        if (iter->next)
swig/vipsCC/vdisplaymodule.cxx:          iter->next->prev = iter->prev;
swig/vipsCC/vdisplaymodule.cxx:        iter->next = ty->cast;
swig/vipsCC/vdisplaymodule.cxx:        iter->prev = 0;
swig/vipsCC/vdisplaymodule.cxx:        if (ty->cast) ty->cast->prev = iter;
swig/vipsCC/vdisplaymodule.cxx:        ty->cast = iter;
swig/vipsCC/vdisplaymodule.cxx:      iter = iter->next;
swig/vipsCC/vdisplaymodule.cxx:    swig_cast_info *iter = ty->cast;
swig/vipsCC/vdisplaymodule.cxx:      if (iter->type == from) {
swig/vipsCC/vdisplaymodule.cxx:        if (iter == ty->cast)
swig/vipsCC/vdisplaymodule.cxx:        iter->prev->next = iter->next;
swig/vipsCC/vdisplaymodule.cxx:        if (iter->next)
swig/vipsCC/vdisplaymodule.cxx:          iter->next->prev = iter->prev;
swig/vipsCC/vdisplaymodule.cxx:        iter->next = ty->cast;
swig/vipsCC/vdisplaymodule.cxx:        iter->prev = 0;
swig/vipsCC/vdisplaymodule.cxx:        if (ty->cast) ty->cast->prev = iter;
swig/vipsCC/vdisplaymodule.cxx:        ty->cast = iter;
swig/vipsCC/vdisplaymodule.cxx:      iter = iter->next;
swig/vipsCC/vdisplaymodule.cxx:  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
swig/vipsCC/vdisplaymodule.cxx:  if (!ty || !ty->dcast) return ty;
swig/vipsCC/vdisplaymodule.cxx:  while (ty && (ty->dcast)) {
swig/vipsCC/vdisplaymodule.cxx:    ty = (*ty->dcast)(ptr);
swig/vipsCC/vdisplaymodule.cxx:  return ty->name;
swig/vipsCC/vdisplaymodule.cxx:     type, separated by vertical-bar characters.  We choose
swig/vipsCC/vdisplaymodule.cxx:  if (type->str != NULL) {
swig/vipsCC/vdisplaymodule.cxx:    const char *last_name = type->str;
swig/vipsCC/vdisplaymodule.cxx:    for (s = type->str; *s; s++)
swig/vipsCC/vdisplaymodule.cxx:    return type->name;
swig/vipsCC/vdisplaymodule.cxx:  swig_cast_info *cast = ti->cast;
swig/vipsCC/vdisplaymodule.cxx:  /* if (ti->clientdata == clientdata) return; */
swig/vipsCC/vdisplaymodule.cxx:  ti->clientdata = clientdata;
swig/vipsCC/vdisplaymodule.cxx:    if (!cast->converter) {
swig/vipsCC/vdisplaymodule.cxx:      swig_type_info *tc = cast->type;
swig/vipsCC/vdisplaymodule.cxx:      if (!tc->clientdata) {
swig/vipsCC/vdisplaymodule.cxx:    cast = cast->next;
swig/vipsCC/vdisplaymodule.cxx:  ti->owndata = 1;
swig/vipsCC/vdisplaymodule.cxx:    if (iter->size) {
swig/vipsCC/vdisplaymodule.cxx:      register size_t r = iter->size - 1;
swig/vipsCC/vdisplaymodule.cxx:	const char *iname = iter->types[i]->name;
swig/vipsCC/vdisplaymodule.cxx:	    return iter->types[i];
swig/vipsCC/vdisplaymodule.cxx:	      r = i - 1;
swig/vipsCC/vdisplaymodule.cxx:    iter = iter->next;
swig/vipsCC/vdisplaymodule.cxx:      for (; i < iter->size; ++i) {
swig/vipsCC/vdisplaymodule.cxx:	if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
swig/vipsCC/vdisplaymodule.cxx:	  return iter->types[i];
swig/vipsCC/vdisplaymodule.cxx:      iter = iter->next;
swig/vipsCC/vdisplaymodule.cxx:      uu = ((d - '0') << 4);
swig/vipsCC/vdisplaymodule.cxx:      uu = ((d - ('a'-10)) << 4);
swig/vipsCC/vdisplaymodule.cxx:      uu |= (d - '0');
swig/vipsCC/vdisplaymodule.cxx:      uu |= (d - ('a'-10));
swig/vipsCC/vdisplaymodule.cxx:  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_UnknownError    	   -1 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_IOError        	   -2 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_RuntimeError   	   -3 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_IndexError     	   -4 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_TypeError      	   -5 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_DivisionByZero 	   -6 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_OverflowError  	   -7 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_SyntaxError    	   -8 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_ValueError     	   -9 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_SystemError    	   -10
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_AttributeError 	   -11
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_MemoryError    	   -12 
swig/vipsCC/vdisplaymodule.cxx:#define  SWIG_NullReferenceError   -13
swig/vipsCC/vdisplaymodule.cxx:#  define Py_TYPE(op) ((op)->ob_type)
swig/vipsCC/vdisplaymodule.cxx:/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:} /* cc-mode */
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * It is exported to the generated module, used for -fastproxy
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:{ /* cc-mode */
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * of SWIG, and the README file for authors - http://www.swig.org/release.html.
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:} /* cc-mode */
swig/vipsCC/vdisplaymodule.cxx:  SwigPyClientData *data = (SwigPyClientData *)ty->clientdata;
swig/vipsCC/vdisplaymodule.cxx:  return data ? data->implicitconv : 0;
swig/vipsCC/vdisplaymodule.cxx:  SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0;
swig/vipsCC/vdisplaymodule.cxx:  PyObject *klass = data ? data->klass : 0;
swig/vipsCC/vdisplaymodule.cxx:    data->klass = obj;
swig/vipsCC/vdisplaymodule.cxx:    Py_INCREF(data->klass);
swig/vipsCC/vdisplaymodule.cxx:      data->newraw = 0;
swig/vipsCC/vdisplaymodule.cxx:      data->newargs = obj;
swig/vipsCC/vdisplaymodule.cxx:      data->newraw = 0;
swig/vipsCC/vdisplaymodule.cxx:      data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__");
swig/vipsCC/vdisplaymodule.cxx:      if (data->newraw) {
swig/vipsCC/vdisplaymodule.cxx:	Py_INCREF(data->newraw);
swig/vipsCC/vdisplaymodule.cxx:	data->newargs = PyTuple_New(1);
swig/vipsCC/vdisplaymodule.cxx:	PyTuple_SetItem(data->newargs, 0, obj);
swig/vipsCC/vdisplaymodule.cxx:	data->newargs = obj;
swig/vipsCC/vdisplaymodule.cxx:      Py_INCREF(data->newargs);
swig/vipsCC/vdisplaymodule.cxx:    data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__");
swig/vipsCC/vdisplaymodule.cxx:      data->destroy = 0;
swig/vipsCC/vdisplaymodule.cxx:    if (data->destroy) {
swig/vipsCC/vdisplaymodule.cxx:      Py_INCREF(data->destroy);
swig/vipsCC/vdisplaymodule.cxx:      flags = PyCFunction_GET_FLAGS(data->destroy);
swig/vipsCC/vdisplaymodule.cxx:      data->delargs = !(flags & (METH_O));
swig/vipsCC/vdisplaymodule.cxx:      data->delargs = 0;
swig/vipsCC/vdisplaymodule.cxx:      data->delargs = 0;
swig/vipsCC/vdisplaymodule.cxx:    data->implicitconv = 0;
swig/vipsCC/vdisplaymodule.cxx:  Py_XDECREF(data->newraw);
swig/vipsCC/vdisplaymodule.cxx:  Py_XDECREF(data->newargs);
swig/vipsCC/vdisplaymodule.cxx:  Py_XDECREF(data->destroy);
swig/vipsCC/vdisplaymodule.cxx:  return PyLong_FromVoidPtr(v->ptr);
swig/vipsCC/vdisplaymodule.cxx:  const char *name = SWIG_TypePrettyName(v->ty);
swig/vipsCC/vdisplaymodule.cxx:  if (v->next) {
swig/vipsCC/vdisplaymodule.cxx:    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
swig/vipsCC/vdisplaymodule.cxx:    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args);
swig/vipsCC/vdisplaymodule.cxx:  return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ?
swig/vipsCC/vdisplaymodule.cxx:  void *i = v->ptr;
swig/vipsCC/vdisplaymodule.cxx:  void *j = w->ptr;
swig/vipsCC/vdisplaymodule.cxx:  return (i < j) ? -1 : ((i > j) ? 1 : 0);
swig/vipsCC/vdisplaymodule.cxx:    || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0);
swig/vipsCC/vdisplaymodule.cxx:  PyObject *next = sobj->next;
swig/vipsCC/vdisplaymodule.cxx:  if (sobj->own == SWIG_POINTER_OWN) {
swig/vipsCC/vdisplaymodule.cxx:    swig_type_info *ty = sobj->ty;
swig/vipsCC/vdisplaymodule.cxx:    SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
swig/vipsCC/vdisplaymodule.cxx:    PyObject *destroy = data ? data->destroy : 0;
swig/vipsCC/vdisplaymodule.cxx:      if (data->delargs) {
swig/vipsCC/vdisplaymodule.cxx:	PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0);
swig/vipsCC/vdisplaymodule.cxx:  sobj->next = next;
swig/vipsCC/vdisplaymodule.cxx:  if (sobj->next) {    
swig/vipsCC/vdisplaymodule.cxx:    Py_INCREF(sobj->next);
swig/vipsCC/vdisplaymodule.cxx:    return sobj->next;
swig/vipsCC/vdisplaymodule.cxx:  sobj->own = 0;
swig/vipsCC/vdisplaymodule.cxx:  sobj->own = SWIG_POINTER_OWN;
swig/vipsCC/vdisplaymodule.cxx:      PyObject *obj = PyBool_FromLong(sobj->own);
swig/vipsCC/vdisplaymodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */
swig/vipsCC/vdisplaymodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */
swig/vipsCC/vdisplaymodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */
swig/vipsCC/vdisplaymodule.cxx:    0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */
swig/vipsCC/vdisplaymodule.cxx:	0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/vdisplaymodule.cxx:    sobj->ptr  = ptr;
swig/vipsCC/vdisplaymodule.cxx:    sobj->ty   = ty;
swig/vipsCC/vdisplaymodule.cxx:    sobj->own  = own;
swig/vipsCC/vdisplaymodule.cxx:    sobj->next = 0;
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
swig/vipsCC/vdisplaymodule.cxx:  fputs(v->ty->name,fp); 
swig/vipsCC/vdisplaymodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
swig/vipsCC/vdisplaymodule.cxx:    return SWIG_Python_str_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
swig/vipsCC/vdisplaymodule.cxx:    return SWIG_Python_str_FromFormat("<Swig Packed %s>", v->ty->name);
swig/vipsCC/vdisplaymodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
swig/vipsCC/vdisplaymodule.cxx:    return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name);
swig/vipsCC/vdisplaymodule.cxx:    return SWIG_Python_str_FromChar(v->ty->name);
swig/vipsCC/vdisplaymodule.cxx:  size_t i = v->size;
swig/vipsCC/vdisplaymodule.cxx:  size_t j = w->size;
swig/vipsCC/vdisplaymodule.cxx:  int s = (i < j) ? -1 : ((i > j) ? 1 : 0);
swig/vipsCC/vdisplaymodule.cxx:  return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
swig/vipsCC/vdisplaymodule.cxx:  return ((op)->ob_type == _PySwigPacked_type()) 
swig/vipsCC/vdisplaymodule.cxx:    || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0);
swig/vipsCC/vdisplaymodule.cxx:    free(sobj->pack);
swig/vipsCC/vdisplaymodule.cxx:	0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/vdisplaymodule.cxx:      sobj->pack = pack;
swig/vipsCC/vdisplaymodule.cxx:      sobj->ty   = ty;
swig/vipsCC/vdisplaymodule.cxx:      sobj->size = size;
swig/vipsCC/vdisplaymodule.cxx:    if (sobj->size != size) return 0;
swig/vipsCC/vdisplaymodule.cxx:    memcpy(ptr, sobj->pack, size);
swig/vipsCC/vdisplaymodule.cxx:    return sobj->ty;
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:      int oldown = sobj->own;
swig/vipsCC/vdisplaymodule.cxx:      sobj->own = own;
swig/vipsCC/vdisplaymodule.cxx:      void *vptr = sobj->ptr;
swig/vipsCC/vdisplaymodule.cxx:	swig_type_info *to = sobj->ty;
swig/vipsCC/vdisplaymodule.cxx:	  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
swig/vipsCC/vdisplaymodule.cxx:	    sobj = (SwigPyObject *)sobj->next;
swig/vipsCC/vdisplaymodule.cxx:        *own = *own | sobj->own;
swig/vipsCC/vdisplaymodule.cxx:	sobj->own = 0;
swig/vipsCC/vdisplaymodule.cxx:	SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
swig/vipsCC/vdisplaymodule.cxx:	if (data && !data->implicitconv) {
swig/vipsCC/vdisplaymodule.cxx:	  PyObject *klass = data->klass;
swig/vipsCC/vdisplaymodule.cxx:	    data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
swig/vipsCC/vdisplaymodule.cxx:	    data->implicitconv = 0;
swig/vipsCC/vdisplaymodule.cxx:		    iobj->own = 0;
swig/vipsCC/vdisplaymodule.cxx:    const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
swig/vipsCC/vdisplaymodule.cxx:      desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
swig/vipsCC/vdisplaymodule.cxx:      swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:  PyObject *newraw = data->newraw;
swig/vipsCC/vdisplaymodule.cxx:    inst = PyObject_Call(newraw, data->newargs, NULL);
swig/vipsCC/vdisplaymodule.cxx:    inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None);
swig/vipsCC/vdisplaymodule.cxx:    Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
swig/vipsCC/vdisplaymodule.cxx:    inst = PyInstance_NewRaw(data->newargs, dict);
swig/vipsCC/vdisplaymodule.cxx:  inst = PyInstance_NewRaw(data->newargs, dict);
swig/vipsCC/vdisplaymodule.cxx:  inst->in_class = (PyClassObject *)data->newargs;
swig/vipsCC/vdisplaymodule.cxx:  Py_INCREF(inst->in_class);
swig/vipsCC/vdisplaymodule.cxx:  inst->in_dict = PyDict_New();
swig/vipsCC/vdisplaymodule.cxx:  if (inst->in_dict == NULL) {
swig/vipsCC/vdisplaymodule.cxx:  inst->in_weakreflist = NULL;
swig/vipsCC/vdisplaymodule.cxx:  PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this);
swig/vipsCC/vdisplaymodule.cxx:    SwigPyClientData *clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------*
swig/vipsCC/vdisplaymodule.cxx: * -----------------------------------------------------------------------------*/
swig/vipsCC/vdisplaymodule.cxx:		    "PyModule_AddObject() needs non-NULL value");
swig/vipsCC/vdisplaymodule.cxx:    /* Internal error -- modules must have a dict! */
swig/vipsCC/vdisplaymodule.cxx:  swig_type_info **types = swig_module->types;
swig/vipsCC/vdisplaymodule.cxx:  for (i =0; i < swig_module->size; ++i) {
swig/vipsCC/vdisplaymodule.cxx:    if (ty->owndata) {
swig/vipsCC/vdisplaymodule.cxx:      SwigPyClientData *data = (SwigPyClientData *) ty->clientdata;
swig/vipsCC/vdisplaymodule.cxx:  swig_type_info *ty = v ? v->ty : 0;
swig/vipsCC/vdisplaymodule.cxx:  return ty ? ty->str : (char*)"";
swig/vipsCC/vdisplaymodule.cxx:      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
swig/vipsCC/vdisplaymodule.cxx:  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
swig/vipsCC/vdisplaymodule.cxx:{ /* cc-mode */
swig/vipsCC/vdisplaymodule.cxx:/* -------- TYPES TABLE (BEGIN) -------- */
swig/vipsCC/vdisplaymodule.cxx:/* -------- TYPES TABLE (END) -------- */
swig/vipsCC/vdisplaymodule.cxx:#  error "This python version requires swig to be run with the '-classic' option"
swig/vipsCC/vdisplaymodule.cxx:/*-----------------------------------------------
swig/vipsCC/vdisplaymodule.cxx:  ------------------------------------------------*/
swig/vipsCC/vdisplaymodule.cxx:    PyObject *operator->() const
swig/vipsCC/vdisplaymodule.cxx:           representation of string in Python 3 is UCS-2/UCS-4 but we require
swig/vipsCC/vdisplaymodule.cxx:           a UTF-8 representation.
swig/vipsCC/vdisplaymodule.cxx:  result = (vips::VDisplay *) &(arg1)->operator =((vips::VDisplay const &)*arg2);
swig/vipsCC/vdisplaymodule.cxx:  result = (void *)((vips::VDisplay const *)arg1)->disp();
swig/vipsCC/vdisplaymodule.cxx:    result = (im_col_tab_disp *)((vips::VDisplay const *)arg1)->luts();
swig/vipsCC/vdisplaymodule.cxx:/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
swig/vipsCC/vdisplaymodule.cxx:/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx: * two-dimensional array. Each row corresponds to a type (there are the same
swig/vipsCC/vdisplaymodule.cxx: * First off, we lookup the cast->type name to see if it is already loaded. 
swig/vipsCC/vdisplaymodule.cxx: *  1) If the cast->type has already been loaded AND the type we are adding
swig/vipsCC/vdisplaymodule.cxx: *     replace the cast->type pointer with the type pointer that has already
swig/vipsCC/vdisplaymodule.cxx: *     cast->type) are loaded, THEN the cast info has already been loaded by
swig/vipsCC/vdisplaymodule.cxx: *  3) Finally, if cast->type has not already been loaded, then we add that
swig/vipsCC/vdisplaymodule.cxx: *     swig_cast_info to the linked list (because the cast->type) pointer will
swig/vipsCC/vdisplaymodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:} /* c-mode */
swig/vipsCC/vdisplaymodule.cxx:      iter=iter->next;
swig/vipsCC/vdisplaymodule.cxx:    swig_module.next = module_head->next;
swig/vipsCC/vdisplaymodule.cxx:    module_head->next = &swig_module;
swig/vipsCC/vdisplaymodule.cxx:    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
swig/vipsCC/vdisplaymodule.cxx:      type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
swig/vipsCC/vdisplaymodule.cxx:      printf("SWIG_InitializeModule: found type %s\n", type->name);
swig/vipsCC/vdisplaymodule.cxx:      if (swig_module.type_initial[i]->clientdata) {
swig/vipsCC/vdisplaymodule.cxx:        type->clientdata = swig_module.type_initial[i]->clientdata;
swig/vipsCC/vdisplaymodule.cxx:        printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
swig/vipsCC/vdisplaymodule.cxx:    while (cast->type) {
swig/vipsCC/vdisplaymodule.cxx:      printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
swig/vipsCC/vdisplaymodule.cxx:        ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
swig/vipsCC/vdisplaymodule.cxx:        if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
swig/vipsCC/vdisplaymodule.cxx:          printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
swig/vipsCC/vdisplaymodule.cxx:          cast->type = ret;
swig/vipsCC/vdisplaymodule.cxx:          swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
swig/vipsCC/vdisplaymodule.cxx:          if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
swig/vipsCC/vdisplaymodule.cxx:        printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
swig/vipsCC/vdisplaymodule.cxx:        if (type->cast) {
swig/vipsCC/vdisplaymodule.cxx:          type->cast->prev = cast;
swig/vipsCC/vdisplaymodule.cxx:          cast->next = type->cast;
swig/vipsCC/vdisplaymodule.cxx:        type->cast = cast;
swig/vipsCC/vdisplaymodule.cxx:    /* Set entry in modules->types array equal to the type */
swig/vipsCC/vdisplaymodule.cxx:    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
swig/vipsCC/vdisplaymodule.cxx:    while (cast->type) {
swig/vipsCC/vdisplaymodule.cxx:      printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
swig/vipsCC/vdisplaymodule.cxx:    printf("---- Total casts: %d\n",j);
swig/vipsCC/vdisplaymodule.cxx:    if (swig_module.types[i]->clientdata) {
swig/vipsCC/vdisplaymodule.cxx:      equiv = swig_module.types[i]->cast;
swig/vipsCC/vdisplaymodule.cxx:        if (!equiv->converter) {
swig/vipsCC/vdisplaymodule.cxx:          if (equiv->type && !equiv->type->clientdata)
swig/vipsCC/vdisplaymodule.cxx:          SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
swig/vipsCC/vdisplaymodule.cxx:        equiv = equiv->next;
swig/vipsCC/vdisplaymodule.cxx:  /* c-mode */
swig/vipsCC/vdisplaymodule.cxx:  /* Python-specific SWIG API */
swig/vipsCC/vdisplaymodule.cxx:  /* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx:   * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:    for (var = v->vars; var; var=var->next) {
swig/vipsCC/vdisplaymodule.cxx:      tail = PyUnicode_FromString(var->name);
swig/vipsCC/vdisplaymodule.cxx:      if (var->next) {
swig/vipsCC/vdisplaymodule.cxx:    for (var = v->vars; var; var=var->next) {
swig/vipsCC/vdisplaymodule.cxx:      PyString_ConcatAndDel(&str,PyString_FromString(var->name));
swig/vipsCC/vdisplaymodule.cxx:      if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
swig/vipsCC/vdisplaymodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/vdisplaymodule.cxx:      swig_globalvar *n = var->next;
swig/vipsCC/vdisplaymodule.cxx:      free(var->name);
swig/vipsCC/vdisplaymodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/vdisplaymodule.cxx:      if (strcmp(var->name,n) == 0) {
swig/vipsCC/vdisplaymodule.cxx:        res = (*var->get_attr)();
swig/vipsCC/vdisplaymodule.cxx:      var = var->next;
swig/vipsCC/vdisplaymodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/vdisplaymodule.cxx:      if (strcmp(var->name,n) == 0) {
swig/vipsCC/vdisplaymodule.cxx:        res = (*var->set_attr)(p);
swig/vipsCC/vdisplaymodule.cxx:      var = var->next;
swig/vipsCC/vdisplaymodule.cxx:        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
swig/vipsCC/vdisplaymodule.cxx:        0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/vdisplaymodule.cxx:      result->vars = 0;
swig/vipsCC/vdisplaymodule.cxx:      gv->name = (char *)malloc(size);
swig/vipsCC/vdisplaymodule.cxx:      if (gv->name) {
swig/vipsCC/vdisplaymodule.cxx:        strncpy(gv->name,name,size);
swig/vipsCC/vdisplaymodule.cxx:        gv->get_attr = get_attr;
swig/vipsCC/vdisplaymodule.cxx:        gv->set_attr = set_attr;
swig/vipsCC/vdisplaymodule.cxx:        gv->next = v->vars;
swig/vipsCC/vdisplaymodule.cxx:    v->vars = gv;
swig/vipsCC/vdisplaymodule.cxx:  /* -----------------------------------------------------------------------------
swig/vipsCC/vdisplaymodule.cxx:   * ----------------------------------------------------------------------------- */
swig/vipsCC/vdisplaymodule.cxx:  /* -----------------------------------------------------------------------------*/
swig/vipsCC/vdisplaymodule.cxx:  /* -----------------------------------------------------------------------------*/
swig/vipsCC/vdisplaymodule.cxx:          size_t shift = (ci->ptype) - types;
swig/vipsCC/vdisplaymodule.cxx:          size_t ldoc = (c - methods[i].ml_doc);
swig/vipsCC/vdisplaymodule.cxx:          size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
swig/vipsCC/vdisplaymodule.cxx:            void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
swig/vipsCC/vdisplaymodule.cxx:              SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
swig/vipsCC/vdisplaymodule.cxx:/* -----------------------------------------------------------------------------*
swig/vipsCC/vdisplaymodule.cxx: * -----------------------------------------------------------------------------*/
swig/vipsCC/vdisplaymodule.cxx:    -1,
swig/vipsCC/VImage.i: *      - use g_option_context_set_ignore_unknown_options() so we don't fail
swig/vipsCC/VImage.i: *        on unrecognied -args (thanks Simon)
swig/vipsCC/VImage.i: *      - add .tobuffer() / .frombuffer (), .tostring (), .fromstring ()
swig/vipsCC/VImage.i: *      - add PIL_mode_from_vips () and vips_from_PIL_mode () utility
swig/vipsCC/VImage.i: *      - arg, std::vector<vips::VImage> was missing the "vips::"
swig/vipsCC/VImage.i:  if (PyObject_AsCharBuffer ($input, &buffer, &buffer_len) == -1) {
swig/vipsCC/VImage.i:    buffer.data = $self->data ();
swig/vipsCC/VImage.i:    buffer.size = (size_t) $self->Xsize () * $self->Ysize () * 
swig/vipsCC/VImage.i:        IM_IMAGE_SIZEOF_PEL ($self->image ());
swig/vipsCC/VImage.i:    vips_memory = $self->data ();
swig/vipsCC/VImage.i:    *buffer_len = (size_t) $self->Xsize () * $self->Ysize () * 
swig/vipsCC/VImage.i:      IM_IMAGE_SIZEOF_PEL ($self->image ());
swig/vipsCC/VImage.i:    raise ValueError ('unsupported vips -> pil image')
swig/vipsCC/VImage.i:    raise ValueError ('unsupported pil -> vips image')
swig/vipsCC/VImage.i:/* Command-line args during parse.
swig/vipsCC/VImage.i:  printf ("args_print: argc = %d\n", args->argc);
swig/vipsCC/VImage.i:  for (i = 0; i < args->argc + 1; i++)
swig/vipsCC/VImage.i:    printf ("\t%2d)\t%s\n", i, args->argv[i]);
swig/vipsCC/VImage.i:  for (i = 0; i < args->n; i++)
swig/vipsCC/VImage.i:    IM_FREE (args->str[i]);
swig/vipsCC/VImage.i:  args->n = 0;
swig/vipsCC/VImage.i:  args->argc = 0;
swig/vipsCC/VImage.i:  IM_FREE (args->str);
swig/vipsCC/VImage.i:  IM_FREE (args->argv);
swig/vipsCC/VImage.i:  args->n = 0;
swig/vipsCC/VImage.i:  args->str = NULL;
swig/vipsCC/VImage.i:  args->argc = 0;
swig/vipsCC/VImage.i:  args->argv = NULL;
swig/vipsCC/VImage.i:  args->str = g_new (char *, n);
swig/vipsCC/VImage.i:    args->str[i] = g_strdup (PyString_AsString (PyList_GetItem (av, i)));
swig/vipsCC/VImage.i:  args->n = n;
swig/vipsCC/VImage.i:  args->argc = n;
swig/vipsCC/VImage.i:  args->argv = g_new (char *, n + 1);
swig/vipsCC/VImage.i:    args->argv[i] = args->str[i];
swig/vipsCC/VImage.i:  args->argv[i] = NULL;
swig/vipsCC/VImage.i:  if (im_init_world (args->argv[0])) {
swig/vipsCC/VImage.i:  context = g_option_context_new ("- vips");
swig/vipsCC/VImage.i:    &args->argc, &args->argv, &error)) {
swig/vipsCC/VImage.i:    im_error ("vipsmodule", "%s", error->message);
swig/vipsCC/VImage.i:  if (args->argv) 
swig/vipsCC/VImage.i:    PySys_SetArgv (args->argc, args->argv);
swig/vipsCC/VDisplay.py:# Do not make changes to this file unless you know what you are doing--modify
swig/vipsCC/VDisplay.py:# This file is compatible with both classic and new-style classes.
swig/vipsCC/VError.i:                return $self->what ();
swig/vipsCC/verrormodule.cxx:/* ----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * changes to this file unless you know what you are doing--modify the SWIG 
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:     if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
swig/vipsCC/verrormodule.cxx:   Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
swig/vipsCC/verrormodule.cxx:      food(1)   // cast rank '1'  (1 -> 1.0)
swig/vipsCC/verrormodule.cxx:#define SWIG_ERROR                 (-1)
swig/vipsCC/verrormodule.cxx:/* Cast-Rank Mode */
swig/vipsCC/verrormodule.cxx:#  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
swig/vipsCC/verrormodule.cxx:#else /* no cast-rank mode */
swig/vipsCC/verrormodule.cxx:    if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
swig/vipsCC/verrormodule.cxx:  return (int)((l1 - f1) - (l2 - f2));
swig/vipsCC/verrormodule.cxx:  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
swig/vipsCC/verrormodule.cxx:    swig_cast_info *iter = ty->cast;
swig/vipsCC/verrormodule.cxx:      if (strcmp(iter->type->name, c) == 0) {
swig/vipsCC/verrormodule.cxx:        if (iter == ty->cast)
swig/vipsCC/verrormodule.cxx:        iter->prev->next = iter->next;
swig/vipsCC/verrormodule.cxx:        if (iter->next)
swig/vipsCC/verrormodule.cxx:          iter->next->prev = iter->prev;
swig/vipsCC/verrormodule.cxx:        iter->next = ty->cast;
swig/vipsCC/verrormodule.cxx:        iter->prev = 0;
swig/vipsCC/verrormodule.cxx:        if (ty->cast) ty->cast->prev = iter;
swig/vipsCC/verrormodule.cxx:        ty->cast = iter;
swig/vipsCC/verrormodule.cxx:      iter = iter->next;
swig/vipsCC/verrormodule.cxx:    swig_cast_info *iter = ty->cast;
swig/vipsCC/verrormodule.cxx:      if (iter->type == from) {
swig/vipsCC/verrormodule.cxx:        if (iter == ty->cast)
swig/vipsCC/verrormodule.cxx:        iter->prev->next = iter->next;
swig/vipsCC/verrormodule.cxx:        if (iter->next)
swig/vipsCC/verrormodule.cxx:          iter->next->prev = iter->prev;
swig/vipsCC/verrormodule.cxx:        iter->next = ty->cast;
swig/vipsCC/verrormodule.cxx:        iter->prev = 0;
swig/vipsCC/verrormodule.cxx:        if (ty->cast) ty->cast->prev = iter;
swig/vipsCC/verrormodule.cxx:        ty->cast = iter;
swig/vipsCC/verrormodule.cxx:      iter = iter->next;
swig/vipsCC/verrormodule.cxx:  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
swig/vipsCC/verrormodule.cxx:  if (!ty || !ty->dcast) return ty;
swig/vipsCC/verrormodule.cxx:  while (ty && (ty->dcast)) {
swig/vipsCC/verrormodule.cxx:    ty = (*ty->dcast)(ptr);
swig/vipsCC/verrormodule.cxx:  return ty->name;
swig/vipsCC/verrormodule.cxx:     type, separated by vertical-bar characters.  We choose
swig/vipsCC/verrormodule.cxx:  if (type->str != NULL) {
swig/vipsCC/verrormodule.cxx:    const char *last_name = type->str;
swig/vipsCC/verrormodule.cxx:    for (s = type->str; *s; s++)
swig/vipsCC/verrormodule.cxx:    return type->name;
swig/vipsCC/verrormodule.cxx:  swig_cast_info *cast = ti->cast;
swig/vipsCC/verrormodule.cxx:  /* if (ti->clientdata == clientdata) return; */
swig/vipsCC/verrormodule.cxx:  ti->clientdata = clientdata;
swig/vipsCC/verrormodule.cxx:    if (!cast->converter) {
swig/vipsCC/verrormodule.cxx:      swig_type_info *tc = cast->type;
swig/vipsCC/verrormodule.cxx:      if (!tc->clientdata) {
swig/vipsCC/verrormodule.cxx:    cast = cast->next;
swig/vipsCC/verrormodule.cxx:  ti->owndata = 1;
swig/vipsCC/verrormodule.cxx:    if (iter->size) {
swig/vipsCC/verrormodule.cxx:      register size_t r = iter->size - 1;
swig/vipsCC/verrormodule.cxx:	const char *iname = iter->types[i]->name;
swig/vipsCC/verrormodule.cxx:	    return iter->types[i];
swig/vipsCC/verrormodule.cxx:	      r = i - 1;
swig/vipsCC/verrormodule.cxx:    iter = iter->next;
swig/vipsCC/verrormodule.cxx:      for (; i < iter->size; ++i) {
swig/vipsCC/verrormodule.cxx:	if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
swig/vipsCC/verrormodule.cxx:	  return iter->types[i];
swig/vipsCC/verrormodule.cxx:      iter = iter->next;
swig/vipsCC/verrormodule.cxx:      uu = ((d - '0') << 4);
swig/vipsCC/verrormodule.cxx:      uu = ((d - ('a'-10)) << 4);
swig/vipsCC/verrormodule.cxx:      uu |= (d - '0');
swig/vipsCC/verrormodule.cxx:      uu |= (d - ('a'-10));
swig/vipsCC/verrormodule.cxx:  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
swig/vipsCC/verrormodule.cxx:#define  SWIG_UnknownError    	   -1 
swig/vipsCC/verrormodule.cxx:#define  SWIG_IOError        	   -2 
swig/vipsCC/verrormodule.cxx:#define  SWIG_RuntimeError   	   -3 
swig/vipsCC/verrormodule.cxx:#define  SWIG_IndexError     	   -4 
swig/vipsCC/verrormodule.cxx:#define  SWIG_TypeError      	   -5 
swig/vipsCC/verrormodule.cxx:#define  SWIG_DivisionByZero 	   -6 
swig/vipsCC/verrormodule.cxx:#define  SWIG_OverflowError  	   -7 
swig/vipsCC/verrormodule.cxx:#define  SWIG_SyntaxError    	   -8 
swig/vipsCC/verrormodule.cxx:#define  SWIG_ValueError     	   -9 
swig/vipsCC/verrormodule.cxx:#define  SWIG_SystemError    	   -10
swig/vipsCC/verrormodule.cxx:#define  SWIG_AttributeError 	   -11
swig/vipsCC/verrormodule.cxx:#define  SWIG_MemoryError    	   -12 
swig/vipsCC/verrormodule.cxx:#define  SWIG_NullReferenceError   -13
swig/vipsCC/verrormodule.cxx:#  define Py_TYPE(op) ((op)->ob_type)
swig/vipsCC/verrormodule.cxx:/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:} /* cc-mode */
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * It is exported to the generated module, used for -fastproxy
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:{ /* cc-mode */
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * of SWIG, and the README file for authors - http://www.swig.org/release.html.
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:} /* cc-mode */
swig/vipsCC/verrormodule.cxx:  SwigPyClientData *data = (SwigPyClientData *)ty->clientdata;
swig/vipsCC/verrormodule.cxx:  return data ? data->implicitconv : 0;
swig/vipsCC/verrormodule.cxx:  SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0;
swig/vipsCC/verrormodule.cxx:  PyObject *klass = data ? data->klass : 0;
swig/vipsCC/verrormodule.cxx:    data->klass = obj;
swig/vipsCC/verrormodule.cxx:    Py_INCREF(data->klass);
swig/vipsCC/verrormodule.cxx:      data->newraw = 0;
swig/vipsCC/verrormodule.cxx:      data->newargs = obj;
swig/vipsCC/verrormodule.cxx:      data->newraw = 0;
swig/vipsCC/verrormodule.cxx:      data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__");
swig/vipsCC/verrormodule.cxx:      if (data->newraw) {
swig/vipsCC/verrormodule.cxx:	Py_INCREF(data->newraw);
swig/vipsCC/verrormodule.cxx:	data->newargs = PyTuple_New(1);
swig/vipsCC/verrormodule.cxx:	PyTuple_SetItem(data->newargs, 0, obj);
swig/vipsCC/verrormodule.cxx:	data->newargs = obj;
swig/vipsCC/verrormodule.cxx:      Py_INCREF(data->newargs);
swig/vipsCC/verrormodule.cxx:    data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__");
swig/vipsCC/verrormodule.cxx:      data->destroy = 0;
swig/vipsCC/verrormodule.cxx:    if (data->destroy) {
swig/vipsCC/verrormodule.cxx:      Py_INCREF(data->destroy);
swig/vipsCC/verrormodule.cxx:      flags = PyCFunction_GET_FLAGS(data->destroy);
swig/vipsCC/verrormodule.cxx:      data->delargs = !(flags & (METH_O));
swig/vipsCC/verrormodule.cxx:      data->delargs = 0;
swig/vipsCC/verrormodule.cxx:      data->delargs = 0;
swig/vipsCC/verrormodule.cxx:    data->implicitconv = 0;
swig/vipsCC/verrormodule.cxx:  Py_XDECREF(data->newraw);
swig/vipsCC/verrormodule.cxx:  Py_XDECREF(data->newargs);
swig/vipsCC/verrormodule.cxx:  Py_XDECREF(data->destroy);
swig/vipsCC/verrormodule.cxx:  return PyLong_FromVoidPtr(v->ptr);
swig/vipsCC/verrormodule.cxx:  const char *name = SWIG_TypePrettyName(v->ty);
swig/vipsCC/verrormodule.cxx:  if (v->next) {
swig/vipsCC/verrormodule.cxx:    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
swig/vipsCC/verrormodule.cxx:    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args);
swig/vipsCC/verrormodule.cxx:  return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ?
swig/vipsCC/verrormodule.cxx:  void *i = v->ptr;
swig/vipsCC/verrormodule.cxx:  void *j = w->ptr;
swig/vipsCC/verrormodule.cxx:  return (i < j) ? -1 : ((i > j) ? 1 : 0);
swig/vipsCC/verrormodule.cxx:    || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0);
swig/vipsCC/verrormodule.cxx:  PyObject *next = sobj->next;
swig/vipsCC/verrormodule.cxx:  if (sobj->own == SWIG_POINTER_OWN) {
swig/vipsCC/verrormodule.cxx:    swig_type_info *ty = sobj->ty;
swig/vipsCC/verrormodule.cxx:    SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
swig/vipsCC/verrormodule.cxx:    PyObject *destroy = data ? data->destroy : 0;
swig/vipsCC/verrormodule.cxx:      if (data->delargs) {
swig/vipsCC/verrormodule.cxx:	PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0);
swig/vipsCC/verrormodule.cxx:  sobj->next = next;
swig/vipsCC/verrormodule.cxx:  if (sobj->next) {    
swig/vipsCC/verrormodule.cxx:    Py_INCREF(sobj->next);
swig/vipsCC/verrormodule.cxx:    return sobj->next;
swig/vipsCC/verrormodule.cxx:  sobj->own = 0;
swig/vipsCC/verrormodule.cxx:  sobj->own = SWIG_POINTER_OWN;
swig/vipsCC/verrormodule.cxx:      PyObject *obj = PyBool_FromLong(sobj->own);
swig/vipsCC/verrormodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */
swig/vipsCC/verrormodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */
swig/vipsCC/verrormodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */
swig/vipsCC/verrormodule.cxx:    0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */
swig/vipsCC/verrormodule.cxx:	0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/verrormodule.cxx:    sobj->ptr  = ptr;
swig/vipsCC/verrormodule.cxx:    sobj->ty   = ty;
swig/vipsCC/verrormodule.cxx:    sobj->own  = own;
swig/vipsCC/verrormodule.cxx:    sobj->next = 0;
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
swig/vipsCC/verrormodule.cxx:  fputs(v->ty->name,fp); 
swig/vipsCC/verrormodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
swig/vipsCC/verrormodule.cxx:    return SWIG_Python_str_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
swig/vipsCC/verrormodule.cxx:    return SWIG_Python_str_FromFormat("<Swig Packed %s>", v->ty->name);
swig/vipsCC/verrormodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
swig/vipsCC/verrormodule.cxx:    return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name);
swig/vipsCC/verrormodule.cxx:    return SWIG_Python_str_FromChar(v->ty->name);
swig/vipsCC/verrormodule.cxx:  size_t i = v->size;
swig/vipsCC/verrormodule.cxx:  size_t j = w->size;
swig/vipsCC/verrormodule.cxx:  int s = (i < j) ? -1 : ((i > j) ? 1 : 0);
swig/vipsCC/verrormodule.cxx:  return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
swig/vipsCC/verrormodule.cxx:  return ((op)->ob_type == _PySwigPacked_type()) 
swig/vipsCC/verrormodule.cxx:    || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0);
swig/vipsCC/verrormodule.cxx:    free(sobj->pack);
swig/vipsCC/verrormodule.cxx:	0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/verrormodule.cxx:      sobj->pack = pack;
swig/vipsCC/verrormodule.cxx:      sobj->ty   = ty;
swig/vipsCC/verrormodule.cxx:      sobj->size = size;
swig/vipsCC/verrormodule.cxx:    if (sobj->size != size) return 0;
swig/vipsCC/verrormodule.cxx:    memcpy(ptr, sobj->pack, size);
swig/vipsCC/verrormodule.cxx:    return sobj->ty;
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:      int oldown = sobj->own;
swig/vipsCC/verrormodule.cxx:      sobj->own = own;
swig/vipsCC/verrormodule.cxx:      void *vptr = sobj->ptr;
swig/vipsCC/verrormodule.cxx:	swig_type_info *to = sobj->ty;
swig/vipsCC/verrormodule.cxx:	  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
swig/vipsCC/verrormodule.cxx:	    sobj = (SwigPyObject *)sobj->next;
swig/vipsCC/verrormodule.cxx:        *own = *own | sobj->own;
swig/vipsCC/verrormodule.cxx:	sobj->own = 0;
swig/vipsCC/verrormodule.cxx:	SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
swig/vipsCC/verrormodule.cxx:	if (data && !data->implicitconv) {
swig/vipsCC/verrormodule.cxx:	  PyObject *klass = data->klass;
swig/vipsCC/verrormodule.cxx:	    data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
swig/vipsCC/verrormodule.cxx:	    data->implicitconv = 0;
swig/vipsCC/verrormodule.cxx:		    iobj->own = 0;
swig/vipsCC/verrormodule.cxx:    const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
swig/vipsCC/verrormodule.cxx:      desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
swig/vipsCC/verrormodule.cxx:      swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:  PyObject *newraw = data->newraw;
swig/vipsCC/verrormodule.cxx:    inst = PyObject_Call(newraw, data->newargs, NULL);
swig/vipsCC/verrormodule.cxx:    inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None);
swig/vipsCC/verrormodule.cxx:    Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
swig/vipsCC/verrormodule.cxx:    inst = PyInstance_NewRaw(data->newargs, dict);
swig/vipsCC/verrormodule.cxx:  inst = PyInstance_NewRaw(data->newargs, dict);
swig/vipsCC/verrormodule.cxx:  inst->in_class = (PyClassObject *)data->newargs;
swig/vipsCC/verrormodule.cxx:  Py_INCREF(inst->in_class);
swig/vipsCC/verrormodule.cxx:  inst->in_dict = PyDict_New();
swig/vipsCC/verrormodule.cxx:  if (inst->in_dict == NULL) {
swig/vipsCC/verrormodule.cxx:  inst->in_weakreflist = NULL;
swig/vipsCC/verrormodule.cxx:  PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this);
swig/vipsCC/verrormodule.cxx:    SwigPyClientData *clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------*
swig/vipsCC/verrormodule.cxx: * -----------------------------------------------------------------------------*/
swig/vipsCC/verrormodule.cxx:		    "PyModule_AddObject() needs non-NULL value");
swig/vipsCC/verrormodule.cxx:    /* Internal error -- modules must have a dict! */
swig/vipsCC/verrormodule.cxx:  swig_type_info **types = swig_module->types;
swig/vipsCC/verrormodule.cxx:  for (i =0; i < swig_module->size; ++i) {
swig/vipsCC/verrormodule.cxx:    if (ty->owndata) {
swig/vipsCC/verrormodule.cxx:      SwigPyClientData *data = (SwigPyClientData *) ty->clientdata;
swig/vipsCC/verrormodule.cxx:  swig_type_info *ty = v ? v->ty : 0;
swig/vipsCC/verrormodule.cxx:  return ty ? ty->str : (char*)"";
swig/vipsCC/verrormodule.cxx:      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
swig/vipsCC/verrormodule.cxx:  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
swig/vipsCC/verrormodule.cxx:{ /* cc-mode */
swig/vipsCC/verrormodule.cxx:/* -------- TYPES TABLE (BEGIN) -------- */
swig/vipsCC/verrormodule.cxx:/* -------- TYPES TABLE (END) -------- */
swig/vipsCC/verrormodule.cxx:#  error "This python version requires swig to be run with the '-classic' option"
swig/vipsCC/verrormodule.cxx:/*-----------------------------------------------
swig/vipsCC/verrormodule.cxx:  ------------------------------------------------*/
swig/vipsCC/verrormodule.cxx:    PyObject *operator->() const
swig/vipsCC/verrormodule.cxx:           representation of string in Python 3 is UCS-2/UCS-4 but we require
swig/vipsCC/verrormodule.cxx:           a UTF-8 representation.
swig/vipsCC/verrormodule.cxx:      if (val) *val = new std::string(buf, size - 1);
swig/vipsCC/verrormodule.cxx:#   define LLONG_MIN (-LLONG_MAX - 1LL)
swig/vipsCC/verrormodule.cxx:   double rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
swig/vipsCC/verrormodule.cxx:       diff = x - rd;
swig/vipsCC/verrormodule.cxx:       diff = rd - x;
swig/vipsCC/verrormodule.cxx:                return self->what ();
swig/vipsCC/verrormodule.cxx:  (arg1)->perror((char const *)arg2);
swig/vipsCC/verrormodule.cxx:  (arg1)->perror();
swig/vipsCC/verrormodule.cxx:  result = (vips::VError *) &(arg1)->app(arg2);
swig/vipsCC/verrormodule.cxx:  result = (vips::VError *) &(arg1)->app(arg2);
swig/vipsCC/verrormodule.cxx:  result = (char *)((vips::VError const *)arg1)->what();
swig/vipsCC/verrormodule.cxx:  ((vips::VError const *)arg1)->ostream_print(*arg2);
swig/vipsCC/verrormodule.cxx:/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
swig/vipsCC/verrormodule.cxx:/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx: * two-dimensional array. Each row corresponds to a type (there are the same
swig/vipsCC/verrormodule.cxx: * First off, we lookup the cast->type name to see if it is already loaded. 
swig/vipsCC/verrormodule.cxx: *  1) If the cast->type has already been loaded AND the type we are adding
swig/vipsCC/verrormodule.cxx: *     replace the cast->type pointer with the type pointer that has already
swig/vipsCC/verrormodule.cxx: *     cast->type) are loaded, THEN the cast info has already been loaded by
swig/vipsCC/verrormodule.cxx: *  3) Finally, if cast->type has not already been loaded, then we add that
swig/vipsCC/verrormodule.cxx: *     swig_cast_info to the linked list (because the cast->type) pointer will
swig/vipsCC/verrormodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:} /* c-mode */
swig/vipsCC/verrormodule.cxx:      iter=iter->next;
swig/vipsCC/verrormodule.cxx:    swig_module.next = module_head->next;
swig/vipsCC/verrormodule.cxx:    module_head->next = &swig_module;
swig/vipsCC/verrormodule.cxx:    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
swig/vipsCC/verrormodule.cxx:      type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
swig/vipsCC/verrormodule.cxx:      printf("SWIG_InitializeModule: found type %s\n", type->name);
swig/vipsCC/verrormodule.cxx:      if (swig_module.type_initial[i]->clientdata) {
swig/vipsCC/verrormodule.cxx:        type->clientdata = swig_module.type_initial[i]->clientdata;
swig/vipsCC/verrormodule.cxx:        printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
swig/vipsCC/verrormodule.cxx:    while (cast->type) {
swig/vipsCC/verrormodule.cxx:      printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
swig/vipsCC/verrormodule.cxx:        ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
swig/vipsCC/verrormodule.cxx:        if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
swig/vipsCC/verrormodule.cxx:          printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
swig/vipsCC/verrormodule.cxx:          cast->type = ret;
swig/vipsCC/verrormodule.cxx:          swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
swig/vipsCC/verrormodule.cxx:          if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
swig/vipsCC/verrormodule.cxx:        printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
swig/vipsCC/verrormodule.cxx:        if (type->cast) {
swig/vipsCC/verrormodule.cxx:          type->cast->prev = cast;
swig/vipsCC/verrormodule.cxx:          cast->next = type->cast;
swig/vipsCC/verrormodule.cxx:        type->cast = cast;
swig/vipsCC/verrormodule.cxx:    /* Set entry in modules->types array equal to the type */
swig/vipsCC/verrormodule.cxx:    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
swig/vipsCC/verrormodule.cxx:    while (cast->type) {
swig/vipsCC/verrormodule.cxx:      printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
swig/vipsCC/verrormodule.cxx:    printf("---- Total casts: %d\n",j);
swig/vipsCC/verrormodule.cxx:    if (swig_module.types[i]->clientdata) {
swig/vipsCC/verrormodule.cxx:      equiv = swig_module.types[i]->cast;
swig/vipsCC/verrormodule.cxx:        if (!equiv->converter) {
swig/vipsCC/verrormodule.cxx:          if (equiv->type && !equiv->type->clientdata)
swig/vipsCC/verrormodule.cxx:          SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
swig/vipsCC/verrormodule.cxx:        equiv = equiv->next;
swig/vipsCC/verrormodule.cxx:  /* c-mode */
swig/vipsCC/verrormodule.cxx:  /* Python-specific SWIG API */
swig/vipsCC/verrormodule.cxx:  /* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx:   * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:    for (var = v->vars; var; var=var->next) {
swig/vipsCC/verrormodule.cxx:      tail = PyUnicode_FromString(var->name);
swig/vipsCC/verrormodule.cxx:      if (var->next) {
swig/vipsCC/verrormodule.cxx:    for (var = v->vars; var; var=var->next) {
swig/vipsCC/verrormodule.cxx:      PyString_ConcatAndDel(&str,PyString_FromString(var->name));
swig/vipsCC/verrormodule.cxx:      if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
swig/vipsCC/verrormodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/verrormodule.cxx:      swig_globalvar *n = var->next;
swig/vipsCC/verrormodule.cxx:      free(var->name);
swig/vipsCC/verrormodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/verrormodule.cxx:      if (strcmp(var->name,n) == 0) {
swig/vipsCC/verrormodule.cxx:        res = (*var->get_attr)();
swig/vipsCC/verrormodule.cxx:      var = var->next;
swig/vipsCC/verrormodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/verrormodule.cxx:      if (strcmp(var->name,n) == 0) {
swig/vipsCC/verrormodule.cxx:        res = (*var->set_attr)(p);
swig/vipsCC/verrormodule.cxx:      var = var->next;
swig/vipsCC/verrormodule.cxx:        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
swig/vipsCC/verrormodule.cxx:        0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/verrormodule.cxx:      result->vars = 0;
swig/vipsCC/verrormodule.cxx:      gv->name = (char *)malloc(size);
swig/vipsCC/verrormodule.cxx:      if (gv->name) {
swig/vipsCC/verrormodule.cxx:        strncpy(gv->name,name,size);
swig/vipsCC/verrormodule.cxx:        gv->get_attr = get_attr;
swig/vipsCC/verrormodule.cxx:        gv->set_attr = set_attr;
swig/vipsCC/verrormodule.cxx:        gv->next = v->vars;
swig/vipsCC/verrormodule.cxx:    v->vars = gv;
swig/vipsCC/verrormodule.cxx:  /* -----------------------------------------------------------------------------
swig/vipsCC/verrormodule.cxx:   * ----------------------------------------------------------------------------- */
swig/vipsCC/verrormodule.cxx:  /* -----------------------------------------------------------------------------*/
swig/vipsCC/verrormodule.cxx:  /* -----------------------------------------------------------------------------*/
swig/vipsCC/verrormodule.cxx:          size_t shift = (ci->ptype) - types;
swig/vipsCC/verrormodule.cxx:          size_t ldoc = (c - methods[i].ml_doc);
swig/vipsCC/verrormodule.cxx:          size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
swig/vipsCC/verrormodule.cxx:            void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
swig/vipsCC/verrormodule.cxx:              SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
swig/vipsCC/verrormodule.cxx:/* -----------------------------------------------------------------------------*
swig/vipsCC/verrormodule.cxx: * -----------------------------------------------------------------------------*/
swig/vipsCC/verrormodule.cxx:    -1,
swig/vipsCC/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
swig/vipsCC/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
swig/vipsCC/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
swig/vipsCC/Makefile.in:am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
swig/vipsCC/Makefile.in:  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
swig/vipsCC/Makefile.in:vdisplaymodule_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
swig/vipsCC/Makefile.in:	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
swig/vipsCC/Makefile.in:	$(CXXFLAGS) $(vdisplaymodule_la_LDFLAGS) $(LDFLAGS) -o $@
swig/vipsCC/Makefile.in:verrormodule_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
swig/vipsCC/Makefile.in:	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
swig/vipsCC/Makefile.in:	$(CXXFLAGS) $(verrormodule_la_LDFLAGS) $(LDFLAGS) -o $@
swig/vipsCC/Makefile.in:vimagemodule_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
swig/vipsCC/Makefile.in:	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
swig/vipsCC/Makefile.in:	$(CXXFLAGS) $(vimagemodule_la_LDFLAGS) $(LDFLAGS) -o $@
swig/vipsCC/Makefile.in:vmaskmodule_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
swig/vipsCC/Makefile.in:	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
swig/vipsCC/Makefile.in:	$(CXXFLAGS) $(vmaskmodule_la_LDFLAGS) $(LDFLAGS) -o $@
swig/vipsCC/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
swig/vipsCC/Makefile.in:am__mv = mv -f
swig/vipsCC/Makefile.in:LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
swig/vipsCC/Makefile.in:	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
swig/vipsCC/Makefile.in:CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
swig/vipsCC/Makefile.in:	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
swig/vipsCC/Makefile.in:	$(LDFLAGS) -o $@
swig/vipsCC/Makefile.in:py_compile = $(top_srcdir)/py-compile
swig/vipsCC/Makefile.in:	-I${top_srcdir}/libvips/include \
swig/vipsCC/Makefile.in:	-I${top_srcdir}/libvipsCC/include \
swig/vipsCC/Makefile.in:vimagemodule_la_LDFLAGS = -module -avoid-version 
swig/vipsCC/Makefile.in:vdisplaymodule_la_LDFLAGS = -module -avoid-version 
swig/vipsCC/Makefile.in:verrormodule_la_LDFLAGS = -module -avoid-version 
swig/vipsCC/Makefile.in:vmaskmodule_la_LDFLAGS = -module -avoid-version 
swig/vipsCC/Makefile.in:all: all-am
swig/vipsCC/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
swig/vipsCC/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
swig/vipsCC/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/vipsCC/Makefile'; \
swig/vipsCC/Makefile.in:	  $(AUTOMAKE) --gnu swig/vipsCC/Makefile
swig/vipsCC/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
swig/vipsCC/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
swig/vipsCC/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
swig/vipsCC/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
swig/vipsCC/Makefile.in:install-vipsccLTLIBRARIES: $(vipscc_LTLIBRARIES)
swig/vipsCC/Makefile.in:	test -z "$(vipsccdir)" || $(MKDIR_P) "$(DESTDIR)$(vipsccdir)"
swig/vipsCC/Makefile.in:	@list='$(vipscc_LTLIBRARIES)'; test -n "$(vipsccdir)" || list=; \
swig/vipsCC/Makefile.in:	  if test -f $$p; then \
swig/vipsCC/Makefile.in:	test -z "$$list2" || { \
swig/vipsCC/Makefile.in:	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(vipsccdir)'"; \
swig/vipsCC/Makefile.in:	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(vipsccdir)"; \
swig/vipsCC/Makefile.in:uninstall-vipsccLTLIBRARIES:
swig/vipsCC/Makefile.in:	@list='$(vipscc_LTLIBRARIES)'; test -n "$(vipsccdir)" || list=; \
swig/vipsCC/Makefile.in:	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(vipsccdir)/$$f'"; \
swig/vipsCC/Makefile.in:	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(vipsccdir)/$$f"; \
swig/vipsCC/Makefile.in:clean-vipsccLTLIBRARIES:
swig/vipsCC/Makefile.in:	-test -z "$(vipscc_LTLIBRARIES)" || rm -f $(vipscc_LTLIBRARIES)
swig/vipsCC/Makefile.in:	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
swig/vipsCC/Makefile.in:	  echo "rm -f \"$${dir}/so_locations\""; \
swig/vipsCC/Makefile.in:	  rm -f "$${dir}/so_locations"; \
swig/vipsCC/Makefile.in:	$(vdisplaymodule_la_LINK) -rpath $(vipsccdir) $(vdisplaymodule_la_OBJECTS) $(vdisplaymodule_la_LIBADD) $(LIBS)
swig/vipsCC/Makefile.in:	$(verrormodule_la_LINK) -rpath $(vipsccdir) $(verrormodule_la_OBJECTS) $(verrormodule_la_LIBADD) $(LIBS)
swig/vipsCC/Makefile.in:	$(vimagemodule_la_LINK) -rpath $(vipsccdir) $(vimagemodule_la_OBJECTS) $(vimagemodule_la_LIBADD) $(LIBS)
swig/vipsCC/Makefile.in:	$(vmaskmodule_la_LINK) -rpath $(vipsccdir) $(vmaskmodule_la_OBJECTS) $(vmaskmodule_la_LIBADD) $(LIBS)
swig/vipsCC/Makefile.in:mostlyclean-compile:
swig/vipsCC/Makefile.in:	-rm -f *.$(OBJEXT)
swig/vipsCC/Makefile.in:distclean-compile:
swig/vipsCC/Makefile.in:	-rm -f *.tab.c
swig/vipsCC/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
swig/vipsCC/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
swig/vipsCC/Makefile.in:@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
swig/vipsCC/Makefile.in:@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
swig/vipsCC/Makefile.in:@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
swig/vipsCC/Makefile.in:@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
swig/vipsCC/Makefile.in:mostlyclean-libtool:
swig/vipsCC/Makefile.in:	-rm -f *.lo
swig/vipsCC/Makefile.in:clean-libtool:
swig/vipsCC/Makefile.in:	-rm -rf .libs _libs
swig/vipsCC/Makefile.in:install-vipsccPYTHON: $(vipscc_PYTHON)
swig/vipsCC/Makefile.in:	test -z "$(vipsccdir)" || $(MKDIR_P) "$(DESTDIR)$(vipsccdir)"
swig/vipsCC/Makefile.in:	@list='$(vipscc_PYTHON)'; dlist=; list2=; test -n "$(vipsccdir)" || list=; \
swig/vipsCC/Makefile.in:	  if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
swig/vipsCC/Makefile.in:	  if test -f $$b$$p; then \
swig/vipsCC/Makefile.in:	if test -n "$$dlist"; then \
swig/vipsCC/Makefile.in:	  if test -z "$(DESTDIR)"; then \
swig/vipsCC/Makefile.in:	    PYTHON=$(PYTHON) $(py_compile) --basedir "$(vipsccdir)" $$dlist; \
swig/vipsCC/Makefile.in:	    PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(vipsccdir)" $$dlist; \
swig/vipsCC/Makefile.in:uninstall-vipsccPYTHON:
swig/vipsCC/Makefile.in:	@list='$(vipscc_PYTHON)'; test -n "$(vipsccdir)" || list=; \
swig/vipsCC/Makefile.in:	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
swig/vipsCC/Makefile.in:	test -n "$$files" || exit 0; \
swig/vipsCC/Makefile.in:	echo " ( cd '$(DESTDIR)$(vipsccdir)' && rm -f" $$files ")"; \
swig/vipsCC/Makefile.in:	cd "$(DESTDIR)$(vipsccdir)" && rm -f $$files || exit $$?; \
swig/vipsCC/Makefile.in:	echo " ( cd '$(DESTDIR)$(vipsccdir)' && rm -f" $$filesc ")"; \
swig/vipsCC/Makefile.in:	cd "$(DESTDIR)$(vipsccdir)" && rm -f $$filesc || exit $$?; \
swig/vipsCC/Makefile.in:	echo " ( cd '$(DESTDIR)$(vipsccdir)' && rm -f" $$fileso ")"; \
swig/vipsCC/Makefile.in:	cd "$(DESTDIR)$(vipsccdir)" && rm -f $$fileso
swig/vipsCC/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
swig/vipsCC/Makefile.in:	mkid -fID $$unique
swig/vipsCC/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
swig/vipsCC/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
swig/vipsCC/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
swig/vipsCC/Makefile.in:	  if test $$# -gt 0; then \
swig/vipsCC/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
swig/vipsCC/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
swig/vipsCC/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
swig/vipsCC/Makefile.in:distclean-tags:
swig/vipsCC/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
swig/vipsCC/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
swig/vipsCC/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
swig/vipsCC/Makefile.in:			   sort -u` ;; \
swig/vipsCC/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
swig/vipsCC/Makefile.in:	  if test -d $$d/$$file; then \
swig/vipsCC/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
swig/vipsCC/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
swig/vipsCC/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
swig/vipsCC/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
swig/vipsCC/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
swig/vipsCC/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
swig/vipsCC/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
swig/vipsCC/Makefile.in:	    test -f "$(distdir)/$$file" \
swig/vipsCC/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
swig/vipsCC/Makefile.in:check-am: all-am
swig/vipsCC/Makefile.in:check: check-am
swig/vipsCC/Makefile.in:all-am: Makefile $(LTLIBRARIES)
swig/vipsCC/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
swig/vipsCC/Makefile.in:install: install-am
swig/vipsCC/Makefile.in:install-exec: install-exec-am
swig/vipsCC/Makefile.in:install-data: install-data-am
swig/vipsCC/Makefile.in:uninstall: uninstall-am
swig/vipsCC/Makefile.in:install-am: all-am
swig/vipsCC/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
swig/vipsCC/Makefile.in:installcheck: installcheck-am
swig/vipsCC/Makefile.in:install-strip:
swig/vipsCC/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
swig/vipsCC/Makefile.in:	  `test -z '$(STRIP)' || \
swig/vipsCC/Makefile.in:mostlyclean-generic:
swig/vipsCC/Makefile.in:clean-generic:
swig/vipsCC/Makefile.in:	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
swig/vipsCC/Makefile.in:distclean-generic:
swig/vipsCC/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
swig/vipsCC/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
swig/vipsCC/Makefile.in:maintainer-clean-generic:
swig/vipsCC/Makefile.in:clean: clean-am
swig/vipsCC/Makefile.in:clean-am: clean-generic clean-libtool clean-vipsccLTLIBRARIES \
swig/vipsCC/Makefile.in:	mostlyclean-am
swig/vipsCC/Makefile.in:distclean: distclean-am
swig/vipsCC/Makefile.in:	-rm -rf ./$(DEPDIR)
swig/vipsCC/Makefile.in:	-rm -f Makefile
swig/vipsCC/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
swig/vipsCC/Makefile.in:	distclean-tags
swig/vipsCC/Makefile.in:dvi: dvi-am
swig/vipsCC/Makefile.in:dvi-am:
swig/vipsCC/Makefile.in:html: html-am
swig/vipsCC/Makefile.in:html-am:
swig/vipsCC/Makefile.in:info: info-am
swig/vipsCC/Makefile.in:info-am:
swig/vipsCC/Makefile.in:install-data-am: install-vipsccLTLIBRARIES install-vipsccPYTHON
swig/vipsCC/Makefile.in:install-dvi: install-dvi-am
swig/vipsCC/Makefile.in:install-dvi-am:
swig/vipsCC/Makefile.in:install-exec-am:
swig/vipsCC/Makefile.in:install-html: install-html-am
swig/vipsCC/Makefile.in:install-html-am:
swig/vipsCC/Makefile.in:install-info: install-info-am
swig/vipsCC/Makefile.in:install-info-am:
swig/vipsCC/Makefile.in:install-man:
swig/vipsCC/Makefile.in:install-pdf: install-pdf-am
swig/vipsCC/Makefile.in:install-pdf-am:
swig/vipsCC/Makefile.in:install-ps: install-ps-am
swig/vipsCC/Makefile.in:install-ps-am:
swig/vipsCC/Makefile.in:installcheck-am:
swig/vipsCC/Makefile.in:maintainer-clean: maintainer-clean-am
swig/vipsCC/Makefile.in:	-rm -rf ./$(DEPDIR)
swig/vipsCC/Makefile.in:	-rm -f Makefile
swig/vipsCC/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
swig/vipsCC/Makefile.in:mostlyclean: mostlyclean-am
swig/vipsCC/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
swig/vipsCC/Makefile.in:	mostlyclean-libtool
swig/vipsCC/Makefile.in:pdf: pdf-am
swig/vipsCC/Makefile.in:pdf-am:
swig/vipsCC/Makefile.in:ps: ps-am
swig/vipsCC/Makefile.in:ps-am:
swig/vipsCC/Makefile.in:uninstall-am: uninstall-vipsccLTLIBRARIES uninstall-vipsccPYTHON
swig/vipsCC/Makefile.in:.MAKE: install-am install-strip
swig/vipsCC/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
swig/vipsCC/Makefile.in:	clean-libtool clean-vipsccLTLIBRARIES ctags distclean \
swig/vipsCC/Makefile.in:	distclean-compile distclean-generic distclean-libtool \
swig/vipsCC/Makefile.in:	distclean-tags distdir dvi dvi-am html html-am info info-am \
swig/vipsCC/Makefile.in:	install install-am install-data install-data-am install-dvi \
swig/vipsCC/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
swig/vipsCC/Makefile.in:	install-html-am install-info install-info-am install-man \
swig/vipsCC/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
swig/vipsCC/Makefile.in:	install-strip install-vipsccLTLIBRARIES install-vipsccPYTHON \
swig/vipsCC/Makefile.in:	installcheck installcheck-am installdirs maintainer-clean \
swig/vipsCC/Makefile.in:	maintainer-clean-generic mostlyclean mostlyclean-compile \
swig/vipsCC/Makefile.in:	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
swig/vipsCC/Makefile.in:	tags uninstall uninstall-am uninstall-vipsccLTLIBRARIES \
swig/vipsCC/Makefile.in:	uninstall-vipsccPYTHON
swig/vipsCC/Makefile.in:	cpp -DSWIG -E $(top_srcdir)/libvipsCC/include/vips/VImage.h > VImage.h
swig/vipsCC/Makefile.in:	swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $<
swig/vipsCC/Makefile.in:	swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $<
swig/vipsCC/Makefile.in:	swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $<
swig/vipsCC/Makefile.in:	swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $<
swig/vipsCC/vmaskmodule.cxx:/* ----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * changes to this file unless you know what you are doing--modify the SWIG 
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:     if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
swig/vipsCC/vmaskmodule.cxx:   Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
swig/vipsCC/vmaskmodule.cxx:      food(1)   // cast rank '1'  (1 -> 1.0)
swig/vipsCC/vmaskmodule.cxx:#define SWIG_ERROR                 (-1)
swig/vipsCC/vmaskmodule.cxx:/* Cast-Rank Mode */
swig/vipsCC/vmaskmodule.cxx:#  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
swig/vipsCC/vmaskmodule.cxx:#else /* no cast-rank mode */
swig/vipsCC/vmaskmodule.cxx:    if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
swig/vipsCC/vmaskmodule.cxx:  return (int)((l1 - f1) - (l2 - f2));
swig/vipsCC/vmaskmodule.cxx:  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
swig/vipsCC/vmaskmodule.cxx:    swig_cast_info *iter = ty->cast;
swig/vipsCC/vmaskmodule.cxx:      if (strcmp(iter->type->name, c) == 0) {
swig/vipsCC/vmaskmodule.cxx:        if (iter == ty->cast)
swig/vipsCC/vmaskmodule.cxx:        iter->prev->next = iter->next;
swig/vipsCC/vmaskmodule.cxx:        if (iter->next)
swig/vipsCC/vmaskmodule.cxx:          iter->next->prev = iter->prev;
swig/vipsCC/vmaskmodule.cxx:        iter->next = ty->cast;
swig/vipsCC/vmaskmodule.cxx:        iter->prev = 0;
swig/vipsCC/vmaskmodule.cxx:        if (ty->cast) ty->cast->prev = iter;
swig/vipsCC/vmaskmodule.cxx:        ty->cast = iter;
swig/vipsCC/vmaskmodule.cxx:      iter = iter->next;
swig/vipsCC/vmaskmodule.cxx:    swig_cast_info *iter = ty->cast;
swig/vipsCC/vmaskmodule.cxx:      if (iter->type == from) {
swig/vipsCC/vmaskmodule.cxx:        if (iter == ty->cast)
swig/vipsCC/vmaskmodule.cxx:        iter->prev->next = iter->next;
swig/vipsCC/vmaskmodule.cxx:        if (iter->next)
swig/vipsCC/vmaskmodule.cxx:          iter->next->prev = iter->prev;
swig/vipsCC/vmaskmodule.cxx:        iter->next = ty->cast;
swig/vipsCC/vmaskmodule.cxx:        iter->prev = 0;
swig/vipsCC/vmaskmodule.cxx:        if (ty->cast) ty->cast->prev = iter;
swig/vipsCC/vmaskmodule.cxx:        ty->cast = iter;
swig/vipsCC/vmaskmodule.cxx:      iter = iter->next;
swig/vipsCC/vmaskmodule.cxx:  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
swig/vipsCC/vmaskmodule.cxx:  if (!ty || !ty->dcast) return ty;
swig/vipsCC/vmaskmodule.cxx:  while (ty && (ty->dcast)) {
swig/vipsCC/vmaskmodule.cxx:    ty = (*ty->dcast)(ptr);
swig/vipsCC/vmaskmodule.cxx:  return ty->name;
swig/vipsCC/vmaskmodule.cxx:     type, separated by vertical-bar characters.  We choose
swig/vipsCC/vmaskmodule.cxx:  if (type->str != NULL) {
swig/vipsCC/vmaskmodule.cxx:    const char *last_name = type->str;
swig/vipsCC/vmaskmodule.cxx:    for (s = type->str; *s; s++)
swig/vipsCC/vmaskmodule.cxx:    return type->name;
swig/vipsCC/vmaskmodule.cxx:  swig_cast_info *cast = ti->cast;
swig/vipsCC/vmaskmodule.cxx:  /* if (ti->clientdata == clientdata) return; */
swig/vipsCC/vmaskmodule.cxx:  ti->clientdata = clientdata;
swig/vipsCC/vmaskmodule.cxx:    if (!cast->converter) {
swig/vipsCC/vmaskmodule.cxx:      swig_type_info *tc = cast->type;
swig/vipsCC/vmaskmodule.cxx:      if (!tc->clientdata) {
swig/vipsCC/vmaskmodule.cxx:    cast = cast->next;
swig/vipsCC/vmaskmodule.cxx:  ti->owndata = 1;
swig/vipsCC/vmaskmodule.cxx:    if (iter->size) {
swig/vipsCC/vmaskmodule.cxx:      register size_t r = iter->size - 1;
swig/vipsCC/vmaskmodule.cxx:	const char *iname = iter->types[i]->name;
swig/vipsCC/vmaskmodule.cxx:	    return iter->types[i];
swig/vipsCC/vmaskmodule.cxx:	      r = i - 1;
swig/vipsCC/vmaskmodule.cxx:    iter = iter->next;
swig/vipsCC/vmaskmodule.cxx:      for (; i < iter->size; ++i) {
swig/vipsCC/vmaskmodule.cxx:	if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
swig/vipsCC/vmaskmodule.cxx:	  return iter->types[i];
swig/vipsCC/vmaskmodule.cxx:      iter = iter->next;
swig/vipsCC/vmaskmodule.cxx:      uu = ((d - '0') << 4);
swig/vipsCC/vmaskmodule.cxx:      uu = ((d - ('a'-10)) << 4);
swig/vipsCC/vmaskmodule.cxx:      uu |= (d - '0');
swig/vipsCC/vmaskmodule.cxx:      uu |= (d - ('a'-10));
swig/vipsCC/vmaskmodule.cxx:  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_UnknownError    	   -1 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_IOError        	   -2 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_RuntimeError   	   -3 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_IndexError     	   -4 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_TypeError      	   -5 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_DivisionByZero 	   -6 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_OverflowError  	   -7 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_SyntaxError    	   -8 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_ValueError     	   -9 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_SystemError    	   -10
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_AttributeError 	   -11
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_MemoryError    	   -12 
swig/vipsCC/vmaskmodule.cxx:#define  SWIG_NullReferenceError   -13
swig/vipsCC/vmaskmodule.cxx:#  define Py_TYPE(op) ((op)->ob_type)
swig/vipsCC/vmaskmodule.cxx:/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:} /* cc-mode */
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * It is exported to the generated module, used for -fastproxy
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:{ /* cc-mode */
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * of SWIG, and the README file for authors - http://www.swig.org/release.html.
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:} /* cc-mode */
swig/vipsCC/vmaskmodule.cxx:  SwigPyClientData *data = (SwigPyClientData *)ty->clientdata;
swig/vipsCC/vmaskmodule.cxx:  return data ? data->implicitconv : 0;
swig/vipsCC/vmaskmodule.cxx:  SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0;
swig/vipsCC/vmaskmodule.cxx:  PyObject *klass = data ? data->klass : 0;
swig/vipsCC/vmaskmodule.cxx:    data->klass = obj;
swig/vipsCC/vmaskmodule.cxx:    Py_INCREF(data->klass);
swig/vipsCC/vmaskmodule.cxx:      data->newraw = 0;
swig/vipsCC/vmaskmodule.cxx:      data->newargs = obj;
swig/vipsCC/vmaskmodule.cxx:      data->newraw = 0;
swig/vipsCC/vmaskmodule.cxx:      data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__");
swig/vipsCC/vmaskmodule.cxx:      if (data->newraw) {
swig/vipsCC/vmaskmodule.cxx:	Py_INCREF(data->newraw);
swig/vipsCC/vmaskmodule.cxx:	data->newargs = PyTuple_New(1);
swig/vipsCC/vmaskmodule.cxx:	PyTuple_SetItem(data->newargs, 0, obj);
swig/vipsCC/vmaskmodule.cxx:	data->newargs = obj;
swig/vipsCC/vmaskmodule.cxx:      Py_INCREF(data->newargs);
swig/vipsCC/vmaskmodule.cxx:    data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__");
swig/vipsCC/vmaskmodule.cxx:      data->destroy = 0;
swig/vipsCC/vmaskmodule.cxx:    if (data->destroy) {
swig/vipsCC/vmaskmodule.cxx:      Py_INCREF(data->destroy);
swig/vipsCC/vmaskmodule.cxx:      flags = PyCFunction_GET_FLAGS(data->destroy);
swig/vipsCC/vmaskmodule.cxx:      data->delargs = !(flags & (METH_O));
swig/vipsCC/vmaskmodule.cxx:      data->delargs = 0;
swig/vipsCC/vmaskmodule.cxx:      data->delargs = 0;
swig/vipsCC/vmaskmodule.cxx:    data->implicitconv = 0;
swig/vipsCC/vmaskmodule.cxx:  Py_XDECREF(data->newraw);
swig/vipsCC/vmaskmodule.cxx:  Py_XDECREF(data->newargs);
swig/vipsCC/vmaskmodule.cxx:  Py_XDECREF(data->destroy);
swig/vipsCC/vmaskmodule.cxx:  return PyLong_FromVoidPtr(v->ptr);
swig/vipsCC/vmaskmodule.cxx:  const char *name = SWIG_TypePrettyName(v->ty);
swig/vipsCC/vmaskmodule.cxx:  if (v->next) {
swig/vipsCC/vmaskmodule.cxx:    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
swig/vipsCC/vmaskmodule.cxx:    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args);
swig/vipsCC/vmaskmodule.cxx:  return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ?
swig/vipsCC/vmaskmodule.cxx:  void *i = v->ptr;
swig/vipsCC/vmaskmodule.cxx:  void *j = w->ptr;
swig/vipsCC/vmaskmodule.cxx:  return (i < j) ? -1 : ((i > j) ? 1 : 0);
swig/vipsCC/vmaskmodule.cxx:    || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0);
swig/vipsCC/vmaskmodule.cxx:  PyObject *next = sobj->next;
swig/vipsCC/vmaskmodule.cxx:  if (sobj->own == SWIG_POINTER_OWN) {
swig/vipsCC/vmaskmodule.cxx:    swig_type_info *ty = sobj->ty;
swig/vipsCC/vmaskmodule.cxx:    SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
swig/vipsCC/vmaskmodule.cxx:    PyObject *destroy = data ? data->destroy : 0;
swig/vipsCC/vmaskmodule.cxx:      if (data->delargs) {
swig/vipsCC/vmaskmodule.cxx:	PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0);
swig/vipsCC/vmaskmodule.cxx:  sobj->next = next;
swig/vipsCC/vmaskmodule.cxx:  if (sobj->next) {    
swig/vipsCC/vmaskmodule.cxx:    Py_INCREF(sobj->next);
swig/vipsCC/vmaskmodule.cxx:    return sobj->next;
swig/vipsCC/vmaskmodule.cxx:  sobj->own = 0;
swig/vipsCC/vmaskmodule.cxx:  sobj->own = SWIG_POINTER_OWN;
swig/vipsCC/vmaskmodule.cxx:      PyObject *obj = PyBool_FromLong(sobj->own);
swig/vipsCC/vmaskmodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */
swig/vipsCC/vmaskmodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */
swig/vipsCC/vmaskmodule.cxx:    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */
swig/vipsCC/vmaskmodule.cxx:    0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */
swig/vipsCC/vmaskmodule.cxx:	0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/vmaskmodule.cxx:    sobj->ptr  = ptr;
swig/vipsCC/vmaskmodule.cxx:    sobj->ty   = ty;
swig/vipsCC/vmaskmodule.cxx:    sobj->own  = own;
swig/vipsCC/vmaskmodule.cxx:    sobj->next = 0;
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
swig/vipsCC/vmaskmodule.cxx:  fputs(v->ty->name,fp); 
swig/vipsCC/vmaskmodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
swig/vipsCC/vmaskmodule.cxx:    return SWIG_Python_str_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
swig/vipsCC/vmaskmodule.cxx:    return SWIG_Python_str_FromFormat("<Swig Packed %s>", v->ty->name);
swig/vipsCC/vmaskmodule.cxx:  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
swig/vipsCC/vmaskmodule.cxx:    return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name);
swig/vipsCC/vmaskmodule.cxx:    return SWIG_Python_str_FromChar(v->ty->name);
swig/vipsCC/vmaskmodule.cxx:  size_t i = v->size;
swig/vipsCC/vmaskmodule.cxx:  size_t j = w->size;
swig/vipsCC/vmaskmodule.cxx:  int s = (i < j) ? -1 : ((i > j) ? 1 : 0);
swig/vipsCC/vmaskmodule.cxx:  return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
swig/vipsCC/vmaskmodule.cxx:  return ((op)->ob_type == _PySwigPacked_type()) 
swig/vipsCC/vmaskmodule.cxx:    || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0);
swig/vipsCC/vmaskmodule.cxx:    free(sobj->pack);
swig/vipsCC/vmaskmodule.cxx:	0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/vmaskmodule.cxx:      sobj->pack = pack;
swig/vipsCC/vmaskmodule.cxx:      sobj->ty   = ty;
swig/vipsCC/vmaskmodule.cxx:      sobj->size = size;
swig/vipsCC/vmaskmodule.cxx:    if (sobj->size != size) return 0;
swig/vipsCC/vmaskmodule.cxx:    memcpy(ptr, sobj->pack, size);
swig/vipsCC/vmaskmodule.cxx:    return sobj->ty;
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:      int oldown = sobj->own;
swig/vipsCC/vmaskmodule.cxx:      sobj->own = own;
swig/vipsCC/vmaskmodule.cxx:      void *vptr = sobj->ptr;
swig/vipsCC/vmaskmodule.cxx:	swig_type_info *to = sobj->ty;
swig/vipsCC/vmaskmodule.cxx:	  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
swig/vipsCC/vmaskmodule.cxx:	    sobj = (SwigPyObject *)sobj->next;
swig/vipsCC/vmaskmodule.cxx:        *own = *own | sobj->own;
swig/vipsCC/vmaskmodule.cxx:	sobj->own = 0;
swig/vipsCC/vmaskmodule.cxx:	SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
swig/vipsCC/vmaskmodule.cxx:	if (data && !data->implicitconv) {
swig/vipsCC/vmaskmodule.cxx:	  PyObject *klass = data->klass;
swig/vipsCC/vmaskmodule.cxx:	    data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
swig/vipsCC/vmaskmodule.cxx:	    data->implicitconv = 0;
swig/vipsCC/vmaskmodule.cxx:		    iobj->own = 0;
swig/vipsCC/vmaskmodule.cxx:    const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
swig/vipsCC/vmaskmodule.cxx:      desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
swig/vipsCC/vmaskmodule.cxx:      swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:  PyObject *newraw = data->newraw;
swig/vipsCC/vmaskmodule.cxx:    inst = PyObject_Call(newraw, data->newargs, NULL);
swig/vipsCC/vmaskmodule.cxx:    inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None);
swig/vipsCC/vmaskmodule.cxx:    Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
swig/vipsCC/vmaskmodule.cxx:    inst = PyInstance_NewRaw(data->newargs, dict);
swig/vipsCC/vmaskmodule.cxx:  inst = PyInstance_NewRaw(data->newargs, dict);
swig/vipsCC/vmaskmodule.cxx:  inst->in_class = (PyClassObject *)data->newargs;
swig/vipsCC/vmaskmodule.cxx:  Py_INCREF(inst->in_class);
swig/vipsCC/vmaskmodule.cxx:  inst->in_dict = PyDict_New();
swig/vipsCC/vmaskmodule.cxx:  if (inst->in_dict == NULL) {
swig/vipsCC/vmaskmodule.cxx:  inst->in_weakreflist = NULL;
swig/vipsCC/vmaskmodule.cxx:  PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this);
swig/vipsCC/vmaskmodule.cxx:    SwigPyClientData *clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------*
swig/vipsCC/vmaskmodule.cxx: * -----------------------------------------------------------------------------*/
swig/vipsCC/vmaskmodule.cxx:		    "PyModule_AddObject() needs non-NULL value");
swig/vipsCC/vmaskmodule.cxx:    /* Internal error -- modules must have a dict! */
swig/vipsCC/vmaskmodule.cxx:  swig_type_info **types = swig_module->types;
swig/vipsCC/vmaskmodule.cxx:  for (i =0; i < swig_module->size; ++i) {
swig/vipsCC/vmaskmodule.cxx:    if (ty->owndata) {
swig/vipsCC/vmaskmodule.cxx:      SwigPyClientData *data = (SwigPyClientData *) ty->clientdata;
swig/vipsCC/vmaskmodule.cxx:  swig_type_info *ty = v ? v->ty : 0;
swig/vipsCC/vmaskmodule.cxx:  return ty ? ty->str : (char*)"";
swig/vipsCC/vmaskmodule.cxx:      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
swig/vipsCC/vmaskmodule.cxx:  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
swig/vipsCC/vmaskmodule.cxx:{ /* cc-mode */
swig/vipsCC/vmaskmodule.cxx:/* -------- TYPES TABLE (BEGIN) -------- */
swig/vipsCC/vmaskmodule.cxx:/* -------- TYPES TABLE (END) -------- */
swig/vipsCC/vmaskmodule.cxx:#  error "This python version requires swig to be run with the '-classic' option"
swig/vipsCC/vmaskmodule.cxx:/*-----------------------------------------------
swig/vipsCC/vmaskmodule.cxx:  ------------------------------------------------*/
swig/vipsCC/vmaskmodule.cxx:    PyObject *operator->() const
swig/vipsCC/vmaskmodule.cxx:      SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads
swig/vipsCC/vmaskmodule.cxx:      SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads       
swig/vipsCC/vmaskmodule.cxx:      return  (n > 0) ?  incr(n) : decr(-n);
swig/vipsCC/vmaskmodule.cxx:    SwigPyIterator& operator -= (ptrdiff_t n)
swig/vipsCC/vmaskmodule.cxx:      return *advance(-n);
swig/vipsCC/vmaskmodule.cxx:      return copy()->advance(n);
swig/vipsCC/vmaskmodule.cxx:    SwigPyIterator* operator - (ptrdiff_t n) const
swig/vipsCC/vmaskmodule.cxx:      return copy()->advance(-n);
swig/vipsCC/vmaskmodule.cxx:    ptrdiff_t operator - (const SwigPyIterator& x) const
swig/vipsCC/vmaskmodule.cxx:      if ((size_t) (-i) <= size)
swig/vipsCC/vmaskmodule.cxx:      if ((size_t) (-i) <= size) {
swig/vipsCC/vmaskmodule.cxx:    typename Sequence::iterator pos = self->begin();
swig/vipsCC/vmaskmodule.cxx:    std::advance(pos, check_index(i,self->size()));
swig/vipsCC/vmaskmodule.cxx:    typename Sequence::const_iterator pos = self->begin();
swig/vipsCC/vmaskmodule.cxx:    std::advance(pos, check_index(i,self->size()));
swig/vipsCC/vmaskmodule.cxx:    typename Sequence::size_type size = self->size();
swig/vipsCC/vmaskmodule.cxx:      typename Sequence::const_iterator vb = self->begin();
swig/vipsCC/vmaskmodule.cxx:      typename Sequence::const_iterator ve = self->begin();
swig/vipsCC/vmaskmodule.cxx:    typename Sequence::size_type size = self->size();
swig/vipsCC/vmaskmodule.cxx:    size_t ssize = jj - ii;
swig/vipsCC/vmaskmodule.cxx:      typename Sequence::iterator sb = self->begin();
swig/vipsCC/vmaskmodule.cxx:      std::advance(vmid, jj - ii);
swig/vipsCC/vmaskmodule.cxx:      self->insert(std::copy(v.begin(), vmid, sb), vmid, v.end());
swig/vipsCC/vmaskmodule.cxx:      typename Sequence::iterator sb = self->begin();
swig/vipsCC/vmaskmodule.cxx:      typename Sequence::iterator se = self->begin();
swig/vipsCC/vmaskmodule.cxx:      self->erase(sb,se);
swig/vipsCC/vmaskmodule.cxx:      self->insert(sb, v.begin(), v.end());
swig/vipsCC/vmaskmodule.cxx:    typename Sequence::size_type size = self->size();
swig/vipsCC/vmaskmodule.cxx:      typename Sequence::iterator sb = self->begin();
swig/vipsCC/vmaskmodule.cxx:      typename Sequence::iterator se = self->begin();
swig/vipsCC/vmaskmodule.cxx:      self->erase(sb,se);
swig/vipsCC/vmaskmodule.cxx:	return (current == iters->get_current());
swig/vipsCC/vmaskmodule.cxx:	return std::distance(current, iters->get_current());
swig/vipsCC/vmaskmodule.cxx:      while (n--) {
swig/vipsCC/vmaskmodule.cxx:      while (n--) {
swig/vipsCC/vmaskmodule.cxx:	--base::current;
swig/vipsCC/vmaskmodule.cxx:      while (n--) {
swig/vipsCC/vmaskmodule.cxx:      while (n--) {
swig/vipsCC/vmaskmodule.cxx:	  --base::current;
swig/vipsCC/vmaskmodule.cxx:    const T* operator->() const { return &m_value; }
swig/vipsCC/vmaskmodule.cxx:    operator->() const {
swig/vipsCC/vmaskmodule.cxx:    self& operator -- ()
swig/vipsCC/vmaskmodule.cxx:      --_index;
swig/vipsCC/vmaskmodule.cxx:    self& operator -= (difference_type n)
swig/vipsCC/vmaskmodule.cxx:      _index -= n;
swig/vipsCC/vmaskmodule.cxx:    self operator -(difference_type n) const
swig/vipsCC/vmaskmodule.cxx:      return self(_seq, _index - n);
swig/vipsCC/vmaskmodule.cxx:    difference_type operator - (const self& ri) const
swig/vipsCC/vmaskmodule.cxx:      return _index - ri._index;
swig/vipsCC/vmaskmodule.cxx:#   define LLONG_MIN (-LLONG_MAX - 1LL)
swig/vipsCC/vmaskmodule.cxx:   double rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
swig/vipsCC/vmaskmodule.cxx:       diff = x - rd;
swig/vipsCC/vmaskmodule.cxx:       diff = rd - x;
swig/vipsCC/vmaskmodule.cxx:    // seq->assign(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented
swig/vipsCC/vmaskmodule.cxx:      seq->insert(seq->end(),(value_type)(*it));
swig/vipsCC/vmaskmodule.cxx:      if (desc && desc->clientdata) {
swig/vipsCC/vmaskmodule.cxx:           representation of string in Python 3 is UCS-2/UCS-4 but we require
swig/vipsCC/vmaskmodule.cxx:           a UTF-8 representation.
swig/vipsCC/vmaskmodule.cxx:  result = (vips::VMask *) &(arg1)->operator =((vips::VMask const &)*arg2);
swig/vipsCC/vmaskmodule.cxx:    result = (int)((vips::VMask const *)arg1)->xsize();
swig/vipsCC/vmaskmodule.cxx:    result = (int)((vips::VMask const *)arg1)->ysize();
swig/vipsCC/vmaskmodule.cxx:    result = (int)((vips::VMask const *)arg1)->size();
swig/vipsCC/vmaskmodule.cxx:    result = (char *)((vips::VMask const *)arg1)->filename();
swig/vipsCC/vmaskmodule.cxx:  result = ((vips::VMask const *)arg1)->type();
swig/vipsCC/vmaskmodule.cxx:  result = ((vips::VMask const *)arg1)->mask();
swig/vipsCC/vmaskmodule.cxx:  ((vips::VMask const *)arg1)->ostream_print(*arg2);
swig/vipsCC/vmaskmodule.cxx:  result = (int)(arg1)->scale();
swig/vipsCC/vmaskmodule.cxx:  result = (int)(arg1)->offset();
swig/vipsCC/vmaskmodule.cxx:    (arg1)->embed(arg2);
swig/vipsCC/vmaskmodule.cxx:    result = (int *) &(arg1)->operator [](arg2);
swig/vipsCC/vmaskmodule.cxx:    result = (int *) &(arg1)->operator ()(arg2,arg3);
swig/vipsCC/vmaskmodule.cxx:    result = (int)(arg1)->get(arg2);
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->rotate45();
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->rotate90();
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->trn();
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->inv();
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->cat(arg2);
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->mul(arg2);
swig/vipsCC/vmaskmodule.cxx:    (arg1)->embed(arg2);
swig/vipsCC/vmaskmodule.cxx:    result = (double)(arg1)->scale();
swig/vipsCC/vmaskmodule.cxx:    result = (double)(arg1)->offset();
swig/vipsCC/vmaskmodule.cxx:    result = (double *) &(arg1)->operator [](arg2);
swig/vipsCC/vmaskmodule.cxx:    result = (double *) &(arg1)->operator ()(arg2,arg3);
swig/vipsCC/vmaskmodule.cxx:    result = (double)(arg1)->get(arg2);
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->rotate45();
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->rotate90();
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->scalei();
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->trn();
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->inv();
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->cat(arg2);
swig/vipsCC/vmaskmodule.cxx:    result = (arg1)->mul(arg2);
swig/vipsCC/vmaskmodule.cxx:/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
swig/vipsCC/vmaskmodule.cxx:/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx: * two-dimensional array. Each row corresponds to a type (there are the same
swig/vipsCC/vmaskmodule.cxx: * First off, we lookup the cast->type name to see if it is already loaded. 
swig/vipsCC/vmaskmodule.cxx: *  1) If the cast->type has already been loaded AND the type we are adding
swig/vipsCC/vmaskmodule.cxx: *     replace the cast->type pointer with the type pointer that has already
swig/vipsCC/vmaskmodule.cxx: *     cast->type) are loaded, THEN the cast info has already been loaded by
swig/vipsCC/vmaskmodule.cxx: *  3) Finally, if cast->type has not already been loaded, then we add that
swig/vipsCC/vmaskmodule.cxx: *     swig_cast_info to the linked list (because the cast->type) pointer will
swig/vipsCC/vmaskmodule.cxx: * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:} /* c-mode */
swig/vipsCC/vmaskmodule.cxx:      iter=iter->next;
swig/vipsCC/vmaskmodule.cxx:    swig_module.next = module_head->next;
swig/vipsCC/vmaskmodule.cxx:    module_head->next = &swig_module;
swig/vipsCC/vmaskmodule.cxx:    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
swig/vipsCC/vmaskmodule.cxx:      type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
swig/vipsCC/vmaskmodule.cxx:      printf("SWIG_InitializeModule: found type %s\n", type->name);
swig/vipsCC/vmaskmodule.cxx:      if (swig_module.type_initial[i]->clientdata) {
swig/vipsCC/vmaskmodule.cxx:        type->clientdata = swig_module.type_initial[i]->clientdata;
swig/vipsCC/vmaskmodule.cxx:        printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
swig/vipsCC/vmaskmodule.cxx:    while (cast->type) {
swig/vipsCC/vmaskmodule.cxx:      printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
swig/vipsCC/vmaskmodule.cxx:        ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
swig/vipsCC/vmaskmodule.cxx:        if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
swig/vipsCC/vmaskmodule.cxx:          printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
swig/vipsCC/vmaskmodule.cxx:          cast->type = ret;
swig/vipsCC/vmaskmodule.cxx:          swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
swig/vipsCC/vmaskmodule.cxx:          if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
swig/vipsCC/vmaskmodule.cxx:        printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
swig/vipsCC/vmaskmodule.cxx:        if (type->cast) {
swig/vipsCC/vmaskmodule.cxx:          type->cast->prev = cast;
swig/vipsCC/vmaskmodule.cxx:          cast->next = type->cast;
swig/vipsCC/vmaskmodule.cxx:        type->cast = cast;
swig/vipsCC/vmaskmodule.cxx:    /* Set entry in modules->types array equal to the type */
swig/vipsCC/vmaskmodule.cxx:    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
swig/vipsCC/vmaskmodule.cxx:    while (cast->type) {
swig/vipsCC/vmaskmodule.cxx:      printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
swig/vipsCC/vmaskmodule.cxx:    printf("---- Total casts: %d\n",j);
swig/vipsCC/vmaskmodule.cxx:    if (swig_module.types[i]->clientdata) {
swig/vipsCC/vmaskmodule.cxx:      equiv = swig_module.types[i]->cast;
swig/vipsCC/vmaskmodule.cxx:        if (!equiv->converter) {
swig/vipsCC/vmaskmodule.cxx:          if (equiv->type && !equiv->type->clientdata)
swig/vipsCC/vmaskmodule.cxx:          SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
swig/vipsCC/vmaskmodule.cxx:        equiv = equiv->next;
swig/vipsCC/vmaskmodule.cxx:  /* c-mode */
swig/vipsCC/vmaskmodule.cxx:  /* Python-specific SWIG API */
swig/vipsCC/vmaskmodule.cxx:  /* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx:   * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:    for (var = v->vars; var; var=var->next) {
swig/vipsCC/vmaskmodule.cxx:      tail = PyUnicode_FromString(var->name);
swig/vipsCC/vmaskmodule.cxx:      if (var->next) {
swig/vipsCC/vmaskmodule.cxx:    for (var = v->vars; var; var=var->next) {
swig/vipsCC/vmaskmodule.cxx:      PyString_ConcatAndDel(&str,PyString_FromString(var->name));
swig/vipsCC/vmaskmodule.cxx:      if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
swig/vipsCC/vmaskmodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/vmaskmodule.cxx:      swig_globalvar *n = var->next;
swig/vipsCC/vmaskmodule.cxx:      free(var->name);
swig/vipsCC/vmaskmodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/vmaskmodule.cxx:      if (strcmp(var->name,n) == 0) {
swig/vipsCC/vmaskmodule.cxx:        res = (*var->get_attr)();
swig/vipsCC/vmaskmodule.cxx:      var = var->next;
swig/vipsCC/vmaskmodule.cxx:    swig_globalvar *var = v->vars;
swig/vipsCC/vmaskmodule.cxx:      if (strcmp(var->name,n) == 0) {
swig/vipsCC/vmaskmodule.cxx:        res = (*var->set_attr)(p);
swig/vipsCC/vmaskmodule.cxx:      var = var->next;
swig/vipsCC/vmaskmodule.cxx:        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
swig/vipsCC/vmaskmodule.cxx:        0,0,0,0                             /* tp_alloc -> tp_next */
swig/vipsCC/vmaskmodule.cxx:      result->vars = 0;
swig/vipsCC/vmaskmodule.cxx:      gv->name = (char *)malloc(size);
swig/vipsCC/vmaskmodule.cxx:      if (gv->name) {
swig/vipsCC/vmaskmodule.cxx:        strncpy(gv->name,name,size);
swig/vipsCC/vmaskmodule.cxx:        gv->get_attr = get_attr;
swig/vipsCC/vmaskmodule.cxx:        gv->set_attr = set_attr;
swig/vipsCC/vmaskmodule.cxx:        gv->next = v->vars;
swig/vipsCC/vmaskmodule.cxx:    v->vars = gv;
swig/vipsCC/vmaskmodule.cxx:  /* -----------------------------------------------------------------------------
swig/vipsCC/vmaskmodule.cxx:   * ----------------------------------------------------------------------------- */
swig/vipsCC/vmaskmodule.cxx:  /* -----------------------------------------------------------------------------*/
swig/vipsCC/vmaskmodule.cxx:  /* -----------------------------------------------------------------------------*/
swig/vipsCC/vmaskmodule.cxx:          size_t shift = (ci->ptype) - types;
swig/vipsCC/vmaskmodule.cxx:          size_t ldoc = (c - methods[i].ml_doc);
swig/vipsCC/vmaskmodule.cxx:          size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
swig/vipsCC/vmaskmodule.cxx:            void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
swig/vipsCC/vmaskmodule.cxx:              SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
swig/vipsCC/vmaskmodule.cxx:/* -----------------------------------------------------------------------------*
swig/vipsCC/vmaskmodule.cxx: * -----------------------------------------------------------------------------*/
swig/vipsCC/vmaskmodule.cxx:    -1,
swig/vipsCC/VMask.py:# Do not make changes to this file unless you know what you are doing--modify
swig/vipsCC/VMask.py:# This file is compatible with both classic and new-style classes.
swig/vipsCC/VError.py:# Do not make changes to this file unless you know what you are doing--modify
swig/vipsCC/VError.py:# This file is compatible with both classic and new-style classes.
swig/test/bench_vips.py:im = im.extract_area (100, 100, im.Xsize() - 200, im.Ysize() - 200)
swig/test/bench_vips.py:		  [-1, -1, -1, 
swig/test/bench_vips.py:		   -1,  16, -1, 
swig/test/bench_vips.py:		   -1, -1, -1])
swig/test/testvipsCC.py:		   	  [-1, -1, -1, 
swig/test/testvipsCC.py:			   -1,  8, -1, 
swig/test/testvipsCC.py:			   -1, -1, -1])
swig/test/bench_pil.py:im = im.crop ((100, 100, im.size[0] - 100, im.size[1] - 100))
swig/test/bench_pil.py:	      (-1, -1, -1,
swig/test/bench_pil.py:	       -1, 16, -1,
swig/test/bench_pil.py:	       -1, -1, -1))
THANKS:	Thomson-CSF
THANKS:Hewlett-Packard.
TODO:- tools subdirs are now pretty stupid :-( just have a single dir
TODO:- test
TODO:  File "/usr/local/lib/python2.6/dist-packages/vipsCC/VImage.py", line 25, in
TODO:  File "/usr/local/lib/python2.6/dist-packages/vipsCC/VImage.py", line 21, in
TODO:ImportError: /usr/local/lib/python2.6/dist-packages/vipsCC/vimagemodule.so:
TODO:gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall
TODO:-Wstrict-prototypes -fPIC -DDEBUG_FATAL=1 -DDEBUG_LEAK=1
TODO:-I/usr/lib/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/libxml2
TODO:-I/usr/include/libpng12 -I/usr/include/libexif -I/usr/include/glib-2.0
TODO:-I/usr/include/freetype2 -I/usr/include/OpenEXR -I/usr/include/ImageMagick
TODO:-I../../libvips/include -I../../libvipsCC/include -I/usr/include/python2.6 -c
TODO:vimagemodule.cpp -o build/temp.linux-x86_64-2.6/vimagemodule.o -pthread
TODO:-fopenmp -pthread -Wl,--export-dynamic -pthread -pthread -pthread
TODO:g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions
TODO:build/temp.linux-x86_64-2.6/vimagemodule.o -Wl,-R/home/john/vips/lib
TODO:-lMagickWand -lMagickCore -lpng12 -ltiff -lz -ljpeg -lgthread-2.0 -lrt
TODO:-lglib-2.0 -lgmodule-2.0 -lxml2 -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0
TODO:-lpangoft2-1.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0
TODO:-lgthread-2.0 -lrt -lglib-2.0 -lfftw3 -lm -llcms -lIlmImf -lz -lImath -lHalf
TODO:-lIex -lIlmThread -lmatio -lz -lexif -lm -lstdc++ -lm -o
TODO:build/lib.linux-x86_64-2.6/vipsCC/vimagemodule.so -pthread -fopenmp -pthread
TODO:-Wl,--export-dynamic -pthread -pthread -pthread
TODO:g++ -DHAVE_CONFIG_H -I. -I../.. -I../../libvips/include -I../../libvipsCC/include -DDEBUG_FATAL -DDEBUG_LEAK -pthread -fopenmp -I/usr/lib/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/libxml2 -I/usr/include/libpng12 -I/usr/include/libexif -I/usr/include/glib-2.0 -I/usr/include/freetype2 -I/usr/include/OpenEXR -I/usr/include/ImageMagick -I/usr/include/python2.6 -g -Wall -MT vimagemodule.lo -MD -MP -MF .deps/vimagemodule.Tpo -c vimagemodule.cxx -o vimagemodule.o >/dev/null 2>&1
TODO:g++ -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.4.3/crtbeginS.o  .libs/vimagemodule.o   -Wl,-rpath -Wl,/home/john/SVN/vips/vips7/trunk/libvipsCC/.libs -Wl,-rpath -Wl,/home/john/SVN/vips/vips7/trunk/libvips/.libs -Wl,-rpath -Wl,/home/john/vips/lib ../../libvipsCC/.libs/libvipsCC.so ../../libvips/.libs/libvips.so /usr/lib/libMagickWand.so /usr/lib/libMagickCore.so -lpng12 /usr/lib/libtiff.so /usr/lib/libjpeg.so /usr/lib/libxml2.so /usr/lib/libpangoft2-1.0.so /usr/lib/libpango-1.0.so /usr/lib/libfreetype.so -lfontconfig /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libgthread-2.0.so -lrt /usr/lib/libglib-2.0.so /usr/lib/libfftw3.so /usr/lib/liblcms.so /usr/lib/libIlmImf.so -lImath -lHalf -lIex -lIlmThread /usr/lib/libmatio.so -lz /usr/lib/libexif.so -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../.. -L/usr/lib/x86_64-linux-gnu -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/4.4.3/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crtn.o  -pthread -Wl,--export-dynamic -pthread -pthread -pthread   -pthread -Wl,-soname -Wl,vimagemodule.so -o .libs/vimagemodule.so
TODO:- convert_saveable for other writers: tiff, ppm, csv, rad etc.
TODO:- the tiff writer could use more im_check_ things
TODO:- expose more of the tone funcs in nip2
TODO:- quite a few hist operations have no GUI ... lhisteq, for example? or
TODO:- added im_local_imask(), im_local_dmask(), needs docs?
TODO:- im_rotate_imask90 only works for square, odd-sized masks, argh
TODO:- lots of stupid little files in hist, eg. im_hsp.c ... paste them into larger 
TODO:- try writing docs for vipsthumbnail with gtkdoc? then try header etc.
TODO:- rename header, edvips as vipsheader, vipsedit
TODO:- should im_rwcheck() copy to disc?
TODO:  maybe im_rwcheck_disc() copies to im->filename and maps that
TODO:- what does G_UNLIKELY() do? can we use it?
TODO:- rename vipsCC in SWIG as pyvips?
TODO:- look into G_GNUC_DEPRECATED for back compat in vips8
TODO:- use
TODO:	http://library.gnome.org/devel/glib/stable/glib-Byte-Order-Macros.html
TODO:- can we use conv_sep to speed up the memuse benchmarks?
TODO:- move im_shrink & friends to resample?
TODO:- check mosaic1, global_balance, similarity etc. use of im__affine
TODO:- doc strings would be nice, read the SWIG notes on this
TODO:- bilateral filtering, see:
TODO:- try making vips_add(), an operator as a class
TODO:- need a section for vipsobject in the tutorial
TODO:- how to expose things like snohalo1's "blur" parameter to
TODO:  can we write a find-by-nickname function? eg.
TODO:- we shouldn't need to call im_invalidate() in gtkdisp4 :( how can we fix
TODO:- we should wrap the format API, also im_render*(), see gtkdisp.cc for sample
TODO:- have a base VObject class and put the ref stuff in there ... share between
TODO:- need an im_init_world() for C++ which does cmd-line args too, so C++ progs
TODO:  can get --vips-progress and stuff automatically
TODO:- more cleanups to the handling of vips format images, esp. we have vips write
TODO:- could remove a lot of crappy old API
TODO:- try
TODO:	libsrc/convolution$ grep -l offsets *.c
TODO:- unsharp should work on GREY16? should be easy to add GREY16->LABS
TODO:  yuk, can we add a 16bit path to vips's lab <--> rgb converter?
TODO:  table->t_Yr2r[i] expanded
TODO:  the 1,500 element table table->t_r2Yr[i] expanded
TODO:  	table->t_r2Yr[i] = yo + a * pow( i * table->ristep / f + c, ga );
TODO:- test maxpos_avg, quite a few changes
TODO:- HAVE_HYPOT could define a hypot() macro?
TODO:- im_exr2vips can now use c++ api
TODO:- python startup fails with plugins in vipslib:
TODO:  do we need to build plugins with -rpath etc. and more libs?
TODO:- write our own python extension to call a vips operation by name
TODO:- do we really need VImage_method? Can't we write
TODO:- TIFF load/save should use meta system for unknown tags
TODO:- balance should use new meta stuff
TODO:- magick2vips should spot ICC profiles and attach them as meta
TODO:- also png2vips?
TODO:- magick should set some header field for n_frames and frame_height? see also
TODO:- im_csv2vips() could use "-" for filename to mean stdin
TODO:- add erode/dilate 3x3 special case using a 512-bit LUT
TODO:  ... nope, actually slower :-( we end up doing an inner loop like
TODO:  about converting non-zero to 1
TODO:- non-linear sharpen: replace each pixel by the lightest or darkest neighbour
TODO:- can wrap other inplace funcs which use ink now we have vector_to_ink() in
TODO:  see also comments in nip2 TODO ... we could auto-wrap in vips_call.c
tools/iofuncs/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
tools/iofuncs/Makefile.am:install-exec-hook:
tools/iofuncs/Makefile.am:uninstall-hook:
tools/iofuncs/vips.c: * 	- use GOption. g_*_prgname()
tools/iofuncs/vips.c: * 	- hmm, was broken for function name as argv1 case
tools/iofuncs/vips.c: * 	- add "all" option to -l
tools/iofuncs/vips.c: * 	- ignore "--" arguments.
tools/iofuncs/vips.c: * 	- do less init ... im_init_world() does more now
tools/iofuncs/vips.c: * 	- use IM_EXEEXT
tools/iofuncs/vips.c: * 	- add --version
tools/iofuncs/vips.c: * 	- add --swig
tools/iofuncs/vips.c: * 	- cleanups
tools/iofuncs/vips.c: * 	- remove --swig again, sigh
tools/iofuncs/vips.c: * 	- add throw() decls to C++ to help SWIG
tools/iofuncs/vips.c: * 	- add --list packages
tools/iofuncs/vips.c: * 	- add input *VEC arg types to C++ binding
tools/iofuncs/vips.c: * 	- add --list formats
tools/iofuncs/vips.c: * 	- add --list interpolators
tools/iofuncs/vips.c: * 	- and now we just have --list packages/classes/package-name
tools/iofuncs/vips.c: * 	- drop _f postfixes, drop many postfixes
tools/iofuncs/vips.c: * 	- less chatty error messages
tools/iofuncs/vips.c: * 	- oops, don't rename "copy_set" as "copy_"
tools/iofuncs/vips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/iofuncs/vips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/iofuncs/vips.c:	for( i = 0; i < pack->nfuncs; i++ ) 
tools/iofuncs/vips.c:		if( (result = fn( pack->table[i] )) )
tools/iofuncs/vips.c:	printf( "%-20s - %d operations\n", pack->name, pack->nfuncs );
tools/iofuncs/vips.c:	printf( "%-20s - %s\n", func->name, _( func->desc ) );
tools/iofuncs/vips.c:	return( strcasecmp( s1, s2 + l2 - l1 ) == 0 );
tools/iofuncs/vips.c:/* Print "ln -s" lines for this package.
tools/iofuncs/vips.c:	for( i = 0; i < pack->nfuncs; i++ ) 
tools/iofuncs/vips.c:		printf( "rm -f %s" IM_EXEEXT "; "
tools/iofuncs/vips.c:			"ln -s vips" IM_EXEEXT " %s" IM_EXEEXT "\n", 
tools/iofuncs/vips.c:			pack->table[i]->name, pack->table[i]->name );
tools/iofuncs/vips.c:	for( i = 0; i < fn->argc; i++ )
tools/iofuncs/vips.c:		if( fn->argv[i].print )
tools/iofuncs/vips.c:			return( -1 );
tools/iofuncs/vips.c:	im_package *pack = im_package_of_function( fn->name );
tools/iofuncs/vips.c:	fprintf( stderr, "%s ", fn->name ); 
tools/iofuncs/vips.c:	/* Print args requiring command-line input.
tools/iofuncs/vips.c:	for( i = 0; i < fn->argc; i++ )
tools/iofuncs/vips.c:		if( fn->argv[i].desc->flags & IM_TYPE_ARG )
tools/iofuncs/vips.c:			fprintf( stderr, "%s ", fn->argv[i].name );
tools/iofuncs/vips.c:	for( i = 0; i < fn->argc; i++ )
tools/iofuncs/vips.c:		if( fn->argv[i].desc->flags & IM_TYPE_ARG )
tools/iofuncs/vips.c:				fn->argv[i].name, fn->argv[i].desc->type );
tools/iofuncs/vips.c:		for( i = 0; i < fn->argc; i++ )
tools/iofuncs/vips.c:			if( fn->argv[i].print ) 
tools/iofuncs/vips.c:					fn->argv[i].name, 
tools/iofuncs/vips.c:					fn->argv[i].desc->type );
tools/iofuncs/vips.c:	fprintf( stderr, "%s", _( fn->desc ) );
tools/iofuncs/vips.c:		fprintf( stderr, ", from package \"%s\"", pack->name );
tools/iofuncs/vips.c:	if( fn->flags & IM_FN_PIO )
tools/iofuncs/vips.c:	if( fn->flags & IM_FN_TRANSFORM )
tools/iofuncs/vips.c:	if( fn->flags & IM_FN_PTOP )
tools/iofuncs/vips.c:		fprintf( stderr, "(point-to-point operation) " );
tools/iofuncs/vips.c:	if( fn->flags & IM_FN_NOCACHE )
tools/iofuncs/vips.c:		if( strcmp( ty->type, vtypes[k] ) == 0 ) 
tools/iofuncs/vips.c:	for( j = 0; j < fn->argc; j++ ) {
tools/iofuncs/vips.c:		im_type_desc *ty = fn->argv[j].desc;
tools/iofuncs/vips.c:	for( j = 0; j < fn->argc; j++ ) {
tools/iofuncs/vips.c:		im_type_desc *ty = fn->argv[j].desc;
tools/iofuncs/vips.c:		if( ty->flags & IM_TYPE_OUTPUT ) 
tools/iofuncs/vips.c:			if( strcmp( ty->type, IM_TYPE_IMAGEVEC ) == 0 ||
tools/iofuncs/vips.c:				strcmp( ty->type, IM_TYPE_DOUBLEVEC ) == 0 ||
tools/iofuncs/vips.c:				strcmp( ty->type, IM_TYPE_INTVEC ) == 0 )
tools/iofuncs/vips.c:	for( j = 0; j < fn->argc; j++ ) 
tools/iofuncs/vips.c:		if( strcmp( fn->argv[j].desc->type, IM_TYPE_IMAGE ) == 0 ) 
tools/iofuncs/vips.c:	if( j == fn->argc )
tools/iofuncs/vips.c:	return( -1 );
tools/iofuncs/vips.c:	/* Look for first output arg - this will be the result of the
tools/iofuncs/vips.c:	*oa = -1;
tools/iofuncs/vips.c:	for( j = 0; j < fn->argc; j++ ) {
tools/iofuncs/vips.c:		im_type_desc *ty = fn->argv[j].desc;
tools/iofuncs/vips.c:		if( ty->flags & IM_TYPE_OUTPUT ) {
tools/iofuncs/vips.c:	*ia = -1;
tools/iofuncs/vips.c:	for( j = 0; j < fn->argc; j++ ) {
tools/iofuncs/vips.c:		im_type_desc *ty = fn->argv[j].desc;
tools/iofuncs/vips.c:		if( !(ty->flags & IM_TYPE_OUTPUT) && 
tools/iofuncs/vips.c:			strcmp( ty->type, IM_TYPE_IMAGE ) == 0 ) {
tools/iofuncs/vips.c:		str[strlen( str ) - strlen( postfix )] = '\0';
tools/iofuncs/vips.c:	c2cpp_name( fn->name, name );
tools/iofuncs/vips.c:	if( oa == -1 )
tools/iofuncs/vips.c:		printf( "%s ", vips2cpp( fn->argv[oa].desc ) );
tools/iofuncs/vips.c:	for( j = 0; j < fn->argc; j++ ) {
tools/iofuncs/vips.c:		im_type_desc *ty = fn->argv[j].desc;
tools/iofuncs/vips.c:		if( ty->flags & IM_TYPE_OUTPUT )
tools/iofuncs/vips.c:		printf( " %s", fn->argv[j].name );
tools/iofuncs/vips.c:	c2cpp_name( fn->name, name );
tools/iofuncs/vips.c:	if( ia == -1 ) 
tools/iofuncs/vips.c:	if( oa == -1 )
tools/iofuncs/vips.c:		printf( "%s ", vips2cpp( fn->argv[oa].desc ) );
tools/iofuncs/vips.c:	for( j = 0; j < fn->argc; j++ ) {
tools/iofuncs/vips.c:		im_type_desc *ty = fn->argv[j].desc;
tools/iofuncs/vips.c:		if( ty->flags & IM_TYPE_OUTPUT )
tools/iofuncs/vips.c:	printf( "\t((%s*) _vec.data(%d))->n = %s.size();\n",
tools/iofuncs/vips.c:	printf( "\t((%s*) _vec.data(%d))->vec = new %s[%s.size()];\n",
tools/iofuncs/vips.c:	printf( "\t\t((%s*) _vec.data(%d))->vec[i] = %s[i]%s;\n",
tools/iofuncs/vips.c:	printf( "// %s: %s\n", fn->name, _( fn->desc ) );
tools/iofuncs/vips.c:	if( ia != -1 )
tools/iofuncs/vips.c:		printf( "\tVImage %s = *this;\n", fn->argv[ia].name );
tools/iofuncs/vips.c:	if( oa != -1 )
tools/iofuncs/vips.c:			vips2cpp( fn->argv[oa].desc ),
tools/iofuncs/vips.c:			fn->argv[oa].name );
tools/iofuncs/vips.c:	printf( "\tVargv _vec( \"%s\" );\n\n", fn->name );
tools/iofuncs/vips.c:	for( j = 0; j < fn->argc; j++ ) {
tools/iofuncs/vips.c:		im_type_desc *ty = fn->argv[j].desc;
tools/iofuncs/vips.c:		/* Images are special - have to init the vector, even
tools/iofuncs/vips.c:		if( strcmp( ty->type, IM_TYPE_IMAGE ) == 0 ) {
tools/iofuncs/vips.c:				j, fn->argv[j].name );
tools/iofuncs/vips.c:		if( (ty->flags & IM_TYPE_OUTPUT) && 
tools/iofuncs/vips.c:			(strcmp( ty->type, IM_TYPE_IMASK ) == 0 ||
tools/iofuncs/vips.c:			strcmp( ty->type, IM_TYPE_DMASK ) == 0) ) {
tools/iofuncs/vips.c:			printf( "\t((im_mask_object*) _vec.data(%d))->name = "
tools/iofuncs/vips.c:		if( ty->flags & IM_TYPE_OUTPUT )
tools/iofuncs/vips.c:		if( strcmp( ty->type, IM_TYPE_IMASK ) == 0 )
tools/iofuncs/vips.c:			/* Mask types are different - have to use
tools/iofuncs/vips.c:				"_vec.data(%d))->mask = %s.mask().iptr;\n",
tools/iofuncs/vips.c:				j, fn->argv[j].name );
tools/iofuncs/vips.c:		else if( strcmp( ty->type, IM_TYPE_DMASK ) == 0 ) 
tools/iofuncs/vips.c:				"_vec.data(%d))->mask = %s.mask().dptr;\n",
tools/iofuncs/vips.c:				j, fn->argv[j].name );
tools/iofuncs/vips.c:		else if( strcmp( ty->type, IM_TYPE_DISPLAY ) == 0 )
tools/iofuncs/vips.c:				j, fn->argv[j].name );
tools/iofuncs/vips.c:		else if( strcmp( ty->type, IM_TYPE_STRING ) == 0 )
tools/iofuncs/vips.c:				j, fn->argv[j].name );
tools/iofuncs/vips.c:		else if( strcmp( ty->type, IM_TYPE_IMAGEVEC ) == 0 ) 
tools/iofuncs/vips.c:			print_invec( j, fn->argv[j].name, 
tools/iofuncs/vips.c:		else if( strcmp( ty->type, IM_TYPE_DOUBLEVEC ) == 0 ) 
tools/iofuncs/vips.c:			print_invec( j, fn->argv[j].name, 
tools/iofuncs/vips.c:		else if( strcmp( ty->type, IM_TYPE_INTVEC ) == 0 ) 
tools/iofuncs/vips.c:			print_invec( j, fn->argv[j].name, 
tools/iofuncs/vips.c:				vips2cpp( ty ), j, fn->argv[j].name );
tools/iofuncs/vips.c:	for( j = 0; j < fn->argc; j++ ) {
tools/iofuncs/vips.c:		im_type_desc *ty = fn->argv[j].desc;
tools/iofuncs/vips.c:		if( !(ty->flags & IM_TYPE_OUTPUT) )
tools/iofuncs/vips.c:		if( strcmp( ty->type, IM_TYPE_IMAGE ) == 0 )
tools/iofuncs/vips.c:		if( strcmp( ty->type, IM_TYPE_IMASK ) == 0 ||
tools/iofuncs/vips.c:			strcmp( ty->type, IM_TYPE_DMASK ) == 0 ) 
tools/iofuncs/vips.c:			/* Mask types are different - have to use
tools/iofuncs/vips.c:				"_vec.data(%d))->mask );\n",
tools/iofuncs/vips.c:				fn->argv[j].name, j );
tools/iofuncs/vips.c:		else if( strcmp( ty->type, IM_TYPE_STRING ) == 0 )
tools/iofuncs/vips.c:				fn->argv[j].name, j ); 
tools/iofuncs/vips.c:				fn->argv[j].name, vips2cpp( ty ), j ); 
tools/iofuncs/vips.c:	if( oa != -1 ) {
tools/iofuncs/vips.c:		im_type_desc *ty = fn->argv[oa].desc;
tools/iofuncs/vips.c:		if( strcmp( ty->type, IM_TYPE_IMAGE ) == 0 &&
tools/iofuncs/vips.c:			(fn->flags & IM_FN_PIO) ) {
tools/iofuncs/vips.c:			for( j = 0; j < fn->argc; j++ ) {
tools/iofuncs/vips.c:				im_type_desc *ty2 = fn->argv[j].desc;
tools/iofuncs/vips.c:				if( ty2->flags & IM_TYPE_OUTPUT )
tools/iofuncs/vips.c:				if( strcmp( ty2->type, IM_TYPE_IMAGE ) == 0 ) 
tools/iofuncs/vips.c:					printf( "\t%s._ref->addref( "
tools/iofuncs/vips.c:						fn->argv[oa].name,
tools/iofuncs/vips.c:						fn->argv[j].name );
tools/iofuncs/vips.c:				else if( strcmp( ty2->type, IM_TYPE_IMAGEVEC ) 
tools/iofuncs/vips.c:						fn->argv[j].name );
tools/iofuncs/vips.c:					printf( "\t\t%s._ref->addref( "
tools/iofuncs/vips.c:						fn->argv[oa].name,
tools/iofuncs/vips.c:						fn->argv[j].name );
tools/iofuncs/vips.c:	if( oa != -1 )
tools/iofuncs/vips.c:		printf( "\n\treturn( %s );\n", fn->argv[oa].name );
tools/iofuncs/vips.c:        context = g_option_context_new( _( "- VIPS driver program" ) );
tools/iofuncs/vips.c:			fprintf( stderr, "%s\n", error->message );
tools/iofuncs/vips.c:		error_exit( "try \"%s --help\"", g_get_prgname() );
tools/iofuncs/vips.c:		printf( "vips-%s\n", im_version_string() );
tools/iofuncs/vips.c:	/* Remove any "--" argument. If one of our arguments is a negative
tools/iofuncs/vips.c:	 * number, the user will need to have added the "--" flag to stop
tools/iofuncs/vips.c:	 * GOption parsing. But "--" is still passed down to us and we need to
tools/iofuncs/vips.c:	for( i = 1; i < argc - 1; i++ )
tools/iofuncs/vips.c:		if( strcmp( argv[i], "--" ) == 0 ) {
tools/iofuncs/vips.c:			argc -= 1;
tools/iofuncs/vips.c:			name[strlen( name ) - 4] = '\0';
tools/iofuncs/vips.c:				name[strlen( name ) - 4] = '\0';
tools/iofuncs/vips.c:		if( im_run_command( name, argc - 1, argv + 1 ) ) {
tools/iofuncs/vips.c:			 * show usage. There are no-arg operations, so we have
tools/iofuncs/vips.c:		if( im_run_command( argv[1], argc - 2, argv + 2 ) ) {
tools/iofuncs/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
tools/iofuncs/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
tools/iofuncs/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
tools/iofuncs/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
tools/iofuncs/Makefile.in:am__mv = mv -f
tools/iofuncs/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
tools/iofuncs/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
tools/iofuncs/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
tools/iofuncs/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
tools/iofuncs/Makefile.in:	$(LDFLAGS) -o $@
tools/iofuncs/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
tools/iofuncs/Makefile.in:all: all-am
tools/iofuncs/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
tools/iofuncs/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
tools/iofuncs/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/iofuncs/Makefile'; \
tools/iofuncs/Makefile.in:	  $(AUTOMAKE) --gnu tools/iofuncs/Makefile
tools/iofuncs/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
tools/iofuncs/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/iofuncs/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/iofuncs/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/iofuncs/Makefile.in:install-binPROGRAMS: $(bin_PROGRAMS)
tools/iofuncs/Makefile.in:	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
tools/iofuncs/Makefile.in:	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
tools/iofuncs/Makefile.in:	while read p p1; do if test -f $$p || test -f $$p1; \
tools/iofuncs/Makefile.in:	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
tools/iofuncs/Makefile.in:	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
tools/iofuncs/Makefile.in:	    test -z "$$files" || { \
tools/iofuncs/Makefile.in:	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
tools/iofuncs/Makefile.in:	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
tools/iofuncs/Makefile.in:uninstall-binPROGRAMS:
tools/iofuncs/Makefile.in:	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
tools/iofuncs/Makefile.in:	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
tools/iofuncs/Makefile.in:	      -e 's/$$/$(EXEEXT)/' `; \
tools/iofuncs/Makefile.in:	test -n "$$list" || exit 0; \
tools/iofuncs/Makefile.in:	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
tools/iofuncs/Makefile.in:	cd "$(DESTDIR)$(bindir)" && rm -f $$files
tools/iofuncs/Makefile.in:clean-binPROGRAMS:
tools/iofuncs/Makefile.in:	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
tools/iofuncs/Makefile.in:	echo " rm -f" $$list; \
tools/iofuncs/Makefile.in:	rm -f $$list || exit $$?; \
tools/iofuncs/Makefile.in:	test -n "$(EXEEXT)" || exit 0; \
tools/iofuncs/Makefile.in:	echo " rm -f" $$list; \
tools/iofuncs/Makefile.in:	rm -f $$list
tools/iofuncs/Makefile.in:	@rm -f edvips$(EXEEXT)
tools/iofuncs/Makefile.in:	@rm -f header$(EXEEXT)
tools/iofuncs/Makefile.in:	@rm -f vips$(EXEEXT)
tools/iofuncs/Makefile.in:	@rm -f vipsthumbnail$(EXEEXT)
tools/iofuncs/Makefile.in:mostlyclean-compile:
tools/iofuncs/Makefile.in:	-rm -f *.$(OBJEXT)
tools/iofuncs/Makefile.in:distclean-compile:
tools/iofuncs/Makefile.in:	-rm -f *.tab.c
tools/iofuncs/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
tools/iofuncs/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
tools/iofuncs/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
tools/iofuncs/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
tools/iofuncs/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
tools/iofuncs/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
tools/iofuncs/Makefile.in:mostlyclean-libtool:
tools/iofuncs/Makefile.in:	-rm -f *.lo
tools/iofuncs/Makefile.in:clean-libtool:
tools/iofuncs/Makefile.in:	-rm -rf .libs _libs
tools/iofuncs/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/iofuncs/Makefile.in:	mkid -fID $$unique
tools/iofuncs/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/iofuncs/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
tools/iofuncs/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
tools/iofuncs/Makefile.in:	  if test $$# -gt 0; then \
tools/iofuncs/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/iofuncs/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
tools/iofuncs/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
tools/iofuncs/Makefile.in:distclean-tags:
tools/iofuncs/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
tools/iofuncs/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
tools/iofuncs/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
tools/iofuncs/Makefile.in:			   sort -u` ;; \
tools/iofuncs/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
tools/iofuncs/Makefile.in:	  if test -d $$d/$$file; then \
tools/iofuncs/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
tools/iofuncs/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
tools/iofuncs/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/iofuncs/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
tools/iofuncs/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
tools/iofuncs/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/iofuncs/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
tools/iofuncs/Makefile.in:	    test -f "$(distdir)/$$file" \
tools/iofuncs/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
tools/iofuncs/Makefile.in:check-am: all-am
tools/iofuncs/Makefile.in:check: check-am
tools/iofuncs/Makefile.in:all-am: Makefile $(PROGRAMS)
tools/iofuncs/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
tools/iofuncs/Makefile.in:install: install-am
tools/iofuncs/Makefile.in:install-exec: install-exec-am
tools/iofuncs/Makefile.in:install-data: install-data-am
tools/iofuncs/Makefile.in:uninstall: uninstall-am
tools/iofuncs/Makefile.in:install-am: all-am
tools/iofuncs/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
tools/iofuncs/Makefile.in:installcheck: installcheck-am
tools/iofuncs/Makefile.in:install-strip:
tools/iofuncs/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
tools/iofuncs/Makefile.in:	  `test -z '$(STRIP)' || \
tools/iofuncs/Makefile.in:mostlyclean-generic:
tools/iofuncs/Makefile.in:clean-generic:
tools/iofuncs/Makefile.in:distclean-generic:
tools/iofuncs/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
tools/iofuncs/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
tools/iofuncs/Makefile.in:maintainer-clean-generic:
tools/iofuncs/Makefile.in:@ENABLE_LINKS_FALSE@install-exec-hook:
tools/iofuncs/Makefile.in:@ENABLE_LINKS_FALSE@uninstall-hook:
tools/iofuncs/Makefile.in:clean: clean-am
tools/iofuncs/Makefile.in:clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
tools/iofuncs/Makefile.in:distclean: distclean-am
tools/iofuncs/Makefile.in:	-rm -rf ./$(DEPDIR)
tools/iofuncs/Makefile.in:	-rm -f Makefile
tools/iofuncs/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
tools/iofuncs/Makefile.in:	distclean-tags
tools/iofuncs/Makefile.in:dvi: dvi-am
tools/iofuncs/Makefile.in:dvi-am:
tools/iofuncs/Makefile.in:html: html-am
tools/iofuncs/Makefile.in:html-am:
tools/iofuncs/Makefile.in:info: info-am
tools/iofuncs/Makefile.in:info-am:
tools/iofuncs/Makefile.in:install-data-am:
tools/iofuncs/Makefile.in:install-dvi: install-dvi-am
tools/iofuncs/Makefile.in:install-dvi-am:
tools/iofuncs/Makefile.in:install-exec-am: install-binPROGRAMS
tools/iofuncs/Makefile.in:	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
tools/iofuncs/Makefile.in:install-html: install-html-am
tools/iofuncs/Makefile.in:install-html-am:
tools/iofuncs/Makefile.in:install-info: install-info-am
tools/iofuncs/Makefile.in:install-info-am:
tools/iofuncs/Makefile.in:install-man:
tools/iofuncs/Makefile.in:install-pdf: install-pdf-am
tools/iofuncs/Makefile.in:install-pdf-am:
tools/iofuncs/Makefile.in:install-ps: install-ps-am
tools/iofuncs/Makefile.in:install-ps-am:
tools/iofuncs/Makefile.in:installcheck-am:
tools/iofuncs/Makefile.in:maintainer-clean: maintainer-clean-am
tools/iofuncs/Makefile.in:	-rm -rf ./$(DEPDIR)
tools/iofuncs/Makefile.in:	-rm -f Makefile
tools/iofuncs/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
tools/iofuncs/Makefile.in:mostlyclean: mostlyclean-am
tools/iofuncs/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
tools/iofuncs/Makefile.in:	mostlyclean-libtool
tools/iofuncs/Makefile.in:pdf: pdf-am
tools/iofuncs/Makefile.in:pdf-am:
tools/iofuncs/Makefile.in:ps: ps-am
tools/iofuncs/Makefile.in:ps-am:
tools/iofuncs/Makefile.in:uninstall-am: uninstall-binPROGRAMS
tools/iofuncs/Makefile.in:	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
tools/iofuncs/Makefile.in:.MAKE: install-am install-exec-am install-strip uninstall-am
tools/iofuncs/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
tools/iofuncs/Makefile.in:	clean-generic clean-libtool ctags distclean distclean-compile \
tools/iofuncs/Makefile.in:	distclean-generic distclean-libtool distclean-tags distdir dvi \
tools/iofuncs/Makefile.in:	dvi-am html html-am info info-am install install-am \
tools/iofuncs/Makefile.in:	install-binPROGRAMS install-data install-data-am install-dvi \
tools/iofuncs/Makefile.in:	install-dvi-am install-exec install-exec-am install-exec-hook \
tools/iofuncs/Makefile.in:	install-html install-html-am install-info install-info-am \
tools/iofuncs/Makefile.in:	install-man install-pdf install-pdf-am install-ps \
tools/iofuncs/Makefile.in:	install-ps-am install-strip installcheck installcheck-am \
tools/iofuncs/Makefile.in:	installdirs maintainer-clean maintainer-clean-generic \
tools/iofuncs/Makefile.in:	mostlyclean mostlyclean-compile mostlyclean-generic \
tools/iofuncs/Makefile.in:	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
tools/iofuncs/Makefile.in:	uninstall-am uninstall-binPROGRAMS uninstall-hook
tools/iofuncs/Makefile.in:@ENABLE_LINKS_TRUE@install-exec-hook:
tools/iofuncs/Makefile.in:@ENABLE_LINKS_TRUE@uninstall-hook:
tools/iofuncs/vipsthumbnail.c: * 	- decode labq and rad images
tools/iofuncs/vipsthumbnail.c: * 	- colour management
tools/iofuncs/vipsthumbnail.c: * 	- better handling of tiny images
tools/iofuncs/vipsthumbnail.c: * 	- added "--delete"
tools/iofuncs/vipsthumbnail.c: * 	- added "--interpolator"
tools/iofuncs/vipsthumbnail.c: * 	- added "--nosharpen"
tools/iofuncs/vipsthumbnail.c: * 	- better 'open' logic, test lazy flag now
tools/iofuncs/vipsthumbnail.c: * 	- oops hehe residual sharpen test was reversed
tools/iofuncs/vipsthumbnail.c: * 	- and the mask coefficients were messed up
tools/iofuncs/vipsthumbnail.c: * 	- delete failed if there was a profile
tools/iofuncs/vipsthumbnail.c:	 * the process, so we use the lower-level API.
tools/iofuncs/vipsthumbnail.c:	if( format->header( filename, im ) ) {
tools/iofuncs/vipsthumbnail.c:	size = IM_IMAGE_SIZEOF_LINE( im ) * im->Ysize;
tools/iofuncs/vipsthumbnail.c:				im->filename );
tools/iofuncs/vipsthumbnail.c:	if( format->load( filename, im ) ) {
tools/iofuncs/vipsthumbnail.c:			-1, -1, -1, 
tools/iofuncs/vipsthumbnail.c:			-1, 16, -1, 
tools/iofuncs/vipsthumbnail.c:			-1, -1, -1 );
tools/iofuncs/vipsthumbnail.c:		mask->scale = 8;
tools/iofuncs/vipsthumbnail.c:		return( -1 );
tools/iofuncs/vipsthumbnail.c:	if( x->Coding == IM_CODING_LABQ ) {
tools/iofuncs/vipsthumbnail.c:			return( -1 );
tools/iofuncs/vipsthumbnail.c:	else if( x->Coding == IM_CODING_RAD ) {
tools/iofuncs/vipsthumbnail.c:			return( -1 );
tools/iofuncs/vipsthumbnail.c:		return( -1 );
tools/iofuncs/vipsthumbnail.c:			return( -1 );
tools/iofuncs/vipsthumbnail.c:				return( -1 );
tools/iofuncs/vipsthumbnail.c:				return( -1 );
tools/iofuncs/vipsthumbnail.c:			return( -1 );
tools/iofuncs/vipsthumbnail.c:			return( -1 );
tools/iofuncs/vipsthumbnail.c:		return( -1 );
tools/iofuncs/vipsthumbnail.c:	shrink = calculate_shrink( in->Xsize, in->Ysize, &residual );
tools/iofuncs/vipsthumbnail.c:		return( -1 );
tools/iofuncs/vipsthumbnail.c:		printf( "%s interpolation\n", VIPS_OBJECT( interp )->nickname );
tools/iofuncs/vipsthumbnail.c:		return( -1 );
tools/iofuncs/vipsthumbnail.c:		return( -1 );
tools/iofuncs/vipsthumbnail.c:/* JPEGs get special treatment. libjpeg supports fast shrink-on-read,
tools/iofuncs/vipsthumbnail.c:		return( -1 );
tools/iofuncs/vipsthumbnail.c:			VIPS_OBJECT_CLASS( format )->nickname );
tools/iofuncs/vipsthumbnail.c:	if( strcmp( VIPS_OBJECT_CLASS( format )->nickname, "jpeg" ) == 0 ) {
tools/iofuncs/vipsthumbnail.c:			return( -1 );
tools/iofuncs/vipsthumbnail.c:		shrink = calculate_shrink( im->Xsize, im->Ysize, NULL );
tools/iofuncs/vipsthumbnail.c:        context = g_option_context_new( _( "- thumbnail generator" ) );
tools/iofuncs/vipsthumbnail.c:			fprintf( stderr, "%s\n", error->message );
tools/iofuncs/vipsthumbnail.c:		error_exit( "try \"%s --help\"", g_get_prgname() );
tools/iofuncs/header.c: *	- now calls im_mmapin instead of bizzare bogosity
tools/iofuncs/header.c: *	- extra field argument for testing particular bits of the header
tools/iofuncs/header.c: *	- now uses im_open()
tools/iofuncs/header.c: *	- uses im_tiff2vips_header() etc., for speed
tools/iofuncs/header.c: *	- uses im_open_header()
tools/iofuncs/header.c: * 	- uses new header API, for great smallness
tools/iofuncs/header.c: * 	- back to plain im_open() now that's lazy enough for us
tools/iofuncs/header.c: * 	- display meta fields in save format, if possible
tools/iofuncs/header.c: * 	- new field name "getext" reads extension block
tools/iofuncs/header.c: *	- use GOption, loop over args
tools/iofuncs/header.c: *	- use im_history_get()
tools/iofuncs/header.c: * 	- don't stop on error
tools/iofuncs/header.c: * 	- ... but do return an error code if anything failed
tools/iofuncs/header.c: * 	- added im_history_get(), im_getexp(), im_printdesc() as wrapped
tools/iofuncs/header.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/iofuncs/header.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/iofuncs/header.c:/* A non-fatal error. Print the vips error buffer and continue.
tools/iofuncs/header.c:				return( -1 );
tools/iofuncs/header.c:			return( -1 );
tools/iofuncs/header.c:				return( -1 );
tools/iofuncs/header.c:        context = g_option_context_new( _( "- print image header" ) );
tools/iofuncs/header.c:			fprintf( stderr, "%s\n", error->message );
tools/iofuncs/header.c:		error_exit( "try \"%s --help\"", g_get_prgname() );
tools/iofuncs/edvips.c:/* modify vips file header! - useful for setting resolution, coding...
tools/iofuncs/edvips.c:no way of setting non-used codes in variables like newxres
tools/iofuncs/edvips.c:	-format added
tools/iofuncs/edvips.c:	- ==0 added to strcmp!
tools/iofuncs/edvips.c:	- new header fields added
tools/iofuncs/edvips.c:	- more header updates
tools/iofuncs/edvips.c: 	- less-stupid-ified
tools/iofuncs/edvips.c:	- rewritten with glib option parser, ready for xml options to go in
tools/iofuncs/edvips.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/iofuncs/edvips.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/iofuncs/edvips.c:		_( "vipsfile - edit vipsfile header" ) );
tools/iofuncs/edvips.c:			fprintf( stderr, "%s\n", error->message );
tools/iofuncs/edvips.c:		exit( -1 );
tools/iofuncs/edvips.c:		exit( -1 );
tools/iofuncs/edvips.c:		(im->fd = im__open_image_file( im->filename )) == -1 ) 
tools/iofuncs/edvips.c:	if( read( im->fd, header, IM_SIZEOF_HEADER ) != IM_SIZEOF_HEADER ||
tools/iofuncs/edvips.c:			im->filename );
tools/iofuncs/edvips.c:		parse_pint( xsize, &im->Xsize );
tools/iofuncs/edvips.c:		parse_pint( ysize, &im->Ysize );
tools/iofuncs/edvips.c:		parse_pint( bands, &im->Bands );
tools/iofuncs/edvips.c:		if( (im->BandFmt = im_char2BandFmt( format )) < 0 )
tools/iofuncs/edvips.c:		im->Bbits = im_bits_of_fmt( im->BandFmt );
tools/iofuncs/edvips.c:		if( (im->Type = im_char2Type( type )) < 0 )
tools/iofuncs/edvips.c:		if( (im->Coding = im_char2Coding( coding )) < 0 )
tools/iofuncs/edvips.c:		im->Xres = atof( xres );
tools/iofuncs/edvips.c:		im->Yres = atof( yres );
tools/iofuncs/edvips.c:		im->Xoffset = atoi( xoffset );
tools/iofuncs/edvips.c:		im->Yoffset = atoi( yoffset );
tools/iofuncs/edvips.c:	if( lseek( im->fd, 0, SEEK_SET ) == (off_t) -1 ) 
tools/iofuncs/edvips.c:		error_exit( _( "could not seek on %s" ), im->filename );
tools/iofuncs/edvips.c:		im__write( im->fd, header, IM_SIZEOF_HEADER ) )
tools/iofuncs/edvips.c:		error_exit( _( "could not write to %s" ), im->filename );
tools/iofuncs/edvips.c:		 * end, eg. "echo | edvips --setext fred.v".
tools/iofuncs/edvips.c:		while( size > 0 && isspace( xml[size - 1] ) )
tools/iofuncs/edvips.c:			size -= 1;
tools/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
tools/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
tools/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
tools/Makefile.in:RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
tools/Makefile.in:	html-recursive info-recursive install-data-recursive \
tools/Makefile.in:	install-dvi-recursive install-exec-recursive \
tools/Makefile.in:	install-html-recursive install-info-recursive \
tools/Makefile.in:	install-pdf-recursive install-ps-recursive install-recursive \
tools/Makefile.in:	installcheck-recursive installdirs-recursive pdf-recursive \
tools/Makefile.in:	ps-recursive uninstall-recursive
tools/Makefile.in:RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
tools/Makefile.in:  distclean-recursive maintainer-clean-recursive
tools/Makefile.in:AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
tools/Makefile.in:	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
tools/Makefile.in:  while test -n "$$dir1"; do \
tools/Makefile.in:    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
tools/Makefile.in:        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
tools/Makefile.in:        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
tools/Makefile.in:        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
tools/Makefile.in:          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
tools/Makefile.in:    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
tools/Makefile.in:all: all-recursive
tools/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
tools/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
tools/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
tools/Makefile.in:	  $(AUTOMAKE) --gnu tools/Makefile
tools/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
tools/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/Makefile.in:mostlyclean-libtool:
tools/Makefile.in:	-rm -f *.lo
tools/Makefile.in:clean-libtool:
tools/Makefile.in:	-rm -rf .libs _libs
tools/Makefile.in:	    *=* | --[!k]*);; \
tools/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
tools/Makefile.in:	    local_target="$$target-am"; \
tools/Makefile.in:	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
tools/Makefile.in:	fi; test -z "$$fail"
tools/Makefile.in:	    *=* | --[!k]*);; \
tools/Makefile.in:	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
tools/Makefile.in:	target=`echo $@ | sed s/-recursive//`; \
tools/Makefile.in:	    local_target="$$target-am"; \
tools/Makefile.in:	done && test -z "$$fail"
tools/Makefile.in:tags-recursive:
tools/Makefile.in:ctags-recursive:
tools/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/Makefile.in:	mkid -fID $$unique
tools/Makefile.in:TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
tools/Makefile.in:	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
tools/Makefile.in:	  include_option=--etags-include; \
tools/Makefile.in:	  include_option=--include; \
tools/Makefile.in:	    test ! -f $$subdir/TAGS || \
tools/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
tools/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
tools/Makefile.in:	  if test $$# -gt 0; then \
tools/Makefile.in:CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
tools/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
tools/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
tools/Makefile.in:distclean-tags:
tools/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
tools/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
tools/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
tools/Makefile.in:			   sort -u` ;; \
tools/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
tools/Makefile.in:	  if test -d $$d/$$file; then \
tools/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
tools/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
tools/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
tools/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
tools/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
tools/Makefile.in:	    test -f "$(distdir)/$$file" \
tools/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
tools/Makefile.in:	    test -d "$(distdir)/$$subdir" \
tools/Makefile.in:check-am: all-am
tools/Makefile.in:check: check-recursive
tools/Makefile.in:all-am: Makefile
tools/Makefile.in:installdirs: installdirs-recursive
tools/Makefile.in:installdirs-am:
tools/Makefile.in:install: install-recursive
tools/Makefile.in:install-exec: install-exec-recursive
tools/Makefile.in:install-data: install-data-recursive
tools/Makefile.in:uninstall: uninstall-recursive
tools/Makefile.in:install-am: all-am
tools/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
tools/Makefile.in:installcheck: installcheck-recursive
tools/Makefile.in:install-strip:
tools/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
tools/Makefile.in:	  `test -z '$(STRIP)' || \
tools/Makefile.in:mostlyclean-generic:
tools/Makefile.in:clean-generic:
tools/Makefile.in:distclean-generic:
tools/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
tools/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
tools/Makefile.in:maintainer-clean-generic:
tools/Makefile.in:clean: clean-recursive
tools/Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
tools/Makefile.in:distclean: distclean-recursive
tools/Makefile.in:	-rm -f Makefile
tools/Makefile.in:distclean-am: clean-am distclean-generic distclean-tags
tools/Makefile.in:dvi: dvi-recursive
tools/Makefile.in:dvi-am:
tools/Makefile.in:html: html-recursive
tools/Makefile.in:html-am:
tools/Makefile.in:info: info-recursive
tools/Makefile.in:info-am:
tools/Makefile.in:install-data-am:
tools/Makefile.in:install-dvi: install-dvi-recursive
tools/Makefile.in:install-dvi-am:
tools/Makefile.in:install-exec-am:
tools/Makefile.in:install-html: install-html-recursive
tools/Makefile.in:install-html-am:
tools/Makefile.in:install-info: install-info-recursive
tools/Makefile.in:install-info-am:
tools/Makefile.in:install-man:
tools/Makefile.in:install-pdf: install-pdf-recursive
tools/Makefile.in:install-pdf-am:
tools/Makefile.in:install-ps: install-ps-recursive
tools/Makefile.in:install-ps-am:
tools/Makefile.in:installcheck-am:
tools/Makefile.in:maintainer-clean: maintainer-clean-recursive
tools/Makefile.in:	-rm -f Makefile
tools/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
tools/Makefile.in:mostlyclean: mostlyclean-recursive
tools/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
tools/Makefile.in:pdf: pdf-recursive
tools/Makefile.in:pdf-am:
tools/Makefile.in:ps: ps-recursive
tools/Makefile.in:ps-am:
tools/Makefile.in:uninstall-am:
tools/Makefile.in:.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
tools/Makefile.in:	install-am install-strip tags-recursive
tools/Makefile.in:	all all-am check check-am clean clean-generic clean-libtool \
tools/Makefile.in:	ctags ctags-recursive distclean distclean-generic \
tools/Makefile.in:	distclean-libtool distclean-tags distdir dvi dvi-am html \
tools/Makefile.in:	html-am info info-am install install-am install-data \
tools/Makefile.in:	install-data-am install-dvi install-dvi-am install-exec \
tools/Makefile.in:	install-exec-am install-html install-html-am install-info \
tools/Makefile.in:	install-info-am install-man install-pdf install-pdf-am \
tools/Makefile.in:	install-ps install-ps-am install-strip installcheck \
tools/Makefile.in:	installcheck-am installdirs installdirs-am maintainer-clean \
tools/Makefile.in:	maintainer-clean-generic mostlyclean mostlyclean-generic \
tools/Makefile.in:	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
tools/Makefile.in:	uninstall uninstall-am
tools/other/spatres.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/other/spatres.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/other/spatres.c:	if ( (argc != 4)||(argv[1][0] == '-') )
tools/other/spatres.c:	if ( im_spatres(in, out, step) == -1)
tools/other/spatres.c:	if ( im_updatehist(out, argv[0], argc - 1, argv + 1) == -1)
tools/other/spatres.c:	if ( (im_close(in) == -1)||(im_close(out) == -1) )
tools/other/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
tools/other/squares.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/other/squares.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/other/squares.c:	if ( im_sines(bufim, xsize, ysize, horfreq, verfreq) == -1 )
tools/other/squares.c:	if ( im_thresh(bufim, image, (double)0.0) == -1)
tools/other/squares.c:	if ( im_updatehist(image, argv[0], argc - 1, argv + 1) == -1)
tools/other/squares.c:	if ( ( im_close( image ) == -1 )||( im_close( bufim ) == -1 ) )
tools/other/cooc.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/other/cooc.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/other/cooc.c:		dx, dy, flag) == -1 )
tools/other/cooc.c:	if ( im_updatehist(matrix, argv[0], argc - 1, argv + 1) == -1)
tools/other/cooc.c:	if ( ( im_close( image ) == -1 )||( im_close( matrix ) == -1 ) )
tools/other/sines.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/other/sines.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/other/sines.c:	if ( im_sines(bufim, xsize, ysize, horfreq, verfreq) == -1 )
tools/other/sines.c:	if ( im_scale(bufim, image) == -1)
tools/other/sines.c:	if ( im_updatehist(image, argv[0], argc - 1, argv + 1) == -1)
tools/other/sines.c:	if ( ( im_close( image ) == -1 )||( im_close( bufim ) == -1 ) )
tools/other/cooc_features.c: *	- stupid cooc_features externs removed
tools/other/cooc_features.c: *	- ANSIfied
tools/other/cooc_features.c: *	- print to stdout
tools/other/cooc_features.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/other/cooc_features.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/other/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
tools/other/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
tools/other/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
tools/other/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
tools/other/Makefile.in:am__mv = mv -f
tools/other/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
tools/other/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
tools/other/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
tools/other/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
tools/other/Makefile.in:	$(LDFLAGS) -o $@
tools/other/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
tools/other/Makefile.in:all: all-am
tools/other/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
tools/other/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
tools/other/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/other/Makefile'; \
tools/other/Makefile.in:	  $(AUTOMAKE) --gnu tools/other/Makefile
tools/other/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
tools/other/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/other/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/other/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/other/Makefile.in:install-binPROGRAMS: $(bin_PROGRAMS)
tools/other/Makefile.in:	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
tools/other/Makefile.in:	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
tools/other/Makefile.in:	while read p p1; do if test -f $$p || test -f $$p1; \
tools/other/Makefile.in:	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
tools/other/Makefile.in:	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
tools/other/Makefile.in:	    test -z "$$files" || { \
tools/other/Makefile.in:	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
tools/other/Makefile.in:	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
tools/other/Makefile.in:uninstall-binPROGRAMS:
tools/other/Makefile.in:	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
tools/other/Makefile.in:	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
tools/other/Makefile.in:	      -e 's/$$/$(EXEEXT)/' `; \
tools/other/Makefile.in:	test -n "$$list" || exit 0; \
tools/other/Makefile.in:	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
tools/other/Makefile.in:	cd "$(DESTDIR)$(bindir)" && rm -f $$files
tools/other/Makefile.in:clean-binPROGRAMS:
tools/other/Makefile.in:	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
tools/other/Makefile.in:	echo " rm -f" $$list; \
tools/other/Makefile.in:	rm -f $$list || exit $$?; \
tools/other/Makefile.in:	test -n "$(EXEEXT)" || exit 0; \
tools/other/Makefile.in:	echo " rm -f" $$list; \
tools/other/Makefile.in:	rm -f $$list
tools/other/Makefile.in:	@rm -f cooc$(EXEEXT)
tools/other/Makefile.in:	@rm -f cooc_features$(EXEEXT)
tools/other/Makefile.in:	@rm -f glds$(EXEEXT)
tools/other/Makefile.in:	@rm -f glds_features$(EXEEXT)
tools/other/Makefile.in:	@rm -f simcontr$(EXEEXT)
tools/other/Makefile.in:	@rm -f sines$(EXEEXT)
tools/other/Makefile.in:	@rm -f spatres$(EXEEXT)
tools/other/Makefile.in:	@rm -f squares$(EXEEXT)
tools/other/Makefile.in:mostlyclean-compile:
tools/other/Makefile.in:	-rm -f *.$(OBJEXT)
tools/other/Makefile.in:distclean-compile:
tools/other/Makefile.in:	-rm -f *.tab.c
tools/other/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
tools/other/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
tools/other/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
tools/other/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
tools/other/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
tools/other/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
tools/other/Makefile.in:mostlyclean-libtool:
tools/other/Makefile.in:	-rm -f *.lo
tools/other/Makefile.in:clean-libtool:
tools/other/Makefile.in:	-rm -rf .libs _libs
tools/other/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/other/Makefile.in:	mkid -fID $$unique
tools/other/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/other/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
tools/other/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
tools/other/Makefile.in:	  if test $$# -gt 0; then \
tools/other/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/other/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
tools/other/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
tools/other/Makefile.in:distclean-tags:
tools/other/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
tools/other/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
tools/other/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
tools/other/Makefile.in:			   sort -u` ;; \
tools/other/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
tools/other/Makefile.in:	  if test -d $$d/$$file; then \
tools/other/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
tools/other/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
tools/other/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/other/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
tools/other/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
tools/other/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/other/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
tools/other/Makefile.in:	    test -f "$(distdir)/$$file" \
tools/other/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
tools/other/Makefile.in:check-am: all-am
tools/other/Makefile.in:check: check-am
tools/other/Makefile.in:all-am: Makefile $(PROGRAMS)
tools/other/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
tools/other/Makefile.in:install: install-am
tools/other/Makefile.in:install-exec: install-exec-am
tools/other/Makefile.in:install-data: install-data-am
tools/other/Makefile.in:uninstall: uninstall-am
tools/other/Makefile.in:install-am: all-am
tools/other/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
tools/other/Makefile.in:installcheck: installcheck-am
tools/other/Makefile.in:install-strip:
tools/other/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
tools/other/Makefile.in:	  `test -z '$(STRIP)' || \
tools/other/Makefile.in:mostlyclean-generic:
tools/other/Makefile.in:clean-generic:
tools/other/Makefile.in:distclean-generic:
tools/other/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
tools/other/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
tools/other/Makefile.in:maintainer-clean-generic:
tools/other/Makefile.in:clean: clean-am
tools/other/Makefile.in:clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
tools/other/Makefile.in:distclean: distclean-am
tools/other/Makefile.in:	-rm -rf ./$(DEPDIR)
tools/other/Makefile.in:	-rm -f Makefile
tools/other/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
tools/other/Makefile.in:	distclean-tags
tools/other/Makefile.in:dvi: dvi-am
tools/other/Makefile.in:dvi-am:
tools/other/Makefile.in:html: html-am
tools/other/Makefile.in:html-am:
tools/other/Makefile.in:info: info-am
tools/other/Makefile.in:info-am:
tools/other/Makefile.in:install-data-am:
tools/other/Makefile.in:install-dvi: install-dvi-am
tools/other/Makefile.in:install-dvi-am:
tools/other/Makefile.in:install-exec-am: install-binPROGRAMS
tools/other/Makefile.in:install-html: install-html-am
tools/other/Makefile.in:install-html-am:
tools/other/Makefile.in:install-info: install-info-am
tools/other/Makefile.in:install-info-am:
tools/other/Makefile.in:install-man:
tools/other/Makefile.in:install-pdf: install-pdf-am
tools/other/Makefile.in:install-pdf-am:
tools/other/Makefile.in:install-ps: install-ps-am
tools/other/Makefile.in:install-ps-am:
tools/other/Makefile.in:installcheck-am:
tools/other/Makefile.in:maintainer-clean: maintainer-clean-am
tools/other/Makefile.in:	-rm -rf ./$(DEPDIR)
tools/other/Makefile.in:	-rm -f Makefile
tools/other/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
tools/other/Makefile.in:mostlyclean: mostlyclean-am
tools/other/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
tools/other/Makefile.in:	mostlyclean-libtool
tools/other/Makefile.in:pdf: pdf-am
tools/other/Makefile.in:pdf-am:
tools/other/Makefile.in:ps: ps-am
tools/other/Makefile.in:ps-am:
tools/other/Makefile.in:uninstall-am: uninstall-binPROGRAMS
tools/other/Makefile.in:.MAKE: install-am install-strip
tools/other/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
tools/other/Makefile.in:	clean-generic clean-libtool ctags distclean distclean-compile \
tools/other/Makefile.in:	distclean-generic distclean-libtool distclean-tags distdir dvi \
tools/other/Makefile.in:	dvi-am html html-am info info-am install install-am \
tools/other/Makefile.in:	install-binPROGRAMS install-data install-data-am install-dvi \
tools/other/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
tools/other/Makefile.in:	install-html-am install-info install-info-am install-man \
tools/other/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
tools/other/Makefile.in:	install-strip installcheck installcheck-am installdirs \
tools/other/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
tools/other/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
tools/other/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am \
tools/other/Makefile.in:	uninstall-binPROGRAMS
tools/other/simcontr.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/other/simcontr.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/other/simcontr.c:	if ( im_simcontr(image, xsize, ysize) == -1 )
tools/other/simcontr.c:	if ( im_updatehist(image, argv[0], argc - 1, argv + 1) == -1)
tools/other/simcontr.c:	if ( im_close( image ) == -1 )
tools/other/glds.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/other/glds.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/other/glds.c:		dx, dy) == -1 )
tools/other/glds.c:	if ( im_updatehist(image, argv[0], argc - 1, argv + 1) == -1)
tools/other/glds.c:	if ( ( im_close( image ) == -1 )||( im_close( matrix ) == -1 ) )
tools/other/glds_features.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/other/glds_features.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/mosaicing/Makefile.am:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
tools/mosaicing/mergeup.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/mosaicing/mergeup.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/mosaicing/mergeup.c:	outarea->width = rarea->left + rarea->width;
tools/mosaicing/mergeup.c:	outarea->height = overlap.height;
tools/mosaicing/mergeup.c:	outarea->top = overlap.top;
tools/mosaicing/mergeup.c:	outarea->left = larea->left;
tools/mosaicing/mergeup.c:	outarea->width = overlap.width;
tools/mosaicing/mergeup.c:	outarea->height = barea->top + barea->height ;
tools/mosaicing/mergeup.c:	outarea->left = overlap.left;
tools/mosaicing/mergeup.c:	outarea->top = tarea->top;
tools/mosaicing/mergeup.c:	curr_im = -1;
tools/mosaicing/mergeup.c:	curr_x = -1;
tools/mosaicing/mergeup.c:	curr_y = -1;
tools/mosaicing/mergeup.c:				hrect[curr_x].width = in[curr_im]->Xsize;
tools/mosaicing/mergeup.c:				hrect[curr_x].height= in[curr_im]->Ysize;
tools/mosaicing/mergeup.c:				larea.height = in[curr_im]->Ysize;
tools/mosaicing/mergeup.c:				larea.width = in[curr_im]->Xsize;
tools/mosaicing/mergeup.c:				if( in[curr_im]->Xsize < xoff ) 
tools/mosaicing/mergeup.c:				rarea.left = in[curr_im]->Xsize - (offset + hxdisp[curr_x]) ;
tools/mosaicing/mergeup.c:				rarea.width = in[curr_im+1]->Xsize;
tools/mosaicing/mergeup.c:				rarea.height = in[curr_im+1]->Ysize;
tools/mosaicing/mergeup.c:				if( in[curr_im+1]->Xsize < xoff ) 
tools/mosaicing/mergeup.c:                        	rarea.left = hrect[curr_x -1].width - (offset + hxdisp[curr_x]) ;
tools/mosaicing/mergeup.c:                        	rarea.width = in[curr_im+1]->Xsize;
tools/mosaicing/mergeup.c:                        	rarea.height = in[curr_im+1]->Ysize;
tools/mosaicing/mergeup.c:                        	im_phmerge( &hrect[curr_x -1], &rarea, &hrect[curr_x] );
tools/mosaicing/mergeup.c:			if( in[curr_x - width]->Ysize < yoff )
tools/mosaicing/mergeup.c:				barea.top = hrect[curr_x - width].height - offset - vydisp[curr_y] ;
tools/mosaicing/mergeup.c:				im_pvmerge( &hrect[curr_x - width], &barea, &vrect[curr_y] );
tools/mosaicing/mergeup.c:				barea.top = vrect[curr_y - 1].height - yoff - vydisp[curr_y] ;
tools/mosaicing/mergeup.c:				im_pvmerge( &vrect[curr_y -1], &barea, &vrect[curr_y] );
tools/mosaicing/mergeup.c:		return( -1 );
tools/mosaicing/mergeup.c:		return( -1 );
tools/mosaicing/mergeup.c:		return( -1 );
tools/mosaicing/mergeup.c:		return( -1 );
tools/mosaicing/mergeup.c:		return( -1 );
tools/mosaicing/mergeup.c:		return( -1 );
tools/mosaicing/mergeup.c:/* Join two frames left-right. Have to open them and find their sizes.
tools/mosaicing/mergeup.c:	if (im_lrmerge(left, right, out, dx, dy, 20) == -1)
tools/mosaicing/mergeup.c:            return( -1 );
tools/mosaicing/mergeup.c:/* Join two frames up-down. Have to open them and find their sizes.
tools/mosaicing/mergeup.c:	if (im_tbmerge(top, bottom, out, dx, dy, 20) == -1)
tools/mosaicing/mergeup.c:		return( -1 );
tools/mosaicing/mergeup.c:	    return( -1 );
tools/mosaicing/mergeup.c:		return( -1 );
tools/mosaicing/mergeup.c:			return( -1 );
tools/mosaicing/mergeup.c:		    dx = -p_img[partial_no-3]->Xsize + hxdisp[h_no] + xoff ;
tools/mosaicing/mergeup.c:			join_leftright( p_img[partial_no-3], 
tools/mosaicing/mergeup.c:					p_img[partial_no-2],outp,dx,dy );
tools/mosaicing/mergeup.c:		        join_leftright( p_img[partial_no-3], 
tools/mosaicing/mergeup.c:					p_img[partial_no-2],p_img[partial_no-1],dx,dy );
tools/mosaicing/mergeup.c:		first_row = partial_no - 1;
tools/mosaicing/mergeup.c:                    	return( -1 );
tools/mosaicing/mergeup.c:		 dy = -( vrect[v_no].height - p_img[partial_no-2]->Ysize ); 
tools/mosaicing/mergeup.c:			      p_img[partial_no-2], p_img[partial_no-1],dx,dy );
tools/mosaicing/mergeup.c:		  first_row = partial_no-1;
tools/mosaicing/mergeup.c:		dy = -( vrect[v_no].height - p_img[partial_no-1]->Ysize );
tools/mosaicing/mergeup.c:              	join_updown( p_img[first_row], p_img[partial_no-1],outp,dx,dy );
tools/mosaicing/mergeup.c:		if( n > width - 1 )
tools/mosaicing/mergeup.c:		if( n > height - 1 )
tools/mosaicing/mergeup.c:        for(i=height; i>=0; i--)
tools/mosaicing/mergeup.c:		if( im_close(in[i]) == -1)
tools/mosaicing/mergeup.c:		if( im_close(out) == -1)
tools/mosaicing/find_mosaic.c:    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
tools/mosaicing/find_mosaic.c:    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
tools/mosaicing/find_mosaic.c:		return( -1 );
tools/mosaicing/find_mosaic.c:		return( -1 );
tools/mosaicing/find_mosaic.c:		return( -1 );
tools/mosaicing/find_mosaic.c:		return( -1 );
tools/mosaicing/find_mosaic.c:		return( -1 );
tools/mosaicing/find_mosaic.c:		return( -1 );
tools/mosaicing/find_mosaic.c:	curr_im = -1;
tools/mosaicing/find_mosaic.c:	curr_disp_x = -1;
tools/mosaicing/find_mosaic.c:	curr_disp_y = -1;
tools/mosaicing/find_mosaic.c:	dy = -1;
tools/mosaicing/find_mosaic.c:        	dx = xoff - inp[curr_im]->Xsize;
tools/mosaicing/find_mosaic.c:		dy = yoff - inp[curr_im]->Ysize;
tools/mosaicing/find_mosaic.c:                		mincorsize = (int)(inp[curr_im]->Xsize + dx - 1)/6;
tools/mosaicing/find_mosaic.c:                		minareasize = (int)(inp[curr_im]->Xsize + dx 
tools/mosaicing/find_mosaic.c:					      - 3*halfcorsize -1)/2 - mincorsize;
tools/mosaicing/find_mosaic.c:			if( ( inp[curr_im]->Xsize < xoff ) || ( inp[curr_im+1]->Xsize < xoff ) ||
tools/mosaicing/find_mosaic.c:			    ( inp[curr_im]->Ysize < yoff ) || ( inp[curr_im]->Ysize < yoff) ){
tools/mosaicing/find_mosaic.c:                	   	(int)(inp[curr_im]->Xsize -xoff/2), 
tools/mosaicing/find_mosaic.c:				(int)(inp[curr_im]->Ysize /2), 
tools/mosaicing/find_mosaic.c:				(int)(xoff/2), (int)(inp[curr_im+1]->Ysize /2),
tools/mosaicing/find_mosaic.c:				&scale1, &angle1, &dx1, &dy1 ) == -1 )
tools/mosaicing/find_mosaic.c:			hxdisp[curr_disp_x] = inp[curr_im]->Xsize - xoff + fx;
tools/mosaicing/find_mosaic.c:			prev_row = curr_im - width+(int)(width/2);
tools/mosaicing/find_mosaic.c:                	mincorsize = (int)(inp[prev_row]->Ysize + dy - 1)/6;
tools/mosaicing/find_mosaic.c:                	minareasize = (int)(inp[prev_row]->Ysize + dy 
tools/mosaicing/find_mosaic.c:					- 3*halfcorsize -1)/2 - mincorsize;
tools/mosaicing/find_mosaic.c: 		     if( ( inp[curr_row]->Xsize < xoff ) || ( inp[prev_row]->Xsize < xoff ) ||
tools/mosaicing/find_mosaic.c:			 ( inp[curr_row]->Ysize < yoff ) || ( inp[prev_row]->Ysize < yoff ) ){
tools/mosaicing/find_mosaic.c:                	 	(int)(inp[prev_row]->Xsize/2 ), 
tools/mosaicing/find_mosaic.c:				(int)(inp[prev_row]->Ysize - yoff/2 ),
tools/mosaicing/find_mosaic.c:			 	(int)(inp[curr_row]->Xsize/2 ), (int)(yoff/2),
tools/mosaicing/find_mosaic.c:				&scale1, &angle1, &dx1, &dy1 ) == -1 )
tools/mosaicing/find_mosaic.c:		     vydisp[curr_disp_y] = inp[prev_row]->Ysize - yoff + fy;
tools/mosaicing/find_mosaic.c:		if( n > width - 1 )
tools/mosaicing/find_mosaic.c:		if( n > height - 1 )
tools/mosaicing/find_mosaic.c:        for(i=height; i>=0; i--)
tools/mosaicing/find_mosaic.c:		if( im_close(in[i]) == -1)
tools/mosaicing/find_mosaic.c:		if( im_close(out) == -1)
tools/mosaicing/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
tools/mosaicing/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
tools/mosaicing/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
tools/mosaicing/Makefile.in:DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
tools/mosaicing/Makefile.in:am__mv = mv -f
tools/mosaicing/Makefile.in:LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
tools/mosaicing/Makefile.in:	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
tools/mosaicing/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
tools/mosaicing/Makefile.in:	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
tools/mosaicing/Makefile.in:	$(LDFLAGS) -o $@
tools/mosaicing/Makefile.in:INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
tools/mosaicing/Makefile.in:all: all-am
tools/mosaicing/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
tools/mosaicing/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
tools/mosaicing/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/mosaicing/Makefile'; \
tools/mosaicing/Makefile.in:	  $(AUTOMAKE) --gnu tools/mosaicing/Makefile
tools/mosaicing/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
tools/mosaicing/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/mosaicing/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/mosaicing/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/mosaicing/Makefile.in:install-binPROGRAMS: $(bin_PROGRAMS)
tools/mosaicing/Makefile.in:	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
tools/mosaicing/Makefile.in:	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
tools/mosaicing/Makefile.in:	while read p p1; do if test -f $$p || test -f $$p1; \
tools/mosaicing/Makefile.in:	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
tools/mosaicing/Makefile.in:	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
tools/mosaicing/Makefile.in:	    test -z "$$files" || { \
tools/mosaicing/Makefile.in:	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
tools/mosaicing/Makefile.in:	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
tools/mosaicing/Makefile.in:uninstall-binPROGRAMS:
tools/mosaicing/Makefile.in:	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
tools/mosaicing/Makefile.in:	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
tools/mosaicing/Makefile.in:	      -e 's/$$/$(EXEEXT)/' `; \
tools/mosaicing/Makefile.in:	test -n "$$list" || exit 0; \
tools/mosaicing/Makefile.in:	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
tools/mosaicing/Makefile.in:	cd "$(DESTDIR)$(bindir)" && rm -f $$files
tools/mosaicing/Makefile.in:clean-binPROGRAMS:
tools/mosaicing/Makefile.in:	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
tools/mosaicing/Makefile.in:	echo " rm -f" $$list; \
tools/mosaicing/Makefile.in:	rm -f $$list || exit $$?; \
tools/mosaicing/Makefile.in:	test -n "$(EXEEXT)" || exit 0; \
tools/mosaicing/Makefile.in:	echo " rm -f" $$list; \
tools/mosaicing/Makefile.in:	rm -f $$list
tools/mosaicing/Makefile.in:	@rm -f find_mosaic$(EXEEXT)
tools/mosaicing/Makefile.in:	@rm -f mergeup$(EXEEXT)
tools/mosaicing/Makefile.in:mostlyclean-compile:
tools/mosaicing/Makefile.in:	-rm -f *.$(OBJEXT)
tools/mosaicing/Makefile.in:distclean-compile:
tools/mosaicing/Makefile.in:	-rm -f *.tab.c
tools/mosaicing/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
tools/mosaicing/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c $<
tools/mosaicing/Makefile.in:@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
tools/mosaicing/Makefile.in:@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
tools/mosaicing/Makefile.in:@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
tools/mosaicing/Makefile.in:@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
tools/mosaicing/Makefile.in:mostlyclean-libtool:
tools/mosaicing/Makefile.in:	-rm -f *.lo
tools/mosaicing/Makefile.in:clean-libtool:
tools/mosaicing/Makefile.in:	-rm -rf .libs _libs
tools/mosaicing/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/mosaicing/Makefile.in:	mkid -fID $$unique
tools/mosaicing/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/mosaicing/Makefile.in:	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
tools/mosaicing/Makefile.in:	  test -n "$$unique" || unique=$$empty_fix; \
tools/mosaicing/Makefile.in:	  if test $$# -gt 0; then \
tools/mosaicing/Makefile.in:	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
tools/mosaicing/Makefile.in:	test -z "$(CTAGS_ARGS)$$unique" \
tools/mosaicing/Makefile.in:	  && gtags -i $(GTAGS_ARGS) "$$here"
tools/mosaicing/Makefile.in:distclean-tags:
tools/mosaicing/Makefile.in:	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
tools/mosaicing/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
tools/mosaicing/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
tools/mosaicing/Makefile.in:			   sort -u` ;; \
tools/mosaicing/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
tools/mosaicing/Makefile.in:	  if test -d $$d/$$file; then \
tools/mosaicing/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
tools/mosaicing/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
tools/mosaicing/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/mosaicing/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
tools/mosaicing/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
tools/mosaicing/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/mosaicing/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
tools/mosaicing/Makefile.in:	    test -f "$(distdir)/$$file" \
tools/mosaicing/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
tools/mosaicing/Makefile.in:check-am: all-am
tools/mosaicing/Makefile.in:check: check-am
tools/mosaicing/Makefile.in:all-am: Makefile $(PROGRAMS)
tools/mosaicing/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
tools/mosaicing/Makefile.in:install: install-am
tools/mosaicing/Makefile.in:install-exec: install-exec-am
tools/mosaicing/Makefile.in:install-data: install-data-am
tools/mosaicing/Makefile.in:uninstall: uninstall-am
tools/mosaicing/Makefile.in:install-am: all-am
tools/mosaicing/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
tools/mosaicing/Makefile.in:installcheck: installcheck-am
tools/mosaicing/Makefile.in:install-strip:
tools/mosaicing/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
tools/mosaicing/Makefile.in:	  `test -z '$(STRIP)' || \
tools/mosaicing/Makefile.in:mostlyclean-generic:
tools/mosaicing/Makefile.in:clean-generic:
tools/mosaicing/Makefile.in:distclean-generic:
tools/mosaicing/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
tools/mosaicing/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
tools/mosaicing/Makefile.in:maintainer-clean-generic:
tools/mosaicing/Makefile.in:clean: clean-am
tools/mosaicing/Makefile.in:clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
tools/mosaicing/Makefile.in:distclean: distclean-am
tools/mosaicing/Makefile.in:	-rm -rf ./$(DEPDIR)
tools/mosaicing/Makefile.in:	-rm -f Makefile
tools/mosaicing/Makefile.in:distclean-am: clean-am distclean-compile distclean-generic \
tools/mosaicing/Makefile.in:	distclean-tags
tools/mosaicing/Makefile.in:dvi: dvi-am
tools/mosaicing/Makefile.in:dvi-am:
tools/mosaicing/Makefile.in:html: html-am
tools/mosaicing/Makefile.in:html-am:
tools/mosaicing/Makefile.in:info: info-am
tools/mosaicing/Makefile.in:info-am:
tools/mosaicing/Makefile.in:install-data-am:
tools/mosaicing/Makefile.in:install-dvi: install-dvi-am
tools/mosaicing/Makefile.in:install-dvi-am:
tools/mosaicing/Makefile.in:install-exec-am: install-binPROGRAMS
tools/mosaicing/Makefile.in:install-html: install-html-am
tools/mosaicing/Makefile.in:install-html-am:
tools/mosaicing/Makefile.in:install-info: install-info-am
tools/mosaicing/Makefile.in:install-info-am:
tools/mosaicing/Makefile.in:install-man:
tools/mosaicing/Makefile.in:install-pdf: install-pdf-am
tools/mosaicing/Makefile.in:install-pdf-am:
tools/mosaicing/Makefile.in:install-ps: install-ps-am
tools/mosaicing/Makefile.in:install-ps-am:
tools/mosaicing/Makefile.in:installcheck-am:
tools/mosaicing/Makefile.in:maintainer-clean: maintainer-clean-am
tools/mosaicing/Makefile.in:	-rm -rf ./$(DEPDIR)
tools/mosaicing/Makefile.in:	-rm -f Makefile
tools/mosaicing/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
tools/mosaicing/Makefile.in:mostlyclean: mostlyclean-am
tools/mosaicing/Makefile.in:mostlyclean-am: mostlyclean-compile mostlyclean-generic \
tools/mosaicing/Makefile.in:	mostlyclean-libtool
tools/mosaicing/Makefile.in:pdf: pdf-am
tools/mosaicing/Makefile.in:pdf-am:
tools/mosaicing/Makefile.in:ps: ps-am
tools/mosaicing/Makefile.in:ps-am:
tools/mosaicing/Makefile.in:uninstall-am: uninstall-binPROGRAMS
tools/mosaicing/Makefile.in:.MAKE: install-am install-strip
tools/mosaicing/Makefile.in:.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
tools/mosaicing/Makefile.in:	clean-generic clean-libtool ctags distclean distclean-compile \
tools/mosaicing/Makefile.in:	distclean-generic distclean-libtool distclean-tags distdir dvi \
tools/mosaicing/Makefile.in:	dvi-am html html-am info info-am install install-am \
tools/mosaicing/Makefile.in:	install-binPROGRAMS install-data install-data-am install-dvi \
tools/mosaicing/Makefile.in:	install-dvi-am install-exec install-exec-am install-html \
tools/mosaicing/Makefile.in:	install-html-am install-info install-info-am install-man \
tools/mosaicing/Makefile.in:	install-pdf install-pdf-am install-ps install-ps-am \
tools/mosaicing/Makefile.in:	install-strip installcheck installcheck-am installdirs \
tools/mosaicing/Makefile.in:	maintainer-clean maintainer-clean-generic mostlyclean \
tools/mosaicing/Makefile.in:	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
tools/mosaicing/Makefile.in:	pdf pdf-am ps ps-am tags uninstall uninstall-am \
tools/mosaicing/Makefile.in:	uninstall-binPROGRAMS
tools/scripts/shrink_width.in:VIPSHOME=${VIPSHOME-@prefix@}
tools/scripts/Makefile.am:	vips-7.22
tools/scripts/Makefile.am:	vips-7.22 \
tools/scripts/Makefile.am:install-exec-hook:
tools/scripts/batch_crop.in:VIPSHOME=${VIPSHOME-@prefix@}
tools/scripts/batch_crop.in:if [ $# -lt 1 ]; then
tools/scripts/batch_crop.in:        if [ -f $new ]; then
tools/scripts/post_install:( cd $bin ; $bin/vips -k | sh )
tools/scripts/batch_image_convert.in:VIPSHOME=${VIPSHOME-@prefix@}
tools/scripts/batch_image_convert.in:if [ $# -lt 1 ]; then
tools/scripts/batch_image_convert.in:        if [ -f $base.$type ]; then
tools/scripts/batch_rubber_sheet.in:VIPSHOME=${VIPSHOME-@prefix@}
tools/scripts/batch_rubber_sheet.in:if [ $# -lt 1 ]; then
tools/scripts/Makefile.in:install_sh_DATA = $(install_sh) -c -m 644
tools/scripts/Makefile.in:install_sh_PROGRAM = $(install_sh) -c
tools/scripts/Makefile.in:install_sh_SCRIPT = $(install_sh) -c
tools/scripts/Makefile.in:am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
tools/scripts/Makefile.in:  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
tools/scripts/Makefile.in:	vips-7.22
tools/scripts/Makefile.in:	vips-7.22 \
tools/scripts/Makefile.in:all: all-am
tools/scripts/Makefile.in:	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
tools/scripts/Makefile.in:	        && { if test -f $@; then exit 0; else break; fi; }; \
tools/scripts/Makefile.in:	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/scripts/Makefile'; \
tools/scripts/Makefile.in:	  $(AUTOMAKE) --gnu tools/scripts/Makefile
tools/scripts/Makefile.in:	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
tools/scripts/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/scripts/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/scripts/Makefile.in:	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
tools/scripts/Makefile.in:install-binSCRIPTS: $(bin_SCRIPTS)
tools/scripts/Makefile.in:	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
tools/scripts/Makefile.in:	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
tools/scripts/Makefile.in:	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
tools/scripts/Makefile.in:	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
tools/scripts/Makefile.in:	sed -e 'p;s,.*/,,;n' \
tools/scripts/Makefile.in:	    -e 'h;s|.*|.|' \
tools/scripts/Makefile.in:	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
tools/scripts/Makefile.in:	     test -z "$$files" || { \
tools/scripts/Makefile.in:uninstall-binSCRIPTS:
tools/scripts/Makefile.in:	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
tools/scripts/Makefile.in:	       sed -e 's,.*/,,;$(transform)'`; \
tools/scripts/Makefile.in:	test -n "$$list" || exit 0; \
tools/scripts/Makefile.in:	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
tools/scripts/Makefile.in:	cd "$(DESTDIR)$(bindir)" && rm -f $$files
tools/scripts/Makefile.in:mostlyclean-libtool:
tools/scripts/Makefile.in:	-rm -f *.lo
tools/scripts/Makefile.in:clean-libtool:
tools/scripts/Makefile.in:	-rm -rf .libs _libs
tools/scripts/Makefile.in:	  sed -e "s|^$$srcdirstrip/||;t" \
tools/scripts/Makefile.in:	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
tools/scripts/Makefile.in:			   sort -u` ;; \
tools/scripts/Makefile.in:	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
tools/scripts/Makefile.in:	  if test -d $$d/$$file; then \
tools/scripts/Makefile.in:	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
tools/scripts/Makefile.in:	    if test -d "$(distdir)/$$file"; then \
tools/scripts/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/scripts/Makefile.in:	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
tools/scripts/Makefile.in:	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
tools/scripts/Makefile.in:	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
tools/scripts/Makefile.in:	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
tools/scripts/Makefile.in:	    test -f "$(distdir)/$$file" \
tools/scripts/Makefile.in:	    || cp -p $$d/$$file "$(distdir)/$$file" \
tools/scripts/Makefile.in:check-am: all-am
tools/scripts/Makefile.in:check: check-am
tools/scripts/Makefile.in:all-am: Makefile $(SCRIPTS)
tools/scripts/Makefile.in:	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
tools/scripts/Makefile.in:install: install-am
tools/scripts/Makefile.in:install-exec: install-exec-am
tools/scripts/Makefile.in:install-data: install-data-am
tools/scripts/Makefile.in:uninstall: uninstall-am
tools/scripts/Makefile.in:install-am: all-am
tools/scripts/Makefile.in:	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
tools/scripts/Makefile.in:installcheck: installcheck-am
tools/scripts/Makefile.in:install-strip:
tools/scripts/Makefile.in:	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
tools/scripts/Makefile.in:	  `test -z '$(STRIP)' || \
tools/scripts/Makefile.in:mostlyclean-generic:
tools/scripts/Makefile.in:clean-generic:
tools/scripts/Makefile.in:distclean-generic:
tools/scripts/Makefile.in:	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
tools/scripts/Makefile.in:	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
tools/scripts/Makefile.in:maintainer-clean-generic:
tools/scripts/Makefile.in:clean: clean-am
tools/scripts/Makefile.in:clean-am: clean-generic clean-libtool mostlyclean-am
tools/scripts/Makefile.in:distclean: distclean-am
tools/scripts/Makefile.in:	-rm -f Makefile
tools/scripts/Makefile.in:distclean-am: clean-am distclean-generic
tools/scripts/Makefile.in:dvi: dvi-am
tools/scripts/Makefile.in:dvi-am:
tools/scripts/Makefile.in:html: html-am
tools/scripts/Makefile.in:html-am:
tools/scripts/Makefile.in:info: info-am
tools/scripts/Makefile.in:info-am:
tools/scripts/Makefile.in:install-data-am:
tools/scripts/Makefile.in:install-dvi: install-dvi-am
tools/scripts/Makefile.in:install-dvi-am:
tools/scripts/Makefile.in:install-exec-am: install-binSCRIPTS
tools/scripts/Makefile.in:	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
tools/scripts/Makefile.in:install-html: install-html-am
tools/scripts/Makefile.in:install-html-am:
tools/scripts/Makefile.in:install-info: install-info-am
tools/scripts/Makefile.in:install-info-am:
tools/scripts/Makefile.in:install-man:
tools/scripts/Makefile.in:install-pdf: install-pdf-am
tools/scripts/Makefile.in:install-pdf-am:
tools/scripts/Makefile.in:install-ps: install-ps-am
tools/scripts/Makefile.in:install-ps-am:
tools/scripts/Makefile.in:installcheck-am:
tools/scripts/Makefile.in:maintainer-clean: maintainer-clean-am
tools/scripts/Makefile.in:	-rm -f Makefile
tools/scripts/Makefile.in:maintainer-clean-am: distclean-am maintainer-clean-generic
tools/scripts/Makefile.in:mostlyclean: mostlyclean-am
tools/scripts/Makefile.in:mostlyclean-am: mostlyclean-generic mostlyclean-libtool
tools/scripts/Makefile.in:pdf: pdf-am
tools/scripts/Makefile.in:pdf-am:
tools/scripts/Makefile.in:ps: ps-am
tools/scripts/Makefile.in:ps-am:
tools/scripts/Makefile.in:uninstall-am: uninstall-binSCRIPTS
tools/scripts/Makefile.in:.MAKE: install-am install-exec-am install-strip
tools/scripts/Makefile.in:.PHONY: all all-am check check-am clean clean-generic clean-libtool \
tools/scripts/Makefile.in:	distclean distclean-generic distclean-libtool distdir dvi \
tools/scripts/Makefile.in:	dvi-am html html-am info info-am install install-am \
tools/scripts/Makefile.in:	install-binSCRIPTS install-data install-data-am install-dvi \
tools/scripts/Makefile.in:	install-dvi-am install-exec install-exec-am install-exec-hook \
tools/scripts/Makefile.in:	install-html install-html-am install-info install-info-am \
tools/scripts/Makefile.in:	install-man install-pdf install-pdf-am install-ps \
tools/scripts/Makefile.in:	install-ps-am install-strip installcheck installcheck-am \
tools/scripts/Makefile.in:	installdirs maintainer-clean maintainer-clean-generic \
tools/scripts/Makefile.in:	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
tools/scripts/Makefile.in:	ps ps-am uninstall uninstall-am uninstall-binSCRIPTS
tools/scripts/Makefile.in:install-exec-hook:
tools/scripts/light_correct.in:VIPSHOME=${VIPSHOME-@prefix@}
tools/scripts/light_correct.in:if [ $# -lt 2 ]; then
tools/scripts/light_correct.in:$VIPSHOME/bin/vips im_powtra $t2.v $t1.v -1
tools/scripts/light_correct.in:        name=`echo $name | sed -e 's/\.[^\.]*//'`
tools/scripts/light_correct.in:        /bin/rm -f "ic_$name.desc"
tools/scripts/light_correct.in:/bin/rm -f $t1.v $t1.desc
tools/scripts/light_correct.in:/bin/rm -f $t2.v $t2.desc
tools/scripts/vips-7.22:shopt -s extglob 
tools/scripts/vips-7.22:# set -x
tools/scripts/vips-7.22:# eg. "/home/john/vips/bin/fred" -> "/home/john/vips"
tools/scripts/vips-7.22:	if [ -f $0 ]; then
tools/scripts/vips-7.22:		if [ -f $path ]; then
vips-7.22.pc.in:Name: vips-@IM_MAJOR_VERSION@.@IM_MINOR_VERSION@
vips-7.22.pc.in:Libs: -L${libdir} -lvips @VIPS_LIBS@
vips-7.22.pc.in:Cflags: -I${includedir} 
vipsCC-7.22.pc.in:Name: vipsCC-@IM_MAJOR_VERSION@.@IM_MINOR_VERSION@
vipsCC-7.22.pc.in:Requires: vips-@IM_MAJOR_VERSION@.@IM_MINOR_VERSION@ = @VERSION@
vipsCC-7.22.pc.in:Libs: -L${libdir} -lvipsCC
