script: Clean up Color parsing rules
All the ClutterColor parsing rules should be coalesced inside clutter_script_parse_color(): object, array and string notations are the canonical ways of defining a ClutterColor inside a ClutterScript definition. Having a single function in charge of the parsing cleans up the code.
This commit is contained in:
parent
3e815de32b
commit
8ba13d6495
@ -479,6 +479,9 @@ clutter_script_parse_color (ClutterScript *script,
|
|||||||
case JSON_NODE_OBJECT:
|
case JSON_NODE_OBJECT:
|
||||||
return parse_color_from_object (json_node_get_object (node), color);
|
return parse_color_from_object (json_node_get_object (node), color);
|
||||||
|
|
||||||
|
case JSON_NODE_VALUE:
|
||||||
|
return clutter_color_from_string (color, json_node_get_string (node));
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1279,17 +1282,11 @@ clutter_script_parse_node (ClutterScript *script,
|
|||||||
case G_TYPE_BOXED:
|
case G_TYPE_BOXED:
|
||||||
if (G_VALUE_HOLDS (value, CLUTTER_TYPE_COLOR))
|
if (G_VALUE_HOLDS (value, CLUTTER_TYPE_COLOR))
|
||||||
{
|
{
|
||||||
if (G_VALUE_HOLDS (&node_value, G_TYPE_STRING))
|
|
||||||
{
|
|
||||||
const gchar *str = g_value_get_string (&node_value);
|
|
||||||
ClutterColor color = { 0, };
|
ClutterColor color = { 0, };
|
||||||
|
|
||||||
if (str && str[0] != '\0')
|
retval = clutter_script_parse_color (script, node, &color);
|
||||||
clutter_color_from_string (&color, str);
|
if (retval)
|
||||||
|
clutter_value_set_color (value, &color);
|
||||||
g_value_set_boxed (value, &color);
|
|
||||||
retval = TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ test_script_single (TestConformSimpleFixture *fixture,
|
|||||||
gconstpointer dummy)
|
gconstpointer dummy)
|
||||||
{
|
{
|
||||||
ClutterScript *script = clutter_script_new ();
|
ClutterScript *script = clutter_script_new ();
|
||||||
|
ClutterColor color = { 0, };
|
||||||
GObject *actor = NULL;
|
GObject *actor = NULL;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
ClutterActor *rect;
|
ClutterActor *rect;
|
||||||
@ -26,6 +27,11 @@ test_script_single (TestConformSimpleFixture *fixture,
|
|||||||
g_assert_cmpfloat (clutter_actor_get_width (rect), ==, 50.0);
|
g_assert_cmpfloat (clutter_actor_get_width (rect), ==, 50.0);
|
||||||
g_assert_cmpfloat (clutter_actor_get_y (rect), ==, 100.0);
|
g_assert_cmpfloat (clutter_actor_get_y (rect), ==, 100.0);
|
||||||
|
|
||||||
|
clutter_rectangle_get_color (CLUTTER_RECTANGLE (rect), &color);
|
||||||
|
g_assert_cmpint (color.red, ==, 255);
|
||||||
|
g_assert_cmpint (color.green, ==, 0xcc);
|
||||||
|
g_assert_cmpint (color.alpha, ==, 0xff);
|
||||||
|
|
||||||
g_object_unref (script);
|
g_object_unref (script);
|
||||||
|
|
||||||
clutter_actor_destroy (rect);
|
clutter_actor_destroy (rect);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user