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

Reply via email to