static void gimp_color_history_color_changed (GtkWidget *widget, gpointer data) { GimpRGB changed_color; gint color_index; GList *list; gimp_color_area_get_color (GIMP_COLOR_AREA (widget), &changed_color); color_index = GPOINTER_TO_INT (data); color_history_set (color_index, &changed_color); for (list = color_dialogs; list; list = g_list_next (list)) { GimpColorDialog *dialog = list->data; if (dialog->history[color_index] != widget) { g_signal_handlers_block_by_func (dialog->history[color_index], gimp_color_history_color_changed, data); gimp_color_area_set_color (GIMP_COLOR_AREA (dialog->history[color_index]), &changed_color); g_signal_handlers_unblock_by_func (dialog->history[color_index], gimp_color_history_color_changed, data); } } }
/** * gimp_color_button_get_color: * @button: Pointer to a #GimpColorButton. * @color: Pointer to a #GimpRGB struct used to return the color. * * Retrieves the currently set color from the @button. **/ void gimp_color_button_get_color (GimpColorButton *button, GimpRGB *color) { g_return_if_fail (GIMP_IS_COLOR_BUTTON (button)); g_return_if_fail (color != NULL); gimp_color_area_get_color (GIMP_COLOR_AREA (button->color_area), color); }
/** * gimp_color_selection_get_old_color: * @selection: A #GimpColorSelection widget. * @color: Return location for the @selection's old @color. * * This function returns the #GimpColorSelection's old color. **/ void gimp_color_selection_get_old_color (GimpColorSelection *selection, GimpRGB *color) { g_return_if_fail (GIMP_IS_COLOR_SELECTION (selection)); g_return_if_fail (color != NULL); gimp_color_area_get_color (GIMP_COLOR_AREA (selection->old_color), color); }
/** * gimp_color_selection_reset: * @selection: A #GimpColorSelection widget. * * Sets the #GimpColorSelection's current color to its old color. **/ void gimp_color_selection_reset (GimpColorSelection *selection) { GimpRGB color; g_return_if_fail (GIMP_IS_COLOR_SELECTION (selection)); gimp_color_area_get_color (GIMP_COLOR_AREA (selection->old_color), &color); gimp_color_selection_set_color (selection, &color); }
static void gimp_color_selection_new_color_changed (GtkWidget *widget, GimpColorSelection *selection) { gimp_color_area_get_color (GIMP_COLOR_AREA (widget), &selection->rgb); gimp_rgb_to_hsv (&selection->rgb, &selection->hsv); gimp_color_selection_update (selection, UPDATE_NOTEBOOK | UPDATE_SCALES | UPDATE_ENTRY); gimp_color_selection_color_changed (selection); }
static void gimp_color_history_color_clicked (GtkWidget *widget, GimpColorDialog *dialog) { GimpColorArea *color_area; GimpRGB color; color_area = GIMP_COLOR_AREA (gtk_bin_get_child (GTK_BIN (widget))); gimp_color_area_get_color (color_area, &color); gimp_color_selection_set_color (GIMP_COLOR_SELECTION (dialog->selection), &color); }
static void gimp_color_history_color_clicked (GtkWidget *widget, GimpColorHistory *history) { GimpColorArea *color_area; GimpRGB color; color_area = GIMP_COLOR_AREA (gtk_bin_get_child (GTK_BIN (widget))); gimp_color_area_get_color (color_area, &color); g_signal_emit (history, history_signals[COLOR_SELECTED], 0, &color); }
static void gimp_color_history_color_changed (GtkWidget *widget, gpointer data) { GimpColorHistory *history; GimpPalette *palette; GimpRGB color; history = GIMP_COLOR_HISTORY (gtk_widget_get_ancestor (widget, GIMP_TYPE_COLOR_HISTORY)); palette = gimp_palettes_get_color_history (history->context->gimp); gimp_color_area_get_color (GIMP_COLOR_AREA (widget), &color); gimp_palette_set_entry_color (palette, GPOINTER_TO_INT (data), &color); }
static void gimp_color_area_drag_begin (GtkWidget *widget, GdkDragContext *context) { GimpRGB color; GtkWidget *window; GtkWidget *frame; GtkWidget *color_area; window = gtk_window_new (GTK_WINDOW_POPUP); gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DND); gtk_window_set_screen (GTK_WINDOW (window), gtk_widget_get_screen (widget)); gtk_widget_realize (window); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); gtk_container_add (GTK_CONTAINER (window), frame); gimp_color_area_get_color (GIMP_COLOR_AREA (widget), &color); color_area = gimp_color_area_new (&color, GIMP_COLOR_AREA (widget)->type, 0); gtk_widget_set_size_request (color_area, DRAG_PREVIEW_SIZE, DRAG_PREVIEW_SIZE); gtk_container_add (GTK_CONTAINER (frame), color_area); gtk_widget_show (color_area); gtk_widget_show (frame); g_object_set_data_full (G_OBJECT (widget), "gimp-color-area-drag-window", window, (GDestroyNotify) gtk_widget_destroy); gtk_drag_set_icon_widget (context, window, DRAG_ICON_OFFSET, DRAG_ICON_OFFSET); }