diff --git a/app/core/gimpimage-pick-color.c b/app/core/gimpimage-pick-color.c index 963f784a6f..818bbe77b1 100644 --- a/app/core/gimpimage-pick-color.c +++ b/app/core/gimpimage-pick-color.c @@ -35,7 +35,7 @@ gimp_image_pick_color (GimpImage *image, gboolean sample_merged, gboolean sample_average, gdouble average_radius, - GimpImageType *sample_type, + const Babl **sample_format, GimpRGB *color, gint *color_index) { @@ -76,8 +76,8 @@ gimp_image_pick_color (GimpImage *image, * Instead, call gimp_pickable_flush() in the callers if needed. */ - if (sample_type) - *sample_type = gimp_pickable_get_image_type (pickable); + if (sample_format) + *sample_format = gimp_pickable_get_format (pickable); return gimp_pickable_pick_color (pickable, x, y, sample_average, average_radius, diff --git a/app/core/gimpimage-pick-color.h b/app/core/gimpimage-pick-color.h index b115a50b94..914c92f924 100644 --- a/app/core/gimpimage-pick-color.h +++ b/app/core/gimpimage-pick-color.h @@ -26,7 +26,7 @@ gboolean gimp_image_pick_color (GimpImage *image, gboolean sample_merged, gboolean sample_average, gdouble average_radius, - GimpImageType *sample_type, + const Babl **sample_format, GimpRGB *color, gint *color_index); diff --git a/app/core/gimpmarshal.list b/app/core/gimpmarshal.list index e2453d279e..faea253838 100644 --- a/app/core/gimpmarshal.list +++ b/app/core/gimpmarshal.list @@ -37,7 +37,7 @@ VOID: DOUBLE VOID: DOUBLE, DOUBLE VOID: DOUBLE, DOUBLE, DOUBLE, DOUBLE VOID: ENUM -VOID: ENUM, ENUM, BOXED, INT +VOID: ENUM, POINTER, BOXED, INT VOID: ENUM, INT VOID: ENUM, INT, BOOLEAN VOID: ENUM, OBJECT diff --git a/app/display/gimpcursorview.c b/app/display/gimpcursorview.c index 7218b92372..832b5b4f55 100644 --- a/app/display/gimpcursorview.c +++ b/app/display/gimpcursorview.c @@ -725,7 +725,7 @@ gimp_cursor_view_update_cursor (GimpCursorView *view, GimpUnit unit = shell_unit; gboolean in_image; gchar buf[32]; - GimpImageType sample_type; + const Babl *sample_format; GimpRGB color; gint color_index; gdouble xres; @@ -763,12 +763,12 @@ gimp_cursor_view_update_cursor (GimpCursorView *view, (gint) floor (y), view->priv->sample_merged, FALSE, 0.0, - &sample_type, &color, &color_index)) + &sample_format, &color, &color_index)) { gimp_color_frame_set_color (GIMP_COLOR_FRAME (view->priv->color_frame_1), - sample_type, &color, color_index); + sample_format, &color, color_index); gimp_color_frame_set_color (GIMP_COLOR_FRAME (view->priv->color_frame_2), - sample_type, &color, color_index); + sample_format, &color, color_index); } else { diff --git a/app/tools/gimpairbrushtool.c b/app/tools/gimpairbrushtool.c index 2dc2e727b5..85a67a934c 100644 --- a/app/tools/gimpairbrushtool.c +++ b/app/tools/gimpairbrushtool.c @@ -17,6 +17,7 @@ #include "config.h" +#include #include #include "libgimpwidgets/gimpwidgets.h" diff --git a/app/tools/gimpcolorpickertool.c b/app/tools/gimpcolorpickertool.c index f20237e378..f1a396c69d 100644 --- a/app/tools/gimpcolorpickertool.c +++ b/app/tools/gimpcolorpickertool.c @@ -61,7 +61,7 @@ static void gimp_color_picker_tool_oper_update (GimpTool *tool, static void gimp_color_picker_tool_picked (GimpColorTool *color_tool, GimpColorPickState pick_state, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index); @@ -70,7 +70,7 @@ static void gimp_color_picker_tool_info_response (GtkWidget *widget, gint response_id, GimpColorPickerTool *picker_tool); static void gimp_color_picker_tool_info_update (GimpColorPickerTool *picker_tool, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index); @@ -272,7 +272,7 @@ gimp_color_picker_tool_oper_update (GimpTool *tool, static void gimp_color_picker_tool_picked (GimpColorTool *color_tool, GimpColorPickState pick_state, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index) { @@ -285,11 +285,11 @@ gimp_color_picker_tool_picked (GimpColorTool *color_tool, gimp_color_picker_tool_info_create (picker_tool); if (picker_tool->dialog) - gimp_color_picker_tool_info_update (picker_tool, sample_type, + gimp_color_picker_tool_info_update (picker_tool, sample_format, color, color_index); GIMP_COLOR_TOOL_CLASS (parent_class)->picked (color_tool, pick_state, - sample_type, color, + sample_format, color, color_index); } @@ -374,7 +374,7 @@ gimp_color_picker_tool_info_response (GtkWidget *widget, static void gimp_color_picker_tool_info_update (GimpColorPickerTool *picker_tool, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index) { @@ -390,9 +390,9 @@ gimp_color_picker_tool_info_update (GimpColorPickerTool *picker_tool, color); gimp_color_frame_set_color (GIMP_COLOR_FRAME (picker_tool->color_frame1), - sample_type, color, color_index); + sample_format, color, color_index); gimp_color_frame_set_color (GIMP_COLOR_FRAME (picker_tool->color_frame2), - sample_type, color, color_index); + sample_format, color, color_index); /* don't use gtk_window_present() because it would focus the dialog */ if (gtk_widget_get_visible (picker_tool->dialog)) diff --git a/app/tools/gimpcolortool.c b/app/tools/gimpcolortool.c index 1e0d0eb302..e00aab5b51 100644 --- a/app/tools/gimpcolortool.c +++ b/app/tools/gimpcolortool.c @@ -104,7 +104,7 @@ static void gimp_color_tool_draw (GimpDrawTool *draw_tool); static gboolean gimp_color_tool_real_pick (GimpColorTool *color_tool, gint x, gint y, - GimpImageType *sample_type, + const Babl **sample_format, GimpRGB *color, gint *color_index); static void gimp_color_tool_pick (GimpColorTool *tool, @@ -113,7 +113,7 @@ static void gimp_color_tool_pick (GimpColorTool *tool, gint y); static void gimp_color_tool_real_picked (GimpColorTool *color_tool, GimpColorPickState pick_state, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index); @@ -138,7 +138,7 @@ gimp_color_tool_class_init (GimpColorToolClass *klass) G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GimpColorToolClass, picked), NULL, NULL, - gimp_marshal_VOID__ENUM_ENUM_BOXED_INT, + gimp_marshal_VOID__ENUM_POINTER_BOXED_INT, G_TYPE_NONE, 4, GIMP_TYPE_COLOR_PICK_STATE, GIMP_TYPE_IMAGE_TYPE, @@ -570,12 +570,12 @@ gimp_color_tool_draw (GimpDrawTool *draw_tool) } static gboolean -gimp_color_tool_real_pick (GimpColorTool *color_tool, - gint x, - gint y, - GimpImageType *sample_type, - GimpRGB *color, - gint *color_index) +gimp_color_tool_real_pick (GimpColorTool *color_tool, + gint x, + gint y, + const Babl **sample_format, + GimpRGB *color, + gint *color_index) { GimpTool *tool = GIMP_TOOL (color_tool); GimpImage *image = gimp_display_get_image (tool->display); @@ -587,7 +587,7 @@ gimp_color_tool_real_pick (GimpColorTool *color_tool, color_tool->options->sample_merged, color_tool->options->sample_average, color_tool->options->average_radius, - sample_type, + sample_format, color, color_index); } @@ -595,7 +595,7 @@ gimp_color_tool_real_pick (GimpColorTool *color_tool, static void gimp_color_tool_real_picked (GimpColorTool *color_tool, GimpColorPickState pick_state, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index) { @@ -610,7 +610,7 @@ gimp_color_tool_real_picked (GimpColorTool *color_tool, { GtkWidget *widget; - if (GIMP_IMAGE_TYPE_IS_INDEXED (sample_type)) + if (babl_format_is_palette (sample_format)) { widget = gimp_dialog_factory_find_widget (gimp_dialog_factory_get_singleton (), "gimp-indexed-palette"); @@ -704,17 +704,17 @@ gimp_color_tool_pick (GimpColorTool *tool, gint y) { GimpColorToolClass *klass; - GimpImageType sample_type; + const Babl *sample_format; GimpRGB color; gint color_index; klass = GIMP_COLOR_TOOL_GET_CLASS (tool); if (klass->pick && - klass->pick (tool, x, y, &sample_type, &color, &color_index)) + klass->pick (tool, x, y, &sample_format, &color, &color_index)) { g_signal_emit (tool, gimp_color_tool_signals[PICKED], 0, - pick_state, sample_type, &color, color_index); + pick_state, sample_format, &color, color_index); } } diff --git a/app/tools/gimpcolortool.h b/app/tools/gimpcolortool.h index e2e278d498..7599ddd9bc 100644 --- a/app/tools/gimpcolortool.h +++ b/app/tools/gimpcolortool.h @@ -59,14 +59,14 @@ struct _GimpColorToolClass gboolean (* pick) (GimpColorTool *tool, gint x, gint y, - GimpImageType *sample_type, + const Babl **sample_format, GimpRGB *color, gint *color_index); /* signals */ void (* picked) (GimpColorTool *tool, GimpColorPickState pick_state, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index); }; diff --git a/app/tools/gimpconvolvetool.c b/app/tools/gimpconvolvetool.c index 471e373a8e..b2f46d2154 100644 --- a/app/tools/gimpconvolvetool.c +++ b/app/tools/gimpconvolvetool.c @@ -17,6 +17,7 @@ #include "config.h" +#include #include #include "libgimpwidgets/gimpwidgets.h" diff --git a/app/tools/gimpcurvestool.c b/app/tools/gimpcurvestool.c index 8e056cbb4d..3e52b5538b 100644 --- a/app/tools/gimpcurvestool.c +++ b/app/tools/gimpcurvestool.c @@ -82,7 +82,7 @@ static void gimp_curves_tool_oper_update (GimpTool *tool, static void gimp_curves_tool_color_picked (GimpColorTool *color_tool, GimpColorPickState pick_state, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index); static GeglNode * gimp_curves_tool_get_operation (GimpImageMapTool *image_map_tool, @@ -326,7 +326,7 @@ gimp_curves_tool_oper_update (GimpTool *tool, static void gimp_curves_tool_color_picked (GimpColorTool *color_tool, GimpColorPickState pick_state, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index) { diff --git a/app/tools/gimpdodgeburntool.c b/app/tools/gimpdodgeburntool.c index 1f140dea2e..7adaced64b 100644 --- a/app/tools/gimpdodgeburntool.c +++ b/app/tools/gimpdodgeburntool.c @@ -17,6 +17,7 @@ #include "config.h" +#include #include #include "libgimpwidgets/gimpwidgets.h" diff --git a/app/tools/gimperasertool.c b/app/tools/gimperasertool.c index 44474b386c..e73c4a8553 100644 --- a/app/tools/gimperasertool.c +++ b/app/tools/gimperasertool.c @@ -17,6 +17,7 @@ #include "config.h" +#include #include #include "libgimpwidgets/gimpwidgets.h" diff --git a/app/tools/gimphealtool.c b/app/tools/gimphealtool.c index f40bb7f29b..be13b7f677 100644 --- a/app/tools/gimphealtool.c +++ b/app/tools/gimphealtool.c @@ -17,6 +17,7 @@ #include "config.h" +#include #include #include "libgimpwidgets/gimpwidgets.h" diff --git a/app/tools/gimpinktool.c b/app/tools/gimpinktool.c index 66316da48b..49c5b1f12d 100644 --- a/app/tools/gimpinktool.c +++ b/app/tools/gimpinktool.c @@ -17,6 +17,7 @@ #include "config.h" +#include #include #include "libgimpwidgets/gimpwidgets.h" diff --git a/app/tools/gimplevelstool.c b/app/tools/gimplevelstool.c index 51c4c70836..26aebb7768 100644 --- a/app/tools/gimplevelstool.c +++ b/app/tools/gimplevelstool.c @@ -73,7 +73,7 @@ static gboolean gimp_levels_tool_initialize (GimpTool *tool, static void gimp_levels_tool_color_picked (GimpColorTool *color_tool, GimpColorPickState pick_state, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index); @@ -1159,7 +1159,7 @@ levels_input_adjust_by_color (GimpLevelsConfig *config, static void gimp_levels_tool_color_picked (GimpColorTool *color_tool, GimpColorPickState pick_state, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index) { @@ -1169,7 +1169,9 @@ gimp_levels_tool_color_picked (GimpColorTool *color_tool, value = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (tool->active_picker), "pick-value")); - if (value & PICK_ALL_CHANNELS && GIMP_IMAGE_TYPE_IS_RGB (sample_type)) + if (value & PICK_ALL_CHANNELS && + (sample_format == babl_format ("R'G'B' u8") || + sample_format == babl_format ("R'G'B'A u8"))) { GimpHistogramChannel channel; diff --git a/app/tools/gimppaintbrushtool.c b/app/tools/gimppaintbrushtool.c index 7f07463961..32c562320f 100644 --- a/app/tools/gimppaintbrushtool.c +++ b/app/tools/gimppaintbrushtool.c @@ -17,6 +17,7 @@ #include "config.h" +#include #include #include "libgimpwidgets/gimpwidgets.h" diff --git a/app/tools/gimppenciltool.c b/app/tools/gimppenciltool.c index 42e7b49fa1..fa038c28b7 100644 --- a/app/tools/gimppenciltool.c +++ b/app/tools/gimppenciltool.c @@ -17,6 +17,7 @@ #include "config.h" +#include #include #include "libgimpwidgets/gimpwidgets.h" diff --git a/app/tools/gimpsmudgetool.c b/app/tools/gimpsmudgetool.c index 17512bdbd7..7b2fcbae21 100644 --- a/app/tools/gimpsmudgetool.c +++ b/app/tools/gimpsmudgetool.c @@ -17,6 +17,7 @@ #include "config.h" +#include #include #include "libgimpwidgets/gimpwidgets.h" diff --git a/app/widgets/gimpcolorframe.c b/app/widgets/gimpcolorframe.c index 093ae2897c..68da1a55ee 100644 --- a/app/widgets/gimpcolorframe.c +++ b/app/widgets/gimpcolorframe.c @@ -116,8 +116,8 @@ gimp_color_frame_init (GimpColorFrame *frame) GtkWidget *vbox2; gint i; - frame->sample_valid = FALSE; - frame->sample_type = GIMP_RGB_IMAGE; + frame->sample_valid = FALSE; + frame->sample_format = babl_format ("R'G'B' u8"); gimp_rgba_set (&frame->color, 0.0, 0.0, 0.0, GIMP_OPACITY_OPAQUE); @@ -407,38 +407,37 @@ gimp_color_frame_set_has_color_area (GimpColorFrame *frame, /** * gimp_color_frame_set_color: - * @frame: The #GimpColorFrame. - * @sample_type: The type of the #GimpDrawable or #GimpImage the @color - * was picked from. - * @color: The @color to set. - * @color_index: The @color's index. This value is ignored unless - * @sample_type equals to #GIMP_INDEXED_IMAGE or - * #GIMP_INDEXEDA_IMAGE. + * @frame: The #GimpColorFrame. + * @sample_format: The format of the #GimpDrawable or #GimpImage the @color + * was picked from. + * @color: The @color to set. + * @color_index: The @color's index. This value is ignored unless + * @sample_format is an indexed format. * * Sets the color sample to display in the #GimpColorFrame. **/ void gimp_color_frame_set_color (GimpColorFrame *frame, - GimpImageType sample_type, + const Babl *sample_format, const GimpRGB *color, gint color_index) { g_return_if_fail (GIMP_IS_COLOR_FRAME (frame)); g_return_if_fail (color != NULL); - if (frame->sample_valid && - frame->sample_type == sample_type && - frame->color_index == color_index && + if (frame->sample_valid && + frame->sample_format == sample_format && + frame->color_index == color_index && gimp_rgba_distance (&frame->color, color) < 0.0001) { frame->color = *color; return; } - frame->sample_valid = TRUE; - frame->sample_type = sample_type; - frame->color = *color; - frame->color_index = color_index; + frame->sample_valid = TRUE; + frame->sample_format = sample_format; + frame->color = *color; + frame->color_index = color_index; gimp_color_frame_update (frame); } @@ -492,7 +491,7 @@ gimp_color_frame_update (GimpColorFrame *frame) guchar r, g, b, a; gint i; - has_alpha = GIMP_IMAGE_TYPE_HAS_ALPHA (frame->sample_type); + has_alpha = babl_format_has_alpha (frame->sample_format); if (frame->sample_valid) { @@ -505,22 +504,18 @@ gimp_color_frame_update (GimpColorFrame *frame) switch (frame->frame_mode) { case GIMP_COLOR_FRAME_MODE_PIXEL: - switch (GIMP_IMAGE_TYPE_BASE_TYPE (frame->sample_type)) + if (frame->sample_format == babl_format ("Y' u8") || + frame->sample_format == babl_format ("Y'A u8")) { - case GIMP_INDEXED: - names[4] = _("Index:"); + names[0] = _("Value:"); if (frame->sample_valid) - { - /* color_index will be -1 for an averaged sample */ - if (frame->color_index < 0) - names[4] = NULL; - else - values[4] = g_strdup_printf ("%d", frame->color_index); - } - /* fallthrough */ + values[0] = g_strdup_printf ("%d", r); - case GIMP_RGB: + alpha_row = 1; + } + else + { names[0] = _("Red:"); names[1] = _("Green:"); names[2] = _("Blue:"); @@ -533,16 +528,20 @@ gimp_color_frame_update (GimpColorFrame *frame) } alpha_row = 3; - break; - case GIMP_GRAY: - names[0] = _("Value:"); + if (babl_format_is_palette (frame->sample_format)) + { + names[4] = _("Index:"); - if (frame->sample_valid) - values[0] = g_strdup_printf ("%d", r); - - alpha_row = 1; - break; + if (frame->sample_valid) + { + /* color_index will be -1 for an averaged sample */ + if (frame->color_index < 0) + names[4] = NULL; + else + values[4] = g_strdup_printf ("%d", frame->color_index); + } + } } break; diff --git a/app/widgets/gimpcolorframe.h b/app/widgets/gimpcolorframe.h index 7b5e6a6b72..d77d2fd967 100644 --- a/app/widgets/gimpcolorframe.h +++ b/app/widgets/gimpcolorframe.h @@ -37,7 +37,7 @@ struct _GimpColorFrame GimpFrame parent_instance; gboolean sample_valid; - GimpImageType sample_type; + const Babl *sample_format; GimpRGB color; gint color_index; @@ -78,7 +78,7 @@ void gimp_color_frame_set_has_color_area (GimpColorFrame *frame, gboolean has_color_area); void gimp_color_frame_set_color (GimpColorFrame *frame, - GimpImageType sample_type, + const Babl *format, const GimpRGB *color, gint color_index); void gimp_color_frame_set_invalid (GimpColorFrame *frame); diff --git a/app/widgets/gimpsamplepointeditor.c b/app/widgets/gimpsamplepointeditor.c index 54069de11b..56f3fbc1d6 100644 --- a/app/widgets/gimpsamplepointeditor.c +++ b/app/widgets/gimpsamplepointeditor.c @@ -467,7 +467,7 @@ gimp_sample_point_editor_update (GimpSamplePointEditor *editor) { GimpSamplePoint *sample_point = list->data; GimpColorFrame *color_frame; - GimpImageType image_type; + const Babl *format; GimpRGB color; gint color_index; @@ -480,11 +480,11 @@ gimp_sample_point_editor_update (GimpSamplePointEditor *editor) sample_point->y, editor->sample_merged, FALSE, 0.0, - &image_type, + &format, &color, &color_index)) { - gimp_color_frame_set_color (color_frame, image_type, + gimp_color_frame_set_color (color_frame, format, &color, color_index); } else