|
Packit |
bc1512 |
#ifndef __GEGL_MATRIX_H__
|
|
Packit |
bc1512 |
#define __GEGL_MATRIX_H__
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#include <glib.h>
|
|
Packit |
bc1512 |
#include <glib-object.h>
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
G_BEGIN_DECLS
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/* Currenly only used internally.
|
|
Packit |
bc1512 |
* Note: If making use of this in public API, add a boxed type for introspection
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
typedef struct {
|
|
Packit |
bc1512 |
gdouble coeff[2][2];
|
|
Packit |
bc1512 |
} GeglMatrix2;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/***
|
|
Packit |
bc1512 |
* GeglMatrix3:
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* #GeglMatrix3 is a 3x3 matrix for GEGL.
|
|
Packit |
bc1512 |
* Matrixes are currently used by #GeglPath and the affine operations,
|
|
Packit |
bc1512 |
* they might be used more centrally in the core of GEGL later.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
typedef struct {
|
|
Packit |
bc1512 |
gdouble coeff[3][3];
|
|
Packit |
bc1512 |
} GeglMatrix3;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#define GEGL_TYPE_MATRIX3 (gegl_matrix3_get_type ())
|
|
Packit |
bc1512 |
#define GEGL_VALUE_HOLDS_MATRIX3(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GEGL_TYPE_MATRIX3))
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_get_type:
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Returns: the #GType for GeglMatrix3 objects
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
**/
|
|
Packit |
bc1512 |
GType gegl_matrix3_get_type (void) G_GNUC_CONST;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_new:
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Return: A newly allocated #GeglMatrix3
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
GeglMatrix3 * gegl_matrix3_new (void);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_identity:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Set the provided @matrix to the identity matrix.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
void gegl_matrix3_identity (GeglMatrix3 *matrix);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_equal:
|
|
Packit |
bc1512 |
* @matrix1: a #GeglMatrix
|
|
Packit |
bc1512 |
* @matrix2: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Check if two matrices are equal.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Returns TRUE if the matrices are equal.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
gboolean gegl_matrix3_equal (GeglMatrix3 *matrix1,
|
|
Packit |
bc1512 |
GeglMatrix3 *matrix2);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_is_identity:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Check if a matrix is the identity matrix.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Returns TRUE if the matrix is the identity matrix.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
gboolean gegl_matrix3_is_identity (GeglMatrix3 *matrix);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_is_scale:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Check if a matrix only does scaling.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Returns TRUE if the matrix only does scaling.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
gboolean gegl_matrix3_is_scale (GeglMatrix3 *matrix);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_is_translate:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Check if a matrix only does translation.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Returns TRUE if the matrix only does trasnlation.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
gboolean gegl_matrix3_is_translate (GeglMatrix3 *matrix);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_copy_into:
|
|
Packit |
bc1512 |
* @dst: a #GeglMatrix
|
|
Packit |
bc1512 |
* @src: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Copies the matrix in @src into @dst.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
void gegl_matrix3_copy_into (GeglMatrix3 *dst,
|
|
Packit |
bc1512 |
GeglMatrix3 *src);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_copy:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Returns a copy of @src.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
GeglMatrix3 * gegl_matrix3_copy (GeglMatrix3 *matrix);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_determinant:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Returns the determinant for the matrix.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
gdouble gegl_matrix3_determinant (GeglMatrix3 *matrix);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_invert:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Inverts @matrix.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
void gegl_matrix3_invert (GeglMatrix3 *matrix);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_multiply:
|
|
Packit |
bc1512 |
* @left: a #GeglMatrix
|
|
Packit |
bc1512 |
* @right: a #GeglMatrix
|
|
Packit |
bc1512 |
* @product: a #GeglMatrix to store the result in.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Multiples @product = @left ยท @right
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
void gegl_matrix3_multiply (GeglMatrix3 *left,
|
|
Packit |
bc1512 |
GeglMatrix3 *right,
|
|
Packit |
bc1512 |
GeglMatrix3 *product);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_originate:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
* @x: x coordinate of new origin
|
|
Packit |
bc1512 |
* @y: y coordinate of new origin.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Hmm not quite sure what this does.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
void gegl_matrix3_originate (GeglMatrix3 *matrix,
|
|
Packit |
bc1512 |
gdouble x,
|
|
Packit |
bc1512 |
gdouble y);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_transform_point:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
* @x: pointer to an x coordinate
|
|
Packit |
bc1512 |
* @y: pointer to an y coordinate
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* transforms the coordinates provided in @x and @y and changes to the
|
|
Packit |
bc1512 |
* coordinates gotten when the transformed with the matrix.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
void gegl_matrix3_transform_point (GeglMatrix3 *matrix,
|
|
Packit |
bc1512 |
gdouble *x,
|
|
Packit |
bc1512 |
gdouble *y);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_parse_string:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
* @string: a string describing the matrix (right now a small subset of the
|
|
Packit |
bc1512 |
* transform strings allowed by SVG)
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Parse a transofmation matrix from a string.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
void gegl_matrix3_parse_string (GeglMatrix3 *matrix,
|
|
Packit |
bc1512 |
const gchar *string);
|
|
Packit |
bc1512 |
/**
|
|
Packit |
bc1512 |
* gegl_matrix3_to_string:
|
|
Packit |
bc1512 |
* @matrix: a #GeglMatrix
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Serialize a #GeglMatrix to a string.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* Returns a freshly allocated string representing that #GeglMatrix, the
|
|
Packit |
bc1512 |
* returned string should be g_free()'d.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
gchar * gegl_matrix3_to_string (GeglMatrix3 *matrix);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/***
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
G_END_DECLS
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#endif
|