[clutter] actor: Add content-repeat



commit e7aa21203c3f9f001fe04d5d55ba8e47dc0e6668
Author: Emmanuele Bassi <ebassi linux intel com>
Date:   Fri Jun 8 12:44:28 2012 +0100

    actor: Add content-repeat
    
    ClutterContent implementations may allow repeating their contents when
    painting; we should provide the repeat policy on the actor, like we do
    for scaling filters and content gravity.

 clutter/clutter-actor.c                    |   70 ++++++++++++++++++++++++++++
 clutter/clutter-actor.h                    |    5 ++
 clutter/clutter-enums.h                    |   18 +++++++
 clutter/clutter.symbols                    |    3 +
 doc/reference/clutter/clutter-sections.txt |    5 ++-
 5 files changed, 100 insertions(+), 1 deletions(-)
---
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index c5b4107..231e4e9 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -726,6 +726,7 @@ struct _ClutterActorPrivate
   ClutterContentGravity content_gravity;
   ClutterScalingFilter min_filter;
   ClutterScalingFilter mag_filter;
+  ClutterContentRepeat content_repeat;
 
   /* used when painting, to update the paint volume */
   ClutterEffect *current_effect;
@@ -910,6 +911,7 @@ enum
   PROP_CONTENT_BOX,
   PROP_MINIFICATION_FILTER,
   PROP_MAGNIFICATION_FILTER,
+  PROP_CONTENT_REPEAT,
 
   PROP_LAST
 };
@@ -4754,6 +4756,10 @@ clutter_actor_set_property (GObject      *object,
                                                  g_value_get_enum (value));
       break;
 
+    case PROP_CONTENT_REPEAT:
+      clutter_actor_set_content_repeat (actor, g_value_get_flags (value));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -5217,6 +5223,10 @@ clutter_actor_get_property (GObject    *object,
       g_value_set_enum (value, priv->mag_filter);
       break;
 
+    case PROP_CONTENT_REPEAT:
+      g_value_set_flags (value, priv->content_repeat);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -6794,6 +6804,22 @@ clutter_actor_class_init (ClutterActorClass *klass)
                        CLUTTER_SCALING_FILTER_LINEAR,
                        CLUTTER_PARAM_READWRITE);
 
+  /**
+   * ClutterActor:content-repeat:
+   *
+   * The repeat policy for the actor's #ClutterActor:content.
+   *
+   * Since: 1.12
+   */
+  obj_props[PROP_CONTENT_REPEAT] =
+    g_param_spec_flags ("content-repeat",
+                        P_("Content Repeat"),
+                        P_("The repeat policy for the actor's content"),
+                        CLUTTER_TYPE_CONTENT_REPEAT,
+                        CLUTTER_REPEAT_NONE,
+                        G_PARAM_READWRITE |
+                        G_PARAM_STATIC_STRINGS);
+
   g_object_class_install_properties (object_class, PROP_LAST, obj_props);
 
   /**
@@ -18723,3 +18749,47 @@ clutter_actor_needs_expand (ClutterActor       *self,
 
   return FALSE;
 }
+
+/**
+ * clutter_actor_set_content_repeat:
+ * @self: a #ClutterActor
+ * @repeat: the repeat policy
+ *
+ * Sets the policy for repeating the #ClutterActor:content of a
+ * #ClutterActor. The behaviour is deferred to the #ClutterContent
+ * implementation.
+ *
+ * Since: 1.12
+ */
+void
+clutter_actor_set_content_repeat (ClutterActor         *self,
+                                  ClutterContentRepeat  repeat)
+{
+  g_return_if_fail (CLUTTER_IS_ACTOR (self));
+
+  if (self->priv->content_repeat == repeat)
+    return;
+
+  self->priv->content_repeat = repeat;
+
+  clutter_actor_queue_redraw (self);
+}
+
+/**
+ * clutter_actor_get_content_repeat:
+ * @self: a #ClutterActor
+ *
+ * Retrieves the repeat policy for a #ClutterActor set by
+ * clutter_actor_set_content_repeat().
+ *
+ * Return value: the content repeat policy
+ *
+ * Since: 1.12
+ */
+ClutterContentRepeat
+clutter_actor_get_content_repeat (ClutterActor *self)
+{
+  g_return_val_if_fail (CLUTTER_IS_ACTOR (self), CLUTTER_REPEAT_NONE);
+
+  return self->priv->content_repeat;
+}
diff --git a/clutter/clutter-actor.h b/clutter/clutter-actor.h
index 72f44d1..7447f77 100644
--- a/clutter/clutter-actor.h
+++ b/clutter/clutter-actor.h
@@ -502,6 +502,11 @@ CLUTTER_AVAILABLE_IN_1_10
 void                            clutter_actor_get_content_scaling_filters       (ClutterActor               *self,
                                                                                  ClutterScalingFilter       *min_filter,
                                                                                  ClutterScalingFilter       *mag_filter);
+CLUTTER_AVAILABLE_IN_1_12
+void                            clutter_actor_set_content_repeat                (ClutterActor               *self,
+                                                                                 ClutterContentRepeat        repeat);
+CLUTTER_AVAILABLE_IN_1_12
+ClutterContentRepeat            clutter_actor_get_content_repeat                (ClutterActor               *self);
 CLUTTER_AVAILABLE_IN_1_10
 void                            clutter_actor_get_content_box                   (ClutterActor               *self,
                                                                                  ClutterActorBox            *box);
diff --git a/clutter/clutter-enums.h b/clutter/clutter-enums.h
index 7faf2d0..b788a05 100644
--- a/clutter/clutter-enums.h
+++ b/clutter/clutter-enums.h
@@ -1255,6 +1255,24 @@ typedef enum {
   CLUTTER_GRID_POSITION_BOTTOM
 } ClutterGridPosition;
 
+/**
+ * ClutterContentRepeat:
+ * @CLUTTER_REPEAT_NONE: No repeat
+ * @CLUTTER_REPEAT_X_AXIS: Repeat the content on the X axis
+ * @CLUTTER_REPEAT_Y_AXIS: Repeat the content on the Y axis
+ * @CLUTTER_REPEAT_BOTH: Repeat the content on both axis
+ *
+ * Content repeat modes.
+ *
+ * Since: 1.12
+ */
+typedef enum {
+  CLUTTER_REPEAT_NONE   = 0,
+  CLUTTER_REPEAT_X_AXIS = 1 << 0,
+  CLUTTER_REPEAT_Y_AXIS = 1 << 1,
+  CLUTTER_REPEAT_BOTH   = CLUTTER_REPEAT_X_AXIS | CLUTTER_REPEAT_Y_AXIS
+} ClutterContentRepeat;
+
 G_END_DECLS
 
 #endif /* __CLUTTER_ENUMS_H__ */
diff --git a/clutter/clutter.symbols b/clutter/clutter.symbols
index 3e827a3..f509e5e 100644
--- a/clutter/clutter.symbols
+++ b/clutter/clutter.symbols
@@ -97,6 +97,7 @@ clutter_actor_get_constraints
 clutter_actor_get_content
 clutter_actor_get_content_box
 clutter_actor_get_content_gravity
+clutter_actor_get_content_repeat
 clutter_actor_get_content_scaling_filters
 clutter_actor_get_default_paint_volume
 clutter_actor_get_depth
@@ -229,6 +230,7 @@ clutter_actor_set_clip
 clutter_actor_set_clip_to_allocation
 clutter_actor_set_content
 clutter_actor_set_content_gravity
+clutter_actor_set_content_repeat
 clutter_actor_set_content_scaling_filters
 clutter_actor_set_depth
 clutter_actor_set_easing_delay
@@ -588,6 +590,7 @@ clutter_content_get_preferred_size
 clutter_content_get_type
 clutter_content_gravity_get_type
 clutter_content_invalidate
+clutter_content_repeat_get_type
 clutter_constraint_get_type
 clutter_debug_flags DATA
 clutter_deform_effect_get_back_material
diff --git a/doc/reference/clutter/clutter-sections.txt b/doc/reference/clutter/clutter-sections.txt
index 92991c3..d33a084 100644
--- a/doc/reference/clutter/clutter-sections.txt
+++ b/doc/reference/clutter/clutter-sections.txt
@@ -411,8 +411,11 @@ ClutterContentGravity
 clutter_actor_set_content_gravity
 clutter_actor_get_content_gravity
 ClutterScalingFilter
-clutter_actor_get_content_scaling_filters
 clutter_actor_set_content_scaling_filters
+clutter_actor_get_content_scaling_filters
+ClutterContentRepeat
+clutter_actor_set_content_repeat
+clutter_actor_get_content_repeat
 clutter_actor_get_content_box
 clutter_actor_set_clip
 clutter_actor_remove_clip



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]