mirror of https://github.com/GNOME/gimp.git
changed the range of the "lightness" parameter to [-100..+100], where -100
2003-11-18 Michael Natterer <mitch@gimp.org> * app/base/colorize.[ch]: changed the range of the "lightness" parameter to [-100..+100], where -100 results in pure black and +100 in pure white. Default to lightness == 0 so the initial transform changes just the colors while keeping the original lightness. * app/tools/gimpcolorizetool.[ch]: changed accordingly. Reordered the scales to be in HSL order.
This commit is contained in:
parent
0d2229b75d
commit
cbfbc2b269
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
2003-11-18 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/base/colorize.[ch]: changed the range of the "lightness"
|
||||
parameter to [-100..+100], where -100 results in pure black and
|
||||
+100 in pure white. Default to lightness == 0 so the initial
|
||||
transform changes just the colors while keeping the original
|
||||
lightness.
|
||||
|
||||
* app/tools/gimpcolorizetool.[ch]: changed accordingly. Reordered
|
||||
the scales to be in HSL order.
|
||||
|
||||
2003-11-18 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/widgets/gimpcontainerpopup.[ch]
|
||||
|
|
|
@ -36,9 +36,9 @@ colorize_init (Colorize *colorize)
|
|||
|
||||
g_return_if_fail (colorize != NULL);
|
||||
|
||||
colorize->hue = 360.0 / 2;
|
||||
colorize->lightness = 100.0 / 2;
|
||||
colorize->saturation = 100.0 / 2;
|
||||
colorize->hue = 180.0;
|
||||
colorize->saturation = 50.0;
|
||||
colorize->lightness = 0.0;
|
||||
|
||||
for (i = 0; i < 256; i ++)
|
||||
{
|
||||
|
@ -59,13 +59,14 @@ colorize_calculate (Colorize *colorize)
|
|||
|
||||
hsl.h = colorize->hue / 360.0;
|
||||
hsl.s = colorize->saturation / 100.0;
|
||||
hsl.l = colorize->lightness / 100.0;
|
||||
|
||||
gimp_hsl_to_rgb (&hsl, &rgb);
|
||||
|
||||
/* Calculate transfers */
|
||||
for (i = 0; i < 256; i ++)
|
||||
{
|
||||
hsl.l = (gdouble) i / 255.0;
|
||||
|
||||
gimp_hsl_to_rgb (&hsl, &rgb);
|
||||
|
||||
colorize->final_red_lookup[i] = i * rgb.r;
|
||||
colorize->final_green_lookup[i] = i * rgb.g;
|
||||
colorize->final_blue_lookup[i] = i * rgb.b;
|
||||
|
@ -101,6 +102,17 @@ colorize (PixelRegion *srcPR,
|
|||
colorize->lum_green_lookup[s[GREEN_PIX]] +
|
||||
colorize->lum_blue_lookup[s[BLUE_PIX]]); /* luminosity */
|
||||
|
||||
if (colorize->lightness > 0)
|
||||
{
|
||||
lum = (gdouble) lum * (100.0 - colorize->lightness) / 100.0;
|
||||
|
||||
lum += 255 - (100.0 - colorize->lightness) * 255.0 / 100.0;
|
||||
}
|
||||
else if (colorize->lightness < 0)
|
||||
{
|
||||
lum = (gdouble) lum * (colorize->lightness + 100.0) / 100.0;
|
||||
}
|
||||
|
||||
d[RED_PIX] = colorize->final_red_lookup[lum];
|
||||
d[GREEN_PIX] = colorize->final_green_lookup[lum];
|
||||
d[BLUE_PIX] = colorize->final_blue_lookup[lum];
|
||||
|
|
|
@ -23,8 +23,8 @@
|
|||
struct _Colorize
|
||||
{
|
||||
gdouble hue;
|
||||
gdouble lightness;
|
||||
gdouble saturation;
|
||||
gdouble lightness;
|
||||
|
||||
gint lum_red_lookup[256];
|
||||
gint lum_green_lookup[256];
|
||||
|
|
|
@ -46,8 +46,8 @@
|
|||
#define DA_HEIGHT 20
|
||||
|
||||
#define HUE_SLIDER (1 << 0)
|
||||
#define LIGHTNESS_SLIDER (1 << 1)
|
||||
#define SATURATION_SLIDER (1 << 2)
|
||||
#define SATURATION_SLIDER (1 << 1)
|
||||
#define LIGHTNESS_SLIDER (1 << 2)
|
||||
#define DRAW (1 << 3)
|
||||
#define SLIDERS (HUE_SLIDER | LIGHTNESS_SLIDER | SATURATION_SLIDER)
|
||||
#define ALL (SLIDERS | DRAW)
|
||||
|
@ -71,10 +71,10 @@ static void colorize_update (GimpColorizeTool *col_tool,
|
|||
gint update);
|
||||
static void colorize_hue_adj_update (GtkAdjustment *adj,
|
||||
GimpColorizeTool *col_tool);
|
||||
static void colorize_lightness_adj_update (GtkAdjustment *adj,
|
||||
GimpColorizeTool *col_tool);
|
||||
static void colorize_saturation_adj_update (GtkAdjustment *adj,
|
||||
GimpColorizeTool *col_tool);
|
||||
static void colorize_lightness_adj_update (GtkAdjustment *adj,
|
||||
GimpColorizeTool *col_tool);
|
||||
|
||||
|
||||
/* private variables */
|
||||
|
@ -262,22 +262,8 @@ gimp_colorize_tool_dialog (GimpImageMapTool *image_map_tool)
|
|||
G_CALLBACK (colorize_hue_adj_update),
|
||||
col_tool);
|
||||
|
||||
/* Create the lightness scale widget */
|
||||
data = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||
_("_Lightness:"), SLIDER_WIDTH, -1,
|
||||
0.0, 0.0, 100.0, 1.0, 10.0, 0,
|
||||
TRUE, 0.0, 0.0,
|
||||
NULL, NULL);
|
||||
col_tool->lightness_data = GTK_ADJUSTMENT (data);
|
||||
slider = GIMP_SCALE_ENTRY_SCALE (data);
|
||||
gtk_range_set_update_policy (GTK_RANGE (slider), GTK_UPDATE_DELAYED);
|
||||
|
||||
g_signal_connect (data, "value_changed",
|
||||
G_CALLBACK (colorize_lightness_adj_update),
|
||||
col_tool);
|
||||
|
||||
/* Create the saturation scale widget */
|
||||
data = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
||||
data = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||
_("_Saturation:"), SLIDER_WIDTH, -1,
|
||||
0.0, 0.0, 100.0, 1.0, 10.0, 0,
|
||||
TRUE, 0.0, 0.0,
|
||||
|
@ -289,6 +275,20 @@ gimp_colorize_tool_dialog (GimpImageMapTool *image_map_tool)
|
|||
g_signal_connect (col_tool->saturation_data, "value_changed",
|
||||
G_CALLBACK (colorize_saturation_adj_update),
|
||||
col_tool);
|
||||
|
||||
/* Create the lightness scale widget */
|
||||
data = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
||||
_("_Lightness:"), SLIDER_WIDTH, -1,
|
||||
0.0, -100.0, 100.0, 1.0, 10.0, 0,
|
||||
TRUE, 0.0, 0.0,
|
||||
NULL, NULL);
|
||||
col_tool->lightness_data = GTK_ADJUSTMENT (data);
|
||||
slider = GIMP_SCALE_ENTRY_SCALE (data);
|
||||
gtk_range_set_update_policy (GTK_RANGE (slider), GTK_UPDATE_DELAYED);
|
||||
|
||||
g_signal_connect (data, "value_changed",
|
||||
G_CALLBACK (colorize_lightness_adj_update),
|
||||
col_tool);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -311,13 +311,13 @@ colorize_update (GimpColorizeTool *col_tool,
|
|||
gtk_adjustment_set_value (GTK_ADJUSTMENT (col_tool->hue_data),
|
||||
col_tool->colorize->hue);
|
||||
|
||||
if (update & LIGHTNESS_SLIDER)
|
||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (col_tool->lightness_data),
|
||||
col_tool->colorize->lightness);
|
||||
|
||||
if (update & SATURATION_SLIDER)
|
||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (col_tool->saturation_data),
|
||||
col_tool->colorize->saturation);
|
||||
|
||||
if (update & LIGHTNESS_SLIDER)
|
||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (col_tool->lightness_data),
|
||||
col_tool->colorize->lightness);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -333,19 +333,6 @@ colorize_hue_adj_update (GtkAdjustment *adjustment,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
colorize_lightness_adj_update (GtkAdjustment *adjustment,
|
||||
GimpColorizeTool *col_tool)
|
||||
{
|
||||
if (col_tool->colorize->lightness != adjustment->value)
|
||||
{
|
||||
col_tool->colorize->lightness = adjustment->value;
|
||||
colorize_update (col_tool, DRAW);
|
||||
|
||||
gimp_image_map_tool_preview (GIMP_IMAGE_MAP_TOOL (col_tool));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
colorize_saturation_adj_update (GtkAdjustment *adjustment,
|
||||
GimpColorizeTool *col_tool)
|
||||
|
@ -358,3 +345,16 @@ colorize_saturation_adj_update (GtkAdjustment *adjustment,
|
|||
gimp_image_map_tool_preview (GIMP_IMAGE_MAP_TOOL (col_tool));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
colorize_lightness_adj_update (GtkAdjustment *adjustment,
|
||||
GimpColorizeTool *col_tool)
|
||||
{
|
||||
if (col_tool->colorize->lightness != adjustment->value)
|
||||
{
|
||||
col_tool->colorize->lightness = adjustment->value;
|
||||
colorize_update (col_tool, DRAW);
|
||||
|
||||
gimp_image_map_tool_preview (GIMP_IMAGE_MAP_TOOL (col_tool));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,8 +42,8 @@ struct _GimpColorizeTool
|
|||
|
||||
/* dialog */
|
||||
GtkAdjustment *hue_data;
|
||||
GtkAdjustment *lightness_data;
|
||||
GtkAdjustment *saturation_data;
|
||||
GtkAdjustment *lightness_data;
|
||||
};
|
||||
|
||||
struct _GimpColorizeToolClass
|
||||
|
|
Loading…
Reference in New Issue