Bug 737008 - Curve color always black

Don't hardcode "black" for the "Value" curve in GimpCurvesTool.
Instead, pass a NULL color to GimpCurveView, which is then interpreted
as the theme's text color (the curve's background is the theme's text
background color). We still hardcode pure red, green and blue for the
other curves.
This commit is contained in:
Michael Natterer 2014-09-21 12:29:35 +02:00
parent c491b4f6ef
commit 90c967a39f
2 changed files with 46 additions and 19 deletions

View File

@ -118,20 +118,13 @@ static gboolean curves_menu_sensitivity (gint value,
static void curves_curve_type_callback (GtkWidget *widget,
GimpCurvesTool *tool);
static const GimpRGB * curves_get_channel_color (GimpHistogramChannel channel);
G_DEFINE_TYPE (GimpCurvesTool, gimp_curves_tool, GIMP_TYPE_IMAGE_MAP_TOOL)
#define parent_class gimp_curves_tool_parent_class
static GimpRGB channel_colors[GIMP_HISTOGRAM_RGB] =
{
{ 0.0, 0.0, 0.0, 1.0 },
{ 1.0, 0.0, 0.0, 1.0 },
{ 0.0, 1.0, 0.0, 1.0 },
{ 0.0, 0.0, 1.0, 1.0 },
{ 0.5, 0.5, 0.5, 1.0 }
};
/* public functions */
@ -502,7 +495,7 @@ gimp_curves_tool_dialog (GimpImageMapTool *image_map_tool)
NULL);
gimp_curve_view_set_curve (GIMP_CURVE_VIEW (tool->graph),
config->curve[config->channel],
&channel_colors[config->channel]);
curves_get_channel_color (config->channel));
gtk_container_add (GTK_CONTAINER (frame), tool->graph);
gtk_widget_show (tool->graph);
@ -721,13 +714,13 @@ gimp_curves_tool_config_notify (GObject *object,
if (channel == config->channel)
{
gimp_curve_view_set_curve (GIMP_CURVE_VIEW (tool->graph), curve,
&channel_colors[channel]);
curves_get_channel_color (channel));
}
else
{
gimp_curve_view_add_background (GIMP_CURVE_VIEW (tool->graph),
config->curve[channel],
&channel_colors[channel]);
curves_get_channel_color (channel));
}
}
@ -806,3 +799,21 @@ curves_curve_type_callback (GtkWidget *widget,
gimp_curve_set_curve_type (config->curve[config->channel], curve_type);
}
}
static const GimpRGB *
curves_get_channel_color (GimpHistogramChannel channel)
{
static const GimpRGB channel_colors[GIMP_HISTOGRAM_RGB] =
{
{ 0.0, 0.0, 0.0, 1.0 },
{ 1.0, 0.0, 0.0, 1.0 },
{ 0.0, 1.0, 0.0, 1.0 },
{ 0.0, 0.0, 1.0, 1.0 },
{ 0.5, 0.5, 0.5, 1.0 }
};
if (channel == GIMP_HISTOGRAM_VALUE)
return NULL;
return &channel_colors[channel];
}

View File

@ -63,6 +63,7 @@ typedef struct
{
GimpCurve *curve;
GimpRGB color;
gboolean color_set;
} BGCurve;
@ -586,11 +587,22 @@ gimp_curve_view_expose (GtkWidget *widget,
{
BGCurve *bg = list->data;
cairo_set_source_rgba (cr,
bg->color.r,
bg->color.g,
bg->color.b,
0.5);
if (bg->color_set)
{
cairo_set_source_rgba (cr,
bg->color.r,
bg->color.g,
bg->color.b,
0.5);
}
else
{
cairo_set_source_rgba (cr,
style->text[GTK_STATE_NORMAL].red / 65535.0,
style->text[GTK_STATE_NORMAL].green / 65535.0,
style->text[GTK_STATE_NORMAL].blue / 65535.0,
0.5);
}
gimp_curve_view_draw_curve (view, cr, bg->curve,
width, height, border);
@ -1255,7 +1267,6 @@ gimp_curve_view_add_background (GimpCurveView *view,
g_return_if_fail (GIMP_IS_CURVE_VIEW (view));
g_return_if_fail (GIMP_IS_CURVE (curve));
g_return_if_fail (color != NULL);
for (list = view->bg_curves; list; list = g_list_next (list))
{
@ -1267,7 +1278,12 @@ gimp_curve_view_add_background (GimpCurveView *view,
bg = g_slice_new0 (BGCurve);
bg->curve = g_object_ref (curve);
bg->color = *color;
if (color)
{
bg->color = *color;
bg->color_set = TRUE;
}
g_signal_connect (bg->curve, "dirty",
G_CALLBACK (gimp_curve_view_curve_dirty),