Author: post
Date: 2010-10-17 17:00:31 +0200 (Sun, 17 Oct 2010)
New Revision: 3571
Modified:
trunk/librawstudio/rs-curve.c
trunk/librawstudio/rs-curve.h
trunk/src/rs-histogram.c
trunk/src/rs-toolbox.c
Log:
Add display of current luminance in curve histogram (and remove some debugging
output).
Modified: trunk/librawstudio/rs-curve.c
===================================================================
--- trunk/librawstudio/rs-curve.c 2010-10-17 14:16:25 UTC (rev 3570)
+++ trunk/librawstudio/rs-curve.c 2010-10-17 15:00:31 UTC (rev 3571)
@@ -40,6 +40,7 @@
RSFilter *input;
guchar *bg_buffer;
RSColorSpace *display_color_space;
+ gfloat rgb_values[3];
gint last_width[2];
PangoLayout* help_layout;
@@ -136,6 +137,9 @@
PangoFontDescription *font_desc =
pango_font_description_from_string("sans light 8");
pango_layout_set_font_description(curve->help_layout, font_desc);
pango_layout_context_changed(curve->help_layout);
+ curve->rgb_values[0] = -1;
+ curve->rgb_values[1] = -1;
+ curve->rgb_values[2] = -1;
}
/**
@@ -277,6 +281,25 @@
rs_curve_draw(curve);
}
+void
+rs_curve_set_highlight(RSCurveWidget *curve, const guchar* rgb_values)
+{
+ g_return_if_fail (RS_IS_CURVE_WIDGET(curve));
+ if (rgb_values)
+ {
+ curve->rgb_values[0] = (float)rgb_values[0]/255.0f;
+ curve->rgb_values[1] = (float)rgb_values[1]/255.0f;
+ curve->rgb_values[2] = (float)rgb_values[2]/255.0f;
+ }
+ else
+ {
+ curve->rgb_values[0] = -1;
+ curve->rgb_values[1] = -1;
+ curve->rgb_values[2] = -1;
+ }
+ rs_curve_draw(curve);
+}
+
/**
* Instance destruction
*/
@@ -775,6 +798,17 @@
gdk_draw_point(window, gc, i, y);
}
+ /* Draw current luminance */
+ gfloat lum = 0.212671f * curve->rgb_values[0] + 0.715160f *
curve->rgb_values[1] + 0.072169f * curve->rgb_values[2];
+ gint current = (int)(lum*width);
+
+ if (current >=0 && current < width)
+ {
+ gdk_gc_set_rgb_fg_color(gc, &red);
+ gint y = (gint)(height*(1-samples[current])+0.5);
+ gdk_draw_rectangle(window, gc, FALSE, current-3, y-3, 6, 6);
+ }
+
g_free(samples);
}
/**
Modified: trunk/librawstudio/rs-curve.h
===================================================================
--- trunk/librawstudio/rs-curve.h 2010-10-17 14:16:25 UTC (rev 3570)
+++ trunk/librawstudio/rs-curve.h 2010-10-17 15:00:31 UTC (rev 3571)
@@ -144,6 +144,9 @@
extern void
rs_curve_set_input(RSCurveWidget *curve, RSFilter* input, RSColorSpace
*display_color_space);
+extern void
+rs_curve_set_highlight(RSCurveWidget *curve, const guchar* rgb_values);
+
#define RS_CURVE_TYPE_WIDGET (rs_curve_widget_get_type ())
#define RS_CURVE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj),
RS_CURVE_TYPE_WIDGET, RSCurveWidget))
#define RS_CURVE_WIDGET_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj),
RS_CURVE_WIDGET, RSCurveWidgetClass))
Modified: trunk/src/rs-histogram.c
===================================================================
--- trunk/src/rs-histogram.c 2010-10-17 14:16:25 UTC (rev 3570)
+++ trunk/src/rs-histogram.c 2010-10-17 15:00:31 UTC (rev 3571)
@@ -234,7 +234,6 @@
current[2] = (int)(histogram->rgb_values[2] * histogram->width);
gfloat lum = 0.212671f * histogram->rgb_values[0] + 0.715160f *
histogram->rgb_values[1] + 0.072169f * histogram->rgb_values[2];
current[3] = (int)(lum*histogram->width);
- g_debug("0:%d 1:%d 2:%d,
3:%d",current[0],current[1],current[2],current[3]);
g_return_if_fail (RS_IS_HISTOGRAM_WIDGET(histogram));
widget = GTK_WIDGET(histogram);
Modified: trunk/src/rs-toolbox.c
===================================================================
--- trunk/src/rs-toolbox.c 2010-10-17 14:16:25 UTC (rev 3570)
+++ trunk/src/rs-toolbox.c 2010-10-17 15:00:31 UTC (rev 3571)
@@ -1166,6 +1166,9 @@
extern void
rs_toolbox_hover_value_updated(RSToolbox *toolbox, const guchar *rgb_value)
{
+ gint i;
g_assert(RS_IS_TOOLBOX(toolbox));
rs_histogram_set_highlight(RS_HISTOGRAM_WIDGET(toolbox->histogram),
rgb_value);
+ for( i = 0 ; i < 3 ; i++)
+ rs_curve_set_highlight(RS_CURVE_WIDGET(toolbox->curve[i]),
rgb_value);
}
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit