[Rawstudio-commit] r3233 - in trunk: librawstudio src

Anders Kvist anders at kvistmail.dk
Mon Feb 15 00:26:01 CET 2010


Author: akv
Date: 2010-02-15 00:26:01 +0100 (Mon, 15 Feb 2010)
New Revision: 3233

Modified:
   trunk/librawstudio/rs-settings.c
   trunk/librawstudio/rs-settings.h
   trunk/src/rs-actions.c
   trunk/src/rs-cache.c
   trunk/src/rs-photo.c
   trunk/src/rs-photo.h
   trunk/src/rs-toolbox.c
Log:
Added basic WB presets - not in use yet.

Modified: trunk/librawstudio/rs-settings.c
===================================================================
--- trunk/librawstudio/rs-settings.c	2010-02-14 17:15:12 UTC (rev 3232)
+++ trunk/librawstudio/rs-settings.c	2010-02-14 23:26:01 UTC (rev 3233)
@@ -50,6 +50,7 @@
 	PROP_CONTRAST,
 	PROP_WARMTH,
 	PROP_TINT,
+	PROP_WB_ASCII,
 	PROP_SHARPEN,
 	PROP_DENOISE_LUMA,
 	PROP_DENOISE_CHROMA,
@@ -100,6 +101,11 @@
 			-1.0, 1.0, 0.0, G_PARAM_READWRITE)
 	);
 	g_object_class_install_property(object_class,
+		PROP_WB_ASCII, g_param_spec_string(
+			"wb_ascii", _("WBAscii"), _("WBAscii"),
+			NULL, G_PARAM_READWRITE)
+	);
+	g_object_class_install_property(object_class,
 		PROP_SHARPEN, g_param_spec_float(
 			"sharpen", _("Sharpen"), _("Sharp"),
 			0.0, 100.0, 0.0, G_PARAM_READWRITE)
@@ -187,6 +193,9 @@
 		CASE(CONTRAST, contrast);
 		CASE(WARMTH, warmth);
 		CASE(TINT, tint);
+	case PROP_WB_ASCII:
+		g_value_set_string(value, settings->wb_ascii);
+		break;
 		CASE(SHARPEN, sharpen);
 		CASE(DENOISE_LUMA, denoise_luma);
 		CASE(DENOISE_CHROMA, denoise_chroma);
@@ -222,8 +231,28 @@
 		CASE(SATURATION, saturation);
 		CASE(HUE, hue);
 		CASE(CONTRAST, contrast);
-		CASE(WARMTH, warmth);
-		CASE(TINT, tint);
+	case PROP_WARMTH:
+		if (settings->warmth != g_value_get_float(value))
+		{
+			settings->warmth = g_value_get_float(value);
+			changed_mask |= MASK_WARMTH;
+			g_object_set(settings, "wb_ascii", NULL, NULL);
+		}
+		break;
+	case PROP_TINT:
+		if (settings->tint != g_value_get_float(value))
+		{
+			settings->tint = g_value_get_float(value);
+			changed_mask |= MASK_TINT;
+			g_object_set(settings, "wb_ascii", NULL, NULL);
+		}
+		break;
+	case PROP_WB_ASCII:
+		if (settings->wb_ascii)
+			g_free(settings->wb_ascii);
+		settings->wb_ascii = g_strdup(g_value_get_string(value));
+		changed_mask |= MASK_WB;
+		break;
 		CASE(SHARPEN, sharpen);
 		CASE(DENOISE_LUMA, denoise_luma);
 		CASE(DENOISE_CHROMA, denoise_chroma);
@@ -385,6 +414,14 @@
 	} \
 } while(0)
 
+	if ((mask & MASK_WB) && (g_strcmp0(target->wb_ascii, source->wb_ascii) != 0))
+	{
+		if (target->wb_ascii)
+			g_free(target->wb_ascii);
+
+		changed_mask |= MASK_WB; \
+		target->wb_ascii = g_strdup(source->wb_ascii);
+	}
 	SETTINGS_COPY(EXPOSURE, exposure);
 	SETTINGS_COPY(SATURATION, saturation);
 	SETTINGS_COPY(HUE, hue);
