Blame gegl/gegl-matrix.h

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