Author: abrander
Date: 2009-10-14 00:43:18 +0200 (Wed, 14 Oct 2009)
New Revision: 2710

Modified:
   trunk/plugins/denoise/denoise.c
   trunk/src/application.c
   trunk/src/rs-batch.c
   trunk/src/rs-preview-widget.c
   trunk/src/rs-save-dialog.c
Log:
Made RSDenoise properly aware of RSSettings.

Modified: trunk/plugins/denoise/denoise.c
===================================================================
--- trunk/plugins/denoise/denoise.c     2009-10-13 16:00:09 UTC (rev 2709)
+++ trunk/plugins/denoise/denoise.c     2009-10-13 22:43:18 UTC (rev 2710)
@@ -35,6 +35,9 @@
 struct _RSDenoise {
        RSFilter parent;
 
+       RSSettings *settings;
+       gulong settings_signal_id;
+
        FFTDenoiseInfo info;
        gint sharpen;
        gint denoise_luma;
@@ -58,6 +61,7 @@
 
 static void get_property (GObject *object, guint property_id, GValue *value, 
GParamSpec *pspec);
 static void set_property (GObject *object, guint property_id, const GValue 
*value, GParamSpec *pspec);
+static void settings_weak_notify(gpointer data, GObject *where_the_object_was);
 static RSFilterResponse *get_image(RSFilter *filter, const RSFilterRequest 
*request);
 static void settings_changed(RSSettings *settings, RSSettingsMask mask, 
RSDenoise *denoise);
 
@@ -81,31 +85,6 @@
        object_class->set_property = set_property;
 
        g_object_class_install_property(object_class,
-               PROP_SHARPEN, g_param_spec_int (
-                       "sharpen",
-                       _("Sharpen Amount"),
-                       _("How much image will be sharpened"),
-                       0, 100, 0,
-                       G_PARAM_READWRITE)
-       );
-       g_object_class_install_property(object_class,
-               PROP_DENOISE_LUMA, g_param_spec_int (
-                       "denoise_luma",
-                       _("Denoise"),
-                       "FIXME",
-                       0, 100, 0,
-                       G_PARAM_READWRITE)
-       );
-       g_object_class_install_property(object_class,
-               PROP_DENOISE_CHROMA, g_param_spec_int (
-                       "denoise_chroma",
-                       _("Color denoise"),
-                       "FIXME",
-                       0, 100, 0,
-                       G_PARAM_READWRITE)
-       );
-
-       g_object_class_install_property(object_class,
                PROP_SETTINGS, g_param_spec_object(
                        "settings", "Settings", "Settings to render from",
                        RS_TYPE_SETTINGS, G_PARAM_READWRITE)
@@ -143,6 +122,28 @@
                }
        }
 
+       if (mask & (MASK_SHARPEN|MASK_DENOISE_LUMA|MASK_DENOISE_CHROMA))
+       {
+               const gfloat sharpen;
+               const gfloat denoise_luma;
+               const gfloat denoise_chroma;
+
+               g_object_get(settings,
+                       "sharpen", &sharpen,
+                       "denoise_luma", &denoise_luma,
+                       "denoise_chroma", &denoise_chroma,
+                       NULL);
+               if (ABS(((gint) sharpen) - denoise->sharpen) > 0
+                       || ABS(((gint) denoise_luma) - denoise->denoise_luma) > 0
+                       || ABS(((gint) denoise_chroma) - 
denoise->denoise_chroma) > 0)
+               {
+                       changed = TRUE;
+                       denoise->sharpen = (gint) sharpen;
+                       denoise->denoise_luma = (gint) denoise_luma;
+                       denoise->denoise_chroma = (gint) denoise_chroma;
+               }
+       }
+
        if (changed)
                rs_filter_changed(RS_FILTER(denoise), 
RS_FILTER_CHANGED_PIXELDATA);
 }
@@ -186,42 +187,30 @@
 set_property(GObject *object, guint property_id, const GValue *value, 
GParamSpec *pspec)
 {
        RSDenoise *denoise = RS_DENOISE(object);
-       RSFilter *filter = RS_FILTER(denoise);
-       RSSettings *settings;
 
        switch (property_id)
        {
-               case PROP_SHARPEN:
-                       if ((denoise->sharpen-g_value_get_int(value)) != 0)
-                       {
-                               denoise->sharpen = g_value_get_int(value);
-                               rs_filter_changed(filter, 
RS_FILTER_CHANGED_PIXELDATA);
-                       }
-                       break;
-               case PROP_DENOISE_LUMA:
-                       if ((denoise->denoise_luma-g_value_get_int(value)) != 0)
-                       {
-                               denoise->denoise_luma = g_value_get_int(value);
-                               rs_filter_changed(filter, 
RS_FILTER_CHANGED_PIXELDATA);
-                       }
-                       break;
-               case PROP_DENOISE_CHROMA:
-                       if ((denoise->denoise_chroma-g_value_get_int(value)) != 
0)
-                       {
-                               denoise->denoise_chroma = 
g_value_get_int(value);
-                               rs_filter_changed(filter, 
RS_FILTER_CHANGED_PIXELDATA);
-                       }
-                       break;
                case PROP_SETTINGS:
-                       settings = g_value_get_object(value);
-                       g_signal_connect(settings, "settings-changed", 
G_CALLBACK(settings_changed), denoise);
-                       settings_changed(settings, MASK_ALL, denoise);
+                       if (denoise->settings && denoise->settings_signal_id)
+                               g_signal_handler_disconnect(denoise->settings, 
denoise->settings_signal_id);
+                       denoise->settings = g_value_get_object(value);
+                       denoise->settings_signal_id = 
g_signal_connect(denoise->settings, "settings-changed", 
G_CALLBACK(settings_changed), denoise);
+                       settings_changed(denoise->settings, MASK_ALL, denoise);
+                       g_object_weak_ref(G_OBJECT(denoise->settings), 
settings_weak_notify, denoise);
                        break;
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, 
pspec);
        }
 }
 
+static void
+settings_weak_notify(gpointer data, GObject *where_the_object_was)
+{
+       RSDenoise *denoise = RS_DENOISE(data);
+
+       denoise->settings = NULL;
+}
+
 static RSFilterResponse *
 get_image(RSFilter *filter, const RSFilterRequest *request)
 {

Modified: trunk/src/application.c
===================================================================
--- trunk/src/application.c     2009-10-13 16:00:09 UTC (rev 2709)
+++ trunk/src/application.c     2009-10-13 22:43:18 UTC (rev 2710)
@@ -140,9 +140,6 @@
        g_object_set(frotate, "angle", photo->angle, "orientation", 
photo->orientation, NULL);
        g_object_set(fcrop, "rectangle", photo->crop, NULL);
        actual_scale = ((gdouble) width / (gdouble) 
rs_filter_get_width(finput));
-       g_object_set(fdenoise, "sharpen", (gint) (actual_scale * 
photo->settings[snapshot]->sharpen), NULL);
-       g_object_set(fdenoise, "denoise_luma", (gint) 
photo->settings[snapshot]->denoise_luma, NULL);
-       g_object_set(fdenoise, "denoise_chroma", (gint) 
photo->settings[snapshot]->denoise_chroma, NULL);
        if (0 < width && 0 < height) /* We only wan't to set width and height 
if they are not -1 */
                g_object_set(fresample, "width", width, "height", height, NULL);
        g_object_set(fbasic_render, "settings", photo->settings[snapshot], 
NULL);

Modified: trunk/src/rs-batch.c
===================================================================
--- trunk/src/rs-batch.c        2009-10-13 16:00:09 UTC (rev 2709)
+++ trunk/src/rs-batch.c        2009-10-13 22:43:18 UTC (rev 2710)
@@ -564,9 +564,6 @@
                                        break;
                        }
                        g_object_set(fresample, "width", width, "height", 
height, NULL);
-                       g_object_set(fdenoise, "sharpen", (gint) 
photo->settings[setting_id]->sharpen, NULL);
-                       g_object_set(fdenoise, "denoise_luma", (gint) 
photo->settings[setting_id]->denoise_luma, NULL);
-                       g_object_set(fdenoise, "denoise_chroma", (gint) 
photo->settings[setting_id]->denoise_chroma, NULL);
                        g_object_set(fdenoise, "settings", 
photo->settings[setting_id], NULL);
 
                        /* Save the image */

Modified: trunk/src/rs-preview-widget.c
===================================================================
--- trunk/src/rs-preview-widget.c       2009-10-13 16:00:09 UTC (rev 2709)
+++ trunk/src/rs-preview-widget.c       2009-10-13 22:43:18 UTC (rev 2710)
@@ -115,7 +115,6 @@
     GtkWidget *hscrollbar;
        GtkDrawingArea *canvas;
 
-       guint adjustment_changed_helper_timeout;
        RSToolbox *toolbox;
 
        gboolean zoom_to_fit;
@@ -531,20 +530,8 @@
                        rs_filter_set_previous(preview->loupe_filter_cache, 
preview->filter_input);
                        /* FIXME: view is hardcoded to 0 */
                        g_object_set(preview->loupe_filter_render, "settings", 
preview->photo->settings[preview->snapshot[0]], NULL);
-                       gfloat sharpen, denoise_luma, denoise_chroma;
+                       g_object_set(preview->loupe_filter_denoise, "settings", 
preview->photo->settings[preview->snapshot[0]], NULL);
 
-                       
g_object_get(preview->photo->settings[preview->snapshot[0]],
-                               "sharpen", &sharpen,
-                               "denoise_luma", &denoise_luma,
-                               "denoise_chroma", &denoise_chroma,
-                               NULL);
-                       g_object_set(preview->loupe_filter_denoise,
-                               "sharpen", (gint) sharpen,
-                               "denoise_luma", (gint) denoise_luma,
-                               "denoise_chroma", (gint) denoise_chroma,
-                               "settings", 
preview->photo->settings[preview->snapshot[0]],
-                               NULL);
-
                        gtk_widget_show_all(GTK_WIDGET(preview->loupe));
                }
                else
@@ -580,21 +567,12 @@
 
        if (preview->photo)
        {
-               g_signal_connect(G_OBJECT(preview->photo), "settings-changed", 
G_CALLBACK(settings_changed), preview);
-
                for(view=0;view<MAX_VIEWS;view++) 
                {
                        rs_filter_request_set_quick(preview->request[view], 
TRUE);
                        g_object_set(preview->filter_render[view], "settings", 
preview->photo->settings[preview->snapshot[view]], NULL);
                        g_object_set(preview->filter_denoise[view], "settings", 
preview->photo->settings[preview->snapshot[view]], NULL);
                }
-
-               for(view=0;view<MAX_VIEWS;view++)
-                       g_object_set(preview->filter_denoise[view],
-                               "sharpen", (gint) 
(preview->photo->settings[preview->snapshot[view]]->sharpen),
-                               "denoise_luma", (gint) 
(preview->photo->settings[preview->snapshot[view]]->denoise_luma),
-                               "denoise_chroma", (gint) 
(preview->photo->settings[preview->snapshot[view]]->denoise_chroma),
-                               NULL);
        }
 }
 
@@ -837,12 +815,6 @@
        g_object_set(preview->filter_render[view], "settings", 
preview->photo->settings[preview->snapshot[view]], NULL);
        g_object_set(preview->filter_denoise[view], "settings", 
preview->photo->settings[preview->snapshot[view]], NULL);
 
