mirror of
https://github.com/brl/mutter.git
synced 2025-02-13 03: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>
|
||||
|
||||
* 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
|
||||
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;
|
||||
|
||||
behave_class->alpha_notify = clutter_behaviour_ellipse_alpha_notify;
|
||||
|
||||
behave_class->apply = clutter_behaviour_ellipse_apply;
|
||||
|
||||
/**
|
||||
* ClutterBehaviourEllipse:angle-begin:
|
||||
*
|
||||
@ -588,10 +605,26 @@ clutter_behaviour_ellipse_get_height (ClutterBehaviourEllipse * self)
|
||||
return self->priv->b << 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* clutter_behaviour_ellipse_set_angle_begin
|
||||
* @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
|
||||
*
|
||||
* Sets the angle at which movement begins.
|
||||
@ -599,8 +632,8 @@ clutter_behaviour_ellipse_get_height (ClutterBehaviourEllipse * self)
|
||||
* Since: 0.4
|
||||
*/
|
||||
void
|
||||
clutter_behaviour_ellipse_set_angle_begin (ClutterBehaviourEllipse * self,
|
||||
ClutterAngle angle_begin)
|
||||
clutter_behaviour_ellipse_set_angle_beginx (ClutterBehaviourEllipse * self,
|
||||
ClutterAngle 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.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* Since: 0.4
|
||||
*/
|
||||
ClutterAngle
|
||||
clutter_behaviour_ellipse_get_angle_begin (ClutterBehaviourEllipse * self)
|
||||
clutter_behaviour_ellipse_get_angle_beginx (ClutterBehaviourEllipse * self)
|
||||
{
|
||||
return self->priv->angle_begin;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* clutter_behaviour_ellipse_set_angle_end
|
||||
* @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
|
||||
*
|
||||
* Sets the angle at which movement ends.
|
||||
@ -638,8 +703,8 @@ clutter_behaviour_ellipse_get_angle_begin (ClutterBehaviourEllipse * self)
|
||||
* Since: 0.4
|
||||
*/
|
||||
void
|
||||
clutter_behaviour_ellipse_set_angle_end (ClutterBehaviourEllipse * self,
|
||||
ClutterAngle angle_end)
|
||||
clutter_behaviour_ellipse_set_angle_endx (ClutterBehaviourEllipse * self,
|
||||
ClutterAngle 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.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* Since: 0.4
|
||||
*/
|
||||
ClutterAngle
|
||||
clutter_behaviour_ellipse_get_angle_end (ClutterBehaviourEllipse * self)
|
||||
clutter_behaviour_ellipse_get_angle_endx (ClutterBehaviourEllipse * self)
|
||||
{
|
||||
return self->priv->angle_end;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* clutter_behaviour_ellipse_set_angle_tilt
|
||||
* @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
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
void
|
||||
clutter_behaviour_ellipse_set_angle_tilt (ClutterBehaviourEllipse * self,
|
||||
ClutterAngle angle_tilt)
|
||||
clutter_behaviour_ellipse_set_angle_tiltx (ClutterBehaviourEllipse * self,
|
||||
ClutterAngle 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.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* Since: 0.4
|
||||
*/
|
||||
ClutterAngle
|
||||
clutter_behaviour_ellipse_get_angle_tilt (ClutterBehaviourEllipse * self)
|
||||
clutter_behaviour_ellipse_get_angle_tiltx (ClutterBehaviourEllipse * self)
|
||||
{
|
||||
return self->priv->angle_tilt;
|
||||
}
|
||||
|
@ -115,20 +115,35 @@ void clutter_behaviour_ellipse_set_height (ClutterBehaviourEll
|
||||
|
||||
gint clutter_behaviour_ellipse_get_height (ClutterBehaviourEllipse * self);
|
||||
|
||||
void clutter_behaviour_ellipse_set_angle_begin (ClutterBehaviourEllipse * self,
|
||||
ClutterAngle angle_begin);
|
||||
void clutter_behaviour_ellipse_set_angle_begin (ClutterBehaviourEllipse * self,
|
||||
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 angle_end);
|
||||
ClutterAngle clutter_behaviour_ellipse_get_angle_beginx (ClutterBehaviourEllipse * self);
|
||||
|
||||
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,
|
||||
ClutterAngle angle_tilt);
|
||||
void clutter_behaviour_ellipse_set_angle_endx (ClutterBehaviourEllipse * self,
|
||||
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
|
||||
|
||||
|
@ -46,10 +46,12 @@ typedef gint32 ClutterFixed;
|
||||
*/
|
||||
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_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_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_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_ONE (1 << CFX_Q) /* 1 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user