static void clutter_behaviour_opacity_set_property (GObject *gobject, guint prop_id, const GValue *value, GParamSpec *pspec) { ClutterBehaviourOpacity *self = CLUTTER_BEHAVIOUR_OPACITY (gobject); switch (prop_id) { case PROP_OPACITY_START: clutter_behaviour_opacity_set_bounds (self, g_value_get_uint (value), self->priv->opacity_end); break; case PROP_OPACITY_END: clutter_behaviour_opacity_set_bounds (self, self->priv->opacity_start, g_value_get_uint (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } }
static VALUE rbclt_behaviour_opacity_get_bounds (VALUE self) { ClutterBehaviourOpacity *behaviour = CLUTTER_BEHAVIOUR_OPACITY (RVAL2GOBJ (self)); guint8 opacity_start, opacity_end; clutter_behaviour_opacity_get_bounds (behaviour, &opacity_start, &opacity_end); return rb_ary_new3 (2, INT2NUM (opacity_start), INT2NUM (opacity_end)); }
static VALUE rbclt_behaviour_opacity_set_bounds (VALUE self, VALUE opacity_start, VALUE opacity_end) { ClutterBehaviourOpacity *behaviour = CLUTTER_BEHAVIOUR_OPACITY (RVAL2GOBJ (self)); clutter_behaviour_opacity_set_bounds (behaviour, rbclt_num_to_guint8 (opacity_start), rbclt_num_to_guint8 (opacity_end)); return self; }
static void clutter_behaviour_alpha_notify (ClutterBehaviour *behave, gdouble alpha_value) { ClutterBehaviourOpacityPrivate *priv; guint8 opacity; priv = CLUTTER_BEHAVIOUR_OPACITY (behave)->priv; opacity = alpha_value * (priv->opacity_end - priv->opacity_start) + priv->opacity_start; CLUTTER_NOTE (BEHAVIOUR, "alpha: %.4f, opacity: %u", alpha_value, opacity); clutter_behaviour_actors_foreach (behave, alpha_notify_foreach, GUINT_TO_POINTER ((guint) opacity)); }