-       g_object_set(preview->filter_denoise[view],
-               "sharpen", (gint) 
(preview->photo->settings[preview->snapshot[view]]->sharpen),
-               "denoise_luma", (gint) 
(preview->photo->settings[preview->snapshot[view]]->denoise_luma),
-               "denoise_chroma", (gint) 
(preview->photo->settings[preview->snapshot[view]]->denoise_chroma),
-               NULL);
-
        DIRTY(preview->dirty[view], SCREEN);
        rs_preview_widget_update(preview, TRUE);
 }
@@ -1758,18 +1730,6 @@
        return FALSE;
 }
 
-static gboolean
-adjustment_changed_helper(gpointer data)
-{
-       RSPreviewWidget *preview = RS_PREVIEW_WIDGET(data);
-
-       rs_preview_widget_update(preview, FALSE);
-
-       preview->adjustment_changed_helper_timeout = 0;
-
-       return FALSE;
-}
-
 static void
 adjustment_changed(GtkAdjustment *adjustment, gpointer user_data)
 {
@@ -2191,46 +2151,6 @@
 }
 
 static void
-settings_changed(RS_PHOTO *photo, RSSettingsMask mask, RSPreviewWidget 
*preview)
-{
-       gint view;
-
-       /* Seperate snapshot */
-       const gint snapshot = mask>>24;
-       mask &= 0x00ffffff;
-
-       /* Return if no more relevant */
-       if (photo != preview->photo)
-               return;
-
-       for(view=0;view<preview->views;view++)
-       {
-               if (preview->snapshot[view] == snapshot)
-               {
-                       DIRTY(preview->dirty[view], SCREEN);
-                       if (mask & MASK_SHARPEN)
-                       {
-                               gfloat f = 0.0;
-                               
g_object_get(preview->photo->settings[preview->snapshot[view]], "sharpen", &f, 
NULL);
-                               g_object_set(preview->filter_denoise[view], 
"sharpen", (gint) f, NULL);
-                       }
-                       if (mask & MASK_DENOISE_LUMA)
-                       {
-                               gfloat f = 0.0;
-                               
g_object_get(preview->photo->settings[preview->snapshot[view]], "denoise_luma", 
&f, NULL);
-                               g_object_set(preview->filter_denoise[view], 
"denoise_luma", (gint) f, NULL);
-                       }
-                       if (mask & MASK_DENOISE_CHROMA)
-                       {
-                               gfloat f = 0.0;
-                               
g_object_get(preview->photo->settings[preview->snapshot[view]], 
"denoise_chroma", &f, NULL);
-                               g_object_set(preview->filter_denoise[view], 
"denoise_chroma", (gint) f, NULL);
-                       }
-               }
-       }
-}
-
-static void
 filter_changed(RSFilter *filter, RSFilterChangedMask mask, RSPreviewWidget 
*preview)
 {
        gint view;

Modified: trunk/src/rs-save-dialog.c
===================================================================
--- trunk/src/rs-save-dialog.c  2009-10-13 16:00:09 UTC (rev 2709)
+++ trunk/src/rs-save-dialog.c  2009-10-13 22:43:18 UTC (rev 2710)
@@ -248,9 +248,6 @@
        actual_scale = ((gdouble) dialog->save_width / (gdouble) 
rs_filter_get_width(dialog->filter_crop));
 
        g_object_set(dialog->filter_resample, "width", dialog->save_width, 
"height", dialog->save_height, NULL);
-       g_object_set(dialog->filter_denoise, "sharpen", (gint) (actual_scale * 
dialog->photo->settings[dialog->snapshot]->sharpen), NULL);
-       g_object_set(dialog->filter_denoise, "denoise_luma", (gint) 
dialog->photo->settings[dialog->snapshot]->denoise_luma, NULL);
-       g_object_set(dialog->filter_denoise, "denoise_chroma", (gint) 
dialog->photo->settings[dialog->snapshot]->denoise_chroma, NULL);
        g_object_set(dialog->filter_basic_render, "settings", 
dialog->photo->settings[dialog->snapshot], NULL);
        g_object_set(dialog->filter_denoise, "settings", 
dialog->photo->settings[dialog->snapshot], NULL);
 


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to