clutter/actor: Remove rotation center
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1332
This commit is contained in:
parent
2e086c74e7
commit
dc4cb562b7
@ -183,15 +183,10 @@ ClutterLayoutInfo * _clutter_actor_peek_layout_info
|
|||||||
|
|
||||||
struct _ClutterTransformInfo
|
struct _ClutterTransformInfo
|
||||||
{
|
{
|
||||||
/* rotation (angle and center) */
|
/* rotation */
|
||||||
gdouble rx_angle;
|
gdouble rx_angle;
|
||||||
AnchorCoord rx_center;
|
|
||||||
|
|
||||||
gdouble ry_angle;
|
gdouble ry_angle;
|
||||||
AnchorCoord ry_center;
|
|
||||||
|
|
||||||
gdouble rz_angle;
|
gdouble rz_angle;
|
||||||
AnchorCoord rz_center;
|
|
||||||
|
|
||||||
/* scaling */
|
/* scaling */
|
||||||
gdouble scale_x;
|
gdouble scale_x;
|
||||||
|
@ -934,13 +934,6 @@ enum
|
|||||||
PROP_ROTATION_ANGLE_X, /* XXX:2.0 rename to rotation-x */
|
PROP_ROTATION_ANGLE_X, /* XXX:2.0 rename to rotation-x */
|
||||||
PROP_ROTATION_ANGLE_Y, /* XXX:2.0 rename to rotation-y */
|
PROP_ROTATION_ANGLE_Y, /* XXX:2.0 rename to rotation-y */
|
||||||
PROP_ROTATION_ANGLE_Z, /* XXX:2.0 rename to rotation-z */
|
PROP_ROTATION_ANGLE_Z, /* XXX:2.0 rename to rotation-z */
|
||||||
PROP_ROTATION_CENTER_X, /* XXX:2.0 remove */
|
|
||||||
PROP_ROTATION_CENTER_Y, /* XXX:2.0 remove */
|
|
||||||
PROP_ROTATION_CENTER_Z, /* XXX:2.0 remove */
|
|
||||||
/* This property only makes sense for the z rotation because the
|
|
||||||
others would depend on the actor having a size along the
|
|
||||||
z-axis */
|
|
||||||
PROP_ROTATION_CENTER_Z_GRAVITY, /* XXX:2.0 remove */
|
|
||||||
|
|
||||||
PROP_ANCHOR_X, /* XXX:2.0 remove */
|
PROP_ANCHOR_X, /* XXX:2.0 remove */
|
||||||
PROP_ANCHOR_Y, /* XXX:2.0 remove */
|
PROP_ANCHOR_Y, /* XXX:2.0 remove */
|
||||||
@ -3167,34 +3160,13 @@ clutter_actor_real_apply_transform (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (info->rz_angle)
|
if (info->rz_angle)
|
||||||
{
|
cogl_matrix_rotate (transform, info->rz_angle, 0, 0, 1.0);
|
||||||
/* XXX:2.0 remove anchor coord */
|
|
||||||
TRANSFORM_ABOUT_ANCHOR_COORD (self, transform,
|
|
||||||
&info->rz_center,
|
|
||||||
cogl_matrix_rotate (transform,
|
|
||||||
info->rz_angle,
|
|
||||||
0, 0, 1.0));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (info->ry_angle)
|
if (info->ry_angle)
|
||||||
{
|
cogl_matrix_rotate (transform, info->ry_angle, 0, 1.0, 0);
|
||||||
/* XXX:2.0 remove anchor coord */
|
|
||||||
TRANSFORM_ABOUT_ANCHOR_COORD (self, transform,
|
|
||||||
&info->ry_center,
|
|
||||||
cogl_matrix_rotate (transform,
|
|
||||||
info->ry_angle,
|
|
||||||
0, 1.0, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (info->rx_angle)
|
if (info->rx_angle)
|
||||||
{
|
cogl_matrix_rotate (transform, info->rx_angle, 1.0, 0, 0);
|
||||||
/* XXX:2.0 remove anchor coord */
|
|
||||||
TRANSFORM_ABOUT_ANCHOR_COORD (self, transform,
|
|
||||||
&info->rx_center,
|
|
||||||
cogl_matrix_rotate (transform,
|
|
||||||
info->rx_angle,
|
|
||||||
1.0, 0, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* XXX:2.0 remove anchor point translation */
|
/* XXX:2.0 remove anchor point translation */
|
||||||
if (!clutter_anchor_coord_is_zero (&info->anchor))
|
if (!clutter_anchor_coord_is_zero (&info->anchor))
|
||||||
@ -4453,9 +4425,9 @@ clutter_actor_remove_child_internal (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const ClutterTransformInfo default_transform_info = {
|
static const ClutterTransformInfo default_transform_info = {
|
||||||
0.0, { 0, }, /* rotation-x */
|
0.0, /* rotation-x */
|
||||||
0.0, { 0, }, /* rotation-y */
|
0.0, /* rotation-y */
|
||||||
0.0, { 0, }, /* rotation-z */
|
0.0, /* rotation-z */
|
||||||
|
|
||||||
1.0, 1.0, 1.0, { 0, }, /* scale */
|
1.0, 1.0, 1.0, { 0, }, /* scale */
|
||||||
|
|
||||||
@ -4840,63 +4812,6 @@ clutter_actor_get_rotation_angle (ClutterActor *self,
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*< private >
|
|
||||||
* clutter_actor_set_rotation_center_internal:
|
|
||||||
* @self: a #ClutterActor
|
|
||||||
* @axis: the axis of the center to change
|
|
||||||
* @center: the coordinates of the rotation center
|
|
||||||
*
|
|
||||||
* Sets the rotation center on the given axis without affecting the
|
|
||||||
* rotation angle.
|
|
||||||
*/
|
|
||||||
static inline void
|
|
||||||
clutter_actor_set_rotation_center_internal (ClutterActor *self,
|
|
||||||
ClutterRotateAxis axis,
|
|
||||||
const graphene_point3d_t *center)
|
|
||||||
{
|
|
||||||
graphene_point3d_t v = GRAPHENE_POINT3D_INIT_ZERO;
|
|
||||||
GObject *obj = G_OBJECT (self);
|
|
||||||
ClutterTransformInfo *info;
|
|
||||||
|
|
||||||
info = _clutter_actor_get_transform_info (self);
|
|
||||||
|
|
||||||
if (center != NULL)
|
|
||||||
v = *center;
|
|
||||||
|
|
||||||
g_object_freeze_notify (obj);
|
|
||||||
|
|
||||||
switch (axis)
|
|
||||||
{
|
|
||||||
case CLUTTER_X_AXIS:
|
|
||||||
clutter_anchor_coord_set_units (&info->rx_center, v.x, v.y, v.z);
|
|
||||||
g_object_notify_by_pspec (obj, obj_props[PROP_ROTATION_CENTER_X]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CLUTTER_Y_AXIS:
|
|
||||||
clutter_anchor_coord_set_units (&info->ry_center, v.x, v.y, v.z);
|
|
||||||
g_object_notify_by_pspec (obj, obj_props[PROP_ROTATION_CENTER_Y]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CLUTTER_Z_AXIS:
|
|
||||||
/* if the previously set rotation center was fractional, then
|
|
||||||
* setting explicit coordinates will have to notify the
|
|
||||||
* :rotation-center-z-gravity property as well
|
|
||||||
*/
|
|
||||||
if (info->rz_center.is_fractional)
|
|
||||||
g_object_notify_by_pspec (obj, obj_props[PROP_ROTATION_CENTER_Z_GRAVITY]);
|
|
||||||
|
|
||||||
clutter_anchor_coord_set_units (&info->rz_center, v.x, v.y, v.z);
|
|
||||||
g_object_notify_by_pspec (obj, obj_props[PROP_ROTATION_CENTER_Z]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->priv->transform_valid = FALSE;
|
|
||||||
|
|
||||||
g_object_thaw_notify (obj);
|
|
||||||
|
|
||||||
clutter_actor_queue_redraw (self);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_actor_set_scale_factor_internal (ClutterActor *self,
|
clutter_actor_set_scale_factor_internal (ClutterActor *self,
|
||||||
double factor,
|
double factor,
|
||||||
@ -5310,34 +5225,6 @@ clutter_actor_set_property (GObject *object,
|
|||||||
g_value_get_double (value));
|
g_value_get_double (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_ROTATION_CENTER_X: /* XXX:2.0 - remove */
|
|
||||||
clutter_actor_set_rotation_center_internal (actor,
|
|
||||||
CLUTTER_X_AXIS,
|
|
||||||
g_value_get_boxed (value));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ROTATION_CENTER_Y: /* XXX:2.0 - remove */
|
|
||||||
clutter_actor_set_rotation_center_internal (actor,
|
|
||||||
CLUTTER_Y_AXIS,
|
|
||||||
g_value_get_boxed (value));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ROTATION_CENTER_Z: /* XXX:2.0 - remove */
|
|
||||||
clutter_actor_set_rotation_center_internal (actor,
|
|
||||||
CLUTTER_Z_AXIS,
|
|
||||||
g_value_get_boxed (value));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ROTATION_CENTER_Z_GRAVITY: /* XXX:2.0 - remove */
|
|
||||||
{
|
|
||||||
const ClutterTransformInfo *info;
|
|
||||||
|
|
||||||
info = _clutter_actor_get_transform_info_or_defaults (actor);
|
|
||||||
clutter_actor_set_z_rotation_from_gravity (actor, info->rz_angle,
|
|
||||||
g_value_get_enum (value));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ANCHOR_X: /* XXX:2.0 - remove */
|
case PROP_ANCHOR_X: /* XXX:2.0 - remove */
|
||||||
clutter_actor_set_anchor_coord (actor, CLUTTER_X_AXIS,
|
clutter_actor_set_anchor_coord (actor, CLUTTER_X_AXIS,
|
||||||
g_value_get_float (value));
|
g_value_get_float (value));
|
||||||
@ -5759,49 +5646,6 @@ clutter_actor_get_property (GObject *object,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_ROTATION_CENTER_X: /* XXX:2.0 - remove */
|
|
||||||
{
|
|
||||||
graphene_point3d_t center;
|
|
||||||
|
|
||||||
clutter_actor_get_rotation (actor, CLUTTER_X_AXIS,
|
|
||||||
¢er.x,
|
|
||||||
¢er.y,
|
|
||||||
¢er.z);
|
|
||||||
|
|
||||||
g_value_set_boxed (value, ¢er);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ROTATION_CENTER_Y: /* XXX:2.0 - remove */
|
|
||||||
{
|
|
||||||
graphene_point3d_t center;
|
|
||||||
|
|
||||||
clutter_actor_get_rotation (actor, CLUTTER_Y_AXIS,
|
|
||||||
¢er.x,
|
|
||||||
¢er.y,
|
|
||||||
¢er.z);
|
|
||||||
|
|
||||||
g_value_set_boxed (value, ¢er);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ROTATION_CENTER_Z: /* XXX:2.0 - remove */
|
|
||||||
{
|
|
||||||
graphene_point3d_t center;
|
|
||||||
|
|
||||||
clutter_actor_get_rotation (actor, CLUTTER_Z_AXIS,
|
|
||||||
¢er.x,
|
|
||||||
¢er.y,
|
|
||||||
¢er.z);
|
|
||||||
|
|
||||||
g_value_set_boxed (value, ¢er);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ROTATION_CENTER_Z_GRAVITY: /* XXX:2.0 - remove */
|
|
||||||
g_value_set_enum (value, clutter_actor_get_z_rotation_gravity (actor));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ANCHOR_X: /* XXX:2.0 - remove */
|
case PROP_ANCHOR_X: /* XXX:2.0 - remove */
|
||||||
{
|
{
|
||||||
const ClutterTransformInfo *info;
|
const ClutterTransformInfo *info;
|
||||||
@ -7223,79 +7067,6 @@ clutter_actor_class_init (ClutterActorClass *klass)
|
|||||||
G_PARAM_STATIC_STRINGS |
|
G_PARAM_STATIC_STRINGS |
|
||||||
CLUTTER_PARAM_ANIMATABLE);
|
CLUTTER_PARAM_ANIMATABLE);
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterActor:rotation-center-x:
|
|
||||||
*
|
|
||||||
* The rotation center on the X axis.
|
|
||||||
*
|
|
||||||
* Since: 0.6
|
|
||||||
*
|
|
||||||
* Deprecated: 1.12: Use #ClutterActor:pivot-point instead
|
|
||||||
*/
|
|
||||||
obj_props[PROP_ROTATION_CENTER_X] = /* XXX:2.0 - remove */
|
|
||||||
g_param_spec_boxed ("rotation-center-x",
|
|
||||||
P_("Rotation Center X"),
|
|
||||||
P_("The rotation center on the X axis"),
|
|
||||||
GRAPHENE_TYPE_POINT3D,
|
|
||||||
G_PARAM_READWRITE |
|
|
||||||
G_PARAM_STATIC_STRINGS |
|
|
||||||
G_PARAM_DEPRECATED);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterActor:rotation-center-y:
|
|
||||||
*
|
|
||||||
* The rotation center on the Y axis.
|
|
||||||
*
|
|
||||||
* Since: 0.6
|
|
||||||
*
|
|
||||||
* Deprecated: 1.12: Use #ClutterActor:pivot-point instead
|
|
||||||
*/
|
|
||||||
obj_props[PROP_ROTATION_CENTER_Y] = /* XXX:2.0 - remove */
|
|
||||||
g_param_spec_boxed ("rotation-center-y",
|
|
||||||
P_("Rotation Center Y"),
|
|
||||||
P_("The rotation center on the Y axis"),
|
|
||||||
GRAPHENE_TYPE_POINT3D,
|
|
||||||
G_PARAM_READWRITE |
|
|
||||||
G_PARAM_STATIC_STRINGS |
|
|
||||||
G_PARAM_DEPRECATED);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterActor:rotation-center-z:
|
|
||||||
*
|
|
||||||
* The rotation center on the Z axis.
|
|
||||||
*
|
|
||||||
* Since: 0.6
|
|
||||||
*
|
|
||||||
* Deprecated: 1.12: Use #ClutterActor:pivot-point instead
|
|
||||||
*/
|
|
||||||
obj_props[PROP_ROTATION_CENTER_Z] = /* XXX:2.0 - remove */
|
|
||||||
g_param_spec_boxed ("rotation-center-z",
|
|
||||||
P_("Rotation Center Z"),
|
|
||||||
P_("The rotation center on the Z axis"),
|
|
||||||
GRAPHENE_TYPE_POINT3D,
|
|
||||||
G_PARAM_READWRITE |
|
|
||||||
G_PARAM_STATIC_STRINGS |
|
|
||||||
G_PARAM_DEPRECATED);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterActor:rotation-center-z-gravity:
|
|
||||||
*
|
|
||||||
* The rotation center on the Z axis expressed as a #ClutterGravity.
|
|
||||||
*
|
|
||||||
* Since: 1.0
|
|
||||||
*
|
|
||||||
* Deprecated: 1.12: Use #ClutterActor:pivot-point instead
|
|
||||||
*/
|
|
||||||
obj_props[PROP_ROTATION_CENTER_Z_GRAVITY] = /* XXX:2.0 - remove */
|
|
||||||
g_param_spec_enum ("rotation-center-z-gravity",
|
|
||||||
P_("Rotation Center Z Gravity"),
|
|
||||||
P_("Center point for rotation around the Z axis"),
|
|
||||||
CLUTTER_TYPE_GRAVITY,
|
|
||||||
CLUTTER_GRAVITY_NONE,
|
|
||||||
G_PARAM_READWRITE |
|
|
||||||
G_PARAM_STATIC_STRINGS |
|
|
||||||
G_PARAM_DEPRECATED);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterActor:anchor-x:
|
* ClutterActor:anchor-x:
|
||||||
*
|
*
|
||||||
@ -12076,191 +11847,6 @@ clutter_actor_get_pivot_point_z (ClutterActor *self)
|
|||||||
return _clutter_actor_get_transform_info_or_defaults (self)->pivot_z;
|
return _clutter_actor_get_transform_info_or_defaults (self)->pivot_z;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_actor_set_rotation:
|
|
||||||
* @self: a #ClutterActor
|
|
||||||
* @axis: the axis of rotation
|
|
||||||
* @angle: the angle of rotation
|
|
||||||
* @x: X coordinate of the rotation center
|
|
||||||
* @y: Y coordinate of the rotation center
|
|
||||||
* @z: Z coordinate of the rotation center
|
|
||||||
*
|
|
||||||
* Sets the rotation angle of @self around the given axis.
|
|
||||||
*
|
|
||||||
* The rotation center coordinates used depend on the value of @axis:
|
|
||||||
*
|
|
||||||
* - %CLUTTER_X_AXIS requires @y and @z
|
|
||||||
* - %CLUTTER_Y_AXIS requires @x and @z
|
|
||||||
* - %CLUTTER_Z_AXIS requires @x and @y
|
|
||||||
*
|
|
||||||
* The rotation coordinates are relative to the anchor point of the
|
|
||||||
* actor, set using clutter_actor_set_anchor_point(). If no anchor
|
|
||||||
* point is set, the upper left corner is assumed as the origin.
|
|
||||||
*
|
|
||||||
* Since: 0.8
|
|
||||||
*
|
|
||||||
* Deprecated: 1.12: Use clutter_actor_set_rotation_angle() and
|
|
||||||
* clutter_actor_set_pivot_point() instead.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
clutter_actor_set_rotation (ClutterActor *self,
|
|
||||||
ClutterRotateAxis axis,
|
|
||||||
gdouble angle,
|
|
||||||
gfloat x,
|
|
||||||
gfloat y,
|
|
||||||
gfloat z)
|
|
||||||
{
|
|
||||||
graphene_point3d_t v;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
|
||||||
|
|
||||||
v.x = x;
|
|
||||||
v.y = y;
|
|
||||||
v.z = z;
|
|
||||||
|
|
||||||
g_object_freeze_notify (G_OBJECT (self));
|
|
||||||
|
|
||||||
clutter_actor_set_rotation_angle (self, axis, angle);
|
|
||||||
clutter_actor_set_rotation_center_internal (self, axis, &v);
|
|
||||||
|
|
||||||
g_object_thaw_notify (G_OBJECT (self));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_actor_set_z_rotation_from_gravity:
|
|
||||||
* @self: a #ClutterActor
|
|
||||||
* @angle: the angle of rotation
|
|
||||||
* @gravity: the center point of the rotation
|
|
||||||
*
|
|
||||||
* Sets the rotation angle of @self around the Z axis using the center
|
|
||||||
* point specified as a compass point. For example to rotate such that
|
|
||||||
* the center of the actor remains static you can use
|
|
||||||
* %CLUTTER_GRAVITY_CENTER. If the actor changes size the center point
|
|
||||||
* will move accordingly.
|
|
||||||
*
|
|
||||||
* Since: 1.0
|
|
||||||
*
|
|
||||||
* Deprecated: 1.12: Use clutter_actor_set_rotation_angle() and
|
|
||||||
* clutter_actor_set_pivot_point() instead.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
clutter_actor_set_z_rotation_from_gravity (ClutterActor *self,
|
|
||||||
gdouble angle,
|
|
||||||
ClutterGravity gravity)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
|
||||||
|
|
||||||
if (gravity == CLUTTER_GRAVITY_NONE)
|
|
||||||
clutter_actor_set_rotation (self, CLUTTER_Z_AXIS, angle, 0, 0, 0);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GObject *obj = G_OBJECT (self);
|
|
||||||
ClutterTransformInfo *info;
|
|
||||||
GParamSpec *pspec;
|
|
||||||
|
|
||||||
pspec = obj_props[PROP_ROTATION_ANGLE_Z];
|
|
||||||
info = _clutter_actor_get_transform_info (self);
|
|
||||||
|
|
||||||
g_object_freeze_notify (obj);
|
|
||||||
|
|
||||||
clutter_actor_set_rotation_angle_internal (self, angle, pspec);
|
|
||||||
|
|
||||||
clutter_anchor_coord_set_gravity (&info->rz_center, gravity);
|
|
||||||
g_object_notify_by_pspec (obj, obj_props[PROP_ROTATION_CENTER_Z_GRAVITY]);
|
|
||||||
g_object_notify_by_pspec (obj, obj_props[PROP_ROTATION_CENTER_Z]);
|
|
||||||
|
|
||||||
g_object_thaw_notify (obj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_actor_get_rotation:
|
|
||||||
* @self: a #ClutterActor
|
|
||||||
* @axis: the axis of rotation
|
|
||||||
* @x: (out): return value for the X coordinate of the center of rotation
|
|
||||||
* @y: (out): return value for the Y coordinate of the center of rotation
|
|
||||||
* @z: (out): return value for the Z coordinate of the center of rotation
|
|
||||||
*
|
|
||||||
* Retrieves the angle and center of rotation on the given axis,
|
|
||||||
* set using clutter_actor_set_rotation().
|
|
||||||
*
|
|
||||||
* Return value: the angle of rotation
|
|
||||||
*
|
|
||||||
* Since: 0.8
|
|
||||||
*
|
|
||||||
* Deprecated: 1.12: Use clutter_actor_get_rotation_angle() and
|
|
||||||
* clutter_actor_get_pivot_point() instead.
|
|
||||||
*/
|
|
||||||
gdouble
|
|
||||||
clutter_actor_get_rotation (ClutterActor *self,
|
|
||||||
ClutterRotateAxis axis,
|
|
||||||
gfloat *x,
|
|
||||||
gfloat *y,
|
|
||||||
gfloat *z)
|
|
||||||
{
|
|
||||||
const ClutterTransformInfo *info;
|
|
||||||
const AnchorCoord *anchor_coord;
|
|
||||||
gdouble retval = 0;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_ACTOR (self), 0);
|
|
||||||
|
|
||||||
info = _clutter_actor_get_transform_info_or_defaults (self);
|
|
||||||
|
|
||||||
switch (axis)
|
|
||||||
{
|
|
||||||
case CLUTTER_X_AXIS:
|
|
||||||
anchor_coord = &info->rx_center;
|
|
||||||
retval = info->rx_angle;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CLUTTER_Y_AXIS:
|
|
||||||
anchor_coord = &info->ry_center;
|
|
||||||
retval = info->ry_angle;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CLUTTER_Z_AXIS:
|
|
||||||
anchor_coord = &info->rz_center;
|
|
||||||
retval = info->rz_angle;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
anchor_coord = NULL;
|
|
||||||
retval = 0.0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
clutter_anchor_coord_get_units (self, anchor_coord, x, y, z);
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_actor_get_z_rotation_gravity:
|
|
||||||
* @self: A #ClutterActor
|
|
||||||
*
|
|
||||||
* Retrieves the center for the rotation around the Z axis as a
|
|
||||||
* compass direction. If the center was specified in pixels or units
|
|
||||||
* this will return %CLUTTER_GRAVITY_NONE.
|
|
||||||
*
|
|
||||||
* Return value: the Z rotation center
|
|
||||||
*
|
|
||||||
* Since: 1.0
|
|
||||||
*
|
|
||||||
* Deprecated: 1.12: Use the #ClutterActor:pivot-point instead of
|
|
||||||
* a #ClutterGravity
|
|
||||||
*/
|
|
||||||
ClutterGravity
|
|
||||||
clutter_actor_get_z_rotation_gravity (ClutterActor *self)
|
|
||||||
{
|
|
||||||
const ClutterTransformInfo *info;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_ACTOR (self), CLUTTER_GRAVITY_NONE);
|
|
||||||
|
|
||||||
info = _clutter_actor_get_transform_info_or_defaults (self);
|
|
||||||
|
|
||||||
return clutter_anchor_coord_get_gravity (&info->rz_center);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_actor_set_clip:
|
* clutter_actor_set_clip:
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
@ -14301,11 +13887,7 @@ clutter_actor_set_custom_property (ClutterScriptable *scriptable,
|
|||||||
|
|
||||||
info = g_value_get_pointer (value);
|
info = g_value_get_pointer (value);
|
||||||
|
|
||||||
clutter_actor_set_rotation (actor,
|
clutter_actor_set_rotation_angle (actor, info->axis, info->angle);
|
||||||
info->axis, info->angle,
|
|
||||||
info->center_x,
|
|
||||||
info->center_y,
|
|
||||||
info->center_z);
|
|
||||||
|
|
||||||
g_slice_free (RotationInfo, info);
|
g_slice_free (RotationInfo, info);
|
||||||
|
|
||||||
@ -19631,7 +19213,7 @@ clutter_actor_get_easing_delay (ClutterActor *self)
|
|||||||
*
|
*
|
||||||
* |[<!-- language="C" -->
|
* |[<!-- language="C" -->
|
||||||
* clutter_actor_set_easing_duration (actor, 1000);
|
* clutter_actor_set_easing_duration (actor, 1000);
|
||||||
* clutter_actor_set_rotation (actor, CLUTTER_Y_AXIS, 360.0, x, y, z);
|
* clutter_actor_set_rotation_angle (actor, CLUTTER_Y_AXIS, 360.0);
|
||||||
*
|
*
|
||||||
* transition = clutter_actor_get_transition (actor, "rotation-angle-y");
|
* transition = clutter_actor_get_transition (actor, "rotation-angle-y");
|
||||||
* g_signal_connect (transition, "stopped",
|
* g_signal_connect (transition, "stopped",
|
||||||
|
@ -33,26 +33,6 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
CLUTTER_DEPRECATED_FOR(clutter_actor_set_rotation_angle)
|
|
||||||
void clutter_actor_set_rotation (ClutterActor *self,
|
|
||||||
ClutterRotateAxis axis,
|
|
||||||
gdouble angle,
|
|
||||||
gfloat x,
|
|
||||||
gfloat y,
|
|
||||||
gfloat z);
|
|
||||||
CLUTTER_DEPRECATED_FOR(clutter_actor_set_rotation_angle and clutter_actor_set_pivot_point)
|
|
||||||
void clutter_actor_set_z_rotation_from_gravity (ClutterActor *self,
|
|
||||||
gdouble angle,
|
|
||||||
ClutterGravity gravity);
|
|
||||||
CLUTTER_DEPRECATED_FOR(clutter_actor_get_rotation_angle)
|
|
||||||
gdouble clutter_actor_get_rotation (ClutterActor *self,
|
|
||||||
ClutterRotateAxis axis,
|
|
||||||
gfloat *x,
|
|
||||||
gfloat *y,
|
|
||||||
gfloat *z);
|
|
||||||
CLUTTER_DEPRECATED
|
|
||||||
ClutterGravity clutter_actor_get_z_rotation_gravity (ClutterActor *self);
|
|
||||||
|
|
||||||
CLUTTER_DEPRECATED_FOR(clutter_actor_set_scale and clutter_actor_set_pivot_point)
|
CLUTTER_DEPRECATED_FOR(clutter_actor_set_scale and clutter_actor_set_pivot_point)
|
||||||
void clutter_actor_set_scale_full (ClutterActor *self,
|
void clutter_actor_set_scale_full (ClutterActor *self,
|
||||||
gdouble scale_x,
|
gdouble scale_x,
|
||||||
|
@ -126,12 +126,7 @@ frame_cb (ClutterTimeline *timeline,
|
|||||||
|
|
||||||
/* Rotate everything clockwise about stage center*/
|
/* Rotate everything clockwise about stage center*/
|
||||||
if (oh->group != NULL)
|
if (oh->group != NULL)
|
||||||
clutter_actor_set_rotation (oh->group,
|
clutter_actor_set_rotation_angle (oh->group, CLUTTER_Z_AXIS, rotation);
|
||||||
CLUTTER_Z_AXIS,
|
|
||||||
rotation,
|
|
||||||
oh->stage_width / 2,
|
|
||||||
oh->stage_height / 2,
|
|
||||||
0);
|
|
||||||
|
|
||||||
for (i = 0; i < n_hands; i++)
|
for (i = 0; i < n_hands; i++)
|
||||||
{
|
{
|
||||||
@ -139,10 +134,9 @@ frame_cb (ClutterTimeline *timeline,
|
|||||||
* to take into account any scaling.
|
* to take into account any scaling.
|
||||||
*/
|
*/
|
||||||
if (oh->hand[i] != NULL)
|
if (oh->hand[i] != NULL)
|
||||||
clutter_actor_set_rotation (oh->hand[i],
|
clutter_actor_set_rotation_angle (oh->hand[i],
|
||||||
CLUTTER_Z_AXIS,
|
CLUTTER_Z_AXIS,
|
||||||
-6.0 * rotation,
|
-6.0 * rotation);
|
||||||
0, 0, 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,6 +199,7 @@ test_actors_main (int argc, char *argv[])
|
|||||||
|
|
||||||
/* create a new actor to hold other actors */
|
/* create a new actor to hold other actors */
|
||||||
oh->group = clutter_actor_new ();
|
oh->group = clutter_actor_new ();
|
||||||
|
clutter_actor_set_pivot_point (oh->group, 0.5, 0.5);
|
||||||
clutter_actor_set_layout_manager (oh->group, clutter_fixed_layout_new ());
|
clutter_actor_set_layout_manager (oh->group, clutter_fixed_layout_new ());
|
||||||
clutter_actor_set_name (oh->group, "Group");
|
clutter_actor_set_name (oh->group, "Group");
|
||||||
g_signal_connect (oh->group, "destroy", G_CALLBACK (on_group_destroy), oh);
|
g_signal_connect (oh->group, "destroy", G_CALLBACK (on_group_destroy), oh);
|
||||||
|
@ -157,6 +157,7 @@ make_flower_actor (void)
|
|||||||
"width", (gfloat) size,
|
"width", (gfloat) size,
|
||||||
"height", (gfloat) size,
|
"height", (gfloat) size,
|
||||||
NULL);
|
NULL);
|
||||||
|
clutter_actor_set_pivot_point (ctex, 0.5, 0.5);
|
||||||
|
|
||||||
g_object_unref (canvas);
|
g_object_unref (canvas);
|
||||||
|
|
||||||
@ -182,12 +183,9 @@ tick (ClutterTimeline *timeline,
|
|||||||
clutter_actor_set_position (flowers[i]->ctex,
|
clutter_actor_set_position (flowers[i]->ctex,
|
||||||
flowers[i]->x, flowers[i]->y);
|
flowers[i]->x, flowers[i]->y);
|
||||||
|
|
||||||
clutter_actor_set_rotation (flowers[i]->ctex,
|
clutter_actor_set_rotation_angle (flowers[i]->ctex,
|
||||||
CLUTTER_Z_AXIS,
|
CLUTTER_Z_AXIS,
|
||||||
flowers[i]->rot,
|
flowers[i]->rot);
|
||||||
clutter_actor_get_width (flowers[i]->ctex)/2,
|
|
||||||
clutter_actor_get_height (flowers[i]->ctex)/2,
|
|
||||||
0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,22 +117,18 @@ frame_cb (ClutterTimeline *timeline,
|
|||||||
|
|
||||||
/* Rotate everything clockwise about stage center*/
|
/* Rotate everything clockwise about stage center*/
|
||||||
|
|
||||||
clutter_actor_set_rotation (oh->group,
|
clutter_actor_set_rotation_angle (oh->group,
|
||||||
CLUTTER_Z_AXIS,
|
CLUTTER_Z_AXIS,
|
||||||
rotation,
|
rotation);
|
||||||
oh->stage_width / 2,
|
|
||||||
oh->stage_height / 2,
|
|
||||||
0);
|
|
||||||
|
|
||||||
for (i = 0; i < n_hands; i++)
|
for (i = 0; i < n_hands; i++)
|
||||||
{
|
{
|
||||||
/* Rotate each hand around there centers - to get this we need
|
/* Rotate each hand around there centers - to get this we need
|
||||||
* to take into account any scaling.
|
* to take into account any scaling.
|
||||||
*/
|
*/
|
||||||
clutter_actor_set_rotation (oh->hand[i],
|
clutter_actor_set_rotation_angle (oh->hand[i],
|
||||||
CLUTTER_Z_AXIS,
|
CLUTTER_Z_AXIS,
|
||||||
-6.0 * rotation,
|
-6.0 * rotation);
|
||||||
0, 0, 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,6 +260,7 @@ test_paint_wrapper_main (int argc, char *argv[])
|
|||||||
|
|
||||||
/* create a new group to hold multiple actors in a group */
|
/* create a new group to hold multiple actors in a group */
|
||||||
oh->group = clutter_actor_new();
|
oh->group = clutter_actor_new();
|
||||||
|
clutter_actor_set_pivot_point (oh->group, 0.5, 0.5);
|
||||||
|
|
||||||
oh->hand = g_new (ClutterActor*, n_hands);
|
oh->hand = g_new (ClutterActor*, n_hands);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user