Updates for 1.0 API changes in Clutter
[clutter-gtk] / clutter-gtk / gtk-clutter-viewport.c
index a929cbd..c46f29f 100644 (file)
@@ -42,7 +42,7 @@
 #define gtk_adjustment_get_page_size(a)         ((a)->page_size)
 #endif
 
-#define GET_PRIVATE(obj)        (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_CLUTTER_VIEWPORT, GtkClutterViewportPrivate))
+#define GET_PRIVATE(obj)        (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_CLUTTER_TYPE_VIEWPORT, GtkClutterViewportPrivate))
 
 #define I_(str) (g_intern_static_string ((str)))
 
@@ -54,7 +54,7 @@ G_DEFINE_TYPE_WITH_CODE (GtkClutterViewport,
                          CLUTTER_TYPE_ACTOR,
                          G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
                                                 clutter_container_iface_init)
-                         G_IMPLEMENT_INTERFACE (GTK_TYPE_CLUTTER_SCROLLABLE,
+                         G_IMPLEMENT_INTERFACE (GTK_CLUTTER_TYPE_SCROLLABLE,
                                                 gtk_clutter_scrollable_iface_init));
 
 struct _GtkClutterViewportPrivate
@@ -147,10 +147,10 @@ viewport_adjustment_value_changed (GtkAdjustment      *adjustment,
     {
       GtkAdjustment *h_adjust = priv->h_adjustment;
       GtkAdjustment *v_adjust = priv->v_adjustment;
-      ClutterUnit new_x, new_y;
+      gfloat new_x, new_y;
 
-      new_x = CLUTTER_UNITS_FROM_FLOAT (gtk_adjustment_get_value (h_adjust));
-      new_y = CLUTTER_UNITS_FROM_FLOAT (gtk_adjustment_get_value (v_adjust));
+      new_x = gtk_adjustment_get_value (h_adjust);
+      new_y = gtk_adjustment_get_value (v_adjust);
 
       /* change the origin and queue a relayout */
       if (new_x != priv->origin.x || new_y != priv->origin.y)
@@ -183,13 +183,11 @@ viewport_reclamp_adjustment (GtkAdjustment *adjustment)
 }
 
 static gboolean
-viewport_set_hadjustment_values (GtkClutterViewport *viewport)
+viewport_set_hadjustment_values (GtkClutterViewport *viewport,
+                                 gfloat              width)
 {
   GtkClutterViewportPrivate *priv = viewport->priv;
   GtkAdjustment *h_adjust = priv->h_adjustment;
-  guint width;
-
-  width = clutter_actor_get_width (CLUTTER_ACTOR (viewport));
 
   gtk_adjustment_set_page_size (h_adjust, width);
   gtk_adjustment_set_step_increment (h_adjust, width * 0.1);
@@ -198,15 +196,13 @@ viewport_set_hadjustment_values (GtkClutterViewport *viewport)
 
   if (priv->child && CLUTTER_ACTOR_IS_VISIBLE (priv->child))
     {
-      ClutterUnit natural_width;
+      gfloat natural_width;
 
       clutter_actor_get_preferred_size (priv->child,
                                         NULL, NULL,
                                         &natural_width, NULL);
 
-      gtk_adjustment_set_upper (h_adjust,
-                                MAX (CLUTTER_UNITS_TO_DEVICE (natural_width),
-                                     width));
+      gtk_adjustment_set_upper (h_adjust, MAX (natural_width, width));
     }
   else
     gtk_adjustment_set_upper (h_adjust, width);
@@ -215,11 +211,11 @@ viewport_set_hadjustment_values (GtkClutterViewport *viewport)
 }
 
 static gboolean
-viewport_set_vadjustment_values (GtkClutterViewport *viewport)
+viewport_set_vadjustment_values (GtkClutterViewport *viewport,
+                                 gfloat              height)
 {
   GtkClutterViewportPrivate *priv = viewport->priv;
   GtkAdjustment *v_adjust = priv->v_adjustment;
-  guint height;
 
   height = clutter_actor_get_height (CLUTTER_ACTOR (viewport));
 
@@ -230,15 +226,13 @@ viewport_set_vadjustment_values (GtkClutterViewport *viewport)
 
   if (priv->child && CLUTTER_ACTOR_IS_VISIBLE (priv->child))
     {
-      ClutterUnit natural_height;
+      gfloat natural_height;
 
       clutter_actor_get_preferred_size (priv->child,
                                         NULL, NULL,
                                         NULL, &natural_height);
 
-      gtk_adjustment_set_upper (v_adjust,
-                                MAX (CLUTTER_UNITS_TO_DEVICE (natural_height),
-                                     height));
+      gtk_adjustment_set_upper (v_adjust, MAX (natural_height, height));
     }
   else
     gtk_adjustment_set_upper (v_adjust, height);
@@ -274,6 +268,7 @@ connect_adjustment (GtkClutterViewport *viewport,
   GtkClutterViewportPrivate *priv = viewport->priv;
   GtkAdjustment **adj_p;
   gboolean value_changed = FALSE;
+  gfloat width, height;
 
   adj_p = (orientation == GTK_ORIENTATION_HORIZONTAL) ? &priv->h_adjustment
                                                       : &priv->v_adjustment;
@@ -287,10 +282,12 @@ connect_adjustment (GtkClutterViewport *viewport,
   disconnect_adjustment (viewport, orientation);
   *adj_p = g_object_ref_sink (adjustment);
 
+  clutter_actor_get_size (CLUTTER_ACTOR (viewport), &width, &height);
+
   if (orientation == GTK_ORIENTATION_HORIZONTAL)
-    value_changed = viewport_set_hadjustment_values (viewport);
+    value_changed = viewport_set_hadjustment_values (viewport, width);
   else
-    value_changed = viewport_set_vadjustment_values (viewport);
+    value_changed = viewport_set_vadjustment_values (viewport, height);
 
   g_signal_connect (adjustment, "value-changed",
                     G_CALLBACK (viewport_adjustment_value_changed),
@@ -446,24 +443,25 @@ gtk_clutter_viewport_dispose (GObject *gobject)
 
 static void
 gtk_clutter_viewport_get_preferred_width (ClutterActor *actor,
-                                          ClutterUnit   for_height,
-                                          ClutterUnit  *min_width_p,
-                                          ClutterUnit  *natural_width_p)
+                                          gfloat        for_height,
+                                          gfloat       *min_width_p,
+                                          gfloat       *natural_width_p)
 {
   GtkClutterViewportPrivate *priv = GTK_CLUTTER_VIEWPORT (actor)->priv;
 
+  /* we don't have a minimum size */
+  if (min_width_p)
+    *min_width_p = 0;
+
   /* if we have a child, we want to be as big as the child
    * wishes to be; otherwise, we don't have a preferred width
    */
   if (priv->child)
     clutter_actor_get_preferred_width (priv->child, for_height,
-                                       min_width_p,
+                                       NULL,
                                        natural_width_p);
   else
     {
-      if (min_width_p)
-        *min_width_p = 0;
-
       if (natural_width_p)
         *natural_width_p = 0;
     }
@@ -471,49 +469,56 @@ gtk_clutter_viewport_get_preferred_width (ClutterActor *actor,
 
 static void
 gtk_clutter_viewport_get_preferred_height (ClutterActor *actor,
-                                           ClutterUnit   for_width,
-                                           ClutterUnit  *min_height_p,
-                                           ClutterUnit  *natural_height_p)
+                                           gfloat        for_width,
+                                           gfloat       *min_height_p,
+                                           gfloat       *natural_height_p)
 {
   GtkClutterViewportPrivate *priv = GTK_CLUTTER_VIEWPORT (actor)->priv;
 
+  /* we don't have a minimum size */
+  if (min_height_p)
+    *min_height_p = 0;
+
   /* if we have a child, we want to be as big as the child
    * wishes to be; otherwise, we don't have a preferred height
    */
   if (priv->child)
     clutter_actor_get_preferred_height (priv->child, for_width,
-                                        min_height_p,
+                                        NULL,
                                         natural_height_p);
   else
     {
-      if (min_height_p)
-        *min_height_p = 0;
-
       if (natural_height_p)
         *natural_height_p = 0;
     }
 }
 
 static void
-gtk_clutter_viewport_allocate (ClutterActor          *actor,
-                               const ClutterActorBox *box,
-                               gboolean               origin_changed)
+gtk_clutter_viewport_allocate (ClutterActor           *actor,
+                               const ClutterActorBox  *box,
+                               ClutterAllocationFlags  flags)
 {
   GtkClutterViewport *viewport = GTK_CLUTTER_VIEWPORT (actor);
   GtkClutterViewportPrivate *priv = viewport->priv;
   ClutterActorClass *parent_class;
   gboolean h_adjustment_value_changed, v_adjustment_value_changed;
+  gfloat width, height;
 
   parent_class = CLUTTER_ACTOR_CLASS (gtk_clutter_viewport_parent_class);
-  parent_class->allocate (actor, box, origin_changed);
+  parent_class->allocate (actor, box, flags);
 
-  h_adjustment_value_changed = viewport_set_hadjustment_values (viewport);
-  v_adjustment_value_changed = viewport_set_vadjustment_values (viewport);
+  width  = box->x2 - box->x1;
+  height = box->y2 - box->y1;
 
-  if (priv->child)
+  h_adjustment_value_changed =
+    viewport_set_hadjustment_values (viewport, width);
+  v_adjustment_value_changed =
+    viewport_set_vadjustment_values (viewport, height);
+
+  if (priv->child && CLUTTER_ACTOR_IS_VISIBLE (priv->child))
     {
       ClutterActorBox child_allocation = { 0, };
-      ClutterUnit alloc_width, alloc_height;
+      gfloat alloc_width, alloc_height;
 
       /* a viewport is a boundless actor which can contain a child
        * without constraints; hence, we give any child exactly the
@@ -524,12 +529,12 @@ gtk_clutter_viewport_allocate (ClutterActor          *actor,
                                         NULL, NULL,
                                         &alloc_width, &alloc_height);
 
-      child_allocation.x1 = clutter_actor_get_xu (priv->child);
-      child_allocation.y1 = clutter_actor_get_yu (priv->child);
+      child_allocation.x1 = clutter_actor_get_x (priv->child);
+      child_allocation.y1 = clutter_actor_get_y (priv->child);
       child_allocation.x2 = child_allocation.x1 + alloc_width;
       child_allocation.y2 = child_allocation.y1 + alloc_height;
 
-      clutter_actor_allocate (priv->child, &child_allocation, origin_changed);
+      clutter_actor_allocate (priv->child, &child_allocation, flags);
     }
 
   gtk_adjustment_changed (priv->h_adjustment);
@@ -552,9 +557,9 @@ gtk_clutter_viewport_paint (ClutterActor *actor)
   /* translate the paint environment by the same amount
    * defined by the origin value
    */
-  cogl_translatex (CLUTTER_UNITS_TO_FIXED (priv->origin.x) * -1,
-                   CLUTTER_UNITS_TO_FIXED (priv->origin.y) * -1,
-                   CLUTTER_UNITS_TO_FIXED (priv->origin.z) * -1);
+  cogl_translate (priv->origin.x * -1,
+                  priv->origin.y * -1,
+                  priv->origin.z * -1);
 
   /* the child will be painted in the new frame of reference */
   if (priv->child && CLUTTER_ACTOR_IS_VISIBLE (priv->child))
@@ -649,7 +654,7 @@ ClutterActor *
 gtk_clutter_viewport_new (GtkAdjustment *h_adjust,
                           GtkAdjustment *v_adjust)
 {
-  return g_object_new (GTK_TYPE_CLUTTER_VIEWPORT,
+  return g_object_new (GTK_CLUTTER_TYPE_VIEWPORT,
                        "hadjustment", h_adjust,
                        "vadjustment", v_adjust,
                        NULL);
@@ -669,44 +674,22 @@ gtk_clutter_viewport_new (GtkAdjustment *h_adjust,
  */
 void
 gtk_clutter_viewport_get_origin (GtkClutterViewport *viewport,
-                                 gint               *x,
-                                 gint               *y,
-                                 gint               *z)
+                                 gfloat             *x,
+                                 gfloat             *y,
+                                 gfloat             *z)
 {
   GtkClutterViewportPrivate *priv;
 
-  g_return_if_fail (GTK_IS_CLUTTER_VIEWPORT (viewport));
+  g_return_if_fail (GTK_CLUTTER_IS_VIEWPORT (viewport));
 
   priv = viewport->priv;
 
   if (x)
-    *x = CLUTTER_UNITS_TO_DEVICE (priv->origin.x);
+    *x = priv->origin.x;
 
   if (y)
-    *y = CLUTTER_UNITS_TO_DEVICE (priv->origin.y);
+    *y = priv->origin.y;
 
   if (z)
-    *z = CLUTTER_UNITS_TO_DEVICE (priv->origin.z);
-}
-
-/**
- * gtk_clutter_viewport_get_originu:
- * @viewport: a #GtkClutterViewport
- * @origin: a #ClutterVertex
- *
- * Retrieves the current translation factor ("origin") used
- * when displaying the child of @viewport.
- *
- * This function is the units-based version of
- * gtk_clutter_viewport_get_origin().
- *
- * Since: 1.0
- */
-void
-gtk_clutter_viewport_get_originu (GtkClutterViewport *viewport,
-                                  ClutterVertex      *origin)
-{
-  g_return_if_fail (GTK_IS_CLUTTER_VIEWPORT (viewport));
-
-  *origin = viewport->priv->origin;
+    *z = priv->origin.z;
 }