Skip to content

Instantly share code, notes, and snippets.

@jcupitt
Created July 7, 2020 09:44
Show Gist options
  • Save jcupitt/eef9d24d19d345da6dccbb8e569951c7 to your computer and use it in GitHub Desktop.
Save jcupitt/eef9d24d19d345da6dccbb8e569951c7 to your computer and use it in GitHub Desktop.
sample libvips GIR
This file has been truncated, but you can view the full file.
<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations. -->
<repository version="1.2"
xmlns="http://www.gtk.org/introspection/core/1.0"
xmlns:c="http://www.gtk.org/introspection/c/1.0"
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
<include name="GObject" version="2.0"/>
<c:include name="vips/vips.h"/>
<namespace name="Vips"
version="8.0"
shared-library="libvips.so.42"
c:identifier-prefixes="Vips,vips"
c:symbol-prefixes="vips">
<alias name="ArgumentTable" c:type="VipsArgumentTable">
<source-position filename="include/vips/object.h" line="298"/>
<type name="GLib.HashTable" c:type="GHashTable"/>
</alias>
<alias name="Pel" c:type="VipsPel">
<doc xml:space="preserve"
filename="include/vips/basic.h"
line="41">A picture element. Cast this to whatever the associated VipsBandFormat says
to get the value.</doc>
<source-position filename="include/vips/basic.h" line="47"/>
<type name="guint8" c:type="unsigned char"/>
</alias>
<function-macro name="AREA" c:identifier="VIPS_AREA" introspectable="0">
<source-position filename="include/vips/type.h" line="127"/>
<parameters>
<parameter name="X">
</parameter>
</parameters>
</function-macro>
<constant name="ARGUMENT_OPTIONAL_INPUT"
value="18"
c:type="VIPS_ARGUMENT_OPTIONAL_INPUT">
<source-position filename="include/vips/object.h" line="87"/>
<type name="gint" c:type="gint"/>
</constant>
<constant name="ARGUMENT_OPTIONAL_OUTPUT"
value="34"
c:type="VIPS_ARGUMENT_OPTIONAL_OUTPUT">
<source-position filename="include/vips/object.h" line="91"/>
<type name="gint" c:type="gint"/>
</constant>
<constant name="ARGUMENT_REQUIRED_INPUT"
value="19"
c:type="VIPS_ARGUMENT_REQUIRED_INPUT">
<source-position filename="include/vips/object.h" line="85"/>
<type name="gint" c:type="gint"/>
</constant>
<constant name="ARGUMENT_REQUIRED_OUTPUT"
value="35"
c:type="VIPS_ARGUMENT_REQUIRED_OUTPUT">
<source-position filename="include/vips/object.h" line="89"/>
<type name="gint" c:type="gint"/>
</constant>
<function-macro name="ARG_IMAGE"
c:identifier="VIPS_ARG_IMAGE"
introspectable="0">
<source-position filename="include/vips/object.h" line="93"/>
<parameters>
<parameter name="CLASS">
</parameter>
<parameter name="NAME">
</parameter>
<parameter name="PRIORITY">
</parameter>
<parameter name="LONG">
</parameter>
<parameter name="DESC">
</parameter>
<parameter name="FLAGS">
</parameter>
<parameter name="OFFSET">
</parameter>
</parameters>
</function-macro>
<function-macro name="ARG_INTERPOLATE"
c:identifier="VIPS_ARG_INTERPOLATE"
introspectable="0">
<source-position filename="include/vips/object.h" line="117"/>
<parameters>
<parameter name="CLASS">
</parameter>
<parameter name="NAME">
</parameter>
<parameter name="PRIORITY">
</parameter>
<parameter name="LONG">
</parameter>
<parameter name="DESC">
</parameter>
<parameter name="FLAGS">
</parameter>
<parameter name="OFFSET">
</parameter>
</parameters>
</function-macro>
<function-macro name="ARG_OBJECT"
c:identifier="VIPS_ARG_OBJECT"
introspectable="0">
<source-position filename="include/vips/object.h" line="105"/>
<parameters>
<parameter name="CLASS">
</parameter>
<parameter name="NAME">
</parameter>
<parameter name="PRIORITY">
</parameter>
<parameter name="LONG">
</parameter>
<parameter name="DESC">
</parameter>
<parameter name="FLAGS">
</parameter>
<parameter name="OFFSET">
</parameter>
<parameter name="TYPE">
</parameter>
</parameters>
</function-macro>
<function-macro name="ARRAY" c:identifier="VIPS_ARRAY" introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/memory.c"
line="132">Allocate memory for an array of objects of type @T. The memory is not
cleared.
This macro cannot fail. See vips_tracked_malloc() if you are
allocating large amounts of memory.
See also: vips_malloc().</doc>
<source-position filename="include/vips/memory.h" line="64"/>
<parameters>
<parameter name="OBJ">
<doc xml:space="preserve"
filename="iofuncs/memory.c"
line="134">allocate memory local to @OBJ, or %NULL for no auto-free</doc>
</parameter>
<parameter name="N">
<doc xml:space="preserve"
filename="iofuncs/memory.c"
line="135">number of @T 's to allocate</doc>
</parameter>
<parameter name="T">
<doc xml:space="preserve"
filename="iofuncs/memory.c"
line="136">type of thing to allocate</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="ARRAY_ADDR"
c:identifier="VIPS_ARRAY_ADDR"
introspectable="0">
<source-position filename="include/vips/type.h" line="105"/>
<parameters>
<parameter name="X">
</parameter>
<parameter name="I">
</parameter>
</parameters>
</function-macro>
<constant name="A_X0" value="109.850300" c:type="VIPS_A_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="189">Areas under curves for illuminant A (2856K), 2 degree observer.</doc>
<source-position filename="include/vips/colour.h" line="72"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="A_Y0" value="100.000000" c:type="VIPS_A_Y0">
<source-position filename="include/vips/colour.h" line="73"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="A_Z0" value="35.584900" c:type="VIPS_A_Z0">
<source-position filename="include/vips/colour.h" line="74"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<enumeration name="Access"
glib:type-name="VipsAccess"
glib:get-type="vips_access_get_type"
c:type="VipsAccess">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="154">The type of access an operation has to supply. See vips_tilecache()
and #VipsForeign.
@VIPS_ACCESS_RANDOM means requests can come in any order.
@VIPS_ACCESS_SEQUENTIAL means requests will be top-to-bottom, but with some
amount of buffering behind the read point for small non-local accesses.</doc>
<member name="random"
value="0"
c:identifier="VIPS_ACCESS_RANDOM"
glib:nick="random">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="156">can read anywhere</doc>
</member>
<member name="sequential"
value="1"
c:identifier="VIPS_ACCESS_SEQUENTIAL"
glib:nick="sequential">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="157">top-to-bottom reading only, but with a small buffer</doc>
</member>
<member name="sequential_unbuffered"
value="2"
c:identifier="VIPS_ACCESS_SEQUENTIAL_UNBUFFERED"
glib:nick="sequential-unbuffered">
</member>
<member name="last"
value="3"
c:identifier="VIPS_ACCESS_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="Align"
glib:type-name="VipsAlign"
glib:get-type="vips_align_get_type"
c:type="VipsAlign">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="181">See vips_join() and so on.
Operations like vips_join() need to be told whether to align images on the
low or high coordinate edge, or centre.
See also: vips_join().</doc>
<member name="low"
value="0"
c:identifier="VIPS_ALIGN_LOW"
glib:nick="low">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="183">align low coordinate edge</doc>
</member>
<member name="centre"
value="1"
c:identifier="VIPS_ALIGN_CENTRE"
glib:nick="centre">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="184">align centre</doc>
</member>
<member name="high"
value="2"
c:identifier="VIPS_ALIGN_HIGH"
glib:nick="high">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="185">align high coordinate edge</doc>
</member>
<member name="last"
value="3"
c:identifier="VIPS_ALIGN_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="Angle"
glib:type-name="VipsAngle"
glib:get-type="vips_angle_get_type"
c:type="VipsAngle">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="195">See vips_rot() and so on.
Fixed rotate angles.
See also: vips_rot().</doc>
<member name="d0" value="0" c:identifier="VIPS_ANGLE_D0" glib:nick="d0">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="197">no rotate</doc>
</member>
<member name="d90"
value="1"
c:identifier="VIPS_ANGLE_D90"
glib:nick="d90">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="198">90 degrees clockwise</doc>
</member>
<member name="d180"
value="2"
c:identifier="VIPS_ANGLE_D180"
glib:nick="d180">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="199">180 degree rotate</doc>
</member>
<member name="d270"
value="3"
c:identifier="VIPS_ANGLE_D270"
glib:nick="d270">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="200">90 degrees anti-clockwise</doc>
</member>
<member name="last"
value="4"
c:identifier="VIPS_ANGLE_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="Angle45"
glib:type-name="VipsAngle45"
glib:get-type="vips_angle45_get_type"
c:type="VipsAngle45">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="245">See vips_rot45() and so on.
Fixed rotate angles.
See also: vips_rot45().</doc>
<member name="d0"
value="0"
c:identifier="VIPS_ANGLE45_D0"
glib:nick="d0">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="247">no rotate</doc>
</member>
<member name="d45"
value="1"
c:identifier="VIPS_ANGLE45_D45"
glib:nick="d45">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="248">45 degrees clockwise</doc>
</member>
<member name="d90"
value="2"
c:identifier="VIPS_ANGLE45_D90"
glib:nick="d90">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="249">90 degrees clockwise</doc>
</member>
<member name="d135"
value="3"
c:identifier="VIPS_ANGLE45_D135"
glib:nick="d135">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="250">135 degrees clockwise</doc>
</member>
<member name="d180"
value="4"
c:identifier="VIPS_ANGLE45_D180"
glib:nick="d180">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="251">180 degrees</doc>
</member>
<member name="d225"
value="5"
c:identifier="VIPS_ANGLE45_D225"
glib:nick="d225">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="252">135 degrees anti-clockwise</doc>
</member>
<member name="d270"
value="6"
c:identifier="VIPS_ANGLE45_D270"
glib:nick="d270">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="253">90 degrees anti-clockwise</doc>
</member>
<member name="d315"
value="7"
c:identifier="VIPS_ANGLE45_D315"
glib:nick="d315">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="254">45 degrees anti-clockwise</doc>
</member>
<member name="last"
value="8"
c:identifier="VIPS_ANGLE45_LAST"
glib:nick="last">
</member>
</enumeration>
<record name="Area"
c:type="VipsArea"
glib:type-name="VipsArea"
glib:get-type="vips_area_get_type"
c:symbol-prefix="area">
<source-position filename="include/vips/type.h" line="92"/>
<field name="data" writable="1">
<type name="gpointer" c:type="void*"/>
</field>
<field name="length" writable="1">
<type name="gsize" c:type="size_t"/>
</field>
<field name="n" writable="1">
<type name="gint" c:type="int"/>
</field>
<field name="count" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="lock" readable="0" private="1">
<type name="GLib.Mutex" c:type="GMutex*"/>
</field>
<field name="free_fn" readable="0" private="1">
<type name="CallbackFn" c:type="VipsCallbackFn"/>
</field>
<field name="client" readable="0" private="1">
<type name="gpointer" c:type="void*"/>
</field>
<field name="type" readable="0" private="1">
<type name="GType" c:type="GType"/>
</field>
<field name="sizeof_type" readable="0" private="1">
<type name="gsize" c:type="size_t"/>
</field>
<constructor name="new" c:identifier="vips_area_new">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="239">A VipsArea wraps a chunk of memory. It adds reference counting and a free
function. It also keeps a count and a %GType, so the area can be an array.
This type is used for things like passing an array of double or an array of
#VipsObject pointers to operations, and for reference-counted immutable
strings.
Inital count == 1, so _unref() after attaching somewhere.
See also: vips_area_unref().</doc>
<source-position filename="include/vips/type.h" line="98"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="255">the new #VipsArea.</doc>
<type name="Area" c:type="VipsArea*"/>
</return-value>
<parameters>
<parameter name="free_fn"
transfer-ownership="none"
scope="async"
closure="1">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="241">@data will be freed with this function</doc>
<type name="CallbackFn" c:type="VipsCallbackFn"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="242">data will be freed with this function</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_array" c:identifier="vips_area_new_array">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="305">An area which holds an array of elements of some %GType. To set values for
the elements, get the pointer and write.
See also: vips_area_unref().</doc>
<source-position filename="include/vips/type.h" line="99"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="316">the new #VipsArea.</doc>
<type name="Area" c:type="VipsArea*"/>
</return-value>
<parameters>
<parameter name="type" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="307">%GType of elements to store</doc>
<type name="GType" c:type="GType"/>
</parameter>
<parameter name="sizeof_type" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="308">sizeof() an element in the array</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="309">number of elements in the array</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_array_object"
c:identifier="vips_area_new_array_object">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="348">An area which holds an array of %GObject s. See vips_area_new_array(). When
the area is freed, each %GObject will be unreffed.
Add an extra NULL element at the end, handy for eg.
vips_image_pipeline_array() etc.
See also: vips_area_unref().</doc>
<source-position filename="include/vips/type.h" line="100"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="360">the new #VipsArea.</doc>
<type name="Area" c:type="VipsArea*"/>
</return-value>
<parameters>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="350">number of elements in the array</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</constructor>
<method name="area_get_data" c:identifier="vips_area_get_data">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="379">Return the data pointer plus optionally the length in bytes of an area,
the number of elements, the %GType of each element and the sizeof() each
element.</doc>
<source-position filename="include/vips/type.h" line="101"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="391">The pointer held by @area.</doc>
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<instance-parameter name="area" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="381">#VipsArea to fetch from</doc>
<type name="Area" c:type="VipsArea*"/>
</instance-parameter>
<parameter name="length" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="382">optionally return length in bytes here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="383">optionally return number of elements here</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="type" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="384">optionally return element type here</doc>
<type name="GType" c:type="GType*"/>
</parameter>
<parameter name="sizeof_type" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="385">optionally return sizeof() element type here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
</parameters>
</method>
<method name="copy" c:identifier="vips_area_copy">
<source-position filename="include/vips/type.h" line="94"/>
<return-value transfer-ownership="full">
<type name="Area" c:type="VipsArea*"/>
</return-value>
<parameters>
<instance-parameter name="area" transfer-ownership="none">
<type name="Area" c:type="VipsArea*"/>
</instance-parameter>
</parameters>
</method>
<method name="unref" c:identifier="vips_area_unref">
<source-position filename="include/vips/type.h" line="96"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="area" transfer-ownership="none">
<type name="Area" c:type="VipsArea*"/>
</instance-parameter>
</parameters>
</method>
<function name="free_cb" c:identifier="vips_area_free_cb">
<source-position filename="include/vips/type.h" line="95"/>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<parameter name="mem"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="area" transfer-ownership="none">
<type name="Area" c:type="VipsArea*"/>
</parameter>
</parameters>
</function>
</record>
<record name="Argument" c:type="VipsArgument">
<source-position filename="include/vips/object.h" line="251"/>
<field name="pspec" writable="1">
<type name="GObject.ParamSpec" c:type="GParamSpec*"/>
</field>
<function name="get_id"
c:identifier="vips_argument_get_id"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="225">Allocate a new property id. See g_object_class_install_property().</doc>
<source-position filename="include/vips/object.h" line="300"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="230">a new property id &gt; 0</doc>
<type name="gint" c:type="int"/>
</return-value>
</function>
<function name="map" c:identifier="vips_argument_map" introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="576">Loop over the vips_arguments to an object. Stop when @fn returns non-%NULL
and return that value.</doc>
<source-position filename="include/vips/object.h" line="306"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="586">%NULL if @fn returns %NULL for all arguments, otherwise the first
non-%NULL value from @fn.</doc>
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<parameter name="object" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="578">object whose args should be enumerated</doc>
<type name="Object" c:type="VipsObject*"/>
</parameter>
<parameter name="fn" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="579">call this function for every argument</doc>
<type name="ArgumentMapFn" c:type="VipsArgumentMapFn"/>
</parameter>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="580">client data</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="b"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="581">client data</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</function>
</record>
<record name="ArgumentClass" c:type="VipsArgumentClass">
<source-position filename="include/vips/object.h" line="265"/>
<field name="parent" writable="1">
<type name="Argument" c:type="VipsArgument"/>
</field>
<field name="object_class" writable="1">
<type name="ObjectClass" c:type="VipsObjectClass*"/>
</field>
<field name="flags" writable="1">
<type name="ArgumentFlags" c:type="VipsArgumentFlags"/>
</field>
<field name="priority" writable="1">
<type name="gint" c:type="int"/>
</field>
<field name="offset" writable="1">
<type name="guint" c:type="guint"/>
</field>
<method name="needsstring"
c:identifier="vips_argument_class_needsstring">
<source-position filename="include/vips/object.h" line="315"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="argument_class" transfer-ownership="none">
<type name="ArgumentClass" c:type="VipsArgumentClass*"/>
</instance-parameter>
</parameters>
</method>
<function name="map"
c:identifier="vips_argument_class_map"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="618">And loop over a class. Same as ^^, but with no VipsArgumentInstance.</doc>
<source-position filename="include/vips/object.h" line="313"/>
<return-value transfer-ownership="none" nullable="1">
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<parameter name="object_class" transfer-ownership="none">
<type name="ObjectClass" c:type="VipsObjectClass*"/>
</parameter>
<parameter name="fn" transfer-ownership="none">
<type name="ArgumentClassMapFn" c:type="VipsArgumentClassMapFn"/>
</parameter>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="b"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</function>
</record>
<callback name="ArgumentClassMapFn" c:type="VipsArgumentClassMapFn">
<source-position filename="include/vips/object.h" line="310"/>
<return-value transfer-ownership="none" nullable="1">
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<parameter name="object_class" transfer-ownership="none">
<type name="ObjectClass" c:type="VipsObjectClass*"/>
</parameter>
<parameter name="pspec" transfer-ownership="none">
<type name="GObject.ParamSpec" c:type="GParamSpec*"/>
</parameter>
<parameter name="argument_class" transfer-ownership="none">
<type name="ArgumentClass" c:type="VipsArgumentClass*"/>
</parameter>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="b"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
<bitfield name="ArgumentFlags"
glib:type-name="VipsArgumentFlags"
glib:get-type="vips_argument_flags_get_type"
c:type="VipsArgumentFlags">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="165">Flags we associate with each object argument.
Have separate input &amp; output flags. Both set is an error; neither set is OK.
Input gobjects are automatically reffed, output gobjects automatically ref
us. We also automatically watch for "destroy" and unlink.
@VIPS_ARGUMENT_SET_ALWAYS is handy for arguments which are set from C. For
example, VipsImage::width is a property that gives access to the Xsize
member of struct _VipsImage. We default its 'assigned' to TRUE
since the field is always set directly by C.
@VIPS_ARGUMENT_DEPRECATED arguments are not shown in help text, are not
looked for if required, are not checked for "have-been-set". You can
deprecate a required argument, but you must obviously add a new required
argument if you do.
Input args with @VIPS_ARGUMENT_MODIFY will be modified by the operation.
This is used for things like the in-place drawing operations.</doc>
<member name="none"
value="0"
c:identifier="VIPS_ARGUMENT_NONE"
glib:nick="none">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="167">no flags</doc>
</member>
<member name="required"
value="1"
c:identifier="VIPS_ARGUMENT_REQUIRED"
glib:nick="required">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="168">must be set in the constructor</doc>
</member>
<member name="construct"
value="2"
c:identifier="VIPS_ARGUMENT_CONSTRUCT"
glib:nick="construct">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="169">can only be set in the constructor</doc>
</member>
<member name="set_once"
value="4"
c:identifier="VIPS_ARGUMENT_SET_ONCE"
glib:nick="set-once">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="170">can only be set once</doc>
</member>
<member name="set_always"
value="8"
c:identifier="VIPS_ARGUMENT_SET_ALWAYS"
glib:nick="set-always">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="171">don't do use-before-set checks</doc>
</member>
<member name="input"
value="16"
c:identifier="VIPS_ARGUMENT_INPUT"
glib:nick="input">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="172">is an input argument (one we depend on)</doc>
</member>
<member name="output"
value="32"
c:identifier="VIPS_ARGUMENT_OUTPUT"
glib:nick="output">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="173">is an output argument (depends on us)</doc>
</member>
<member name="deprecated"
value="64"
c:identifier="VIPS_ARGUMENT_DEPRECATED"
glib:nick="deprecated">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="174">just there for back-compat, hide</doc>
</member>
<member name="modify"
value="128"
c:identifier="VIPS_ARGUMENT_MODIFY"
glib:nick="modify">
<doc xml:space="preserve"
filename="iofuncs/object.c"
line="175">the input argument will be modified</doc>
</member>
</bitfield>
<record name="ArgumentInstance" c:type="VipsArgumentInstance">
<source-position filename="include/vips/object.h" line="293"/>
<field name="parent" writable="1">
<type name="Argument" c:type="VipsArgument"/>
</field>
<field name="argument_class" writable="1">
<type name="ArgumentClass" c:type="VipsArgumentClass*"/>
</field>
<field name="object" writable="1">
<type name="Object" c:type="VipsObject*"/>
</field>
<field name="assigned" writable="1">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="close_id" writable="1">
<type name="gulong" c:type="gulong"/>
</field>
<field name="invalidate_id" writable="1">
<type name="gulong" c:type="gulong"/>
</field>
</record>
<callback name="ArgumentMapFn" c:type="VipsArgumentMapFn">
<source-position filename="include/vips/object.h" line="303"/>
<return-value transfer-ownership="none" nullable="1">
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<parameter name="object" transfer-ownership="none">
<type name="Object" c:type="VipsObject*"/>
</parameter>
<parameter name="pspec" transfer-ownership="none">
<type name="GObject.ParamSpec" c:type="GParamSpec*"/>
</parameter>
<parameter name="argument_class" transfer-ownership="none">
<type name="ArgumentClass" c:type="VipsArgumentClass*"/>
</parameter>
<parameter name="argument_instance" transfer-ownership="none">
<type name="ArgumentInstance" c:type="VipsArgumentInstance*"/>
</parameter>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="b"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
<record name="ArrayDouble"
c:type="VipsArrayDouble"
glib:type-name="VipsArrayDouble"
glib:get-type="vips_array_double_get_type"
c:symbol-prefix="array_double">
<source-position filename="include/vips/type.h" line="181"/>
<field name="area" writable="1">
<type name="Area" c:type="VipsArea"/>
</field>
<constructor name="new" c:identifier="vips_array_double_new">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1040">Allocate a new array of doubles and copy @array into it. Free with
vips_area_unref().
See also: #VipsArea.</doc>
<source-position filename="include/vips/type.h" line="183"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1050">A new #VipsArrayDouble.</doc>
<type name="ArrayDouble" c:type="VipsArrayDouble*"/>
</return-value>
<parameters>
<parameter name="array" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1042">array of double</doc>
<array length="1" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1043">number of doubles</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</constructor>
<constructor name="newv"
c:identifier="vips_array_double_newv"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1065">Allocate a new array of @n doubles and copy @... into it. Free with
vips_area_unref().
See also: vips_array_double_new()</doc>
<source-position filename="include/vips/type.h" line="184"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1075">A new #VipsArrayDouble.</doc>
<type name="ArrayDouble" c:type="VipsArrayDouble*"/>
</return-value>
<parameters>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1067">number of doubles</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1068">list of double arguments</doc>
<varargs/>
</parameter>
</parameters>
</constructor>
<method name="get" c:identifier="vips_array_double_get">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1096">Fetch a double array from a #VipsArrayDouble. Useful for language bindings.</doc>
<source-position filename="include/vips/type.h" line="185"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1103">array of double</doc>
<array length="0" zero-terminated="0" c:type="double*">
<type name="gdouble" c:type="double"/>
</array>
</return-value>
<parameters>
<instance-parameter name="array" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1098">the #VipsArrayDouble to fetch from</doc>
<type name="ArrayDouble" c:type="VipsArrayDouble*"/>
</instance-parameter>
<parameter name="n"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1099">length of array</doc>
<type name="gint" c:type="int*"/>
</parameter>
</parameters>
</method>
</record>
<record name="ArrayImage"
c:type="VipsArrayImage"
glib:type-name="VipsArrayImage"
glib:get-type="vips_array_image_get_type"
c:symbol-prefix="array_image">
<source-position filename="include/vips/type.h" line="213"/>
<field name="area" writable="1">
<type name="Area" c:type="VipsArea"/>
</field>
<constructor name="empty" c:identifier="vips_array_image_empty">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1382">Make an empty image array.
Handy with vips_array_image_add() for bindings
which can't handle object array arguments.
See also: vips_array_image_add().</doc>
<source-position filename="include/vips/image.h" line="512"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1391">A new #VipsArrayImage.</doc>
<type name="ArrayImage" c:type="VipsArrayImage*"/>
</return-value>
</constructor>
<constructor name="new" c:identifier="vips_array_image_new">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1257">Allocate a new array of images and copy @array into it. Free with
vips_area_unref().
The images will all be reffed by this function. They
will be automatically unreffed for you by
vips_area_unref().
Add an extra NULL element at the end, handy for eg.
vips_image_pipeline_array() etc.
See also: #VipsArea.</doc>
<source-position filename="include/vips/image.h" line="508"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1274">A new #VipsArrayImage.</doc>
<type name="ArrayImage" c:type="VipsArrayImage*"/>
</return-value>
<parameters>
<parameter name="array" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1259">array of #VipsImage</doc>
<array length="1" zero-terminated="0" c:type="VipsImage**">
<type name="Image" c:type="VipsImage*"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1260">number of images</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_from_string"
c:identifier="vips_array_image_new_from_string">
<source-position filename="include/vips/image.h" line="510"/>
<return-value transfer-ownership="full">
<type name="ArrayImage" c:type="VipsArrayImage*"/>
</return-value>
<parameters>
<parameter name="string" transfer-ownership="none">
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="flags" transfer-ownership="none">
<type name="Access" c:type="VipsAccess"/>
</parameter>
</parameters>
</constructor>
<constructor name="newv"
c:identifier="vips_array_image_newv"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1295">Allocate a new array of @n #VipsImage and copy @... into it. Free with
vips_area_unref().
The images will all be reffed by this function. They
will be automatically unreffed for you by
vips_area_unref().
Add an extra NULL element at the end, handy for eg.
vips_image_pipeline_array() etc.
See also: vips_array_image_new()</doc>
<source-position filename="include/vips/image.h" line="509"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1312">A new #VipsArrayImage.</doc>
<type name="ArrayImage" c:type="VipsArrayImage*"/>
</return-value>
<parameters>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1297">number of images</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1298">list of #VipsImage arguments</doc>
<varargs/>
</parameter>
</parameters>
</constructor>
<method name="array_image_append" c:identifier="vips_array_image_append">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1399">Make a new #VipsArrayImage, one larger than @array, with @image appended
to the end.
Handy with vips_array_image_empty() for bindings
which can't handle object array arguments.
See also: vips_array_image_empty().</doc>
<source-position filename="include/vips/image.h" line="513"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1411">A new #VipsArrayImage.</doc>
<type name="ArrayImage" c:type="VipsArrayImage*"/>
</return-value>
<parameters>
<instance-parameter name="array" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1401">append to this</doc>
<type name="ArrayImage" c:type="VipsArrayImage*"/>
</instance-parameter>
<parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1402">add this</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
</parameters>
</method>
<method name="array_image_get" c:identifier="vips_array_image_get">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1439">Fetch an image array from a #VipsArrayImage. Useful for language bindings.</doc>
<source-position filename="include/vips/image.h" line="515"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1446">array of #VipsImage</doc>
<array length="0" zero-terminated="0" c:type="VipsImage**">
<type name="Image" c:type="VipsImage*"/>
</array>
</return-value>
<parameters>
<instance-parameter name="array" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1441">the #VipsArrayImage to fetch from</doc>
<type name="ArrayImage" c:type="VipsArrayImage*"/>
</instance-parameter>
<parameter name="n"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="1442">length of array</doc>
<type name="gint" c:type="int*"/>
</parameter>
</parameters>
</method>
</record>
<record name="ArrayInt"
c:type="VipsArrayInt"
glib:type-name="VipsArrayInt"
glib:get-type="vips_array_int_get_type"
c:symbol-prefix="array_int">
<source-position filename="include/vips/type.h" line="197"/>
<field name="area" writable="1">
<type name="Area" c:type="VipsArea"/>
</field>
<constructor name="new" c:identifier="vips_array_int_new">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="797">Allocate a new array of ints and copy @array into it. Free with
vips_area_unref().
See also: #VipsArea.</doc>
<source-position filename="include/vips/type.h" line="199"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="807">A new #VipsArrayInt.</doc>
<type name="ArrayInt" c:type="VipsArrayInt*"/>
</return-value>
<parameters>
<parameter name="array" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="799">array of int</doc>
<array length="1" zero-terminated="0" c:type="const int*">
<type name="gint" c:type="int"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="800">number of ints</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</constructor>
<constructor name="newv"
c:identifier="vips_array_int_newv"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="822">Allocate a new array of @n ints and copy @... into it. Free with
vips_area_unref().
See also: vips_array_int_new()</doc>
<source-position filename="include/vips/type.h" line="200"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="832">A new #VipsArrayInt.</doc>
<type name="ArrayInt" c:type="VipsArrayInt*"/>
</return-value>
<parameters>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="824">number of ints</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="825">list of int arguments</doc>
<varargs/>
</parameter>
</parameters>
</constructor>
<method name="get" c:identifier="vips_array_int_get">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="853">Fetch an int array from a #VipsArrayInt. Useful for language bindings.</doc>
<source-position filename="include/vips/type.h" line="201"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="860">array of int</doc>
<array length="0" zero-terminated="0" c:type="int*">
<type name="gint" c:type="int"/>
</array>
</return-value>
<parameters>
<instance-parameter name="array" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="855">the #VipsArrayInt to fetch from</doc>
<type name="ArrayInt" c:type="VipsArrayInt*"/>
</instance-parameter>
<parameter name="n"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="856">length of array</doc>
<type name="gint" c:type="int*"/>
</parameter>
</parameters>
</method>
</record>
<constant name="B_X0" value="99.072000" c:type="VIPS_B_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="195">Areas under curves for illuminant B (4874K), 2 degree observer.</doc>
<source-position filename="include/vips/colour.h" line="78"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="B_Y0" value="100.000000" c:type="VIPS_B_Y0">
<source-position filename="include/vips/colour.h" line="79"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="B_Z0" value="85.223000" c:type="VIPS_B_Z0">
<source-position filename="include/vips/colour.h" line="80"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<enumeration name="BandFormat"
glib:type-name="VipsBandFormat"
glib:get-type="vips_band_format_get_type"
c:type="VipsBandFormat">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="240">The format used for each band element.
Each corresponds to a native C type for the current machine. For example,
#VIPS_FORMAT_USHORT is &lt;type&gt;unsigned short&lt;/type&gt;.</doc>
<member name="notset"
value="-1"
c:identifier="VIPS_FORMAT_NOTSET"
glib:nick="notset">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="242">invalid setting</doc>
</member>
<member name="uchar"
value="0"
c:identifier="VIPS_FORMAT_UCHAR"
glib:nick="uchar">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="243">unsigned char format</doc>
</member>
<member name="char"
value="1"
c:identifier="VIPS_FORMAT_CHAR"
glib:nick="char">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="244">char format</doc>
</member>
<member name="ushort"
value="2"
c:identifier="VIPS_FORMAT_USHORT"
glib:nick="ushort">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="245">unsigned short format</doc>
</member>
<member name="short"
value="3"
c:identifier="VIPS_FORMAT_SHORT"
glib:nick="short">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="246">short format</doc>
</member>
<member name="uint"
value="4"
c:identifier="VIPS_FORMAT_UINT"
glib:nick="uint">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="247">unsigned int format</doc>
</member>
<member name="int"
value="5"
c:identifier="VIPS_FORMAT_INT"
glib:nick="int">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="248">int format</doc>
</member>
<member name="float"
value="6"
c:identifier="VIPS_FORMAT_FLOAT"
glib:nick="float">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="249">float format</doc>
</member>
<member name="complex"
value="7"
c:identifier="VIPS_FORMAT_COMPLEX"
glib:nick="complex">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="250">complex (two floats) format</doc>
</member>
<member name="double"
value="8"
c:identifier="VIPS_FORMAT_DOUBLE"
glib:nick="double">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="251">double float format</doc>
</member>
<member name="dpcomplex"
value="9"
c:identifier="VIPS_FORMAT_DPCOMPLEX"
glib:nick="dpcomplex">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="252">double complex (two double) format</doc>
</member>
<member name="last"
value="10"
c:identifier="VIPS_FORMAT_LAST"
glib:nick="last">
</member>
<function name="is8bit" c:identifier="vips_band_format_is8bit">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3785">Return %TRUE if @format is uchar or schar.</doc>
<source-position filename="include/vips/image.h" line="499"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3787">format to test</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</parameter>
</parameters>
</function>
<function name="iscomplex" c:identifier="vips_band_format_iscomplex">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3845">Return %TRUE if @fmt is one of the complex types.</doc>
<source-position filename="include/vips/image.h" line="501"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3847">format to test</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</parameter>
</parameters>
</function>
<function name="isfloat" c:identifier="vips_band_format_isfloat">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3815">Return %TRUE if @format is one of the float types.</doc>
<source-position filename="include/vips/image.h" line="500"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3817">format to test</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</parameter>
</parameters>
</function>
<function name="isint" c:identifier="vips_band_format_isint">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3725">Return %TRUE if @format is one of the integer types.</doc>
<source-position filename="include/vips/image.h" line="497"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3727">format to test</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</parameter>
</parameters>
</function>
<function name="isuint" c:identifier="vips_band_format_isuint">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3755">Return %TRUE if @format is one of the unsigned integer types.</doc>
<source-position filename="include/vips/image.h" line="498"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3757">format to test</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</parameter>
</parameters>
</function>
</enumeration>
<enumeration name="BlendMode"
glib:type-name="VipsBlendMode"
glib:get-type="vips_blend_mode_get_type"
c:type="VipsBlendMode">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="143">The various Porter-Duff and PDF blend modes. See vips_composite(),
for example.
The Cairo docs have a nice explanation of all the blend modes:
https://www.cairographics.org/operators
The non-separable modes are not implemented.</doc>
<member name="clear"
value="0"
c:identifier="VIPS_BLEND_MODE_CLEAR"
glib:nick="clear">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="145">where the second object is drawn, the first is removed</doc>
</member>
<member name="source"
value="1"
c:identifier="VIPS_BLEND_MODE_SOURCE"
glib:nick="source">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="146">the second object is drawn as if nothing were below</doc>
</member>
<member name="over"
value="2"
c:identifier="VIPS_BLEND_MODE_OVER"
glib:nick="over">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="147">the image shows what you would expect if you held two semi-transparent slides on top of each other</doc>
</member>
<member name="in"
value="3"
c:identifier="VIPS_BLEND_MODE_IN"
glib:nick="in">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="148">the first object is removed completely, the second is only drawn where the first was</doc>
</member>
<member name="out"
value="4"
c:identifier="VIPS_BLEND_MODE_OUT"
glib:nick="out">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="149">the second is drawn only where the first isn't</doc>
</member>
<member name="atop"
value="5"
c:identifier="VIPS_BLEND_MODE_ATOP"
glib:nick="atop">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="150">this leaves the first object mostly intact, but mixes both objects in the overlapping area</doc>
</member>
<member name="dest"
value="6"
c:identifier="VIPS_BLEND_MODE_DEST"
glib:nick="dest">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="151">leaves the first object untouched, the second is discarded completely</doc>
</member>
<member name="dest_over"
value="7"
c:identifier="VIPS_BLEND_MODE_DEST_OVER"
glib:nick="dest-over">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="152">like OVER, but swaps the arguments</doc>
</member>
<member name="dest_in"
value="8"
c:identifier="VIPS_BLEND_MODE_DEST_IN"
glib:nick="dest-in">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="153">like IN, but swaps the arguments</doc>
</member>
<member name="dest_out"
value="9"
c:identifier="VIPS_BLEND_MODE_DEST_OUT"
glib:nick="dest-out">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="154">like OUT, but swaps the arguments</doc>
</member>
<member name="dest_atop"
value="10"
c:identifier="VIPS_BLEND_MODE_DEST_ATOP"
glib:nick="dest-atop">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="155">like ATOP, but swaps the arguments</doc>
</member>
<member name="xor"
value="11"
c:identifier="VIPS_BLEND_MODE_XOR"
glib:nick="xor">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="156">something like a difference operator</doc>
</member>
<member name="add"
value="12"
c:identifier="VIPS_BLEND_MODE_ADD"
glib:nick="add">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="157">a bit like adding the two images</doc>
</member>
<member name="saturate"
value="13"
c:identifier="VIPS_BLEND_MODE_SATURATE"
glib:nick="saturate">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="158">a bit like the darker of the two</doc>
</member>
<member name="multiply"
value="14"
c:identifier="VIPS_BLEND_MODE_MULTIPLY"
glib:nick="multiply">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="159">at least as dark as the darker of the two inputs</doc>
</member>
<member name="screen"
value="15"
c:identifier="VIPS_BLEND_MODE_SCREEN"
glib:nick="screen">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="160">at least as light as the lighter of the inputs</doc>
</member>
<member name="overlay"
value="16"
c:identifier="VIPS_BLEND_MODE_OVERLAY"
glib:nick="overlay">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="161">multiplies or screens colors, depending on the lightness</doc>
</member>
<member name="darken"
value="17"
c:identifier="VIPS_BLEND_MODE_DARKEN"
glib:nick="darken">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="162">the darker of each component</doc>
</member>
<member name="lighten"
value="18"
c:identifier="VIPS_BLEND_MODE_LIGHTEN"
glib:nick="lighten">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="163">the lighter of each component</doc>
</member>
<member name="colour_dodge"
value="19"
c:identifier="VIPS_BLEND_MODE_COLOUR_DODGE"
glib:nick="colour-dodge">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="164">brighten first by a factor second</doc>
</member>
<member name="colour_burn"
value="20"
c:identifier="VIPS_BLEND_MODE_COLOUR_BURN"
glib:nick="colour-burn">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="165">darken first by a factor of second</doc>
</member>
<member name="hard_light"
value="21"
c:identifier="VIPS_BLEND_MODE_HARD_LIGHT"
glib:nick="hard-light">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="166">multiply or screen, depending on lightness</doc>
</member>
<member name="soft_light"
value="22"
c:identifier="VIPS_BLEND_MODE_SOFT_LIGHT"
glib:nick="soft-light">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="167">darken or lighten, depending on lightness</doc>
</member>
<member name="difference"
value="23"
c:identifier="VIPS_BLEND_MODE_DIFFERENCE"
glib:nick="difference">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="168">difference of the two</doc>
</member>
<member name="exclusion"
value="24"
c:identifier="VIPS_BLEND_MODE_EXCLUSION"
glib:nick="exclusion">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="169">somewhat like DIFFERENCE, but lower-contrast</doc>
</member>
<member name="last"
value="25"
c:identifier="VIPS_BLEND_MODE_LAST"
glib:nick="last">
</member>
</enumeration>
<record name="Blob"
c:type="VipsBlob"
glib:type-name="VipsBlob"
glib:get-type="vips_blob_get_type"
c:symbol-prefix="blob">
<source-position filename="include/vips/type.h" line="162"/>
<field name="area" writable="1">
<type name="Area" c:type="VipsArea"/>
</field>
<constructor name="new" c:identifier="vips_blob_new">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="620">Like vips_area_new(), but track a length as well. The returned #VipsBlob
takes ownership of @data and will free it with @free_fn. Pass NULL for
@free_fn to not transfer ownership.
An area of mem with a free func and a length (some sort of binary object,
like an ICC profile).
See also: vips_area_unref().</doc>
<source-position filename="include/vips/type.h" line="164"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="635">the new #VipsBlob.</doc>
<type name="Blob" c:type="VipsBlob*"/>
</return-value>
<parameters>
<parameter name="free_fn"
transfer-ownership="none"
nullable="1"
allow-none="1"
scope="async">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="622">@data will be freed with this function</doc>
<type name="CallbackFn" c:type="VipsCallbackFn"/>
</parameter>
<parameter name="data" transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="623">data to store</doc>
<array length="2" zero-terminated="0" c:type="void*">
<type name="guint8"/>
</array>
</parameter>
<parameter name="length" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="624">number of bytes in @data</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
</parameters>
</constructor>
<method name="get" c:identifier="vips_blob_get">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="674">Get the data from a #VipsBlob.
See also: vips_blob_new().</doc>
<source-position filename="include/vips/type.h" line="167"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="683">the
data</doc>
<array length="0" zero-terminated="0" c:type="void*">
<type name="guint8"/>
</array>
</return-value>
<parameters>
<instance-parameter name="blob" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="676">#VipsBlob to fetch from</doc>
<type name="Blob" c:type="VipsBlob*"/>
</instance-parameter>
<parameter name="length"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="677">return number of bytes of data</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
</parameters>
</method>
<method name="set" c:identifier="vips_blob_set" introspectable="0">
<source-position filename="include/vips/type.h" line="168"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="blob" transfer-ownership="none">
<type name="Blob" c:type="VipsBlob*"/>
</instance-parameter>
<parameter name="free_fn" transfer-ownership="none" closure="1">
<type name="CallbackFn" c:type="VipsCallbackFn"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="length" transfer-ownership="none">
<type name="gsize" c:type="size_t"/>
</parameter>
</parameters>
</method>
<function name="copy" c:identifier="vips_blob_copy">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="648">Like vips_blob_new(), but take a copy of the data. Useful for bindings
which strugle with callbacks.
See also: vips_blob_new().</doc>
<source-position filename="include/vips/type.h" line="166"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="658">the new #VipsBlob.</doc>
<type name="Blob" c:type="VipsBlob*"/>
</return-value>
<parameters>
<parameter name="data" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="650">data to store</doc>
<array length="1" zero-terminated="0" c:type="void*">
<type name="guint8"/>
</array>
</parameter>
<parameter name="length" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/type.c"
line="651">number of bytes in @data</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
</parameters>
</function>
</record>
<function name="CMC2XYZ" c:identifier="vips_CMC2XYZ" introspectable="0">
<source-position filename="include/vips/colour.h" line="135"/>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<parameter name="in" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="out" transfer-ownership="none">
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<varargs/>
</parameter>
</parameters>
</function>
<function-macro name="COUNT_PIXELS"
c:identifier="VIPS_COUNT_PIXELS"
introspectable="0">
<source-position filename="include/vips/region.h" line="161"/>
<parameters>
<parameter name="R">
</parameter>
<parameter name="N">
</parameter>
</parameters>
</function-macro>
<constant name="C_X0" value="98.070000" c:type="VIPS_C_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="201">Areas under curves for illuminant C (6774K), 2 degree observer.</doc>
<source-position filename="include/vips/colour.h" line="84"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="C_Y0" value="100.000000" c:type="VIPS_C_Y0">
<source-position filename="include/vips/colour.h" line="85"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="C_Z0" value="118.230000" c:type="VIPS_C_Z0">
<source-position filename="include/vips/colour.h" line="86"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<callback name="CallbackFn" c:type="VipsCallbackFn">
<source-position filename="include/vips/basic.h" line="51"/>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="b"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
<callback name="ClassMapFn" c:type="VipsClassMapFn">
<source-position filename="include/vips/object.h" line="618"/>
<return-value transfer-ownership="none" nullable="1">
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<parameter name="cls" transfer-ownership="none">
<type name="ObjectClass" c:type="VipsObjectClass*"/>
</parameter>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
<enumeration name="Coding"
glib:type-name="VipsCoding"
glib:get-type="vips_coding_get_type"
c:type="VipsCoding">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="260">How pixels are coded.
Normally, pixels are uncoded and can be manipulated as you would expect.
However some file formats code pixels for compression, and sometimes it's
useful to be able to manipulate images in the coded format.
The gaps in the numbering are historical and must be maintained. Allocate
new numbers from the end.</doc>
<member name="error"
value="-1"
c:identifier="VIPS_CODING_ERROR"
glib:nick="error">
</member>
<member name="none"
value="0"
c:identifier="VIPS_CODING_NONE"
glib:nick="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="262">pixels are not coded</doc>
</member>
<member name="labq"
value="2"
c:identifier="VIPS_CODING_LABQ"
glib:nick="labq">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="263">pixels encode 3 float CIELAB values as 4 uchar</doc>
</member>
<member name="rad"
value="6"
c:identifier="VIPS_CODING_RAD"
glib:nick="rad">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="264">pixels encode 3 float RGB as 4 uchar (Radiance coding)</doc>
</member>
<member name="last"
value="7"
c:identifier="VIPS_CODING_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="Combine"
glib:type-name="VipsCombine"
glib:get-type="vips_combine_get_type"
c:type="VipsCombine">
<doc xml:space="preserve"
filename="convolution/convolution.c"
line="74">How to combine values. See vips_compass(), for example.</doc>
<member name="max"
value="0"
c:identifier="VIPS_COMBINE_MAX"
glib:nick="max">
<doc xml:space="preserve"
filename="convolution/convolution.c"
line="76">take the maximum of the possible values</doc>
</member>
<member name="sum"
value="1"
c:identifier="VIPS_COMBINE_SUM"
glib:nick="sum">
<doc xml:space="preserve"
filename="convolution/convolution.c"
line="77">sum all the values</doc>
</member>
<member name="min"
value="2"
c:identifier="VIPS_COMBINE_MIN"
glib:nick="min">
<doc xml:space="preserve"
filename="convolution/convolution.c"
line="78">take the minimum value</doc>
</member>
<member name="last"
value="3"
c:identifier="VIPS_COMBINE_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="CombineMode"
glib:type-name="VipsCombineMode"
glib:get-type="vips_combine_mode_get_type"
c:type="VipsCombineMode">
<doc xml:space="preserve"
filename="draw/draw.c"
line="78">See vips_draw_image() and so on.
Operations like vips_draw_image() need to be told how to combine images
from two sources.
See also: vips_join().</doc>
<member name="set"
value="0"
c:identifier="VIPS_COMBINE_MODE_SET"
glib:nick="set">
<doc xml:space="preserve"
filename="draw/draw.c"
line="80">set pixels to the new value</doc>
</member>
<member name="add"
value="1"
c:identifier="VIPS_COMBINE_MODE_ADD"
glib:nick="add">
<doc xml:space="preserve"
filename="draw/draw.c"
line="81">add pixels</doc>
</member>
<member name="last"
value="2"
c:identifier="VIPS_COMBINE_MODE_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="CompassDirection"
glib:type-name="VipsCompassDirection"
glib:get-type="vips_compass_direction_get_type"
c:type="VipsCompassDirection">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="230">A direction on a compass. Used for vips_gravity(), for example.</doc>
<member name="centre"
value="0"
c:identifier="VIPS_COMPASS_DIRECTION_CENTRE"
glib:nick="centre">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="232">centre</doc>
</member>
<member name="north"
value="1"
c:identifier="VIPS_COMPASS_DIRECTION_NORTH"
glib:nick="north">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="233">north</doc>
</member>
<member name="east"
value="2"
c:identifier="VIPS_COMPASS_DIRECTION_EAST"
glib:nick="east">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="234">east</doc>
</member>
<member name="south"
value="3"
c:identifier="VIPS_COMPASS_DIRECTION_SOUTH"
glib:nick="south">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="235">south</doc>
</member>
<member name="west"
value="4"
c:identifier="VIPS_COMPASS_DIRECTION_WEST"
glib:nick="west">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="236">west</doc>
</member>
<member name="north_east"
value="5"
c:identifier="VIPS_COMPASS_DIRECTION_NORTH_EAST"
glib:nick="north-east">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="237">north-east</doc>
</member>
<member name="south_east"
value="6"
c:identifier="VIPS_COMPASS_DIRECTION_SOUTH_EAST"
glib:nick="south-east">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="238">south-east</doc>
</member>
<member name="south_west"
value="7"
c:identifier="VIPS_COMPASS_DIRECTION_SOUTH_WEST"
glib:nick="south-west">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="239">south-west</doc>
</member>
<member name="north_west"
value="8"
c:identifier="VIPS_COMPASS_DIRECTION_NORTH_WEST"
glib:nick="north-west">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="240">north-west</doc>
</member>
<member name="last"
value="9"
c:identifier="VIPS_COMPASS_DIRECTION_LAST"
glib:nick="last">
</member>
</enumeration>
<constant name="D3250_X0" value="105.659000" c:type="VIPS_D3250_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="213">Areas under curves for black body at 3250K, 2 degree observer.</doc>
<source-position filename="include/vips/colour.h" line="92"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D3250_Y0" value="100.000000" c:type="VIPS_D3250_Y0">
<source-position filename="include/vips/colour.h" line="93"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D3250_Z0" value="45.850100" c:type="VIPS_D3250_Z0">
<source-position filename="include/vips/colour.h" line="94"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D50_X0" value="96.425000" c:type="VIPS_D50_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="183">Areas under curves for D50, 2 degree observer.</doc>
<source-position filename="include/vips/colour.h" line="66"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D50_Y0" value="100.000000" c:type="VIPS_D50_Y0">
<source-position filename="include/vips/colour.h" line="67"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D50_Z0" value="82.468000" c:type="VIPS_D50_Z0">
<source-position filename="include/vips/colour.h" line="68"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D55_X0" value="95.683100" c:type="VIPS_D55_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="177">Areas under curves for D55, 2 degree observer.</doc>
<source-position filename="include/vips/colour.h" line="62"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D55_Y0" value="100.000000" c:type="VIPS_D55_Y0">
<source-position filename="include/vips/colour.h" line="63"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D55_Z0" value="92.087100" c:type="VIPS_D55_Z0">
<source-position filename="include/vips/colour.h" line="64"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D65_X0" value="95.047000" c:type="VIPS_D65_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="171">Areas under curves for D65, 2 degree observer.</doc>
<source-position filename="include/vips/colour.h" line="58"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D65_Y0" value="100.000000" c:type="VIPS_D65_Y0">
<source-position filename="include/vips/colour.h" line="59"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D65_Z0" value="108.882700" c:type="VIPS_D65_Z0">
<source-position filename="include/vips/colour.h" line="60"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D75_X0" value="94.968200" c:type="VIPS_D75_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="165">Areas under curves for D75, 2 degree observer.</doc>
<source-position filename="include/vips/colour.h" line="52"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D75_Y0" value="100.000000" c:type="VIPS_D75_Y0">
<source-position filename="include/vips/colour.h" line="53"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D75_Z0" value="122.571000" c:type="VIPS_D75_Z0">
<source-position filename="include/vips/colour.h" line="54"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D93_X0" value="89.740000" c:type="VIPS_D93_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="159">Areas under curves for D93, 2 degree observer.</doc>
<source-position filename="include/vips/colour.h" line="48"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D93_Y0" value="100.000000" c:type="VIPS_D93_Y0">
<source-position filename="include/vips/colour.h" line="49"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="D93_Z0" value="130.770000" c:type="VIPS_D93_Z0">
<source-position filename="include/vips/colour.h" line="50"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<enumeration name="DemandStyle"
glib:type-name="VipsDemandStyle"
glib:get-type="vips_demand_style_get_type"
c:type="VipsDemandStyle">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="168">See vips_image_pipelinev(). Operations can hint to the VIPS image IO
system about the kind of demand geometry they prefer.
These demand styles are given below in order of increasing
restrictiveness. When demanding output from a pipeline,
vips_image_generate()
will use the most restrictive of the styles requested by the operations
in the pipeline.
#VIPS_DEMAND_STYLE_THINSTRIP --- This operation would like to output strips
the width of the image and a few pels high. This is option suitable for
point-to-point operations, such as those in the arithmetic package.
This option is only efficient for cases where each output pel depends
upon the pel in the corresponding position in the input image.
#VIPS_DEMAND_STYLE_FATSTRIP --- This operation would like to output strips
the width of the image and as high as possible. This option is suitable
for area operations which do not violently transform coordinates, such
as vips_conv().
#VIPS_DEMAND_STYLE_SMALLTILE --- This is the most general demand format.
Output is demanded in small (around 100x100 pel) sections. This style works
reasonably efficiently, even for bizzare operations like 45 degree rotate.
#VIPS_DEMAND_STYLE_ANY --- This image is not being demand-read from a disc
file (even indirectly) so any demand style is OK. It's used for things like
vips_black() where the pixels are calculated.
See also: vips_image_pipelinev().</doc>
<member name="error"
value="-1"
c:identifier="VIPS_DEMAND_STYLE_ERROR"
glib:nick="error">
</member>
<member name="smalltile"
value="0"
c:identifier="VIPS_DEMAND_STYLE_SMALLTILE"
glib:nick="smalltile">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="170">demand in small (typically 64x64 pixel) tiles</doc>
</member>
<member name="fatstrip"
value="1"
c:identifier="VIPS_DEMAND_STYLE_FATSTRIP"
glib:nick="fatstrip">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="171">demand in fat (typically 10 pixel high) strips</doc>
</member>
<member name="thinstrip"
value="2"
c:identifier="VIPS_DEMAND_STYLE_THINSTRIP"
glib:nick="thinstrip">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="172">demand in thin (typically 1 pixel high) strips</doc>
</member>
<member name="any"
value="3"
c:identifier="VIPS_DEMAND_STYLE_ANY"
glib:nick="any">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="173">demand geometry does not matter</doc>
</member>
</enumeration>
<enumeration name="Direction"
glib:type-name="VipsDirection"
glib:get-type="vips_direction_get_type"
c:type="VipsDirection">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="297">See vips_flip(), vips_join() and so on.
Operations like vips_flip() need to be told whether to flip left-right or
top-bottom.
See also: vips_flip(), vips_join().</doc>
<member name="horizontal"
value="0"
c:identifier="VIPS_DIRECTION_HORIZONTAL"
glib:nick="horizontal">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="299">left-right</doc>
</member>
<member name="vertical"
value="1"
c:identifier="VIPS_DIRECTION_VERTICAL"
glib:nick="vertical">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="300">top-bottom</doc>
</member>
<member name="last"
value="2"
c:identifier="VIPS_DIRECTION_LAST"
glib:nick="last">
</member>
</enumeration>
<constant name="E_X0" value="100.000000" c:type="VIPS_E_X0">
<doc xml:space="preserve"
filename="colour/colour.c"
line="207">Areas under curves for equal energy illuminant E.</doc>
<source-position filename="include/vips/colour.h" line="88"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="E_Y0" value="100.000000" c:type="VIPS_E_Y0">
<source-position filename="include/vips/colour.h" line="89"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<constant name="E_Z0" value="100.000000" c:type="VIPS_E_Z0">
<source-position filename="include/vips/colour.h" line="90"/>
<type name="gdouble" c:type="gdouble"/>
</constant>
<enumeration name="Extend"
glib:type-name="VipsExtend"
glib:get-type="vips_extend_get_type"
c:type="VipsExtend">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="263">See vips_embed(), vips_conv(), vips_affine() and so on.
When the edges of an image are extended, you can specify
how you want the extension done.
#VIPS_EXTEND_BLACK --- new pixels are black, ie. all bits are zero.
#VIPS_EXTEND_COPY --- each new pixel takes the value of the nearest edge
pixel
#VIPS_EXTEND_REPEAT --- the image is tiled to fill the new area
#VIPS_EXTEND_MIRROR --- the image is reflected and tiled to reduce hash
edges
#VIPS_EXTEND_WHITE --- new pixels are white, ie. all bits are set
#VIPS_EXTEND_BACKGROUND --- colour set from the @background property
We have to specify the exact value of each enum member since we have to
keep these frozen for back compat with vips7.
See also: vips_embed().</doc>
<member name="black"
value="0"
c:identifier="VIPS_EXTEND_BLACK"
glib:nick="black">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="265">extend with black (all 0) pixels</doc>
</member>
<member name="copy"
value="1"
c:identifier="VIPS_EXTEND_COPY"
glib:nick="copy">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="266">copy the image edges</doc>
</member>
<member name="repeat"
value="2"
c:identifier="VIPS_EXTEND_REPEAT"
glib:nick="repeat">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="267">repeat the whole image</doc>
</member>
<member name="mirror"
value="3"
c:identifier="VIPS_EXTEND_MIRROR"
glib:nick="mirror">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="268">mirror the whole image</doc>
</member>
<member name="white"
value="4"
c:identifier="VIPS_EXTEND_WHITE"
glib:nick="white">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="269">extend with white (all bits set) pixels</doc>
</member>
<member name="background"
value="5"
c:identifier="VIPS_EXTEND_BACKGROUND"
glib:nick="background">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="270">extend with colour from the @background property</doc>
</member>
<member name="last"
value="6"
c:identifier="VIPS_EXTEND_LAST"
glib:nick="last">
</member>
</enumeration>
<function-macro name="FOREIGN"
c:identifier="VIPS_FOREIGN"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="40"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="FOREIGN_CLASS"
c:identifier="VIPS_FOREIGN_CLASS"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="43"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="FOREIGN_GET_CLASS"
c:identifier="VIPS_FOREIGN_GET_CLASS"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="50"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="FOREIGN_LOAD"
c:identifier="VIPS_FOREIGN_LOAD"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="104"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="FOREIGN_LOAD_CLASS"
c:identifier="VIPS_FOREIGN_LOAD_CLASS"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="107"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="FOREIGN_LOAD_GET_CLASS"
c:identifier="VIPS_FOREIGN_LOAD_GET_CLASS"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="114"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="FOREIGN_SAVE"
c:identifier="VIPS_FOREIGN_SAVE"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="255"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="FOREIGN_SAVE_CLASS"
c:identifier="VIPS_FOREIGN_SAVE_CLASS"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="258"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="FOREIGN_SAVE_GET_CLASS"
c:identifier="VIPS_FOREIGN_SAVE_GET_CLASS"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="265"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="FREE" c:identifier="VIPS_FREE" introspectable="0">
<source-position filename="include/vips/memory.h" line="47"/>
<parameters>
<parameter name="S">
</parameter>
</parameters>
</function-macro>
<function-macro name="FREEF" c:identifier="VIPS_FREEF" introspectable="0">
<source-position filename="include/vips/memory.h" line="40"/>
<parameters>
<parameter name="F">
</parameter>
<parameter name="S">
</parameter>
</parameters>
</function-macro>
<class name="Foreign"
c:symbol-prefix="foreign"
c:type="VipsForeign"
parent="Operation"
abstract="1"
glib:type-name="VipsForeign"
glib:get-type="vips_foreign_get_type"
glib:type-struct="ForeignClass">
<source-position filename="include/vips/foreign.h" line="78"/>
<function name="find_load" c:identifier="vips_foreign_find_load">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="514">Searches for an operation you could use to load @filename. Any trailing
options on @filename are stripped and ignored.
See also: vips_foreign_find_load_buffer(), vips_image_new_from_file().</doc>
<source-position filename="include/vips/foreign.h" line="241"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="523">the name of an operation on success, %NULL on error</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
<parameters>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="516">file to find a loader for</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</function>
<function name="find_load_buffer"
c:identifier="vips_foreign_find_load_buffer">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="605">Searches for an operation you could use to load a memory buffer. To see the
range of buffer loaders supported by your vips, try something like:
vips -l | grep load_buffer
See also: vips_image_new_from_buffer().</doc>
<source-position filename="include/vips/foreign.h" line="242"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="618">the name of an operation on success, %NULL on
error.</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
<parameters>
<parameter name="data" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="607">start of
memory buffer</doc>
<array length="1" zero-terminated="0" c:type="void*">
<type name="guint8"/>
</array>
</parameter>
<parameter name="size" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="609">number of bytes in @data</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
</parameters>
</function>
<function name="find_load_source"
c:identifier="vips_foreign_find_load_source"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="661">Searches for an operation you could use to load a source. To see the
range of source loaders supported by your vips, try something like:
vips -l | grep load_source
See also: vips_image_new_from_source().</doc>
<source-position filename="include/vips/foreign.h" line="243"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="672">the name of an operation on success, %NULL on
error.</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
<parameters>
<parameter name="source" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="663">source to load from</doc>
<type c:type="VipsSource*"/>
</parameter>
</parameters>
</function>
<function name="find_save" c:identifier="vips_foreign_find_save">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1788">Searches for an operation you could use to write to @filename.
Any trailing options on @filename are stripped and ignored.
See also: vips_foreign_find_save_buffer(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="354"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1797">the name of an operation on success, %NULL on error</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
<parameters>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1790">name to find a saver for</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</function>
<function name="find_save_buffer"
c:identifier="vips_foreign_find_save_buffer">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="2001">Searches for an operation you could use to write to a buffer in @suffix
format.
See also: vips_image_write_to_buffer().</doc>
<source-position filename="include/vips/foreign.h" line="356"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="2010">the name of an operation on success, %NULL on error</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
<parameters>
<parameter name="suffix" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="2003">name to find a saver for</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</function>
<function name="find_save_target"
c:identifier="vips_foreign_find_save_target">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1943">Searches for an operation you could use to write to a target in @suffix
format.
See also: vips_image_write_to_buffer().</doc>
<source-position filename="include/vips/foreign.h" line="357"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1952">the name of an operation on success, %NULL on error</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
<parameters>
<parameter name="suffix" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1945">format to find a saver for</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</function>
<function name="get_suffixes" c:identifier="vips_foreign_get_suffixes">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1855">Get a %NULL-terminated array listing all the supported suffixes.
This is not the same as all the supported file types, since libvips
detects image format for load by testing the first few bytes.
Use vips_foreign_find_load() to detect type for a specific file.
Free the return result with g_strfreev().</doc>
<source-position filename="include/vips/foreign.h" line="355"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1867">all supported file extensions, as a
%NULL-terminated array.</doc>
<array c:type="gchar**">
<type name="utf8"/>
</array>
</return-value>
</function>
<function name="is_a" c:identifier="vips_foreign_is_a">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="692">Return %TRUE if @filename can be loaded by @loader. @loader is something
like "tiffload" or "VipsForeignLoadTiff".</doc>
<source-position filename="include/vips/foreign.h" line="246"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="700">%TRUE if @filename can be loaded by @loader.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="loader" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="694">name of loader to use for test</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="695">file to test</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</function>
<function name="is_a_buffer" c:identifier="vips_foreign_is_a_buffer">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="718">Return %TRUE if @data can be loaded by @loader. @loader is something
like "tiffload_buffer" or "VipsForeignLoadTiffBuffer".</doc>
<source-position filename="include/vips/foreign.h" line="247"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="727">%TRUE if @data can be loaded by @loader.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="loader" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="720">name of loader to use for test</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="data" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="721">pointer to the buffer to test</doc>
<array length="2" zero-terminated="0" c:type="void*">
<type name="guint8"/>
</array>
</parameter>
<parameter name="size" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="722">size of the buffer to test</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
</parameters>
</function>
<function name="is_a_source"
c:identifier="vips_foreign_is_a_source"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="745">Return %TRUE if @source can be loaded by @loader. @loader is something
like "tiffload_source" or "VipsForeignLoadTiffSource".</doc>
<source-position filename="include/vips/foreign.h" line="249"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="753">%TRUE if @data can be loaded by @source.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="loader" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="747">name of loader to use for test</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="source" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="748">source to test</doc>
<type c:type="VipsSource*"/>
</parameter>
</parameters>
</function>
<function name="map" c:identifier="vips_foreign_map">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="398">Apply a function to every #VipsForeignClass that VIPS knows about. Foreigns
are presented to the function in priority order.
Like all VIPS map functions, if @fn returns %NULL, iteration continues. If
it returns non-%NULL, iteration terminates and that value is returned. The
map function returns %NULL if all calls return %NULL.
See also: vips_slist_map().</doc>
<source-position filename="include/vips/foreign.h" line="87"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="414">the result of iteration</doc>
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<parameter name="base" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="400">base class to search below (eg. "VipsForeignLoad")</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="fn" transfer-ownership="none" scope="call">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="401">function to apply to each #VipsForeignClass</doc>
<type name="SListMap2Fn" c:type="VipsSListMap2Fn"/>
</parameter>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="402">user data</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="b"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="403">user data</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</function>
<field name="parent_object">
<type name="Operation" c:type="VipsOperation"/>
</field>
</class>
<record name="ForeignClass"
c:type="VipsForeignClass"
glib:is-gtype-struct-for="Foreign">
<source-position filename="include/vips/foreign.h" line="78"/>
<field name="parent_class">
<type name="OperationClass" c:type="VipsOperationClass"/>
</field>
<field name="priority">
<type name="gint" c:type="int"/>
</field>
<field name="suffs">
<type name="utf8" c:type="const char**"/>
</field>
</record>
<enumeration name="ForeignDzContainer"
glib:type-name="VipsForeignDzContainer"
glib:get-type="vips_foreign_dz_container_get_type"
c:type="VipsForeignDzContainer">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="682">How many pyramid layers to create.</doc>
<member name="fs"
value="0"
c:identifier="VIPS_FOREIGN_DZ_CONTAINER_FS"
glib:nick="fs">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="684">write tiles to the filesystem</doc>
</member>
<member name="zip"
value="1"
c:identifier="VIPS_FOREIGN_DZ_CONTAINER_ZIP"
glib:nick="zip">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="685">write tiles to a zip file</doc>
</member>
<member name="szi"
value="2"
c:identifier="VIPS_FOREIGN_DZ_CONTAINER_SZI"
glib:nick="szi">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="686">write to a szi file</doc>
</member>
<member name="last"
value="3"
c:identifier="VIPS_FOREIGN_DZ_CONTAINER_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="ForeignDzDepth"
glib:type-name="VipsForeignDzDepth"
glib:get-type="vips_foreign_dz_depth_get_type"
c:type="VipsForeignDzDepth">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="667">How many pyramid layers to create.</doc>
<member name="onepixel"
value="0"
c:identifier="VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL"
glib:nick="onepixel">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="669">create layers down to 1x1 pixel</doc>
</member>
<member name="onetile"
value="1"
c:identifier="VIPS_FOREIGN_DZ_DEPTH_ONETILE"
glib:nick="onetile">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="670">create layers down to 1x1 tile</doc>
</member>
<member name="one"
value="2"
c:identifier="VIPS_FOREIGN_DZ_DEPTH_ONE"
glib:nick="one">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="671">only create a single layer</doc>
</member>
<member name="last"
value="3"
c:identifier="VIPS_FOREIGN_DZ_DEPTH_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="ForeignDzLayout"
glib:type-name="VipsForeignDzLayout"
glib:get-type="vips_foreign_dz_layout_get_type"
c:type="VipsForeignDzLayout">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="650">What directory layout and metadata standard to use.</doc>
<member name="dz"
value="0"
c:identifier="VIPS_FOREIGN_DZ_LAYOUT_DZ"
glib:nick="dz">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="652">use DeepZoom directory layout</doc>
</member>
<member name="zoomify"
value="1"
c:identifier="VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY"
glib:nick="zoomify">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="653">use Zoomify directory layout</doc>
</member>
<member name="google"
value="2"
c:identifier="VIPS_FOREIGN_DZ_LAYOUT_GOOGLE"
glib:nick="google">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="654">use Google maps directory layout</doc>
</member>
<member name="iiif"
value="3"
c:identifier="VIPS_FOREIGN_DZ_LAYOUT_IIIF"
glib:nick="iiif">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="655">use IIIF directory layout</doc>
</member>
<member name="last"
value="4"
c:identifier="VIPS_FOREIGN_DZ_LAYOUT_LAST"
glib:nick="last">
</member>
</enumeration>
<bitfield name="ForeignFlags"
glib:type-name="VipsForeignFlags"
glib:get-type="vips_foreign_flags_get_type"
c:type="VipsForeignFlags">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="308">Some hints about the image loader.
#VIPS_FOREIGN_PARTIAL means that the image can be read directly from the
file without needing to be unpacked to a temporary image first.
#VIPS_FOREIGN_SEQUENTIAL means that the loader supports lazy reading, but
only top-to-bottom (sequential) access. Formats like PNG can read sets of
scanlines, for example, but only in order.
If neither PARTIAL or SEQUENTIAL is set, the loader only supports whole
image read. Setting both PARTIAL and SEQUENTIAL is an error.
#VIPS_FOREIGN_BIGENDIAN means that image pixels are most-significant byte
first. Depending on the native byte order of the host machine, you may
need to swap bytes. See vips_copy().</doc>
<member name="none"
value="0"
c:identifier="VIPS_FOREIGN_NONE"
glib:nick="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="310">no flags set</doc>
</member>
<member name="partial"
value="1"
c:identifier="VIPS_FOREIGN_PARTIAL"
glib:nick="partial">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="311">the image may be read lazilly</doc>
</member>
<member name="bigendian"
value="2"
c:identifier="VIPS_FOREIGN_BIGENDIAN"
glib:nick="bigendian">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="312">image pixels are most-significant byte first</doc>
</member>
<member name="sequential"
value="4"
c:identifier="VIPS_FOREIGN_SEQUENTIAL"
glib:nick="sequential">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="313">top-to-bottom lazy reading</doc>
</member>
<member name="all"
value="7"
c:identifier="VIPS_FOREIGN_ALL"
glib:nick="all">
</member>
</bitfield>
<enumeration name="ForeignHeifCompression"
glib:type-name="VipsForeignHeifCompression"
glib:get-type="vips_foreign_heif_compression_get_type"
c:type="VipsForeignHeifCompression">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="700">The compression format to use inside a HEIF container.
This is assumed to use the same numbering as %heif_compression_format.</doc>
<member name="hevc"
value="1"
c:identifier="VIPS_FOREIGN_HEIF_COMPRESSION_HEVC"
glib:nick="hevc">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="702">x265</doc>
</member>
<member name="avc"
value="2"
c:identifier="VIPS_FOREIGN_HEIF_COMPRESSION_AVC"
glib:nick="avc">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="703">x264</doc>
</member>
<member name="jpeg"
value="3"
c:identifier="VIPS_FOREIGN_HEIF_COMPRESSION_JPEG"
glib:nick="jpeg">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="704">jpeg</doc>
</member>
<member name="av1"
value="4"
c:identifier="VIPS_FOREIGN_HEIF_COMPRESSION_AV1"
glib:nick="av1">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="705">aom</doc>
</member>
<member name="last"
value="5"
c:identifier="VIPS_FOREIGN_HEIF_COMPRESSION_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="ForeignJpegSubsample"
glib:type-name="VipsForeignJpegSubsample"
glib:get-type="vips_foreign_jpeg_subsample_get_type"
c:type="VipsForeignJpegSubsample">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="367">Set jpeg subsampling mode.</doc>
<member name="auto"
value="0"
c:identifier="VIPS_FOREIGN_JPEG_SUBSAMPLE_AUTO"
glib:nick="auto">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="369">default preset</doc>
</member>
<member name="on"
value="1"
c:identifier="VIPS_FOREIGN_JPEG_SUBSAMPLE_ON"
glib:nick="on">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="370">always perform subsampling</doc>
</member>
<member name="off"
value="2"
c:identifier="VIPS_FOREIGN_JPEG_SUBSAMPLE_OFF"
glib:nick="off">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="371">never perform subsampling</doc>
</member>
<member name="last"
value="3"
c:identifier="VIPS_FOREIGN_JPEG_SUBSAMPLE_LAST"
glib:nick="last">
</member>
</enumeration>
<class name="ForeignLoad"
c:symbol-prefix="foreign_load"
c:type="VipsForeignLoad"
parent="Foreign"
abstract="1"
glib:type-name="VipsForeignLoad"
glib:get-type="vips_foreign_load_get_type"
glib:type-struct="ForeignLoadClass">
<source-position filename="include/vips/foreign.h" line="235"/>
<virtual-method name="get_flags">
<source-position filename="include/vips/foreign.h" line="209"/>
<return-value transfer-ownership="none">
<type name="ForeignFlags" c:type="VipsForeignFlags"/>
</return-value>
<parameters>
<instance-parameter name="load" transfer-ownership="none">
<type name="ForeignLoad" c:type="VipsForeignLoad*"/>
</instance-parameter>
</parameters>
</virtual-method>
<virtual-method name="header">
<source-position filename="include/vips/foreign.h" line="223"/>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="load" transfer-ownership="none">
<type name="ForeignLoad" c:type="VipsForeignLoad*"/>
</instance-parameter>
</parameters>
</virtual-method>
<virtual-method name="load">
<source-position filename="include/vips/foreign.h" line="234"/>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="load" transfer-ownership="none">
<type name="ForeignLoad" c:type="VipsForeignLoad*"/>
</instance-parameter>
</parameters>
</virtual-method>
<property name="access" writable="1" transfer-ownership="none">
<type name="Access"/>
</property>
<property name="disc" writable="1" transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="fail" writable="1" transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="flags" writable="1" transfer-ownership="none">
<type name="ForeignFlags"/>
</property>
<property name="memory" writable="1" transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="out" writable="1" transfer-ownership="none">
<type name="Image"/>
</property>
<property name="sequential" writable="1" transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</property>
<field name="parent_object">
<type name="Foreign" c:type="VipsForeign"/>
</field>
<field name="memory" readable="0" private="1">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="access" readable="0" private="1">
<type name="Access" c:type="VipsAccess"/>
</field>
<field name="flags" readable="0" private="1">
<type name="ForeignFlags" c:type="VipsForeignFlags"/>
</field>
<field name="fail" readable="0" private="1">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="sequential" readable="0" private="1">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="out">
<type name="Image" c:type="VipsImage*"/>
</field>
<field name="real">
<type name="Image" c:type="VipsImage*"/>
</field>
<field name="nocache">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="disc">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="error">
<type name="gboolean" c:type="gboolean"/>
</field>
</class>
<record name="ForeignLoadClass"
c:type="VipsForeignLoadClass"
glib:is-gtype-struct-for="ForeignLoad">
<source-position filename="include/vips/foreign.h" line="235"/>
<field name="parent_class">
<type name="ForeignClass" c:type="VipsForeignClass"/>
</field>
<field name="is_a">
<callback name="is_a">
<source-position filename="include/vips/foreign.h" line="178"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="filename" transfer-ownership="none">
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="is_a_buffer">
<callback name="is_a_buffer">
<source-position filename="include/vips/foreign.h" line="185"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="data" transfer-ownership="none">
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="size" transfer-ownership="none">
<type name="gsize" c:type="size_t"/>
</parameter>
</parameters>
</callback>
</field>
<field name="is_a_source" introspectable="0">
<callback name="is_a_source" introspectable="0">
<source-position filename="include/vips/foreign.h" line="192"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="source" transfer-ownership="none">
<type c:type="VipsSource*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="get_flags_filename">
<callback name="get_flags_filename">
<source-position filename="include/vips/foreign.h" line="203"/>
<return-value transfer-ownership="none">
<type name="ForeignFlags" c:type="VipsForeignFlags"/>
</return-value>
<parameters>
<parameter name="filename" transfer-ownership="none">
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="get_flags">
<callback name="get_flags">
<source-position filename="include/vips/foreign.h" line="209"/>
<return-value transfer-ownership="none">
<type name="ForeignFlags" c:type="VipsForeignFlags"/>
</return-value>
<parameters>
<parameter name="load" transfer-ownership="none">
<type name="ForeignLoad" c:type="VipsForeignLoad*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="header">
<callback name="header">
<source-position filename="include/vips/foreign.h" line="223"/>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<parameter name="load" transfer-ownership="none">
<type name="ForeignLoad" c:type="VipsForeignLoad*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="load">
<callback name="load">
<source-position filename="include/vips/foreign.h" line="234"/>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<parameter name="load" transfer-ownership="none">
<type name="ForeignLoad" c:type="VipsForeignLoad*"/>
</parameter>
</parameters>
</callback>
</field>
</record>
<bitfield name="ForeignPngFilter"
glib:type-name="VipsForeignPngFilter"
glib:get-type="vips_foreign_png_filter_get_type"
c:type="VipsForeignPngFilter">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="554">http://www.w3.org/TR/PNG-Filters.html
The values mirror those of png.h in libpng.</doc>
<member name="none"
value="8"
c:identifier="VIPS_FOREIGN_PNG_FILTER_NONE"
glib:nick="none">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="556">no filtering</doc>
</member>
<member name="sub"
value="16"
c:identifier="VIPS_FOREIGN_PNG_FILTER_SUB"
glib:nick="sub">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="557">difference to the left</doc>
</member>
<member name="up"
value="32"
c:identifier="VIPS_FOREIGN_PNG_FILTER_UP"
glib:nick="up">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="558">difference up</doc>
</member>
<member name="avg"
value="64"
c:identifier="VIPS_FOREIGN_PNG_FILTER_AVG"
glib:nick="avg">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="559">average of left and up</doc>
</member>
<member name="paeth"
value="128"
c:identifier="VIPS_FOREIGN_PNG_FILTER_PAETH"
glib:nick="paeth">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="560">pick best neighbor predictor automatically</doc>
</member>
<member name="all"
value="248"
c:identifier="VIPS_FOREIGN_PNG_FILTER_ALL"
glib:nick="all">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="561">adaptive</doc>
</member>
</bitfield>
<class name="ForeignSave"
c:symbol-prefix="foreign_save"
c:type="VipsForeignSave"
parent="Foreign"
abstract="1"
glib:type-name="VipsForeignSave"
glib:get-type="vips_foreign_save_get_type"
glib:type-struct="ForeignSaveClass">
<source-position filename="include/vips/foreign.h" line="348"/>
<property name="background" writable="1" transfer-ownership="none">
<type name="ArrayDouble"/>
</property>
<property name="in" writable="1" transfer-ownership="none">
<type name="Image"/>
</property>
<property name="page-height" writable="1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</property>
<property name="strip" writable="1" transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</property>
<field name="parent_object">
<type name="Foreign" c:type="VipsForeign"/>
</field>
<field name="strip">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="background">
<type name="ArrayDouble" c:type="VipsArrayDouble*"/>
</field>
<field name="page_height">
<type name="gint" c:type="int"/>
</field>
<field name="in">
<type name="Image" c:type="VipsImage*"/>
</field>
<field name="ready">
<type name="Image" c:type="VipsImage*"/>
</field>
</class>
<record name="ForeignSaveClass"
c:type="VipsForeignSaveClass"
glib:is-gtype-struct-for="ForeignSave">
<source-position filename="include/vips/foreign.h" line="348"/>
<field name="parent_class">
<type name="ForeignClass" c:type="VipsForeignClass"/>
</field>
<field name="saveable">
<type name="Saveable" c:type="VipsSaveable"/>
</field>
<field name="format_table">
<type name="BandFormat" c:type="VipsBandFormat*"/>
</field>
<field name="coding">
<array zero-terminated="0">
<type name="gboolean" c:type="gboolean"/>
</array>
</field>
</record>
<enumeration name="ForeignTiffCompression"
glib:type-name="VipsForeignTiffCompression"
glib:get-type="vips_foreign_tiff_compression_get_type"
c:type="VipsForeignTiffCompression">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="433">The compression types supported by the tiff writer.
Use @Q to set the jpeg compression level, default 75.
Use @predictor to set the lzw or deflate prediction, default horizontal.
Use @lossless to set WEBP lossless compression.
Use @level to set webp and zstd compression level.</doc>
<member name="none"
value="0"
c:identifier="VIPS_FOREIGN_TIFF_COMPRESSION_NONE"
glib:nick="none">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="435">no compression</doc>
</member>
<member name="jpeg"
value="1"
c:identifier="VIPS_FOREIGN_TIFF_COMPRESSION_JPEG"
glib:nick="jpeg">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="436">jpeg compression</doc>
</member>
<member name="deflate"
value="2"
c:identifier="VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE"
glib:nick="deflate">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="437">deflate (zip) compression</doc>
</member>
<member name="packbits"
value="3"
c:identifier="VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS"
glib:nick="packbits">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="438">packbits compression</doc>
</member>
<member name="ccittfax4"
value="4"
c:identifier="VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4"
glib:nick="ccittfax4">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="439">fax4 compression</doc>
</member>
<member name="lzw"
value="5"
c:identifier="VIPS_FOREIGN_TIFF_COMPRESSION_LZW"
glib:nick="lzw">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="440">LZW compression</doc>
</member>
<member name="webp"
value="6"
c:identifier="VIPS_FOREIGN_TIFF_COMPRESSION_WEBP"
glib:nick="webp">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="441">WEBP compression</doc>
</member>
<member name="zstd"
value="7"
c:identifier="VIPS_FOREIGN_TIFF_COMPRESSION_ZSTD"
glib:nick="zstd">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="442">ZSTD compression</doc>
</member>
<member name="last"
value="8"
c:identifier="VIPS_FOREIGN_TIFF_COMPRESSION_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="ForeignTiffPredictor"
glib:type-name="VipsForeignTiffPredictor"
glib:get-type="vips_foreign_tiff_predictor_get_type"
c:type="VipsForeignTiffPredictor">
<member name="none"
value="1"
c:identifier="VIPS_FOREIGN_TIFF_PREDICTOR_NONE"
glib:nick="none">
</member>
<member name="horizontal"
value="2"
c:identifier="VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL"
glib:nick="horizontal">
</member>
<member name="float"
value="3"
c:identifier="VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT"
glib:nick="float">
</member>
<member name="last"
value="4"
c:identifier="VIPS_FOREIGN_TIFF_PREDICTOR_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="ForeignTiffResunit"
glib:type-name="VipsForeignTiffResunit"
glib:get-type="vips_foreign_tiff_resunit_get_type"
c:type="VipsForeignTiffResunit">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="482">Use inches or centimeters as the resolution unit for a tiff file.</doc>
<member name="cm"
value="0"
c:identifier="VIPS_FOREIGN_TIFF_RESUNIT_CM"
glib:nick="cm">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="484">use centimeters</doc>
</member>
<member name="inch"
value="1"
c:identifier="VIPS_FOREIGN_TIFF_RESUNIT_INCH"
glib:nick="inch">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="485">use inches</doc>
</member>
<member name="last"
value="2"
c:identifier="VIPS_FOREIGN_TIFF_RESUNIT_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="ForeignWebpPreset"
glib:type-name="VipsForeignWebpPreset"
glib:get-type="vips_foreign_webp_preset_get_type"
c:type="VipsForeignWebpPreset">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="396">Tune lossy encoder settings for different image types.</doc>
<member name="default"
value="0"
c:identifier="VIPS_FOREIGN_WEBP_PRESET_DEFAULT"
glib:nick="default">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="398">default preset</doc>
</member>
<member name="picture"
value="1"
c:identifier="VIPS_FOREIGN_WEBP_PRESET_PICTURE"
glib:nick="picture">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="399">digital picture, like portrait, inner shot</doc>
</member>
<member name="photo"
value="2"
c:identifier="VIPS_FOREIGN_WEBP_PRESET_PHOTO"
glib:nick="photo">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="400">outdoor photograph, with natural lighting</doc>
</member>
<member name="drawing"
value="3"
c:identifier="VIPS_FOREIGN_WEBP_PRESET_DRAWING"
glib:nick="drawing">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="401">hand or line drawing, with high-contrast details</doc>
</member>
<member name="icon"
value="4"
c:identifier="VIPS_FOREIGN_WEBP_PRESET_ICON"
glib:nick="icon">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="402">small-sized colorful images</doc>
</member>
<member name="text"
value="5"
c:identifier="VIPS_FOREIGN_WEBP_PRESET_TEXT"
glib:nick="text">
<doc xml:space="preserve"
filename="include/vips/foreign.h"
line="403">text-like</doc>
</member>
<member name="last"
value="6"
c:identifier="VIPS_FOREIGN_WEBP_PRESET_LAST"
glib:nick="last">
</member>
</enumeration>
<callback name="GenerateFn" c:type="VipsGenerateFn">
<doc xml:space="preserve"
filename="iofuncs/generate.c"
line="600">Fill @out-&gt;valid with pixels. @seq contains per-thread state, such as the
input regions. Set @stop to %TRUE to stop processing.
See also: vips_image_generate(), vips_stop_many().</doc>
<source-position filename="include/vips/image.h" line="137"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/generate.c"
line="613">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<parameter name="out"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/generate.c"
line="602">#VipsRegion to fill</doc>
<type name="gpointer" c:type="_VipsRegion*"/>
</parameter>
<parameter name="seq"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/generate.c"
line="603">sequence value</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/generate.c"
line="604">user data</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="b"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/generate.c"
line="605">user data</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="stop" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/generate.c"
line="606">set this to stop processing</doc>
<type name="gboolean" c:type="gboolean*"/>
</parameter>
</parameters>
</callback>
<function-macro name="IMAGE" c:identifier="VIPS_IMAGE" introspectable="0">
<source-position filename="include/vips/image.h" line="158"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IMAGE_ADDR"
c:identifier="VIPS_IMAGE_ADDR"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="332">This macro returns a pointer to a pixel in an image, cast to a #VipsPel *.
It only works for
images which are fully available in memory, so memory buffers and small
mapped images only.
If VIPS_DEBUG is defined, you get a version that checks bounds for you.
See also: vips_image_wio_input(), vips_image_inplace(), VIPS_REGION_ADDR().</doc>
<source-position filename="include/vips/image.h" line="382"/>
<parameters>
<parameter name="I">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="334">a #VipsImage</doc>
</parameter>
<parameter name="X">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="335">x coordinate</doc>
</parameter>
<parameter name="Y">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="336">y coordinate</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="IMAGE_CLASS"
c:identifier="VIPS_IMAGE_CLASS"
introspectable="0">
<source-position filename="include/vips/image.h" line="161"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IMAGE_GET_CLASS"
c:identifier="VIPS_IMAGE_GET_CLASS"
introspectable="0">
<source-position filename="include/vips/image.h" line="168"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IMAGE_N_ELEMENTS"
c:identifier="VIPS_IMAGE_N_ELEMENTS"
introspectable="0">
<source-position filename="include/vips/image.h" line="374"/>
<parameters>
<parameter name="I">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="320">a #VipsImage</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="IMAGE_N_PELS"
c:identifier="VIPS_IMAGE_N_PELS"
introspectable="0">
<source-position filename="include/vips/image.h" line="376"/>
<parameters>
<parameter name="I">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="327">a #VipsImage</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="IMAGE_SIZEOF_ELEMENT"
c:identifier="VIPS_IMAGE_SIZEOF_ELEMENT"
introspectable="0">
<source-position filename="include/vips/image.h" line="366"/>
<parameters>
<parameter name="I">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="299">a #VipsImage</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="IMAGE_SIZEOF_IMAGE"
c:identifier="VIPS_IMAGE_SIZEOF_IMAGE"
introspectable="0">
<source-position filename="include/vips/image.h" line="372"/>
<parameters>
<parameter name="I">
</parameter>
</parameters>
</function-macro>
<function-macro name="IMAGE_SIZEOF_LINE"
c:identifier="VIPS_IMAGE_SIZEOF_LINE"
introspectable="0">
<source-position filename="include/vips/image.h" line="370"/>
<parameters>
<parameter name="I">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="313">a #VipsImage</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="IMAGE_SIZEOF_PEL"
c:identifier="VIPS_IMAGE_SIZEOF_PEL"
introspectable="0">
<source-position filename="include/vips/image.h" line="368"/>
<parameters>
<parameter name="I">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="306">a #VipsImage</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="INIT" c:identifier="VIPS_INIT" introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/init.c"
line="149">gtk-doc mistakenly tags this macro as deprecated for unknown reasons. It is
*NOT* deprecated, please ignore the warning above.
VIPS_INIT() starts up the world of VIPS. You should call this on
program startup before using any other VIPS operations. If you do not call
VIPS_INIT(), VIPS will call it for you when you use your first VIPS
operation, but it may not be able to get hold of @ARGV0 and VIPS may
therefore be unable to find its data files. It is much better to call
this macro yourself.
@ARGV0 is used to help discover message catalogues if libvips has been
relocated. If you don't need a relocatable package, you can just pass `""`
and it'll be fine.
Additionally, VIPS_INIT() can be run from any thread, but it must not be
called from more than one thread at the same time. This is much easier to
guarantee if you call it yourself.
VIPS_INIT() is a macro, since it tries to check ABI compatibility
between the caller and the library. You can also call vips_init(), the
non-macro version, if macros are not available to you.
You may call VIPS_INIT() many times and vips_shutdown() many times, but you
must not call VIPS_INIT() after vips_shutdown(). In other words, you cannot
stop and restart vips.
Use the environment variable `VIPS_MIN_STACK_SIZE` to set the minimum stack
size. For example, `2m` for a minimum of two megabytes of stack. This can
be important for systems like musl where the default stack is very small.
VIPS_INIT() does approximately the following:
+ checks that the libvips your program is expecting is
binary-compatible with the vips library you're running against
+ sets a minimum stack size, see above
+ initialises any libraries that VIPS is using, including GObject
and the threading system, if neccessary
+ guesses where the VIPS data files are and sets up
internationalisation --- see vips_guess_prefix()
+ creates the main vips types, including #VipsImage and friends
+ loads any plugins from $libdir/vips-x.y/, where x and y are the
major and minor version numbers for this VIPS.
+ if your platform supports atexit(), VIPS_INIT() will ask for
vips_shutdown() to be called on program exit
Example:
|[
int main (int argc, char **argv)
{
if (VIPS_INIT (argv[0]))
vips_error_exit ("unable to start VIPS");
vips_shutdown ();
return 0;
}
]|
See also: vips_shutdown(), vips_add_option_entries(), vips_version(),
vips_guess_prefix(), vips_guess_libdir().</doc>
<source-position filename="include/vips/vips.h" line="161"/>
<parameters>
<parameter name="ARGV0">
<doc xml:space="preserve"
filename="iofuncs/init.c"
line="151">name of application</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="INTERPOLATE"
c:identifier="VIPS_INTERPOLATE"
introspectable="0">
<source-position filename="include/vips/interpolate.h" line="41"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="INTERPOLATE_CLASS"
c:identifier="VIPS_INTERPOLATE_CLASS"
introspectable="0">
<source-position filename="include/vips/interpolate.h" line="44"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="INTERPOLATE_GET_CLASS"
c:identifier="VIPS_INTERPOLATE_GET_CLASS"
introspectable="0">
<source-position filename="include/vips/interpolate.h" line="51"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<constant name="INTERPOLATE_SCALE"
value="1"
c:type="VIPS_INTERPOLATE_SCALE">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="303">#VIPS_INTERPOLATE_SHIFT as a multiplicative constant.</doc>
<source-position filename="include/vips/interpolate.h" line="111"/>
<type name="gint" c:type="gint"/>
</constant>
<constant name="INTERPOLATE_SHIFT"
value="12"
c:type="VIPS_INTERPOLATE_SHIFT">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="296">Many of the vips interpolators use fixed-point arithmetic for value
calcualtion. This is how many bits of precision they use.</doc>
<source-position filename="include/vips/interpolate.h" line="110"/>
<type name="gint" c:type="gint"/>
</constant>
<function-macro name="IS_FOREIGN"
c:identifier="VIPS_IS_FOREIGN"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="46"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_FOREIGN_CLASS"
c:identifier="VIPS_IS_FOREIGN_CLASS"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="48"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_FOREIGN_LOAD"
c:identifier="VIPS_IS_FOREIGN_LOAD"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="110"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_FOREIGN_LOAD_CLASS"
c:identifier="VIPS_IS_FOREIGN_LOAD_CLASS"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="112"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_FOREIGN_SAVE"
c:identifier="VIPS_IS_FOREIGN_SAVE"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="261"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_FOREIGN_SAVE_CLASS"
c:identifier="VIPS_IS_FOREIGN_SAVE_CLASS"
introspectable="0">
<source-position filename="include/vips/foreign.h" line="263"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_IMAGE"
c:identifier="VIPS_IS_IMAGE"
introspectable="0">
<source-position filename="include/vips/image.h" line="164"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_IMAGE_CLASS"
c:identifier="VIPS_IS_IMAGE_CLASS"
introspectable="0">
<source-position filename="include/vips/image.h" line="166"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_INTERPOLATE"
c:identifier="VIPS_IS_INTERPOLATE"
introspectable="0">
<source-position filename="include/vips/interpolate.h" line="47"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_INTERPOLATE_CLASS"
c:identifier="VIPS_IS_INTERPOLATE_CLASS"
introspectable="0">
<source-position filename="include/vips/interpolate.h" line="49"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_OPERATION"
c:identifier="VIPS_IS_OPERATION"
introspectable="0">
<source-position filename="include/vips/operation.h" line="53"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_OPERATION_CLASS"
c:identifier="VIPS_IS_OPERATION_CLASS"
introspectable="0">
<source-position filename="include/vips/operation.h" line="55"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_REGION"
c:identifier="VIPS_IS_REGION"
introspectable="0">
<source-position filename="include/vips/region.h" line="50"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_REGION_CLASS"
c:identifier="VIPS_IS_REGION_CLASS"
introspectable="0">
<source-position filename="include/vips/region.h" line="52"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<class name="Image"
c:symbol-prefix="image"
c:type="VipsImage"
parent="Object"
glib:type-name="VipsImage"
glib:get-type="vips_image_get_type"
glib:type-struct="ImageClass">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="289">An image. These can represent an image on disc, a memory buffer, an image
in the process of being written to disc or a partially evaluated image
in memory.</doc>
<source-position filename="include/vips/image.h" line="354"/>
<constructor name="matrix_from_array"
c:identifier="vips_image_matrix_from_array">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2376">A renamed vips_image_new_matrix_from_array(). Some gobject bindings do not
like more than one _new method.</doc>
<source-position filename="include/vips/image.h" line="456"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2386">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2378">image width</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2379">image height</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="array" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2380">array of elements</doc>
<array length="3" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="size" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2381">number of elements</doc>
<type name="gsize" c:type="int"/>
</parameter>
</parameters>
</constructor>
<constructor name="memory" c:identifier="vips_image_memory">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1772">A renamed vips_image_new_memory() ... Some gobject binding systems do not
like more than one _new() method.
See also: vips_image_new_memory().</doc>
<source-position filename="include/vips/image.h" line="437"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1780">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
</constructor>
<constructor name="new" c:identifier="vips_image_new">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1694">vips_image_new() creates a new, empty #VipsImage.
If you write to one of these images, vips will just attach some callbacks,
no pixels will be generated.
Write pixels to an image with vips_image_generate() or
vips_image_write_line(). Write a whole image to another image with
vips_image_write().</doc>
<source-position filename="include/vips/image.h" line="435"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1705">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
</constructor>
<constructor name="new_from_buffer"
c:identifier="vips_image_new_from_buffer"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2113">Loads an image from the formatted area of memory @buf, @len using the
loader recommended by vips_foreign_find_load_buffer().
To load an unformatted area of memory, use
vips_image_new_from_memory().
VIPS does not take
responsibility for the area of memory, it's up to you to make sure it's
freed when the image is closed. See for example #VipsObject::close.
Load options may be given in @option_string as "[name=value,...]" or given as
a NULL-terminated list of name-value pairs at the end of the arguments.
Options given in the function call override options given in the filename.
See also: vips_image_write_to_buffer().</doc>
<source-position filename="include/vips/image.h" line="447"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2135">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="buf" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2115">image data</doc>
<array length="1" zero-terminated="0" c:type="void*">
<type name="guint8"/>
</array>
</parameter>
<parameter name="len" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2116">length of memory buffer</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
<parameter name="option_string" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2117">set of extra options as a string</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2118">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</constructor>
<constructor name="new_from_file"
c:identifier="vips_image_new_from_file"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1836">Optional arguments:
* @access: hint #VipsAccess mode to loader
* @memory: force load via memory
vips_image_new_from_file() opens @name for reading. It can load files
in many image formats, including VIPS, TIFF, PNG, JPEG, FITS, Matlab,
OpenEXR, CSV, WebP, Radiance, RAW, PPM and others.
Load options may be appended to @filename as "[name=value,...]" or given as
a NULL-terminated list of name-value pairs at the end of the arguments.
Options given in the function call override options given in the filename.
Many loaders add extra options, see vips_jpegload(), for example.
vips_image_new_from_file() always returns immediately with the header
fields filled in. No pixels are actually read until you first access them.
@access lets you set a #VipsAccess hint giving the expected access pattern
for this file.
#VIPS_ACCESS_RANDOM means you can fetch pixels randomly from the image.
This is the default mode. #VIPS_ACCESS_SEQUENTIAL means you will read the
whole image exactly once, top-to-bottom. In this mode, vips can avoid
converting the whole image in one go, for a large memory saving. You are
allowed to make small non-local references, so area operations like
convolution will work.
In #VIPS_ACCESS_RANDOM mode, small images are decompressed to memory and
then processed from there. Large images are decompressed to temporary
random-access files on disc and then processed from there.
Set @memory to %TRUE to force loading via memory. The default is to load
large random access images via temporary disc files. See
vips_image_new_temp_file() for an
explanation of how VIPS selects a location for the temporary file.
The disc threshold can be set with the "--vips-disc-threshold"
command-line argument, or the `VIPS_DISC_THRESHOLD` environment variable.
The value is a simple integer, but can take a unit postfix of "k",
"m" or "g" to indicate kilobytes, megabytes or gigabytes.
The default threshold is 100 MB.
For example:
|[
VipsImage *image = vips_image_new_from_file ("fred.tif",
"page", 12,
NULL);
]|
Will open "fred.tif", reading page 12.
|[
VipsImage *image = vips_image_new_from_file ("fred.jpg[shrink=2]",
NULL);
]|
Will open "fred.jpg", downsampling by a factor of two.
Use vips_foreign_find_load() or vips_foreign_is_a() to see what format a
file is in and therefore what options are available. If you need more
control over the loading process, you can call loaders directly, see
vips_jpegload(), for example.
See also: vips_foreign_find_load(), vips_foreign_is_a(),
vips_image_write_to_file().</doc>
<source-position filename="include/vips/image.h" line="438"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1907">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1838">file to open</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1839">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</constructor>
<constructor name="new_from_file_RW"
c:identifier="vips_image_new_from_file_RW">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1937">Opens the named file for simultaneous reading and writing. This will only
work for VIPS files in a format native to your machine. It is only for
paintbox-type applications.
See also: vips_draw_circle().</doc>
<source-position filename="include/vips/image.h" line="440"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1947">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1939">filename to open</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_from_file_raw"
c:identifier="vips_image_new_from_file_raw">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1955">This function maps the named file and returns a #VipsImage you can use to
read it.
It returns an 8-bit image with @bands bands. If the image is not 8-bit, use
vips_copy() to transform the descriptor after loading it.
See also: vips_copy(), vips_rawload(), vips_image_new_from_file().</doc>
<source-position filename="include/vips/image.h" line="441"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1971">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1957">filename to open</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="xsize" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1958">image width</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="ysize" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1959">image height</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="bands" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1960">image bands (or bytes per pixel)</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="offset" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1961">bytes to skip at start of file</doc>
<type name="guint64" c:type="guint64"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_from_image"
c:identifier="vips_image_new_from_image">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2396">Creates a new image with width, height, format, interpretation, resolution
and offset taken from @image, but with number of bands taken from @n and the
value of each band element set from @c.
See also: vips_image_new_from_image1()</doc>
<source-position filename="include/vips/image.h" line="458"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2408">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2398">image to copy</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2399">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2400">number of constants</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_from_image1"
c:identifier="vips_image_new_from_image1">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2451">Creates a new image with width, height, format, interpretation, resolution
and offset taken from @image, but with one band and each pixel having the
value @c.
See also: vips_image_new_from_image()</doc>
<source-position filename="include/vips/image.h" line="460"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2462">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2453">image to copy</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2454">constants</doc>
<type name="gdouble" c:type="double"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_from_memory"
c:identifier="vips_image_new_from_memory">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1998">This function wraps a #VipsImage around a memory area. The memory area
must be a simple array, for example RGBRGBRGB, left-to-right,
top-to-bottom. Use vips_image_new_from_buffer() to load an area of memory
containing an image in a format.
VIPS does not take
responsibility for the area of memory, it's up to you to make sure it's
freed when the image is closed. See for example #VipsObject::close.
Because VIPS is "borrowing" @data from the caller, this function is
extremely dangerous. Unless you are very careful, you will get crashes or
memory corruption. Use vips_image_new_from_memory_copy() instead if you are
at all unsure.
Use vips_copy() to set other image properties.
See also: vips_image_new(), vips_image_write_to_memory(),
vips_image_new_from_memory_copy().</doc>
<source-position filename="include/vips/image.h" line="443"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2026">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="data" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2000">start of memory area</doc>
<array length="1" zero-terminated="0" c:type="void*">
<type name="guint8"/>
</array>
</parameter>
<parameter name="size" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2001">length of memory area</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2002">image width</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2003">image height</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="bands" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2004">image bands (or bytes per pixel)</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2005">image format</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_from_memory_copy"
c:identifier="vips_image_new_from_memory_copy">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2072">Like vips_image_new_from_memory(), but VIPS will make a copy of the memory
area. This means more memory use and an extra copy operation, but is much
simpler and safer.
See also: vips_image_new_from_memory().</doc>
<source-position filename="include/vips/image.h" line="445"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2087">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="data" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2074">start of memory area</doc>
<array length="1" zero-terminated="0" c:type="void*">
<type name="guint8"/>
</array>
</parameter>
<parameter name="size" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2075">length of memory area</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2076">image width</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2077">image height</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="bands" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2078">image bands (or bytes per pixel)</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2079">image format</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_from_source"
c:identifier="vips_image_new_from_source"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2170">Loads an image from the formatted source @input,
loader recommended by vips_foreign_find_load_source().
Load options may be given in @option_string as "[name=value,...]" or given as
a NULL-terminated list of name-value pairs at the end of the arguments.
Options given in the function call override options given in the string.
See also: vips_image_write_to_target().</doc>
<source-position filename="include/vips/image.h" line="450"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2185">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="source" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2172">source to fetch image from</doc>
<type c:type="VipsSource*"/>
</parameter>
<parameter name="option_string" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2173">set of extra options as a string</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2174">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</constructor>
<constructor name="new_matrix" c:identifier="vips_image_new_matrix">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2258">This convenience function makes an image which is a matrix: a one-band
#VIPS_FORMAT_DOUBLE image held in memory.
Use VIPS_IMAGE_ADDR(), or VIPS_MATRIX() to address pixels in the image.
Use vips_image_set_double() to set "scale" and "offset", if required.
See also: vips_image_new_matrixv()</doc>
<source-position filename="include/vips/image.h" line="452"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2272">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2260">image width</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2261">image height</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_matrix_from_array"
c:identifier="vips_image_new_matrix_from_array">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2338">A binding-friendly version of vips_image_new_matrixv().</doc>
<source-position filename="include/vips/image.h" line="454"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2347">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2340">image width</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2341">image height</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="array" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2342">array of elements</doc>
<array length="3" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="size" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2343">number of elements</doc>
<type name="gsize" c:type="int"/>
</parameter>
</parameters>
</constructor>
<constructor name="new_matrixv"
c:identifier="vips_image_new_matrixv"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2304">As vips_image_new_matrix(), but initialise the matrix from the argument
list. After @height should be @width * @height double constants which are
used to set the matrix elements.
See also: vips_image_new_matrix()</doc>
<source-position filename="include/vips/image.h" line="453"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2316">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2306">image width</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2307">image height</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2308">matrix coefficients</doc>
<varargs/>
</parameter>
</parameters>
</constructor>
<constructor name="new_memory" c:identifier="vips_image_new_memory">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1753">vips_image_new_memory() creates a new #VipsImage which, when written to, will
create a memory image.
See also: vips_image_new().</doc>
<source-position filename="include/vips/image.h" line="436"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1761">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
</constructor>
<constructor name="new_temp_file"
c:identifier="vips_image_new_temp_file">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2539">Make a #VipsImage which, when written to, will create a temporary file on
disc. The file will be automatically deleted when the image is destroyed.
@format is something like "&amp;percnt;s.v" for a vips file.
The file is created in the temporary directory. This is set with the
environment variable TMPDIR. If this is not set, then on Unix systems, vips
will default to /tmp. On Windows, vips uses GetTempPath() to find the
temporary directory.
See also: vips_image_new().</doc>
<source-position filename="include/vips/image.h" line="465"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2554">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2541">format of file</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</constructor>
<virtual-method name="eval">
<source-position filename="include/vips/image.h" line="326"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="progress" transfer-ownership="none">
<type name="Progress" c:type="VipsProgress*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</virtual-method>
<virtual-method name="invalidate">
<source-position filename="include/vips/image.h" line="342"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</virtual-method>
<virtual-method name="minimise">
<source-position filename="include/vips/image.h" line="352"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</virtual-method>
<virtual-method name="posteval">
<source-position filename="include/vips/image.h" line="330"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="progress" transfer-ownership="none">
<type name="Progress" c:type="VipsProgress*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</virtual-method>
<virtual-method name="preeval">
<source-position filename="include/vips/image.h" line="322"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="progress" transfer-ownership="none">
<type name="Progress" c:type="VipsProgress*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</virtual-method>
<virtual-method name="written">
<source-position filename="include/vips/image.h" line="337"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="result" transfer-ownership="none">
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</virtual-method>
<method name="CMC2LCh" c:identifier="vips_CMC2LCh" introspectable="0">
<doc xml:space="preserve"
filename="colour/UCS2LCh.c"
line="286">Turn LCh to CMC.
See also: vips_LCh2CMC().</doc>
<source-position filename="include/vips/colour.h" line="159"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/UCS2LCh.c"
line="296">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/UCS2LCh.c"
line="288">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/UCS2LCh.c"
line="289">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/UCS2LCh.c"
line="290">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="CMYK2XYZ" c:identifier="vips_CMYK2XYZ" introspectable="0">
<doc xml:space="preserve"
filename="colour/CMYK2XYZ.c"
line="200">Turn CMYK to XYZ. If the image has an embedded ICC profile this will be
used for the conversion. If there is no embedded profile, a generic
fallback profile will be used.
Conversion is to D65 XYZ with relative intent. If you need more control
over the process, use vips_icc_import() instead.</doc>
<source-position filename="include/vips/colour.h" line="170"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/CMYK2XYZ.c"
line="213">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/CMYK2XYZ.c"
line="202">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/CMYK2XYZ.c"
line="203">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/CMYK2XYZ.c"
line="204">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="HSV2sRGB" c:identifier="vips_HSV2sRGB" introspectable="0">
<doc xml:space="preserve"
filename="colour/HSV2sRGB.c"
line="134">Convert HSV to sRGB.
HSV is a crude polar coordinate system for RGB images. It is provided for
compatibility with other image processing systems. See vips_Lab2LCh() for a
much better colour space.
See also: vips_sRGB2HSV().</doc>
<source-position filename="include/vips/colour.h" line="152"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/HSV2sRGB.c"
line="148">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/HSV2sRGB.c"
line="136">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/HSV2sRGB.c"
line="137">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/HSV2sRGB.c"
line="138">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="LCh2CMC" c:identifier="vips_LCh2CMC" introspectable="0">
<doc xml:space="preserve"
filename="colour/LCh2UCS.c"
line="219">Turn LCh to CMC.
The CMC colourspace is described in "Uniform Colour Space Based on the
CMC(l:c) Colour-difference Formula", M R Luo and B Rigg, Journal of the
Society of Dyers and Colourists, vol 102, 1986. Distances in this
colourspace approximate, within 10% or so, differences in the CMC(l:c)
colour difference formula.
This operation generates CMC(1:1). For CMC(2:1), halve Lucs and double
Cucs.
See also: vips_CMC2LCh().</doc>
<source-position filename="include/vips/colour.h" line="157"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LCh2UCS.c"
line="238">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LCh2UCS.c"
line="221">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/LCh2UCS.c"
line="222">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LCh2UCS.c"
line="223">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="LCh2Lab" c:identifier="vips_LCh2Lab" introspectable="0">
<doc xml:space="preserve"
filename="colour/LCh2Lab.c"
line="138">Turn LCh to Lab.</doc>
<source-position filename="include/vips/colour.h" line="129"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LCh2Lab.c"
line="146">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LCh2Lab.c"
line="140">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/LCh2Lab.c"
line="141">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LCh2Lab.c"
line="142">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="Lab2LCh" c:identifier="vips_Lab2LCh" introspectable="0">
<doc xml:space="preserve"
filename="colour/Lab2LCh.c"
line="162">Turn Lab to LCh.</doc>
<source-position filename="include/vips/colour.h" line="131"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2LCh.c"
line="170">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2LCh.c"
line="164">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/Lab2LCh.c"
line="165">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2LCh.c"
line="166">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="Lab2LabQ" c:identifier="vips_Lab2LabQ" introspectable="0">
<doc xml:space="preserve"
filename="colour/Lab2LabQ.c"
line="158">Convert a Lab three-band float image to LabQ (#VIPS_CODING_LABQ).
See also: vips_LabQ2Lab().</doc>
<source-position filename="include/vips/colour.h" line="127"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2LabQ.c"
line="168">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2LabQ.c"
line="160">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/Lab2LabQ.c"
line="161">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2LabQ.c"
line="162">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="Lab2LabS" c:identifier="vips_Lab2LabS" introspectable="0">
<doc xml:space="preserve"
filename="colour/Lab2LabS.c"
line="100">Turn Lab to LabS, signed 16-bit int fixed point.
See also: vips_LabQ2Lab().</doc>
<source-position filename="include/vips/colour.h" line="167"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2LabS.c"
line="110">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2LabS.c"
line="102">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/Lab2LabS.c"
line="103">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2LabS.c"
line="104">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="Lab2XYZ" c:identifier="vips_Lab2XYZ" introspectable="0">
<doc xml:space="preserve"
filename="colour/Lab2XYZ.c"
line="194">Optional arguments:
* @temp: #VipsArrayDouble, colour temperature
Turn Lab to XYZ. The colour temperature defaults to D65, but can be
specified with @temp.</doc>
<source-position filename="include/vips/colour.h" line="137"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2XYZ.c"
line="207">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2XYZ.c"
line="196">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/Lab2XYZ.c"
line="197">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Lab2XYZ.c"
line="198">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="LabQ2Lab" c:identifier="vips_LabQ2Lab" introspectable="0">
<doc xml:space="preserve"
filename="colour/LabQ2Lab.c"
line="144">Unpack a LabQ (#VIPS_CODING_LABQ) image to a three-band float image.
See also: vips_LabQ2Lab(), vips_LabQ2LabS(), vips_rad2float().</doc>
<source-position filename="include/vips/colour.h" line="125"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabQ2Lab.c"
line="154">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabQ2Lab.c"
line="146">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/LabQ2Lab.c"
line="147">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabQ2Lab.c"
line="148">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="LabQ2LabS"
c:identifier="vips_LabQ2LabS"
introspectable="0">
<doc xml:space="preserve"
filename="colour/LabQ2LabS.c"
line="123">Unpack a LabQ (#VIPS_CODING_LABQ) image to a three-band short image.
See also: vips_LabS2LabQ(), vips_LabQ2LabS(), vips_rad2float().</doc>
<source-position filename="include/vips/colour.h" line="123"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabQ2LabS.c"
line="133">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabQ2LabS.c"
line="125">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/LabQ2LabS.c"
line="126">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabQ2LabS.c"
line="127">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="LabQ2sRGB"
c:identifier="vips_LabQ2sRGB"
introspectable="0">
<doc xml:space="preserve"
filename="colour/LabQ2sRGB.c"
line="528">Unpack a LabQ (#VIPS_CODING_LABQ) image to a three-band short image.
See also: vips_LabS2LabQ(), vips_LabQ2sRGB(), vips_rad2float().</doc>
<source-position filename="include/vips/colour.h" line="115"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabQ2sRGB.c"
line="538">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabQ2sRGB.c"
line="530">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/LabQ2sRGB.c"
line="531">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabQ2sRGB.c"
line="532">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="LabS2Lab" c:identifier="vips_LabS2Lab" introspectable="0">
<doc xml:space="preserve"
filename="colour/LabS2Lab.c"
line="98">Convert a LabS three-band signed short image to a three-band float image.
See also: vips_LabS2Lab().</doc>
<source-position filename="include/vips/colour.h" line="165"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabS2Lab.c"
line="108">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabS2Lab.c"
line="100">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/LabS2Lab.c"
line="101">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabS2Lab.c"
line="102">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="LabS2LabQ"
c:identifier="vips_LabS2LabQ"
introspectable="0">
<doc xml:space="preserve"
filename="colour/LabS2LabQ.c"
line="148">Convert a LabS three-band signed short image to LabQ
See also: vips_LabQ2LabS().</doc>
<source-position filename="include/vips/colour.h" line="121"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabS2LabQ.c"
line="158">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabS2LabQ.c"
line="150">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/LabS2LabQ.c"
line="151">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/LabS2LabQ.c"
line="152">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="XYZ2CMYK" c:identifier="vips_XYZ2CMYK" introspectable="0">
<doc xml:space="preserve"
filename="colour/XYZ2CMYK.c"
line="213">Turn XYZ to CMYK. If the image has an embedded ICC profile this will be
used for the conversion. If there is no embedded profile, a generic
fallback profile will be used.
Conversion is from D65 XYZ with relative intent. If you need more control
over the process, use vips_icc_export() instead.</doc>
<source-position filename="include/vips/colour.h" line="172"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2CMYK.c"
line="226">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2CMYK.c"
line="215">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/XYZ2CMYK.c"
line="216">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2CMYK.c"
line="217">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="XYZ2Lab" c:identifier="vips_XYZ2Lab" introspectable="0">
<doc xml:space="preserve"
filename="colour/XYZ2Lab.c"
line="247">Optional arguments:
* @temp: #VipsArrayDouble, colour temperature
Turn XYZ to Lab, optionally specifying the colour temperature. @temp
defaults to D65.</doc>
<source-position filename="include/vips/colour.h" line="139"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2Lab.c"
line="260">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2Lab.c"
line="249">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/XYZ2Lab.c"
line="250">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2Lab.c"
line="251">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="XYZ2Yxy" c:identifier="vips_XYZ2Yxy" introspectable="0">
<doc xml:space="preserve"
filename="colour/XYZ2Yxy.c"
line="105">Turn XYZ to Yxy.</doc>
<source-position filename="include/vips/colour.h" line="161"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2Yxy.c"
line="113">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2Yxy.c"
line="107">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/XYZ2Yxy.c"
line="108">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2Yxy.c"
line="109">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="XYZ2scRGB"
c:identifier="vips_XYZ2scRGB"
introspectable="0">
<doc xml:space="preserve"
filename="colour/XYZ2scRGB.c"
line="118">Turn XYZ to scRGB.</doc>
<source-position filename="include/vips/colour.h" line="142"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2scRGB.c"
line="126">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2scRGB.c"
line="120">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/XYZ2scRGB.c"
line="121">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/XYZ2scRGB.c"
line="122">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="Yxy2XYZ" c:identifier="vips_Yxy2XYZ" introspectable="0">
<doc xml:space="preserve"
filename="colour/Yxy2XYZ.c"
line="116">Turn XYZ to Yxy.</doc>
<source-position filename="include/vips/colour.h" line="163"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Yxy2XYZ.c"
line="124">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Yxy2XYZ.c"
line="118">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/Yxy2XYZ.c"
line="119">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/Yxy2XYZ.c"
line="120">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="abs" c:identifier="vips_abs" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/abs.c"
line="271">This operation finds the absolute value of an image. It does a copy for
unsigned integer types, negate for negative values in
signed integer types, &lt;function&gt;fabs(3)&lt;/function&gt; for
float types, and calculates modulus for complex
types.
See also: vips_sign().</doc>
<source-position filename="include/vips/arithmetic.h" line="202"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/abs.c"
line="285">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/abs.c"
line="273">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/abs.c"
line="274">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/abs.c"
line="275">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="acos" c:identifier="vips_acos" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="355">Perform #VIPS_OPERATION_MATH_ACOS on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="226"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="363">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="357">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="358">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="359">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="addalpha" c:identifier="vips_addalpha" introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="502">Append an alpha channel.
See also: vips_image_hasalpha().</doc>
<source-position filename="include/vips/conversion.h" line="270"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="512">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="504">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="505">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="506">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="affine" c:identifier="vips_affine" introspectable="0">
<doc xml:space="preserve"
filename="resample/affine.c"
line="707">Optional arguments:
* @interpolate: #VipsInterpolate, interpolate pixels with this
* @oarea: #VipsArrayInt, output rectangle
* @idx: %gdouble, input horizontal offset
* @idy: %gdouble, input vertical offset
* @odx: %gdouble, output horizontal offset
* @ody: %gdouble, output vertical offset
* @extend: #VipsExtend how to generate new pixels
* @background: #VipsArrayDouble colour for new pixels
* @premultiplied: %gboolean, images are already premultiplied
This operator performs an affine transform on an image using @interpolate.
The transform is:
|[
X = @a * (x + @idx) + @b * (y + @idy) + @odx
Y = @c * (x + @idx) + @d * (y + @idy) + @doy
where:
x and y are the coordinates in input image.
X and Y are the coordinates in output image.
(0,0) is the upper left corner.
]|
The section of the output space defined by @oarea is written to
@out. @oarea is a four-element int array of left, top, width, height.
By default @oarea is just large enough to cover the whole of the
transformed input image.
By default, new pixels are filled with @background. This defaults to
zero (black). You can set other extend types with @extend. #VIPS_EXTEND_COPY
is better for image upsizing.
@interpolate defaults to bilinear.
@idx, @idy, @odx, @ody default to zero.
Image are normally treated as unpremultiplied, so this operation can be used
directly on PNG images. If your images have been through vips_premultiply(),
set @premultiplied.
This operation does not change xres or yres. The image resolution needs to
be updated by the application.
See also: vips_shrink(), vips_resize(), #VipsInterpolate.</doc>
<source-position filename="include/vips/resample.h" line="90"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/affine.c"
line="765">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/affine.c"
line="709">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/affine.c"
line="710">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="a" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/affine.c"
line="711">transformation matrix coefficient</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="b" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/affine.c"
line="712">transformation matrix coefficient</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/affine.c"
line="713">transformation matrix coefficient</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="d" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/affine.c"
line="714">transformation matrix coefficient</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/affine.c"
line="715">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="andimage_const"
c:identifier="vips_andimage_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="624">Perform #VIPS_OPERATION_BOOLEAN_AND on an image and an array of constants.
See vips_boolean_const().
See also: vips_boolean(), vips_boolean_const1().</doc>
<source-position filename="include/vips/arithmetic.h" line="335"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="637">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="626">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="627">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="628">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="629">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="630">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="andimage_const1"
c:identifier="vips_andimage_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="801">Perform #VIPS_OPERATION_BOOLEAN_AND on an image and a constant.
See vips_boolean_const1().
See also: vips_boolean(), vips_boolean_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="353"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="813">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="803">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="804">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="805">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="806">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="asin" c:identifier="vips_asin" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="332">Perform #VIPS_OPERATION_MATH_ASIN on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="224"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="340">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="334">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="335">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="336">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="atan" c:identifier="vips_atan" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="378">Perform #VIPS_OPERATION_MATH_ATAN on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="228"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="386">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="380">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="381">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="382">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="autorot" c:identifier="vips_autorot" introspectable="0">
<doc xml:space="preserve"
filename="conversion/autorot.c"
line="231">Optional arguments:
* @angle: output #VipsAngle the image was rotated by
* @flip: output %gboolean whether the image was flipped
Look at the image metadata and rotate and flip the image to make it
upright. The #VIPS_META_ORIENTATION tag is removed from @out to prevent
accidental double rotation.
Read @angle to find the amount the image was rotated by. Read @flip to
see if the image was also flipped.</doc>
<source-position filename="include/vips/conversion.h" line="196"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/autorot.c"
line="249">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/autorot.c"
line="233">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/autorot.c"
line="234">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/autorot.c"
line="235">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="autorot_remove_angle"
c:identifier="vips_autorot_remove_angle">
<doc xml:space="preserve"
filename="conversion/autorot.c"
line="84">Remove the orientation tag on @image. Also remove any exif orientation tags.
You must vips_copy() the image before calling this function since it
modifies metadata.</doc>
<source-position filename="include/vips/conversion.h" line="195"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/autorot.c"
line="86">image to remove orientation from</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="avg" c:identifier="vips_avg" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/avg.c"
line="227">This operation finds the average value in an image. It operates on all
bands of the input image: use vips_stats() if you need to calculate an
average for each band. For complex images, return the average modulus.
See also: vips_stats(), vips_bandmean(), vips_deviate(), vips_rank()</doc>
<source-position filename="include/vips/arithmetic.h" line="388"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/avg.c"
line="239">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/avg.c"
line="229">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/avg.c"
line="230">output pixel average</doc>
<type name="gdouble" c:type="double*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/avg.c"
line="231">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="bandand" c:identifier="vips_bandand" introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="282">Perform #VIPS_OPERATION_BOOLEAN_AND on an image. See
vips_bandbool().</doc>
<source-position filename="include/vips/conversion.h" line="250"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="291">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="284">left-hand input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="285">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="286">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="bandbool" c:identifier="vips_bandbool" introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="242">Perform various boolean operations across the bands of an image. For
example, a three-band uchar image operated on with
#VIPS_OPERATION_BOOLEAN_AND will produce a one-band uchar image where each
pixel is the bitwise and of the band elements of the corresponding pixel in
the input image.
The output image is the same format as the input image for integer
types. Float types are cast to int before processing. Complex types are not
supported.
The output image always has one band.
This operation is useful in conjuction with vips_relational(). You can use
it to see if all image bands match exactly.
See also: vips_boolean_const().</doc>
<source-position filename="include/vips/conversion.h" line="247"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="266">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="244">left-hand input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="245">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="boolean" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="246">boolean operation to perform</doc>
<type name="OperationBoolean" c:type="VipsOperationBoolean"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="247">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="bandeor" c:identifier="vips_bandeor" introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="330">Perform #VIPS_OPERATION_BOOLEAN_EOR on an image. See
vips_bandbool().</doc>
<source-position filename="include/vips/conversion.h" line="254"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="339">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="332">left-hand input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="333">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="334">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="bandfold" c:identifier="vips_bandfold" introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandfold.c"
line="181">Optional arguments:
* @factor: fold by this factor
Fold up an image horizontally: width is collapsed into bands.
Use @factor to set how much to fold by: @factor 3, for example, will make
the output image three times narrower than the input, and with three times
as many bands. By default the whole of the input width is folded up.
See also: vips_csvload(), vips_bandunfold().</doc>
<source-position filename="include/vips/conversion.h" line="242"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandfold.c"
line="198">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandfold.c"
line="183">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandfold.c"
line="184">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandfold.c"
line="185">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="bandjoin_const"
c:identifier="vips_bandjoin_const"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="451">Append a set of constant bands to an image.
See also: vips_bandjoin().</doc>
<source-position filename="include/vips/conversion.h" line="236"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="463">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="453">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="454">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="455">array of constants to append</doc>
<array length="2" zero-terminated="0" c:type="double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="456">number of constants</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="457">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="bandjoin_const1"
c:identifier="vips_bandjoin_const1"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="478">Append a single constant band to an image.</doc>
<source-position filename="include/vips/conversion.h" line="238"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="487">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="480">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="481">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="482">constant to append</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandjoin.c"
line="483">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="bandmean" c:identifier="vips_bandmean" introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandmean.c"
line="210">This operation writes a one-band image where each pixel is the average of
the bands for that pixel in the input image. The output band format is
the same as the input band format. Integer types use round-to-nearest
averaging.
See also: vips_add(), vips_avg(), vips_recomb()</doc>
<source-position filename="include/vips/conversion.h" line="256"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandmean.c"
line="223">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandmean.c"
line="212">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandmean.c"
line="213">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandmean.c"
line="214">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="bandor" c:identifier="vips_bandor" introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="306">Perform #VIPS_OPERATION_BOOLEAN_OR on an image. See
vips_bandbool().</doc>
<source-position filename="include/vips/conversion.h" line="252"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="315">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="308">left-hand input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="309">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandbool.c"
line="310">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="bandunfold"
c:identifier="vips_bandunfold"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/bandunfold.c"
line="184">Optional arguments:
* @factor: unfold by this factor
Unfold image bands into x axis.
Use @factor to set how much to unfold by: @factor 3, for example, will make
the output image three times wider than the input, and with one third
as many bands. By default, all bands are unfolded.
See also: vips_csvload(), vips_bandfold().</doc>
<source-position filename="include/vips/conversion.h" line="244"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandunfold.c"
line="201">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandunfold.c"
line="186">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/bandunfold.c"
line="187">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/bandunfold.c"
line="188">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="boolean_const"
c:identifier="vips_boolean_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="585">Perform various boolean operations on an image against an array of
constants.
The output type is always uchar, with 0 for FALSE and 255 for TRUE.
If the array of constants has just one element, that constant is used for
all image bands. If the array has more than one element and they have
the same number of elements as there are bands in the image, then
one array element is used for each band. If the arrays have more than one
element and the image only has a single band, the result is a many-band
image where each band corresponds to one array element.
See also: vips_boolean(), vips_boolean_const1().</doc>
<source-position filename="include/vips/arithmetic.h" line="332"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="608">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="587">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="588">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="boolean" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="589">boolean operation to perform</doc>
<type name="OperationBoolean" c:type="VipsOperationBoolean"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="590">array of constants</doc>
<array length="3" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="591">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="592">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="boolean_const1"
c:identifier="vips_boolean_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="772">Perform various boolean operations on an image with a single constant. See
vips_boolean_const().
See also: vips_boolean(), vips_boolean_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="350"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="785">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="774">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="775">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="boolean" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="776">boolean operation to perform</doc>
<type name="OperationBoolean" c:type="VipsOperationBoolean"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="777">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="778">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="buildlut" c:identifier="vips_buildlut" introspectable="0">
<doc xml:space="preserve"
filename="create/buildlut.c"
line="275">This operation builds a lookup table from a set of points. Intermediate
values are generated by piecewise linear interpolation. The lookup table is
always of type #VIPS_FORMAT_DOUBLE, use vips_cast() to change it to the
type you need.
For example, consider this 2 x 2 matrix of (x, y) coordinates:
&lt;tgroup cols='2' align='left' colsep='1' rowsep='1'&gt;
&lt;tbody&gt;
&lt;row&gt;
&lt;entry&gt;0&lt;/entry&gt;
&lt;entry&gt;0&lt;/entry&gt;
&lt;/row&gt;
&lt;row&gt;
&lt;entry&gt;255&lt;/entry&gt;
&lt;entry&gt;100&lt;/entry&gt;
&lt;/row&gt;
&lt;/tbody&gt;
&lt;/tgroup&gt;
We then generate:
&lt;tgroup cols='2' align='left' colsep='1' rowsep='1'&gt;
&lt;thead&gt;
&lt;row&gt;
&lt;entry&gt;Index&lt;/entry&gt;
&lt;entry&gt;Value&lt;/entry&gt;
&lt;/row&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;row&gt;
&lt;entry&gt;0&lt;/entry&gt;
&lt;entry&gt;0&lt;/entry&gt;
&lt;/row&gt;
&lt;row&gt;
&lt;entry&gt;1&lt;/entry&gt;
&lt;entry&gt;0.4&lt;/entry&gt;
&lt;/row&gt;
&lt;row&gt;
&lt;entry&gt;...&lt;/entry&gt;
&lt;entry&gt;etc. by linear interpolation&lt;/entry&gt;
&lt;/row&gt;
&lt;row&gt;
&lt;entry&gt;255&lt;/entry&gt;
&lt;entry&gt;100&lt;/entry&gt;
&lt;/row&gt;
&lt;/tbody&gt;
&lt;/tgroup&gt;
This is then written as the output image, with the left column giving the
index in the image to place the value.
The (x, y) points don't need to be sorted: we do that. You can have
several Ys, each becomes a band in the output LUT. You don't need to
start at zero, any integer will do, including negatives.
See also: vips_identity(), vips_invertlut(), vips_cast(), vips_maplut().</doc>
<source-position filename="include/vips/create.h" line="67"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="create/buildlut.c"
line="339">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="create/buildlut.c"
line="277">input matrix</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="create/buildlut.c"
line="278">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="create/buildlut.c"
line="279">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="byteswap" c:identifier="vips_byteswap" introspectable="0">
<doc xml:space="preserve"
filename="conversion/byteswap.c"
line="218">Swap the byte order in an image.
See also: vips_rawload().</doc>
<source-position filename="include/vips/conversion.h" line="229"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/byteswap.c"
line="228">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/byteswap.c"
line="220">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/byteswap.c"
line="221">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/byteswap.c"
line="222">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cache" c:identifier="vips_cache" introspectable="0">
<doc xml:space="preserve"
filename="conversion/cache.c"
line="139">Optional arguments:
* @tile_width: width of tiles in cache
* @tile_height: height of tiles in cache
* @max_tiles: maximum number of tiles to cache
This operation behaves rather like vips_copy() between images
@in and @out, except that it keeps a cache of computed pixels.
This cache is made of up to @max_tiles tiles (a value of -1
means any number of tiles), and each tile is of size @tile_width
by @tile_height pixels. By default it will cache 250 128 x 128 pixel tiles,
enough for two 1920 x 1080 images.
This operation is a thin wrapper over vips_sink_screen(), see the
documentation for that operation for details.
It uses a set of background threads to calculate pixels and the various
active cache operations coordinate so as not to overwhelm your system. When
a request is made for an area of pixels, the operation will block until all
of those pixels have been calculated. Pixels are calculated with a set of
threads.
See also: vips_tilecache().</doc>
<source-position filename="include/vips/conversion.h" line="145"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cache.c"
line="169">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cache.c"
line="141">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cache.c"
line="142">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cache.c"
line="143">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="canny" c:identifier="vips_canny" introspectable="0">
<doc xml:space="preserve"
filename="convolution/canny.c"
line="473">Optional arguments:
* @sigma: %gdouble, sigma for gaussian blur
* @precision: #VipsPrecision, calculation accuracy
Find edges by Canny's method: The maximum of the derivative of the gradient
in the direction of the gradient. Output is float, except for uchar input,
where output is uchar, and double input, where output is double. Non-complex
images only.
Use @sigma to control the scale over which gradient is measured. 1.4 is
usually a good value.
Use @precision to set the precision of edge detection. For uchar images,
setting this to #VIPS_PRECISION_INTEGER will make edge detection much
faster, but sacrifice some sensitivity.
You will probably need to process the output further to eliminate weak
edges.
See also: vips_sobel().</doc>
<source-position filename="include/vips/convolution.h" line="75"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/canny.c"
line="502">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/canny.c"
line="475">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/canny.c"
line="476">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/canny.c"
line="478">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="case" c:identifier="vips_case" introspectable="0">
<doc xml:space="preserve"
filename="histogram/case.c"
line="278">Use values in @index to select pixels from @cases.
@index must have one band. @cases can have up to 256 elements. Values in
@index greater than or equal to @n use the final image in @cases. The
images in @cases must have either one band or the same number of bands.
The output image is the same size as @index. Images in @cases are
expanded to the smallest common format and number of bands.
Combine this with vips_switch() to make something like a case statement or
a multi-way vips_ifthenelse().
See also: vips_maplut(), vips_switch(), vips_ifthenelse().</doc>
<source-position filename="include/vips/histogram.h" line="65"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/case.c"
line="299">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="index" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/case.c"
line="280">index image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="cases" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/case.c"
line="281">array of case images</doc>
<array length="2" zero-terminated="0" c:type="VipsImage**">
<type name="Image" c:type="VipsImage*"/>
</array>
</parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/case.c"
line="282">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/case.c"
line="283">number of case images</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/case.c"
line="284">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast" c:identifier="vips_cast" introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="540">Optional arguments:
* @shift: %gboolean, integer values are shifted
Convert @in to @format. You can convert between any pair of formats.
Floats are truncated (not rounded). Out of range values are clipped.
Casting from complex to real returns the real part.
If @shift is %TRUE, integer values are shifted up and down. For example,
casting from unsigned 8 bit to unsigned 16 bit would
shift every value left by 8 bits. The bottom bit is copied into the new
bits, so 255 would become 65535.
See also: vips_scale(), vips_complexform(), vips_real(), vips_imag(),
vips_cast_uchar(), vips_msb().</doc>
<source-position filename="include/vips/conversion.h" line="203"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="564">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="542">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="543">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="544">format to convert to</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="545">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_char"
c:identifier="vips_cast_char"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="602">Convert @in to #VIPS_FORMAT_CHAR. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="207"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="610">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="604">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="605">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="606">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_complex"
c:identifier="vips_cast_complex"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="763">Convert @in to #VIPS_FORMAT_COMPLEX. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="221"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="771">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="765">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="766">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="767">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_double"
c:identifier="vips_cast_double"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="740">Convert @in to #VIPS_FORMAT_DOUBLE. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="219"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="748">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="742">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="743">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="744">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_dpcomplex"
c:identifier="vips_cast_dpcomplex"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="786">Convert @in to #VIPS_FORMAT_DPCOMPLEX. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="223"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="794">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="788">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="789">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="790">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_float"
c:identifier="vips_cast_float"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="717">Convert @in to #VIPS_FORMAT_FLOAT. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="217"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="725">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="719">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="720">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="721">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_int" c:identifier="vips_cast_int" introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="694">Convert @in to #VIPS_FORMAT_INT. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="215"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="702">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="696">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="697">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="698">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_short"
c:identifier="vips_cast_short"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="648">Convert @in to #VIPS_FORMAT_SHORT. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="211"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="656">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="650">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="651">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="652">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_uchar"
c:identifier="vips_cast_uchar"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="579">Convert @in to #VIPS_FORMAT_UCHAR. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="205"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="587">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="581">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="582">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="583">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_uint"
c:identifier="vips_cast_uint"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="671">Convert @in to #VIPS_FORMAT_UINT. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="213"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="679">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="673">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="674">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="675">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cast_ushort"
c:identifier="vips_cast_ushort"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="625">Convert @in to #VIPS_FORMAT_USHORT. See vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="209"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="633">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="627">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="628">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/cast.c"
line="629">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="ceil" c:identifier="vips_ceil" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="244">Round to an integral value with #VIPS_OPERATION_ROUND_CEIL. See
vips_round().</doc>
<source-position filename="include/vips/arithmetic.h" line="210"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="253">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="246">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="247">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="248">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="colourspace"
c:identifier="vips_colourspace"
introspectable="0">
<doc xml:space="preserve"
filename="colour/colourspace.c"
line="661">Optional arguments:
* @source_space: input colour space
This operation looks at the interpretation field of @in (or uses
@source_space, if set) and runs
a set of colourspace conversion functions to move it to @space.
For example, given an image tagged as #VIPS_INTERPRETATION_YXY, running
vips_colourspace() with @space set to #VIPS_INTERPRETATION_LAB will
convert with vips_Yxy2XYZ() and vips_XYZ2Lab().
See also: vips_colourspace_issupported(),
vips_image_guess_interpretation().</doc>
<source-position filename="include/vips/colour.h" line="111"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/colourspace.c"
line="683">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/colourspace.c"
line="663">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/colourspace.c"
line="664">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="space" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/colourspace.c"
line="665">convert to this colour space</doc>
<type name="Interpretation" c:type="VipsInterpretation"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/colourspace.c"
line="666">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="compass" c:identifier="vips_compass" introspectable="0">
<doc xml:space="preserve"
filename="convolution/compass.c"
line="217">Optional arguments:
* @times: %gint, how many times to rotate and convolve
* @angle: #VipsAngle45, rotate mask by this much between colvolutions
* @combine: #VipsCombine, combine results like this
* @precision: #VipsPrecision, precision for blur, default float
* @layers: %gint, number of layers for approximation
* @cluster: %gint, cluster lines closer than this distance
This convolves @in with @mask @times times, rotating @mask by @angle
each time. By default, it comvolves twice, rotating by 90 degrees, taking
the maximum result.
See also: vips_conv().</doc>
<source-position filename="include/vips/convolution.h" line="61"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/compass.c"
line="239">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/compass.c"
line="219">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/compass.c"
line="220">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/compass.c"
line="221">convolve with this mask</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/compass.c"
line="222">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="complex" c:identifier="vips_complex" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="274">Perform various operations on complex images.
Angles are expressed in degrees. The output type is complex unless the
input is double or dpcomplex, in which case the output is dpcomplex.</doc>
<source-position filename="include/vips/arithmetic.h" line="239"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="286">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="276">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="277">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="cmplx" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="278">complex operation to perform</doc>
<type name="OperationComplex" c:type="VipsOperationComplex"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="279">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="complexget"
c:identifier="vips_complexget"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="783">Get components of complex images.
The output type is the same as the input type, except #VIPS_FORMAT_COMPLEX
becomes #VIPS_FORMAT_FLOAT and #VIPS_FORMAT_DPCOMPLEX becomes
#VIPS_FORMAT_DOUBLE.</doc>
<source-position filename="include/vips/arithmetic.h" line="255"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="796">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="785">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="786">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="get" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="787">complex operation to perform</doc>
<type name="OperationComplexget" c:type="VipsOperationComplexget"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="788">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="composite2"
c:identifier="vips_composite2"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="123">Optional arguments:
* @compositing_space: #VipsInterpretation to composite in
* @premultiplied: %gboolean, images are already premultiplied
* @x: %gint, position of overlay
* @y: %gint, position of overlay
Composite @overlay on top of @base with @mode. See vips_composite().</doc>
<source-position filename="include/vips/conversion.h" line="278"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="140">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="base" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="125">first input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="overlay" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="126">second input image</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="127">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="mode1" transfer-ownership="none">
<type name="BlendMode" c:type="VipsBlendMode"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="129">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="conj" c:identifier="vips_conj" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="347">Perform #VIPS_OPERATION_COMPLEX_CONJ on an image. See vips_complex().</doc>
<source-position filename="include/vips/arithmetic.h" line="246"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="355">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="349">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="350">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="351">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="conv" c:identifier="vips_conv" introspectable="0">
<doc xml:space="preserve"
filename="convolution/conv.c"
line="164">Optional arguments:
* @precision: #VipsPrecision, calculation accuracy
* @layers: %gint, number of layers for approximation
* @cluster: %gint, cluster lines closer than this distance
Convolution.
Perform a convolution of @in with @mask.
Each output pixel is calculated as:
|[
sigma[i]{pixel[i] * mask[i]} / scale + offset
]|
where scale and offset are part of @mask.
By default, @precision is
#VIPS_PRECISION_FLOAT. The output image
is always #VIPS_FORMAT_FLOAT unless @in is #VIPS_FORMAT_DOUBLE, in which case
@out is also #VIPS_FORMAT_DOUBLE.
If @precision is #VIPS_PRECISION_INTEGER, then
elements of @mask are converted to
integers before convolution, using rint(),
and the output image
always has the same #VipsBandFormat as the input image.
For #VIPS_FORMAT_UCHAR images and #VIPS_PRECISION_INTEGER @precision,
vips_conv() uses a fast vector path based on
fixed-point arithmetic. This can produce slightly different results.
Disable the vector path with `--vips-novector` or `VIPS_NOVECTOR` or
vips_vector_set_enabled().
If @precision is #VIPS_PRECISION_APPROXIMATE then, like
#VIPS_PRECISION_INTEGER, @mask is converted to int before convolution, and
the output image
always has the same #VipsBandFormat as the input image.
Larger values for @layers give more accurate
results, but are slower. As @layers approaches the mask radius, the
accuracy will become close to exact convolution and the speed will drop to
match. For many large masks, such as Gaussian, @n_layers need be only 10% of
this value and accuracy will still be good.
Smaller values of @cluster will give more accurate results, but be slower
and use more memory. 10% of the mask radius is a good rule of thumb.
See also: vips_convsep().</doc>
<source-position filename="include/vips/convolution.h" line="48"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/conv.c"
line="221">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/conv.c"
line="166">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/conv.c"
line="167">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/conv.c"
line="168">convolve with this mask</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/conv.c"
line="169">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="conva" c:identifier="vips_conva" introspectable="0">
<doc xml:space="preserve"
filename="convolution/conva.c"
line="1314">Optional arguments:
* @layers: %gint, number of layers for approximation
* @cluster: %gint, cluster lines closer than this distance
Perform an approximate integer convolution of @in with @mask.
This is a low-level operation, see
vips_conv() for something more convenient.
The output image
always has the same #VipsBandFormat as the input image.
Elements of @mask are converted to
integers before convolution.
Larger values for @layers give more accurate
results, but are slower. As @layers approaches the mask radius, the
accuracy will become close to exact convolution and the speed will drop to
match. For many large masks, such as Gaussian, @layers need be only 10% of
this value and accuracy will still be good.
Smaller values of @cluster will give more accurate results, but be slower
and use more memory. 10% of the mask radius is a good rule of thumb.
See also: vips_conv().</doc>
<source-position filename="include/vips/convolution.h" line="54"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/conva.c"
line="1346">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/conva.c"
line="1316">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/conva.c"
line="1317">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/conva.c"
line="1318">convolution mask</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/conva.c"
line="1319">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="convasep" c:identifier="vips_convasep" introspectable="0">
<doc xml:space="preserve"
filename="convolution/convasep.c"
line="916">Optional arguments:
* @layers: %gint, number of layers for approximation
Approximate separable integer convolution. This is a low-level operation, see
vips_convsep() for something more convenient.
The image is convolved twice: once with @mask and then again with @mask
rotated by 90 degrees.
@mask must be 1xn or nx1 elements.
Elements of @mask are converted to
integers before convolution.
Larger values for @layers give more accurate
results, but are slower. As @layers approaches the mask radius, the
accuracy will become close to exact convolution and the speed will drop to
match. For many large masks, such as Gaussian, @layers need be only 10% of
this value and accuracy will still be good.
The output image
always has the same #VipsBandFormat as the input image.
See also: vips_convsep().</doc>
<source-position filename="include/vips/convolution.h" line="58"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convasep.c"
line="947">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convasep.c"
line="918">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/convasep.c"
line="919">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convasep.c"
line="920">convolve with this mask</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convasep.c"
line="921">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="convf" c:identifier="vips_convf" introspectable="0">
<doc xml:space="preserve"
filename="convolution/convf.c"
line="373">Convolution. This is a low-level operation, see vips_conv() for something
more convenient.
Perform a convolution of @in with @mask.
Each output pixel is
calculated as sigma[i]{pixel[i] * mask[i]} / scale + offset, where scale
and offset are part of @mask.
The convolution is performed with floating-point arithmetic. The output image
is always #VIPS_FORMAT_FLOAT unless @in is #VIPS_FORMAT_DOUBLE, in which case
@out is also #VIPS_FORMAT_DOUBLE.
See also: vips_conv().</doc>
<source-position filename="include/vips/convolution.h" line="50"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convf.c"
line="394">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convf.c"
line="375">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/convf.c"
line="376">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convf.c"
line="377">convolve with this mask</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convf.c"
line="378">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="convi" c:identifier="vips_convi" introspectable="0">
<doc xml:space="preserve"
filename="convolution/convi.c"
line="1111">Integer convolution. This is a low-level operation, see vips_conv() for
something more convenient.
@mask is converted to an integer mask with rint() of each element, rint of
scale and rint of offset. Each output pixel is then calculated as
|[
sigma[i]{pixel[i] * mask[i]} / scale + offset
]|
The output image always has the same #VipsBandFormat as the input image.
For #VIPS_FORMAT_UCHAR images, vips_convi() uses a fast vector path based on
half-float arithmetic. This can produce slightly different results.
Disable the vector path with `--vips-novector` or `VIPS_NOVECTOR` or
vips_vector_set_enabled().
See also: vips_conv().</doc>
<source-position filename="include/vips/convolution.h" line="52"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convi.c"
line="1137">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convi.c"
line="1113">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/convi.c"
line="1114">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convi.c"
line="1115">convolve with this mask</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convi.c"
line="1116">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="convsep" c:identifier="vips_convsep" introspectable="0">
<doc xml:space="preserve"
filename="convolution/convsep.c"
line="160">Optional arguments:
* @precision: calculation accuracy
* @layers: number of layers for approximation
* @cluster: cluster lines closer than this distance
Perform a separable convolution of @in with @mask.
See vips_conv() for a detailed description.
The mask must be 1xn or nx1 elements.
The image is convolved twice: once with @mask and then again with @mask
rotated by 90 degrees. This is much faster for certain types of mask
(gaussian blur, for example) than doing a full 2D convolution.
See also: vips_conv(), vips_gaussmat().</doc>
<source-position filename="include/vips/convolution.h" line="56"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convsep.c"
line="184">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convsep.c"
line="162">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/convsep.c"
line="163">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convsep.c"
line="164">convolution mask</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/convsep.c"
line="165">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="copy" c:identifier="vips_copy" introspectable="0">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="361">Optional arguments:
* @width: %gint, set image width
* @height: %gint, set image height
* @bands: %gint, set image bands
* @format: #VipsBandFormat, set image format
* @coding: #VipsCoding, set image coding
* @interpretation: #VipsInterpretation, set image interpretation
* @xres: %gdouble, set image xres
* @yres: %gdouble, set image yres
* @xoffset: %gint, set image xoffset
* @yoffset: %gint, set image yoffset
Copy an image, optionally modifying the header. VIPS copies images by
copying pointers, so this operation is instant, even for very large images.
You can optionally change any or all header fields during the copy. You can
make any change which does not change the size of a pel, so for example
you can turn a 4-band uchar image into a 2-band ushort image, but you
cannot change a 100 x 100 RGB image into a 300 x 100 mono image.
See also: vips_byteswap(), vips_bandfold(), vips_bandunfold().</doc>
<source-position filename="include/vips/conversion.h" line="137"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="390">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="363">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="364">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="365">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="copy_file"
c:identifier="vips_copy_file"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="405">A simple convenience function to copy an image to a file, then copy
again to output. If the image is already a file, just copy straight
through.
The file is allocated with vips_image_new_temp_file().
The file is automatically deleted when @out is closed.
See also: vips_copy(), vips_image_new_temp_file().</doc>
<source-position filename="include/vips/conversion.h" line="147"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="420">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="407">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="408">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/copy.c"
line="409">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="cos" c:identifier="vips_cos" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="286">Perform #VIPS_OPERATION_MATH_COS on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="220"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="294">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="288">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="289">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="290">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="countlines"
c:identifier="vips_countlines"
introspectable="0">
<doc xml:space="preserve"
filename="morphology/countlines.c"
line="159">Function which calculates the number of transitions
between black and white for the horizontal or the vertical
direction of an image. black&lt;128 , white&gt;=128
The function calculates the number of transitions for all
Xsize or Ysize and returns the mean of the result
Input should be one band, 8-bit.
See also: vips_morph(), vips_conv().</doc>
<source-position filename="include/vips/morphology.h" line="55"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/countlines.c"
line="175">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/countlines.c"
line="161">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="nolines"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="morphology/countlines.c"
line="162">output average number of lines</doc>
<type name="gdouble" c:type="double*"/>
</parameter>
<parameter name="direction" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/countlines.c"
line="163">count lines horizontally or vertically</doc>
<type name="Direction" c:type="VipsDirection"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/countlines.c"
line="164">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="crop" c:identifier="vips_crop" introspectable="0">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="317">A synonym for vips_extract_area().
See also: vips_extract_bands(), vips_smartcrop().</doc>
<source-position filename="include/vips/conversion.h" line="169"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="331">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="319">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="320">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="left" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="321">left edge of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="top" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="322">top edge of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="323">width of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="324">height of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="325">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="csvsave" c:identifier="vips_csvsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="327">Optional arguments:
* @separator: separator string
Writes the pixels in @in to the @filename as CSV (comma-separated values).
The image is written
one line of text per scanline. Complex numbers are written as
"(real,imaginary)" and will need extra parsing I guess. Only the first band
is written.
@separator gives the string to use to separate numbers in the output.
The default is "\\t" (tab).
See also: vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="529"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="348">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="329">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="330">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="331">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="csvsave_target"
c:identifier="vips_csvsave_target"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="363">Optional arguments:
* @separator: separator string
As vips_csvsave(), but save to a target.
See also: vips_csvsave().</doc>
<source-position filename="include/vips/foreign.h" line="531"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="377">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="365">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="target" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="366">save image to this target</doc>
<type c:type="VipsTarget*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/csvsave.c"
line="367">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="deviate" c:identifier="vips_deviate" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/deviate.c"
line="233">This operation finds the standard deviation of all pixels in @in. It
operates on all bands of the input image: use vips_stats() if you need
to calculate an average for each band.
Non-complex images only.
See also: vips_avg(), vips_stats()..</doc>
<source-position filename="include/vips/arithmetic.h" line="390"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/deviate.c"
line="247">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/deviate.c"
line="235">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/deviate.c"
line="236">output pixel standard deviation</doc>
<type name="gdouble" c:type="double*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/deviate.c"
line="237">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_circle"
c:identifier="vips_draw_circle"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="285">Optional arguments:
* @fill: fill the draw_circle
Draws a circle on @image. If @fill is %TRUE then the circle is filled,
otherwise a 1-pixel-wide perimeter is drawn.
@ink is an array of double containing values to draw.
See also: vips_draw_circle1(), vips_draw_line().</doc>
<source-position filename="include/vips/draw.h" line="75"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="306">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="287">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="288">value to draw</doc>
<array length="1" zero-terminated="0" c:type="double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="289">length of ink array</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="cx" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="290">centre of draw_circle</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="cy" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="291">centre of draw_circle</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="radius" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="292">draw_circle radius</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="293">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_circle1"
c:identifier="vips_draw_circle1"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="322">Optional arguments:
* @fill: fill the draw_circle
As vips_draw_circle(), but just takes a single double for @ink.
See also: vips_draw_circle().</doc>
<source-position filename="include/vips/draw.h" line="78"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="339">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="324">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="325">value to draw</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="cx" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="326">centre of draw_circle</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="cy" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="327">centre of draw_circle</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="radius" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="328">draw_circle radius</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_circle.c"
line="329">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_flood"
c:identifier="vips_draw_flood"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="691">Optional arguments:
* @test: test this image
* @equal: fill while equal to edge
* @left: output left edge of bounding box of modified area
* @top: output top edge of bounding box of modified area
* @width: output width of bounding box of modified area
* @height: output height of bounding box of modified area
Flood-fill @image with @ink, starting at position @x, @y. The filled area is
bounded by pixels that are equal to the ink colour, in other words, it
searches for pixels enclosed by an edge of @ink.
If @equal is set, it instead searches for pixels which are equal to the
start point and fills them with @ink.
Normally it will test and set pixels in @image. If @test is set, it will
test pixels in @test and set pixels in @image. This lets you search an
image (@test) for continuous areas of pixels without modifying it.
@left, @top, @width, @height output the bounding box of the modified
pixels.
@ink is an array of double containing values to draw.
See also: vips_draw_flood1().</doc>
<source-position filename="include/vips/draw.h" line="82"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="727">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="693">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="694">value to draw</doc>
<array length="1" zero-terminated="0" c:type="double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="695">length of ink array</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="696">centre of circle</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="697">centre of circle</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="698">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_flood1"
c:identifier="vips_draw_flood1"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="743">Optional arguments:
* @test: test this image
* @equal: fill while equal to edge
* @left: output left edge of bounding box of modified area
* @top: output top edge of bounding box of modified area
* @width: output width of bounding box of modified area
* @height: output height of bounding box of modified area
As vips_draw_flood(), but just takes a single double for @ink.
See also: vips_draw_flood().</doc>
<source-position filename="include/vips/draw.h" line="84"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="764">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="745">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="746">value to draw</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="747">centre of circle</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="748">centre of circle</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_flood.c"
line="749">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_image"
c:identifier="vips_draw_image"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_image.c"
line="293">Optional arguments:
* @mode: how to combine pixels
Draw @sub on top of @image at position @x, @y. The two images must have the
same Coding. If @sub has 1 band, the bands will be duplicated to match the
number of bands in @image. @sub will be converted to @image's format, see
vips_cast().
Use @mode to set how pixels are combined. If you use
#VIPS_COMBINE_MODE_ADD, both images muct be uncoded.
See also: vips_draw_mask(), vips_insert().</doc>
<source-position filename="include/vips/draw.h" line="58"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_image.c"
line="315">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_image.c"
line="295">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="sub" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_image.c"
line="296">image to paint</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_image.c"
line="297">draw @sub here</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_image.c"
line="298">draw @sub here</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_image.c"
line="299">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_line"
c:identifier="vips_draw_line"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="333">Draws a 1-pixel-wide line on an image.
@ink is an array of double containing values to draw.
See also: vips_draw_line1(), vips_draw_circle(), vips_draw_mask().</doc>
<source-position filename="include/vips/draw.h" line="68"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="350">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="335">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="336">value to draw</doc>
<array length="1" zero-terminated="0" c:type="double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="337">length of ink array</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="x1" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="338">start of draw_line</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y1" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="339">start of draw_line</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="x2" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="340">end of draw_line</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y2" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="341">end of draw_line</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="342">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_line1"
c:identifier="vips_draw_line1"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="366">As vips_draw_line(), but just take a single double for @ink.
See also: vips_draw_line().</doc>
<source-position filename="include/vips/draw.h" line="71"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="380">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="368">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="369">value to draw</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="x1" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="370">start of draw_line</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y1" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="371">start of draw_line</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="x2" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="372">end of draw_line</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y2" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="373">end of draw_line</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_line.c"
line="374">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_mask"
c:identifier="vips_draw_mask"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="364">Draw @mask on the image. @mask is a monochrome 8-bit image with 0/255
for transparent or @ink coloured points. Intermediate values blend the ink
with the pixel. Use with vips_text() to draw text on an image. Use in a
vips_draw_line() subclass to draw an object along a line.
@ink is an array of double containing values to draw.
See also: vips_text(), vips_draw_line().</doc>
<source-position filename="include/vips/draw.h" line="61"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="383">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="366">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="367">value to draw</doc>
<array length="1" zero-terminated="0" c:type="double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="368">size of ink array</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="369">mask of 0/255 values showing where to plot</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="370">draw mask here</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="371">draw mask here</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="372">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_mask1"
c:identifier="vips_draw_mask1"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="399">As vips_draw_mask(), but just takes a single double for @ink.
See also: vips_draw_mask().</doc>
<source-position filename="include/vips/draw.h" line="64"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="412">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="401">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="402">value to draw</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="403">mask of 0/255 values showing where to plot</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="404">draw mask here</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="405">draw mask here</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_mask.c"
line="406">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_point"
c:identifier="vips_draw_point"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="305">As vips_draw_rect(), but draw a single pixel at @x, @y.
See also: vips_draw_rect().</doc>
<source-position filename="include/vips/draw.h" line="53"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="318">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="307">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="308">value to draw</doc>
<array length="1" zero-terminated="0" c:type="double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="309">length of ink array</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="310">point to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="311">point to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="312">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_point1"
c:identifier="vips_draw_point1"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="333">As vips_draw_point(), but just take a single double for @ink.
See also: vips_draw_point().</doc>
<source-position filename="include/vips/draw.h" line="55"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="345">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="335">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="336">value to draw</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="337">point to draw</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="338">point to draw</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="339">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_rect"
c:identifier="vips_draw_rect"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="230">Optional arguments:
* @fill: fill the rect
Paint pixels within @left, @top, @width, @height in @image with @ink. If
@fill is zero, just paint a 1-pixel-wide outline.
See also: vips_draw_circle().</doc>
<source-position filename="include/vips/draw.h" line="47"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="250">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="232">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="233">value to draw</doc>
<array length="1" zero-terminated="0" c:type="double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="234">length of ink array</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="left" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="235">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="top" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="236">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="237">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="238">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="239">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_rect1"
c:identifier="vips_draw_rect1"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="267">Optional arguments:
* @fill: fill the rect
As vips_draw_rect(), but just take a single double for @ink.
See also: vips_draw_rect().</doc>
<source-position filename="include/vips/draw.h" line="50"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="285">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="269">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ink" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="270">value to draw</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="left" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="271">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="top" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="272">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="273">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="274">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_rect.c"
line="275">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="draw_smudge"
c:identifier="vips_draw_smudge"
introspectable="0">
<doc xml:space="preserve"
filename="draw/draw_smudge.c"
line="231">Smudge a section of @image. Each pixel in the area @left, @top, @width,
@height is replaced by the average of the surrounding 3x3 pixels.
See also: vips_draw_line().</doc>
<source-position filename="include/vips/draw.h" line="87"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_smudge.c"
line="245">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_smudge.c"
line="233">image to draw on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="left" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_smudge.c"
line="234">point to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="top" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_smudge.c"
line="235">point to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_smudge.c"
line="236">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_smudge.c"
line="237">area to paint</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="draw/draw_smudge.c"
line="238">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="dzsave" c:identifier="vips_dzsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/dzsave.c"
line="2735">Optional arguments:
* @basename: %gchar base part of name
* @layout: #VipsForeignDzLayout directory layout convention
* @suffix: %gchar suffix for tiles
* @overlap: %gint set tile overlap
* @tile_size: %gint set tile size
* @background: #VipsArrayDouble background colour
* @depth: #VipsForeignDzDepth how deep to make the pyramid
* @centre: %gboolean centre the tiles
* @angle: #VipsAngle rotate the image by this much
* @container: #VipsForeignDzContainer set container type
* @properties: %gboolean write a properties file
* @compression: %gint zip deflate compression level
* @region_shrink: #VipsRegionShrink how to shrink each 2x2 region
* @skip_blanks: %gint skip tiles which are nearly equal to the background
* @no_strip: %gboolean don't strip tiles
* @id: %gchar id for IIIF properties
Save an image as a set of tiles at various resolutions. By default dzsave
uses DeepZoom layout -- use @layout to pick other conventions.
vips_dzsave() creates a directory called @name to hold the tiles. If @name
ends `.zip`, vips_dzsave() will create a zip file called @name to hold the
tiles. You can use @container to force zip file output.
Use @basename to set the name of the directory tree we are creating. The
default value is set from @name.
You can set @suffix to something like `".jpg[Q=85]"` to control the tile
write options.
In Google layout mode, edge tiles are expanded to @tile_size by @tile_size
pixels. Normally they are filled with white, but you can set another colour
with @background. Images are usually placed at the top-left of the tile,
but you can have them centred by turning on @centre.
You can set the size and overlap of tiles with @tile_size and @overlap.
They default to the correct settings for the selected @layout. The deepzoom
defaults produce 256x256 jpeg files for centre tiles, the most efficient
size.
Use @depth to control how low the pyramid goes. This defaults to the
correct setting for the @layout you select.
You can rotate the image during write with the @angle argument. However,
this will only work for images which support random access, like openslide,
and not for things like JPEG. You'll need to rotate those images
yourself with vips_rot(). Note that the `autorotate` option to the loader
may do what you need.
If @properties is %TRUE, vips_dzsave() will write a file called
`vips-properties.xml` to the output directory. This file lists all of the
metadata attached to @in in an obvious manner. It can be useful for viewing
programs which wish to use fields from source files loaded via
vips_openslideload().
By default, all tiles are stripped, since very few people want a copy of
the metadata on every tile. Set @no_strip if you really want to keep
metadata.
If @container is set to `zip`, you can set a compression level from -1
(use zlib default), 0 (store, compression disabled) to 9 (max compression).
If no value is given, the default is to store files without compression.
You can use @region_shrink to control the method for shrinking each 2x2
region. This defaults to using the average of the 4 input pixels but you can
also use the median in cases where you want to preserve the range of values.
If you set @skip_blanks to a value greater than or equal to zero, tiles
which are all within that many pixel values to the background are skipped.
This can save a lot of space for some image types. This option defaults to
5 in Google layout mode, -1 otherwise.
In IIIF layout, you can set the base of the `id` property in `info.json`
with @id. The default is `https://example.com/iiif`.
See also: vips_tiffsave().</doc>
<source-position filename="include/vips/foreign.h" line="697"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/dzsave.c"
line="2820">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/dzsave.c"
line="2737">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/dzsave.c"
line="2738">name to save to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/dzsave.c"
line="2739">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="embed" c:identifier="vips_embed" introspectable="0">
<doc xml:space="preserve"
filename="conversion/embed.c"
line="678">Optional arguments:
* @extend: #VipsExtend to generate the edge pixels (default: black)
* @background: #VipsArrayDouble colour for edge pixels
The opposite of vips_extract_area(): embed @in within an image of size
@width by @height at position @x, @y.
@extend
controls what appears in the new pels, see #VipsExtend.
See also: vips_extract_area(), vips_insert().</doc>
<source-position filename="include/vips/conversion.h" line="150"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/embed.c"
line="701">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/embed.c"
line="680">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/embed.c"
line="681">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/embed.c"
line="682">place @in at this x position in @out</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/embed.c"
line="683">place @in at this y position in @out</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/embed.c"
line="684">@out should be this many pixels across</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/embed.c"
line="685">@out should be this many pixels down</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/embed.c"
line="686">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="eorimage_const"
c:identifier="vips_eorimage_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="684">Perform #VIPS_OPERATION_BOOLEAN_EOR on an image and an array of constants.
See vips_boolean_const().
See also: vips_boolean(), vips_boolean_const1().</doc>
<source-position filename="include/vips/arithmetic.h" line="341"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="697">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="686">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="687">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="688">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="689">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="690">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="eorimage_const1"
c:identifier="vips_eorimage_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="857">Perform #VIPS_OPERATION_BOOLEAN_EOR on an image and a constant.
See vips_boolean_const1().
See also: vips_boolean(), vips_boolean_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="357"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="869">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="859">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="860">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="861">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="862">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="equal_const"
c:identifier="vips_equal_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="660">Perform #VIPS_OPERATION_RELATIONAL_EQUAL on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="284"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="671">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="662">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="663">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="664">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="665">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="666">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="equal_const1"
c:identifier="vips_equal_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="852">Perform #VIPS_OPERATION_RELATIONAL_EQUAL on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="305"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="862">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="854">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="855">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="856">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="857">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="exp" c:identifier="vips_exp" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="447">Perform #VIPS_OPERATION_MATH_EXP on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="230"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="455">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="449">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="450">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="451">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="exp10" c:identifier="vips_exp10" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="470">Perform #VIPS_OPERATION_MATH_EXP10 on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="232"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="478">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="472">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="473">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="474">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="extract_area"
c:identifier="vips_extract_area"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="250">Extract an area from an image. The area must fit within @in.
See also: vips_extract_bands(), vips_smartcrop().</doc>
<source-position filename="include/vips/conversion.h" line="166"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="264">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="252">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="253">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="left" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="254">left edge of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="top" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="255">top edge of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="256">width of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="257">height of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="258">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="extract_band"
c:identifier="vips_extract_band"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="469">Optional arguments:
* @n: number of bands to extract
Extract a band or bands from an image. Extracting out of range is an error.
See also: vips_extract_area().</doc>
<source-position filename="include/vips/conversion.h" line="174"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="484">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="471">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="472">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="band" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="473">band to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/extract.c"
line="474">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="falsecolour"
c:identifier="vips_falsecolour"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/falsecolour.c"
line="393">Force @in to 1 band, 8-bit, then transform to
a 3-band 8-bit image with a false colour
map. The map is supposed to make small differences in brightness more
obvious.
See also: vips_maplut().</doc>
<source-position filename="include/vips/conversion.h" line="282"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/falsecolour.c"
line="406">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/falsecolour.c"
line="395">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/falsecolour.c"
line="396">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/falsecolour.c"
line="397">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="fastcor" c:identifier="vips_fastcor" introspectable="0">
<doc xml:space="preserve"
filename="convolution/fastcor.c"
line="226">Calculate a fast correlation surface.
@ref is placed at every position in @in and the sum of squares of
differences calculated.
The output
image is the same size as the input. Extra input edge pixels are made by
copying the existing edges outwards.
If the number of bands differs, one of the images
must have one band. In this case, an n-band image is formed from the
one-band image by joining n copies of the one-band image together, and then
the two n-band images are operated upon.
The output type is uint if both inputs are integer, float if both are float
or complex, and double if either is double or double complex.
In other words, the output type is just large enough to hold the whole
range of possible values.
See also: vips_spcor().</doc>
<source-position filename="include/vips/convolution.h" line="70"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/fastcor.c"
line="254">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/fastcor.c"
line="228">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ref" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/fastcor.c"
line="229">reference image</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/fastcor.c"
line="230">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/fastcor.c"
line="231">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="fill_nearest"
c:identifier="vips_fill_nearest"
introspectable="0">
<doc xml:space="preserve"
filename="morphology/nearest.c"
line="335">Optional arguments:
* @distance: output image of distance to nearest non-zero pixel
Fill outwards from every non-zero pixel in @in, setting pixels in @distance
and @value.
At the position of zero pixels in @in, @distance contains the distance to
the nearest non-zero pixel in @in, and @value contains the value of that
pixel.
@distance is a one-band float image. @value has the same number of bands and
format as @in.
See also: vips_hist_find_indexed().</doc>
<source-position filename="include/vips/morphology.h" line="60"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/nearest.c"
line="357">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/nearest.c"
line="337">image to test</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/nearest.c"
line="338">image with zero pixels filled with the nearest non-zero pixel</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/nearest.c"
line="339">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="find_trim"
c:identifier="vips_find_trim"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/find_trim.c"
line="239">Optional arguments:
* @threshold: %gdouble, background / object threshold
* @background: #VipsArrayDouble, background colour
Search @in for the bounding box of the non-background area.
Any alpha is flattened out, then the image is median-filtered, all the row
and column sums of the absolute
difference from @background are calculated in a
single pass, then the first row or column in each of the
four directions where the sum is greater than @threshold gives the bounding
box.
If the image is entirely background, vips_find_trim() returns @width == 0
and @height == 0.
@background defaults to 255, or 65535 for 16-bit images. Set another value,
or use vips_getpoint() to pick a value from an edge. You'll need to flatten
before vips_getpoint() to get a correct background value.
@threshold defaults to 10.
The image needs to be at least 3x3 pixels in size.
See also: vips_getpoint(), vips_extract_area(), vips_smartcrop().</doc>
<source-position filename="include/vips/arithmetic.h" line="400"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/find_trim.c"
line="275">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/find_trim.c"
line="241">image to find_trim</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="left"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/find_trim.c"
line="242">output left edge</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="top"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/find_trim.c"
line="243">output top edge</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="width"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/find_trim.c"
line="244">output width</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="height"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/find_trim.c"
line="245">output height</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/find_trim.c"
line="246">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="fitssave" c:identifier="vips_fitssave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/fitssave.c"
line="152">Write a VIPS image to a file in FITS format.
See also: vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="511"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/fitssave.c"
line="162">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/fitssave.c"
line="154">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/fitssave.c"
line="155">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/fitssave.c"
line="156">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="flatten" c:identifier="vips_flatten" introspectable="0">
<doc xml:space="preserve"
filename="conversion/flatten.c"
line="413">Optional arguments:
* @background: #VipsArrayDouble colour for new pixels
* @max_alpha: %gdouble, maximum value for alpha
Take the last band of @in as an alpha and use it to blend the
remaining channels with @background.
The alpha channel is 0 - @max_alpha,
where 1 means 100% image and 0
means 100% background.
Non-complex images only.
@background defaults to zero (black).
@max_alpha has the default value 255, or 65535 for images tagged as
#VIPS_INTERPRETATION_RGB16 or
#VIPS_INTERPRETATION_GREY16.
Useful for flattening PNG images to RGB.
See also: vips_premultiply(), vips_pngload().</doc>
<source-position filename="include/vips/conversion.h" line="268"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/flatten.c"
line="441">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/flatten.c"
line="415">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/flatten.c"
line="416">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/flatten.c"
line="417">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="flip" c:identifier="vips_flip" introspectable="0">
<doc xml:space="preserve"
filename="conversion/flip.c"
line="258">Flips an image left-right or up-down.
See also: vips_rot().</doc>
<source-position filename="include/vips/conversion.h" line="156"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/flip.c"
line="269">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/flip.c"
line="260">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/flip.c"
line="261">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="direction" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/flip.c"
line="262">flip horizontally or vertically</doc>
<type name="Direction" c:type="VipsDirection"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/flip.c"
line="263">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="float2rad"
c:identifier="vips_float2rad"
introspectable="0">
<doc xml:space="preserve"
filename="colour/float2rad.c"
line="222">Convert a three-band float image to Radiance 32-bit packed format.
See also: vips_rad2float(), #VIPS_CODING_RAD, vips_LabQ2Lab().</doc>
<source-position filename="include/vips/colour.h" line="119"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/float2rad.c"
line="232">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/float2rad.c"
line="224">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/float2rad.c"
line="225">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/float2rad.c"
line="226">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="floor" c:identifier="vips_floor" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="220">Round to an integral value with #VIPS_OPERATION_ROUND_FLOOR. See
vips_round().</doc>
<source-position filename="include/vips/arithmetic.h" line="208"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="229">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="222">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="223">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="224">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="foreign_load_invalidate"
c:identifier="vips_foreign_load_invalidate">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1182">Loaders can call this on the image they are making if they see a read error
from the load library. It signals "invalidate" on the load operation and
will cause it to be dropped from cache.
If we know a file will cause a read error, we don't want to cache the
failing operation, we want to make sure the image will really be opened
again if our caller tries again. For example, a broken file might be
replaced by a working one.</doc>
<source-position filename="include/vips/foreign.h" line="252"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/foreign.c"
line="1184">image to invalidate</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="freqmult" c:identifier="vips_freqmult" introspectable="0">
<doc xml:space="preserve"
filename="freqfilt/freqmult.c"
line="143">Multiply @in by @mask in Fourier space.
@in is transformed to Fourier space, multipled with @mask, then
transformed back to real space. If @in is already a complex image, just
multiply then inverse transform.
See also: vips_invfft(), vips_mask_ideal().</doc>
<source-position filename="include/vips/freqfilt.h" line="46"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/freqmult.c"
line="158">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/freqmult.c"
line="145">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/freqmult.c"
line="146">mask image</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="freqfilt/freqmult.c"
line="147">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/freqmult.c"
line="148">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="fwfft" c:identifier="vips_fwfft" introspectable="0">
<doc xml:space="preserve"
filename="freqfilt/fwfft.c"
line="347">Transform an image to Fourier space.
VIPS uses the fftw Fourier Transform library. If this library was not
available when VIPS was configured, these functions will fail.
See also: vips_invfft().</doc>
<source-position filename="include/vips/freqfilt.h" line="41"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/fwfft.c"
line="360">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/fwfft.c"
line="349">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="freqfilt/fwfft.c"
line="350">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/fwfft.c"
line="351">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="gamma" c:identifier="vips_gamma" introspectable="0">
<doc xml:space="preserve"
filename="conversion/gamma.c"
line="163">Optional arguments:
* @exponent: gamma, default 1.0 / 2.4
Calculate @in ** (1 / @exponent), normalising to the maximum range of the
input type. For float types use 1.0 as the maximum.
See also: vips_identity(), vips_pow_const1(), vips_maplut()</doc>
<source-position filename="include/vips/conversion.h" line="284"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/gamma.c"
line="178">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/gamma.c"
line="165">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/gamma.c"
line="166">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/gamma.c"
line="167">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="gaussblur"
c:identifier="vips_gaussblur"
introspectable="0">
<doc xml:space="preserve"
filename="convolution/gaussblur.c"
line="161">Optional arguments:
* @precision: #VipsPrecision, precision for blur, default int
* @min_ampl: minimum amplitude, default 0.2
This operator runs vips_gaussmat() and vips_convsep() for you on an image.
Set @min_ampl smaller to generate a larger, more accurate mask. Set @sigma
larger to make the blur more blurry.
See also: vips_gaussmat(), vips_convsep().</doc>
<source-position filename="include/vips/convolution.h" line="63"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/gaussblur.c"
line="179">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/gaussblur.c"
line="163">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/gaussblur.c"
line="164">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="sigma" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/gaussblur.c"
line="165">how large a mask to use</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/gaussblur.c"
line="166">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="getpoint" c:identifier="vips_getpoint" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/getpoint.c"
line="168">Reads a single pixel on an image.
The pixel values are returned in @vector, the length of the
array in @n. You must free the array with g_free() when you are done with
it.
See also: vips_draw_point().</doc>
<source-position filename="include/vips/arithmetic.h" line="403"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/getpoint.c"
line="185">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/getpoint.c"
line="170">image to read from</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="vector"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/getpoint.c"
line="171">output pixel value here</doc>
<array length="1" zero-terminated="0" c:type="double**">
<type name="gdouble" c:type="double*"/>
</array>
</parameter>
<parameter name="n"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/getpoint.c"
line="172">length of output vector</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/getpoint.c"
line="173">position to read</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/getpoint.c"
line="174">position to read</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/getpoint.c"
line="175">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="globalbalance"
c:identifier="vips_globalbalance"
introspectable="0">
<doc xml:space="preserve"
filename="mosaicing/global_balance.c"
line="1942">Optional arguments:
* @gamma: gamma of source images
* @int_output: %TRUE for integer image output
vips_globalbalance() can be used to remove contrast differences in
an assembled mosaic.
It reads the History field attached to @in and builds a list of the source
images that were used to make the mosaic and the position that each ended
up at in the final image.
It opens each of the source images in turn and extracts all parts which
overlap with any of the other images. It finds the average values in the
overlap areas and uses least-mean-square to find a set of correction
factors which will minimise overlap differences. It uses @gamma to
gamma-correct the source images before calculating the factors. A value of
1.0 will stop this.
Each of the source images is transformed with the appropriate correction
factor, then the mosaic is reassembled. @out is #VIPS_FORMAT_FLOAT, but
if @int_output is set, the output image is the same format as the input
images.
There are some conditions that must be met before this operation can work:
the source images must all be present under the filenames recorded in the
history on @in, and the mosaic must have been built using only operations in
this package.
See also: vips_remosaic().</doc>
<source-position filename="include/vips/mosaicing.h" line="59"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/global_balance.c"
line="1979">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/global_balance.c"
line="1944">mosaic to rebuild</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="mosaicing/global_balance.c"
line="1945">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/global_balance.c"
line="1946">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="grid" c:identifier="vips_grid" introspectable="0">
<doc xml:space="preserve"
filename="conversion/grid.c"
line="235">Chop a tall thin image up into a set of tiles, lay the tiles out in a grid.
The input image should be a very tall, thin image containing a list of
smaller images. Volumetric or time-sequence images are often laid out like
this. This image is chopped into a series of tiles, each @tile_height
pixels high and the width of @in. The tiles are then rearranged into a grid
@across tiles across and @down tiles down in row-major order.
Supplying @tile_height, @across and @down is not strictly necessary, we
only really need two of these. Requiring three is a double-check that the
image has the expected geometry.
See also: vips_embed(), vips_insert(), vips_join().</doc>
<source-position filename="include/vips/conversion.h" line="178"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/grid.c"
line="258">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/grid.c"
line="237">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/grid.c"
line="238">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="tile_height" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/grid.c"
line="239">chop into tiles this high</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="across" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/grid.c"
line="240">tiles across</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="down" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/grid.c"
line="241">tiles down</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/grid.c"
line="242">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="heifsave" c:identifier="vips_heifsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="660">Optional arguments:
* @Q: %gint, quality factor
* @lossless: %gboolean, enable lossless encoding
* @compression: #VipsForeignHeifCompression, write with this compression
Write a VIPS image to a file in HEIF format.
Use @Q to set the compression factor. Default 50, which seems to be roughly
what the iphone uses. Q 30 gives about the same quality as JPEG Q 75.
Set @lossless %TRUE to switch to lossless compression.
Use @compression to set the encoder e.g. HEVC, AVC, AV1
See also: vips_image_write_to_file(), vips_heifload().</doc>
<source-position filename="include/vips/foreign.h" line="638"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="683">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="662">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="663">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="664">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="heifsave_buffer"
c:identifier="vips_heifsave_buffer"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="698">Optional arguments:
* @Q: %gint, quality factor
* @lossless: %gboolean, enable lossless encoding
* @compression: #VipsForeignHeifCompression, write with this compression
As vips_heifsave(), but save to a memory buffer.
The address of the buffer is returned in @obuf, the length of the buffer in
@olen. You are responsible for freeing the buffer with g_free() when you
are done with it.
See also: vips_heifsave(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="640"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="719">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="700">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="buf" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="701">return output buffer here</doc>
<array length="1" zero-terminated="0" c:type="void**">
<type name="guint8"/>
</array>
</parameter>
<parameter name="len" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="702">return output length here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="703">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="heifsave_target"
c:identifier="vips_heifsave_target"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="749">Optional arguments:
* @Q: %gint, quality factor
* @lossless: %gboolean, enable lossless encoding
* @compression: #VipsForeignHeifCompression, write with this compression
As vips_heifsave(), but save to a target.
See also: vips_heifsave(), vips_image_write_to_target().</doc>
<source-position filename="include/vips/foreign.h" line="642"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="765">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="751">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="target" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="752">save image to this target</doc>
<type c:type="VipsTarget*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/heifsave.c"
line="753">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_cum" c:identifier="vips_hist_cum" introspectable="0">
<doc xml:space="preserve"
filename="histogram/hist_cum.c"
line="159">Form cumulative histogram.
See also: vips_hist_norm().</doc>
<source-position filename="include/vips/histogram.h" line="47"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_cum.c"
line="169">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_cum.c"
line="161">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/hist_cum.c"
line="162">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_cum.c"
line="163">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_entropy"
c:identifier="vips_hist_entropy"
introspectable="0">
<doc xml:space="preserve"
filename="histogram/hist_entropy.c"
line="132">Estimate image entropy from a histogram. Entropy is calculated as:
|[
-sum( p * log2( p ) )
]|
where p is histogram-value / sum-of-histogram-values.</doc>
<source-position filename="include/vips/histogram.h" line="62"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_entropy.c"
line="146">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_entropy.c"
line="134">input histogram</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/hist_entropy.c"
line="135">image entropy</doc>
<type name="gdouble" c:type="double*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_entropy.c"
line="136">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_equal"
c:identifier="vips_hist_equal"
introspectable="0">
<doc xml:space="preserve"
filename="histogram/hist_equal.c"
line="139">Optional arguments:
* @band: band to equalise
Histogram-equalise @in. Equalise using band @bandno, or if @bandno is -1,
equalise bands independently. The output format is always the same as the
input format.
See also:</doc>
<source-position filename="include/vips/histogram.h" line="51"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_equal.c"
line="155">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_equal.c"
line="141">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/hist_equal.c"
line="142">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_equal.c"
line="143">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_find"
c:identifier="vips_hist_find"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/hist_find.c"
line="470">Optional arguments:
* @band: band to equalise
Find the histogram of @in. Find the histogram for band @band (producing a
one-band histogram), or for all bands (producing an n-band histogram) if
@band is -1.
@in is cast to u8 or u16. @out is always u32.
See also: vips_hist_find_ndim(), vips_hist_find_indexed().</doc>
<source-position filename="include/vips/arithmetic.h" line="405"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find.c"
line="488">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find.c"
line="472">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/hist_find.c"
line="473">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find.c"
line="474">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_find_indexed"
c:identifier="vips_hist_find_indexed"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/hist_find_indexed.c"
line="474">Optional arguments:
* @combine: #VipsCombine, combine bins like this
Make a histogram of @in, but use image @index to pick the bins. In other
words, element zero in @out contains the combination of all the pixels in @in
whose corresponding pixel in @index is zero.
@index must have just one band and be u8 or u16. @in must be
non-complex. @out always has the same size and format as @in.
Normally, bins are summed, but you can use @combine to set other combine
modes.
This operation is useful in conjunction with vips_labelregions(). You can
use it to find the centre of gravity of blobs in an image, for example.
See also: vips_hist_find(), vips_labelregions().</doc>
<source-position filename="include/vips/arithmetic.h" line="409"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find_indexed.c"
line="500">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find_indexed.c"
line="476">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="index" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find_indexed.c"
line="477">input index #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/hist_find_indexed.c"
line="478">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find_indexed.c"
line="479">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_find_ndim"
c:identifier="vips_hist_find_ndim"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/hist_find_ndim.c"
line="318">Optional arguments:
* @bins: number of bins to make on each axis
Make a one, two or three dimensional histogram of a 1, 2 or
3 band image. Divide each axis into @bins bins .. ie.
output is 1 x bins, bins x bins, or bins x bins x bins bands.
@bins defaults to 10.
Images are cast to uchar or ushort before histogramming.
See also: vips_hist_find(), vips_hist_find_indexed().</doc>
<source-position filename="include/vips/arithmetic.h" line="407"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find_ndim.c"
line="337">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find_ndim.c"
line="320">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/hist_find_ndim.c"
line="321">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hist_find_ndim.c"
line="322">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_ismonotonic"
c:identifier="vips_hist_ismonotonic"
introspectable="0">
<doc xml:space="preserve"
filename="histogram/hist_ismonotonic.c"
line="138">Test @in for monotonicity. @out is set non-zero if @in is monotonic.</doc>
<source-position filename="include/vips/histogram.h" line="60"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_ismonotonic.c"
line="146">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_ismonotonic.c"
line="140">lookup-table to test</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/hist_ismonotonic.c"
line="141">set non-zero if @in is monotonic</doc>
<type name="gboolean" c:type="gboolean*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_ismonotonic.c"
line="142">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_local"
c:identifier="vips_hist_local"
introspectable="0">
<doc xml:space="preserve"
filename="histogram/hist_local.c"
line="400">Optional arguments:
* @max_slope: maximum brightening
Performs local histogram equalisation on @in using a
window of size @width by @height centered on the input pixel.
The output image is the same size as the input image. The edge pixels are
created by mirroring the input image outwards.
If @max_slope is greater than 0, it sets the maximum value for the slope of
the cumulative histogram, that is, the maximum brightening that is
performed. A value of 3 is often used. Local histogram equalization with
contrast limiting is usually called CLAHE.
See also: vips_hist_equal().</doc>
<source-position filename="include/vips/histogram.h" line="57"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_local.c"
line="425">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_local.c"
line="402">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/hist_local.c"
line="403">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_local.c"
line="404">width of region</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_local.c"
line="405">height of region</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_local.c"
line="406">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_match"
c:identifier="vips_hist_match"
introspectable="0">
<doc xml:space="preserve"
filename="histogram/hist_match.c"
line="179">Adjust @in to match @ref. If @in and @ref are normalised
cumulative histograms, @out will be a LUT that adjusts the PDF of the image
from which @in was made to match the PDF of @ref's image.
See also: vips_maplut(), vips_hist_find(), vips_hist_norm(),
vips_hist_cum().</doc>
<source-position filename="include/vips/histogram.h" line="55"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_match.c"
line="193">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_match.c"
line="181">input histogram</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ref" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_match.c"
line="182">reference histogram</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/hist_match.c"
line="183">output histogram</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_match.c"
line="184">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_norm"
c:identifier="vips_hist_norm"
introspectable="0">
<doc xml:space="preserve"
filename="histogram/hist_norm.c"
line="158">Normalise histogram. The maximum of each band becomes equal to the maximum
index, so for example the max for a uchar image becomes 255.
Normalise each band separately.
See also: vips_hist_cum().</doc>
<source-position filename="include/vips/histogram.h" line="49"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_norm.c"
line="170">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_norm.c"
line="160">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/hist_norm.c"
line="161">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_norm.c"
line="162">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hist_plot"
c:identifier="vips_hist_plot"
introspectable="0">
<doc xml:space="preserve"
filename="histogram/hist_plot.c"
line="318">Plot a 1 by any or any by 1 image file as a max by any or
any by max image using these rules:
&lt;emphasis&gt;unsigned char&lt;/emphasis&gt; max is always 256
&lt;emphasis&gt;other unsigned integer types&lt;/emphasis&gt; output 0 - maxium
value of @in.
&lt;emphasis&gt;signed int types&lt;/emphasis&gt; min moved to 0, max moved to max + min.
&lt;emphasis&gt;float types&lt;/emphasis&gt; min moved to 0, max moved to any
(square output)</doc>
<source-position filename="include/vips/histogram.h" line="53"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_plot.c"
line="337">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_plot.c"
line="320">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/hist_plot.c"
line="321">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/hist_plot.c"
line="322">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hough_circle"
c:identifier="vips_hough_circle"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/hough_circle.c"
line="264">Optional arguments:
* @scale: scale down dimensions by this much
* @min_radius: smallest radius to search for
* @max_radius: largest radius to search for
Find the circular Hough transform of an image. @in must be one band, with
non-zero pixels for image edges. @out is three-band, with the third channel
representing the detected circle radius. The operation scales the number of
votes by circle circumference so circles of differing size are given equal
weight.
The output pixel at (x, y, band) is the strength of the circle centred on
(x, y) and with radius (band).
Use @max_radius and @min_radius to set the range of radii to search for.
Use @scale to set how @in coordinates are scaled to @out coordinates. A
@scale of 3, for example, will make @out 1/3rd of the width and height of
@in, and reduce the number of radii tested (and hence the number of bands
int @out) by a factor of three as well.
See also: vips_hough_line().</doc>
<source-position filename="include/vips/arithmetic.h" line="414"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hough_circle.c"
line="294">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hough_circle.c"
line="266">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/hough_circle.c"
line="267">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hough_circle.c"
line="268">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="hough_line"
c:identifier="vips_hough_line"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/hough_line.c"
line="169">Optional arguments:
* @width: horizontal size of parameter space
* @height: vertical size of parameter space
Find the line Hough transform for @in. @in must have one band. @out has one
band, with pixels being the number of votes for that line. The X dimension
of @out is the line angle in 0 - 180 degrees, the Y dimension is the
distance of the closest part of that line to the origin in the top-left.
Use @width @height to set the size of the parameter space image (@out),
that is, how accurate the line determination should be.
See also: vips_hough_circle().</doc>
<source-position filename="include/vips/arithmetic.h" line="412"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hough_line.c"
line="190">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hough_line.c"
line="171">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/hough_line.c"
line="172">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/hough_line.c"
line="173">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="icc_ac2rc" c:identifier="vips_icc_ac2rc">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1210">Transform an image from absolute to relative colorimetry using the
MediaWhitePoint stored in the ICC profile.
See also: vips_icc_transform(), vips_icc_import().</doc>
<source-position filename="include/vips/colour.h" line="185"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1221">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1212">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1213">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="profile_filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1214">use this profile</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</method>
<method name="icc_export"
c:identifier="vips_icc_export"
introspectable="0">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1383">Optional arguments:
* @intent: transform with this intent
* @depth: depth of output image in bits
* @output_profile: get the output profile from here
* @pcs: use XYZ or LAB PCS
Export an image from D65 LAB to device space with an ICC profile.
If @pcs is
set to #VIPS_PCS_XYZ, use CIE XYZ PCS instead.
If @output_profile is not set, use the embedded profile, if any.
If @output_profile is set, export with that and attach it to the output
image.</doc>
<source-position filename="include/vips/colour.h" line="183"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1403">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1385">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1386">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1387">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="icc_import"
c:identifier="vips_icc_import"
introspectable="0">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1340">Optional arguments:
* @input_profile: get the input profile from here
* @intent: transform with this intent
* @embedded: use profile embedded in input image
* @pcs: use XYZ or LAB PCS
Import an image from device space to D65 LAB with an ICC profile. If @pcs is
set to #VIPS_PCS_XYZ, use CIE XYZ PCS instead.
If @embedded is set, the input profile is taken from the input image
metadata. If there is no embedded profile,
@input_profile_filename is used as a fall-back.
You can test for the
presence of an embedded profile with
vips_image_get_typeof() with #VIPS_META_ICC_NAME as an argument. This will
return %GType 0 if there is no profile.
If @embedded is not set, the input profile is taken from
@input_profile. If @input_profile is not supplied, the
metadata profile, if any, is used as a fall-back.</doc>
<source-position filename="include/vips/colour.h" line="181"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1368">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1342">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1343">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1344">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="icc_transform"
c:identifier="vips_icc_transform"
introspectable="0">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1418">Optional arguments:
* @input_profile: get the input profile from here
* @intent: transform with this intent
* @depth: depth of output image in bits
* @embedded: use profile embedded in input image
Transform an image with a pair of ICC profiles. The input image is moved to
profile-connection space with the input profile and then to the output
space with the output profile.
If @embedded is set, the input profile is taken from the input image
metadata, if present. If there is no embedded profile,
@input_profile is used as a fall-back.
You can test for the
presence of an embedded profile with
vips_image_get_typeof() with #VIPS_META_ICC_NAME as an argument. This will
return %GType 0 if there is no profile.
If @embedded is not set, the input profile is taken from
@input_profile. If @input_profile is not supplied, the
metadata profile, if any, is used as a fall-back.
The output image has the output profile attached to the #VIPS_META_ICC_NAME
field.
Use vips_icc_import() and vips_icc_export() to do either the first or
second half of this operation in isolation.</doc>
<source-position filename="include/vips/colour.h" line="178"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1454">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1420">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1421">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="output_profile" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1422">get the output profile from here</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="1423">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="imag" c:identifier="vips_imag" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="836">Perform #VIPS_OPERATION_COMPLEXGET_IMAG on an image. See vips_complexget().</doc>
<source-position filename="include/vips/arithmetic.h" line="260"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="844">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="838">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="839">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="840">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="image_copy_memory" c:identifier="vips_image_copy_memory">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3309">Make an image which is an area of memory.
If @image is already a memory buffer, just ref and return. If it's a file on
disc or a partial, allocate memory and copy the image to it.
This operation is thread-safe, unlike vips_image_wio_input().
If you are sure that @image is not shared with another thread (perhaps you
have made it yourself), use vips_image_wio_input() instead.
See also: vips_image_wio_input().</doc>
<source-position filename="include/vips/image.h" line="488"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3325">the new #VipsImage, or %NULL on error.</doc>
<type name="Image" c:type="VipsImage*"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3311">image to copy to a memory buffer</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_decode" c:identifier="vips_image_decode">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2895">A convenience function to unpack to a format that we can compute with.
@out.coding is always #VIPS_CODING_NONE.
This unpacks LABQ to plain LAB. Use vips_LabQ2LabS() for a bit more speed
if you need it.
See also: vips_image_encode(), vips_LabQ2Lab(), vips_rad2float().</doc>
<source-position filename="include/vips/image.h" line="480"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2908">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2897">image to decode</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2898">write to this image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
</parameters>
</method>
<method name="image_decode_predict"
c:identifier="vips_image_decode_predict">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2931">We often need to know what an image will decode to without actually
decoding it, for example, in arg checking.
See also: vips_image_decode().</doc>
<source-position filename="include/vips/image.h" line="478"/>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2933">image to decode</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="bands"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2934">predict bands here</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="format"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2935">predict format here</doc>
<type name="BandFormat" c:type="VipsBandFormat*"/>
</parameter>
</parameters>
</method>
<method name="image_encode" c:identifier="vips_image_encode">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2970">A convenience function to pack to a coding. The inverse of
vips_image_decode().
See also: vips_image_decode().</doc>
<source-position filename="include/vips/image.h" line="481"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2981">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2972">image to encode</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2973">write to this image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="coding" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2974">coding to apply</doc>
<type name="Coding" c:type="VipsCoding"/>
</parameter>
</parameters>
</method>
<method name="image_get" c:identifier="vips_image_get">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1152">Fill @value_copy with a copy of the header field. @value_copy must be zeroed
but uninitialised.
This will return -1 and add a message to the error buffer if the field
does not exist. Use vips_image_get_typeof() to test for the
existence of a field first if you are not certain it will be there.
For example, to read a double from an image (though of course you would use
vips_image_get_double() in practice):
|[
GValue value = { 0 };
double d;
if (vips_image_get (image, name, &amp;value))
return -1;
if (G_VALUE_TYPE (&amp;value) != G_TYPE_DOUBLE) {
vips_error( "mydomain",
_("field \"%s\" is of type %s, not double"),
name,
g_type_name (G_VALUE_TYPE (&amp;value)));
g_value_unset (&amp;value);
return -1;
}
d = g_value_get_double (&amp;value);
g_value_unset (&amp;value);
]|
See also: vips_image_get_typeof(), vips_image_get_double().</doc>
<source-position filename="include/vips/header.h" line="193"/>
<return-value transfer-ownership="none" skip="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1190">0 on success, -1 otherwise.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1154">image to get the field from from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1155">the name to fetch</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="value_copy"
direction="out"
caller-allocates="1"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1156">the %GValue is copied into this</doc>
<type name="GObject.Value" c:type="GValue*"/>
</parameter>
</parameters>
</method>
<method name="image_get_area" c:identifier="vips_image_get_area">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1480">Gets @data from @image under the name @name. A convenience
function over vips_image_get(). Use vips_image_get_typeof() to test for
the existence of a piece of metadata.
See also: vips_image_set_area(), vips_image_get(),
vips_image_get_typeof()</doc>
<source-position filename="include/vips/header.h" line="206"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1493">0 on success, -1 otherwise.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1482">image to get the metadata from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1483">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="data"
direction="out"
caller-allocates="0"
transfer-ownership="full"
nullable="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1484">return metadata value</doc>
<type name="gpointer" c:type="void**"/>
</parameter>
</parameters>
</method>
<method name="image_get_array_int"
c:identifier="vips_image_get_array_int">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1904">Gets @out from @im under the name @name.
The field must be of type
#VIPS_TYPE_ARRAY_INT.
Do not free @out. @out is valid as long as @image is valid.
Use vips_image_get_typeof() to test for the
existence of a piece of metadata.
See also: vips_image_get(), vips_image_set_image()</doc>
<source-position filename="include/vips/header.h" line="231"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1922">0 on success, -1 otherwise.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1906">image to get the metadata from</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1907">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="out" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1908">return pointer to array</doc>
<type name="gint" c:type="int**"/>
</parameter>
<parameter name="n"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1909">return the number of elements here, optionally</doc>
<type name="gint" c:type="int*"/>
</parameter>
</parameters>
</method>
<method name="image_get_as_string"
c:identifier="vips_image_get_as_string">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1781">Returns @name from @image in @out.
This function will read any field, returning it as a printable string.
You need to free the string with g_free() when you are done with it.
This will base64-encode BLOBs, for example. Use vips_buf_appendgv() to
make a string that's for humans.
See also: vips_image_get(), vips_image_get_typeof(), vips_buf_appendgv().</doc>
<source-position filename="include/vips/header.h" line="195"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1796">0 on success, -1 otherwise.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1783">image to get the header field from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1784">field name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="out" transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1785">return field value as string</doc>
<type name="utf8" c:type="char**"/>
</parameter>
</parameters>
</method>
<method name="image_get_bands" c:identifier="vips_image_get_bands">
<source-position filename="include/vips/header.h" line="165"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="397">the number of bands (channels) in the image.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="395">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_blob" c:identifier="vips_image_get_blob">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1575">Gets @blob from @image under the name @name, optionally returns its length in
@length. A convenience
function over vips_image_get(). Use vips_image_get_typeof() to test for the
existence
of a piece of metadata.
See also: vips_image_get(), vips_image_get_typeof(), vips_blob_get(),</doc>
<source-position filename="include/vips/header.h" line="213"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1590">0 on success, -1 otherwise.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1577">image to get the metadata from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1578">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1579">pointer to area of memory</doc>
<type name="gpointer" c:type="void**"/>
</parameter>
<parameter name="length" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1580">return the blob length here, optionally</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
</parameters>
</method>
<method name="image_get_coding" c:identifier="vips_image_get_coding">
<source-position filename="include/vips/header.h" line="168"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="506">the image coding</doc>
<type name="Coding" c:type="VipsCoding"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="504">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_data" c:identifier="vips_image_get_data">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="907">Return a pointer to the image's pixel data, if possible. This can involve
allocating large amounts of memory and performing a long computation. Image
pixels are laid out in band-packed rows.
Since this function modifies @image, it is not threadsafe. Only call it on
images which you are sure have not been shared with another thread.
See also: vips_image_wio_input(), vips_image_copy_memory().</doc>
<source-position filename="include/vips/header.h" line="184"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="920">a pointer to pixel data, if possible.</doc>
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="909">image to get data for</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_double" c:identifier="vips_image_get_double">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1657">Gets @out from @im under the name @name.
The value will be transformed into
a double, if possible.
See also: vips_image_get(), vips_image_get_typeof()</doc>
<source-position filename="include/vips/header.h" line="218"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1669">0 on success, -1 otherwise.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1659">image to get the header field from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1660">field name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="out" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1661">return field value</doc>
<type name="gdouble" c:type="double*"/>
</parameter>
</parameters>
</method>
<method name="image_get_fields" c:identifier="vips_image_get_fields">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1404">Get a %NULL-terminated array listing all the metadata field names on @image.
Free the return result with g_strfreev().
This is handy for language bindings. From C, it's usually more convenient to
use vips_image_map().</doc>
<source-position filename="include/vips/header.h" line="202"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1414">metadata fields in image, as a %NULL-terminated
array.</doc>
<array c:type="gchar**">
<type name="utf8"/>
</array>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1406">image to get fields from</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_filename" c:identifier="vips_image_get_filename">
<source-position filename="include/vips/header.h" line="175"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="726">the name of the file the image was loaded from, or NULL if there
is no filename.</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="724">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_format" c:identifier="vips_image_get_format">
<source-position filename="include/vips/header.h" line="166"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="409">the format of each band element.</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="407">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_height" c:identifier="vips_image_get_height">
<source-position filename="include/vips/header.h" line="164"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="385">the number of pixels down the image.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="383">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_history" c:identifier="vips_image_get_history">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="2058">This function reads the image history as a C string. The string is owned
by VIPS and must not be freed.
VIPS tracks the history of each image, that is, the sequence of operations
that generated that image. Applications built on VIPS need to call
vips_image_history_printf() for each action they perform, setting the
command-line equivalent for the action.
See also: vips_image_history_printf().</doc>
<source-position filename="include/vips/header.h" line="238"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="2072">The history of @image as a C string. Do not free!</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="2060">get history from here</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_image" c:identifier="vips_image_get_image">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1851">Gets @out from @im under the name @name.
The field must be of type
#VIPS_TYPE_IMAGE. You must unref @out with g_object_unref().
Use vips_image_get_typeof() to test for the
existence of a piece of metadata.
See also: vips_image_get(), vips_image_set_image()</doc>
<source-position filename="include/vips/header.h" line="226"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1866">0 on success, -1 otherwise.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1853">image to get the metadata from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1854">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="out" transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1855">return metadata value</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
</parameters>
</method>
<method name="image_get_int" c:identifier="vips_image_get_int">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1607">Gets @out from @im under the name @name.
The value will be transformed into
an int, if possible.
See also: vips_image_get(), vips_image_get_typeof()</doc>
<source-position filename="include/vips/header.h" line="216"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1619">0 on success, -1 otherwise.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1609">image to get the header field from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1610">field name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1611">return field value</doc>
<type name="gint" c:type="int*"/>
</parameter>
</parameters>
</method>
<method name="image_get_interpretation"
c:identifier="vips_image_get_interpretation">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="514">Return the #VipsInterpretation set in the image header.
Use vips_image_guess_interpretation() if you want a sanity-checked value.</doc>
<source-position filename="include/vips/header.h" line="169"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="521">the #VipsInterpretation from the image header.</doc>
<type name="Interpretation" c:type="VipsInterpretation"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="516">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_mode" c:identifier="vips_image_get_mode">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="735">Image modes are things like `"t"`, meaning a memory buffer, and `"p"`
meaning a delayed computation.</doc>
<source-position filename="include/vips/header.h" line="176"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="742">the image mode.</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="737">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_n_pages" c:identifier="vips_image_get_n_pages">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="817">Fetch and sanity-check #VIPS_META_N_PAGES. Default to 1 if not present or
crazy.
This is the number of pages in the image file, not the number of pages that
have been loaded into @image.</doc>
<source-position filename="include/vips/header.h" line="180"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="827">the number of pages in the image file</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="819">image to get from</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_n_subifds"
c:identifier="vips_image_get_n_subifds">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="843">Fetch and sanity-check #VIPS_META_N_SUBIFDS. Default to 0 if not present or
crazy.</doc>
<source-position filename="include/vips/header.h" line="181"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="850">the number of subifds in the image file</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="845">image to get from</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_offset" c:identifier="vips_image_get_offset">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="771">Matrix images can have an optional `offset` field for use by integer
convolution.</doc>
<source-position filename="include/vips/header.h" line="178"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="778">the offset.</doc>
<type name="gdouble" c:type="double"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="773">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_orientation"
c:identifier="vips_image_get_orientation">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="866">Fetch and sanity-check #VIPS_META_ORIENTATION. Default to 1 (no rotate,
no flip) if not present or crazy.</doc>
<source-position filename="include/vips/header.h" line="182"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="873">the image orientation.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="868">image to get from</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_orientation_swap"
c:identifier="vips_image_get_orientation_swap">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="890">Return %TRUE if applying the orientation would swap width and height.</doc>
<source-position filename="include/vips/header.h" line="183"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="896">if width/height will swap</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="892">image to get from</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_page_height"
c:identifier="vips_image_get_page_height">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="792">Multi-page images can have a page height. Fetch it, and sanity check it. If
page-height is not set, it defaults to the image height.</doc>
<source-position filename="include/vips/header.h" line="179"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="799">the page height.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="794">image to get from</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_scale" c:identifier="vips_image_get_scale">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="750">Matrix images can have an optional `scale` field for use by integer
convolution.</doc>
<source-position filename="include/vips/header.h" line="177"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="757">the scale.</doc>
<type name="gdouble" c:type="double"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="752">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_string" c:identifier="vips_image_get_string">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1707">Gets @out from @im under the name @name.
The field must be of type
G_STRING, VIPS_TYPE_REFSTRING.
Do not free @out.
Use vips_image_get_as_string() to fetch any field as a string.
See also: vips_image_get(), vips_image_get_typeof()</doc>
<source-position filename="include/vips/header.h" line="221"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1723">0 on success, -1 otherwise.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1709">image to get the header field from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1710">field name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="out" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1711">return field value</doc>
<type name="utf8" c:type="const char**"/>
</parameter>
</parameters>
</method>
<method name="image_get_typeof" c:identifier="vips_image_get_typeof">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1240">Read the %GType for a header field. Returns zero if there is no
field of that name.
See also: vips_image_get().</doc>
<source-position filename="include/vips/header.h" line="197"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1250">the %GType of the field, or zero if there is no
field of that name.</doc>
<type name="GType" c:type="GType"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1242">image to test</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1243">the name to search for</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</method>
<method name="image_get_width" c:identifier="vips_image_get_width">
<source-position filename="include/vips/header.h" line="163"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="373">the number of pixels across the image.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="371">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_xoffset" c:identifier="vips_image_get_xoffset">
<source-position filename="include/vips/header.h" line="173"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="702">the horizontal position of the image origin, in pixels.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="700">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_xres" c:identifier="vips_image_get_xres">
<source-position filename="include/vips/header.h" line="171"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="678">the horizontal image resolution in pixels per millimeter.</doc>
<type name="gdouble" c:type="double"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="676">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_yoffset" c:identifier="vips_image_get_yoffset">
<source-position filename="include/vips/header.h" line="174"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="714">the vertical position of the image origin, in pixels.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="712">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_get_yres" c:identifier="vips_image_get_yres">
<source-position filename="include/vips/header.h" line="172"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="690">the vertical image resolution in pixels per millimeter.</doc>
<type name="gdouble" c:type="double"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="688">image to get from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_guess_format" c:identifier="vips_image_guess_format">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="417">Return the #VipsBandFormat for an image, guessing a sane value if
the set value looks crazy.
For example, for a float image tagged as rgb16, we'd return ushort.</doc>
<source-position filename="include/vips/header.h" line="167"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="426">a sensible #VipsBandFormat for the image.</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="419">image to guess for</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_guess_interpretation"
c:identifier="vips_image_guess_interpretation">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="562">Return the #VipsInterpretation for an image, guessing a sane value if
the set value looks crazy.</doc>
<source-position filename="include/vips/header.h" line="170"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="569">a sensible #VipsInterpretation for the image.</doc>
<type name="Interpretation" c:type="VipsInterpretation"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="564">image to guess for</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_hasalpha" c:identifier="vips_image_hasalpha">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3062">Look at an image's interpretation and see if it has extra alpha bands. For
example, a 4-band #VIPS_INTERPRETATION_sRGB would, but a six-band
#VIPS_INTERPRETATION_MULTIBAND would not.
Return %TRUE if @image has an alpha channel.</doc>
<source-position filename="include/vips/image.h" line="486"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3064">image to check</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_history_args" c:identifier="vips_image_history_args">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="2022">Formats the name/argv as a single string and calls
vips_image_history_printf(). A
convenience function for command-line prorams.
See also: vips_image_get_history().</doc>
<source-position filename="include/vips/header.h" line="236"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="2035">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="2024">image to attach history line to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="2025">program name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="argc" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="2026">number of program arguments</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="argv" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="2027">program arguments</doc>
<array length="1" zero-terminated="0" c:type="char**">
<type name="utf8"/>
</array>
</parameter>
</parameters>
</method>
<method name="image_history_printf"
c:identifier="vips_image_history_printf"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1962">Add a line to the image history. The @format and arguments are expanded, the
date and time is appended prefixed with a hash character, and the whole
string is appended to the image history and terminated with a newline.
For example:
|[
vips_image_history_printf (image, "vips invert %s %s",
in-&gt;filename, out-&gt;filename);
]|
Might add the string
|[
"vips invert /home/john/fred.v /home/john/jim.v # Fri Apr 3 23:30:35 2009\n"
]|
VIPS operations don't add history lines for you because a single action at
the application level might involve many VIPS operations. History must be
recorded by the application.</doc>
<source-position filename="include/vips/header.h" line="234"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1989">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1964">add history line to this image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1965">printf() format string</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1966">arguments to format string</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="image_init_fields" c:identifier="vips_image_init_fields">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="931">A convenience function to set the header fields after creating an image.
Normally you copy the fields from your input images with
vips_image_pipelinev() and then make
any adjustments you need, but if you are creating an image from scratch,
for example vips_black() or vips_jpegload(), you do need to set all the
fields yourself.
See also: vips_image_pipelinev().</doc>
<source-position filename="include/vips/header.h" line="186"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="933">image to init</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="xsize" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="934">image width</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="ysize" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="935">image height</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="bands" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="936">image bands</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="format" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="937">band format</doc>
<type name="BandFormat" c:type="VipsBandFormat"/>
</parameter>
<parameter name="coding" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="938">image coding</doc>
<type name="Coding" c:type="VipsCoding"/>
</parameter>
<parameter name="interpretation" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="939">image type</doc>
<type name="Interpretation" c:type="VipsInterpretation"/>
</parameter>
<parameter name="xres" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="940">horizontal resolution, pixels per millimetre</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="yres" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="941">vertical resolution, pixels per millimetre</doc>
<type name="gdouble" c:type="double"/>
</parameter>
</parameters>
</method>
<method name="image_inplace" c:identifier="vips_image_inplace">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3538">Gets @image ready for an in-place operation, such as vips_draw_circle().
After calling this function you can both read and write the image with
VIPS_IMAGE_ADDR().
This method is called for you by the base class of the draw operations,
there's no need to call it yourself.
Since this function modifies @image, it is not thread-safe. Only call it on
images which you are sure have not been shared with another thread.
All in-place operations are inherently not thread-safe, so you need to take
great care in any case.
See also: vips_draw_circle(), vips_image_wio_input().</doc>
<source-position filename="include/vips/image.h" line="492"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3556">0 on succeess, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3540">image to make read-write</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_invalidate_all"
c:identifier="vips_image_invalidate_all">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1400">Invalidate all pixel caches on @image and any downstream images, that
is, images which depend on this image. Additionally, all operations which
depend upon this image are dropped from the VIPS operation cache.
You should call this function after
destructively modifying an image with something like vips_draw_circle().
The #VipsImage::invalidate signal is emitted for all invalidated images.
See also: vips_region_invalidate().</doc>
<source-position filename="include/vips/image.h" line="422"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1402">#VipsImage to invalidate</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_isMSBfirst" c:identifier="vips_image_isMSBfirst">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3002">Return %TRUE if @image is in most-significant-
byte first form. This is the byte order used on the SPARC
architecture and others.</doc>
<source-position filename="include/vips/image.h" line="483"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3004">image to test</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_is_sequential"
c:identifier="vips_image_is_sequential">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1457">TRUE if any of the images upstream from @image were opened in sequential
mode. Some operations change behaviour slightly in sequential mode to
optimize memory behaviour.</doc>
<source-position filename="include/vips/image.h" line="426"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1465">%TRUE if @image is in sequential mode.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1459">#VipsImage to minimise</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_isfile" c:identifier="vips_image_isfile">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3019">Return %TRUE if @image represents a file on disc in some way.</doc>
<source-position filename="include/vips/image.h" line="484"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3021">image to test</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_iskilled" c:identifier="vips_image_iskilled">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1617">If @image has been killed (see vips_image_set_kill()), set an error message,
clear the #VipsImage.kill flag and return %TRUE. Otherwise return %FALSE.
Handy for loops which need to run sets of threads which can fail.
See also: vips_image_set_kill().</doc>
<source-position filename="include/vips/image.h" line="429"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1628">%TRUE if @image has been killed.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1619">image to test</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_ispartial" c:identifier="vips_image_ispartial">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3047">Return %TRUE if @im represents a partial image (a delayed calculation).</doc>
<source-position filename="include/vips/image.h" line="485"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3049">image to test</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_map" c:identifier="vips_image_map">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1341">This function calls @fn for every header field, including every item of
metadata.
Like all _map functions, the user function should return %NULL to continue
iteration, or a non-%NULL pointer to indicate early termination.
See also: vips_image_get_typeof(), vips_image_get().</doc>
<source-position filename="include/vips/header.h" line="201"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1355">%NULL on success, the failing pointer otherwise.</doc>
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1343">image to map over</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="fn"
transfer-ownership="none"
nullable="1"
allow-none="1"
scope="call">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1344">function to call for each header field</doc>
<type name="ImageMapFn" c:type="VipsImageMapFn"/>
</parameter>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1"
closure="0">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1345">user data for function</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</method>
<method name="image_minimise_all" c:identifier="vips_image_minimise_all">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1440">Minimise memory use on this image and any upstream images, that is, images
which this image depends upon. This function is called automatically at the
end of a computation, but it might be useful to call at other times.
The #VipsImage::minimise signal is emitted for all minimised images.</doc>
<source-position filename="include/vips/image.h" line="424"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1442">#VipsImage to minimise</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_pio_input" c:identifier="vips_image_pio_input">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3598">Check that an image is readable with vips_region_prepare() and friends.
If it isn't, try to transform the image so that vips_region_prepare() can
work.
See also: vips_image_pio_output(), vips_region_prepare().</doc>
<source-position filename="include/vips/image.h" line="490"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3608">0 on succeess, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3600">image to check</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_pio_output" c:identifier="vips_image_pio_output">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3674">Check that an image is writeable with vips_image_generate(). If it isn't,
try to transform the image so that vips_image_generate() can work.
See also: vips_image_pio_input().</doc>
<source-position filename="include/vips/image.h" line="491"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3683">0 on succeess, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3676">image to check</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_print_field" c:identifier="vips_image_print_field">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1829">Prints field @name to stdout as ASCII. Handy for debugging.</doc>
<source-position filename="include/vips/header.h" line="225"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1831">image to get the header field from</doc>
<type name="Image" c:type="const VipsImage*"/>
</instance-parameter>
<parameter name="field" transfer-ownership="none">
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</method>
<method name="image_remove" c:identifier="vips_image_remove">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1284">Find and remove an item of metadata. Return %FALSE if no metadata of that
name was found.
See also: vips_image_set(), vips_image_get_typeof().</doc>
<source-position filename="include/vips/header.h" line="198"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1294">%TRUE if an item of metadata of that name was found and removed</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1286">image to test</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1287">the name to search for</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</method>
<method name="image_set" c:identifier="vips_image_set">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1066">Set a piece of metadata on @image. Any old metadata with that name is
destroyed. The %GValue is copied into the image, so you need to unset the
value when you're done with it.
For example, to set an integer on an image (though you would use the
convenience function vips_image_set_int() in practice), you would do:
|[
GValue value = { 0 };
g_value_init (&amp;value, G_TYPE_INT);
g_value_set_int (&amp;value, 42);
vips_image_set (image, name, &amp;value);
g_value_unset (&amp;value);
]|
See also: vips_image_get().</doc>
<source-position filename="include/vips/header.h" line="192"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1068">image to set the metadata on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1069">the name to give the metadata</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="value" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1070">the %GValue to copy into the image</doc>
<type name="GObject.Value" c:type="GValue*"/>
</parameter>
</parameters>
</method>
<method name="image_set_area" c:identifier="vips_image_set_area">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1433">Attaches @data as a metadata item on @image under the name @name. When
VIPS no longer needs the metadata, it will be freed with @free_fn.
See also: vips_image_get_double(), vips_image_set()</doc>
<source-position filename="include/vips/header.h" line="204"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1435">image to attach the metadata to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1436">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="free_fn"
transfer-ownership="none"
scope="async"
closure="2">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1437">free function for @data</doc>
<type name="CallbackFn" c:type="VipsCallbackFn"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1438">pointer to area of memory</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</method>
<method name="image_set_array_int"
c:identifier="vips_image_set_array_int">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1938">Attaches @array as a metadata item on @image as @name.
A convenience function over vips_image_set().
See also: vips_image_get_image(), vips_image_set().</doc>
<source-position filename="include/vips/header.h" line="229"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1940">image to attach the metadata to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1941">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="array"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1942">array of ints</doc>
<array length="2" zero-terminated="0" c:type="const int*">
<type name="gint" c:type="int"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1943">the number of elements</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</method>
<method name="image_set_blob" c:identifier="vips_image_set_blob">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1510">Attaches @blob as a metadata item on @image under the name @name. A
convenience
function over vips_image_set() using a vips_blob.
See also: vips_image_get_blob(), vips_image_set().</doc>
<source-position filename="include/vips/header.h" line="208"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1512">image to attach the metadata to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1513">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="free_fn"
transfer-ownership="none"
scope="async"
closure="2">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1514">free function for @data</doc>
<type name="CallbackFn" c:type="VipsCallbackFn"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1515">pointer to area of memory</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="length" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1516">length of memory area</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
</parameters>
</method>
<method name="image_set_blob_copy"
c:identifier="vips_image_set_blob_copy">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1536">Attaches @blob as a metadata item on @image under the name @name, taking
a copy of the memory area. A convenience function over
vips_image_set_blob().
See also: vips_image_get_blob(), vips_image_set().</doc>
<source-position filename="include/vips/header.h" line="211"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1538">image to attach the metadata to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1539">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1540">pointer to area of memory</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="length" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1541">length of memory area</doc>
<type name="gsize" c:type="size_t"/>
</parameter>
</parameters>
</method>
<method name="image_set_delete_on_close"
c:identifier="vips_image_set_delete_on_close">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2470">Sets the delete_on_close flag for the image. If this flag is set, when
@image is finalized, the filename held in @image-&gt;filename at the time of
this call is deleted.
This function is clearly extremely dangerous, use with great caution.
See also: vips_image_new_temp_file().</doc>
<source-position filename="include/vips/image.h" line="462"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2472">image to set</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="delete_on_close" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2473">format of file</doc>
<type name="gboolean" c:type="gboolean"/>
</parameter>
</parameters>
</method>
<method name="image_set_double" c:identifier="vips_image_set_double">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1684">Attaches @d as a metadata item on @image as @name. A
convenience
function over vips_image_set().
See also: vips_image_get_double(), vips_image_set()</doc>
<source-position filename="include/vips/header.h" line="220"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1686">image to attach the metadata to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1687">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="d" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1688">metadata value</doc>
<type name="gdouble" c:type="double"/>
</parameter>
</parameters>
</method>
<method name="image_set_image" c:identifier="vips_image_set_image">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1882">Attaches @im as a metadata item on @image as @name.
A convenience function over vips_image_set().
See also: vips_image_get_image(), vips_image_set().</doc>
<source-position filename="include/vips/header.h" line="228"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1884">image to attach the metadata to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1885">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="im" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1886">metadata value</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
</parameters>
</method>
<method name="image_set_int" c:identifier="vips_image_set_int">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1634">Attaches @i as a metadata item on @image under the name @name. A
convenience
function over vips_image_set().
See also: vips_image_get_int(), vips_image_set()</doc>
<source-position filename="include/vips/header.h" line="217"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1636">image to attach the metadata to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1637">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="i" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1638">metadata value</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</method>
<method name="image_set_kill" c:identifier="vips_image_set_kill">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1654">Set the #VipsImage.kill flag on an image. Handy for stopping sets of
threads.
See also: vips_image_iskilled().</doc>
<source-position filename="include/vips/image.h" line="430"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1656">image to test</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="kill" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1657">the kill state</doc>
<type name="gboolean" c:type="gboolean"/>
</parameter>
</parameters>
</method>
<method name="image_set_progress" c:identifier="vips_image_set_progress">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1594">vips signals evaluation progress via the #VipsImage::preeval,
#VipsImage::eval and #VipsImage::posteval
signals. Progress is signalled on the most-downstream image for which
vips_image_set_progress() was called.</doc>
<source-position filename="include/vips/image.h" line="428"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1596">image to signal progress on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="progress" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1597">turn progress reporting on or off</doc>
<type name="gboolean" c:type="gboolean"/>
</parameter>
</parameters>
</method>
<method name="image_set_string" c:identifier="vips_image_set_string">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1758">Attaches @str as a metadata item on @image as @name.
A convenience
function over vips_image_set() using #VIPS_TYPE_REF_STRING.
See also: vips_image_get_double(), vips_image_set().</doc>
<source-position filename="include/vips/header.h" line="223"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1760">image to attach the metadata to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1761">metadata name</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="str" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/header.c"
line="1762">metadata value</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</method>
<method name="image_wio_input" c:identifier="vips_image_wio_input">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3362">Check that an image is readable via the VIPS_IMAGE_ADDR() macro, that is,
that the entire image is in memory and all pixels can be read with
VIPS_IMAGE_ADDR(). If it
isn't, try to transform it so that VIPS_IMAGE_ADDR() can work.
Since this function modifies @image, it is not thread-safe. Only call it on
images which you are sure have not been shared with another thread. If the
image might have been shared, use the less efficient
vips_image_copy_memory() instead.
See also: vips_image_copy_memory(), vips_image_pio_input(),
vips_image_inplace(), VIPS_IMAGE_ADDR().</doc>
<source-position filename="include/vips/image.h" line="489"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3379">0 on succeess, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3364">image to transform</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_write" c:identifier="vips_image_write">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2602">Write @image to @out. Use vips_image_new() and friends to create the
#VipsImage you want to write to.
See also: vips_image_new(), vips_copy(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/image.h" line="467"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2612">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2604">image to write</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2605">write to this image</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
</parameters>
</method>
<method name="image_write_line" c:identifier="vips_image_write_line">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3173">Write a line of pixels to an image. This function must be called repeatedly
with @ypos increasing from 0 to #VipsImage::height .
@linebuffer must be VIPS_IMAGE_SIZEOF_LINE() bytes long.
See also: vips_image_generate().</doc>
<source-position filename="include/vips/image.h" line="495"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3185">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3175">image to write to</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ypos" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3176">vertical position of scan-line to write</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="linebuffer" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3177">scanline of pixels</doc>
<type name="Pel" c:type="VipsPel*"/>
</parameter>
</parameters>
</method>
<method name="image_write_prepare"
c:identifier="vips_image_write_prepare">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3109">Call this after setting header fields (width, height, and so on) to
allocate resources ready for writing.
Normally this function is called for you by vips_image_generate() or
vips_image_write_line(). You will need to call it yourself if you plan to
write directly to the -&gt;data member of a memory image.</doc>
<source-position filename="include/vips/image.h" line="493"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3120">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="3111">image to prepare</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
</parameters>
</method>
<method name="image_write_to_buffer"
c:identifier="vips_image_write_to_buffer"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2717">Writes @in to a memory buffer in a format specified by @suffix.
Save options may be appended to @suffix as "[name=value,...]" or given as
a NULL-terminated list of name-value pairs at the end of the arguments.
Options given in the function call override options given in the filename.
Currently only TIFF, JPEG and PNG formats are supported.
You can call the various save operations directly if you wish, see
vips_jpegsave_buffer(), for example.
See also: vips_image_write_to_memory(), vips_image_new_from_buffer().</doc>
<source-position filename="include/vips/image.h" line="470"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2738">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2719">image to write</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="suffix" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2720">format to write</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="buf" transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2721">return buffer start here</doc>
<array length="2" zero-terminated="0" c:type="void**">
<type name="guint8"/>
</array>
</parameter>
<parameter name="size" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2722">return buffer length here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2723">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="image_write_to_file"
c:identifier="vips_image_write_to_file"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2655">Writes @in to @name using the saver recommended by
vips_foreign_find_save().
Save options may be appended to @filename as "[name=value,...]" or given as
a NULL-terminated list of name-value pairs at the end of the arguments.
Options given in the function call override options given in the filename.
See also: vips_image_new_from_file().</doc>
<source-position filename="include/vips/image.h" line="468"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2670">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2657">image to write</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="name" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2658">write to this file</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2659">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="image_write_to_memory"
c:identifier="vips_image_write_to_memory">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2850">Writes @in to memory as a simple, unformatted C-style array.
The caller is responsible for freeing this memory with g_free().
See also: vips_image_write_to_buffer().</doc>
<source-position filename="include/vips/image.h" line="476"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2861">return buffer start here</doc>
<array length="0" zero-terminated="0" c:type="void*">
<type name="guint8"/>
</array>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2852">image to write</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="size"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2853">return buffer length here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
</parameters>
</method>
<method name="image_write_to_target"
c:identifier="vips_image_write_to_target"
introspectable="0">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2805">Writes @in to @output in format @suffix.
Save options may be appended to @suffix as "[name=value,...]" or given as
a NULL-terminated list of name-value pairs at the end of the arguments.
Options given in the function call override options given in the filename.
You can call the various save operations directly if you wish, see
vips_jpegsave_target(), for example.
See also: vips_image_write_to_file().</doc>
<source-position filename="include/vips/image.h" line="473"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2823">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2807">image to write</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="suffix" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2808">format to write</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="target" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2809">target to write to</doc>
<type c:type="VipsTarget*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="2810">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="insert" c:identifier="vips_insert" introspectable="0">
<doc xml:space="preserve"
filename="conversion/insert.c"
line="564">Optional arguments:
* @expand: expand output to hold whole of both images
* @background: colour for new pixels
Insert @sub into @main at position @x, @y.
Normally @out shows the whole of @main. If @expand is #TRUE then @out is
made large enough to hold all of @main and @sub.
Any areas of @out not coming from
either @main or @sub are set to @background (default 0).
If @sub overlaps @main,
@sub will appear on top of @main.
If the number of bands differs, one of the images
must have one band. In this case, an n-band image is formed from the
one-band image by joining n copies of the one-band image together, and then
the two n-band images are operated upon.
The two input images are cast up to the smallest common type (see table
Smallest common format in
&lt;link linkend="libvips-arithmetic"&gt;arithmetic&lt;/link&gt;).
See also: vips_join(), vips_embed(), vips_extract_area().</doc>
<source-position filename="include/vips/conversion.h" line="158"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/insert.c"
line="599">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="main" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/insert.c"
line="566">big image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="sub" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/insert.c"
line="567">small image</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/insert.c"
line="568">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/insert.c"
line="569">left position of @sub</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/insert.c"
line="570">top position of @sub</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/insert.c"
line="571">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="invert" c:identifier="vips_invert" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/invert.c"
line="177">For unsigned formats, this operation calculates (max - @in), eg. (255 -
@in) for uchar. For signed and float formats, this operation calculates (-1
@in).
For complex images, only the real part is inverted. See also vips_conj().
See also: vips_linear().</doc>
<source-position filename="include/vips/arithmetic.h" line="200"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/invert.c"
line="191">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/invert.c"
line="179">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/invert.c"
line="180">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/invert.c"
line="181">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="invertlut"
c:identifier="vips_invertlut"
introspectable="0">
<doc xml:space="preserve"
filename="create/invertlut.c"
line="309">Optional arguments:
* @size: generate this much
Given a mask of target values and real values, generate a LUT which
will map reals to targets. Handy for linearising images from
measurements of a colour chart. All values in [0,1]. Piecewise linear
interpolation, extrapolate head and tail to 0 and 1.
Eg. input like this:
&lt;tgroup cols='4' align='left' colsep='1' rowsep='1'&gt;
&lt;tbody&gt;
&lt;row&gt;
&lt;entry&gt;4&lt;/entry&gt;
&lt;entry&gt;3&lt;/entry&gt;
&lt;/row&gt;
&lt;row&gt;
&lt;entry&gt;0.1&lt;/entry&gt;
&lt;entry&gt;0.2&lt;/entry&gt;
&lt;entry&gt;0.3&lt;/entry&gt;
&lt;entry&gt;0.1&lt;/entry&gt;
&lt;/row&gt;
&lt;row&gt;
&lt;entry&gt;0.2&lt;/entry&gt;
&lt;entry&gt;0.4&lt;/entry&gt;
&lt;entry&gt;0.4&lt;/entry&gt;
&lt;entry&gt;0.2&lt;/entry&gt;
&lt;/row&gt;
&lt;row&gt;
&lt;entry&gt;0.7&lt;/entry&gt;
&lt;entry&gt;0.5&lt;/entry&gt;
&lt;entry&gt;0.6&lt;/entry&gt;
&lt;entry&gt;0.3&lt;/entry&gt;
&lt;/row&gt;
&lt;/tbody&gt;
&lt;/tgroup&gt;
Means a patch with 10% reflectance produces an image with 20% in
channel 1, 30% in channel 2, and 10% in channel 3, and so on.
Inputs don't need to be sorted (we do that). Generate any precision
LUT, default to 256 elements.
It won't work too well for non-monotonic camera responses
(we should fix this). Interpolation is simple piecewise linear; we ought to
do something better really.
See also: vips_buildlut().</doc>
<source-position filename="include/vips/create.h" line="69"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="create/invertlut.c"
line="365">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="create/invertlut.c"
line="311">input mask</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="create/invertlut.c"
line="312">output LUT</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="create/invertlut.c"
line="313">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="invfft" c:identifier="vips_invfft" introspectable="0">
<doc xml:space="preserve"
filename="freqfilt/invfft.c"
line="271">Optional arguments:
* @real: only output the real part
Transform an image from Fourier space to real space. The result is complex.
If you are OK with a real result, set @real, it's quicker.
VIPS uses the fftw Fourier Transform library. If this library was not
available when VIPS was configured, these functions will fail.
See also: vips_fwfft().</doc>
<source-position filename="include/vips/freqfilt.h" line="43"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/invfft.c"
line="289">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/invfft.c"
line="273">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="freqfilt/invfft.c"
line="274">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/invfft.c"
line="275">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="jpegsave" c:identifier="vips_jpegsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="519">Optional arguments:
* @Q: %gint, quality factor
* @profile: filename of ICC profile to attach
* @optimize_coding: %gboolean, compute optimal Huffman coding tables
* @interlace: %gboolean, write an interlaced (progressive) jpeg
* @strip: %gboolean, remove all metadata from image
* @subsample_mode: #VipsForeignJpegSubsample, chroma subsampling mode
* @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block
* @overshoot_deringing: %gboolean, overshoot samples with extreme values
* @optimize_scans: %gboolean, split DCT coefficients into separate scans
* @quant_table: %gint, quantization table index
Write a VIPS image to a file as JPEG.
Use @Q to set the JPEG compression factor. Default 75.
Use @profile to give the name of a profile to be embedded in the JPEG.
This does not affect the pixels which are written, just the way
they are tagged. See vips_profile_load() for details on profile naming.
If no profile is specified and the VIPS header
contains an ICC profile named #VIPS_META_ICC_NAME, the
profile from the VIPS header will be attached.
If @optimize_coding is set, the Huffman tables are optimized. This is
sllightly slower and produces slightly smaller files.
If @interlace is set, the jpeg files will be interlaced (progressive jpeg,
in jpg parlance). These files may be better for display over a slow network
conection, but need much more memory to encode and decode.
If @strip is set, no EXIF data, IPTC data, ICC profile or XMP metadata is
written into the output file.
Chroma subsampling is normally automatically disabled for Q &gt; 90. You can
force the subsampling mode with @@subsample_mode.
If @trellis_quant is set and the version of libjpeg supports it
(e.g. mozjpeg &gt;= 3.0), apply trellis quantisation to each 8x8 block.
Reduces file size but increases compression time.
If @overshoot_deringing is set and the version of libjpeg supports it
(e.g. mozjpeg &gt;= 3.0), apply overshooting to samples with extreme values
for example 0 and 255 for 8-bit. Overshooting may reduce ringing artifacts
from compression, in particular in areas where black text appears on a
white background.
If @optimize_scans is set and the version of libjpeg supports it
(e.g. mozjpeg &gt;= 3.0), split the spectrum of DCT coefficients into
separate scans. Reduces file size but increases compression time.
If @quant_table is set and the version of libjpeg supports it
(e.g. mozjpeg &gt;= 3.0) it selects the quantization table to use:
* 0 — Tables from JPEG Annex K (vips and libjpeg default)
* 1 — Flat table
* 2 — Table tuned for MSSIM on Kodak image set
* 3 — Table from ImageMagick by N. Robidoux (current mozjpeg default)
* 4 — Table tuned for PSNR-HVS-M on Kodak image set
* 5 — Table from Relevance of Human Vision to JPEG-DCT Compression (1992)
* 6 — Table from DCTune Perceptual Optimization of Compressed Dental
X-Rays (1997)
* 7 — Table from A Visual Detection Model for DCT Coefficient
Quantization (1993)
* 8 — Table from An Improved Detection Model for DCT Coefficient
Quantization (1993)
Quantization table 0 is the default in vips and libjpeg(-turbo), but it
tends to favor detail over color accuracy, producting colored patches and
stripes as well as heavy banding in flat areas at high compression ratios.
Quantization table 2 is a good candidate to try if the default quantization
table produces banding or color shifts and is well suited for hires images.
Quantization table 3 is the default in mozjpeg and has been tuned to produce
good results at the default quality setting; banding at high compression.
Quantization table 4 is the most accurate at the cost of compression ratio.
Tables 5-7 are based on older research papers, but generally achieve worse
compression ratios and/or quality than 2 or 4.
For maximum compression with mozjpeg, a useful set of options is `strip,
optimize-coding, interlace, optimize-scans, trellis-quant, quant_table=3`.
The image is automatically converted to RGB, Monochrome or CMYK before
saving.
EXIF data is constructed from #VIPS_META_EXIF_NAME, then
modified with any other related tags on the image before being written to
the file. #VIPS_META_RESOLUTION_UNIT is used to set the EXIF resolution
unit. #VIPS_META_ORIENTATION is used to set the EXIF orientation tag.
IPTC as #VIPS_META_IPTC_NAME and XMP as #VIPS_META_XMP_NAME
are coded and attached.
See also: vips_jpegsave_buffer(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="389"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="620">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="521">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="522">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="523">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="jpegsave_buffer"
c:identifier="vips_jpegsave_buffer"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="673">Optional arguments:
* @Q: %gint, quality factor
* @profile: filename of ICC profile to attach
* @optimize_coding: %gboolean, compute optimal Huffman coding tables
* @interlace: %gboolean, write an interlaced (progressive) jpeg
* @strip: %gboolean, remove all metadata from image
* @subsample_mode: #VipsForeignJpegSubsample, chroma subsampling mode
* @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block
* @overshoot_deringing: %gboolean, overshoot samples with extreme values
* @optimize_scans: %gboolean, split DCT coefficients into separate scans
* @quant_table: %gint, quantization table index
As vips_jpegsave(), but save to a memory buffer.
The address of the buffer is returned in @obuf, the length of the buffer in
@olen. You are responsible for freeing the buffer with g_free() when you
are done with it.
See also: vips_jpegsave(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="391"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="701">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="675">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="buf" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="676">return output buffer here</doc>
<array length="1" zero-terminated="0" c:type="void**">
<type name="guint8"/>
</array>
</parameter>
<parameter name="len" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="677">return output length here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="678">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="jpegsave_mime"
c:identifier="vips_jpegsave_mime"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="731">Optional arguments:
* @Q: %gint, quality factor
* @profile: filename of ICC profile to attach
* @optimize_coding: %gboolean, compute optimal Huffman coding tables
* @interlace: %gboolean, write an interlaced (progressive) jpeg
* @strip: %gboolean, remove all metadata from image
* @subsample_mode: #VipsForeignJpegSubsample, chroma subsampling mode
* @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block
* @overshoot_deringing: %gboolean, overshoot samples with extreme values
* @optimize_scans: %gboolean, split DCT coefficients into separate scans
* @quant_table: %gint, quantization table index
As vips_jpegsave(), but save as a mime jpeg on stdout.
See also: vips_jpegsave(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="393"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="753">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="733">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="734">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="jpegsave_target"
c:identifier="vips_jpegsave_target"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="635">Optional arguments:
* @Q: %gint, quality factor
* @profile: filename of ICC profile to attach
* @optimize_coding: %gboolean, compute optimal Huffman coding tables
* @interlace: %gboolean, write an interlaced (progressive) jpeg
* @strip: %gboolean, remove all metadata from image
* @subsample_mode: #VipsForeignJpegSubsample, chroma subsampling mode
* @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block
* @overshoot_deringing: %gboolean, overshoot samples with extreme values
* @optimize_scans: %gboolean, split DCT coefficients into separate scans
* @quant_table: %gint, quantization table index
As vips_jpegsave(), but save to a target.
See also: vips_jpegsave(), vips_image_write_to_target().</doc>
<source-position filename="include/vips/foreign.h" line="387"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="658">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="637">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="target" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="638">save image to this target</doc>
<type c:type="VipsTarget*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/jpegsave.c"
line="639">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="labelregions"
c:identifier="vips_labelregions"
introspectable="0">
<doc xml:space="preserve"
filename="morphology/labelregions.c"
line="144">Optional arguments:
* @segments: return number of regions found here
Repeatedly scans @in for regions of 4-connected pixels
with the same pixel value. Every time a region is discovered, those
pixels are marked in @mask with a unique serial number. Once all pixels
have been labelled, the operation returns, setting @segments to the number
of discrete regions which were detected.
@mask is always a 1-band #VIPS_FORMAT_INT image of the same dimensions as
@in.
This operation is useful for, for example, blob counting. You can use the
morphological operators to detect and isolate a series of objects, then use
vips_labelregions() to number them all.
Use vips_hist_find_indexed() to (for example) find blob coordinates.
See also: vips_hist_find_indexed().</doc>
<source-position filename="include/vips/morphology.h" line="58"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/labelregions.c"
line="171">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/labelregions.c"
line="146">image to test</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/labelregions.c"
line="147">write labelled regions here</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/labelregions.c"
line="148">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="less_const"
c:identifier="vips_less_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="715">Perform #VIPS_OPERATION_RELATIONAL_LESS on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="290"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="726">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="717">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="718">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="719">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="720">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="721">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="less_const1"
c:identifier="vips_less_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="904">Perform #VIPS_OPERATION_RELATIONAL_LESS on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="309"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="914">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="906">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="907">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="908">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="909">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="lesseq_const"
c:identifier="vips_lesseq_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="742">Perform #VIPS_OPERATION_RELATIONAL_LESSEQ on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="293"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="753">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="744">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="745">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="746">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="747">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="748">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="lesseq_const1"
c:identifier="vips_lesseq_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="930">Perform #VIPS_OPERATION_RELATIONAL_LESSEQ on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="311"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="940">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="932">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="933">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="934">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="935">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="linear" c:identifier="vips_linear" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="473">Optional arguments:
* @uchar: output uchar pixels
Pass an image through a linear transform, ie. (@out = @in * @a + @b). Output
is float for integer input, double for double input, complex for
complex input and double complex for double complex input. Set @uchar to
output uchar pixels.
If the arrays of constants have just one element, that constant is used for
all image bands. If the arrays have more than one element and they have
the same number of elements as there are bands in the image, then
one array element is used for each band. If the arrays have more than one
element and the image only has a single band, the result is a many-band
image where each band corresponds to one array element.
See also: vips_linear1(), vips_add().</doc>
<source-position filename="include/vips/arithmetic.h" line="187"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="500">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="475">image to transform</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="476">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="a" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="477">array of constants for multiplication</doc>
<array length="3" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="b" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="478">array of constants for addition</doc>
<array length="3" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="479">length of constant arrays</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="480">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="linear1" c:identifier="vips_linear1" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="516">Optional arguments:
* @uchar: output uchar pixels
Run vips_linear() with a single constant.
See also: vips_linear().</doc>
<source-position filename="include/vips/arithmetic.h" line="190"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="532">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="518">image to transform</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="519">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="a" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="520">constant for multiplication</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="b" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="521">constant for addition</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/linear.c"
line="522">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="linecache"
c:identifier="vips_linecache"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="995">Optional arguments:
* @access: hint expected access pattern #VipsAccess
* @tile_height: height of tiles in cache
* @threaded: allow many threads
This operation behaves rather like vips_copy() between images
@in and @out, except that it keeps a cache of computed scanlines.
The number of lines cached is enough for a small amount of non-local
access.
Each cache tile is made with a single call to
vips_region_prepare().
When the cache fills, a tile is chosen for reuse. If @access is
#VIPS_ACCESS_RANDOM, then the least-recently-used tile is reused. If
@access is #VIPS_ACCESS_SEQUENTIAL, then
the top-most tile is reused. @access defaults to #VIPS_ACCESS_RANDOM.
@tile_height can be used to set the size of the strips that
vips_linecache() uses. The default is 1 (a single scanline).
Normally, only a single thread at once is allowed to calculate tiles. If
you set @threaded to %TRUE, vips_linecache() will allow many threads to
calculate tiles at once and share the cache between them.
See also: vips_cache(), vips_tilecache().</doc>
<source-position filename="include/vips/conversion.h" line="141"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="1030">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="997">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="998">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="999">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="log" c:identifier="vips_log" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="401">Perform #VIPS_OPERATION_MATH_LOG on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="234"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="409">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="403">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="404">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="405">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="log10" c:identifier="vips_log10" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="424">Perform #VIPS_OPERATION_MATH_LOG10 on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="236"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="432">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="426">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="427">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="428">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="lshift_const"
c:identifier="vips_lshift_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="714">Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on an image and an array of constants.
See vips_boolean_const().
See also: vips_boolean(), vips_boolean_const1().</doc>
<source-position filename="include/vips/arithmetic.h" line="344"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="727">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="716">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="717">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="718">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="719">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="720">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="lshift_const1"
c:identifier="vips_lshift_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="885">Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on an image and a constant.
See vips_boolean_const1().
See also: vips_boolean(), vips_boolean_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="359"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="897">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="887">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="888">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="889">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="890">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="magicksave"
c:identifier="vips_magicksave"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="633">Optional arguments:
* @quality: %gint, quality factor
* @format: %gchararray, format to save as
* @optimize_gif_frames: %gboolean, apply GIF frames optimization
* @optimize_gif_transparency: %gboolean, apply GIF transparency optimization
Write an image using libMagick.
Use @quality to set the quality factor. Default 0.
Use @format to explicitly set the save format, for example, "BMP". Otherwise
the format is guessed from the filename suffix.
If @optimize_gif_frames is set, GIF frames are cropped to the smallest size
while preserving the results of the GIF animation. This takes some time for
computation but saves some time on encoding and produces smaller files in
some cases.
If @optimize_gif_transparency is set, pixels that don't change the image
through animation are made transparent. This takes some time for computation
but saves some time on encoding and produces smaller files in some cases.
See also: vips_magicksave_buffer(), vips_magickload().</doc>
<source-position filename="include/vips/foreign.h" line="549"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="664">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="635">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="636">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="637">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="magicksave_buffer"
c:identifier="vips_magicksave_buffer"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="679">Optional arguments:
* @quality: %gint, quality factor
* @format: %gchararray, format to save as
* @optimize_gif_frames: %gboolean, apply GIF frames optimization
* @optimize_gif_transparency: %gboolean, apply GIF transparency optimization
As vips_magicksave(), but save to a memory buffer.
The address of the buffer is returned in @obuf, the length of the buffer in
@olen. You are responsible for freeing the buffer with g_free() when you
are done with it.
See also: vips_magicksave(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="551"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="701">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="681">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="buf" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="682">return output buffer here</doc>
<array length="1" zero-terminated="0" c:type="void**">
<type name="guint8"/>
</array>
</parameter>
<parameter name="len" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="683">return output length here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/magicksave.c"
line="684">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="mapim" c:identifier="vips_mapim" introspectable="0">
<doc xml:space="preserve"
filename="resample/mapim.c"
line="473">Optional arguments:
* @interpolate: interpolate pixels with this
This operator resamples @in using @index to look up pixels. @out is
the same size as @index, with each pixel being fetched from that position in
@in. That is:
|[
out[x, y] = in[index[x, y]]
]|
If @index has one band, that band must be complex. Otherwise, @index must
have two bands of any format.
Coordinates in @index are in pixels, with (0, 0) being the top-left corner
of @in, and with y increasing down the image. Use vips_xyz() to build index
images.
@interpolate defaults to bilinear.
This operation does not change xres or yres. The image resolution needs to
be updated by the application.
See vips_maplut() for a 1D equivalent of this operation.
See also: vips_xyz(), vips_affine(), vips_resize(),
vips_maplut(), #VipsInterpolate.</doc>
<source-position filename="include/vips/resample.h" line="97"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/mapim.c"
line="508">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/mapim.c"
line="475">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/mapim.c"
line="476">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="index" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/mapim.c"
line="477">index image</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/mapim.c"
line="478">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="maplut" c:identifier="vips_maplut" introspectable="0">
<doc xml:space="preserve"
filename="histogram/maplut.c"
line="726">Optional arguments:
* @band: apply one-band @lut to this band of @in
Map an image through another image acting as a LUT (Look Up Table).
The lut may have any type and the output image will be that type.
The input image will be cast to one of the unsigned integer types, that is,
VIPS_FORMAT_UCHAR, VIPS_FORMAT_USHORT or VIPS_FORMAT_UINT.
If @lut is too small for the input type (for example, if @in is
VIPS_FORMAT_UCHAR but @lut only has 100 elements), the lut is padded out
by copying the last element. Overflows are reported at the end of
computation.
If @lut is too large, extra values are ignored.
If @lut has one band and @band is -1 (the default), then all bands of @in
pass through @lut. If @band is &gt;= 0, then just that band of @in passes
through @lut and other bands are just copied.
If @lut
has same number of bands as @in, then each band is mapped
separately. If @in has one band, then @lut may have many bands and
the output will have the same number of bands as @lut.
See also: vips_hist_find(), vips_identity().</doc>
<source-position filename="include/vips/histogram.h" line="41"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/maplut.c"
line="760">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/maplut.c"
line="728">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/maplut.c"
line="729">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="lut" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/maplut.c"
line="730">look-up table</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/maplut.c"
line="731">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="math" c:identifier="vips_math" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="232">Perform various functions in -lm, the maths library, on images.
Angles are expressed in degrees. The output type is float unless the
input is double, in which case the output is double.
Non-complex images only.
See also: vips_math2().</doc>
<source-position filename="include/vips/arithmetic.h" line="215"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="248">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="234">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="235">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="math" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="236">math operation to perform</doc>
<type name="OperationMath" c:type="VipsOperationMath"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="237">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="math2_const"
c:identifier="vips_math2_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="442">This operation calculates various 2-ary maths operations on an image and
an array of constants and writes the result to @out.
The image may have any
non-complex format. @out is float except in the case that @in
is double, in which case @out is also double.
It detects division by zero, setting those pixels to zero in the output.
Beware: it does this silently!
If the array of constants has just one element, that constant is used for
all image bands. If the array has more than one element and they have
the same number of elements as there are bands in the image, then
one array element is used for each band. If the arrays have more than one
element and the image only has a single band, the result is a many-band
image where each band corresponds to one array element.
See also: vips_math2(), vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="371"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="469">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="444">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="445">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="math2" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="446">math operation to perform</doc>
<type name="OperationMath2" c:type="VipsOperationMath2"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="447">array of constants</doc>
<array length="3" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="448">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="449">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="math2_const1"
c:identifier="vips_math2_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="539">This operation calculates various 2-ary maths operations on an image and
a constant. See vips_math2_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="380"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="550">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="541">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="542">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="math2" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="543">math operation to perform</doc>
<type name="OperationMath2" c:type="VipsOperationMath2"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="544">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="545">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="matrixinvert"
c:identifier="vips_matrixinvert"
introspectable="0">
<doc xml:space="preserve"
filename="mosaicing/matrixinvert.c"
line="467">This operation calculates the inverse of the matrix represented in @m.
The scale and offset members of the input matrix are ignored.
See also: vips_matrixload().</doc>
<source-position filename="include/vips/mosaicing.h" line="65"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/matrixinvert.c"
line="478">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="m" transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/matrixinvert.c"
line="469">matrix to invert</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="mosaicing/matrixinvert.c"
line="470">output matrix</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/matrixinvert.c"
line="471">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="matrixprint"
c:identifier="vips_matrixprint"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="389">Print @in to %stdout in matrix format. See vips_matrixload() for a
description of the format.
See also: vips_matrixload().</doc>
<source-position filename="include/vips/foreign.h" line="542"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="399">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="391">image to print</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="392">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="matrixsave"
c:identifier="vips_matrixsave"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="338">Write @in to @filename in matrix format. See vips_matrixload() for a
description of the format.
See also: vips_matrixload().</doc>
<source-position filename="include/vips/foreign.h" line="538"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="349">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="340">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="341">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="342">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="matrixsave_target"
c:identifier="vips_matrixsave_target"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="364">As vips_matrixsave(), but save to a target.
See also: vips_matrixsave().</doc>
<source-position filename="include/vips/foreign.h" line="540"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="374">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="366">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="target" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="367">save image to this target</doc>
<type c:type="VipsTarget*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/matrixsave.c"
line="368">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="max" c:identifier="vips_max" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/max.c"
line="493">Optional arguments:
* @x: horizontal position of maximum
* @y: vertical position of maximum
* @size: number of maxima to find
* @out_array: return array of maximum values
* @x_array: corresponding horizontal positions
* @y_array: corresponding vertical positions
This operation finds the maximum value in an image.
By default it finds the single largest value. If @size is set &gt;1, it will
find the @size largest values. It will stop searching early if has found
enough values.
Equal values will be sorted by y then x.
It operates on all
bands of the input image: use vips_stats() if you need to find an
maximum for each band.
For complex images, this operation finds the maximum modulus.
You can read out the position of the maximum with @x and @y. You can read
out arrays of the values and positions of the top @size maxima with
@out_array, @x_array and @y_array. These values are returned sorted from
largest to smallest.
If there are more than @size maxima, the maxima returned will be a random
selection of the maxima in the image.
See also: vips_min(), vips_stats().</doc>
<source-position filename="include/vips/arithmetic.h" line="394"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/max.c"
line="531">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/max.c"
line="495">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/max.c"
line="496">output pixel maximum</doc>
<type name="gdouble" c:type="double*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/max.c"
line="497">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="measure" c:identifier="vips_measure" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/measure.c"
line="255">Optional arguments:
* @left: area of image containing chart
* @top: area of image containing chart
* @width: area of image containing chart
* @height: area of image containing chart
Analyse a grid of colour patches, producing an array of patch averages.
The mask has a row for each measured patch and a column for each image
band. The operations issues a warning if any patch has a deviation more
than 20% of
the mean. Only the central 50% of each patch is averaged.
If the chart does not fill the whole image, use the optional @left, @top,
@width, @height arguments to indicate the
position of the chart.
See also: vips_avg(), vips_deviate().</doc>
<source-position filename="include/vips/arithmetic.h" line="398"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/measure.c"
line="282">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/measure.c"
line="257">image to measure</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/measure.c"
line="258">array of measurements</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="h" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/measure.c"
line="259">patches across chart</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="v" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/measure.c"
line="260">patches down chart</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/measure.c"
line="261">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="median" c:identifier="vips_median" introspectable="0">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="493">A convenience function equivalent to:
vips_rank( in, out, size, size, (size * size) / 2 );
See also: vips_rank().</doc>
<source-position filename="include/vips/morphology.h" line="53"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="506">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="495">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="496">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="size" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="497">size of region</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="498">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="min" c:identifier="vips_min" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/min.c"
line="494">Optional arguments:
* @x: horizontal position of minimum
* @y: vertical position of minimum
* @size: number of minima to find
* @out_array: return array of minimum values
* @x_array: corresponding horizontal positions
* @y_array: corresponding vertical positions
This operation finds the minimum value in an image.
By default it finds the single smallest value. If @size is set &gt;1, it will
find the @size smallest values. It will stop searching early if has found
enough values.
Equal values will be sorted by y then x.
It operates on all
bands of the input image: use vips_stats() if you need to find an
minimum for each band.
For complex images, this operation finds the minimum modulus.
You can read out the position of the minimum with @x and @y. You can read
out arrays of the values and positions of the top @size minima with
@out_array, @x_array and @y_array.
These values are returned sorted from
smallest to largest.
If there are more than @size minima, the minima returned will be a random
selection of the minima in the image.
See also: vips_min(), vips_stats().</doc>
<source-position filename="include/vips/arithmetic.h" line="392"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/min.c"
line="533">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/min.c"
line="496">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/min.c"
line="497">output pixel minimum</doc>
<type name="gdouble" c:type="double*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/min.c"
line="498">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="more_const"
c:identifier="vips_more_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="769">Perform #VIPS_OPERATION_RELATIONAL_MORE on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="296"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="780">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="771">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="772">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="773">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="774">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="775">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="more_const1"
c:identifier="vips_more_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="956">Perform #VIPS_OPERATION_RELATIONAL_MORE on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="313"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="966">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="958">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="959">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="960">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="961">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="moreeq_const"
c:identifier="vips_moreeq_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="796">Perform #VIPS_OPERATION_RELATIONAL_MOREEQ on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="299"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="807">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="798">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="799">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="800">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="801">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="802">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="moreeq_const1"
c:identifier="vips_moreeq_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="982">Perform #VIPS_OPERATION_RELATIONAL_MOREEQ on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="315"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="992">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="984">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="985">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="986">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="987">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="morph" c:identifier="vips_morph" introspectable="0">
<doc xml:space="preserve"
filename="morphology/morph.c"
line="840">Performs a morphological operation on @in using @mask as a
structuring element.
The image should have 0 (black) for no object and 255
(non-zero) for an object. Note that this is the reverse of the usual
convention for these operations, but more convenient when combined with the
boolean operators. The output image is the same
size as the input image: edge pxels are made by expanding the input image
as necessary.
Mask coefficients can be either 0 (for object) or 255 (for background)
or 128 (for do not care). The origin of the mask is at location
(m.xsize / 2, m.ysize / 2), integer division. All algorithms have been
based on the book "Fundamentals of Digital Image Processing" by A. Jain,
pp 384-388, Prentice-Hall, 1989.
For #VIPS_OPERATION_MORPHOLOGY_ERODE,
the whole mask must match for the output pixel to be
set, that is, the result is the logical AND of the selected input pixels.
For #VIPS_OPERATION_MORPHOLOGY_DILATE,
the output pixel is set if any part of the mask
matches, that is, the result is the logical OR of the selected input pixels.
See the boolean operations vips_andimage(), vips_orimage() and
vips_eorimage()
for analogues of the usual set difference and set union operations.
Operations are performed using the processor's vector unit,
if possible. Disable this with --vips-novector or VIPS_NOVECTOR.</doc>
<source-position filename="include/vips/morphology.h" line="47"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/morph.c"
line="879">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/morph.c"
line="842">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="morphology/morph.c"
line="843">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="mask" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/morph.c"
line="844">morphology with this mask</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="morph" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/morph.c"
line="845">operation to perform</doc>
<type name="OperationMorphology" c:type="VipsOperationMorphology"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/morph.c"
line="846">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="msb" c:identifier="vips_msb" introspectable="0">
<doc xml:space="preserve"
filename="conversion/msb.c"
line="264">Optional arguments:
* @band: %gint, msb just this band
Turn any integer image to 8-bit unsigned char by discarding all but the most
significant byte. Signed values are converted to unsigned by adding 128.
Use @band to make a one-band 8-bit image.
This operator also works for LABQ coding.
See also: vips_scale(), vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="227"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/msb.c"
line="283">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/msb.c"
line="266">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/msb.c"
line="267">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/msb.c"
line="268">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="niftisave"
c:identifier="vips_niftisave"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/niftisave.c"
line="451">Write a VIPS image to a file in NIFTI format.
Use the various NIFTI suffixes to pick the nifti save format.
See also: vips_image_write_to_file(), vips_niftiload().</doc>
<source-position filename="include/vips/foreign.h" line="647"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/niftisave.c"
line="463">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/niftisave.c"
line="453">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/niftisave.c"
line="454">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/niftisave.c"
line="455">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="notequal_const"
c:identifier="vips_notequal_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="687">Perform #VIPS_OPERATION_RELATIONAL_NOTEQ on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="287"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="698">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="689">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="690">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="691">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="692">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="693">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="notequal_const1"
c:identifier="vips_notequal_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="878">Perform #VIPS_OPERATION_RELATIONAL_NOTEQ on an image and a constant. See
vips_relational_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="307"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="888">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="880">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="881">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="882">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="883">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="orimage_const"
c:identifier="vips_orimage_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="654">Perform #VIPS_OPERATION_BOOLEAN_OR on an image and an array of constants.
See vips_boolean_const().
See also: vips_boolean(), vips_boolean_const1().</doc>
<source-position filename="include/vips/arithmetic.h" line="338"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="667">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="656">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="657">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="658">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="659">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="660">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="orimage_const1"
c:identifier="vips_orimage_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="829">Perform #VIPS_OPERATION_BOOLEAN_OR on an image and a constant.
See vips_boolean_const1().
See also: vips_boolean(), vips_boolean_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="355"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="841">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="831">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="832">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="833">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="834">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="percent" c:identifier="vips_percent" introspectable="0">
<doc xml:space="preserve"
filename="histogram/percent.c"
line="136">vips_percent() returns (through the @threshold parameter) the threshold
below which there are @percent values of @in. For example:
|[
$ vips precent k2.jpg 90
214
]|
Means that 90% of pixels in `k2.jpg` have a value less than 214.
The function works for uchar and ushort images only. It can be used
to threshold the scaled result of a filtering operation.
See also: vips_hist_find(), vips_profile().</doc>
<source-position filename="include/vips/histogram.h" line="43"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/percent.c"
line="158">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/percent.c"
line="138">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="percent" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/percent.c"
line="139">threshold percentage</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="threshold"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/percent.c"
line="140">output threshold value</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/percent.c"
line="141">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="pngsave" c:identifier="vips_pngsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="417">Optional arguments:
* @compression: %gint, compression level
* @interlace: %gboolean, interlace image
* @profile: %gchararray, ICC profile to embed
* @filter: #VipsForeignPngFilter row filter flag(s)
* @palette: %gboolean, enable quantisation to 8bpp palette
* @Q: %gint, quality for 8bpp quantisation
* @dither: %gdouble, amount of dithering for 8bpp quantization
* @bitdepth: %int, set write bit depth to 1, 2, 4 or 8
Write a VIPS image to a file as PNG.
@compression means compress with this much effort (0 - 9). Default 6.
Set @interlace to %TRUE to interlace the image with ADAM7
interlacing. Beware
than an interlaced PNG can be up to 7 times slower to write than a
non-interlaced image.
Use @profile to give the filename of a profile to be embedded in the PNG.
This does not affect the pixels which are written, just the way
they are tagged. See vips_profile_load() for details on profile naming.
If @profile is specified and the VIPS header
contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the
profile from the VIPS header will be attached.
Use @filter to specify one or more filters (instead of adaptive filtering),
see #VipsForeignPngFilter.
The image is automatically converted to RGB, RGBA, Monochrome or Mono +
alpha before saving. Images with more than one byte per band element are
saved as 16-bit PNG, others are saved as 8-bit PNG.
Set @palette to %TRUE to enable palette mode for RGB or RGBA images. A
palette will be computed with enough space for @bitdepth (1, 2, 4 or 8)
bits. Use @Q to set the optimisation effort, and @dither to set the degree of
Floyd-Steinberg dithering.
This feature requires libvips to be compiled with libimagequant.
You can also set @bitdepth for mono and mono + alpha images, and the image
will be quantized.
XMP metadata is written to the XMP chunk. PNG comments are written to
separate text chunks.
See also: vips_image_new_from_file().</doc>
<source-position filename="include/vips/foreign.h" line="583"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="472">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="419">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="420">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="421">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="pngsave_buffer"
c:identifier="vips_pngsave_buffer"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="487">Optional arguments:
* @compression: %gint, compression level
* @interlace: %gboolean, interlace image
* @profile: %gchararray, ICC profile to embed
* @filter: #VipsForeignPngFilter row filter flag(s)
* @palette: %gboolean, enable quantisation to 8bpp palette
* @Q: %gint, quality for 8bpp quantisation
* @dither: %gdouble, amount of dithering for 8bpp quantization
* @bitdepth: %int, set write bit depth to 1, 2, 4 or 8
As vips_pngsave(), but save to a memory buffer.
The address of the buffer is returned in @buf, the length of the buffer in
@len. You are responsible for freeing the buffer with g_free() when you
are done with it.
See also: vips_pngsave(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="585"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="513">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="489">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="buf" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="490">return output buffer here</doc>
<array length="1" zero-terminated="0" c:type="void**">
<type name="guint8"/>
</array>
</parameter>
<parameter name="len" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="491">return output length here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="492">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="pngsave_target"
c:identifier="vips_pngsave_target"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="543">Optional arguments:
* @compression: compression level
* @interlace: interlace image
* @profile: ICC profile to embed
* @filter: libpng row filter flag(s)
* @palette: enable quantisation to 8bpp palette
* @Q: quality for 8bpp quantisation
* @dither: amount of dithering for 8bpp quantization
* @bitdepth: %int, set write bit depth to 1, 2, 4 or 8
As vips_pngsave(), but save to a target.
See also: vips_pngsave(), vips_image_write_to_target().</doc>
<source-position filename="include/vips/foreign.h" line="581"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="564">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="545">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="target" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="546">save image to this target</doc>
<type c:type="VipsTarget*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/pngsave.c"
line="547">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="polar" c:identifier="vips_polar" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="301">Perform #VIPS_OPERATION_COMPLEX_POLAR on an image. See vips_complex().</doc>
<source-position filename="include/vips/arithmetic.h" line="242"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="309">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="303">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="304">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="305">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="pow_const"
c:identifier="vips_pow_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="485">Perform #VIPS_OPERATION_MATH2_POW on an image and a constant. See
vips_math2_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="374"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="496">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="487">left-hand input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="488">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="489">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="490">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="491">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="pow_const1"
c:identifier="vips_pow_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="566">Perform #VIPS_OPERATION_MATH2_POW on an image and a constant. See
vips_math2_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="383"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="576">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="568">left-hand input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="569">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="570">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="571">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="ppmsave" c:identifier="vips_ppmsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="531">Optional arguments:
* @ascii: save as ASCII rather than binary
* @squash: squash 8-bit images down to one bit
Write a VIPS image to a file as PPM. It can write 1, 8, 16 or
32 bit unsigned integer images, float images, colour or monochrome,
stored as binary or ASCII.
Integer images of more than 8 bits can only be stored in ASCII.
When writing float (PFM) images the scale factor is set from the
"pfm-scale" metadata.
Set @ascii to %TRUE to write as human-readable ASCII. Normally data is
written in binary.
Set @squash to %TRUE to squash 8-bit images down to one bit. The saver does
no dithering, that's up to you.
See also: vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="592"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="558">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="533">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="534">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="535">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="ppmsave_target"
c:identifier="vips_ppmsave_target"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="573">As vips_ppmsave(), but save to a target.
See also: vips_ppmsave().</doc>
<source-position filename="include/vips/foreign.h" line="594"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="583">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="575">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="target" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="576">save image to this target</doc>
<type c:type="VipsTarget*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/ppmsave.c"
line="577">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="premultiply"
c:identifier="vips_premultiply"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/premultiply.c"
line="280">Optional arguments:
* @max_alpha: %gdouble, maximum value for alpha
Premultiplies any alpha channel.
The final band is taken to be the alpha
and the bands are transformed as:
|[
alpha = clip( 0, in[in.bands - 1], @max_alpha );
norm = alpha / @max_alpha;
out = [in[0] * norm, ..., in[in.bands - 1] * norm, alpha];
]|
So for an N-band image, the first N - 1 bands are multiplied by the clipped
and normalised final band, the final band is clipped.
If there is only a single band,
the image is passed through unaltered.
The result is
#VIPS_FORMAT_FLOAT unless the input format is #VIPS_FORMAT_DOUBLE, in which
case the output is double as well.
@max_alpha has the default value 255, or 65535 for images tagged as
#VIPS_INTERPRETATION_RGB16 or
#VIPS_INTERPRETATION_GREY16.
Non-complex images only.
See also: vips_unpremultiply(), vips_flatten().</doc>
<source-position filename="include/vips/conversion.h" line="272"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/premultiply.c"
line="317">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/premultiply.c"
line="282">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/premultiply.c"
line="283">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/premultiply.c"
line="284">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="profile" c:identifier="vips_profile" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/profile.c"
line="318">vips_profile() searches inward from the edge of @in and finds the
first non-zero pixel. Pixels in @columns have the distance from the top edge
to the first non-zero pixel in that column, @rows has the distance from the
left edge to the first non-zero pixel in that row.
See also: vips_project(), vips_hist_find().</doc>
<source-position filename="include/vips/arithmetic.h" line="418"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/profile.c"
line="332">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/profile.c"
line="320">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="columns"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/profile.c"
line="321">distances from top edge</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="rows"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/profile.c"
line="322">distances from left edge</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/profile.c"
line="323">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="project" c:identifier="vips_project" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/project.c"
line="348">Find the horizontal and vertical projections of an image, ie. the sum
of every row of pixels, and the sum of every column of pixels. The output
format is uint, int or double, depending on the input format.
Non-complex images only.
See also: vips_hist_find(), vips_profile().</doc>
<source-position filename="include/vips/arithmetic.h" line="416"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/project.c"
line="363">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/project.c"
line="350">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="columns"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/project.c"
line="351">sums of columns</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="rows"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/project.c"
line="352">sums of rows</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/project.c"
line="353">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="quadratic"
c:identifier="vips_quadratic"
introspectable="0">
<doc xml:space="preserve"
filename="resample/quadratic.c"
line="363">Optional arguments:
* @interpolate: use this interpolator (default bilinear)
This operation is unfinished and unusable, sorry.
See also: vips_affine().</doc>
<source-position filename="include/vips/resample.h" line="100"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/quadratic.c"
line="378">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/quadratic.c"
line="365">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/quadratic.c"
line="366">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="coeff" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/quadratic.c"
line="367">horizontal quadratic</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/quadratic.c"
line="368">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rad2float"
c:identifier="vips_rad2float"
introspectable="0">
<doc xml:space="preserve"
filename="colour/rad2float.c"
line="200">Unpack a RAD (#VIPS_CODING_RAD) image to a three-band float image.
See also: vips_float2rad(), vips_LabQ2LabS().</doc>
<source-position filename="include/vips/colour.h" line="117"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/rad2float.c"
line="210">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/rad2float.c"
line="202">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/rad2float.c"
line="203">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/rad2float.c"
line="204">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="radsave" c:identifier="vips_radsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="290">Write a VIPS image in Radiance (HDR) format.
Sections of this reader from Greg Ward and Radiance with kind permission.
See also: vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="606"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="302">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="292">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="293">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="294">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="radsave_buffer"
c:identifier="vips_radsave_buffer"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="317">As vips_radsave(), but save to a memory buffer.
The address of the buffer is returned in @buf, the length of the buffer in
@len. You are responsible for freeing the buffer with g_free() when you
are done with it.
See also: vips_radsave(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="608"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="332">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="319">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="buf" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="320">return output buffer here</doc>
<array length="1" zero-terminated="0" c:type="void**">
<type name="guint8"/>
</array>
</parameter>
<parameter name="len" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="321">return output length here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="322">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="radsave_target"
c:identifier="vips_radsave_target"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="362">As vips_radsave(), but save to a target.
See also: vips_radsave().</doc>
<source-position filename="include/vips/foreign.h" line="610"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="372">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="364">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="target" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="365">save image to this target</doc>
<type c:type="VipsTarget*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/radsave.c"
line="366">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rank" c:identifier="vips_rank" introspectable="0">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="449">vips_rank() does rank filtering on an image. A window of size @width by
@height is passed over the image. At each position, the pixels inside the
window are sorted into ascending order and the pixel at position @index is
output. @index numbers from 0.
It works for any non-complex image type, with any number of bands.
The input is expanded by copying edge pixels before performing the
operation so that the output image has the same size as the input.
Edge pixels in the output image are therefore only approximate.
For a median filter with mask size m (3 for 3x3, 5 for 5x5, etc.) use
vips_rank( in, out, m, m, m * m / 2 );
The special cases n == 0 and n == m * m - 1 are useful dilate and
expand operators.
See also: vips_conv(), vips_median(), vips_spcor().</doc>
<source-position filename="include/vips/morphology.h" line="50"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="477">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="451">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="452">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="453">width of region</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="454">height of region</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="index" transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="455">select pixel</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="morphology/rank.c"
line="456">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rawsave" c:identifier="vips_rawsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="167">Writes the pixels in @in to the file @filename with no header or other
metadata.
See also: vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="520"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="178">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="169">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="170">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="171">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rawsave_fd"
c:identifier="vips_rawsave_fd"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="276">Writes the pixels in @in to the @fd with no header or other
metadata. Handy for implementing other savers.
See also: vips_rawsave().</doc>
<source-position filename="include/vips/foreign.h" line="522"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="287">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="278">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="fd" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="279">file to write to</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/rawsave.c"
line="280">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="real" c:identifier="vips_real" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="812">Perform #VIPS_OPERATION_COMPLEXGET_REAL on an image. See vips_complexget().</doc>
<source-position filename="include/vips/arithmetic.h" line="258"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="820">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="814">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="815">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="816">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="recomb" c:identifier="vips_recomb" introspectable="0">
<doc xml:space="preserve"
filename="conversion/recomb.c"
line="224">This operation recombines an image's bands. Each pixel in @in is treated as
an n-element vector, where n is the number of bands in @in, and multipled by
the n x m matrix @m to produce the m-band image @out.
@out is always float, unless @in is double, in which case @out is double
too. No complex images allowed.
It's useful for various sorts of colour space conversions.
See also: vips_bandmean().</doc>
<source-position filename="include/vips/conversion.h" line="259"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/recomb.c"
line="242">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/recomb.c"
line="226">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/recomb.c"
line="227">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="m" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/recomb.c"
line="228">recombination matrix</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/recomb.c"
line="229">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rect" c:identifier="vips_rect" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="324">Perform #VIPS_OPERATION_COMPLEX_RECT on an image. See vips_complex().</doc>
<source-position filename="include/vips/arithmetic.h" line="244"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="332">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="326">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="327">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/complex.c"
line="328">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="reduce" c:identifier="vips_reduce" introspectable="0">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="238">Optional arguments:
* @kernel: #VipsKernel to use to interpolate (default: lanczos3)
Reduce @in by a pair of factors with a pair of 1D kernels. This
will not work well for shrink factors greater than three.
This is a very low-level operation: see vips_resize() for a more
convenient way to resize images.
This operation does not change xres or yres. The image resolution needs to
be updated by the application.
See also: vips_resize(), vips_affine().</doc>
<source-position filename="include/vips/resample.h" line="67"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="261">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="240">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="241">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="hshrink" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="242">horizontal shrink</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="vshrink" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="243">vertical shrink</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="244">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="reduceh" c:identifier="vips_reduceh" introspectable="0">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="98">Optional arguments:
* @kernel: #VipsKernel to use to interpolate (default: lanczos3)
Reduce @in horizontally by a float factor. The pixels in @out are
interpolated with a 1D mask generated by @kernel.
This is a very low-level operation: see vips_resize() for a more
convenient way to resize images.
This operation does not change xres or yres. The image resolution needs to
be updated by the application.
See also: vips_shrink(), vips_resize(), vips_affine().</doc>
<source-position filename="include/vips/resample.h" line="70"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="120">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="100">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="101">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="hshrink" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="102">horizontal reduce</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="103">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="reducev" c:identifier="vips_reducev" introspectable="0">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="73">Optional arguments:
* @kernel: #VipsKernel to use to interpolate (default: lanczos3)
Reduce @in vertically by a float factor. The pixels in @out are
interpolated with a 1D mask generated by @kernel.
This is a very low-level operation: see vips_resize() for a more
convenient way to resize images.
This operation does not change xres or yres. The image resolution needs to
be updated by the application.
See also: vips_shrink(), vips_resize(), vips_affine().</doc>
<source-position filename="include/vips/resample.h" line="72"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="95">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="75">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="76">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="vshrink" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="77">vertical reduce</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/reduce.c"
line="78">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="relational_const"
c:identifier="vips_relational_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="621">Perform various relational operations on an image and an array of
constants.
The output type is always uchar, with 0 for FALSE and 255 for TRUE.
If the array of constants has just one element, that constant is used for
all image bands. If the array has more than one element and they have
the same number of elements as there are bands in the image, then
one array element is used for each band. If the arrays have more than one
element and the image only has a single band, the result is a many-band
image where each band corresponds to one array element.
See also: vips_boolean(), vips_relational().</doc>
<source-position filename="include/vips/arithmetic.h" line="281"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="644">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="623">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="624">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="relational" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="625">relational operation to perform</doc>
<type name="OperationRelational" c:type="VipsOperationRelational"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="626">array of constants</doc>
<array length="3" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="627">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="628">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="relational_const1"
c:identifier="vips_relational_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="823">Perform various relational operations on an image and a constant. See
vips_relational_const().
See also: vips_boolean(), vips_relational().</doc>
<source-position filename="include/vips/arithmetic.h" line="302"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="836">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="825">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="826">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="relational" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="827">relational operation to perform</doc>
<type name="OperationRelational" c:type="VipsOperationRelational"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="828">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/relational.c"
line="829">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="remainder_const"
c:identifier="vips_remainder_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="355">This operation calculates @in % @c (remainder after division by an
array of constants)
and writes the result to @out.
The image may have any
non-complex format. For float formats, vips_remainder_const() calculates
@in - @c * floor (@in / @c).
If the array of constants has just one element, that constant is used for
all image bands. If the array has more than one element and they have
the same number of elements as there are bands in the image, then
one array element is used for each band. If the arrays have more than one
element and the image only has a single band, the result is a many-band
image where each band corresponds to one array element.
See also: vips_remainder(), vips_divide(), vips_round().</doc>
<source-position filename="include/vips/arithmetic.h" line="194"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="379">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="357">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="358">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="359">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="360">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="361">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="remainder_const1"
c:identifier="vips_remainder_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="395">This operation calculates @in % @c (remainder after division by a
constant)
and writes the result to @out.
The image may have any
non-complex format. For float formats, vips_remainder_const() calculates
@in - @c * floor (@in / @c).
If the array of constants has just one element, that constant is used for
all image bands. If the array has more than one element and they have
the same number of elements as there are bands in the image, then
one array element is used for each band. If the arrays have more than one
element and the image only has a single band, the result is a many-band
image where each band corresponds to one array element.
See also: vips_remainder(), vips_divide(), vips_round().</doc>
<source-position filename="include/vips/arithmetic.h" line="197"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="418">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="397">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="398">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="399">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/remainder.c"
line="400">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="remosaic" c:identifier="vips_remosaic" introspectable="0">
<doc xml:space="preserve"
filename="mosaicing/remosaic.c"
line="198">vips_remosaic() works rather as vips_globalbalance(). It takes apart the
mosaiced image @in and rebuilds it, substituting images.
Unlike vips_globalbalance(), images are substituted based on their file‐
names. The rightmost occurrence of the string @old_str is swapped
for @new_str, that file is opened, and that image substituted for
the old image.
It's convenient for multispectral images. You can mosaic one band, then
use that mosaic as a template for mosaicing the others automatically.
See also: vips_globalbalance().</doc>
<source-position filename="include/vips/mosaicing.h" line="61"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/remosaic.c"
line="219">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/remosaic.c"
line="200">mosaic to rebuild</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="mosaicing/remosaic.c"
line="201">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="old_str" transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/remosaic.c"
line="202">gamma of source images</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="new_str" transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/remosaic.c"
line="203">gamma of source images</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="mosaicing/remosaic.c"
line="204">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="reorder_margin_hint"
c:identifier="vips_reorder_margin_hint">
<doc xml:space="preserve"
filename="iofuncs/reorder.c"
line="349">vips_reorder_margin_hint() sets a hint that @image contains a margin, that
is, that each vips_region_prepare() on @image will request a slightly larger
region from it's inputs. A good value for @margin is (width * height) for
the window the operation uses.
This information is used by vips_image_prepare_many() to attempt to reorder
computations to minimise recomputation.
See also: vips_image_prepare_many().</doc>
<source-position filename="include/vips/image.h" line="523"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/reorder.c"
line="351">the image to hint on</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="margin" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/reorder.c"
line="352">the size of the margin this operation has added</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
</method>
<method name="reorder_prepare_many"
c:identifier="vips_reorder_prepare_many">
<doc xml:space="preserve"
filename="iofuncs/reorder.c"
line="315">vips_reorder_prepare_many() runs vips_region_prepare() on each region in
@regions, requesting the pixels in @r.
It tries to request the regions in the order which will cause least
recomputation. This can give a large speedup, in some cases.
See also: vips_region_prepare(), vips_reorder_margin_hint().</doc>
<source-position filename="include/vips/image.h" line="521"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/reorder.c"
line="329">0 on success, or -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="image" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/reorder.c"
line="317">the image that's being written</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="regions" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/reorder.c"
line="318">the set of regions to prepare</doc>
<array zero-terminated="0" c:type="_VipsRegion**">
<type name="Region"/>
</array>
</parameter>
<parameter name="r" transfer-ownership="none">
<doc xml:space="preserve"
filename="iofuncs/reorder.c"
line="319">the #VipsRect to prepare on each region</doc>
<type name="Rect" c:type="VipsRect*"/>
</parameter>
</parameters>
</method>
<method name="replicate"
c:identifier="vips_replicate"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/replicate.c"
line="222">Repeats an image many times.
See also: vips_extract_area().</doc>
<source-position filename="include/vips/conversion.h" line="176"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/replicate.c"
line="234">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/replicate.c"
line="224">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/replicate.c"
line="225">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="across" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/replicate.c"
line="226">repeat input this many times across</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="down" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/replicate.c"
line="227">repeat input this many times down</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/replicate.c"
line="228">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="resize" c:identifier="vips_resize" introspectable="0">
<doc xml:space="preserve"
filename="resample/resize.c"
line="387">Optional arguments:
* @vscale: %gdouble vertical scale factor
* @kernel: #VipsKernel to reduce with
Resize an image.
When downsizing, the
image is block-shrunk with vips_shrink(),
then the image is shrunk again to the
target size with vips_reduce(). How much is done by vips_shrink() vs.
vips_reduce() varies with the @kernel setting. Downsizing is done with
centre convention.
vips_resize() normally uses #VIPS_KERNEL_LANCZOS3 for the final reduce, you
can change this with @kernel.
When upsizing (@scale &gt; 1), the operation uses vips_affine() with
a #VipsInterpolate selected depending on @kernel. It will use
#VipsInterpolateBicubic for #VIPS_KERNEL_CUBIC and above. It adds a
0.5 pixel displacement to the input pixels to get centre convention scaling.
vips_resize() normally maintains the image aspect ratio. If you set
@vscale, that factor is used for the vertical scale and @scale for the
horizontal.
If either axis would drop below 1px in size, the shrink in that dimension
is limited. This breaks the image aspect ratio, but prevents errors due to
fractional pixel sizes.
This operation does not change xres or yres. The image resolution needs to
be updated by the application.
This operation does not premultiply alpha. If your image has an alpha
channel, you should use vips_premultiply() on it first.
See also: vips_premultiply(), vips_shrink(), vips_reduce().</doc>
<source-position filename="include/vips/resample.h" line="94"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/resize.c"
line="432">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/resize.c"
line="389">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/resize.c"
line="390">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="scale" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/resize.c"
line="391">scale factor</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/resize.c"
line="392">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rint" c:identifier="vips_rint" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="268">Round to an integral value with #VIPS_OPERATION_ROUND_RINT. See
vips_round().</doc>
<source-position filename="include/vips/arithmetic.h" line="212"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="277">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="270">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="271">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="272">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rot" c:identifier="vips_rot" introspectable="0">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="385">Rotate @in by a multiple of 90 degrees.
Use vips_similarity() to rotate by an arbitary angle. vips_rot45() is
useful for rotating convolution masks by 45 degrees.
See also: vips_flip(), vips_similarity(), vips_rot45().</doc>
<source-position filename="include/vips/conversion.h" line="185"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="399">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="387">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="388">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="angle" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="389">rotation angle</doc>
<type name="Angle" c:type="VipsAngle"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="390">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rot180" c:identifier="vips_rot180" introspectable="0">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="439">Rotate @in by 180 degress. A convenience function over vips_rot().
See also: vips_rot().</doc>
<source-position filename="include/vips/conversion.h" line="189"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="449">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="441">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="442">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="443">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rot270" c:identifier="vips_rot270" introspectable="0">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="464">Rotate @in by 270 degress clockwise. A convenience function over vips_rot().
See also: vips_rot().</doc>
<source-position filename="include/vips/conversion.h" line="191"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="474">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="466">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="467">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot.c"
line="468">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rot45" c:identifier="vips_rot45" introspectable="0">
<doc xml:space="preserve"
filename="conversion/rot45.c"
line="286">Optional arguments:
* @angle: #VipsAngle45 rotation angle
Rotate @in by a multiple of 45 degrees. Odd-length sides and square images
only.
This operation is useful for rotating convolution masks. Use
vips_similarity() to rotate images by arbitrary angles.
See also: vips_rot(), vips_similarity().</doc>
<source-position filename="include/vips/conversion.h" line="193"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot45.c"
line="304">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot45.c"
line="288">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/rot45.c"
line="289">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/rot45.c"
line="290">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rotate" c:identifier="vips_rotate" introspectable="0">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="293">Optional arguments:
* @interpolate: #VipsInterpolate, interpolate pixels with this
* @background: #VipsArrayDouble colour for new pixels
* @idx: %gdouble, input horizontal offset
* @idy: %gdouble, input vertical offset
* @odx: %gdouble, output horizontal offset
* @ody: %gdouble, output vertical offset
* @ody: %gdouble, output vertical offset
This operator calls vips_affine() for you, calculating the matrix for the
affine transform from @scale and @angle. Other parameters are passed on to
vips_affine() unaltered.
See also: vips_affine(), #VipsInterpolate.</doc>
<source-position filename="include/vips/resample.h" line="88"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="316">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="295">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="296">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="angle" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="297">%gdouble, rotate by this many degrees clockwise</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="298">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="round" c:identifier="vips_round" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="188">Round to an integral value.
Copy for integer types, round float and
complex types.
The format of @out is always the same as @in, so you may wish to cast to an
integer format afterwards.
See also: vips_cast()</doc>
<source-position filename="include/vips/arithmetic.h" line="206"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="205">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="190">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="191">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="round" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="192">#VipsOperationRound rounding operation to perform</doc>
<type name="OperationRound" c:type="VipsOperationRound"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/round.c"
line="193">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rshift_const"
c:identifier="vips_rshift_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="743">Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on an image and an array of constants.
See vips_boolean_const().
See also: vips_boolean(), vips_boolean_const1().</doc>
<source-position filename="include/vips/arithmetic.h" line="347"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="756">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="745">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="746">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="747">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="748">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="749">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="rshift_const1"
c:identifier="vips_rshift_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="913">Perform #VIPS_OPERATION_BOOLEAN_RSHIFT on an image and a constant.
See vips_boolean_const1().
See also: vips_boolean(), vips_boolean_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="361"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="925">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="915">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="916">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="917">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/boolean.c"
line="918">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="sRGB2HSV" c:identifier="vips_sRGB2HSV" introspectable="0">
<doc xml:space="preserve"
filename="colour/sRGB2HSV.c"
line="155">Convert to HSV.
HSV is a crude polar coordinate system for RGB images. It is provided for
compatibility with other image processing systems. See vips_Lab2LCh() for a
much better colour space.
See also: vips_HSV2sRGB(), vips_Lab2LCh().</doc>
<source-position filename="include/vips/colour.h" line="154"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/sRGB2HSV.c"
line="169">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/sRGB2HSV.c"
line="157">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/sRGB2HSV.c"
line="158">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/sRGB2HSV.c"
line="159">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="sRGB2scRGB"
c:identifier="vips_sRGB2scRGB"
introspectable="0">
<doc xml:space="preserve"
filename="colour/sRGB2scRGB.c"
line="302">Convert an sRGB image to scRGB. The input image can be 8 or 16-bit.
If the input image is tagged as #VIPS_INTERPRETATION_RGB16, any extra
channels after RGB are divided by 256. Thus, scRGB alpha is
always 0 - 255.99.
See also: vips_scRGB2XYZ(), vips_scRGB2sRGB(), vips_rad2float().</doc>
<source-position filename="include/vips/colour.h" line="148"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/sRGB2scRGB.c"
line="316">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/sRGB2scRGB.c"
line="304">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/sRGB2scRGB.c"
line="305">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/sRGB2scRGB.c"
line="306">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="scRGB2BW" c:identifier="vips_scRGB2BW" introspectable="0">
<doc xml:space="preserve"
filename="colour/scRGB2BW.c"
line="263">Optional arguments:
* @depth: depth of output image in bits
Convert an scRGB image to greyscale. Set @depth to 16 to get 16-bit output.
If @depth is 16, any extra channels after RGB are
multiplied by 256.
See also: vips_LabS2LabQ(), vips_sRGB2scRGB(), vips_rad2float().</doc>
<source-position filename="include/vips/colour.h" line="146"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/scRGB2BW.c"
line="280">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/scRGB2BW.c"
line="265">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/scRGB2BW.c"
line="266">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/scRGB2BW.c"
line="267">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="scRGB2XYZ"
c:identifier="vips_scRGB2XYZ"
introspectable="0">
<doc xml:space="preserve"
filename="colour/scRGB2XYZ.c"
line="103">Turn XYZ to scRGB.</doc>
<source-position filename="include/vips/colour.h" line="150"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/scRGB2XYZ.c"
line="111">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/scRGB2XYZ.c"
line="105">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/scRGB2XYZ.c"
line="106">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/scRGB2XYZ.c"
line="107">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="scRGB2sRGB"
c:identifier="vips_scRGB2sRGB"
introspectable="0">
<doc xml:space="preserve"
filename="colour/scRGB2sRGB.c"
line="291">Optional arguments:
* @depth: depth of output image in bits
Convert an scRGB image to sRGB. Set @depth to 16 to get 16-bit output.
If @depth is 16, any extra channels after RGB are
multiplied by 256.
See also: vips_LabS2LabQ(), vips_sRGB2scRGB(), vips_rad2float().</doc>
<source-position filename="include/vips/colour.h" line="144"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/scRGB2sRGB.c"
line="308">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/scRGB2sRGB.c"
line="293">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="colour/scRGB2sRGB.c"
line="294">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="colour/scRGB2sRGB.c"
line="295">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="scale" c:identifier="vips_scale" introspectable="0">
<doc xml:space="preserve"
filename="conversion/scale.c"
line="182">Optional arguments:
* @log: log scale pixels
* @exp: exponent for log scale
Search the image for the maximum and minimum value, then return the image
as unsigned 8-bit, scaled so that the maximum value is 255 and the
minimum is zero.
If @log is set, transform with log10(1.0 + pow(x, @exp)) + .5,
then scale so max == 255. By default, @exp is 0.25.
See also: vips_cast().</doc>
<source-position filename="include/vips/conversion.h" line="225"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/scale.c"
line="202">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/scale.c"
line="184">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/scale.c"
line="185">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/scale.c"
line="186">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="sequential"
c:identifier="vips_sequential"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/sequential.c"
line="273">Optional arguments:
* @strip_height: height of cache strips
This operation behaves rather like vips_copy() between images
@in and @out, except that it checks that pixels on @in are only requested
top-to-bottom. This operation is useful for loading file formats which are
strictly top-to-bottom, like PNG.
@strip_height can be used to set the size of the tiles that
vips_sequential() uses. The default value is 1.
See also: vips_cache(), vips_linecache(), vips_tilecache().</doc>
<source-position filename="include/vips/conversion.h" line="143"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/sequential.c"
line="293">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/sequential.c"
line="275">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/sequential.c"
line="276">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/sequential.c"
line="277">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="sharpen" c:identifier="vips_sharpen" introspectable="0">
<doc xml:space="preserve"
filename="convolution/sharpen.c"
line="392">Optional arguments:
* @sigma: sigma of gaussian
* @x1: flat/jaggy threshold
* @y2: maximum amount of brightening
* @y3: maximum amount of darkening
* @m1: slope for flat areas
* @m2: slope for jaggy areas
Selectively sharpen the L channel of a LAB image. The input image is
transformed to #VIPS_INTERPRETATION_LABS.
The operation performs a gaussian blur and subtracts from @in to generate a
high-frequency signal. This signal is passed through a lookup table formed
from the five parameters and added back to @in.
The lookup table is formed like this:
|[
. ^
. y2 |- - - - - -----------
. | /
. | / slope m2
. | .../
. -x1 | ... |
. -------------------...----------------------&gt;
. | ... | x1
. |... slope m1
. / |
. / m2 |
. / |
. / |
. / |
. / |
. ______/ _ _ _ _ _ _ | -y3
. |
]|
For screen output, we suggest the following settings (the defaults):
|[
sigma == 0.5
x1 == 2
y2 == 10 (don't brighten by more than 10 L*)
y3 == 20 (can darken by up to 20 L*)
m1 == 0 (no sharpening in flat areas)
m2 == 3 (some sharpening in jaggy areas)
]|
If you want more or less sharpening, we suggest you just change the
m2 parameter.
The @sigma parameter changes the width of the fringe and can be
adjusted according to the output printing resolution. As an approximate
guideline, use 0.5 for 4 pixels/mm (display resolution),
1.0 for 12 pixels/mm and 1.5 for 16 pixels/mm (300 dpi == 12
pixels/mm). These figures refer to the image raster, not the half-tone
resolution.
See also: vips_conv().</doc>
<source-position filename="include/vips/convolution.h" line="65"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/sharpen.c"
line="459">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/sharpen.c"
line="394">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/sharpen.c"
line="395">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/sharpen.c"
line="396">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="shrink" c:identifier="vips_shrink" introspectable="0">
<doc xml:space="preserve"
filename="resample/shrink.c"
line="173">Shrink @in by a pair of factors with a simple box filter. For non-integer
factors, vips_shrink() will first shrink by the integer part with a box
filter, then use vips_reduce() to shrink by the
remaining fractional part.
This is a very low-level operation: see vips_resize() for a more
convenient way to resize images.
This operation does not change xres or yres. The image resolution needs to
be updated by the application.
See also: vips_resize(), vips_reduce().</doc>
<source-position filename="include/vips/resample.h" line="59"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrink.c"
line="194">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrink.c"
line="175">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/shrink.c"
line="176">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="hshrink" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrink.c"
line="177">horizontal shrink</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="vshrink" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrink.c"
line="178">vertical shrink</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrink.c"
line="179">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="shrinkh" c:identifier="vips_shrinkh" introspectable="0">
<doc xml:space="preserve"
filename="resample/shrinkh.c"
line="340">Shrink @in horizontally by an integer factor. Each pixel in the output is
the average of the corresponding line of @hshrink pixels in the input.
This is a very low-level operation: see vips_resize() for a more
convenient way to resize images.
This operation does not change xres or yres. The image resolution needs to
be updated by the application.
See also: vips_shrinkv(), vips_shrink(), vips_resize(), vips_affine().</doc>
<source-position filename="include/vips/resample.h" line="62"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrinkh.c"
line="358">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrinkh.c"
line="342">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/shrinkh.c"
line="343">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="hshrink" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrinkh.c"
line="344">horizontal shrink</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrinkh.c"
line="345">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="shrinkv" c:identifier="vips_shrinkv" introspectable="0">
<doc xml:space="preserve"
filename="resample/shrinkv.c"
line="470">Shrink @in vertically by an integer factor. Each pixel in the output is
the average of the corresponding column of @vshrink pixels in the input.
This is a very low-level operation: see vips_resize() for a more
convenient way to resize images.
This operation does not change xres or yres. The image resolution needs to
be updated by the application.
See also: vips_shrinkh(), vips_shrink(), vips_resize(), vips_affine().</doc>
<source-position filename="include/vips/resample.h" line="64"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrinkv.c"
line="488">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrinkv.c"
line="472">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/shrinkv.c"
line="473">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="vshrink" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrinkv.c"
line="474">vertical shrink</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/shrinkv.c"
line="475">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="sign" c:identifier="vips_sign" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/sign.c"
line="164">Finds the unit vector in the direction of the pixel value. For non-complex
images, it returns a signed char image with values -1, 0, and 1 for negative,
zero and positive pixels. For complex images, it returns a
complex normalised to length 1.
See also: vips_abs().</doc>
<source-position filename="include/vips/arithmetic.h" line="204"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/sign.c"
line="177">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/sign.c"
line="166">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/sign.c"
line="167">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/sign.c"
line="168">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="similarity"
c:identifier="vips_similarity"
introspectable="0">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="222">Optional arguments:
* @scale: %gdouble, scale by this factor
* @angle: %gdouble, rotate by this many degrees clockwise
* @interpolate: #VipsInterpolate, interpolate pixels with this
* @background: #VipsArrayDouble colour for new pixels
* @idx: %gdouble, input horizontal offset
* @idy: %gdouble, input vertical offset
* @odx: %gdouble, output horizontal offset
* @ody: %gdouble, output vertical offset
* @ody: %gdouble, output vertical offset
This operator calls vips_affine() for you, calculating the matrix for the
affine transform from @scale and @angle. Other parameters are passed on to
vips_affine() unaltered.
See also: vips_affine(), #VipsInterpolate.</doc>
<source-position filename="include/vips/resample.h" line="86"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="246">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="224">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="225">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/similarity.c"
line="226">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="sin" c:identifier="vips_sin" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="263">Perform #VIPS_OPERATION_MATH_SIN on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="218"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="271">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="265">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="266">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="267">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="smartcrop"
c:identifier="vips_smartcrop"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/smartcrop.c"
line="445">Optional arguments:
* @interesting: #VipsInteresting to use to find interesting areas (default: #VIPS_INTERESTING_ATTENTION)
Crop an image down to a specified width and height by removing boring parts.
Use @interesting to pick the method vips uses to decide which bits of the
image should be kept.
You can test xoffset / yoffset on @out to find the location of the crop
within the input image.
See also: vips_extract_area().</doc>
<source-position filename="include/vips/conversion.h" line="172"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/smartcrop.c"
line="467">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/smartcrop.c"
line="447">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/smartcrop.c"
line="448">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/smartcrop.c"
line="449">width of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/smartcrop.c"
line="450">height of area to extract</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/smartcrop.c"
line="451">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="sobel" c:identifier="vips_sobel" introspectable="0">
<doc xml:space="preserve"
filename="convolution/sobel.c"
line="229">Simple Sobel edge detector.
See also: vips_canny().</doc>
<source-position filename="include/vips/convolution.h" line="73"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/sobel.c"
line="239">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/sobel.c"
line="231">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/sobel.c"
line="232">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/sobel.c"
line="233">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="spcor" c:identifier="vips_spcor" introspectable="0">
<doc xml:space="preserve"
filename="convolution/spcor.c"
line="327">Calculate a correlation surface.
@ref is placed at every position in @in and the correlation coefficient
calculated. The output
image is always float.
The output
image is the same size as the input. Extra input edge pixels are made by
copying the existing edges outwards.
The correlation coefficient is calculated as:
|[
sumij (ref(i,j)-mean(ref))(inkl(i,j)-mean(inkl))
c(k,l) = ------------------------------------------------
sqrt(sumij (ref(i,j)-mean(ref))^2) *
sqrt(sumij (inkl(i,j)-mean(inkl))^2)
]|
where inkl is the area of @in centred at position (k,l).
from Niblack "An Introduction to Digital Image Processing",
Prentice/Hall, pp 138.
If the number of bands differs, one of the images
must have one band. In this case, an n-band image is formed from the
one-band image by joining n copies of the one-band image together, and then
the two n-band images are operated upon.
The output image is always float, unless either of the two inputs is
double, in which case the output is also double.
See also: vips_fastcor().</doc>
<source-position filename="include/vips/convolution.h" line="68"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/spcor.c"
line="368">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/spcor.c"
line="329">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="ref" transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/spcor.c"
line="330">reference image</doc>
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="convolution/spcor.c"
line="331">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="convolution/spcor.c"
line="332">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="spectrum" c:identifier="vips_spectrum" introspectable="0">
<doc xml:space="preserve"
filename="freqfilt/spectrum.c"
line="111">Make a displayable (ie. 8-bit unsigned int) power spectrum.
If @in is non-complex, it is transformed to Fourier space. Then the
absolute value is passed through vips_scale() in log mode, and vips_wrap().
See also: vips_fwfft(), vips_scale(), vips_wrap().</doc>
<source-position filename="include/vips/freqfilt.h" line="49"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/spectrum.c"
line="124">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/spectrum.c"
line="113">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="freqfilt/spectrum.c"
line="114">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="freqfilt/spectrum.c"
line="115">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="stats" c:identifier="vips_stats" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/stats.c"
line="431">Find many image statistics in a single pass through the data. @out is a
one-band #VIPS_FORMAT_DOUBLE image of at least 10 columns by n + 1
(where n is number of bands in image @in)
rows. Columns are statistics, and are, in order: minimum, maximum, sum,
sum of squares, mean, standard deviation, x coordinate of minimum, y
coordinate of minimum, x coordinate of maximum, y coordinate of maximum.
Later versions of vips_stats() may add more columns.
Row 0 has statistics for all
bands together, row 1 has stats for band 1, and so on.
If there is more than one maxima or minima, one of them will be chosen at
random.
See also: vips_avg(), vips_min().</doc>
<source-position filename="include/vips/arithmetic.h" line="396"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/stats.c"
line="453">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/stats.c"
line="433">image to scan</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/stats.c"
line="434">image of statistics</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/stats.c"
line="435">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="stdif" c:identifier="vips_stdif" introspectable="0">
<doc xml:space="preserve"
filename="histogram/stdif.c"
line="362">Optional arguments:
* @a: weight of new mean
* @m0: target mean
* @b: weight of new deviation
* @s0: target deviation
vips_stdif() preforms statistical differencing according to the formula
given in page 45 of the book "An Introduction to Digital Image
Processing" by Wayne Niblack. This transformation emphasises the way in
which a pel differs statistically from its neighbours. It is useful for
enhancing low-contrast images with lots of detail, such as X-ray plates.
At point (i,j) the output is given by the equation:
|[
vout(i,j) = @a * @m0 + (1 - @a) * meanv +
(vin(i,j) - meanv) * (@b * @s0) / (@s0 + @b * stdv)
]|
Values @a, @m0, @b and @s0 are entered, while meanv and stdv are the values
calculated over a moving window of size @width, @height centred on pixel
(i,j). @m0 is the new mean, @a is the weight given to it. @s0 is the new
standard deviation, @b is the weight given to it.
Try:
|[
vips stdif $VIPSHOME/pics/huysum.v fred.v 0.5 128 0.5 50 11 11
]|
The operation works on one-band uchar images only, and writes a one-band
uchar image as its result. The output image has the same size as the
input.
See also: vips_hist_local().</doc>
<source-position filename="include/vips/histogram.h" line="45"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/stdif.c"
line="407">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/stdif.c"
line="364">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="histogram/stdif.c"
line="365">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/stdif.c"
line="366">width of region</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="height" transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/stdif.c"
line="367">height of region</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="histogram/stdif.c"
line="368">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="subsample"
c:identifier="vips_subsample"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/subsample.c"
line="302">Optional arguments:
* @point: turn on point sample mode
Subsample an image by an integer fraction. This is fast, nearest-neighbour
shrink.
For small horizontal shrinks, this operation will fetch lines of pixels
from @in and then subsample that line. For large shrinks it will fetch
single pixels.
If @point is set, @in will always be sampled in points. This can be faster
if the previous operations in the pipeline are very slow.
See also: vips_affine(), vips_shrink(), vips_zoom().</doc>
<source-position filename="include/vips/conversion.h" line="200"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/subsample.c"
line="326">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/subsample.c"
line="304">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/subsample.c"
line="305">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="xfac" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/subsample.c"
line="306">horizontal shrink factor</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="yfac" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/subsample.c"
line="307">vertical shrink factor</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/subsample.c"
line="308">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="tan" c:identifier="vips_tan" introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="309">Perform #VIPS_OPERATION_MATH_TAN on an image. See vips_math().</doc>
<source-position filename="include/vips/arithmetic.h" line="222"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="317">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="311">input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="312">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math.c"
line="313">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="thumbnail_image"
c:identifier="vips_thumbnail_image"
introspectable="0">
<doc xml:space="preserve"
filename="resample/thumbnail.c"
line="1612">Optional arguments:
* @height: %gint, target height in pixels
* @size: #VipsSize, upsize, downsize, both or force
* @no_rotate: %gboolean, don't rotate upright using orientation tag
* @crop: #VipsInteresting, shrink and crop to fill target
* @linear: %gboolean, perform shrink in linear light
* @import_profile: %gchararray, fallback import ICC profile
* @export_profile: %gchararray, export ICC profile
* @intent: #VipsIntent, rendering intent
Exacty as vips_thumbnail(), but read from an existing image.
This operation
is not able to exploit shrink-on-load features of image load libraries, so
it can be much slower than `vips_thumbnail()` and produce poorer quality
output. Only use it if you really have to.
See also: vips_thumbnail().</doc>
<source-position filename="include/vips/resample.h" line="80"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/thumbnail.c"
line="1639">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/thumbnail.c"
line="1614">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/thumbnail.c"
line="1615">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="width" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/thumbnail.c"
line="1616">target width in pixels</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/thumbnail.c"
line="1617">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="tiffsave" c:identifier="vips_tiffsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="542">Optional arguments:
* @compression: use this #VipsForeignTiffCompression
* @Q: %gint quality factor
* @predictor: use this #VipsForeignTiffPredictor
* @profile: %gchararray, filename of ICC profile to attach
* @tile: %gboolean, set %TRUE to write a tiled tiff
* @tile_width: %gint for tile size
* @tile_height: %gint for tile size
* @pyramid: %gboolean, write an image pyramid
* @bitdepth: %int, change bit depth to 1,2, or 4 bit
* @miniswhite: %gboolean, write 1-bit images as MINISWHITE
* @resunit: #VipsForeignTiffResunit for resolution unit
* @xres: %gdouble horizontal resolution in pixels/mm
* @yres: %gdouble vertical resolution in pixels/mm
* @bigtiff: %gboolean, write a BigTiff file
* @properties: %gboolean, set %TRUE to write an IMAGEDESCRIPTION tag
* @region_shrink: #VipsRegionShrink How to shrink each 2x2 region.
* @level: %gint, Zstd compression level
* @lossless: %gboolean, WebP losssless mode
* @depth: #VipsForeignDzDepth how deep to make the pyramid
* @subifd: %gboolean write pyr layers as sub-ifds
Write a VIPS image to a file as TIFF.
If @in has the #VIPS_META_PAGE_HEIGHT metadata item, this is assumed to be a
"toilet roll" image. It will be
written as series of pages, each #VIPS_META_PAGE_HEIGHT pixels high.
Use @compression to set the tiff compression. Currently jpeg, packbits,
fax4, lzw, none, deflate, webp and zstd are supported. The default is no
compression.
JPEG compression is a good lossy compressor for photographs, packbits is
good for 1-bit images, and deflate is the best lossless compression TIFF
can do.
XYZ images are automatically saved as libtiff LOGLUV with SGILOG compression.
Float LAB images are saved as float CIELAB. Set @bitdepth to save as 8-bit
CIELAB.
Use @Q to set the JPEG compression factor. Default 75.
User @level to set the ZSTD compression level. Use @lossless to
set WEBP lossless mode on. Use @Q to set the WEBP compression level.
Use @predictor to set the predictor for lzw and deflate compression. It
defaults to #VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL, meaning horizontal
differencing. Please refer to the libtiff
specifications for further discussion of various predictors.
Use @profile to give the filename of a profile to be embedded in the TIFF.
This does not affect the pixels which are written, just the way
they are tagged. See vips_profile_load() for details on profile naming.
If no profile is specified and the VIPS header
contains an ICC profile named #VIPS_META_ICC_NAME, the
profile from the VIPS header will be attached.
Set @tile to TRUE to write a tiled tiff. By default tiff are written in
strips. Use @tile_width and @tile_height to set the tile size. The defaiult
is 128 by 128.
Set @pyramid to write the image as a set of images, one per page, of
decreasing size. Use @region_shrink to set how images will be shrunk: by
default each 2x2 block is just averaged, but you can set MODE or MEDIAN as
well.
By default, the pyramid stops when the image is small enough to fit in one
tile. Use @depth to stop when the image fits in one pixel, or to only write
a single layer.
Set @bitdepth to save 8-bit uchar images as 1, 2 or 4-bit TIFFs.
In case of depth 1: Values &gt;128 are written as white, values &lt;=128 as black.
Normally vips will write MINISBLACK TIFFs where black is a 0 bit, but if you
set @miniswhite, it will use 0 for a white bit. Many pre-press applications
only work with images which use this sense. @miniswhite only affects one-bit
images, it does nothing for greyscale images.
In case of depth 2: The same holds but values &lt; 64 are written as black.
For 64 &lt;= values &lt; 128 they are written as dark grey, for 128 &lt;= values &lt; 192
they are written as light gray and values above are written as white.
In case @miniswhite is set to true this behavior is inverted.
In case of depth 4: values &lt; 16 are written as black, and so on for the
lighter shades. In case @miniswhite is set to true this behavior is inverted.
Use @resunit to override the default resolution unit.
The default
resolution unit is taken from the header field
#VIPS_META_RESOLUTION_UNIT. If this field is not set, then
VIPS defaults to cm.
Use @xres and @yres to override the default horizontal and vertical
resolutions. By default these values are taken from the VIPS image header.
libvips resolution is always in pixels per millimetre.
Set @bigtiff to attempt to write a bigtiff.
Bigtiff is a variant of the TIFF
format that allows more than 4GB in a file.
Set @properties to write all vips metadata to the IMAGEDESCRIPTION tag as
xml. If @properties is not set, the value of #VIPS_META_IMAGEDESCRIPTION is
used instead.
The value of #VIPS_META_XMP_NAME is written to
the XMP tag. #VIPS_META_ORIENTATION (if set) is used to set the value of
the orientation
tag. #VIPS_META_IPTC (if set) is used to set the value of the IPTC tag.
#VIPS_META_PHOTOSHOP_NAME (if set) is used to set the value of the PHOTOSHOP
tag.
By default, pyramid layers are saved as consecutive pages.
Set @subifd to save pyramid layers as sub-directories of the main image.
Setting this option can improve compatibility with formats like OME.
See also: vips_tiffload(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="501"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="663">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="544">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="545">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="546">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="tiffsave_buffer"
c:identifier="vips_tiffsave_buffer"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="678">Optional arguments:
* @compression: use this #VipsForeignTiffCompression
* @Q: %gint quality factor
* @predictor: use this #VipsForeignTiffPredictor
* @profile: %gchararray, filename of ICC profile to attach
* @tile: %gboolean, set %TRUE to write a tiled tiff
* @tile_width: %gint for tile size
* @tile_height: %gint for tile size
* @pyramid: %gboolean, write an image pyramid
* @bitdepth: %int, set write bit depth to 1, 2, 4 or 8
* @miniswhite: %gboolean, write 1-bit images as MINISWHITE
* @resunit: #VipsForeignTiffResunit for resolution unit
* @xres: %gdouble horizontal resolution in pixels/mm
* @yres: %gdouble vertical resolution in pixels/mm
* @bigtiff: %gboolean, write a BigTiff file
* @properties: %gboolean, set %TRUE to write an IMAGEDESCRIPTION tag
* @region_shrink: #VipsRegionShrink How to shrink each 2x2 region.
* @level: %gint, Zstd compression level
* @lossless: %gboolean, WebP losssless mode
* @depth: #VipsForeignDzDepth how deep to make the pyramid
* @subifd: %gboolean write pyr layers as sub-ifds
As vips_tiffsave(), but save to a memory buffer.
The address of the buffer is returned in @buf, the length of the buffer in
@len. You are responsible for freeing the buffer with g_free() when you
are done with it.
See also: vips_tiffsave(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="503"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="716">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="680">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="buf" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="681">return output buffer here</doc>
<array length="1" zero-terminated="0" c:type="void**">
<type name="guint8"/>
</array>
</parameter>
<parameter name="len" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="682">return output length here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/tiffsave.c"
line="683">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="tilecache"
c:identifier="vips_tilecache"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="821">Optional arguments:
* @tile_width: width of tiles in cache
* @tile_height: height of tiles in cache
* @max_tiles: maximum number of tiles to cache
* @access: hint expected access pattern #VipsAccess
* @threaded: allow many threads
* @persistent: don't drop cache at end of computation
This operation behaves rather like vips_copy() between images
@in and @out, except that it keeps a cache of computed pixels.
This cache is made of up to @max_tiles tiles (a value of -1
means any number of tiles), and each tile is of size @tile_width
by @tile_height pixels.
Each cache tile is made with a single call to
vips_region_prepare().
When the cache fills, a tile is chosen for reuse. If @access is
#VIPS_ACCESS_RANDOM, then the least-recently-used tile is reused. If
@access is #VIPS_ACCESS_SEQUENTIAL
the top-most tile is reused.
By default, @tile_width and @tile_height are 128 pixels, and the operation
will cache up to 1,000 tiles. @access defaults to #VIPS_ACCESS_RANDOM.
Normally, only a single thread at once is allowed to calculate tiles. If
you set @threaded to %TRUE, vips_tilecache() will allow many threads to
calculate tiles at once, and share the cache between them.
Normally the cache is dropped when computation finishes. Set @persistent to
%TRUE to keep the cache between computations.
See also: vips_cache(), vips_linecache().</doc>
<source-position filename="include/vips/conversion.h" line="139"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="862">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="823">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="824">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/tilecache.c"
line="825">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="transpose3d"
c:identifier="vips_transpose3d"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/transpose3d.c"
line="187">Optional arguments:
Transpose a volumetric image.
Volumetric images are very tall, thin images, with the metadata item
#VIPS_META_PAGE_HEIGHT set to the height of each sub-image.
This operation swaps the two major dimensions, so that page N in the
output contains the Nth scanline, in order, from each input page.
You can override the #VIPS_META_PAGE_HEIGHT metadata item with the optional
@page_height parameter.
#VIPS_META_PAGE_HEIGHT in the output image is the number of pages in the
input image.
See also: vips_grid().</doc>
<source-position filename="include/vips/conversion.h" line="181"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/transpose3d.c"
line="213">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/transpose3d.c"
line="189">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/transpose3d.c"
line="190">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/transpose3d.c"
line="191">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="unpremultiply"
c:identifier="vips_unpremultiply"
introspectable="0">
<doc xml:space="preserve"
filename="conversion/unpremultiply.c"
line="309">Optional arguments:
* @max_alpha: %gdouble, maximum value for alpha
* @alpha_band: %gint, band containing alpha data
Unpremultiplies any alpha channel.
Band @alpha_band (by default the final band) contains the alpha and all
other bands are transformed as:
|[
alpha = (int) clip( 0, in[in.bands - 1], @max_alpha );
norm = (double) alpha / @max_alpha;
if( alpha == 0 )
out = [0, ..., 0, alpha];
else
out = [in[0] / norm, ..., in[in.bands - 1] / norm, alpha];
]|
So for an N-band image, the first N - 1 bands are divided by the clipped
and normalised final band, the final band is clipped.
If there is only a single band, the image is passed through unaltered.
The result is
#VIPS_FORMAT_FLOAT unless the input format is #VIPS_FORMAT_DOUBLE, in which
case the output is double as well.
@max_alpha has the default value 255, or 65535 for images tagged as
#VIPS_INTERPRETATION_RGB16 or
#VIPS_INTERPRETATION_GREY16.
Non-complex images only.
See also: vips_premultiply(), vips_flatten().</doc>
<source-position filename="include/vips/conversion.h" line="274"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/unpremultiply.c"
line="349">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/unpremultiply.c"
line="311">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/unpremultiply.c"
line="312">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/unpremultiply.c"
line="313">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="vipssave" c:identifier="vips_vipssave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/vipssave.c"
line="126">Write @in to @filename in VIPS format.
See also: vips_vipsload().</doc>
<source-position filename="include/vips/foreign.h" line="361"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/vipssave.c"
line="136">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/vipssave.c"
line="128">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/vipssave.c"
line="129">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/vipssave.c"
line="130">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="webpsave" c:identifier="vips_webpsave" introspectable="0">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="504">Optional arguments:
* @Q: %gint, quality factor
* @lossless: %gboolean, enables lossless compression
* @preset: #VipsForeignWebpPreset, choose lossy compression preset
* @smart_subsample: %gboolean, enables high quality chroma subsampling
* @near_lossless: %gboolean, preprocess in lossless mode (controlled by Q)
* @alpha_q: %gint, set alpha quality in lossless mode
* @reduction_effort: %gint, level of CPU effort to reduce file size
* @min_size: %gboolean, minimise size
* @kmin: %gint, minimum number of frames between keyframes
* @kmax: %gint, maximum number of frames between keyframes
* @strip: %gboolean, remove all metadata from image
Write an image to a file in WebP format.
By default, images are saved in lossy format, with
@Q giving the WebP quality factor. It has the range 0 - 100, with the
default 75.
Use @preset to hint the image type to the lossy compressor. The default is
#VIPS_FOREIGN_WEBP_PRESET_DEFAULT.
Set @smart_subsample to enable high quality chroma subsampling.
Use @alpha_q to set the quality for the alpha channel in lossy mode. It has
the range 1 - 100, with the default 100.
Use @reduction_effort to control how much CPU time to spend attempting to
reduce file size. A higher value means more effort and therefore CPU time
should be spent. It has the range 0-6 and a default value of 4.
Set @lossless to use lossless compression, or combine @near_lossless
with @Q 80, 60, 40 or 20 to apply increasing amounts of preprocessing
which improves the near-lossless compression ratio by up to 50%.
For animated webp output, @min_size will try to optimize for minimum size.
For animated webp output, @kmax sets the maximum number of frames between
keyframes. Setting 0 means only keyframes. @kmin sets the minimum number of
frames between frames. Setting 0 means no keyframes. By default, keyframes
are disabled.
Use the metadata items `loop` and `delay` to set the number of
loops for the animation and the frame delays.
The writer will attach ICC, EXIF and XMP metadata, unless @strip is set to
%TRUE.
See also: vips_webpload(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="426"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="561">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="506">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="filename" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="507">file to write to</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="508">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="webpsave_buffer"
c:identifier="vips_webpsave_buffer"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="576">Optional arguments:
* @Q: %gint, quality factor
* @lossless: %gboolean, enables lossless compression
* @preset: #VipsForeignWebpPreset, choose lossy compression preset
* @smart_subsample: %gboolean, enables high quality chroma subsampling
* @near_lossless: %gboolean, preprocess in lossless mode (controlled by Q)
* @alpha_q: %gint, set alpha quality in lossless mode
* @reduction_effort: %gint, level of CPU effort to reduce file size
* @min_size: %gboolean, minimise size
* @kmin: %gint, minimum number of frames between keyframes
* @kmax: %gint, maximum number of frames between keyframes
* @strip: %gboolean, remove all metadata from image
As vips_webpsave(), but save to a memory buffer.
The address of the buffer is returned in @buf, the length of the buffer in
@len. You are responsible for freeing the buffer with g_free() when you
are done with it.
See also: vips_webpsave().</doc>
<source-position filename="include/vips/foreign.h" line="428"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="605">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="578">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="buf"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="579">return output buffer here</doc>
<array length="1" zero-terminated="0" c:type="void**">
<type name="guint8"/>
</array>
</parameter>
<parameter name="len"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="580">return output length here</doc>
<type name="gsize" c:type="size_t*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="581">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="webpsave_mime"
c:identifier="vips_webpsave_mime"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="635">Optional arguments:
* @Q: %gint, quality factor
* @lossless: %gboolean, enables lossless compression
* @preset: #VipsForeignWebpPreset, choose lossy compression preset
* @smart_subsample: %gboolean, enables high quality chroma subsampling
* @near_lossless: %gboolean, preprocess in lossless mode (controlled by Q)
* @alpha_q: %gint, set alpha quality in lossless mode
* @reduction_effort: %gint, level of CPU effort to reduce file size
* @min_size: %gboolean, minimise size
* @kmin: %gint, minimum number of frames between keyframes
* @kmax: %gint, maximum number of frames between keyframes
* @strip: %gboolean, remove all metadata from image
As vips_webpsave(), but save as a mime webp on stdout.
See also: vips_webpsave(), vips_image_write_to_file().</doc>
<source-position filename="include/vips/foreign.h" line="430"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="658">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="637">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="638">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="webpsave_target"
c:identifier="vips_webpsave_target"
introspectable="0">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="673">Optional arguments:
* @Q: %gint, quality factor
* @lossless: %gboolean, enables lossless compression
* @preset: #VipsForeignWebpPreset, choose lossy compression preset
* @smart_subsample: %gboolean, enables high quality chroma subsampling
* @near_lossless: %gboolean, preprocess in lossless mode (controlled by Q)
* @alpha_q: %gint, set alpha quality in lossless mode
* @reduction_effort: %gint, level of CPU effort to reduce file size
* @min_size: %gboolean, minimise size
* @kmin: %gint, minimum number of frames between keyframes
* @kmax: %gint, maximum number of frames between keyframes
* @strip: %gboolean, remove all metadata from image
As vips_webpsave(), but save to a target.
See also: vips_webpsave().</doc>
<source-position filename="include/vips/foreign.h" line="424"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="697">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="675">image to save</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="target" transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="676">save image to this target</doc>
<type c:type="VipsTarget*"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="foreign/webpsave.c"
line="677">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="wop_const"
c:identifier="vips_wop_const"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="512">Perform #VIPS_OPERATION_MATH2_WOP on an image and a constant. See
vips_math2_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="377"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="523">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="514">left-hand input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="515">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="516">array of constants</doc>
<array length="2" zero-terminated="0" c:type="const double*">
<type name="gdouble" c:type="double"/>
</array>
</parameter>
<parameter name="n" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="517">number of constants in @c</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="518">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="wop_const1"
c:identifier="vips_wop_const1"
introspectable="0">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="592">Perform #VIPS_OPERATION_MATH2_WOP on an image and a constant. See
vips_math2_const().</doc>
<source-position filename="include/vips/arithmetic.h" line="385"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="602">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="594">left-hand input #VipsImage</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="595">output #VipsImage</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="c" transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="596">constant</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="arithmetic/math2.c"
line="597">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="wrap" c:identifier="vips_wrap" introspectable="0">
<doc xml:space="preserve"
filename="conversion/wrap.c"
line="145">Optional arguments:
* @x: horizontal displacement
* @y: vertical displacement
Slice an image up and move the segments about so that the pixel that was
at 0, 0 is now at @x, @y. If @x and @y are not set, they default to the
centre of the image.
See also: vips_embed(), vips_replicate().</doc>
<source-position filename="include/vips/conversion.h" line="183"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/wrap.c"
line="162">0 on success, -1 on error</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/wrap.c"
line="147">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/wrap.c"
line="148">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/wrap.c"
line="149">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<method name="zoom" c:identifier="vips_zoom" introspectable="0">
<doc xml:space="preserve"
filename="conversion/zoom.c"
line="404">Zoom an image by repeating pixels. This is fast nearest-neighbour
zoom.
See also: vips_affine(), vips_subsample().</doc>
<source-position filename="include/vips/conversion.h" line="198"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/zoom.c"
line="417">0 on success, -1 on error.</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/zoom.c"
line="406">input image</doc>
<type name="Image" c:type="VipsImage*"/>
</instance-parameter>
<parameter name="out"
direction="out"
caller-allocates="0"
transfer-ownership="full">
<doc xml:space="preserve"
filename="conversion/zoom.c"
line="407">output image</doc>
<type name="Image" c:type="VipsImage**"/>
</parameter>
<parameter name="xfac" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/zoom.c"
line="408">horizontal scale factor</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="yfac" transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/zoom.c"
line="409">vertical scale factor</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="..." transfer-ownership="none">
<doc xml:space="preserve"
filename="conversion/zoom.c"
line="410">%NULL-terminated list of optional named arguments</doc>
<varargs/>
</parameter>
</parameters>
</method>
<property name="bands" writable="1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</property>
<property name="coding" writable="1" transfer-ownership="none">
<type name="Coding"/>
</property>
<property name="demand" writable="1" transfer-ownership="none">
<type name="DemandStyle"/>
</property>
<property name="filename" writable="1" transfer-ownership="none">
<type name="utf8" c:type="gchar*"/>
</property>
<property name="foreign-buffer" writable="1" transfer-ownership="none">
<type name="gpointer" c:type="gpointer"/>
</property>
<property name="format" writable="1" transfer-ownership="none">
<type name="BandFormat"/>
</property>
<property name="height" writable="1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</property>
<property name="interpretation" writable="1" transfer-ownership="none">
<type name="Interpretation"/>
</property>
<property name="kill" writable="1" transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="mode" writable="1" transfer-ownership="none">
<type name="utf8" c:type="gchar*"/>
</property>
<property name="sizeof-header" writable="1" transfer-ownership="none">
<type name="guint64" c:type="guint64"/>
</property>
<property name="width" writable="1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</property>
<property name="xoffset" writable="1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</property>
<property name="xres" writable="1" transfer-ownership="none">
<type name="gdouble" c:type="gdouble"/>
</property>
<property name="yoffset" writable="1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</property>
<property name="yres" writable="1" transfer-ownership="none">
<type name="gdouble" c:type="gdouble"/>
</property>
<field name="parent_instance">
<type name="Object" c:type="VipsObject"/>
</field>
<field name="Xsize" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="Ysize" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="Bands" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="BandFmt" readable="0" private="1">
<type name="BandFormat" c:type="VipsBandFormat"/>
</field>
<field name="Coding" readable="0" private="1">
<type name="Coding" c:type="VipsCoding"/>
</field>
<field name="Type" readable="0" private="1">
<type name="Interpretation" c:type="VipsInterpretation"/>
</field>
<field name="Xres" readable="0" private="1">
<type name="gdouble" c:type="double"/>
</field>
<field name="Yres" readable="0" private="1">
<type name="gdouble" c:type="double"/>
</field>
<field name="Xoffset" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="Yoffset" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="Length" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="Compression" readable="0" private="1">
<type name="gshort" c:type="short"/>
</field>
<field name="Level" readable="0" private="1">
<type name="gshort" c:type="short"/>
</field>
<field name="Bbits" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="time" readable="0" private="1">
<type name="Progress" c:type="VipsProgress*"/>
</field>
<field name="Hist" readable="0" private="1">
<type name="utf8" c:type="char*"/>
</field>
<field name="filename" readable="0" private="1">
<type name="utf8" c:type="char*"/>
</field>
<field name="data" readable="0" private="1">
<type name="Pel" c:type="VipsPel*"/>
</field>
<field name="kill" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="Xres_float" readable="0" private="1">
<type name="gfloat" c:type="float"/>
</field>
<field name="Yres_float" readable="0" private="1">
<type name="gfloat" c:type="float"/>
</field>
<field name="mode" readable="0" private="1">
<type name="utf8" c:type="char*"/>
</field>
<field name="dtype" readable="0" private="1">
<type name="ImageType" c:type="VipsImageType"/>
</field>
<field name="fd" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="baseaddr" readable="0" private="1">
<type name="gpointer" c:type="void*"/>
</field>
<field name="length" readable="0" private="1">
<type name="gsize" c:type="size_t"/>
</field>
<field name="magic" readable="0" private="1">
<type name="guint32" c:type="guint32"/>
</field>
<field name="start_fn" readable="0" private="1">
<type name="StartFn" c:type="VipsStartFn"/>
</field>
<field name="generate_fn" readable="0" private="1">
<type name="GenerateFn" c:type="VipsGenerateFn"/>
</field>
<field name="stop_fn" readable="0" private="1">
<type name="StopFn" c:type="VipsStopFn"/>
</field>
<field name="client1" readable="0" private="1">
<type name="gpointer" c:type="void*"/>
</field>
<field name="client2" readable="0" private="1">
<type name="gpointer" c:type="void*"/>
</field>
<field name="sslock" readable="0" private="1">
<type name="GLib.Mutex" c:type="GMutex*"/>
</field>
<field name="regions" readable="0" private="1">
<type name="GLib.SList" c:type="GSList*">
<type name="gpointer" c:type="gpointer"/>
</type>
</field>
<field name="dhint" readable="0" private="1">
<type name="DemandStyle" c:type="VipsDemandStyle"/>
</field>
<field name="meta" readable="0" private="1">
<type name="GLib.HashTable" c:type="GHashTable*">
<type name="gpointer" c:type="gpointer"/>
<type name="gpointer" c:type="gpointer"/>
</type>
</field>
<field name="meta_traverse" readable="0" private="1">
<type name="GLib.SList" c:type="GSList*">
<type name="gpointer" c:type="gpointer"/>
</type>
</field>
<field name="sizeof_header" readable="0" private="1">
<type name="gint64" c:type="gint64"/>
</field>
<field name="windows" readable="0" private="1">
<type name="GLib.SList" c:type="GSList*">
<type name="gpointer" c:type="gpointer"/>
</type>
</field>
<field name="upstream" readable="0" private="1">
<type name="GLib.SList" c:type="GSList*">
<type name="gpointer" c:type="gpointer"/>
</type>
</field>
<field name="downstream" readable="0" private="1">
<type name="GLib.SList" c:type="GSList*">
<type name="gpointer" c:type="gpointer"/>
</type>
</field>
<field name="serial" readable="0" private="1">
<type name="gint" c:type="int"/>
</field>
<field name="history_list" readable="0" private="1">
<type name="GLib.SList" c:type="GSList*">
<type name="gpointer" c:type="gpointer"/>
</type>
</field>
<field name="progress_signal">
<type name="gpointer" c:type="_VipsImage*"/>
</field>
<field name="file_length">
<type name="gint64" c:type="gint64"/>
</field>
<field name="hint_set">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="delete_on_close">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="delete_on_close_filename">
<type name="utf8" c:type="char*"/>
</field>
<glib:signal name="eval" when="last">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1244">The ::eval signal is emitted once per work unit (typically a 128 x
128 area of pixels) during image computation.
You can use this signal to update user-interfaces with progress
feedback. Beware of updating too frequently: you will usually
need some throttling mechanism.
Use vips_image_set_progress() to turn on progress reporting for an
image.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="progress"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1247">#VipsProgress for this image</doc>
<type name="gpointer" c:type="gpointer"/>
</parameter>
</parameters>
</glib:signal>
<glib:signal name="invalidate" when="last" action="1">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1307">The ::invalidate signal is emitted when an image or one of it's
upstream data sources has been destructively modified. See
vips_image_invalidate_all().</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
</glib:signal>
<glib:signal name="minimise" when="last" action="1">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1323">The ::minimise signal is emitted when an image has been asked to
minimise memory usage. All non-essential caches are dropped.
See
vips_image_minimise_all().</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
</glib:signal>
<glib:signal name="posteval" when="last">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1268">The ::posteval signal is emitted once at the end of the computation
of @image. It's a good place to shut down evaluation feedback.
Use vips_image_set_progress() to turn on progress reporting for an
image.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="progress"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1271">#VipsProgress for this image</doc>
<type name="gpointer" c:type="gpointer"/>
</parameter>
</parameters>
</glib:signal>
<glib:signal name="preeval" when="last">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1224">The ::preeval signal is emitted once before computation of @image
starts. It's a good place to set up evaluation feedback.
Use vips_image_set_progress() to turn on progress reporting for an
image.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="progress"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1227">#VipsProgress for this image</doc>
<type name="gpointer" c:type="gpointer"/>
</parameter>
</parameters>
</glib:signal>
<glib:signal name="written" when="last" action="1">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1288">The ::written signal is emitted just after an image has been
written to. It is
used by vips to implement things like write to foreign file
formats.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="result"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="1291">set to non-zero to indicate error</doc>
<type name="gpointer" c:type="gpointer"/>
</parameter>
</parameters>
</glib:signal>
</class>
<record name="ImageClass"
c:type="VipsImageClass"
glib:is-gtype-struct-for="Image">
<source-position filename="include/vips/image.h" line="354"/>
<field name="parent_class">
<type name="ObjectClass" c:type="VipsObjectClass"/>
</field>
<field name="preeval">
<callback name="preeval">
<source-position filename="include/vips/image.h" line="322"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="progress" transfer-ownership="none">
<type name="Progress" c:type="VipsProgress*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="eval">
<callback name="eval">
<source-position filename="include/vips/image.h" line="326"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="progress" transfer-ownership="none">
<type name="Progress" c:type="VipsProgress*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="posteval">
<callback name="posteval">
<source-position filename="include/vips/image.h" line="330"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="progress" transfer-ownership="none">
<type name="Progress" c:type="VipsProgress*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="written">
<callback name="written">
<source-position filename="include/vips/image.h" line="337"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="result" transfer-ownership="none">
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="invalidate">
<callback name="invalidate">
<source-position filename="include/vips/image.h" line="342"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="minimise">
<callback name="minimise">
<source-position filename="include/vips/image.h" line="352"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="data"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
</field>
</record>
<callback name="ImageMapFn" c:type="VipsImageMapFn">
<source-position filename="include/vips/header.h" line="199"/>
<return-value transfer-ownership="none" nullable="1">
<type name="gpointer" c:type="void*"/>
</return-value>
<parameters>
<parameter name="image" transfer-ownership="none">
<type name="Image" c:type="VipsImage*"/>
</parameter>
<parameter name="name" transfer-ownership="none">
<type name="utf8" c:type="const char*"/>
</parameter>
<parameter name="value" transfer-ownership="none">
<type name="GObject.Value" c:type="GValue*"/>
</parameter>
<parameter name="a"
transfer-ownership="none"
nullable="1"
allow-none="1">
<type name="gpointer" c:type="void*"/>
</parameter>
</parameters>
</callback>
<enumeration name="ImageType"
glib:type-name="VipsImageType"
glib:get-type="vips_image_type_get_type"
c:type="VipsImageType">
<member name="error"
value="-1"
c:identifier="VIPS_IMAGE_ERROR"
glib:nick="error">
</member>
<member name="none"
value="0"
c:identifier="VIPS_IMAGE_NONE"
glib:nick="none">
</member>
<member name="setbuf"
value="1"
c:identifier="VIPS_IMAGE_SETBUF"
glib:nick="setbuf">
</member>
<member name="setbuf_foreign"
value="2"
c:identifier="VIPS_IMAGE_SETBUF_FOREIGN"
glib:nick="setbuf-foreign">
</member>
<member name="openin"
value="3"
c:identifier="VIPS_IMAGE_OPENIN"
glib:nick="openin">
</member>
<member name="mmapin"
value="4"
c:identifier="VIPS_IMAGE_MMAPIN"
glib:nick="mmapin">
</member>
<member name="mmapinrw"
value="5"
c:identifier="VIPS_IMAGE_MMAPINRW"
glib:nick="mmapinrw">
</member>
<member name="openout"
value="6"
c:identifier="VIPS_IMAGE_OPENOUT"
glib:nick="openout">
</member>
<member name="partial"
value="7"
c:identifier="VIPS_IMAGE_PARTIAL"
glib:nick="partial">
</member>
</enumeration>
<enumeration name="Intent"
glib:type-name="VipsIntent"
glib:get-type="vips_intent_get_type"
c:type="VipsIntent">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="98">The rendering intent. #VIPS_INTENT_ABSOLUTE is best for
scientific work, #VIPS_INTENT_RELATIVE is usually best for
accurate communication with other imaging libraries.</doc>
<member name="perceptual"
value="0"
c:identifier="VIPS_INTENT_PERCEPTUAL"
glib:nick="perceptual">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="100">perceptual rendering intent</doc>
</member>
<member name="relative"
value="1"
c:identifier="VIPS_INTENT_RELATIVE"
glib:nick="relative">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="101">relative colorimetric rendering intent</doc>
</member>
<member name="saturation"
value="2"
c:identifier="VIPS_INTENT_SATURATION"
glib:nick="saturation">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="102">saturation rendering intent</doc>
</member>
<member name="absolute"
value="3"
c:identifier="VIPS_INTENT_ABSOLUTE"
glib:nick="absolute">
<doc xml:space="preserve"
filename="colour/icc_transform.c"
line="103">absolute colorimetric rendering intent</doc>
</member>
<member name="last"
value="4"
c:identifier="VIPS_INTENT_LAST"
glib:nick="last">
</member>
</enumeration>
<enumeration name="Interesting"
glib:type-name="VipsInteresting"
glib:get-type="vips_interesting_get_type"
c:type="VipsInteresting">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="209">Pick the algorithm vips uses to decide image "interestingness". This is used
by vips_smartcrop(), for example, to decide what parts of the image to
keep.
#VIPS_INTERESTING_NONE and #VIPS_INTERESTING_LOW mean the same -- the
crop is positioned at the top or left. #VIPS_INTERESTING_HIGH positions at
the bottom or right.
See also: vips_smartcrop().</doc>
<member name="none"
value="0"
c:identifier="VIPS_INTERESTING_NONE"
glib:nick="none">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="211">do nothing</doc>
</member>
<member name="centre"
value="1"
c:identifier="VIPS_INTERESTING_CENTRE"
glib:nick="centre">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="212">just take the centre</doc>
</member>
<member name="entropy"
value="2"
c:identifier="VIPS_INTERESTING_ENTROPY"
glib:nick="entropy">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="213">use an entropy measure</doc>
</member>
<member name="attention"
value="3"
c:identifier="VIPS_INTERESTING_ATTENTION"
glib:nick="attention">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="214">look for features likely to draw human attention</doc>
</member>
<member name="low"
value="4"
c:identifier="VIPS_INTERESTING_LOW"
glib:nick="low">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="215">position the crop towards the low coordinate</doc>
</member>
<member name="high"
value="5"
c:identifier="VIPS_INTERESTING_HIGH"
glib:nick="high">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="216">position the crop towards the high coordinate</doc>
</member>
<member name="all"
value="6"
c:identifier="VIPS_INTERESTING_ALL"
glib:nick="all">
<doc xml:space="preserve"
filename="conversion/conversion.c"
line="217">everything is interesting</doc>
</member>
<member name="last"
value="7"
c:identifier="VIPS_INTERESTING_LAST"
glib:nick="last">
</member>
</enumeration>
<class name="Interpolate"
c:symbol-prefix="interpolate"
c:type="VipsInterpolate"
parent="Object"
abstract="1"
glib:type-name="VipsInterpolate"
glib:get-type="vips_interpolate_get_type"
glib:type-struct="InterpolateClass">
<source-position filename="include/vips/interpolate.h" line="88"/>
<constructor name="new" c:identifier="vips_interpolate_new">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="616">Look up an interpolator from a nickname and make one. You need to free the
result with g_object_unref() when you're done with it.
See also: vips_type_find().</doc>
<source-position filename="include/vips/interpolate.h" line="121"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="625">an interpolator, or %NULL on error.</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</return-value>
<parameters>
<parameter name="nickname" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="618">nickname for interpolator</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</constructor>
<function name="bilinear_static"
c:identifier="vips_interpolate_bilinear_static">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="576">A convenience function that returns a bilinear interpolator you
don't need to free.</doc>
<source-position filename="include/vips/interpolate.h" line="116"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="582">a bilinear interpolator</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</return-value>
</function>
<function name="nearest_static"
c:identifier="vips_interpolate_nearest_static">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="383">A convenience function that returns a nearest-neighbour interpolator you
don't need to free.</doc>
<source-position filename="include/vips/interpolate.h" line="115"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="389">a nearest-neighbour interpolator</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</return-value>
</function>
<virtual-method name="get_window_offset" invoker="get_window_offset">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="265">Look up an interpolators desired window offset.</doc>
<source-position filename="include/vips/interpolate.h" line="86"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="271">the interpolators required window offset</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="267">interpolator to use</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</instance-parameter>
</parameters>
</virtual-method>
<virtual-method name="get_window_size" invoker="get_window_size">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="247">Look up an interpolators desired window size.</doc>
<source-position filename="include/vips/interpolate.h" line="77"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="253">the interpolators required window size</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="249">interpolator to use</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</instance-parameter>
</parameters>
</virtual-method>
<virtual-method name="interpolate">
<source-position filename="include/vips/interpolate.h" line="64"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="79">the interpolator</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</instance-parameter>
<parameter name="out"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="80">write the interpolated pixel here</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="81">read source pixels from here</doc>
<type name="Region" c:type="VipsRegion*"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="82">interpolate value at this position</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="83">interpolate value at this position</doc>
<type name="gdouble" c:type="double"/>
</parameter>
</parameters>
</virtual-method>
<method name=""
c:identifier="vips_interpolate"
moved-to="interpolate"
introspectable="0">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="203">Look up the @interpolate method in the class and call it. Use
vips_interpolate_get_method() to get a direct pointer to the function and
avoid the lookup overhead.
You need to set @in and @out up correctly.</doc>
<source-position filename="include/vips/interpolate.h" line="93"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="205">interpolator to use</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</instance-parameter>
<parameter name="out"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="206">write result here</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="207">read source data from here</doc>
<type name="Region" c:type="VipsRegion*"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="208">interpolate value at this position</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="209">interpolate value at this position</doc>
<type name="gdouble" c:type="double"/>
</parameter>
</parameters>
</method>
<method name="get_method"
c:identifier="vips_interpolate_get_method"
introspectable="0">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="228">Look up the @interpolate method in the class and return it. Use this
instead of vips_interpolate() to cache method dispatch.</doc>
<source-position filename="include/vips/interpolate.h" line="95"/>
<return-value>
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="235">a pointer to the interpolation function</doc>
<type name="InterpolateMethod" c:type="VipsInterpolateMethod"/>
</return-value>
<parameters>
<instance-parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="230">interpolator to use</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</instance-parameter>
</parameters>
</method>
<method name="get_window_offset"
c:identifier="vips_interpolate_get_window_offset">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="265">Look up an interpolators desired window offset.</doc>
<source-position filename="include/vips/interpolate.h" line="97"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="271">the interpolators required window offset</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="267">interpolator to use</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</instance-parameter>
</parameters>
</method>
<method name="get_window_size"
c:identifier="vips_interpolate_get_window_size">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="247">Look up an interpolators desired window size.</doc>
<source-position filename="include/vips/interpolate.h" line="96"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="253">the interpolators required window size</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<instance-parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="249">interpolator to use</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</instance-parameter>
</parameters>
</method>
<field name="parent_object">
<type name="Object" c:type="VipsObject"/>
</field>
</class>
<record name="InterpolateClass"
c:type="VipsInterpolateClass"
glib:is-gtype-struct-for="Interpolate">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="94">The abstract base class for the various VIPS interpolation functions.
Use "vips --list classes" to see all the interpolators available.
An interpolator consists of a function to perform the interpolation, plus
some extra data fields which tell vips how to call the function and what
data it needs.
@window_size is the size of the window that the interpolator needs. For
example, a bicubic interpolator needs to see a window of 4x4 pixels to be
able to interpolate a value.
You can either have a function in @get_window_size which returns the window
that a specific interpolator needs, or you can leave @get_window_size %NULL
and set a constant value in @window_size.
@window_offset is how much to offset the window up and left of (x, y). For
example, a bicubic interpolator will want a @window_offset of 1.
You can either have a function in @get_window_offset which returns the
offset that a specific interpolator needs, or you can leave
@get_window_offset %NULL and set a constant value in @window_offset.
You also need to set @nickname and @description in #VipsObject.
See also: #VipsInterpolateMethod, #VipsObject,
vips_interpolate_bilinear_static().</doc>
<source-position filename="include/vips/interpolate.h" line="88"/>
<field name="parent_class">
<type name="ObjectClass" c:type="VipsObjectClass"/>
</field>
<field name="interpolate">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="96">the interpolation method</doc>
<type name="InterpolateMethod" c:type="VipsInterpolateMethod"/>
</field>
<field name="get_window_size">
<callback name="get_window_size">
<source-position filename="include/vips/interpolate.h" line="77"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="253">the interpolators required window size</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="249">interpolator to use</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="window_size">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="98">or just set this for a constant window size</doc>
<type name="gint" c:type="int"/>
</field>
<field name="get_window_offset">
<callback name="get_window_offset">
<source-position filename="include/vips/interpolate.h" line="86"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="271">the interpolators required window offset</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="267">interpolator to use</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="window_offset">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="100">or just set this for a constant window offset</doc>
<type name="gint" c:type="int"/>
</field>
</record>
<callback name="InterpolateMethod" c:type="VipsInterpolateMethod">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="77">An interpolation function. It should read source pixels from @in with
VIPS_REGION_ADDR(), it can look left and up from (x, y) by @window_offset
pixels and it can access pixels in a window of size @window_size.
The interpolated value should be written to the pixel pointed to by @out.
See also: #VipsInterpolateClass.</doc>
<source-position filename="include/vips/interpolate.h" line="64"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="interpolate" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="79">the interpolator</doc>
<type name="Interpolate" c:type="VipsInterpolate*"/>
</parameter>
<parameter name="out"
transfer-ownership="none"
nullable="1"
allow-none="1">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="80">write the interpolated pixel here</doc>
<type name="gpointer" c:type="void*"/>
</parameter>
<parameter name="in" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="81">read source pixels from here</doc>
<type name="Region" c:type="VipsRegion*"/>
</parameter>
<parameter name="x" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="82">interpolate value at this position</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="y" transfer-ownership="none">
<doc xml:space="preserve"
filename="resample/interpolate.c"
line="83">interpolate value at this position</doc>
<type name="gdouble" c:type="double"/>
</parameter>
</parameters>
</callback>
<enumeration name="Interpretation"
glib:type-name="VipsInterpretation"
glib:get-type="vips_interpretation_get_type"
c:type="VipsInterpretation">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="207">How the values in an image should be interpreted. For example, a
three-band float image of type #VIPS_INTERPRETATION_LAB should have its
pixels interpreted as coordinates in CIE Lab space.
RGB and sRGB are treated in the same way. Use the colourspace functions if
you want some other behaviour.
The gaps in numbering are historical and must be maintained. Allocate
new numbers from the end.</doc>
<member name="error"
value="-1"
c:identifier="VIPS_INTERPRETATION_ERROR"
glib:nick="error">
</member>
<member name="multiband"
value="0"
c:identifier="VIPS_INTERPRETATION_MULTIBAND"
glib:nick="multiband">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="209">generic many-band image</doc>
</member>
<member name="b_w"
value="1"
c:identifier="VIPS_INTERPRETATION_B_W"
glib:nick="b-w">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="210">some kind of single-band image</doc>
</member>
<member name="histogram"
value="10"
c:identifier="VIPS_INTERPRETATION_HISTOGRAM"
glib:nick="histogram">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="211">a 1D image, eg. histogram or lookup table</doc>
</member>
<member name="xyz"
value="12"
c:identifier="VIPS_INTERPRETATION_XYZ"
glib:nick="xyz">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="213">the first three bands are CIE XYZ</doc>
</member>
<member name="lab"
value="13"
c:identifier="VIPS_INTERPRETATION_LAB"
glib:nick="lab">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="214">pixels are in CIE Lab space</doc>
</member>
<member name="cmyk"
value="15"
c:identifier="VIPS_INTERPRETATION_CMYK"
glib:nick="cmyk">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="215">the first four bands are in CMYK space</doc>
</member>
<member name="labq"
value="16"
c:identifier="VIPS_INTERPRETATION_LABQ"
glib:nick="labq">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="216">implies #VIPS_CODING_LABQ</doc>
</member>
<member name="rgb"
value="17"
c:identifier="VIPS_INTERPRETATION_RGB"
glib:nick="rgb">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="217">generic RGB space</doc>
</member>
<member name="cmc"
value="18"
c:identifier="VIPS_INTERPRETATION_CMC"
glib:nick="cmc">
<doc xml:space="preserve"
filename="iofuncs/image.c"
line="218">a uniform colourspace based on CMC(1:1)</doc>
</member>
<member name="lch"
value="19"
c:identifier="VIPS_INTERPRETATION_LCH"
glib:nick="lch">
<doc xml:space="preser
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment