static void hsv_changed (GtkColorEditor *editor) { GdkRGBA color; gdouble h, s, v, a; h = gtk_adjustment_get_value (editor->priv->h_adj); s = gtk_adjustment_get_value (editor->priv->s_adj); v = gtk_adjustment_get_value (editor->priv->v_adj); a = gtk_adjustment_get_value (editor->priv->a_adj); gtk_hsv_to_rgb (h, s, v, &color.red, &color.green, &color.blue); color.alpha = a; gtk_color_swatch_set_rgba (GTK_COLOR_SWATCH (editor->priv->swatch), &color); gtk_color_scale_set_rgba (GTK_COLOR_SCALE (editor->priv->a_slider), &color); entry_set_rgba (editor, &color); g_object_notify (G_OBJECT (editor), "rgba"); }
static void swatch_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtkColorSwatch *swatch = GTK_COLOR_SWATCH (object); switch (prop_id) { case PROP_RGBA: gtk_color_swatch_set_rgba (swatch, g_value_get_boxed (value)); break; case PROP_SELECTABLE: gtk_color_swatch_set_selectable (swatch, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void swatch_drag_data_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time) { gint length; guint16 *vals; GdkRGBA color; length = gtk_selection_data_get_length (selection_data); if (length < 0) return; /* We accept drops with the wrong format, since the KDE color * chooser incorrectly drops application/x-color with format 8. */ if (length != 8) { g_warning ("Received invalid color data\n"); return; } vals = (guint16 *) gtk_selection_data_get_data (selection_data); color.red = (gdouble)vals[0] / 0xffff; color.green = (gdouble)vals[1] / 0xffff; color.blue = (gdouble)vals[2] / 0xffff; color.alpha = (gdouble)vals[3] / 0xffff; gtk_color_swatch_set_rgba (GTK_COLOR_SWATCH (widget), &color); }