[clutter] ClutterActor: Add clutter_actor_has_effects



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]