static gboolean clutter_units_progress (const GValue *a, const GValue *b, gdouble progress, GValue *retval) { ClutterUnits *a_units = (ClutterUnits *) clutter_value_get_units (a); ClutterUnits *b_units = (ClutterUnits *) clutter_value_get_units (b); ClutterUnits res; gfloat a_px, b_px, value; a_px = clutter_units_to_pixels (a_units); b_px = clutter_units_to_pixels (b_units); value = progress * (b_px - a_px) + a_px; clutter_units_from_pixels (&res, value); clutter_value_set_units (retval, &res); return TRUE; }
static void dax_element_video_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { DaxElementVideo *video = (DaxElementVideo *) object; DaxElementVideoPrivate *priv = video->priv; switch (property_id) { case PROP_X: dax_element_video_set_x (video, clutter_value_get_units (value)); break; case PROP_Y: dax_element_video_set_y (video, clutter_value_get_units (value)); break; case PROP_WIDTH: dax_element_video_set_width (video, clutter_value_get_units (value)); break; case PROP_HEIGHT: dax_element_video_set_height (video, clutter_value_get_units (value)); break; case PROP_PAR: dax_element_video_set_par (video, g_value_get_boxed (value)); break; case PROP_HREF: g_free (priv->href); priv->href = g_value_dup_string (value); break; case PROP_TYPE: g_free (priv->type); priv->type = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }