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