summaryrefslogtreecommitdiff
path: root/clutter/clutter-interval.c
diff options
context:
space:
mode:
Diffstat (limited to 'clutter/clutter-interval.c')
-rw-r--r--clutter/clutter-interval.c50
1 files changed, 49 insertions, 1 deletions
diff --git a/clutter/clutter-interval.c b/clutter/clutter-interval.c
index 601ad0f7e..861a5fe1b 100644
--- a/clutter/clutter-interval.c
+++ b/clutter/clutter-interval.c
@@ -61,6 +61,8 @@
#include "clutter-interval.h"
#include "clutter-private.h"
#include "clutter-units.h"
+#include "clutter-scriptable.h"
+#include "clutter-script-private.h"
#include "deprecated/clutter-fixed.h"
@@ -93,7 +95,14 @@ struct _ClutterIntervalPrivate
GValue *values;
};
-G_DEFINE_TYPE_WITH_PRIVATE (ClutterInterval, clutter_interval, G_TYPE_INITIALLY_UNOWNED)
+static void clutter_scriptable_iface_init (ClutterScriptableIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (ClutterInterval,
+ clutter_interval,
+ G_TYPE_INITIALLY_UNOWNED,
+ G_ADD_PRIVATE (ClutterInterval)
+ G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_SCRIPTABLE,
+ clutter_scriptable_iface_init));
static gboolean
clutter_interval_real_validate (ClutterInterval *interval,
@@ -479,6 +488,45 @@ clutter_interval_get_property (GObject *gobject,
}
}
+static gboolean
+clutter_interval_parse_custom_node (ClutterScriptable *scriptable,
+ ClutterScript *script,
+ GValue *value,
+ const gchar *name,
+ JsonNode *node)
+{
+ ClutterIntervalPrivate *priv = CLUTTER_INTERVAL (scriptable)->priv;
+
+ if ((strcmp (name, "initial") == 0) || (strcmp (name, "final") == 0))
+ {
+ g_value_init (value, priv->value_type);
+ return _clutter_script_parse_node (script, value, name, node, NULL);
+ }
+
+ return FALSE;
+}
+
+static void
+clutter_interval_set_custom_property (ClutterScriptable *scriptable,
+ ClutterScript *script,
+ const gchar *name,
+ const GValue *value)
+{
+ ClutterInterval *self = CLUTTER_INTERVAL (scriptable);
+
+ if (strcmp (name, "initial") == 0)
+ clutter_interval_set_initial_value (self, value);
+ else if (strcmp (name, "final") == 0)
+ clutter_interval_set_final_value (self, value);
+}
+
+static void
+clutter_scriptable_iface_init (ClutterScriptableIface *iface)
+{
+ iface->parse_custom_node = clutter_interval_parse_custom_node;
+ iface->set_custom_property = clutter_interval_set_custom_property;
+}
+
static void
clutter_interval_class_init (ClutterIntervalClass *klass)
{