2007-10-08 Emmanuele Bassi <ebassi@openedhand.com>
authorEmmanuele Bassi <ebassi@openedhand.com>
Mon, 8 Oct 2007 16:48:22 +0000 (16:48 +0000)
committerEmmanuele Bassi <ebassi@openedhand.com>
Mon, 8 Oct 2007 16:48:22 +0000 (16:48 +0000)
* clutter/clutter-script.c: Parse ClutterMargin and ClutterPadding
properties from arrays or integers (assume pixels).

ChangeLog
clutter/clutter-script.c

index 3b7c3f4..32a6fa4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2007-10-08  Emmanuele Bassi  <ebassi@openedhand.com>
 
+       * clutter/clutter-script.c: Parse ClutterMargin and ClutterPadding
+       properties from arrays or integers (assume pixels).
+
+2007-10-08  Emmanuele Bassi  <ebassi@openedhand.com>
+
        * clutter/clutter-script-private.h:
        * clutter/clutter-script.c: Allow defining childrens for every
        container actor inside the UI definition files.
index b68b0e6..4fa30ec 100644 (file)
@@ -156,7 +156,73 @@ parse_member_to_property (ClutterScript *script,
       break;
 
     case JSON_NODE_ARRAY:
-      if (strcmp (name, "clip") == 0)
+      if (strcmp (name, "margin") == 0)
+        {
+          JsonArray *array = json_node_get_array (node);
+          JsonNode *val;
+          gint i;
+          ClutterMargin margin = { 0, };
+
+          /* this is quite evil indeed */
+          for (i = 0; i < json_array_get_length (array); i++)
+            {
+              val = json_array_get_element (array, i);
+              switch (i)
+                {
+                case 0:
+                  margin.top = CLUTTER_UNITS_FROM_INT (json_node_get_int (val));
+                  break;
+                case 1:
+                  margin.right = CLUTTER_UNITS_FROM_INT (json_node_get_int (val));
+                  break;
+                case 2:
+                  margin.bottom = CLUTTER_UNITS_FROM_INT (json_node_get_int (val));
+                  break;
+                case 3:
+                  margin.left = CLUTTER_UNITS_FROM_INT (json_node_get_int (val));
+                  break;
+                }
+            }
+
+          retval = g_slice_new (PropertyInfo);
+          retval->property_name = g_strdup (name);
+          g_value_init (&retval->value, CLUTTER_TYPE_MARGIN);
+          g_value_set_boxed (&retval->value, &margin);
+        }
+      else if (strcmp (name, "padding") == 0)
+        {
+          JsonArray *array = json_node_get_array (node);
+          JsonNode *val;
+          gint i;
+          ClutterPadding padding = { 0, };
+
+          /* this is quite evil indeed */
+          for (i = 0; i < json_array_get_length (array); i++)
+            {
+              val = json_array_get_element (array, i);
+              switch (i)
+                {
+                case 0:
+                  padding.top = CLUTTER_UNITS_FROM_INT (json_node_get_int (val));
+                  break;
+                case 1:
+                  padding.right = CLUTTER_UNITS_FROM_INT (json_node_get_int (val));
+                  break;
+                case 2:
+                  padding.bottom = CLUTTER_UNITS_FROM_INT (json_node_get_int (val));
+                  break;
+                case 3:
+                  padding.left = CLUTTER_UNITS_FROM_INT (json_node_get_int (val));
+                  break;
+                }
+            }
+
+          retval = g_slice_new (PropertyInfo);
+          retval->property_name = g_strdup (name);
+          g_value_init (&retval->value, CLUTTER_TYPE_PADDING);
+          g_value_set_boxed (&retval->value, &padding);
+        }
+      else if (strcmp (name, "clip") == 0)
         {
           JsonArray *array = json_node_get_array (node);
           JsonNode *val;