[clutter] ClutterActor: Add clutter_actor_has_effects
- From: Adel Gadllah <agadllah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] ClutterActor: Add clutter_actor_has_effects
- Date: Thu, 29 Sep 2011 17:34:21 +0000 (UTC)
commit bed2d9e7876064c70b87fe2f2cd4f5fa65b1082e
Author: Adel Gadllah <adel gadllah gmail com>
Date: Thu Sep 29 15:31:30 2011 +0200
ClutterActor: Add clutter_actor_has_effects
Adds an efficent way to query whether an actor has any
applied effects.
https://bugzilla.gnome.org/show_bug.cgi?id=660471
clutter/clutter-actor-meta-private.h | 2 ++
clutter/clutter-actor-meta.c | 21 +++++++++++++++++++++
clutter/clutter-actor.c | 22 ++++++++++++++++++++++
clutter/clutter-effect.h | 2 ++
4 files changed, 47 insertions(+), 0 deletions(-)
---
diff --git a/clutter/clutter-actor-meta-private.h b/clutter/clutter-actor-meta-private.h
index d539bdb..661c352 100644
--- a/clutter/clutter-actor-meta-private.h
+++ b/clutter/clutter-actor-meta-private.h
@@ -75,6 +75,8 @@ void _clutter_meta_group_clear_metas (ClutterMetaGroup *group
ClutterActorMeta * _clutter_meta_group_get_meta (ClutterMetaGroup *group,
const gchar *name);
+gboolean _clutter_meta_group_has_metas_no_internal (ClutterMetaGroup *group);
+
GList * _clutter_meta_group_get_metas_no_internal (ClutterMetaGroup *group);
void _clutter_meta_group_clear_metas_no_internal (ClutterMetaGroup *group);
diff --git a/clutter/clutter-actor-meta.c b/clutter/clutter-actor-meta.c
index 0ebb9c8..cd35117 100644
--- a/clutter/clutter-actor-meta.c
+++ b/clutter/clutter-actor-meta.c
@@ -553,6 +553,27 @@ _clutter_meta_group_get_metas_no_internal (ClutterMetaGroup *group)
}
/*
+ * _clutter_meta_group_has_metas_no_internal:
+ * @group: a #ClutterMetaGroup
+ *
+ * Returns whether the group has any metas that have an internal priority.
+ *
+ * Return value: %TRUE if metas with internal priority exist
+ * %FALSE otherwise
+ */
+gboolean
+_clutter_meta_group_has_metas_no_internal (ClutterMetaGroup *group)
+{
+ GList *l;
+
+ for (l = group->meta; l; l = l->next)
+ if (_clutter_actor_meta_is_internal (l->data))
+ return TRUE;
+
+ return FALSE;
+}
+
+/*
* _clutter_meta_group_clear_metas:
* @group: a #ClutterMetaGroup
*
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index 523e845..76882f9 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -12452,6 +12452,28 @@ clutter_actor_has_overlaps (ClutterActor *self)
return CLUTTER_ACTOR_GET_CLASS (self)->has_overlaps (self);
}
+/**
+ * clutter_actor_has_effects:
+ * @self: A #ClutterActor
+ *
+ * Returns whether the actor has any effects applied.
+ *
+ * Return value: %TRUE if the actor has any effects,
+ * %FALSE otherwise
+ *
+ * Since: 1.10
+ */
+gboolean
+clutter_actor_has_effects (ClutterActor *self)
+{
+ g_return_val_if_fail (CLUTTER_IS_ACTOR (self), TRUE);
+
+ if (self->priv->effects == NULL)
+ return FALSE;
+
+ return _clutter_meta_group_has_metas_no_internal (self->priv->effects);
+}
+
gint
_clutter_actor_get_n_children (ClutterActor *self)
{
diff --git a/clutter/clutter-effect.h b/clutter/clutter-effect.h
index 6453ddb..6f00c15 100644
--- a/clutter/clutter-effect.h
+++ b/clutter/clutter-effect.h
@@ -126,6 +126,8 @@ ClutterEffect *clutter_actor_get_effect (ClutterActor *self,
const gchar *name);
void clutter_actor_clear_effects (ClutterActor *self);
+gboolean clutter_actor_has_effects (ClutterActor *self);
+
G_END_DECLS
#endif /* __CLUTTER_EFFECT_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]