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

Reply via email to