mirror of
https://github.com/brl/mutter.git
synced 2025-02-15 04:44:11 +00:00
improvements to ClutterBehaviourEllipse
This commit is contained in:
parent
071719ffa4
commit
f605136c39
18
ChangeLog
18
ChangeLog
@ -1,3 +1,21 @@
|
|||||||
|
2007-07-11 Tomas Frydrych <tf@openedhand.com>
|
||||||
|
|
||||||
|
* clutter/clutter-fixed.h:
|
||||||
|
Fixed CLUTTER_ANGLE_ macros.
|
||||||
|
|
||||||
|
* clutter/clutter-behaviour-ellipse.h:
|
||||||
|
* clutter/clutter-behaviour-ellipse.c:
|
||||||
|
Implemented "apply" signal closer to position actor on the start
|
||||||
|
of the elliptic path.
|
||||||
|
|
||||||
|
(clutter_behaviour_ellipse_get_angle_begin):
|
||||||
|
(clutter_behaviour_ellipse_set_angle_begin):
|
||||||
|
(clutter_behaviour_ellipse_get_angle_end):
|
||||||
|
(clutter_behaviour_ellipse_set_angle_end):
|
||||||
|
(clutter_behaviour_ellipse_get_angle_tilt):
|
||||||
|
(clutter_behaviour_ellipse_set_angle_tilt):
|
||||||
|
Renamed with an x suffix; added versions for angles in degrees.
|
||||||
|
|
||||||
2007-07-09 Matthew Allum <mallum@openedhand.com>
|
2007-07-09 Matthew Allum <mallum@openedhand.com>
|
||||||
|
|
||||||
* TODO:
|
* TODO:
|
||||||
|
@ -249,6 +249,22 @@ clutter_behaviour_ellipse_get_property (GObject *gobject,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clutter_behaviour_ellipse_apply (ClutterBehaviour *behave,
|
||||||
|
ClutterActor *actor)
|
||||||
|
{
|
||||||
|
ClutterKnot knot;
|
||||||
|
ClutterBehaviourEllipse * e = CLUTTER_BEHAVIOUR_ELLIPSE (behave);
|
||||||
|
|
||||||
|
clutter_behaviour_ellipse_advance (e, e->priv->angle_begin, &knot);
|
||||||
|
|
||||||
|
clutter_actor_set_position (actor, knot.x, knot.y);
|
||||||
|
|
||||||
|
if (CLUTTER_BEHAVIOUR_CLASS (clutter_behaviour_ellipse_parent_class)->apply)
|
||||||
|
CLUTTER_BEHAVIOUR_CLASS (clutter_behaviour_ellipse_parent_class)->apply (behave, actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_behaviour_ellipse_class_init (ClutterBehaviourEllipseClass *klass)
|
clutter_behaviour_ellipse_class_init (ClutterBehaviourEllipseClass *klass)
|
||||||
{
|
{
|
||||||
@ -260,7 +276,8 @@ clutter_behaviour_ellipse_class_init (ClutterBehaviourEllipseClass *klass)
|
|||||||
object_class->get_property = clutter_behaviour_ellipse_get_property;
|
object_class->get_property = clutter_behaviour_ellipse_get_property;
|
||||||
|
|
||||||
behave_class->alpha_notify = clutter_behaviour_ellipse_alpha_notify;
|
behave_class->alpha_notify = clutter_behaviour_ellipse_alpha_notify;
|
||||||
|
behave_class->apply = clutter_behaviour_ellipse_apply;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterBehaviourEllipse:angle-begin:
|
* ClutterBehaviourEllipse:angle-begin:
|
||||||
*
|
*
|
||||||
@ -588,10 +605,26 @@ clutter_behaviour_ellipse_get_height (ClutterBehaviourEllipse * self)
|
|||||||
return self->priv->b << 1;
|
return self->priv->b << 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_behaviour_ellipse_set_angle_begin
|
* clutter_behaviour_ellipse_set_angle_begin
|
||||||
* @self: a #ClutterBehaviourEllipse
|
* @self: a #ClutterBehaviourEllipse
|
||||||
|
* @angle_begin: angle at which movement begins in degrees
|
||||||
|
*
|
||||||
|
* Sets the angle at which movement begins.
|
||||||
|
*
|
||||||
|
* Since: 0.4
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_behaviour_ellipse_set_angle_begin (ClutterBehaviourEllipse * self,
|
||||||
|
gdouble angle_begin)
|
||||||
|
{
|
||||||
|
clutter_behaviour_ellipse_set_angle_beginx (self,
|
||||||
|
CLUTTER_ANGLE_FROM_DEG (angle_begin));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_behaviour_ellipse_set_angle_beginx
|
||||||
|
* @self: a #ClutterBehaviourEllipse
|
||||||
* @angle_begin: #ClutterAngle at which movement begins
|
* @angle_begin: #ClutterAngle at which movement begins
|
||||||
*
|
*
|
||||||
* Sets the angle at which movement begins.
|
* Sets the angle at which movement begins.
|
||||||
@ -599,8 +632,8 @@ clutter_behaviour_ellipse_get_height (ClutterBehaviourEllipse * self)
|
|||||||
* Since: 0.4
|
* Since: 0.4
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_behaviour_ellipse_set_angle_begin (ClutterBehaviourEllipse * self,
|
clutter_behaviour_ellipse_set_angle_beginx (ClutterBehaviourEllipse * self,
|
||||||
ClutterAngle angle_begin)
|
ClutterAngle angle_begin)
|
||||||
{
|
{
|
||||||
if (self->priv->angle_begin != angle_begin)
|
if (self->priv->angle_begin != angle_begin)
|
||||||
{
|
{
|
||||||
@ -617,20 +650,52 @@ clutter_behaviour_ellipse_set_angle_begin (ClutterBehaviourEllipse * self,
|
|||||||
*
|
*
|
||||||
* Gets the angle at which movements begins.
|
* Gets the angle at which movements begins.
|
||||||
*
|
*
|
||||||
|
* Return value: angle in degrees
|
||||||
|
*
|
||||||
|
* Since: 0.4
|
||||||
|
*/
|
||||||
|
gdouble
|
||||||
|
clutter_behaviour_ellipse_get_angle_begin (ClutterBehaviourEllipse * self)
|
||||||
|
{
|
||||||
|
return CLUTTER_ANGLE_TO_DEG (self->priv->angle_begin);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_behaviour_ellipse_get_angle_beginx
|
||||||
|
* @self: a #ClutterBehaviourEllipse
|
||||||
|
*
|
||||||
|
* Gets the angle at which movements begins.
|
||||||
|
*
|
||||||
* Return value: a #ClutterAngle
|
* Return value: a #ClutterAngle
|
||||||
*
|
*
|
||||||
* Since: 0.4
|
* Since: 0.4
|
||||||
*/
|
*/
|
||||||
ClutterAngle
|
ClutterAngle
|
||||||
clutter_behaviour_ellipse_get_angle_begin (ClutterBehaviourEllipse * self)
|
clutter_behaviour_ellipse_get_angle_beginx (ClutterBehaviourEllipse * self)
|
||||||
{
|
{
|
||||||
return self->priv->angle_begin;
|
return self->priv->angle_begin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_behaviour_ellipse_set_angle_end
|
* clutter_behaviour_ellipse_set_angle_end
|
||||||
* @self: a #ClutterBehaviourEllipse
|
* @self: a #ClutterBehaviourEllipse
|
||||||
|
* @angle_end: angle at which movement ends in degrees.
|
||||||
|
*
|
||||||
|
* Sets the angle at which movement ends.
|
||||||
|
*
|
||||||
|
* Since: 0.4
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_behaviour_ellipse_set_angle_end (ClutterBehaviourEllipse * self,
|
||||||
|
gdouble angle_end)
|
||||||
|
{
|
||||||
|
clutter_behaviour_ellipse_set_angle_endx (self,
|
||||||
|
CLUTTER_ANGLE_FROM_DEG (angle_end));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_behaviour_ellipse_set_angle_endx
|
||||||
|
* @self: a #ClutterBehaviourEllipse
|
||||||
* @angle_end: #ClutterAngle at which movement ends
|
* @angle_end: #ClutterAngle at which movement ends
|
||||||
*
|
*
|
||||||
* Sets the angle at which movement ends.
|
* Sets the angle at which movement ends.
|
||||||
@ -638,8 +703,8 @@ clutter_behaviour_ellipse_get_angle_begin (ClutterBehaviourEllipse * self)
|
|||||||
* Since: 0.4
|
* Since: 0.4
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_behaviour_ellipse_set_angle_end (ClutterBehaviourEllipse * self,
|
clutter_behaviour_ellipse_set_angle_endx (ClutterBehaviourEllipse * self,
|
||||||
ClutterAngle angle_end)
|
ClutterAngle angle_end)
|
||||||
{
|
{
|
||||||
if (self->priv->angle_end != angle_end)
|
if (self->priv->angle_end != angle_end)
|
||||||
{
|
{
|
||||||
@ -656,20 +721,52 @@ clutter_behaviour_ellipse_set_angle_end (ClutterBehaviourEllipse * self,
|
|||||||
*
|
*
|
||||||
* Gets the at which movements ends.
|
* Gets the at which movements ends.
|
||||||
*
|
*
|
||||||
|
* Return value: angle in degrees
|
||||||
|
*
|
||||||
|
* Since: 0.4
|
||||||
|
*/
|
||||||
|
gdouble
|
||||||
|
clutter_behaviour_ellipse_get_angle_end (ClutterBehaviourEllipse * self)
|
||||||
|
{
|
||||||
|
return CLUTTER_ANGLE_TO_DEG (self->priv->angle_end);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_behaviour_ellipse_get_angle_endx
|
||||||
|
* @self: a #ClutterBehaviourEllipse
|
||||||
|
*
|
||||||
|
* Gets the angle at which movements ends.
|
||||||
|
*
|
||||||
* Return value: a #ClutterAngle
|
* Return value: a #ClutterAngle
|
||||||
*
|
*
|
||||||
* Since: 0.4
|
* Since: 0.4
|
||||||
*/
|
*/
|
||||||
ClutterAngle
|
ClutterAngle
|
||||||
clutter_behaviour_ellipse_get_angle_end (ClutterBehaviourEllipse * self)
|
clutter_behaviour_ellipse_get_angle_endx (ClutterBehaviourEllipse * self)
|
||||||
{
|
{
|
||||||
return self->priv->angle_end;
|
return self->priv->angle_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_behaviour_ellipse_set_angle_tilt
|
* clutter_behaviour_ellipse_set_angle_tilt
|
||||||
* @self: a #ClutterBehaviourEllipse
|
* @self: a #ClutterBehaviourEllipse
|
||||||
|
* @angle_tilt: tilt of the elipse around the center in degrees.
|
||||||
|
*
|
||||||
|
* Sets the angle at which the ellipse should be tilted around it's center.
|
||||||
|
*
|
||||||
|
* Since: 0.4
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_behaviour_ellipse_set_angle_tilt (ClutterBehaviourEllipse * self,
|
||||||
|
gdouble angle_tilt)
|
||||||
|
{
|
||||||
|
clutter_behaviour_ellipse_set_angle_tiltx (self,
|
||||||
|
CLUTTER_ANGLE_FROM_DEG (angle_tilt));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_behaviour_ellipse_set_angle_tiltx
|
||||||
|
* @self: a #ClutterBehaviourEllipse
|
||||||
* @angle_tilt: #ClutterAngle tilt of the elipse around the center
|
* @angle_tilt: #ClutterAngle tilt of the elipse around the center
|
||||||
*
|
*
|
||||||
* Sets the angle at which the ellipse should be tilted around it's center.
|
* Sets the angle at which the ellipse should be tilted around it's center.
|
||||||
@ -677,8 +774,8 @@ clutter_behaviour_ellipse_get_angle_end (ClutterBehaviourEllipse * self)
|
|||||||
* Since: 0.4
|
* Since: 0.4
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_behaviour_ellipse_set_angle_tilt (ClutterBehaviourEllipse * self,
|
clutter_behaviour_ellipse_set_angle_tiltx (ClutterBehaviourEllipse * self,
|
||||||
ClutterAngle angle_tilt)
|
ClutterAngle angle_tilt)
|
||||||
{
|
{
|
||||||
if (self->priv->angle_tilt != angle_tilt)
|
if (self->priv->angle_tilt != angle_tilt)
|
||||||
{
|
{
|
||||||
@ -695,12 +792,28 @@ clutter_behaviour_ellipse_set_angle_tilt (ClutterBehaviourEllipse * self,
|
|||||||
*
|
*
|
||||||
* Gets the tilt of the ellipse around the center.
|
* Gets the tilt of the ellipse around the center.
|
||||||
*
|
*
|
||||||
|
* Return value: angle in degrees.
|
||||||
|
*
|
||||||
|
* Since: 0.4
|
||||||
|
*/
|
||||||
|
gdouble
|
||||||
|
clutter_behaviour_ellipse_get_angle_tilt (ClutterBehaviourEllipse * self)
|
||||||
|
{
|
||||||
|
return CLUTTER_ANGLE_TO_DEG (self->priv->angle_tilt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_behaviour_ellipse_get_angle_tiltx
|
||||||
|
* @self: a #ClutterBehaviourEllipse
|
||||||
|
*
|
||||||
|
* Gets the tilt of the ellipse around the center.
|
||||||
|
*
|
||||||
* Return value: a #ClutterAngle
|
* Return value: a #ClutterAngle
|
||||||
*
|
*
|
||||||
* Since: 0.4
|
* Since: 0.4
|
||||||
*/
|
*/
|
||||||
ClutterAngle
|
ClutterAngle
|
||||||
clutter_behaviour_ellipse_get_angle_tilt (ClutterBehaviourEllipse * self)
|
clutter_behaviour_ellipse_get_angle_tiltx (ClutterBehaviourEllipse * self)
|
||||||
{
|
{
|
||||||
return self->priv->angle_tilt;
|
return self->priv->angle_tilt;
|
||||||
}
|
}
|
||||||
|
@ -115,20 +115,35 @@ void clutter_behaviour_ellipse_set_height (ClutterBehaviourEll
|
|||||||
|
|
||||||
gint clutter_behaviour_ellipse_get_height (ClutterBehaviourEllipse * self);
|
gint clutter_behaviour_ellipse_get_height (ClutterBehaviourEllipse * self);
|
||||||
|
|
||||||
void clutter_behaviour_ellipse_set_angle_begin (ClutterBehaviourEllipse * self,
|
void clutter_behaviour_ellipse_set_angle_begin (ClutterBehaviourEllipse * self,
|
||||||
ClutterAngle angle_begin);
|
gdouble angle_begin);
|
||||||
|
|
||||||
ClutterAngle clutter_behaviour_ellipse_get_angle_begin (ClutterBehaviourEllipse * self);
|
void clutter_behaviour_ellipse_set_angle_beginx (ClutterBehaviourEllipse * self,
|
||||||
|
ClutterAngle angle_begin);
|
||||||
|
|
||||||
void clutter_behaviour_ellipse_set_angle_end (ClutterBehaviourEllipse * self,
|
ClutterAngle clutter_behaviour_ellipse_get_angle_beginx (ClutterBehaviourEllipse * self);
|
||||||
ClutterAngle angle_end);
|
|
||||||
|
|
||||||
ClutterAngle clutter_behaviour_ellipse_get_angle_end (ClutterBehaviourEllipse * self);
|
gdouble clutter_behaviour_ellipse_get_angle_begin (ClutterBehaviourEllipse * self);
|
||||||
|
|
||||||
void clutter_behaviour_ellipse_set_angle_tilt (ClutterBehaviourEllipse * self,
|
void clutter_behaviour_ellipse_set_angle_endx (ClutterBehaviourEllipse * self,
|
||||||
ClutterAngle angle_tilt);
|
ClutterAngle angle_end);
|
||||||
|
|
||||||
ClutterAngle clutter_behaviour_ellipse_get_angle_tilt (ClutterBehaviourEllipse * self);
|
void clutter_behaviour_ellipse_set_angle_end (ClutterBehaviourEllipse * self,
|
||||||
|
gdouble angle_end);
|
||||||
|
|
||||||
|
ClutterAngle clutter_behaviour_ellipse_get_angle_endx (ClutterBehaviourEllipse * self);
|
||||||
|
|
||||||
|
gdouble clutter_behaviour_ellipse_get_angle_end (ClutterBehaviourEllipse * self);
|
||||||
|
|
||||||
|
void clutter_behaviour_ellipse_set_angle_tiltx (ClutterBehaviourEllipse * self,
|
||||||
|
ClutterAngle angle_tilt);
|
||||||
|
|
||||||
|
void clutter_behaviour_ellipse_set_angle_tilt (ClutterBehaviourEllipse * self,
|
||||||
|
gdouble angle_tilt);
|
||||||
|
|
||||||
|
ClutterAngle clutter_behaviour_ellipse_get_angle_tiltx (ClutterBehaviourEllipse * self);
|
||||||
|
|
||||||
|
gdouble clutter_behaviour_ellipse_get_angle_tilt (ClutterBehaviourEllipse * self);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -46,10 +46,12 @@ typedef gint32 ClutterFixed;
|
|||||||
*/
|
*/
|
||||||
typedef gint32 ClutterAngle; /* angle such that 1024 == 2*PI */
|
typedef gint32 ClutterAngle; /* angle such that 1024 == 2*PI */
|
||||||
|
|
||||||
#define CLUTTER_ANGLE_FROM_DEG(x) (CLUTTER_FLOAT_TO_INT ((x * 1024.0) / 360.0))
|
#define CLUTTER_ANGLE_FROM_DEG(x) (CLUTTER_FLOAT_TO_INT (((x) * 1024.0) / 360.0))
|
||||||
#define CLUTTER_ANGLE_FROM_DEGF(x) (CLUTTER_FLOAT_TO_INT (((float)x * 1024.0f) / 360.0f))
|
#define CLUTTER_ANGLE_FROM_DEGF(x) (CLUTTER_FLOAT_TO_INT (((float)(x) * 1024.0f) / 360.0f))
|
||||||
#define CLUTTER_ANGLE_TO_DEGF(x) (((float)x * 360.0)/ 1024.0)
|
#define CLUTTER_ANGLE_FROM_DEGX(x) (CFX_INT((((x)/360)*1024) + CFX_HALF))
|
||||||
#define CLUTTER_ANGLE_FROM_DEGX(x) (CFX_INT(((x/360)*1024) + CFX_HALF))
|
#define CLUTTER_ANGLE_TO_DEG(x) (((x) * 360.0)/ 1024.0)
|
||||||
|
#define CLUTTER_ANGLE_TO_DEGF(x) (((float)(x) * 360.0)/ 1024.0)
|
||||||
|
#define CLUTTER_ANGLE_TO_DEGX(x) (CLUTTER_INT_TO_FIXED((x) * 45)/128)
|
||||||
|
|
||||||
#define CFX_Q 16 /* Decimal part size in bits */
|
#define CFX_Q 16 /* Decimal part size in bits */
|
||||||
#define CFX_ONE (1 << CFX_Q) /* 1 */
|
#define CFX_ONE (1 << CFX_Q) /* 1 */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user