Files
gimp/devel-docs/libgimpmath/xml/gimpmatrix.xml
2010-08-11 01:25:24 -04:00

547 lines
31 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<refentry id="libgimpmath-GimpMatrix">
<refmeta>
<refentrytitle role="top_of_page" id="libgimpmath-GimpMatrix.top_of_page">GimpMatrix</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>LIBGIMPMATH Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>GimpMatrix</refname>
<refpurpose>Utilities to set up and manipulate 3x3 transformation matrices.</refpurpose>
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
</refnamediv>
<refsynopsisdiv id="libgimpmath-GimpMatrix.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>
<synopsis>
<link linkend="GimpMatrix2">GimpMatrix2</link>;
<link linkend="GimpMatrix3">GimpMatrix3</link>;
<link linkend="GimpMatrix4">GimpMatrix4</link>;
<link linkend="void">void</link> <link linkend="gimp-matrix2-identity">gimp_matrix2_identity</link> (<link linkend="GimpMatrix2">GimpMatrix2</link> *matrix);
<link linkend="void">void</link> <link linkend="gimp-matrix2-mult">gimp_matrix2_mult</link> (const <link linkend="GimpMatrix2">GimpMatrix2</link> *matrix1,
<link linkend="GimpMatrix2">GimpMatrix2</link> *matrix2);
<link linkend="void">void</link> <link linkend="gimp-matrix3-identity">gimp_matrix3_identity</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);
<link linkend="void">void</link> <link linkend="gimp-matrix3-mult">gimp_matrix3_mult</link> (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix1,
<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix2);
<link linkend="void">void</link> <link linkend="gimp-matrix3-translate">gimp_matrix3_translate</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> x,
<link linkend="gdouble">gdouble</link> y);
<link linkend="void">void</link> <link linkend="gimp-matrix3-scale">gimp_matrix3_scale</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> x,
<link linkend="gdouble">gdouble</link> y);
<link linkend="void">void</link> <link linkend="gimp-matrix3-rotate">gimp_matrix3_rotate</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> theta);
<link linkend="void">void</link> <link linkend="gimp-matrix3-xshear">gimp_matrix3_xshear</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> amount);
<link linkend="void">void</link> <link linkend="gimp-matrix3-yshear">gimp_matrix3_yshear</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> amount);
<link linkend="void">void</link> <link linkend="gimp-matrix3-affine">gimp_matrix3_affine</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> a,
<link linkend="gdouble">gdouble</link> b,
<link linkend="gdouble">gdouble</link> c,
<link linkend="gdouble">gdouble</link> d,
<link linkend="gdouble">gdouble</link> e,
<link linkend="gdouble">gdouble</link> f);
<link linkend="void">void</link> <link linkend="gimp-matrix3-transform-point">gimp_matrix3_transform_point</link> (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> x,
<link linkend="gdouble">gdouble</link> y,
<link linkend="gdouble">gdouble</link> *newx,
<link linkend="gdouble">gdouble</link> *newy);
<link linkend="gdouble">gdouble</link> <link linkend="gimp-matrix3-determinant">gimp_matrix3_determinant</link> (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);
<link linkend="void">void</link> <link linkend="gimp-matrix3-invert">gimp_matrix3_invert</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);
<link linkend="gboolean">gboolean</link> <link linkend="gimp-matrix3-is-identity">gimp_matrix3_is_identity</link> (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);
<link linkend="gboolean">gboolean</link> <link linkend="gimp-matrix3-is-diagonal">gimp_matrix3_is_diagonal</link> (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);
<link linkend="gboolean">gboolean</link> <link linkend="gimp-matrix3-is-affine">gimp_matrix3_is_affine</link> (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);
<link linkend="gboolean">gboolean</link> <link linkend="gimp-matrix3-is-simple">gimp_matrix3_is_simple</link> (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);
<link linkend="void">void</link> <link linkend="gimp-matrix4-to-deg">gimp_matrix4_to_deg</link> (const <link linkend="GimpMatrix4">GimpMatrix4</link> *matrix,
<link linkend="gdouble">gdouble</link> *a,
<link linkend="gdouble">gdouble</link> *b,
<link linkend="gdouble">gdouble</link> *c);
#define <link linkend="GIMP-TYPE-MATRIX2:CAPS">GIMP_TYPE_MATRIX2</link>
#define <link linkend="GIMP-TYPE-PARAM-MATRIX2:CAPS">GIMP_TYPE_PARAM_MATRIX2</link>
#define <link linkend="GIMP-IS-PARAM-SPEC-MATRIX2:CAPS">GIMP_IS_PARAM_SPEC_MATRIX2</link> (pspec)
<link linkend="GParamSpec">GParamSpec</link>* <link linkend="gimp-param-spec-matrix2">gimp_param_spec_matrix2</link> (const <link linkend="gchar">gchar</link> *name,
const <link linkend="gchar">gchar</link> *nick,
const <link linkend="gchar">gchar</link> *blurb,
const <link linkend="GimpMatrix2">GimpMatrix2</link> *default_value,
<link linkend="GParamFlags">GParamFlags</link> flags);
#define <link linkend="GIMP-VALUE-HOLDS-MATRIX2:CAPS">GIMP_VALUE_HOLDS_MATRIX2</link> (value)
</synopsis>
</refsynopsisdiv>
<refsect1 id="libgimpmath-GimpMatrix.description" role="desc">
<title role="desc.title">Description</title>
<para>
When doing image manipulation you will often need 3x3 transformation
matrices that define translation, rotation, scaling, shearing and
arbitrary perspective transformations using a 3x3 matrix. Here you'll
find a set of utility functions to set up those matrices and to perform
basic matrix manipulations and tests.
</para>
<para>
Each matrix class has a 2 dimensional gdouble coeff member. The
element for row r and column c of the matrix is coeff[r][c].
</para>
</refsect1>
<refsect1 id="libgimpmath-GimpMatrix.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="GimpMatrix2" role="struct">
<title>GimpMatrix2</title>
<indexterm zone="GimpMatrix2"><primary>GimpMatrix2</primary></indexterm><programlisting>typedef struct {
gdouble coeff[2][2];
} GimpMatrix2;
</programlisting>
<para>
A two by two matrix.
</para></refsect2>
<refsect2 id="GimpMatrix3" role="struct">
<title>GimpMatrix3</title>
<indexterm zone="GimpMatrix3"><primary>GimpMatrix3</primary></indexterm><programlisting>typedef struct {
gdouble coeff[3][3];
} GimpMatrix3;
</programlisting>
<para>
A three by three matrix.
</para></refsect2>
<refsect2 id="GimpMatrix4" role="struct">
<title>GimpMatrix4</title>
<indexterm zone="GimpMatrix4"><primary>GimpMatrix4</primary></indexterm><programlisting>typedef struct {
gdouble coeff[4][4];
} GimpMatrix4;
</programlisting>
<para>
A four by four matrix.
</para></refsect2>
<refsect2 id="gimp-matrix2-identity" role="function">
<title>gimp_matrix2_identity ()</title>
<indexterm zone="gimp-matrix2-identity"><primary>gimp_matrix2_identity</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix2_identity (<link linkend="GimpMatrix2">GimpMatrix2</link> *matrix);</programlisting>
<para>
Sets the matrix to the identity matrix.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> A matrix.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix2-mult" role="function">
<title>gimp_matrix2_mult ()</title>
<indexterm zone="gimp-matrix2-mult"><primary>gimp_matrix2_mult</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix2_mult (const <link linkend="GimpMatrix2">GimpMatrix2</link> *matrix1,
<link linkend="GimpMatrix2">GimpMatrix2</link> *matrix2);</programlisting>
<para>
Multiplies two matrices and puts the result into the second one.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix1</parameter>&nbsp;:</term>
<listitem><simpara> The first input matrix.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>matrix2</parameter>&nbsp;:</term>
<listitem><simpara> The second input matrix which will be overwritten by the result.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-identity" role="function">
<title>gimp_matrix3_identity ()</title>
<indexterm zone="gimp-matrix3-identity"><primary>gimp_matrix3_identity</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_identity (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);</programlisting>
<para>
Sets the matrix to the identity matrix.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> A matrix.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-mult" role="function">
<title>gimp_matrix3_mult ()</title>
<indexterm zone="gimp-matrix3-mult"><primary>gimp_matrix3_mult</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_mult (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix1,
<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix2);</programlisting>
<para>
Multiplies two matrices and puts the result into the second one.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix1</parameter>&nbsp;:</term>
<listitem><simpara> The first input matrix.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>matrix2</parameter>&nbsp;:</term>
<listitem><simpara> The second input matrix which will be overwritten by the result.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-translate" role="function">
<title>gimp_matrix3_translate ()</title>
<indexterm zone="gimp-matrix3-translate"><primary>gimp_matrix3_translate</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_translate (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> x,
<link linkend="gdouble">gdouble</link> y);</programlisting>
<para>
Translates the matrix by x and y.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be translated.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
<listitem><simpara> Translation in X direction.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>y</parameter>&nbsp;:</term>
<listitem><simpara> Translation in Y direction.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-scale" role="function">
<title>gimp_matrix3_scale ()</title>
<indexterm zone="gimp-matrix3-scale"><primary>gimp_matrix3_scale</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_scale (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> x,
<link linkend="gdouble">gdouble</link> y);</programlisting>
<para>
Scales the matrix by x and y</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be scaled.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
<listitem><simpara> X scale factor.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>y</parameter>&nbsp;:</term>
<listitem><simpara> Y scale factor.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-rotate" role="function">
<title>gimp_matrix3_rotate ()</title>
<indexterm zone="gimp-matrix3-rotate"><primary>gimp_matrix3_rotate</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_rotate (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> theta);</programlisting>
<para>
Rotates the matrix by theta degrees.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be rotated.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>theta</parameter>&nbsp;:</term>
<listitem><simpara> The angle of rotation (in radians).
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-xshear" role="function">
<title>gimp_matrix3_xshear ()</title>
<indexterm zone="gimp-matrix3-xshear"><primary>gimp_matrix3_xshear</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_xshear (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> amount);</programlisting>
<para>
Shears the matrix in the X direction.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be sheared.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>amount</parameter>&nbsp;:</term>
<listitem><simpara> X shear amount.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-yshear" role="function">
<title>gimp_matrix3_yshear ()</title>
<indexterm zone="gimp-matrix3-yshear"><primary>gimp_matrix3_yshear</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_yshear (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> amount);</programlisting>
<para>
Shears the matrix in the Y direction.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be sheared.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>amount</parameter>&nbsp;:</term>
<listitem><simpara> Y shear amount.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-affine" role="function">
<title>gimp_matrix3_affine ()</title>
<indexterm zone="gimp-matrix3-affine"><primary>gimp_matrix3_affine</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_affine (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> a,
<link linkend="gdouble">gdouble</link> b,
<link linkend="gdouble">gdouble</link> c,
<link linkend="gdouble">gdouble</link> d,
<link linkend="gdouble">gdouble</link> e,
<link linkend="gdouble">gdouble</link> f);</programlisting>
<para>
Applies the affine transformation given by six values to <parameter>matrix</parameter>.
The six values form define an affine transformation matrix as
illustrated below:
</para>
<para>
( a c e )
( b d f )
( 0 0 1 )</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The input matrix.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>a</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>b</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>c</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>d</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>e</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>f</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-transform-point" role="function">
<title>gimp_matrix3_transform_point ()</title>
<indexterm zone="gimp-matrix3-transform-point"><primary>gimp_matrix3_transform_point</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_transform_point (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix,
<link linkend="gdouble">gdouble</link> x,
<link linkend="gdouble">gdouble</link> y,
<link linkend="gdouble">gdouble</link> *newx,
<link linkend="gdouble">gdouble</link> *newy);</programlisting>
<para>
Transforms a point in 2D as specified by the transformation matrix.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The transformation matrix.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
<listitem><simpara> The source X coordinate.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>y</parameter>&nbsp;:</term>
<listitem><simpara> The source Y coordinate.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>newx</parameter>&nbsp;:</term>
<listitem><simpara> The transformed X coordinate.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>newy</parameter>&nbsp;:</term>
<listitem><simpara> The transformed Y coordinate.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-determinant" role="function">
<title>gimp_matrix3_determinant ()</title>
<indexterm zone="gimp-matrix3-determinant"><primary>gimp_matrix3_determinant</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_matrix3_determinant (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);</programlisting>
<para>
Calculates the determinant of the given matrix.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The input matrix.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The determinant.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-invert" role="function">
<title>gimp_matrix3_invert ()</title>
<indexterm zone="gimp-matrix3-invert"><primary>gimp_matrix3_invert</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix3_invert (<link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);</programlisting>
<para>
Inverts the given matrix.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be inverted.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-is-identity" role="function">
<title>gimp_matrix3_is_identity ()</title>
<indexterm zone="gimp-matrix3-is-identity"><primary>gimp_matrix3_is_identity</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gimp_matrix3_is_identity (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);</programlisting>
<para>
Checks if the given matrix is the identity matrix.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be tested.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the matrix is the identity matrix, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-is-diagonal" role="function">
<title>gimp_matrix3_is_diagonal ()</title>
<indexterm zone="gimp-matrix3-is-diagonal"><primary>gimp_matrix3_is_diagonal</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gimp_matrix3_is_diagonal (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);</programlisting>
<para>
Checks if the given matrix is diagonal.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be tested.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the matrix is diagonal, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix3-is-affine" role="function" condition="since:GIMP 2.4">
<title>gimp_matrix3_is_affine ()</title>
<indexterm zone="gimp-matrix3-is-affine" role="GIMP 2.4"><primary>gimp_matrix3_is_affine</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gimp_matrix3_is_affine (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);</programlisting>
<para>
Checks if the given matrix defines an affine transformation.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be tested.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the matrix defines an affine transformation,
<link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise
</simpara></listitem></varlistentry>
</variablelist><para role="since">Since GIMP 2.4
</para></refsect2>
<refsect2 id="gimp-matrix3-is-simple" role="function">
<title>gimp_matrix3_is_simple ()</title>
<indexterm zone="gimp-matrix3-is-simple"><primary>gimp_matrix3_is_simple</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gimp_matrix3_is_simple (const <link linkend="GimpMatrix3">GimpMatrix3</link> *matrix);</programlisting>
<para>
Checks if we'll need to interpolate when applying this matrix as
a transformation.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> The matrix that is to be tested.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if all entries of the upper left 2x2 matrix are
either 0 or 1, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-matrix4-to-deg" role="function">
<title>gimp_matrix4_to_deg ()</title>
<indexterm zone="gimp-matrix4-to-deg"><primary>gimp_matrix4_to_deg</primary></indexterm><programlisting><link linkend="void">void</link> gimp_matrix4_to_deg (const <link linkend="GimpMatrix4">GimpMatrix4</link> *matrix,
<link linkend="gdouble">gdouble</link> *a,
<link linkend="gdouble">gdouble</link> *b,
<link linkend="gdouble">gdouble</link> *c);</programlisting>
<para>
</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>a</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>b</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>c</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="GIMP-TYPE-MATRIX2:CAPS" role="macro">
<title>GIMP_TYPE_MATRIX2</title>
<indexterm zone="GIMP-TYPE-MATRIX2:CAPS"><primary>GIMP_TYPE_MATRIX2</primary></indexterm><programlisting>#define GIMP_TYPE_MATRIX2 (gimp_matrix2_get_type ())
</programlisting>
<para>
</para></refsect2>
<refsect2 id="GIMP-TYPE-PARAM-MATRIX2:CAPS" role="macro">
<title>GIMP_TYPE_PARAM_MATRIX2</title>
<indexterm zone="GIMP-TYPE-PARAM-MATRIX2:CAPS"><primary>GIMP_TYPE_PARAM_MATRIX2</primary></indexterm><programlisting>#define GIMP_TYPE_PARAM_MATRIX2 (gimp_param_matrix2_get_type ())
</programlisting>
<para>
</para></refsect2>
<refsect2 id="GIMP-IS-PARAM-SPEC-MATRIX2:CAPS" role="macro">
<title>GIMP_IS_PARAM_SPEC_MATRIX2()</title>
<indexterm zone="GIMP-IS-PARAM-SPEC-MATRIX2:CAPS"><primary>GIMP_IS_PARAM_SPEC_MATRIX2</primary></indexterm><programlisting>#define GIMP_IS_PARAM_SPEC_MATRIX2(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_MATRIX2))
</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>pspec</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gimp-param-spec-matrix2" role="function" condition="since:GIMP 2.4">
<title>gimp_param_spec_matrix2 ()</title>
<indexterm zone="gimp-param-spec-matrix2" role="GIMP 2.4"><primary>gimp_param_spec_matrix2</primary></indexterm><programlisting><link linkend="GParamSpec">GParamSpec</link>* gimp_param_spec_matrix2 (const <link linkend="gchar">gchar</link> *name,
const <link linkend="gchar">gchar</link> *nick,
const <link linkend="gchar">gchar</link> *blurb,
const <link linkend="GimpMatrix2">GimpMatrix2</link> *default_value,
<link linkend="GParamFlags">GParamFlags</link> flags);</programlisting>
<para>
Creates a param spec to hold a <link linkend="GimpMatrix2"><type>GimpMatrix2</type></link> value.
See <link linkend="g-param-spec-internal"><function>g_param_spec_internal()</function></link> for more information.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
<listitem><simpara> Canonical name of the param
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nick</parameter>&nbsp;:</term>
<listitem><simpara> Nickname of the param
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>blurb</parameter>&nbsp;:</term>
<listitem><simpara> Brief desciption of param.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>default_value</parameter>&nbsp;:</term>
<listitem><simpara> Value to use if none is assigned.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>flags</parameter>&nbsp;:</term>
<listitem><simpara> a combination of <link linkend="GParamFlags"><type>GParamFlags</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly allocated <link linkend="GParamSpec"><type>GParamSpec</type></link> instance
</simpara></listitem></varlistentry>
</variablelist><para role="since">Since GIMP 2.4
</para></refsect2>
<refsect2 id="GIMP-VALUE-HOLDS-MATRIX2:CAPS" role="macro">
<title>GIMP_VALUE_HOLDS_MATRIX2()</title>
<indexterm zone="GIMP-VALUE-HOLDS-MATRIX2:CAPS"><primary>GIMP_VALUE_HOLDS_MATRIX2</primary></indexterm><programlisting>#define GIMP_VALUE_HOLDS_MATRIX2(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_MATRIX2))
</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
</refsect1>
<refsect1 id="libgimpmath-GimpMatrix.see-also">
<title>See Also</title>
<para>
<link linkend="GimpVector2"><type>GimpVector2</type></link>
</para>
<para>
<link linkend="GimpVector3"><type>GimpVector3</type></link>
</para>
<para>
<link linkend="GimpVector4"><type>GimpVector4</type></link>
</para>
</refsect1>
</refentry>