Author: abrander
Date: 2009-06-02 01:26:16 +0200 (Tue, 02 Jun 2009)
New Revision: 2500

Modified:
   trunk/librawstudio/rs-filter.c
   trunk/librawstudio/rs-filter.h
Log:
Added rs_filter_set_enabled() and rs_filter_get_enabled().

Modified: trunk/librawstudio/rs-filter.c
===================================================================
--- trunk/librawstudio/rs-filter.c      2009-06-01 21:51:46 UTC (rev 2499)
+++ trunk/librawstudio/rs-filter.c      2009-06-01 23:26:16 UTC (rev 2500)
@@ -62,6 +62,7 @@
        filter_debug("rs_filter_init(%p)", self);
        self->previous = NULL;
        self->next_filters = NULL;
+       self->enabled = TRUE;
 }
 
 /**
@@ -163,7 +164,7 @@
                gt = g_timer_new();
        count++;
 
-       if (RS_FILTER_GET_CLASS(filter)->get_image)
+       if (RS_FILTER_GET_CLASS(filter)->get_image && filter->enabled)
                image = RS_FILTER_GET_CLASS(filter)->get_image(filter, param);
        else
                image = rs_filter_get_image(filter->previous, param);
@@ -216,7 +217,7 @@
                gt = g_timer_new();
        count++;
 
-       if (RS_FILTER_GET_CLASS(filter)->get_image8)
+       if (RS_FILTER_GET_CLASS(filter)->get_image8 && filter->enabled)
                image = RS_FILTER_GET_CLASS(filter)->get_image8(filter, param);
        else if (filter->previous)
                image = rs_filter_get_image8(filter->previous, param);
@@ -299,3 +300,40 @@
 
        return height;
 }
+
+/**
+ * Set enabled state of a RSFilter
+ * @param filter A RSFilter
+ * @param enabled TRUE to enable filter, FALSE to disable
+ * @return Previous state
+ */
+gboolean
+rs_filter_set_enabled(RSFilter *filter, gboolean enabled)
+{
+       gboolean previous_state;
+
+       g_assert(RS_IS_FILTER(filter));
+
+       previous_state = filter->enabled;
+
+       if (filter->enabled != enabled)
+       {
+               filter->enabled = enabled;
+               rs_filter_changed(filter, RS_FILTER_CHANGED_PIXELDATA);
+       }
+
+       return previous_state;
+}
+
+/**
+ * Get enabled state of a RSFilter
+ * @param filter A RSFilter
+ * @return TRUE if filter is enabled, FALSE if disabled
+ */
+gboolean
+rs_filter_get_enabled(RSFilter *filter)
+{
+       g_assert(RS_IS_FILTER(filter));
+
+       return filter->enabled;
+}

Modified: trunk/librawstudio/rs-filter.h
===================================================================
--- trunk/librawstudio/rs-filter.h      2009-06-01 21:51:46 UTC (rev 2499)
+++ trunk/librawstudio/rs-filter.h      2009-06-01 23:26:16 UTC (rev 2500)
@@ -87,6 +87,7 @@
        GObject parent;
        RSFilter *previous;
        GSList *next_filters;
+       gboolean enabled;
 };
 
 struct _RSFilterClass {
@@ -163,6 +164,21 @@
  */
 extern gint rs_filter_get_height(RSFilter *filter);
 
+/**
+ * Set enabled state of a RSFilter
+ * @param filter A RSFilter
+ * @param enabled TRUE to enable filter, FALSE to disable
+ * @return Previous state
+ */
+extern gboolean rs_filter_set_enabled(RSFilter *filter, gboolean enabled);
+
+/**
+ * Get enabled state of a RSFilter
+ * @param filter A RSFilter
+ * @return TRUE if filter is enabled, FALSE if disabled
+ */
+extern gboolean rs_filter_get_enabled(RSFilter *filter);
+
 G_END_DECLS
 
 #endif /* RS_FILTER_H */


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

Reply via email to