| Top | 
| struct | GimpMatrix2 | 
| struct | GimpMatrix3 | 
| struct | GimpMatrix4 | 
| #define | GIMP_TYPE_MATRIX2 | 
| #define | GIMP_TYPE_PARAM_MATRIX2 | 
| #define | GIMP_TYPE_MATRIX3 | 
| #define | GIMP_TYPE_PARAM_MATRIX3 | 
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.
Each matrix class has a 2 dimensional gdouble coeff member. The element for row r and column c of the matrix is coeffr.
void
gimp_matrix2_identity (GimpMatrix2 *matrix);
Sets the matrix to the identity matrix.
void gimp_matrix2_mult (const GimpMatrix2 *matrix1,GimpMatrix2 *matrix2);
Multiplies two matrices and puts the result into the second one.
gdouble
gimp_matrix2_determinant (const GimpMatrix2 *matrix);
Calculates the determinant of the given matrix.
Since: 2.10.16
void
gimp_matrix2_invert (GimpMatrix2 *matrix);
Inverts the given matrix.
Since: 2.10.16
void gimp_matrix2_transform_point (const GimpMatrix2 *matrix,gdouble x,gdouble y,gdouble *newx,gdouble *newy);
Transforms a point in 2D as specified by the transformation matrix.
matrix  | 
The transformation matrix.  | 
|
x  | 
The source X coordinate.  | 
|
y  | 
The source Y coordinate.  | 
|
newx  | 
The transformed X coordinate.  | 
|
newy  | 
The transformed Y coordinate.  | 
Since: 2.10.16
void
gimp_matrix3_identity (GimpMatrix3 *matrix);
Sets the matrix to the identity matrix.
void gimp_matrix3_mult (const GimpMatrix3 *matrix1,GimpMatrix3 *matrix2);
Multiplies two matrices and puts the result into the second one.
void gimp_matrix3_translate (GimpMatrix3 *matrix,gdouble x,gdouble y);
Translates the matrix by x and y.
void gimp_matrix3_scale (GimpMatrix3 *matrix,gdouble x,gdouble y);
Scales the matrix by x and y
void gimp_matrix3_rotate (GimpMatrix3 *matrix,gdouble theta);
Rotates the matrix by theta degrees.
void gimp_matrix3_xshear (GimpMatrix3 *matrix,gdouble amount);
Shears the matrix in the X direction.
void gimp_matrix3_yshear (GimpMatrix3 *matrix,gdouble amount);
Shears the matrix in the Y direction.
void gimp_matrix3_affine (GimpMatrix3 *matrix,gdouble a,gdouble b,gdouble c,gdouble d,gdouble e,gdouble f);
Applies the affine transformation given by six values to matrix
.
The six values form define an affine transformation matrix as
illustrated below:
( a c e ) ( b d f ) ( 0 0 1 )
void gimp_matrix3_transform_point (const GimpMatrix3 *matrix,gdouble x,gdouble y,gdouble *newx,gdouble *newy);
Transforms a point in 2D as specified by the transformation matrix.
gdouble
gimp_matrix3_determinant (const GimpMatrix3 *matrix);
Calculates the determinant of the given matrix.
gboolean
gimp_matrix3_is_identity (const GimpMatrix3 *matrix);
Checks if the given matrix is the identity matrix.
gboolean
gimp_matrix3_is_diagonal (const GimpMatrix3 *matrix);
Checks if the given matrix is diagonal.
gboolean
gimp_matrix3_is_affine (const GimpMatrix3 *matrix);
Checks if the given matrix defines an affine transformation.
Since: 2.4
gboolean
gimp_matrix3_is_simple (const GimpMatrix3 *matrix);
Checks if we'll need to interpolate when applying this matrix as a transformation.
gboolean gimp_matrix3_equal (const GimpMatrix3 *matrix1,const GimpMatrix3 *matrix2);
Checks if two matrices are equal.
Since: 2.10.16
void
gimp_matrix4_identity (GimpMatrix4 *matrix);
Sets the matrix to the identity matrix.
Since: 2.10.16
void gimp_matrix4_mult (const GimpMatrix4 *matrix1,GimpMatrix4 *matrix2);
Multiplies two matrices and puts the result into the second one.
matrix1  | 
The first input matrix.  | 
|
matrix2  | 
The second input matrix which will be overwritten by the result.  | 
Since: 2.10.16
void gimp_matrix4_to_deg (const GimpMatrix4 *matrix,gdouble *a,gdouble *b,gdouble *c);
gdouble gimp_matrix4_transform_point (const GimpMatrix4 *matrix,gdouble x,gdouble y,gdouble z,gdouble *newx,gdouble *newy,gdouble *newz);
Transforms a point in 3D as specified by the transformation matrix.
matrix  | 
The transformation matrix.  | 
|
x  | 
The source X coordinate.  | 
|
y  | 
The source Y coordinate.  | 
|
z  | 
The source Z coordinate.  | 
|
newx  | 
The transformed X coordinate.  | 
|
newy  | 
The transformed Y coordinate.  | 
|
newz  | 
The transformed Z coordinate.  | 
Since: 2.10.16
#define GIMP_IS_PARAM_SPEC_MATRIX2(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_MATRIX2))
GParamSpec * gimp_param_spec_matrix2 (const gchar *name,const gchar *nick,const gchar *blurb,const GimpMatrix2 *default_value,GParamFlags flags);
Creates a param spec to hold a GimpMatrix2 value.
See g_param_spec_internal() for more information.
name  | 
Canonical name of the param  | 
|
nick  | 
Nickname of the param  | 
|
blurb  | 
Brief description of param.  | 
|
default_value  | 
Value to use if none is assigned.  | 
|
flags  | 
a combination of GParamFlags  | 
Since: 2.4
#define GIMP_VALUE_HOLDS_MATRIX2(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_MATRIX2))
#define GIMP_IS_PARAM_SPEC_MATRIX3(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_MATRIX3))
GParamSpec * gimp_param_spec_matrix3 (const gchar *name,const gchar *nick,const gchar *blurb,const GimpMatrix3 *default_value,GParamFlags flags);
Creates a param spec to hold a GimpMatrix3 value.
See g_param_spec_internal() for more information.
name  | 
Canonical name of the param  | 
|
nick  | 
Nickname of the param  | 
|
blurb  | 
Brief description of param.  | 
|
default_value  | 
Value to use if none is assigned.  | 
|
flags  | 
a combination of GParamFlags  | 
Since: 2.8