mirror of
https://github.com/brl/mutter.git
synced 2024-11-26 10:00:45 -05:00
types: Add ClutterMatrix
A simple typedef to CoglMatrix, that we can use for GObject properties and signal marshallers, without requiring Cogl to change.
This commit is contained in:
parent
3f732cdc2b
commit
25ba5374fe
@ -1266,3 +1266,120 @@ clutter_rect_progress (const GValue *a,
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* ClutterMatrix:
|
||||
*
|
||||
* A type representing a 4x4 matrix.
|
||||
*
|
||||
* It is identicaly to #CoglMatrix.
|
||||
*
|
||||
* Since: 1.12
|
||||
*/
|
||||
|
||||
static gpointer
|
||||
clutter_matrix_copy (gpointer data)
|
||||
{
|
||||
return g_memdup (data, sizeof (ClutterMatrix));
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (ClutterMatrix, clutter_matrix,
|
||||
clutter_matrix_copy,
|
||||
clutter_matrix_free)
|
||||
|
||||
/**
|
||||
* clutter_matrix_alloc:
|
||||
*
|
||||
* Allocates enough memory to hold a #ClutterMatrix.
|
||||
*
|
||||
* Return value: (transfer full): the newly allocated #ClutterMatrix
|
||||
*
|
||||
* Since: 1.12
|
||||
*/
|
||||
ClutterMatrix *
|
||||
clutter_matrix_alloc (void)
|
||||
{
|
||||
return g_new0 (ClutterMatrix, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_matrix_free:
|
||||
* @matrix: (allow-none): a #ClutterMatrix
|
||||
*
|
||||
* Frees the memory allocated by clutter_matrix_alloc().
|
||||
*
|
||||
* Since: 1.12
|
||||
*/
|
||||
void
|
||||
clutter_matrix_free (ClutterMatrix *matrix)
|
||||
{
|
||||
g_free (matrix);
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_matrix_init_identity:
|
||||
* @matrix: a #ClutterMatrix
|
||||
*
|
||||
* Initializes @matrix with the identity matrix, i.e.:
|
||||
*
|
||||
* |[
|
||||
* .xx = 1.0, .xy = 0.0, .xz = 0.0, .xw = 0.0
|
||||
* .yx = 0.0, .yy = 1.0, .yz = 0.0, .yw = 0.0
|
||||
* .zx = 0.0, .zy = 0.0, .zz = 1.0, .zw = 0.0
|
||||
* .wx = 0.0, .wy = 0.0, .wz = 0.0, .ww = 1.0
|
||||
* ]|
|
||||
*
|
||||
* Return value: (transfer none): the initialized #ClutterMatrix
|
||||
*
|
||||
* Since: 1.12
|
||||
*/
|
||||
ClutterMatrix *
|
||||
clutter_matrix_init_identity (ClutterMatrix *matrix)
|
||||
{
|
||||
cogl_matrix_init_identity (matrix);
|
||||
|
||||
return matrix;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_matrix_init_from_array:
|
||||
* @matrix: a #ClutterMatrix
|
||||
* @values: (array fixed-size=16): a C array of 16 floating point values,
|
||||
* representing a 4x4 matrix, with column-major order
|
||||
*
|
||||
* Initializes @matrix with the contents of a C array of floating point
|
||||
* values.
|
||||
*
|
||||
* Return value: (transfer none): the initialzed #ClutterMatrix
|
||||
*
|
||||
* Since: 1.12
|
||||
*/
|
||||
ClutterMatrix *
|
||||
clutter_matrix_init_from_array (ClutterMatrix *matrix,
|
||||
const float values[16])
|
||||
{
|
||||
cogl_matrix_init_from_array (matrix, values);
|
||||
|
||||
return matrix;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_matrix_init_from_matrix:
|
||||
* @a: the #ClutterMatrix to initialize
|
||||
* @b: the #ClutterMatrix to copy
|
||||
*
|
||||
* Initializes the #ClutterMatrix @a with the contents of the
|
||||
* #ClutterMatrix @b.
|
||||
*
|
||||
* Return value: (transfer none): the initialized #ClutterMatrix
|
||||
*
|
||||
* Since: 1.12
|
||||
*/
|
||||
ClutterMatrix *
|
||||
clutter_matrix_init_from_matrix (ClutterMatrix *a,
|
||||
ClutterMatrix *b)
|
||||
{
|
||||
memcpy (b, a, sizeof (ClutterMatrix));
|
||||
|
||||
return a;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@
|
||||
#define __CLUTTER_TYPES_H__
|
||||
|
||||
#include <cairo.h>
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
#include <clutter/clutter-macros.h>
|
||||
#include <clutter/clutter-enums.h>
|
||||
|
||||
@ -40,6 +40,7 @@ G_BEGIN_DECLS
|
||||
#define CLUTTER_TYPE_GEOMETRY (clutter_geometry_get_type ())
|
||||
#define CLUTTER_TYPE_KNOT (clutter_knot_get_type ())
|
||||
#define CLUTTER_TYPE_MARGIN (clutter_margin_get_type ())
|
||||
#define CLUTTER_TYPE_MATRIX (clutter_matrix_get_type ())
|
||||
#define CLUTTER_TYPE_PAINT_VOLUME (clutter_paint_volume_get_type ())
|
||||
#define CLUTTER_TYPE_PERSPECTIVE (clutter_perspective_get_type ())
|
||||
#define CLUTTER_TYPE_VERTEX (clutter_vertex_get_type ())
|
||||
@ -93,6 +94,8 @@ typedef struct _ClutterState ClutterState;
|
||||
|
||||
typedef struct _ClutterInputDevice ClutterInputDevice;
|
||||
|
||||
typedef CoglMatrix ClutterMatrix;
|
||||
|
||||
typedef union _ClutterEvent ClutterEvent;
|
||||
|
||||
/**
|
||||
@ -673,6 +676,16 @@ typedef gboolean (* ClutterProgressFunc) (const GValue *a,
|
||||
void clutter_interval_register_progress_func (GType value_type,
|
||||
ClutterProgressFunc func);
|
||||
|
||||
GType clutter_matrix_get_type (void) G_GNUC_CONST;
|
||||
|
||||
ClutterMatrix * clutter_matrix_alloc (void);
|
||||
ClutterMatrix * clutter_matrix_init_identity (ClutterMatrix *matrix);
|
||||
ClutterMatrix * clutter_matrix_init_from_array (ClutterMatrix *matrix,
|
||||
const float values[16]);
|
||||
ClutterMatrix * clutter_matrix_init_from_matrix (ClutterMatrix *a,
|
||||
ClutterMatrix *b);
|
||||
void clutter_matrix_free (ClutterMatrix *matrix);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __CLUTTER_TYPES_H__ */
|
||||
|
@ -899,6 +899,12 @@ clutter_margin_copy
|
||||
clutter_margin_free
|
||||
clutter_margin_get_type
|
||||
clutter_margin_new
|
||||
clutter_matrix_alloc
|
||||
clutter_matrix_free
|
||||
clutter_matrix_get_type
|
||||
clutter_matrix_init_identity
|
||||
clutter_matrix_init_from_array
|
||||
clutter_matrix_init_from_matrix
|
||||
clutter_media_get_audio_volume
|
||||
clutter_media_get_buffer_fill
|
||||
clutter_media_get_can_seek
|
||||
|
Loading…
Reference in New Issue
Block a user