applied patch from Dave Neary that removes gray point pickers for

2004-02-19  Sven Neumann  <sven@gimp.org>

	* app/tools/gimplevelstool.c (gimp_levels_tool_dialog): applied
	patch from Dave Neary that removes gray point pickers for
	individual channels (bug #125303). Let the levels widgets expand
	with the dialog.
This commit is contained in:
Sven Neumann 2004-02-18 23:52:31 +00:00 committed by Sven Neumann
parent 097801d7a7
commit 5f147b8e91
2 changed files with 136 additions and 103 deletions

View file

@ -1,3 +1,10 @@
2004-02-19 Sven Neumann <sven@gimp.org>
* app/tools/gimplevelstool.c (gimp_levels_tool_dialog): applied
patch from Dave Neary that removes gray point pickers for
individual channels (bug #125303). Let the levels widgets expand
with the dialog.
2004-02-18 Simon Budig <simon@gimp.org>
* app/config/gimpguiconfig.[ch]
@ -20,10 +27,10 @@
2004-02-18 Sven Neumann <sven@gimp.org>
* tile-cache.c
* tile-private.h
* tile.[ch]: removed trailing whitespace, added some newlines,
let tile_is_valid() return a gboolean instead of a gint.
* app/base/tile-cache.c
* app/base/tile-private.h
* app/base/tile.[ch]: removed trailing whitespace, added some
newlines, let tile_is_valid() return a gboolean instead of a gint.
* app/core/gimpimage-projection.c
* app/core/gimpimage-undo-push.c

View file

@ -137,6 +137,9 @@ static gint levels_input_area_event (GtkWidget *widget,
static gboolean levels_input_area_expose (GtkWidget *widget,
GdkEventExpose *event,
GimpLevelsTool *l_tool);
static void levels_input_area_size_allocate (GtkWidget *widget,
GtkAllocation *allocation,
GimpLevelsTool *l_tool);
static gint levels_output_area_event (GtkWidget *widget,
GdkEvent *event,
GimpLevelsTool *l_tool);
@ -144,6 +147,9 @@ static gboolean levels_output_area_expose (GtkWidget *widget,
GdkEventExpose *event,
GimpLevelsTool *l_tool);
static void levels_output_area_size_allocate (GtkWidget *widget,
GtkAllocation *allocation,
GimpLevelsTool *l_tool);
static void file_dialog_create (GimpLevelsTool *l_tool);
static void file_dialog_response (GtkWidget *dialog,
gint response_id,
@ -412,14 +418,7 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
GtkWidget *spinbutton;
GtkObject *data;
hbox = gtk_hbox_new (TRUE, 0);
gtk_box_pack_start (GTK_BOX (image_map_tool->main_vbox), hbox,
TRUE, TRUE, 0);
gtk_widget_show (hbox);
vbox = gtk_vbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
gtk_widget_show (vbox);
vbox = image_map_tool->main_vbox;
/* The option menu for selecting channels */
channel_hbox = gtk_hbox_new (FALSE, 4);
@ -454,13 +453,9 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
gtk_widget_show (frame);
hbox = gtk_hbox_new (TRUE, 2);
gtk_container_add (GTK_CONTAINER (frame), hbox);
gtk_widget_show (hbox);
vbox2 = gtk_vbox_new (FALSE, 2);
gtk_container_set_border_width (GTK_CONTAINER (vbox2), 2);
gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, FALSE, 0);
gtk_container_add (GTK_CONTAINER (frame), vbox2);
gtk_widget_show (vbox2);
frame = gtk_frame_new (NULL);
@ -477,13 +472,9 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
GIMP_HISTOGRAM_VIEW (l_tool->hist_view));
/* The input levels drawing area */
hbox = gtk_hbox_new (TRUE, 2);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
vbox3 = gtk_vbox_new (FALSE, 2);
@ -493,9 +484,10 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
l_tool->input_area[0] = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (l_tool->input_area[0]),
HISTOGRAM_WIDTH, GRADIENT_HEIGHT);
gtk_preview_set_expand (GTK_PREVIEW (l_tool->input_area[0]), TRUE);
gtk_widget_set_events (l_tool->input_area[0], LEVELS_DRAWING_AREA_MASK);
gtk_box_pack_start (GTK_BOX (vbox3), l_tool->input_area[0],
FALSE, TRUE, 0);
TRUE, TRUE, 0);
gtk_widget_show (l_tool->input_area[0]);
g_signal_connect (l_tool->input_area[0], "event",
@ -503,11 +495,10 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
l_tool);
l_tool->input_area[1] = gtk_drawing_area_new ();
gtk_widget_set_size_request (l_tool->input_area[1],
HISTOGRAM_WIDTH, CONTROL_HEIGHT);
gtk_widget_set_size_request (l_tool->input_area[1], -1, CONTROL_HEIGHT);
gtk_widget_set_events (l_tool->input_area[1], LEVELS_DRAWING_AREA_MASK);
gtk_box_pack_start (GTK_BOX (vbox3), l_tool->input_area[1],
FALSE, TRUE, 0);
TRUE, TRUE, 0);
gtk_widget_show (l_tool->input_area[1]);
g_signal_connect (l_tool->input_area[1], "event",
@ -516,6 +507,9 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
g_signal_connect (l_tool->input_area[1], "expose_event",
G_CALLBACK (levels_input_area_expose),
l_tool);
g_signal_connect (l_tool->input_area[1], "size_allocate",
G_CALLBACK (levels_input_area_size_allocate),
l_tool);
/* Horizontal box for input levels spinbuttons */
hbox = gtk_hbox_new (FALSE, 4);
@ -544,20 +538,12 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
l_tool);
/* input gamma spin */
hbox2 = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox), hbox2, TRUE, FALSE, 0);
gtk_widget_show (hbox2);
button = gimp_levels_tool_color_picker_new (l_tool, GAMMA);
gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0);
gtk_widget_show (button);
data = gtk_adjustment_new (1, 0.1, 10, 0.1, 1, 1);
l_tool->gamma = GTK_ADJUSTMENT (data);
spinbutton = gtk_spin_button_new (l_tool->gamma, 0.5, 2);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE);
gtk_box_pack_start (GTK_BOX (hbox2), spinbutton, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox), spinbutton, TRUE, FALSE, 0);
gimp_help_set_help_data (spinbutton, _("Gamma"), NULL);
gtk_widget_show (spinbutton);
@ -570,10 +556,6 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
gtk_box_pack_end (GTK_BOX (hbox), hbox2, FALSE, FALSE, 0);
gtk_widget_show (hbox2);
button = gimp_levels_tool_color_picker_new (l_tool, HIGH_INPUT);
gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0);
gtk_widget_show (button);
data = gtk_adjustment_new (255, 0, 255, 1, 10, 10);
l_tool->high_input = GTK_ADJUSTMENT (data);
@ -592,13 +574,9 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
hbox = gtk_hbox_new (TRUE, 2);
gtk_container_add (GTK_CONTAINER (frame), hbox);
gtk_widget_show (hbox);
vbox2 = gtk_vbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (vbox2), 2);
gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, FALSE, 0);
gtk_container_add (GTK_CONTAINER (frame), vbox2);
gtk_widget_show (vbox2);
frame = gtk_frame_new (NULL);
@ -613,9 +591,10 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
l_tool->output_area[0] = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (l_tool->output_area[0]),
HISTOGRAM_WIDTH, GRADIENT_HEIGHT);
gtk_preview_set_expand (GTK_PREVIEW (l_tool->output_area[0]), TRUE);
gtk_widget_set_events (l_tool->output_area[0], LEVELS_DRAWING_AREA_MASK);
gtk_box_pack_start (GTK_BOX (vbox3), l_tool->output_area[0],
FALSE, TRUE, 0);
TRUE, TRUE, 0);
gtk_widget_show (l_tool->output_area[0]);
g_signal_connect (l_tool->output_area[0], "event",
@ -625,9 +604,10 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
l_tool->output_area[1] = gtk_preview_new (GTK_PREVIEW_GRAYSCALE);
gtk_preview_size (GTK_PREVIEW (l_tool->output_area[1]),
HISTOGRAM_WIDTH, CONTROL_HEIGHT);
gtk_preview_set_expand (GTK_PREVIEW (l_tool->output_area[1]), TRUE);
gtk_widget_set_events (l_tool->output_area[1], LEVELS_DRAWING_AREA_MASK);
gtk_box_pack_start (GTK_BOX (vbox3), l_tool->output_area[1],
FALSE, TRUE, 0);
TRUE, TRUE, 0);
gtk_widget_show (l_tool->output_area[1]);
g_signal_connect (l_tool->output_area[1], "event",
@ -636,6 +616,9 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
g_signal_connect (l_tool->output_area[1], "expose_event",
G_CALLBACK (levels_output_area_expose),
l_tool);
g_signal_connect (l_tool->output_area[1], "size_allocate",
G_CALLBACK (levels_output_area_size_allocate),
l_tool);
/* Horizontal box for levels spin widgets */
hbox = gtk_hbox_new (FALSE, 4);
@ -673,6 +656,7 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
gtk_box_pack_end (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (frame), hbox);
gtk_widget_show (hbox);
@ -704,9 +688,10 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
G_CALLBACK (levels_save_callback),
l_tool);
hbbox = gtk_hbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (hbbox), 2);
gtk_box_pack_start (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0);
gtk_box_pack_end (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0);
gtk_widget_show (hbbox);
button = gtk_button_new_with_mnemonic (_("_Auto"));
@ -743,12 +728,13 @@ gimp_levels_tool_reset (GimpImageMapTool *image_map_tool)
}
static void
levels_draw_slider (GdkWindow *window,
levels_draw_slider (GtkWidget *widget,
GdkGC *border_gc,
GdkGC *fill_gc,
gint xpos)
{
gint y;
GdkWindow *window = widget->window;
gint y;
for (y = 0; y < CONTROL_HEIGHT; y++)
gdk_draw_line (window, fill_gc,
@ -791,10 +777,11 @@ levels_update (GimpLevelsTool *l_tool,
levels_calculate_transfers (l_tool->levels);
/* set up the lut */
gimp_lut_setup (l_tool->lut,
(GimpLutFunc) levels_lut_func,
l_tool->levels,
gimp_drawable_bytes (GIMP_IMAGE_MAP_TOOL (l_tool)->drawable));
if (GIMP_IMAGE_MAP_TOOL (l_tool)->drawable)
gimp_lut_setup (l_tool->lut,
(GimpLutFunc) levels_lut_func,
l_tool->levels,
gimp_drawable_bytes (GIMP_IMAGE_MAP_TOOL (l_tool)->drawable));
if (update & LOW_INPUT)
gtk_adjustment_set_value (l_tool->low_input,
@ -818,7 +805,12 @@ levels_update (GimpLevelsTool *l_tool,
if (update & INPUT_LEVELS)
{
guchar buf[HISTOGRAM_WIDTH*3];
GtkWidget *widget = l_tool->input_area[0];
guchar *buf;
gint width;
width = widget->allocation.width;
buf = g_alloca (width * 3);
switch (sel_channel)
{
@ -827,49 +819,58 @@ levels_update (GimpLevelsTool *l_tool,
/* fall through */
case GIMP_HISTOGRAM_VALUE:
case GIMP_HISTOGRAM_ALPHA:
for (i = 0; i < HISTOGRAM_WIDTH; i++)
for (i = 0; i < width; i++)
{
buf[3 * i + 0] = l_tool->levels->input[sel_channel][i];
buf[3 * i + 1] = l_tool->levels->input[sel_channel][i];
buf[3 * i + 2] = l_tool->levels->input[sel_channel][i];
gint v = l_tool->levels->input[sel_channel][(i * 256) / width];
buf[3 * i + 0] = v;
buf[3 * i + 1] = v;
buf[3 * i + 2] = v;
}
break;
case GIMP_HISTOGRAM_RED:
case GIMP_HISTOGRAM_GREEN:
case GIMP_HISTOGRAM_BLUE:
for (i = 0; i < HISTOGRAM_WIDTH; i++)
for (i = 0; i < width; i++)
{
buf[3 * i + 0] = l_tool->levels->input[GIMP_HISTOGRAM_RED][i];
buf[3 * i + 1] = l_tool->levels->input[GIMP_HISTOGRAM_GREEN][i];
buf[3 * i + 2] = l_tool->levels->input[GIMP_HISTOGRAM_BLUE][i];
gint j = (i * 256) / width;
buf[3 * i + 0] = l_tool->levels->input[GIMP_HISTOGRAM_RED][j];
buf[3 * i + 1] = l_tool->levels->input[GIMP_HISTOGRAM_GREEN][j];
buf[3 * i + 2] = l_tool->levels->input[GIMP_HISTOGRAM_BLUE][j];
}
break;
}
for (i = 0; i < GRADIENT_HEIGHT/2; i++)
gtk_preview_draw_row (GTK_PREVIEW (l_tool->input_area[0]),
buf, 0, i, HISTOGRAM_WIDTH);
for (i = 0; i < GRADIENT_HEIGHT / 2; i++)
gtk_preview_draw_row (GTK_PREVIEW (widget), buf, 0, i, width);
for (i = 0; i < HISTOGRAM_WIDTH; i++)
for (i = 0; i < width; i++)
{
buf[3 * i + 0] = i;
buf[3 * i + 1] = i;
buf[3 * i + 2] = i;
gint j = (i * 256) / width;
buf[3 * i + 0] = j;
buf[3 * i + 1] = j;
buf[3 * i + 2] = j;
}
for (i = GRADIENT_HEIGHT/2; i < GRADIENT_HEIGHT; i++)
gtk_preview_draw_row (GTK_PREVIEW (l_tool->input_area[0]),
buf, 0, i, HISTOGRAM_WIDTH);
for (i = GRADIENT_HEIGHT / 2; i < GRADIENT_HEIGHT; i++)
gtk_preview_draw_row (GTK_PREVIEW (widget), buf, 0, i, width);
if (update & DRAW)
gtk_widget_queue_draw (l_tool->input_area[0]);
gtk_widget_queue_draw (widget);
}
if (update & OUTPUT_LEVELS)
{
guchar buf[HISTOGRAM_WIDTH*3];
guchar r, g, b;
GtkWidget *widget = l_tool->output_area[0];
guchar *buf;
guchar r, g, b;
gint width;
width = widget->allocation.width;
buf = g_alloca (width * 3);
r = g = b = 0;
switch (sel_channel)
@ -884,37 +885,39 @@ levels_update (GimpLevelsTool *l_tool,
case GIMP_HISTOGRAM_BLUE: b = 1; break;
}
for (i = 0; i < HISTOGRAM_WIDTH; i++)
for (i = 0; i < width; i++)
{
buf[3 * i + 0] = i * r;
buf[3 * i + 1] = i * g;
buf[3 * i + 2] = i * b;
gint j = (i * 256) / width;
buf[3 * i + 0] = j * r;
buf[3 * i + 1] = j * g;
buf[3 * i + 2] = j * b;
}
for (i = 0; i < GRADIENT_HEIGHT; i++)
gtk_preview_draw_row (GTK_PREVIEW (l_tool->output_area[0]),
buf, 0, i, HISTOGRAM_WIDTH);
gtk_preview_draw_row (GTK_PREVIEW (widget), buf, 0, i, width);
if (update & DRAW)
gtk_widget_queue_draw (l_tool->output_area[0]);
gtk_widget_queue_draw (widget);
}
if (update & INPUT_SLIDERS)
{
Levels *levels = l_tool->levels;
gdouble width, mid, tmp;
gint width = l_tool->input_area[0]->allocation.width;
gdouble delta, mid, tmp;
l_tool->slider_pos[0] = (HISTOGRAM_WIDTH *
l_tool->slider_pos[0] = (width *
((gdouble) levels->low_input[l_tool->channel] / 255.0));
l_tool->slider_pos[2] = (HISTOGRAM_WIDTH *
l_tool->slider_pos[2] = (width *
((gdouble) levels->high_input[l_tool->channel] / 255.0));
width = (gdouble) (l_tool->slider_pos[2] - l_tool->slider_pos[0]) / 2.0;
mid = l_tool->slider_pos[0] + width;
delta = (gdouble) (l_tool->slider_pos[2] - l_tool->slider_pos[0]) / 2.0;
mid = l_tool->slider_pos[0] + delta;
tmp = log10 (1.0 / levels->gamma[l_tool->channel]);
l_tool->slider_pos[1] = (gint) (mid + width * tmp + 0.5);
l_tool->slider_pos[1] = (gint) (mid + delta * tmp + 0.5);
gtk_widget_queue_draw (l_tool->input_area[1]);
}
@ -922,11 +925,12 @@ levels_update (GimpLevelsTool *l_tool,
if (update & OUTPUT_SLIDERS)
{
Levels *levels = l_tool->levels;
gint width = l_tool->output_area[0]->allocation.width;
l_tool->slider_pos[3] = (HISTOGRAM_WIDTH *
l_tool->slider_pos[3] = (width *
((gdouble) levels->low_output[l_tool->channel] / 255.0));
l_tool->slider_pos[4] = (HISTOGRAM_WIDTH *
l_tool->slider_pos[4] = (width *
((gdouble) levels->high_output[l_tool->channel] / 255.0));
gtk_widget_queue_draw (l_tool->output_area[1]);
@ -1112,7 +1116,6 @@ levels_input_area_event (GtkWidget *widget,
GdkEventButton *bevent;
GdkEventMotion *mevent;
gchar text[12];
gdouble width, mid, tmp;
gint x, distance;
gint i;
gboolean update = FALSE;
@ -1163,11 +1166,16 @@ levels_input_area_event (GtkWidget *widget,
if (update)
{
gdouble delta, mid, tmp;
gint width;
width = widget->allocation.width;
switch (l_tool->active_slider)
{
case 0: /* low input */
l_tool->levels->low_input[l_tool->channel] =
((gdouble) x / (gdouble) HISTOGRAM_WIDTH) * 255.0;
((gdouble) x / (gdouble) width) * 255.0;
l_tool->levels->low_input[l_tool->channel] =
CLAMP (l_tool->levels->low_input[l_tool->channel],
@ -1175,11 +1183,11 @@ levels_input_area_event (GtkWidget *widget,
break;
case 1: /* gamma */
width = (double) (l_tool->slider_pos[2] - l_tool->slider_pos[0]) / 2.0;
mid = l_tool->slider_pos[0] + width;
delta = (gdouble) (l_tool->slider_pos[2] - l_tool->slider_pos[0]) / 2.0;
mid = l_tool->slider_pos[0] + delta;
x = CLAMP (x, l_tool->slider_pos[0], l_tool->slider_pos[2]);
tmp = (double) (x - mid) / width;
tmp = (gdouble) (x - mid) / delta;
l_tool->levels->gamma[l_tool->channel] = 1.0 / pow (10, tmp);
@ -1190,7 +1198,7 @@ levels_input_area_event (GtkWidget *widget,
case 2: /* high input */
l_tool->levels->high_input[l_tool->channel] =
((gdouble) x / (gdouble) HISTOGRAM_WIDTH) * 255.0;
((gdouble) x / (gdouble) width) * 255.0;
l_tool->levels->high_input[l_tool->channel] =
CLAMP (l_tool->levels->high_input[l_tool->channel],
@ -1210,15 +1218,15 @@ levels_input_area_expose (GtkWidget *widget,
GdkEventExpose *event,
GimpLevelsTool *l_tool)
{
levels_draw_slider (widget->window,
levels_draw_slider (widget,
widget->style->black_gc,
widget->style->black_gc,
l_tool->slider_pos[0]);
levels_draw_slider (widget->window,
levels_draw_slider (widget,
widget->style->black_gc,
widget->style->dark_gc[GTK_STATE_NORMAL],
l_tool->slider_pos[1]);
levels_draw_slider (widget->window,
levels_draw_slider (widget,
widget->style->black_gc,
widget->style->white_gc,
l_tool->slider_pos[2]);
@ -1226,6 +1234,14 @@ levels_input_area_expose (GtkWidget *widget,
return TRUE;
}
static void
levels_input_area_size_allocate (GtkWidget *widget,
GtkAllocation *allocation,
GimpLevelsTool *l_tool)
{
levels_update (l_tool, INPUT_LEVELS | INPUT_SLIDERS);
}
static gboolean
levels_output_area_event (GtkWidget *widget,
GdkEvent *event,
@ -1280,11 +1296,13 @@ levels_output_area_event (GtkWidget *widget,
if (update)
{
gint width = widget->allocation.width;
switch (l_tool->active_slider)
{
case 3: /* low output */
l_tool->levels->low_output[l_tool->channel] =
((gdouble) x / (gdouble) HISTOGRAM_WIDTH) * 255.0;
((gdouble) x / (gdouble) width) * 255.0;
l_tool->levels->low_output[l_tool->channel] =
CLAMP (l_tool->levels->low_output[l_tool->channel], 0, 255);
@ -1292,7 +1310,7 @@ levels_output_area_event (GtkWidget *widget,
case 4: /* high output */
l_tool->levels->high_output[l_tool->channel] =
((gdouble) x / (gdouble) HISTOGRAM_WIDTH) * 255.0;
((gdouble) x / (gdouble) width) * 255.0;
l_tool->levels->high_output[l_tool->channel] =
CLAMP (l_tool->levels->high_output[l_tool->channel], 0, 255);
@ -1310,11 +1328,11 @@ levels_output_area_expose (GtkWidget *widget,
GdkEventExpose *event,
GimpLevelsTool *l_tool)
{
levels_draw_slider (widget->window,
levels_draw_slider (widget,
widget->style->black_gc,
widget->style->black_gc,
l_tool->slider_pos[3]);
levels_draw_slider (widget->window,
levels_draw_slider (widget,
widget->style->black_gc,
widget->style->white_gc,
l_tool->slider_pos[4]);
@ -1322,6 +1340,14 @@ levels_output_area_expose (GtkWidget *widget,
return TRUE;
}
static void
levels_output_area_size_allocate (GtkWidget *widget,
GtkAllocation *allocation,
GimpLevelsTool *l_tool)
{
levels_update (l_tool, OUTPUT_LEVELS | OUTPUT_SLIDERS);
}
static void
levels_input_adjust_by_color (Levels *levels,
guint value,