mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
Remove ClutterMatrix
Good bye. You won't be missed. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1439
This commit is contained in:
parent
eee2e331fd
commit
dc9c1f8983
@ -1068,10 +1068,10 @@ static inline void clutter_actor_set_margin_internal (ClutterActor *self,
|
|||||||
gfloat margin,
|
gfloat margin,
|
||||||
GParamSpec *pspec);
|
GParamSpec *pspec);
|
||||||
|
|
||||||
static void clutter_actor_set_transform_internal (ClutterActor *self,
|
static void clutter_actor_set_transform_internal (ClutterActor *self,
|
||||||
const ClutterMatrix *transform);
|
const CoglMatrix *transform);
|
||||||
static void clutter_actor_set_child_transform_internal (ClutterActor *self,
|
static void clutter_actor_set_child_transform_internal (ClutterActor *self,
|
||||||
const ClutterMatrix *transform);
|
const CoglMatrix *transform);
|
||||||
|
|
||||||
static void clutter_actor_realize_internal (ClutterActor *self);
|
static void clutter_actor_realize_internal (ClutterActor *self);
|
||||||
static void clutter_actor_unrealize_internal (ClutterActor *self);
|
static void clutter_actor_unrealize_internal (ClutterActor *self);
|
||||||
@ -3053,8 +3053,8 @@ clutter_actor_get_abs_allocation_vertices (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_actor_real_apply_transform (ClutterActor *self,
|
clutter_actor_real_apply_transform (ClutterActor *self,
|
||||||
ClutterMatrix *matrix)
|
CoglMatrix *matrix)
|
||||||
{
|
{
|
||||||
ClutterActorPrivate *priv = self->priv;
|
ClutterActorPrivate *priv = self->priv;
|
||||||
const ClutterTransformInfo *info;
|
const ClutterTransformInfo *info;
|
||||||
@ -3085,10 +3085,10 @@ clutter_actor_real_apply_transform (ClutterActor *self,
|
|||||||
const ClutterTransformInfo *parent_info;
|
const ClutterTransformInfo *parent_info;
|
||||||
|
|
||||||
parent_info = _clutter_actor_get_transform_info_or_defaults (priv->parent);
|
parent_info = _clutter_actor_get_transform_info_or_defaults (priv->parent);
|
||||||
clutter_matrix_init_from_matrix (matrix, &(parent_info->child_transform));
|
cogl_matrix_init_from_matrix (matrix, &(parent_info->child_transform));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
clutter_matrix_init_identity (matrix);
|
cogl_matrix_init_identity (matrix);
|
||||||
|
|
||||||
/* if we have an overriding transformation, we use that, and get out */
|
/* if we have an overriding transformation, we use that, and get out */
|
||||||
if (info->transform_set)
|
if (info->transform_set)
|
||||||
@ -3146,8 +3146,8 @@ roll_back_pivot:
|
|||||||
/* Applies the transforms associated with this actor to the given
|
/* Applies the transforms associated with this actor to the given
|
||||||
* matrix. */
|
* matrix. */
|
||||||
void
|
void
|
||||||
_clutter_actor_apply_modelview_transform (ClutterActor *self,
|
_clutter_actor_apply_modelview_transform (ClutterActor *self,
|
||||||
ClutterMatrix *matrix)
|
CoglMatrix *matrix)
|
||||||
{
|
{
|
||||||
ClutterActorPrivate *priv = self->priv;
|
ClutterActorPrivate *priv = self->priv;
|
||||||
|
|
||||||
@ -3167,7 +3167,7 @@ out:
|
|||||||
* @self: The actor whose coordinate space you want to transform from.
|
* @self: The actor whose coordinate space you want to transform from.
|
||||||
* @ancestor: The ancestor actor whose coordinate space you want to transform too
|
* @ancestor: The ancestor actor whose coordinate space you want to transform too
|
||||||
* or %NULL if you want to transform all the way to eye coordinates.
|
* or %NULL if you want to transform all the way to eye coordinates.
|
||||||
* @matrix: A #ClutterMatrix to apply the transformation too.
|
* @matrix: A #CoglMatrix to apply the transformation too.
|
||||||
*
|
*
|
||||||
* This multiplies a transform with @matrix that will transform coordinates
|
* This multiplies a transform with @matrix that will transform coordinates
|
||||||
* from the coordinate space of @self into the coordinate space of @ancestor.
|
* from the coordinate space of @self into the coordinate space of @ancestor.
|
||||||
@ -4432,9 +4432,9 @@ static const ClutterTransformInfo default_transform_info = {
|
|||||||
GRAPHENE_POINT_INIT_ZERO, /* pivot */
|
GRAPHENE_POINT_INIT_ZERO, /* pivot */
|
||||||
0.f, /* pivot-z */
|
0.f, /* pivot-z */
|
||||||
|
|
||||||
CLUTTER_MATRIX_INIT_IDENTITY,
|
COGL_MATRIX_INIT_IDENTITY,
|
||||||
FALSE, /* transform */
|
FALSE, /* transform */
|
||||||
CLUTTER_MATRIX_INIT_IDENTITY,
|
COGL_MATRIX_INIT_IDENTITY,
|
||||||
FALSE, /* child-transform */
|
FALSE, /* child-transform */
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -5456,7 +5456,7 @@ clutter_actor_get_property (GObject *object,
|
|||||||
|
|
||||||
case PROP_TRANSFORM:
|
case PROP_TRANSFORM:
|
||||||
{
|
{
|
||||||
ClutterMatrix m;
|
CoglMatrix m;
|
||||||
|
|
||||||
clutter_actor_get_transform (actor, &m);
|
clutter_actor_get_transform (actor, &m);
|
||||||
g_value_set_boxed (value, &m);
|
g_value_set_boxed (value, &m);
|
||||||
@ -5474,7 +5474,7 @@ clutter_actor_get_property (GObject *object,
|
|||||||
|
|
||||||
case PROP_CHILD_TRANSFORM:
|
case PROP_CHILD_TRANSFORM:
|
||||||
{
|
{
|
||||||
ClutterMatrix m;
|
CoglMatrix m;
|
||||||
|
|
||||||
clutter_actor_get_child_transform (actor, &m);
|
clutter_actor_get_child_transform (actor, &m);
|
||||||
g_value_set_boxed (value, &m);
|
g_value_set_boxed (value, &m);
|
||||||
@ -6865,7 +6865,7 @@ clutter_actor_class_init (ClutterActorClass *klass)
|
|||||||
*
|
*
|
||||||
* Application code should rarely need to use this function directly.
|
* Application code should rarely need to use this function directly.
|
||||||
*
|
*
|
||||||
* Setting this property with a #ClutterMatrix will set the
|
* Setting this property with a #CoglMatrix will set the
|
||||||
* #ClutterActor:transform-set property to %TRUE as a side effect;
|
* #ClutterActor:transform-set property to %TRUE as a side effect;
|
||||||
* setting this property with %NULL will set the
|
* setting this property with %NULL will set the
|
||||||
* #ClutterActor:transform-set property to %FALSE.
|
* #ClutterActor:transform-set property to %FALSE.
|
||||||
@ -6878,7 +6878,7 @@ clutter_actor_class_init (ClutterActorClass *klass)
|
|||||||
g_param_spec_boxed ("transform",
|
g_param_spec_boxed ("transform",
|
||||||
P_("Transform"),
|
P_("Transform"),
|
||||||
P_("Transformation matrix"),
|
P_("Transformation matrix"),
|
||||||
CLUTTER_TYPE_MATRIX,
|
COGL_GTYPE_TYPE_MATRIX,
|
||||||
G_PARAM_READWRITE |
|
G_PARAM_READWRITE |
|
||||||
G_PARAM_STATIC_STRINGS |
|
G_PARAM_STATIC_STRINGS |
|
||||||
CLUTTER_PARAM_ANIMATABLE);
|
CLUTTER_PARAM_ANIMATABLE);
|
||||||
@ -6903,7 +6903,7 @@ clutter_actor_class_init (ClutterActorClass *klass)
|
|||||||
*
|
*
|
||||||
* Applies a transformation matrix on each child of an actor.
|
* Applies a transformation matrix on each child of an actor.
|
||||||
*
|
*
|
||||||
* Setting this property with a #ClutterMatrix will set the
|
* Setting this property with a #CoglMatrix will set the
|
||||||
* #ClutterActor:child-transform-set property to %TRUE as a side effect;
|
* #ClutterActor:child-transform-set property to %TRUE as a side effect;
|
||||||
* setting this property with %NULL will set the
|
* setting this property with %NULL will set the
|
||||||
* #ClutterActor:child-transform-set property to %FALSE.
|
* #ClutterActor:child-transform-set property to %FALSE.
|
||||||
@ -6916,7 +6916,7 @@ clutter_actor_class_init (ClutterActorClass *klass)
|
|||||||
g_param_spec_boxed ("child-transform",
|
g_param_spec_boxed ("child-transform",
|
||||||
P_("Child Transform"),
|
P_("Child Transform"),
|
||||||
P_("Children transformation matrix"),
|
P_("Children transformation matrix"),
|
||||||
CLUTTER_TYPE_MATRIX,
|
COGL_GTYPE_TYPE_MATRIX,
|
||||||
G_PARAM_READWRITE |
|
G_PARAM_READWRITE |
|
||||||
G_PARAM_STATIC_STRINGS |
|
G_PARAM_STATIC_STRINGS |
|
||||||
CLUTTER_PARAM_ANIMATABLE);
|
CLUTTER_PARAM_ANIMATABLE);
|
||||||
@ -14772,8 +14772,8 @@ clutter_actor_unset_flags (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_actor_set_transform_internal (ClutterActor *self,
|
clutter_actor_set_transform_internal (ClutterActor *self,
|
||||||
const ClutterMatrix *transform)
|
const CoglMatrix *transform)
|
||||||
{
|
{
|
||||||
ClutterTransformInfo *info;
|
ClutterTransformInfo *info;
|
||||||
gboolean was_set;
|
gboolean was_set;
|
||||||
@ -14801,7 +14801,7 @@ clutter_actor_set_transform_internal (ClutterActor *self,
|
|||||||
/**
|
/**
|
||||||
* clutter_actor_set_transform:
|
* clutter_actor_set_transform:
|
||||||
* @self: a #ClutterActor
|
* @self: a #ClutterActor
|
||||||
* @transform: (allow-none): a #ClutterMatrix, or %NULL to
|
* @transform: (allow-none): a #CoglMatrix, or %NULL to
|
||||||
* unset a custom transformation
|
* unset a custom transformation
|
||||||
*
|
*
|
||||||
* Overrides the transformations of a #ClutterActor with a custom
|
* Overrides the transformations of a #ClutterActor with a custom
|
||||||
@ -14813,20 +14813,20 @@ clutter_actor_set_transform_internal (ClutterActor *self,
|
|||||||
* Since: 1.12
|
* Since: 1.12
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_actor_set_transform (ClutterActor *self,
|
clutter_actor_set_transform (ClutterActor *self,
|
||||||
const ClutterMatrix *transform)
|
const CoglMatrix *transform)
|
||||||
{
|
{
|
||||||
const ClutterTransformInfo *info;
|
const ClutterTransformInfo *info;
|
||||||
ClutterMatrix new_transform;
|
CoglMatrix new_transform;
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
info = _clutter_actor_get_transform_info_or_defaults (self);
|
info = _clutter_actor_get_transform_info_or_defaults (self);
|
||||||
|
|
||||||
if (transform != NULL)
|
if (transform != NULL)
|
||||||
clutter_matrix_init_from_matrix (&new_transform, transform);
|
cogl_matrix_init_from_matrix (&new_transform, transform);
|
||||||
else
|
else
|
||||||
clutter_matrix_init_identity (&new_transform);
|
cogl_matrix_init_identity (&new_transform);
|
||||||
|
|
||||||
_clutter_actor_create_transition (self, obj_props[PROP_TRANSFORM],
|
_clutter_actor_create_transition (self, obj_props[PROP_TRANSFORM],
|
||||||
&info->transform,
|
&info->transform,
|
||||||
@ -14836,15 +14836,15 @@ clutter_actor_set_transform (ClutterActor *self,
|
|||||||
/**
|
/**
|
||||||
* clutter_actor_get_transform:
|
* clutter_actor_get_transform:
|
||||||
* @self: a #ClutterActor
|
* @self: a #ClutterActor
|
||||||
* @transform: (out caller-allocates): a #ClutterMatrix
|
* @transform: (out caller-allocates): a #CoglMatrix
|
||||||
*
|
*
|
||||||
* Retrieves the current transformation matrix of a #ClutterActor.
|
* Retrieves the current transformation matrix of a #ClutterActor.
|
||||||
*
|
*
|
||||||
* Since: 1.12
|
* Since: 1.12
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_actor_get_transform (ClutterActor *self,
|
clutter_actor_get_transform (ClutterActor *self,
|
||||||
ClutterMatrix *transform)
|
CoglMatrix *transform)
|
||||||
{
|
{
|
||||||
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
g_return_if_fail (transform != NULL);
|
g_return_if_fail (transform != NULL);
|
||||||
@ -19383,8 +19383,8 @@ done:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_actor_set_child_transform_internal (ClutterActor *self,
|
clutter_actor_set_child_transform_internal (ClutterActor *self,
|
||||||
const ClutterMatrix *transform)
|
const CoglMatrix *transform)
|
||||||
{
|
{
|
||||||
ClutterTransformInfo *info = _clutter_actor_get_transform_info (self);
|
ClutterTransformInfo *info = _clutter_actor_get_transform_info (self);
|
||||||
ClutterActorIter iter;
|
ClutterActorIter iter;
|
||||||
@ -19392,7 +19392,7 @@ clutter_actor_set_child_transform_internal (ClutterActor *self,
|
|||||||
GObject *obj;
|
GObject *obj;
|
||||||
gboolean was_set = info->child_transform_set;
|
gboolean was_set = info->child_transform_set;
|
||||||
|
|
||||||
clutter_matrix_init_from_matrix (&info->child_transform, transform);
|
cogl_matrix_init_from_matrix (&info->child_transform, transform);
|
||||||
|
|
||||||
/* if it's the identity matrix, we need to toggle the boolean flag */
|
/* if it's the identity matrix, we need to toggle the boolean flag */
|
||||||
info->child_transform_set = !cogl_matrix_is_identity (transform);
|
info->child_transform_set = !cogl_matrix_is_identity (transform);
|
||||||
@ -19414,7 +19414,7 @@ clutter_actor_set_child_transform_internal (ClutterActor *self,
|
|||||||
/**
|
/**
|
||||||
* clutter_actor_set_child_transform:
|
* clutter_actor_set_child_transform:
|
||||||
* @self: a #ClutterActor
|
* @self: a #ClutterActor
|
||||||
* @transform: (allow-none): a #ClutterMatrix, or %NULL
|
* @transform: (allow-none): a #CoglMatrix, or %NULL
|
||||||
*
|
*
|
||||||
* Sets the transformation matrix to be applied to all the children
|
* Sets the transformation matrix to be applied to all the children
|
||||||
* of @self prior to their own transformations. The default child
|
* of @self prior to their own transformations. The default child
|
||||||
@ -19427,20 +19427,20 @@ clutter_actor_set_child_transform_internal (ClutterActor *self,
|
|||||||
* Since: 1.12
|
* Since: 1.12
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_actor_set_child_transform (ClutterActor *self,
|
clutter_actor_set_child_transform (ClutterActor *self,
|
||||||
const ClutterMatrix *transform)
|
const CoglMatrix *transform)
|
||||||
{
|
{
|
||||||
const ClutterTransformInfo *info;
|
const ClutterTransformInfo *info;
|
||||||
ClutterMatrix new_transform;
|
CoglMatrix new_transform;
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
info = _clutter_actor_get_transform_info_or_defaults (self);
|
info = _clutter_actor_get_transform_info_or_defaults (self);
|
||||||
|
|
||||||
if (transform != NULL)
|
if (transform != NULL)
|
||||||
clutter_matrix_init_from_matrix (&new_transform, transform);
|
cogl_matrix_init_from_matrix (&new_transform, transform);
|
||||||
else
|
else
|
||||||
clutter_matrix_init_identity (&new_transform);
|
cogl_matrix_init_identity (&new_transform);
|
||||||
|
|
||||||
_clutter_actor_create_transition (self, obj_props[PROP_CHILD_TRANSFORM],
|
_clutter_actor_create_transition (self, obj_props[PROP_CHILD_TRANSFORM],
|
||||||
&info->child_transform,
|
&info->child_transform,
|
||||||
@ -19450,7 +19450,7 @@ clutter_actor_set_child_transform (ClutterActor *self,
|
|||||||
/**
|
/**
|
||||||
* clutter_actor_get_child_transform:
|
* clutter_actor_get_child_transform:
|
||||||
* @self: a #ClutterActor
|
* @self: a #ClutterActor
|
||||||
* @transform: (out caller-allocates): a #ClutterMatrix
|
* @transform: (out caller-allocates): a #CoglMatrix
|
||||||
*
|
*
|
||||||
* Retrieves the child transformation matrix set using
|
* Retrieves the child transformation matrix set using
|
||||||
* clutter_actor_set_child_transform(); if none is currently set,
|
* clutter_actor_set_child_transform(); if none is currently set,
|
||||||
@ -19459,8 +19459,8 @@ clutter_actor_set_child_transform (ClutterActor *self,
|
|||||||
* Since: 1.12
|
* Since: 1.12
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_actor_get_child_transform (ClutterActor *self,
|
clutter_actor_get_child_transform (ClutterActor *self,
|
||||||
ClutterMatrix *transform)
|
CoglMatrix *transform)
|
||||||
{
|
{
|
||||||
const ClutterTransformInfo *info;
|
const ClutterTransformInfo *info;
|
||||||
|
|
||||||
@ -19470,9 +19470,9 @@ clutter_actor_get_child_transform (ClutterActor *self,
|
|||||||
info = _clutter_actor_get_transform_info_or_defaults (self);
|
info = _clutter_actor_get_transform_info_or_defaults (self);
|
||||||
|
|
||||||
if (info->child_transform_set)
|
if (info->child_transform_set)
|
||||||
clutter_matrix_init_from_matrix (transform, &info->child_transform);
|
cogl_matrix_init_from_matrix (transform, &info->child_transform);
|
||||||
else
|
else
|
||||||
clutter_matrix_init_identity (transform);
|
cogl_matrix_init_identity (transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -257,7 +257,7 @@ struct _ClutterActorClass
|
|||||||
|
|
||||||
/* transformations */
|
/* transformations */
|
||||||
void (* apply_transform) (ClutterActor *actor,
|
void (* apply_transform) (ClutterActor *actor,
|
||||||
ClutterMatrix *matrix);
|
CoglMatrix *matrix);
|
||||||
|
|
||||||
/* event signals */
|
/* event signals */
|
||||||
gboolean (* event) (ClutterActor *actor,
|
gboolean (* event) (ClutterActor *actor,
|
||||||
@ -803,16 +803,16 @@ void clutter_actor_get_translation
|
|||||||
gfloat *translate_z);
|
gfloat *translate_z);
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
void clutter_actor_set_transform (ClutterActor *self,
|
void clutter_actor_set_transform (ClutterActor *self,
|
||||||
const ClutterMatrix *transform);
|
const CoglMatrix *transform);
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
void clutter_actor_get_transform (ClutterActor *self,
|
void clutter_actor_get_transform (ClutterActor *self,
|
||||||
ClutterMatrix *transform);
|
CoglMatrix *transform);
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
void clutter_actor_set_child_transform (ClutterActor *self,
|
void clutter_actor_set_child_transform (ClutterActor *self,
|
||||||
const ClutterMatrix *transform);
|
const CoglMatrix *transform);
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
void clutter_actor_get_child_transform (ClutterActor *self,
|
void clutter_actor_get_child_transform (ClutterActor *self,
|
||||||
ClutterMatrix *transform);
|
CoglMatrix *transform);
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
void clutter_actor_get_transformed_extents (ClutterActor *self,
|
void clutter_actor_get_transformed_extents (ClutterActor *self,
|
||||||
|
@ -83,7 +83,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterZoomAction, g_object_unref)
|
|||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterActorBox, clutter_actor_box_free)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterActorBox, clutter_actor_box_free)
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterColor, clutter_color_free)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterColor, clutter_color_free)
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterMargin, clutter_margin_free)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterMargin, clutter_margin_free)
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterMatrix, clutter_matrix_free)
|
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPaintContext, clutter_paint_context_unref)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPaintContext, clutter_paint_context_unref)
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPaintNode, clutter_paint_node_unref)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPaintNode, clutter_paint_node_unref)
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPaintVolume, clutter_paint_volume_free)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPaintVolume, clutter_paint_volume_free)
|
||||||
|
@ -101,192 +101,3 @@ clutter_margin_free (ClutterMargin *margin_)
|
|||||||
G_DEFINE_BOXED_TYPE (ClutterMargin, clutter_margin,
|
G_DEFINE_BOXED_TYPE (ClutterMargin, clutter_margin,
|
||||||
clutter_margin_copy,
|
clutter_margin_copy,
|
||||||
clutter_margin_free)
|
clutter_margin_free)
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterMatrix:
|
|
||||||
*
|
|
||||||
* A type representing a 4x4 matrix.
|
|
||||||
*
|
|
||||||
* It is identicaly to #CoglMatrix.
|
|
||||||
*
|
|
||||||
* Since: 1.12
|
|
||||||
*/
|
|
||||||
|
|
||||||
static gpointer
|
|
||||||
clutter_matrix_copy (gpointer data)
|
|
||||||
{
|
|
||||||
return cogl_matrix_copy (data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
clutter_matrix_progress (const GValue *a,
|
|
||||||
const GValue *b,
|
|
||||||
gdouble progress,
|
|
||||||
GValue *retval)
|
|
||||||
{
|
|
||||||
const ClutterMatrix *matrix1 = g_value_get_boxed (a);
|
|
||||||
const ClutterMatrix *matrix2 = g_value_get_boxed (b);
|
|
||||||
graphene_point3d_t scale1 = GRAPHENE_POINT3D_INIT (1.f, 1.f, 1.f);
|
|
||||||
float shear1[3] = { 0.f, 0.f, 0.f };
|
|
||||||
graphene_point3d_t rotate1 = GRAPHENE_POINT3D_INIT_ZERO;
|
|
||||||
graphene_point3d_t translate1 = GRAPHENE_POINT3D_INIT_ZERO;
|
|
||||||
ClutterVertex4 perspective1 = { 0.f, 0.f, 0.f, 0.f };
|
|
||||||
graphene_point3d_t scale2 = GRAPHENE_POINT3D_INIT (1.f, 1.f, 1.f);
|
|
||||||
float shear2[3] = { 0.f, 0.f, 0.f };
|
|
||||||
graphene_point3d_t rotate2 = GRAPHENE_POINT3D_INIT_ZERO;
|
|
||||||
graphene_point3d_t translate2 = GRAPHENE_POINT3D_INIT_ZERO;
|
|
||||||
ClutterVertex4 perspective2 = { 0.f, 0.f, 0.f, 0.f };
|
|
||||||
graphene_point3d_t scale_res = GRAPHENE_POINT3D_INIT (1.f, 1.f, 1.f);
|
|
||||||
float shear_res = 0.f;
|
|
||||||
graphene_point3d_t rotate_res = GRAPHENE_POINT3D_INIT_ZERO;
|
|
||||||
graphene_point3d_t translate_res = GRAPHENE_POINT3D_INIT_ZERO;
|
|
||||||
ClutterVertex4 perspective_res = { 0.f, 0.f, 0.f, 0.f };
|
|
||||||
ClutterMatrix res;
|
|
||||||
|
|
||||||
clutter_matrix_init_identity (&res);
|
|
||||||
|
|
||||||
_clutter_util_matrix_decompose (matrix1,
|
|
||||||
&scale1, shear1, &rotate1, &translate1,
|
|
||||||
&perspective1);
|
|
||||||
_clutter_util_matrix_decompose (matrix2,
|
|
||||||
&scale2, shear2, &rotate2, &translate2,
|
|
||||||
&perspective2);
|
|
||||||
|
|
||||||
/* perspective */
|
|
||||||
_clutter_util_vertex4_interpolate (&perspective1, &perspective2, progress, &perspective_res);
|
|
||||||
res.wx = perspective_res.x;
|
|
||||||
res.wy = perspective_res.y;
|
|
||||||
res.wz = perspective_res.z;
|
|
||||||
res.ww = perspective_res.w;
|
|
||||||
|
|
||||||
/* translation */
|
|
||||||
graphene_point3d_interpolate (&translate1, &translate2, progress, &translate_res);
|
|
||||||
cogl_matrix_translate (&res, translate_res.x, translate_res.y, translate_res.z);
|
|
||||||
|
|
||||||
/* rotation */
|
|
||||||
graphene_point3d_interpolate (&rotate1, &rotate2, progress, &rotate_res);
|
|
||||||
cogl_matrix_rotate (&res, rotate_res.x, 1.0f, 0.0f, 0.0f);
|
|
||||||
cogl_matrix_rotate (&res, rotate_res.y, 0.0f, 1.0f, 0.0f);
|
|
||||||
cogl_matrix_rotate (&res, rotate_res.z, 0.0f, 0.0f, 1.0f);
|
|
||||||
|
|
||||||
/* skew */
|
|
||||||
shear_res = shear1[2] + (shear2[2] - shear1[2]) * progress; /* YZ */
|
|
||||||
if (shear_res != 0.f)
|
|
||||||
_clutter_util_matrix_skew_yz (&res, shear_res);
|
|
||||||
|
|
||||||
shear_res = shear1[1] + (shear2[1] - shear1[1]) * progress; /* XZ */
|
|
||||||
if (shear_res != 0.f)
|
|
||||||
_clutter_util_matrix_skew_xz (&res, shear_res);
|
|
||||||
|
|
||||||
shear_res = shear1[0] + (shear2[0] - shear1[0]) * progress; /* XY */
|
|
||||||
if (shear_res != 0.f)
|
|
||||||
_clutter_util_matrix_skew_xy (&res, shear_res);
|
|
||||||
|
|
||||||
/* scale */
|
|
||||||
graphene_point3d_interpolate (&scale1, &scale2, progress, &scale_res);
|
|
||||||
cogl_matrix_scale (&res, scale_res.x, scale_res.y, scale_res.z);
|
|
||||||
|
|
||||||
g_value_set_boxed (retval, &res);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
G_DEFINE_BOXED_TYPE_WITH_CODE (ClutterMatrix, clutter_matrix,
|
|
||||||
clutter_matrix_copy,
|
|
||||||
clutter_matrix_free,
|
|
||||||
CLUTTER_REGISTER_INTERVAL_PROGRESS (clutter_matrix_progress))
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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)
|
|
||||||
{
|
|
||||||
cogl_matrix_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 initialized #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,
|
|
||||||
const ClutterMatrix *b)
|
|
||||||
{
|
|
||||||
return memcpy (a, b, sizeof (ClutterMatrix));
|
|
||||||
}
|
|
||||||
|
@ -354,7 +354,7 @@ clutter_pan_action_real_pan (ClutterPanAction *self,
|
|||||||
gboolean is_interpolated)
|
gboolean is_interpolated)
|
||||||
{
|
{
|
||||||
gfloat dx, dy;
|
gfloat dx, dy;
|
||||||
ClutterMatrix transform;
|
CoglMatrix transform;
|
||||||
|
|
||||||
clutter_pan_action_get_constrained_motion_delta (self, 0, &dx, &dy);
|
clutter_pan_action_get_constrained_motion_delta (self, 0, &dx, &dy);
|
||||||
|
|
||||||
|
@ -255,23 +255,16 @@ _clutter_util_vertex4_interpolate (const ClutterVertex4 *a,
|
|||||||
double progress,
|
double progress,
|
||||||
ClutterVertex4 *res);
|
ClutterVertex4 *res);
|
||||||
|
|
||||||
#define CLUTTER_MATRIX_INIT_IDENTITY { \
|
float _clutter_util_matrix_determinant (const CoglMatrix *matrix);
|
||||||
1.0f, 0.0f, 0.0f, 0.0f, \
|
|
||||||
0.0f, 1.0f, 0.0f, 0.0f, \
|
|
||||||
0.0f, 0.0f, 1.0f, 0.0f, \
|
|
||||||
0.0f, 0.0f, 0.0f, 1.0f, \
|
|
||||||
}
|
|
||||||
|
|
||||||
float _clutter_util_matrix_determinant (const ClutterMatrix *matrix);
|
void _clutter_util_matrix_skew_xy (CoglMatrix *matrix,
|
||||||
|
float factor);
|
||||||
|
void _clutter_util_matrix_skew_xz (CoglMatrix *matrix,
|
||||||
|
float factor);
|
||||||
|
void _clutter_util_matrix_skew_yz (CoglMatrix *matrix,
|
||||||
|
float factor);
|
||||||
|
|
||||||
void _clutter_util_matrix_skew_xy (ClutterMatrix *matrix,
|
gboolean _clutter_util_matrix_decompose (const CoglMatrix *src,
|
||||||
float factor);
|
|
||||||
void _clutter_util_matrix_skew_xz (ClutterMatrix *matrix,
|
|
||||||
float factor);
|
|
||||||
void _clutter_util_matrix_skew_yz (ClutterMatrix *matrix,
|
|
||||||
float factor);
|
|
||||||
|
|
||||||
gboolean _clutter_util_matrix_decompose (const ClutterMatrix *src,
|
|
||||||
graphene_point3d_t *scale_p,
|
graphene_point3d_t *scale_p,
|
||||||
float shear_p[3],
|
float shear_p[3],
|
||||||
graphene_point3d_t *rotate_p,
|
graphene_point3d_t *rotate_p,
|
||||||
|
@ -99,7 +99,7 @@ clutter_scroll_actor_set_scroll_to_internal (ClutterScrollActor *self,
|
|||||||
{
|
{
|
||||||
ClutterScrollActorPrivate *priv = self->priv;
|
ClutterScrollActorPrivate *priv = self->priv;
|
||||||
ClutterActor *actor = CLUTTER_ACTOR (self);
|
ClutterActor *actor = CLUTTER_ACTOR (self);
|
||||||
ClutterMatrix m = CLUTTER_MATRIX_INIT_IDENTITY;
|
CoglMatrix m = COGL_MATRIX_INIT_IDENTITY;
|
||||||
float dx, dy;
|
float dx, dy;
|
||||||
|
|
||||||
if (graphene_point_equal (&priv->scroll_to, point))
|
if (graphene_point_equal (&priv->scroll_to, point))
|
||||||
|
@ -40,7 +40,6 @@ G_BEGIN_DECLS
|
|||||||
#define CLUTTER_TYPE_ACTOR_BOX (clutter_actor_box_get_type ())
|
#define CLUTTER_TYPE_ACTOR_BOX (clutter_actor_box_get_type ())
|
||||||
#define CLUTTER_TYPE_KNOT (clutter_knot_get_type ())
|
#define CLUTTER_TYPE_KNOT (clutter_knot_get_type ())
|
||||||
#define CLUTTER_TYPE_MARGIN (clutter_margin_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_PAINT_VOLUME (clutter_paint_volume_get_type ())
|
||||||
#define CLUTTER_TYPE_PERSPECTIVE (clutter_perspective_get_type ())
|
#define CLUTTER_TYPE_PERSPECTIVE (clutter_perspective_get_type ())
|
||||||
|
|
||||||
@ -87,8 +86,6 @@ typedef struct _ClutterVirtualInputDevice ClutterVirtualInputDevice;
|
|||||||
typedef struct _ClutterInputMethod ClutterInputMethod;
|
typedef struct _ClutterInputMethod ClutterInputMethod;
|
||||||
typedef struct _ClutterInputFocus ClutterInputFocus;
|
typedef struct _ClutterInputFocus ClutterInputFocus;
|
||||||
|
|
||||||
typedef CoglMatrix ClutterMatrix;
|
|
||||||
|
|
||||||
typedef union _ClutterEvent ClutterEvent;
|
typedef union _ClutterEvent ClutterEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -432,22 +429,6 @@ CLUTTER_EXPORT
|
|||||||
void clutter_interval_register_progress_func (GType value_type,
|
void clutter_interval_register_progress_func (GType value_type,
|
||||||
ClutterProgressFunc func);
|
ClutterProgressFunc func);
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
|
||||||
GType clutter_matrix_get_type (void) G_GNUC_CONST;
|
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
|
||||||
ClutterMatrix * clutter_matrix_alloc (void);
|
|
||||||
CLUTTER_EXPORT
|
|
||||||
ClutterMatrix * clutter_matrix_init_identity (ClutterMatrix *matrix);
|
|
||||||
CLUTTER_EXPORT
|
|
||||||
ClutterMatrix * clutter_matrix_init_from_array (ClutterMatrix *matrix,
|
|
||||||
const float values[16]);
|
|
||||||
CLUTTER_EXPORT
|
|
||||||
ClutterMatrix * clutter_matrix_init_from_matrix (ClutterMatrix *a,
|
|
||||||
const ClutterMatrix *b);
|
|
||||||
CLUTTER_EXPORT
|
|
||||||
void clutter_matrix_free (ClutterMatrix *matrix);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_TYPES_H__ */
|
#endif /* __CLUTTER_TYPES_H__ */
|
||||||
|
@ -231,7 +231,7 @@ clutter_util_rectangle_equal (const cairo_rectangle_int_t *src1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
float
|
float
|
||||||
_clutter_util_matrix_determinant (const ClutterMatrix *matrix)
|
_clutter_util_matrix_determinant (const CoglMatrix *matrix)
|
||||||
{
|
{
|
||||||
return matrix->xw * matrix->yz * matrix->zy * matrix->wz
|
return matrix->xw * matrix->yz * matrix->zy * matrix->wz
|
||||||
- matrix->xz * matrix->yw * matrix->zy * matrix->wz
|
- matrix->xz * matrix->yw * matrix->zy * matrix->wz
|
||||||
@ -260,7 +260,7 @@ _clutter_util_matrix_determinant (const ClutterMatrix *matrix)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_clutter_util_matrix_transpose_vector4_transform (const ClutterMatrix *matrix,
|
_clutter_util_matrix_transpose_vector4_transform (const CoglMatrix *matrix,
|
||||||
const ClutterVertex4 *point,
|
const ClutterVertex4 *point,
|
||||||
ClutterVertex4 *res)
|
ClutterVertex4 *res)
|
||||||
{
|
{
|
||||||
@ -286,8 +286,8 @@ _clutter_util_matrix_transpose_vector4_transform (const ClutterMatrix *matrix,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_clutter_util_matrix_skew_xy (ClutterMatrix *matrix,
|
_clutter_util_matrix_skew_xy (CoglMatrix *matrix,
|
||||||
float factor)
|
float factor)
|
||||||
{
|
{
|
||||||
matrix->yx += matrix->xx * factor;
|
matrix->yx += matrix->xx * factor;
|
||||||
matrix->yy += matrix->xy * factor;
|
matrix->yy += matrix->xy * factor;
|
||||||
@ -296,8 +296,8 @@ _clutter_util_matrix_skew_xy (ClutterMatrix *matrix,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_clutter_util_matrix_skew_xz (ClutterMatrix *matrix,
|
_clutter_util_matrix_skew_xz (CoglMatrix *matrix,
|
||||||
float factor)
|
float factor)
|
||||||
{
|
{
|
||||||
matrix->zx += matrix->xx * factor;
|
matrix->zx += matrix->xx * factor;
|
||||||
matrix->zy += matrix->xy * factor;
|
matrix->zy += matrix->xy * factor;
|
||||||
@ -306,8 +306,8 @@ _clutter_util_matrix_skew_xz (ClutterMatrix *matrix,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_clutter_util_matrix_skew_yz (ClutterMatrix *matrix,
|
_clutter_util_matrix_skew_yz (CoglMatrix *matrix,
|
||||||
float factor)
|
float factor)
|
||||||
{
|
{
|
||||||
matrix->zx += matrix->yx * factor;
|
matrix->zx += matrix->yx * factor;
|
||||||
matrix->zy += matrix->yy * factor;
|
matrix->zy += matrix->yy * factor;
|
||||||
@ -353,7 +353,7 @@ _clutter_util_vertex4_interpolate (const ClutterVertex4 *a,
|
|||||||
* @perspective_p: (out caller-allocates: return location for a 4D vertex
|
* @perspective_p: (out caller-allocates: return location for a 4D vertex
|
||||||
* containing the perspective
|
* containing the perspective
|
||||||
*
|
*
|
||||||
* Decomposes a #ClutterMatrix into the transformations that compose it.
|
* Decomposes a #CoglMatrix into the transformations that compose it.
|
||||||
*
|
*
|
||||||
* This code is based on the matrix decomposition algorithm as published in
|
* This code is based on the matrix decomposition algorithm as published in
|
||||||
* the CSS Transforms specification by the W3C CSS working group, available
|
* the CSS Transforms specification by the W3C CSS working group, available
|
||||||
@ -367,7 +367,7 @@ _clutter_util_vertex4_interpolate (const ClutterVertex4 *a,
|
|||||||
* if the matrix is singular
|
* if the matrix is singular
|
||||||
*/
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
_clutter_util_matrix_decompose (const ClutterMatrix *src,
|
_clutter_util_matrix_decompose (const CoglMatrix *src,
|
||||||
graphene_point3d_t *scale_p,
|
graphene_point3d_t *scale_p,
|
||||||
float shear_p[3],
|
float shear_p[3],
|
||||||
graphene_point3d_t *rotate_p,
|
graphene_point3d_t *rotate_p,
|
||||||
|
@ -10,7 +10,7 @@ static void
|
|||||||
actor_pivot (void)
|
actor_pivot (void)
|
||||||
{
|
{
|
||||||
ClutterActor *stage, *actor_implicit, *actor_explicit;
|
ClutterActor *stage, *actor_implicit, *actor_explicit;
|
||||||
ClutterMatrix transform, result_implicit, result_explicit;
|
CoglMatrix transform, result_implicit, result_explicit;
|
||||||
ClutterActorBox allocation = CLUTTER_ACTOR_BOX_INIT (0, 0, 90, 30);
|
ClutterActorBox allocation = CLUTTER_ACTOR_BOX_INIT (0, 0, 90, 30);
|
||||||
gfloat angle = 30;
|
gfloat angle = 30;
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ actor_pivot (void)
|
|||||||
clutter_actor_set_rotation_angle (actor_implicit, CLUTTER_Z_AXIS, angle);
|
clutter_actor_set_rotation_angle (actor_implicit, CLUTTER_Z_AXIS, angle);
|
||||||
|
|
||||||
/* Explicit transformation */
|
/* Explicit transformation */
|
||||||
clutter_matrix_init_identity(&transform);
|
cogl_matrix_init_identity (&transform);
|
||||||
cogl_matrix_rotate (&transform, angle, 0, 0, 1.0);
|
cogl_matrix_rotate (&transform, angle, 0, 0, 1.0);
|
||||||
clutter_actor_set_transform (actor_explicit, &transform);
|
clutter_actor_set_transform (actor_explicit, &transform);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user