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;
}
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit