mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 17:40:40 -05:00
2006-12-12 Emmanuele Bassi <ebassi@openedhand.com>
Rework part of the show/hide machinery. Allow groups sub-classes and composite actors to override show_all/hide_all in order to decide which children they wish to show/hide. This means that if an actor overrides the default show/hide virtual methods, it'll have to chain up to the parent class show/hide. While we're at it, provide the fully recursive clutter_actor_show_all() and clutter_actor_hide_all() methods. * clutter/clutter-behaviour-path.c: Add apidoc for the ClutterKnot functions; add pathological equality case for clutter_knot_equal(). * clutter/clutter-event.h: * clutter/clutter-feature.h: * clutter/clutter-behaviour.c: * clutter/clutter-behaviour-scale.c:Fix parameters name so that gtk-doc doesn't complain. * clutter/clutter-actor.c: * clutter/clutter-event.c: Add apidoc * clutter/clutter-actor.h: * clutter/clutter-actor.c: Add a clutter_actor_show_all() and a clutter_actor_hide_all() functions; provide a mechanism for groups and composited actors to programmatically select what to show/hide when clutter_actor_show_all() and clutter_actor_hide_all() are called. If you are overriding the ClutterActor::show or the ClutterActor::hide virtual methods you should chain up with the parent class. * clutter/clutter-group.c: Override show_all and hide_all and recursively show/hide every child inside the group; clutter_group_show_all() and clutter_group_hide_all() remain as non recursive versions of clutter_actor_show_all() and clutter_actor_hide_all() (maybe we should rename them in order to avoid name clashes with the bindings). * clutter/clutter-stage.c: * clutter/clutter-texture.c: Chain up with parent class show and hide vfuncs. * clutter/clutter-clone-texture.h: * clutter/clutter-clone-texture.c: Provide API for changing the parent texture of a clone texture actor. * examples/behave.c: * examples/super-oh.c: * examples/test.c: Use clutter_actor_show_all() instead of clutter_group_show_all().
This commit is contained in:
parent
1d1dc43674
commit
10fbfb1659
51
ChangeLog
51
ChangeLog
@ -1,3 +1,54 @@
|
|||||||
|
2006-12-12 Emmanuele Bassi <ebassi@openedhand.com>
|
||||||
|
|
||||||
|
Rework part of the show/hide machinery. Allow groups sub-classes
|
||||||
|
and composite actors to override show_all/hide_all in order to
|
||||||
|
decide which children they wish to show/hide. This means that
|
||||||
|
if an actor overrides the default show/hide virtual methods, it'll
|
||||||
|
have to chain up to the parent class show/hide. While we're at it,
|
||||||
|
provide the fully recursive clutter_actor_show_all() and
|
||||||
|
clutter_actor_hide_all() methods.
|
||||||
|
|
||||||
|
* clutter/clutter-behaviour-path.c: Add apidoc for the ClutterKnot
|
||||||
|
functions; add pathological equality case for clutter_knot_equal().
|
||||||
|
|
||||||
|
* clutter/clutter-event.h:
|
||||||
|
* clutter/clutter-feature.h:
|
||||||
|
* clutter/clutter-behaviour.c:
|
||||||
|
* clutter/clutter-behaviour-scale.c:Fix parameters name so that
|
||||||
|
gtk-doc doesn't complain.
|
||||||
|
|
||||||
|
* clutter/clutter-actor.c:
|
||||||
|
* clutter/clutter-event.c: Add apidoc
|
||||||
|
|
||||||
|
* clutter/clutter-actor.h:
|
||||||
|
* clutter/clutter-actor.c: Add a clutter_actor_show_all() and a
|
||||||
|
clutter_actor_hide_all() functions; provide a mechanism for
|
||||||
|
groups and composited actors to programmatically select what to
|
||||||
|
show/hide when clutter_actor_show_all() and clutter_actor_hide_all()
|
||||||
|
are called. If you are overriding the ClutterActor::show or
|
||||||
|
the ClutterActor::hide virtual methods you should chain up with
|
||||||
|
the parent class.
|
||||||
|
|
||||||
|
* clutter/clutter-group.c: Override show_all and hide_all and
|
||||||
|
recursively show/hide every child inside the group;
|
||||||
|
clutter_group_show_all() and clutter_group_hide_all() remain as non
|
||||||
|
recursive versions of clutter_actor_show_all() and
|
||||||
|
clutter_actor_hide_all() (maybe we should rename them in order
|
||||||
|
to avoid name clashes with the bindings).
|
||||||
|
|
||||||
|
* clutter/clutter-stage.c:
|
||||||
|
* clutter/clutter-texture.c: Chain up with parent class show
|
||||||
|
and hide vfuncs.
|
||||||
|
|
||||||
|
* clutter/clutter-clone-texture.h:
|
||||||
|
* clutter/clutter-clone-texture.c: Provide API for changing the
|
||||||
|
parent texture of a clone texture actor.
|
||||||
|
|
||||||
|
* examples/behave.c:
|
||||||
|
* examples/super-oh.c:
|
||||||
|
* examples/test.c: Use clutter_actor_show_all() instead of
|
||||||
|
clutter_group_show_all().
|
||||||
|
|
||||||
2006-12-08 Matthew Allum <mallum@openedhand.com>
|
2006-12-08 Matthew Allum <mallum@openedhand.com>
|
||||||
|
|
||||||
* clutter.doap:
|
* clutter.doap:
|
||||||
|
@ -114,6 +114,21 @@ redraw_update_idle (gpointer data)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clutter_actor_real_show (ClutterActor *self)
|
||||||
|
{
|
||||||
|
if (!CLUTTER_ACTOR_IS_VISIBLE (self))
|
||||||
|
{
|
||||||
|
if (!CLUTTER_ACTOR_IS_REALIZED (self))
|
||||||
|
clutter_actor_realize (self);
|
||||||
|
|
||||||
|
CLUTTER_ACTOR_SET_FLAGS (self, CLUTTER_ACTOR_MAPPED);
|
||||||
|
|
||||||
|
if (CLUTTER_ACTOR_IS_VISIBLE (self))
|
||||||
|
clutter_actor_queue_redraw (self);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_actor_show
|
* clutter_actor_show
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
@ -126,22 +141,8 @@ clutter_actor_show (ClutterActor *self)
|
|||||||
{
|
{
|
||||||
if (!CLUTTER_ACTOR_IS_VISIBLE (self))
|
if (!CLUTTER_ACTOR_IS_VISIBLE (self))
|
||||||
{
|
{
|
||||||
ClutterActorClass *klass;
|
|
||||||
|
|
||||||
g_object_ref (self);
|
g_object_ref (self);
|
||||||
|
|
||||||
if (!CLUTTER_ACTOR_IS_REALIZED (self))
|
|
||||||
clutter_actor_realize(self);
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_SET_FLAGS (self, CLUTTER_ACTOR_MAPPED);
|
|
||||||
|
|
||||||
klass = CLUTTER_ACTOR_GET_CLASS (self);
|
|
||||||
if (klass->show)
|
|
||||||
(klass->show) (self);
|
|
||||||
|
|
||||||
if (CLUTTER_ACTOR_IS_VISIBLE (self))
|
|
||||||
clutter_actor_queue_redraw (self);
|
|
||||||
|
|
||||||
g_signal_emit (self, actor_signals[SHOW], 0);
|
g_signal_emit (self, actor_signals[SHOW], 0);
|
||||||
g_object_notify (G_OBJECT (self), "visible");
|
g_object_notify (G_OBJECT (self), "visible");
|
||||||
|
|
||||||
@ -149,6 +150,37 @@ clutter_actor_show (ClutterActor *self)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_actor_show_all:
|
||||||
|
* @self: a #ClutterActor
|
||||||
|
*
|
||||||
|
* Recursively show an actor, and any child actor if @self is a
|
||||||
|
* #ClutterGroup.
|
||||||
|
*
|
||||||
|
* Since: 0.2
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_actor_show_all (ClutterActor *self)
|
||||||
|
{
|
||||||
|
ClutterActorClass *klass;
|
||||||
|
|
||||||
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
|
klass = CLUTTER_ACTOR_GET_CLASS (self);
|
||||||
|
if (klass->show_all)
|
||||||
|
klass->show_all (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
clutter_actor_real_hide (ClutterActor *self)
|
||||||
|
{
|
||||||
|
if (CLUTTER_ACTOR_IS_VISIBLE (self))
|
||||||
|
{
|
||||||
|
CLUTTER_ACTOR_UNSET_FLAGS (self, CLUTTER_ACTOR_MAPPED);
|
||||||
|
clutter_actor_queue_redraw (self);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_actor_hide
|
* clutter_actor_hide
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
@ -161,18 +193,8 @@ clutter_actor_hide (ClutterActor *self)
|
|||||||
{
|
{
|
||||||
if (CLUTTER_ACTOR_IS_VISIBLE (self))
|
if (CLUTTER_ACTOR_IS_VISIBLE (self))
|
||||||
{
|
{
|
||||||
ClutterActorClass *klass;
|
|
||||||
|
|
||||||
g_object_ref (self);
|
g_object_ref (self);
|
||||||
|
|
||||||
CLUTTER_ACTOR_UNSET_FLAGS (self, CLUTTER_ACTOR_MAPPED);
|
|
||||||
|
|
||||||
klass = CLUTTER_ACTOR_GET_CLASS (self);
|
|
||||||
if (klass->hide)
|
|
||||||
(klass->hide) (self);
|
|
||||||
|
|
||||||
clutter_actor_queue_redraw (self);
|
|
||||||
|
|
||||||
g_signal_emit (self, actor_signals[HIDE], 0);
|
g_signal_emit (self, actor_signals[HIDE], 0);
|
||||||
g_object_notify (G_OBJECT (self), "visible");
|
g_object_notify (G_OBJECT (self), "visible");
|
||||||
|
|
||||||
@ -180,6 +202,27 @@ clutter_actor_hide (ClutterActor *self)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_actor_hide_all:
|
||||||
|
* @self: a #ClutterActor
|
||||||
|
*
|
||||||
|
* Recursively hides an actor, and any child actor if @self
|
||||||
|
* is a #ClutterGroup.
|
||||||
|
*
|
||||||
|
* Since: 0.2
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_actor_hide_all (ClutterActor *self)
|
||||||
|
{
|
||||||
|
ClutterActorClass *klass;
|
||||||
|
|
||||||
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
|
klass = CLUTTER_ACTOR_GET_CLASS (self);
|
||||||
|
if (klass->hide_all)
|
||||||
|
klass->hide_all (self);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_actor_realize
|
* clutter_actor_realize
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
@ -776,18 +819,16 @@ clutter_actor_class_init (ClutterActorClass *klass)
|
|||||||
clutter_marshal_VOID__OBJECT,
|
clutter_marshal_VOID__OBJECT,
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
CLUTTER_TYPE_ACTOR);
|
CLUTTER_TYPE_ACTOR);
|
||||||
|
|
||||||
|
klass->show = clutter_actor_real_show;
|
||||||
|
klass->show_all = clutter_actor_show;
|
||||||
|
klass->hide = clutter_actor_real_hide;
|
||||||
|
klass->hide_all = clutter_actor_hide;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_actor_init (ClutterActor *self)
|
clutter_actor_init (ClutterActor *self)
|
||||||
{
|
{
|
||||||
gboolean was_floating;
|
|
||||||
|
|
||||||
/* sink the GInitiallyUnowned floating flag */
|
|
||||||
was_floating = g_object_is_floating (G_OBJECT (self));
|
|
||||||
if (was_floating)
|
|
||||||
g_object_force_floating (G_OBJECT (self));
|
|
||||||
|
|
||||||
self->priv = CLUTTER_ACTOR_GET_PRIVATE (self);
|
self->priv = CLUTTER_ACTOR_GET_PRIVATE (self);
|
||||||
|
|
||||||
self->priv->parent_actor = NULL;
|
self->priv->parent_actor = NULL;
|
||||||
@ -1011,7 +1052,7 @@ clutter_actor_set_size (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* clutter_actor_get_size
|
* clutter_actor_get_size:
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
* @width: Location to store width if non NULL.
|
* @width: Location to store width if non NULL.
|
||||||
* @height: Location to store height if non NULL.
|
* @height: Location to store height if non NULL.
|
||||||
@ -1092,10 +1133,10 @@ clutter_actor_get_abs_position (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_actor_get_abs_size
|
* clutter_actor_get_abs_size:
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
* @x: Location to store width if non NULL.
|
* @width: Location to store width if non NULL.
|
||||||
* @y: Location to store height if non NULL.
|
* @height: Location to store height if non NULL.
|
||||||
*
|
*
|
||||||
* Gets the absolute size of an actor taking into account
|
* Gets the absolute size of an actor taking into account
|
||||||
* an scaling factors
|
* an scaling factors
|
||||||
@ -1265,12 +1306,14 @@ clutter_actor_set_scale (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_actor_get_scalex
|
* clutter_actor_get_scalex:
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
* @scale_x: FIXME
|
* @scale_x: FIXME
|
||||||
* @scale_y: FIXME
|
* @scale_y: FIXME
|
||||||
*
|
*
|
||||||
* FIXME
|
* FIXME
|
||||||
|
*
|
||||||
|
* Since: 0.2
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_actor_get_scalex (ClutterActor *self,
|
clutter_actor_get_scalex (ClutterActor *self,
|
||||||
@ -1285,12 +1328,14 @@ clutter_actor_get_scalex (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_actor_get_scale
|
* clutter_actor_get_scale:
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
* @scale_x: FIXME
|
* @scale_x: FIXME
|
||||||
* @scale_y: FIXME
|
* @scale_y: FIXME
|
||||||
*
|
*
|
||||||
* FIXME
|
* FIXME
|
||||||
|
*
|
||||||
|
* Since: 0.2
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
clutter_actor_get_scale (ClutterActor *self,
|
clutter_actor_get_scale (ClutterActor *self,
|
||||||
@ -1417,10 +1462,16 @@ void
|
|||||||
clutter_actor_set_depth (ClutterActor *self,
|
clutter_actor_set_depth (ClutterActor *self,
|
||||||
gint depth)
|
gint depth)
|
||||||
{
|
{
|
||||||
/* Sets Z value. - FIXME: should invert ?*/
|
ClutterActorPrivate *priv;
|
||||||
self->priv->z = depth;
|
|
||||||
|
|
||||||
if (self->priv->parent_actor)
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
|
priv = self->priv;
|
||||||
|
|
||||||
|
/* Sets Z value. - FIXME: should invert ?*/
|
||||||
|
priv->z = depth;
|
||||||
|
|
||||||
|
if (priv->parent_actor)
|
||||||
{
|
{
|
||||||
/* We need to resort the group stacking order as to
|
/* We need to resort the group stacking order as to
|
||||||
* correctly render alpha values.
|
* correctly render alpha values.
|
||||||
@ -1428,8 +1479,7 @@ clutter_actor_set_depth (ClutterActor *self,
|
|||||||
* FIXME: This is sub optimal. maybe queue the the sort
|
* FIXME: This is sub optimal. maybe queue the the sort
|
||||||
* before stacking
|
* before stacking
|
||||||
*/
|
*/
|
||||||
clutter_group_sort_depth_order
|
clutter_group_sort_depth_order (CLUTTER_GROUP (priv->parent_actor));
|
||||||
(CLUTTER_GROUP(self->priv->parent_actor));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,19 +50,19 @@ G_BEGIN_DECLS
|
|||||||
#define CLUTTER_ACTOR_GET_CLASS(obj) \
|
#define CLUTTER_ACTOR_GET_CLASS(obj) \
|
||||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_ACTOR, ClutterActorClass))
|
(G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_ACTOR, ClutterActorClass))
|
||||||
|
|
||||||
#define CLUTTER_ACTOR_SET_FLAGS(e,f) ((e)->flags |= (f))
|
#define CLUTTER_ACTOR_SET_FLAGS(e,f) ((e)->flags |= (f))
|
||||||
#define CLUTTER_ACTOR_UNSET_FLAGS(e,f) ((e)->flags &= ~(f))
|
#define CLUTTER_ACTOR_UNSET_FLAGS(e,f) ((e)->flags &= ~(f))
|
||||||
|
|
||||||
#define CLUTTER_ACTOR_IS_MAPPED(e) ((e)->flags & CLUTTER_ACTOR_MAPPED)
|
#define CLUTTER_ACTOR_IS_MAPPED(e) ((e)->flags & CLUTTER_ACTOR_MAPPED)
|
||||||
#define CLUTTER_ACTOR_IS_REALIZED(e) ((e)->flags & CLUTTER_ACTOR_REALIZED)
|
#define CLUTTER_ACTOR_IS_REALIZED(e) ((e)->flags & CLUTTER_ACTOR_REALIZED)
|
||||||
#define CLUTTER_ACTOR_IS_VISIBLE(e) \
|
#define CLUTTER_ACTOR_IS_VISIBLE(e) (CLUTTER_ACTOR_IS_MAPPED (e) && \
|
||||||
(CLUTTER_ACTOR_IS_MAPPED(e) && CLUTTER_ACTOR_IS_REALIZED(e))
|
CLUTTER_ACTOR_IS_REALIZED (e))
|
||||||
|
|
||||||
typedef struct _ClutterActor ClutterActor;
|
typedef struct _ClutterActor ClutterActor;
|
||||||
typedef struct _ClutterActorClass ClutterActorClass;
|
typedef struct _ClutterActorClass ClutterActorClass;
|
||||||
typedef struct _ClutterActorBox ClutterActorBox;
|
typedef struct _ClutterActorBox ClutterActorBox;
|
||||||
typedef struct _ClutterActorPrivate ClutterActorPrivate;
|
typedef struct _ClutterActorPrivate ClutterActorPrivate;
|
||||||
typedef struct _ClutterGeometry ClutterGeometry;
|
typedef struct _ClutterGeometry ClutterGeometry;
|
||||||
|
|
||||||
typedef void (*ClutterCallback) (ClutterActor *actor, gpointer data);
|
typedef void (*ClutterCallback) (ClutterActor *actor, gpointer data);
|
||||||
#define CLUTTER_CALLBACK(f) ((ClutterCallback) (f))
|
#define CLUTTER_CALLBACK(f) ((ClutterCallback) (f))
|
||||||
@ -108,7 +108,9 @@ struct _ClutterActorClass
|
|||||||
GObjectClass parent_class;
|
GObjectClass parent_class;
|
||||||
|
|
||||||
void (* show) (ClutterActor *actor);
|
void (* show) (ClutterActor *actor);
|
||||||
|
void (* show_all) (ClutterActor *actor);
|
||||||
void (* hide) (ClutterActor *actor);
|
void (* hide) (ClutterActor *actor);
|
||||||
|
void (* hide_all) (ClutterActor *actor);
|
||||||
void (* realize) (ClutterActor *actor);
|
void (* realize) (ClutterActor *actor);
|
||||||
void (* unrealize) (ClutterActor *actor);
|
void (* unrealize) (ClutterActor *actor);
|
||||||
void (* paint) (ClutterActor *actor);
|
void (* paint) (ClutterActor *actor);
|
||||||
@ -125,8 +127,6 @@ struct _ClutterActorClass
|
|||||||
void (* destroy) (ClutterActor *actor);
|
void (* destroy) (ClutterActor *actor);
|
||||||
|
|
||||||
/* to go ? */
|
/* to go ? */
|
||||||
void (* show_all) (ClutterActor *actor);
|
|
||||||
void (* hide_all) (ClutterActor *actor);
|
|
||||||
void (* queue_redraw) (ClutterActor *actor);
|
void (* queue_redraw) (ClutterActor *actor);
|
||||||
|
|
||||||
/* padding for future expansion */
|
/* padding for future expansion */
|
||||||
@ -140,7 +140,9 @@ struct _ClutterActorClass
|
|||||||
|
|
||||||
GType clutter_actor_get_type (void) G_GNUC_CONST;
|
GType clutter_actor_get_type (void) G_GNUC_CONST;
|
||||||
void clutter_actor_show (ClutterActor *self);
|
void clutter_actor_show (ClutterActor *self);
|
||||||
|
void clutter_actor_show_all (ClutterActor *self);
|
||||||
void clutter_actor_hide (ClutterActor *self);
|
void clutter_actor_hide (ClutterActor *self);
|
||||||
|
void clutter_actor_hide_all (ClutterActor *self);
|
||||||
void clutter_actor_realize (ClutterActor *self);
|
void clutter_actor_realize (ClutterActor *self);
|
||||||
void clutter_actor_unrealize (ClutterActor *self);
|
void clutter_actor_unrealize (ClutterActor *self);
|
||||||
void clutter_actor_paint (ClutterActor *self);
|
void clutter_actor_paint (ClutterActor *self);
|
||||||
|
@ -55,6 +55,16 @@
|
|||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_knot_copy:
|
||||||
|
* @knot: a #ClutterKnot
|
||||||
|
*
|
||||||
|
* Makes an allocated copy of a knot.
|
||||||
|
*
|
||||||
|
* Return value: the copied knot.
|
||||||
|
*
|
||||||
|
* Since: 0.2
|
||||||
|
*/
|
||||||
ClutterKnot *
|
ClutterKnot *
|
||||||
clutter_knot_copy (const ClutterKnot *knot)
|
clutter_knot_copy (const ClutterKnot *knot)
|
||||||
{
|
{
|
||||||
@ -67,6 +77,14 @@ clutter_knot_copy (const ClutterKnot *knot)
|
|||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_knot_free:
|
||||||
|
* @knot: a #ClutterKnot
|
||||||
|
*
|
||||||
|
* Frees the memory of an allocated knot.
|
||||||
|
*
|
||||||
|
* Since: 0.2
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
clutter_knot_free (ClutterKnot *knot)
|
clutter_knot_free (ClutterKnot *knot)
|
||||||
{
|
{
|
||||||
@ -76,6 +94,17 @@ clutter_knot_free (ClutterKnot *knot)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_knot_equal:
|
||||||
|
* @knot_a: First knot
|
||||||
|
* @knot_b: Second knot
|
||||||
|
*
|
||||||
|
* Compares to knot and checks if the point to the same location.
|
||||||
|
*
|
||||||
|
* Return value: %TRUE if the knots point to the same location.
|
||||||
|
*
|
||||||
|
* Since: 0.2
|
||||||
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
clutter_knot_equal (const ClutterKnot *knot_a,
|
clutter_knot_equal (const ClutterKnot *knot_a,
|
||||||
const ClutterKnot *knot_b)
|
const ClutterKnot *knot_b)
|
||||||
@ -83,6 +112,9 @@ clutter_knot_equal (const ClutterKnot *knot_a,
|
|||||||
g_return_val_if_fail (knot_a != NULL, FALSE);
|
g_return_val_if_fail (knot_a != NULL, FALSE);
|
||||||
g_return_val_if_fail (knot_b != NULL, FALSE);
|
g_return_val_if_fail (knot_b != NULL, FALSE);
|
||||||
|
|
||||||
|
if (knot_a == knot_b)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
return knot_a->x == knot_b->x && knot_a->y == knot_b->y;
|
return knot_a->x == knot_b->x && knot_a->y == knot_b->y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,6 +301,7 @@ clutter_behaviour_scale_new (ClutterAlpha *alpha,
|
|||||||
* @alpha: a #ClutterAlpha
|
* @alpha: a #ClutterAlpha
|
||||||
* @scale_begin: initial scale factor
|
* @scale_begin: initial scale factor
|
||||||
* @scale_end: final scale factor
|
* @scale_end: final scale factor
|
||||||
|
* @gravity: FIXME
|
||||||
*
|
*
|
||||||
* A fixed point implementation of clutter_behaviour_scale_new()
|
* A fixed point implementation of clutter_behaviour_scale_new()
|
||||||
*
|
*
|
||||||
|
@ -376,9 +376,9 @@ clutter_behaviour_set_alpha (ClutterBehaviour *behave,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_behaviour_get_actors:
|
* clutter_behaviour_get_actors:
|
||||||
* @behaviour: a #ClutterBehaviour
|
* @behave: a #ClutterBehaviour
|
||||||
*
|
*
|
||||||
* Retrieves all the actors to which @behaviour applies.
|
* Retrieves all the actors to which @behave applies.
|
||||||
*
|
*
|
||||||
* Return value: a list of actors. You should free the returned list
|
* Return value: a list of actors. You should free the returned list
|
||||||
* with g_slist_free() when finished using it.
|
* with g_slist_free() when finished using it.
|
||||||
@ -386,14 +386,14 @@ clutter_behaviour_set_alpha (ClutterBehaviour *behave,
|
|||||||
* Since: 0.2
|
* Since: 0.2
|
||||||
*/
|
*/
|
||||||
GSList *
|
GSList *
|
||||||
clutter_behaviour_get_actors (ClutterBehaviour *behaviour)
|
clutter_behaviour_get_actors (ClutterBehaviour *behave)
|
||||||
{
|
{
|
||||||
GSList *retval, *l;
|
GSList *retval, *l;
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_BEHAVIOUR (behaviour), NULL);
|
g_return_val_if_fail (CLUTTER_BEHAVIOUR (behave), NULL);
|
||||||
|
|
||||||
retval = NULL;
|
retval = NULL;
|
||||||
for (l = behaviour->priv->actors; l != NULL; l = l->next)
|
for (l = behave->priv->actors; l != NULL; l = l->next)
|
||||||
retval = g_slist_prepend (retval, l->data);
|
retval = g_slist_prepend (retval, l->data);
|
||||||
|
|
||||||
return g_slist_reverse (retval);
|
return g_slist_reverse (retval);
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "clutter-clone-texture.h"
|
#include "clutter-clone-texture.h"
|
||||||
#include "clutter-main.h"
|
#include "clutter-main.h"
|
||||||
#include "clutter-feature.h"
|
#include "clutter-feature.h"
|
||||||
|
#include "clutter-actor.h"
|
||||||
#include "clutter-util.h"
|
#include "clutter-util.h"
|
||||||
#include "clutter-enum-types.h"
|
#include "clutter-enum-types.h"
|
||||||
#include "clutter-private.h"
|
#include "clutter-private.h"
|
||||||
@ -121,11 +122,11 @@ clone_texture_render_to_gl_quad (ClutterCloneTexture *ctexture,
|
|||||||
|
|
||||||
clutter_texture_get_n_tiles (priv->parent_texture, &n_x_tiles, &n_y_tiles);
|
clutter_texture_get_n_tiles (priv->parent_texture, &n_x_tiles, &n_y_tiles);
|
||||||
|
|
||||||
for (x=0; x < n_x_tiles; x++)
|
for (x = 0; x < n_x_tiles; x++)
|
||||||
{
|
{
|
||||||
lasty = 0;
|
lasty = 0;
|
||||||
|
|
||||||
for (y=0; y < n_y_tiles; y++)
|
for (y = 0; y < n_y_tiles; y++)
|
||||||
{
|
{
|
||||||
gint actual_w, actual_h;
|
gint actual_w, actual_h;
|
||||||
gint xpos, ypos, xsize, ysize, ywaste, xwaste;
|
gint xpos, ypos, xsize, ysize, ywaste, xwaste;
|
||||||
@ -180,6 +181,9 @@ clutter_clone_texture_paint (ClutterActor *self)
|
|||||||
|
|
||||||
priv = CLUTTER_CLONE_TEXTURE (self)->priv;
|
priv = CLUTTER_CLONE_TEXTURE (self)->priv;
|
||||||
|
|
||||||
|
/* no need to paint stuff if we don't have a texture to clone */
|
||||||
|
if (!priv->parent_texture)
|
||||||
|
return;
|
||||||
|
|
||||||
/* parent texture may have been hidden, there for need to make sure its
|
/* parent texture may have been hidden, there for need to make sure its
|
||||||
* realised with resources available.
|
* realised with resources available.
|
||||||
@ -190,17 +194,17 @@ clutter_clone_texture_paint (ClutterActor *self)
|
|||||||
|
|
||||||
/* FIXME: figure out nicer way of getting at this info...
|
/* FIXME: figure out nicer way of getting at this info...
|
||||||
*/
|
*/
|
||||||
if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE)
|
if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE) &&
|
||||||
&& clutter_texture_is_tiled (CLUTTER_TEXTURE(parent_texture)) == FALSE)
|
clutter_texture_is_tiled (CLUTTER_TEXTURE (parent_texture)) == FALSE)
|
||||||
target_type = GL_TEXTURE_RECTANGLE_ARB;
|
target_type = GL_TEXTURE_RECTANGLE_ARB;
|
||||||
else
|
else
|
||||||
target_type = GL_TEXTURE_2D;
|
target_type = GL_TEXTURE_2D;
|
||||||
|
|
||||||
glEnable(GL_BLEND);
|
glEnable (GL_BLEND);
|
||||||
glEnable(target_type);
|
glEnable (target_type);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
glColor4ub(255, 255, 255, clutter_actor_get_opacity(self));
|
glColor4ub (255, 255, 255, clutter_actor_get_opacity (self));
|
||||||
|
|
||||||
clutter_actor_get_coords (self, &x1, &y1, &x2, &y2);
|
clutter_actor_get_coords (self, &x1, &y1, &x2, &y2);
|
||||||
|
|
||||||
@ -210,10 +214,10 @@ clutter_clone_texture_paint (ClutterActor *self)
|
|||||||
clutter_actor_get_opacity (self));
|
clutter_actor_get_opacity (self));
|
||||||
|
|
||||||
/* Parent paint translated us into position */
|
/* Parent paint translated us into position */
|
||||||
clone_texture_render_to_gl_quad (CLUTTER_CLONE_TEXTURE(self),
|
clone_texture_render_to_gl_quad (CLUTTER_CLONE_TEXTURE (self),
|
||||||
0, 0, x2 - x1, y2 - y1);
|
0, 0, x2 - x1, y2 - y1);
|
||||||
glDisable(target_type);
|
glDisable (target_type);
|
||||||
glDisable(GL_BLEND);
|
glDisable (GL_BLEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -221,6 +225,7 @@ set_parent_texture (ClutterCloneTexture *ctexture,
|
|||||||
ClutterTexture *texture)
|
ClutterTexture *texture)
|
||||||
{
|
{
|
||||||
ClutterCloneTexturePrivate *priv = ctexture->priv;
|
ClutterCloneTexturePrivate *priv = ctexture->priv;
|
||||||
|
ClutterActor *actor = CLUTTER_ACTOR (ctexture);
|
||||||
|
|
||||||
if (priv->parent_texture)
|
if (priv->parent_texture)
|
||||||
{
|
{
|
||||||
@ -228,16 +233,22 @@ set_parent_texture (ClutterCloneTexture *ctexture,
|
|||||||
priv->parent_texture = NULL;
|
priv->parent_texture = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clutter_actor_hide (actor);
|
||||||
|
|
||||||
if (texture)
|
if (texture)
|
||||||
{
|
{
|
||||||
gint width, height;
|
gint width, height;
|
||||||
|
|
||||||
priv->parent_texture = g_object_ref (texture);
|
priv->parent_texture = g_object_ref (texture);
|
||||||
|
|
||||||
/* Sync up the size to parent texture base pixbuf size.
|
/* Sync up the size to parent texture base pixbuf size. */
|
||||||
*/
|
|
||||||
clutter_texture_get_base_size (texture, &width, &height);
|
clutter_texture_get_base_size (texture, &width, &height);
|
||||||
clutter_actor_set_size (CLUTTER_ACTOR(ctexture), width, height);
|
clutter_actor_set_size (actor, width, height);
|
||||||
|
|
||||||
|
/* queue a redraw if the cloned texture is already visible */
|
||||||
|
if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR (priv->parent_texture)) &&
|
||||||
|
CLUTTER_ACTOR_IS_VISIBLE (actor))
|
||||||
|
clutter_actor_queue_redraw (actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -303,10 +314,10 @@ clutter_clone_texture_get_property (GObject *object,
|
|||||||
static void
|
static void
|
||||||
clutter_clone_texture_class_init (ClutterCloneTextureClass *klass)
|
clutter_clone_texture_class_init (ClutterCloneTextureClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||||
|
|
||||||
actor_class->paint = clutter_clone_texture_paint;
|
actor_class->paint = clutter_clone_texture_paint;
|
||||||
|
|
||||||
gobject_class->finalize = clutter_clone_texture_finalize;
|
gobject_class->finalize = clutter_clone_texture_finalize;
|
||||||
gobject_class->dispose = clutter_clone_texture_dispose;
|
gobject_class->dispose = clutter_clone_texture_dispose;
|
||||||
@ -319,7 +330,7 @@ clutter_clone_texture_class_init (ClutterCloneTextureClass *klass)
|
|||||||
"Parent Texture",
|
"Parent Texture",
|
||||||
"The parent texture to clone",
|
"The parent texture to clone",
|
||||||
CLUTTER_TYPE_TEXTURE,
|
CLUTTER_TYPE_TEXTURE,
|
||||||
(G_PARAM_CONSTRUCT_ONLY | CLUTTER_PARAM_READWRITE)));
|
(G_PARAM_CONSTRUCT | CLUTTER_PARAM_READWRITE)));
|
||||||
|
|
||||||
g_type_class_add_private (gobject_class, sizeof (ClutterCloneTexturePrivate));
|
g_type_class_add_private (gobject_class, sizeof (ClutterCloneTexturePrivate));
|
||||||
}
|
}
|
||||||
@ -335,19 +346,64 @@ clutter_clone_texture_init (ClutterCloneTexture *self)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_clone_texture_new:
|
* clutter_clone_texture_new:
|
||||||
* @texture: a #ClutterTexture
|
* @texture: a #ClutterTexture or %NULL
|
||||||
*
|
*
|
||||||
* Creates an efficient 'clone' of a pre-existing texture if which it
|
* Creates an efficient 'clone' of a pre-existing texture if which it
|
||||||
* shares the underlying pixbuf data.
|
* shares the underlying pixbuf data.
|
||||||
|
*
|
||||||
|
* You can use clutter_clone_texture_set_parent_texture() to change the
|
||||||
|
* parent texture to be cloned.
|
||||||
*
|
*
|
||||||
* Return value: the newly created #ClutterCloneTexture
|
* Return value: the newly created #ClutterCloneTexture
|
||||||
*/
|
*/
|
||||||
ClutterActor *
|
ClutterActor *
|
||||||
clutter_clone_texture_new (ClutterTexture *texture)
|
clutter_clone_texture_new (ClutterTexture *texture)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (CLUTTER_IS_TEXTURE (texture), NULL);
|
g_return_val_if_fail (texture == NULL || CLUTTER_IS_TEXTURE (texture), NULL);
|
||||||
|
|
||||||
return g_object_new (CLUTTER_TYPE_CLONE_TEXTURE,
|
return g_object_new (CLUTTER_TYPE_CLONE_TEXTURE,
|
||||||
"parent-texture", texture,
|
"parent-texture", texture,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_clone_texture_get_parent_texture:
|
||||||
|
* @clone: a #ClutterCloneTexture
|
||||||
|
*
|
||||||
|
* Retrieves the parent #ClutterTexture used by @clone.
|
||||||
|
*
|
||||||
|
* Return value: a #ClutterTexture actor, or %NULL
|
||||||
|
*
|
||||||
|
* Since: 0.2
|
||||||
|
*/
|
||||||
|
ClutterTexture *
|
||||||
|
clutter_clone_texture_get_parent_texture (ClutterCloneTexture *clone)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (CLUTTER_IS_CLONE_TEXTURE (clone), NULL);
|
||||||
|
|
||||||
|
return clone->priv->parent_texture;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_clone_texture_set_parent_texture:
|
||||||
|
* @clone: a #ClutterCloneTexture
|
||||||
|
* @texture a #ClutterTexture or %NULL
|
||||||
|
*
|
||||||
|
* Sets the parent texture cloned by the #ClutterCloneTexture.
|
||||||
|
*
|
||||||
|
* Since: 0.2
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_clone_texture_set_parent_texture (ClutterCloneTexture *clone,
|
||||||
|
ClutterTexture *texture)
|
||||||
|
{
|
||||||
|
g_return_if_fail (CLUTTER_IS_CLONE_TEXTURE (clone));
|
||||||
|
g_return_if_fail (texture == NULL || CLUTTER_IS_TEXTURE (texture));
|
||||||
|
|
||||||
|
g_object_ref (clone);
|
||||||
|
|
||||||
|
set_parent_texture (clone, texture);
|
||||||
|
|
||||||
|
g_object_notify (G_OBJECT (clone), "parent-texture");
|
||||||
|
g_object_unref (clone);
|
||||||
|
}
|
||||||
|
@ -26,8 +26,7 @@
|
|||||||
#ifndef _HAVE_CLUTTER_CLONE_TEXTURE_H
|
#ifndef _HAVE_CLUTTER_CLONE_TEXTURE_H
|
||||||
#define _HAVE_CLUTTER_CLONE_TEXTURE_H
|
#define _HAVE_CLUTTER_CLONE_TEXTURE_H
|
||||||
|
|
||||||
#include <glib-object.h>
|
#include <clutter/clutter-actor.h>
|
||||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
|
||||||
#include <clutter/clutter-texture.h>
|
#include <clutter/clutter-texture.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
@ -77,8 +76,12 @@ struct _ClutterCloneTextureClass
|
|||||||
void (*_clutter_clone_4) (void);
|
void (*_clutter_clone_4) (void);
|
||||||
};
|
};
|
||||||
|
|
||||||
GType clutter_clone_texture_get_type (void);
|
GType clutter_clone_texture_get_type (void) G_GNUC_CONST;
|
||||||
ClutterActor *clutter_clone_texture_new (ClutterTexture *texture);
|
|
||||||
|
ClutterActor * clutter_clone_texture_new (ClutterTexture *texture);
|
||||||
|
ClutterTexture *clutter_clone_texture_get_parent_texture (ClutterCloneTexture *clone);
|
||||||
|
void clutter_clone_texture_set_parent_texture (ClutterCloneTexture *clone,
|
||||||
|
ClutterTexture *texture);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -23,29 +23,65 @@
|
|||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "clutter-event.h"
|
#include "clutter-event.h"
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_event_type:
|
||||||
|
* @event: a #ClutterEvent
|
||||||
|
*
|
||||||
|
* Retrieves the type of the event.
|
||||||
|
*
|
||||||
|
* Return value: a #ClutterEventType
|
||||||
|
*/
|
||||||
ClutterEventType
|
ClutterEventType
|
||||||
clutter_event_type (ClutterEvent *event)
|
clutter_event_type (ClutterEvent *event)
|
||||||
{
|
{
|
||||||
return event->type;
|
return event->type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_button_event_time:
|
||||||
|
* @buttev: a #ClutterButtonEvent
|
||||||
|
*
|
||||||
|
* Retrieves the time of the event.
|
||||||
|
*
|
||||||
|
* Return value: the time of the event.
|
||||||
|
*/
|
||||||
guint32
|
guint32
|
||||||
clutter_button_event_time (ClutterButtonEvent *buttev)
|
clutter_button_event_time (ClutterButtonEvent *buttev)
|
||||||
{
|
{
|
||||||
return buttev->time;
|
return buttev->time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_button_event_x:
|
||||||
|
* @buttev: a #ClutterButtonEvent
|
||||||
|
*
|
||||||
|
* Retrieve the x coordinate of the event.
|
||||||
|
*
|
||||||
|
* Return value: the x coordinate.
|
||||||
|
*/
|
||||||
gint
|
gint
|
||||||
clutter_button_event_x (ClutterButtonEvent *buttev)
|
clutter_button_event_x (ClutterButtonEvent *buttev)
|
||||||
{
|
{
|
||||||
return buttev->x;
|
return buttev->x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_button_event_y:
|
||||||
|
* @buttev: a #ClutterButtonEvent
|
||||||
|
*
|
||||||
|
* Retrieve the y coordinate of the event.
|
||||||
|
*
|
||||||
|
* Return value: the y coordinate
|
||||||
|
*/
|
||||||
gint
|
gint
|
||||||
clutter_button_event_y (ClutterButtonEvent *buttev)
|
clutter_button_event_y (ClutterButtonEvent *buttev)
|
||||||
{
|
{
|
||||||
|
@ -113,26 +113,21 @@ union _ClutterEvent
|
|||||||
|
|
||||||
GType clutter_event_get_type (void) G_GNUC_CONST;
|
GType clutter_event_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
ClutterEvent *clutter_event_new (ClutterEventType type);
|
ClutterEvent *clutter_event_new (ClutterEventType type);
|
||||||
ClutterEvent *clutter_event_copy (ClutterEvent *event);
|
ClutterEvent *clutter_event_copy (ClutterEvent *event);
|
||||||
void clutter_event_free (ClutterEvent *event);
|
void clutter_event_free (ClutterEvent *event);
|
||||||
|
ClutterEventType clutter_event_type (ClutterEvent *keyev);
|
||||||
ClutterEventType clutter_key_event_type (ClutterKeyEvent *keyev);
|
|
||||||
|
|
||||||
guint32 clutter_key_event_time (ClutterKeyEvent *keyev);
|
|
||||||
|
|
||||||
guint clutter_key_event_state (ClutterKeyEvent *keyev);
|
|
||||||
|
|
||||||
gint clutter_button_event_x (ClutterButtonEvent *buttev);
|
|
||||||
|
|
||||||
gint clutter_button_event_y (ClutterButtonEvent *buttev);
|
|
||||||
|
|
||||||
guint clutter_key_event_symbol (ClutterKeyEvent *keyev);
|
|
||||||
|
|
||||||
guint16 clutter_key_event_code (ClutterKeyEvent *keyev);
|
|
||||||
|
|
||||||
|
guint32 clutter_key_event_time (ClutterKeyEvent *keyev);
|
||||||
|
guint clutter_key_event_state (ClutterKeyEvent *keyev);
|
||||||
|
guint clutter_key_event_symbol (ClutterKeyEvent *keyev);
|
||||||
|
guint16 clutter_key_event_code (ClutterKeyEvent *keyev);
|
||||||
guint32 clutter_key_event_unicode (ClutterKeyEvent *keyev);
|
guint32 clutter_key_event_unicode (ClutterKeyEvent *keyev);
|
||||||
|
|
||||||
|
guint32 clutter_button_event_time (ClutterButtonEvent *buttev);
|
||||||
|
gint clutter_button_event_x (ClutterButtonEvent *buttev);
|
||||||
|
gint clutter_button_event_y (ClutterButtonEvent *buttev);
|
||||||
|
|
||||||
guint32 clutter_keysym_to_unicode (guint keyval);
|
guint32 clutter_keysym_to_unicode (guint keyval);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
#include <GL/glx.h>
|
#include <GL/glx.h>
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
|
|
||||||
G_END_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
@ -45,7 +45,7 @@ typedef enum
|
|||||||
CLUTTER_FEATURE_SYNC_TO_VBLANK = (1 << 2)
|
CLUTTER_FEATURE_SYNC_TO_VBLANK = (1 << 2)
|
||||||
} ClutterFeatureFlags;
|
} ClutterFeatureFlags;
|
||||||
|
|
||||||
gboolean clutter_feature_available (ClutterFeatureFlags flags);
|
gboolean clutter_feature_available (ClutterFeatureFlags feature);
|
||||||
ClutterFeatureFlags clutter_feature_get_all (void);
|
ClutterFeatureFlags clutter_feature_get_all (void);
|
||||||
void clutter_feature_wait_for_vblank (void);
|
void clutter_feature_wait_for_vblank (void);
|
||||||
|
|
||||||
|
@ -158,23 +158,39 @@ clutter_group_finalize (GObject *object)
|
|||||||
G_OBJECT_CLASS (clutter_group_parent_class)->finalize (object);
|
G_OBJECT_CLASS (clutter_group_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clutter_group_real_show_all (ClutterActor *actor)
|
||||||
|
{
|
||||||
|
clutter_group_foreach (CLUTTER_GROUP (actor),
|
||||||
|
CLUTTER_CALLBACK (clutter_actor_show_all),
|
||||||
|
NULL);
|
||||||
|
clutter_actor_show (actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clutter_group_real_hide_all (ClutterActor *actor)
|
||||||
|
{
|
||||||
|
clutter_actor_hide (actor);
|
||||||
|
clutter_group_foreach (CLUTTER_GROUP (actor),
|
||||||
|
CLUTTER_CALLBACK (clutter_actor_hide_all),
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_group_class_init (ClutterGroupClass *klass)
|
clutter_group_class_init (ClutterGroupClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||||
|
|
||||||
actor_class->paint = clutter_group_paint;
|
actor_class->paint = clutter_group_paint;
|
||||||
/*
|
actor_class->show_all = clutter_group_real_show_all;
|
||||||
actor_class->show = clutter_group_show_all;
|
actor_class->hide_all = clutter_group_real_hide_all;
|
||||||
actor_class->hide = clutter_group_hide_all;
|
|
||||||
*/
|
|
||||||
actor_class->request_coords = clutter_group_request_coords;
|
actor_class->request_coords = clutter_group_request_coords;
|
||||||
actor_class->allocate_coords = clutter_group_allocate_coords;
|
actor_class->allocate_coords = clutter_group_allocate_coords;
|
||||||
|
|
||||||
/* GObject */
|
/* GObject */
|
||||||
object_class->finalize = clutter_group_finalize;
|
object_class->finalize = clutter_group_finalize;
|
||||||
object_class->dispose = clutter_group_dispose;
|
object_class->dispose = clutter_group_dispose;
|
||||||
|
|
||||||
group_signals[ADD] =
|
group_signals[ADD] =
|
||||||
g_signal_new ("add",
|
g_signal_new ("add",
|
||||||
@ -272,17 +288,19 @@ clutter_group_foreach (ClutterGroup *self,
|
|||||||
* clutter_group_show_all:
|
* clutter_group_show_all:
|
||||||
* @self: A #ClutterGroup
|
* @self: A #ClutterGroup
|
||||||
*
|
*
|
||||||
* Show all child actors of the group. Note, does not recurse.
|
* Show all child actors of the group.
|
||||||
**/
|
* Note, does not recurse: use clutter_actor_show_all() for
|
||||||
|
* a recursive show.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
clutter_group_show_all (ClutterGroup *self)
|
clutter_group_show_all (ClutterGroup *self)
|
||||||
{
|
{
|
||||||
g_return_if_fail (CLUTTER_IS_GROUP (self));
|
g_return_if_fail (CLUTTER_IS_GROUP (self));
|
||||||
|
|
||||||
clutter_actor_show(CLUTTER_ACTOR(self));
|
clutter_actor_show (CLUTTER_ACTOR (self));
|
||||||
|
|
||||||
g_list_foreach (self->priv->children,
|
g_list_foreach (self->priv->children,
|
||||||
(GFunc)clutter_actor_show,
|
(GFunc) clutter_actor_show,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,8 +308,10 @@ clutter_group_show_all (ClutterGroup *self)
|
|||||||
* clutter_group_hide_all:
|
* clutter_group_hide_all:
|
||||||
* @self: A #ClutterGroup
|
* @self: A #ClutterGroup
|
||||||
*
|
*
|
||||||
* Hide all child actors of the group. Note, does not recurse.
|
* Hide all child actors of the group.
|
||||||
**/
|
* Note, does not recurse: use clutter_actor_hide_all() for
|
||||||
|
* a recursive hide.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
clutter_group_hide_all (ClutterGroup *self)
|
clutter_group_hide_all (ClutterGroup *self)
|
||||||
{
|
{
|
||||||
@ -300,7 +320,7 @@ clutter_group_hide_all (ClutterGroup *self)
|
|||||||
clutter_actor_hide(CLUTTER_ACTOR(self));
|
clutter_actor_hide(CLUTTER_ACTOR(self));
|
||||||
|
|
||||||
g_list_foreach (self->priv->children,
|
g_list_foreach (self->priv->children,
|
||||||
(GFunc)clutter_actor_hide,
|
(GFunc) clutter_actor_hide,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,17 +238,29 @@ sync_gl_viewport (ClutterStage *stage)
|
|||||||
static void
|
static void
|
||||||
clutter_stage_show (ClutterActor *self)
|
clutter_stage_show (ClutterActor *self)
|
||||||
{
|
{
|
||||||
if (clutter_stage_get_xwindow (CLUTTER_STAGE(self)))
|
ClutterActorClass *parent_class;
|
||||||
XMapWindow (clutter_xdisplay(),
|
|
||||||
clutter_stage_get_xwindow (CLUTTER_STAGE(self)));
|
parent_class = CLUTTER_ACTOR_CLASS (clutter_stage_parent_class);
|
||||||
|
if (parent_class->show)
|
||||||
|
parent_class->show (self);
|
||||||
|
|
||||||
|
if (clutter_stage_get_xwindow (CLUTTER_STAGE (self)))
|
||||||
|
XMapWindow (clutter_xdisplay (),
|
||||||
|
clutter_stage_get_xwindow (CLUTTER_STAGE (self)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_stage_hide (ClutterActor *self)
|
clutter_stage_hide (ClutterActor *self)
|
||||||
{
|
{
|
||||||
if (clutter_stage_get_xwindow (CLUTTER_STAGE(self)))
|
ClutterActorClass *parent_class;
|
||||||
XUnmapWindow (clutter_xdisplay(),
|
|
||||||
clutter_stage_get_xwindow (CLUTTER_STAGE(self)));
|
parent_class = CLUTTER_ACTOR_CLASS (clutter_stage_parent_class);
|
||||||
|
if (parent_class->hide)
|
||||||
|
parent_class->hide (self);
|
||||||
|
|
||||||
|
if (clutter_stage_get_xwindow (CLUTTER_STAGE (self)))
|
||||||
|
XUnmapWindow (clutter_xdisplay (),
|
||||||
|
clutter_stage_get_xwindow (CLUTTER_STAGE (self)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -639,12 +639,26 @@ clutter_texture_realize (ClutterActor *actor)
|
|||||||
static void
|
static void
|
||||||
clutter_texture_show (ClutterActor *self)
|
clutter_texture_show (ClutterActor *self)
|
||||||
{
|
{
|
||||||
|
ClutterActorClass *parent_class;
|
||||||
|
|
||||||
|
/* chain up parent show */
|
||||||
|
parent_class = CLUTTER_ACTOR_CLASS (clutter_texture_parent_class);
|
||||||
|
if (parent_class->show)
|
||||||
|
parent_class->show (self);
|
||||||
|
|
||||||
clutter_actor_realize (self);
|
clutter_actor_realize (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_texture_hide (ClutterActor *self)
|
clutter_texture_hide (ClutterActor *self)
|
||||||
{
|
{
|
||||||
|
ClutterActorClass *parent_class;
|
||||||
|
|
||||||
|
/* chain up parent hide */
|
||||||
|
parent_class = CLUTTER_ACTOR_CLASS (clutter_texture_parent_class);
|
||||||
|
if (parent_class->hide)
|
||||||
|
parent_class->hide (self);
|
||||||
|
|
||||||
clutter_actor_unrealize (self);
|
clutter_actor_unrealize (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,9 +26,8 @@
|
|||||||
#ifndef _HAVE_CLUTTER_TEXTURE_H
|
#ifndef _HAVE_CLUTTER_TEXTURE_H
|
||||||
#define _HAVE_CLUTTER_TEXTURE_H
|
#define _HAVE_CLUTTER_TEXTURE_H
|
||||||
|
|
||||||
#include <glib-object.h>
|
|
||||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
|
||||||
#include <clutter/clutter-actor.h>
|
#include <clutter/clutter-actor.h>
|
||||||
|
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
@ -54,10 +53,18 @@ struct _ClutterTextureClass
|
|||||||
{
|
{
|
||||||
ClutterActorClass parent_class;
|
ClutterActorClass parent_class;
|
||||||
|
|
||||||
void (*size_change) (ClutterTexture *texture,
|
void (*size_change) (ClutterTexture *texture,
|
||||||
gint width,
|
gint width,
|
||||||
gint height);
|
gint height);
|
||||||
void (*pixbuf_change) (ClutterTexture *texture);
|
void (*pixbuf_change) (ClutterTexture *texture);
|
||||||
|
|
||||||
|
/* padding, for future expansion */
|
||||||
|
void (*_clutter_texture1) (void);
|
||||||
|
void (*_clutter_texture2) (void);
|
||||||
|
void (*_clutter_texture3) (void);
|
||||||
|
void (*_clutter_texture4) (void);
|
||||||
|
void (*_clutter_texture5) (void);
|
||||||
|
void (*_clutter_texture6) (void);
|
||||||
};
|
};
|
||||||
|
|
||||||
GType clutter_texture_get_type (void) G_GNUC_CONST;
|
GType clutter_texture_get_type (void) G_GNUC_CONST;
|
||||||
|
@ -463,7 +463,6 @@ CLUTTER_FIXED_DIV
|
|||||||
<FILE>clutter-color</FILE>
|
<FILE>clutter-color</FILE>
|
||||||
CLUTTER_TYPE_COLOR
|
CLUTTER_TYPE_COLOR
|
||||||
ClutterColor
|
ClutterColor
|
||||||
clutter_color_get_type
|
|
||||||
clutter_color_parse
|
clutter_color_parse
|
||||||
clutter_color_add
|
clutter_color_add
|
||||||
clutter_color_subtract
|
clutter_color_subtract
|
||||||
@ -474,6 +473,8 @@ clutter_color_to_hls
|
|||||||
clutter_color_from_hls
|
clutter_color_from_hls
|
||||||
clutter_color_to_pixel
|
clutter_color_to_pixel
|
||||||
clutter_color_from_pixel
|
clutter_color_from_pixel
|
||||||
|
<SUBSECTION Private>
|
||||||
|
clutter_color_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -486,7 +487,6 @@ ClutterButtonEvent
|
|||||||
ClutterMotionEvent
|
ClutterMotionEvent
|
||||||
ClutterInputDevice
|
ClutterInputDevice
|
||||||
ClutterEvent
|
ClutterEvent
|
||||||
clutter_event_get_type
|
|
||||||
clutter_event_new
|
clutter_event_new
|
||||||
clutter_event_copy
|
clutter_event_copy
|
||||||
clutter_event_free
|
clutter_event_free
|
||||||
@ -499,6 +499,8 @@ clutter_key_event_symbol
|
|||||||
clutter_key_event_code
|
clutter_key_event_code
|
||||||
clutter_key_event_unicode
|
clutter_key_event_unicode
|
||||||
clutter_keysym_to_unicode
|
clutter_keysym_to_unicode
|
||||||
|
<SUBSECTION Private>
|
||||||
|
clutter_event_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
|
@ -207,7 +207,9 @@ ClutterActor
|
|||||||
|
|
||||||
@parent_class:
|
@parent_class:
|
||||||
@show:
|
@show:
|
||||||
|
@show_all:
|
||||||
@hide:
|
@hide:
|
||||||
|
@hide_all:
|
||||||
@realize:
|
@realize:
|
||||||
@unrealize:
|
@unrealize:
|
||||||
@paint:
|
@paint:
|
||||||
@ -217,8 +219,6 @@ ClutterActor
|
|||||||
@get_depth:
|
@get_depth:
|
||||||
@parent_set:
|
@parent_set:
|
||||||
@destroy:
|
@destroy:
|
||||||
@show_all:
|
|
||||||
@hide_all:
|
|
||||||
@queue_redraw:
|
@queue_redraw:
|
||||||
@_clutter_actor_1:
|
@_clutter_actor_1:
|
||||||
@_clutter_actor_2:
|
@_clutter_actor_2:
|
||||||
|
@ -34,14 +34,6 @@ clutter-color
|
|||||||
@blue:
|
@blue:
|
||||||
@alpha:
|
@alpha:
|
||||||
|
|
||||||
<!-- ##### FUNCTION clutter_color_get_type ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION clutter_color_parse ##### -->
|
<!-- ##### FUNCTION clutter_color_parse ##### -->
|
||||||
<para>
|
<para>
|
||||||
|
|
||||||
|
@ -94,14 +94,6 @@ Windowing events handled by Clutter.
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION clutter_event_get_type ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION clutter_event_new ##### -->
|
<!-- ##### FUNCTION clutter_event_new ##### -->
|
||||||
<para>
|
<para>
|
||||||
|
|
||||||
@ -128,15 +120,6 @@ Windowing events handled by Clutter.
|
|||||||
@event:
|
@event:
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION clutter_key_event_type ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@keyev:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION clutter_key_event_time ##### -->
|
<!-- ##### FUNCTION clutter_key_event_time ##### -->
|
||||||
<para>
|
<para>
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ clutter-feature
|
|||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@flags:
|
@feature:
|
||||||
@Returns:
|
@Returns:
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,6 +92,12 @@ ClutterTexture
|
|||||||
@parent_class:
|
@parent_class:
|
||||||
@size_change:
|
@size_change:
|
||||||
@pixbuf_change:
|
@pixbuf_change:
|
||||||
|
@_clutter_texture1:
|
||||||
|
@_clutter_texture2:
|
||||||
|
@_clutter_texture3:
|
||||||
|
@_clutter_texture4:
|
||||||
|
@_clutter_texture5:
|
||||||
|
@_clutter_texture6:
|
||||||
|
|
||||||
<!-- ##### FUNCTION clutter_texture_new_from_pixbuf ##### -->
|
<!-- ##### FUNCTION clutter_texture_new_from_pixbuf ##### -->
|
||||||
<para>
|
<para>
|
||||||
|
@ -48,13 +48,13 @@ main (int argc, char *argv[])
|
|||||||
clutter_rectangle_set_border_color (CLUTTER_RECTANGLE (rect),
|
clutter_rectangle_set_border_color (CLUTTER_RECTANGLE (rect),
|
||||||
&rect_border_color);
|
&rect_border_color);
|
||||||
clutter_actor_show (rect);
|
clutter_actor_show (rect);
|
||||||
|
|
||||||
hand = clutter_texture_new_from_pixbuf (pixbuf);
|
hand = clutter_texture_new_from_pixbuf (pixbuf);
|
||||||
clutter_actor_set_position (hand, 0, 0);
|
clutter_actor_set_position (hand, 0, 0);
|
||||||
clutter_actor_show (hand);
|
clutter_actor_show (hand);
|
||||||
|
|
||||||
clutter_group_add_many (CLUTTER_GROUP (group), rect, hand, NULL);
|
clutter_group_add_many (CLUTTER_GROUP (group), rect, hand, NULL);
|
||||||
|
|
||||||
/* Make a timeline */
|
/* Make a timeline */
|
||||||
timeline = clutter_timeline_new (100, 26); /* num frames, fps */
|
timeline = clutter_timeline_new (100, 26); /* num frames, fps */
|
||||||
g_object_set (timeline, "loop", TRUE, 0);
|
g_object_set (timeline, "loop", TRUE, 0);
|
||||||
@ -77,7 +77,7 @@ main (int argc, char *argv[])
|
|||||||
/* start the timeline and thus the animations */
|
/* start the timeline and thus the animations */
|
||||||
clutter_timeline_start (timeline);
|
clutter_timeline_start (timeline);
|
||||||
|
|
||||||
clutter_group_show_all (CLUTTER_GROUP (stage));
|
clutter_actor_show_all (stage);
|
||||||
|
|
||||||
clutter_main();
|
clutter_main();
|
||||||
|
|
||||||
|
@ -242,8 +242,7 @@ main (int argc, char *argv[])
|
|||||||
clutter_group_add (CLUTTER_GROUP (stage), CLUTTER_ACTOR(oh->group));
|
clutter_group_add (CLUTTER_GROUP (stage), CLUTTER_ACTOR(oh->group));
|
||||||
|
|
||||||
/* Show everying ( and map window ) */
|
/* Show everying ( and map window ) */
|
||||||
clutter_group_show_all (CLUTTER_GROUP (oh->group));
|
clutter_actor_show_all (stage);
|
||||||
clutter_group_show_all (CLUTTER_GROUP (stage));
|
|
||||||
|
|
||||||
g_signal_connect (stage, "button-press-event",
|
g_signal_connect (stage, "button-press-event",
|
||||||
G_CALLBACK (input_cb),
|
G_CALLBACK (input_cb),
|
||||||
|
@ -108,7 +108,7 @@ main (int argc, char *argv[])
|
|||||||
|
|
||||||
clutter_actor_set_size (CLUTTER_ACTOR (stage), 800, 600);
|
clutter_actor_set_size (CLUTTER_ACTOR (stage), 800, 600);
|
||||||
|
|
||||||
clutter_group_show_all (CLUTTER_GROUP (stage));
|
clutter_actor_show_all (CLUTTER_ACTOR (stage));
|
||||||
|
|
||||||
timeline = clutter_timeline_new (360, 200);
|
timeline = clutter_timeline_new (360, 200);
|
||||||
g_object_set (timeline, "loop", TRUE, 0);
|
g_object_set (timeline, "loop", TRUE, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user