@@ -456,12 +493,12 @@
  * @param exposure New value
  */
 void
-rs_settings_set_wb(RSSettings *settings, const gfloat warmth, const gfloat tint)
+rs_settings_set_wb(RSSettings *settings, const gfloat warmth, const gfloat tint, const gchar *ascii)
 {
 	g_assert(RS_IS_SETTINGS(settings));
 
 	rs_settings_commit_start(settings);
-	g_object_set(settings, "warmth", warmth, "tint", tint, NULL);
+	g_object_set(settings, "warmth", warmth, "tint", tint, "wb_ascii", ascii, NULL);
 	rs_settings_commit_stop(settings);
 }
 

Modified: trunk/librawstudio/rs-settings.h
===================================================================
--- trunk/librawstudio/rs-settings.h	2010-02-14 17:15:12 UTC (rev 3232)
+++ trunk/librawstudio/rs-settings.h	2010-02-14 23:26:01 UTC (rev 3233)
@@ -32,6 +32,10 @@
 #define RS_IS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RS_TYPE_SETTINGS))
 #define RS_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RS_TYPE_SETTINGS, RSSettingsClass))
 
+/* Presets for WB */
+#define PRESET_WB_AUTO "wb_auto"
+#define PRESET_WB_CAMERA "wb_camera"
+
 typedef enum {
 	MASK_EXPOSURE       = (1<<0),
 	MASK_SATURATION     = (1<<1),
@@ -65,6 +69,7 @@
 	gfloat contrast;
 	gfloat warmth;
 	gfloat tint;
+	gchar *wb_ascii;
 	gfloat sharpen;
 	gfloat denoise_luma;
 	gfloat denoise_chroma;
@@ -127,7 +132,7 @@
  * @param settings A RSSettings
  * @param exposure New value
  */
-extern void rs_settings_set_wb(RSSettings *settings, const gfloat warmth, const gfloat tint);
+extern void rs_settings_set_wb(RSSettings *settings, const gfloat warmth, const gfloat tint, const gchar *ascii);
 
 /**
  * Get the knots from the curve

Modified: trunk/src/rs-actions.c
===================================================================
--- trunk/src/rs-actions.c	2010-02-14 17:15:12 UTC (rev 3232)
+++ trunk/src/rs-actions.c	2010-02-14 23:26:01 UTC (rev 3233)
@@ -557,7 +557,7 @@
 		else
 		{
 			gui_status_notify(_("Adjusting to camera white balance"));
-			rs_photo_set_wb_from_mul(rs->photo, rs->current_setting, rs->photo->metadata->cam_mul);
+			rs_photo_set_wb_from_mul(rs->photo, rs->current_setting, rs->photo->metadata->cam_mul, PRESET_WB_CAMERA);
 		}
 	}
 }

Modified: trunk/src/rs-cache.c
===================================================================
--- trunk/src/rs-cache.c	2010-02-14 17:15:12 UTC (rev 3232)
+++ trunk/src/rs-cache.c	2010-02-14 23:26:01 UTC (rev 3233)
@@ -117,6 +117,8 @@
 		xmlTextWriterWriteFormatElement(writer, BAD_CAST "warmth", "%f", rss->warmth);
 	if (mask & MASK_TINT)
 		xmlTextWriterWriteFormatElement(writer, BAD_CAST "tint", "%f", rss->tint);
+	if (mask & MASK_WB && rss->wb_ascii)
+		xmlTextWriterWriteFormatElement(writer, BAD_CAST "wb_ascii", "%s", rss->wb_ascii);
 	if (mask & MASK_SHARPEN)
 		xmlTextWriterWriteFormatElement(writer, BAD_CAST "sharpen", "%f", rss->sharpen);
 	if (mask & MASK_DENOISE_LUMA)
@@ -188,6 +190,13 @@
 			mask |= MASK_TINT;
 			target = &rss->tint;
 		}
+		else if ((!xmlStrcmp(cur->name, BAD_CAST "wb_ascii")))
+		{
+			mask |= MASK_WB;
+			val = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
+			rss->wb_ascii = g_strdup((gchar *) val);
+			xmlFree(val);
+		}
 		else if ((!xmlStrcmp(cur->name, BAD_CAST "sharpen")))
 		{
 			mask |= MASK_SHARPEN;

Modified: trunk/src/rs-photo.c
===================================================================
--- trunk/src/rs-photo.c	2010-02-14 17:15:12 UTC (rev 3232)
+++ trunk/src/rs-photo.c	2010-02-14 23:26:01 UTC (rev 3233)
@@ -436,7 +436,7 @@
 	g_assert(RS_IS_PHOTO(photo));
 	g_return_if_fail ((snapshot>=0) && (snapshot<=2));
 
-	rs_settings_set_wb(photo->settings[snapshot], warmth, tint);
+	rs_settings_set_wb(photo->settings[snapshot], warmth, tint, NULL);
 
 	g_signal_emit(photo, signals[SETTINGS_CHANGED], 0, MASK_WB|(snapshot<<24));
 }
@@ -448,7 +448,7 @@
  * @param mul A pointer to an array of at least 3 multipliers
  */
 void
-rs_photo_set_wb_from_mul(RS_PHOTO *photo, const gint snapshot, const gdouble *mul)
+rs_photo_set_wb_from_mul(RS_PHOTO *photo, const gint snapshot, const gdouble *mul, const gchar *ascii)
 {
 	gint c;
 	gdouble max=0.0, warmth, tint;
@@ -474,7 +474,7 @@
 
 	tint = (buf[B] + buf[R] - 4.0)/-2.0;
 	warmth = (buf[R]/(2.0-tint))-1.0;
-	rs_settings_set_wb(photo->settings[snapshot], warmth, tint);
+	rs_settings_set_wb(photo->settings[snapshot], warmth, tint, ascii);
 }
 
 /**
@@ -541,7 +541,7 @@
 	for(c=0;c<4;c++)
 		if (dsum[c])
 			pre_mul[c] = dsum[c+4] / dsum[c];
-	rs_photo_set_wb_from_mul(photo, snapshot, pre_mul);
+	rs_photo_set_wb_from_mul(photo, snapshot, pre_mul, PRESET_WB_AUTO);
 }
 
 /**
@@ -561,7 +561,7 @@
 
 	if (photo->metadata->cam_mul[R] != -1.0)
 	{
-		rs_photo_set_wb_from_mul(photo, snapshot, photo->metadata->cam_mul);
+		rs_photo_set_wb_from_mul(photo, snapshot, photo->metadata->cam_mul, PRESET_WB_CAMERA);
 		ret = TRUE;
 	}
 

Modified: trunk/src/rs-photo.h
===================================================================
--- trunk/src/rs-photo.h	2010-02-14 17:15:12 UTC (rev 3232)
+++ trunk/src/rs-photo.h	2010-02-14 23:26:01 UTC (rev 3233)
@@ -267,7 +267,7 @@
  * @param snapshot Which snapshot to affect
  * @param mul A pointer to an array of at least 3 multipliers
  */
-extern void rs_photo_set_wb_from_mul(RS_PHOTO *photo, const gint snapshot, const gdouble *mul);
+extern void rs_photo_set_wb_from_mul(RS_PHOTO *photo, const gint snapshot, const gdouble *mul, const gchar *ascii);
 
 /**
  * Sets the white balance by neutralizing the colors provided

Modified: trunk/src/rs-toolbox.c
===================================================================
--- trunk/src/rs-toolbox.c	2010-02-14 17:15:12 UTC (rev 3232)
+++ trunk/src/rs-toolbox.c	2010-02-14 23:26:01 UTC (rev 3233)
@@ -330,7 +330,7 @@
 
 	/* If we reset warmth or tint slider, we go back to camera whitebalance */
 	if (g_strcmp0(basic->property_name, "warmth") == 0 || g_strcmp0(basic->property_name, "tint") == 0)
-		rs_photo_set_wb_from_mul(toolbox->photo, snapshot, toolbox->photo->metadata->cam_mul);
+		rs_photo_set_wb_from_mul(toolbox->photo, snapshot, toolbox->photo->metadata->cam_mul, PRESET_WB_CAMERA);
 
 	return TRUE;
 }




More information about the Rawstudio-commit mailing list