Author: abrander
Date: 2009-12-31 03:51:02 +0100 (Thu, 31 Dec 2009)
New Revision: 2951

Modified:
   branches/rawstudio-ng-color/src/application.c
   branches/rawstudio-ng-color/src/rs-preview-widget.c
Log:
Enabled VERY basic DCP support.

Modified: branches/rawstudio-ng-color/src/application.c
===================================================================
--- branches/rawstudio-ng-color/src/application.c       2009-12-31 02:50:18 UTC 
(rev 2950)
+++ branches/rawstudio-ng-color/src/application.c       2009-12-31 02:51:02 UTC 
(rev 2951)
@@ -223,6 +223,7 @@
        /* We need this for 100% zoom */
        g_object_set(cache, "ignore-roi", TRUE, NULL);
 
+       rs_filter_set_recursive(rs->filter_input, "color-space", 
rs_color_space_new_singleton("RSProphoto"), NULL);
        rs->filter_end = cache;
 
        return(rs);

Modified: branches/rawstudio-ng-color/src/rs-preview-widget.c
===================================================================
--- branches/rawstudio-ng-color/src/rs-preview-widget.c 2009-12-31 02:50:18 UTC 
(rev 2950)
+++ branches/rawstudio-ng-color/src/rs-preview-widget.c 2009-12-31 02:51:02 UTC 
(rev 2951)
@@ -146,7 +146,9 @@
        RSFilter *filter_cache1[MAX_VIEWS];
        RSFilter *filter_denoise[MAX_VIEWS];
        RSFilter *filter_cache2[MAX_VIEWS];
-       RSFilter *filter_render[MAX_VIEWS];
+       RSFilter *filter_transform_input[MAX_VIEWS];
+       RSFilter *filter_dcp[MAX_VIEWS];
+       RSFilter *filter_transform_display[MAX_VIEWS];
        RSFilter *filter_mask[MAX_VIEWS];
        RSFilter *filter_cache3[MAX_VIEWS];
        RSFilter *filter_end[MAX_VIEWS]; /* For convenience */
@@ -212,6 +214,7 @@
 static gboolean button(GtkWidget *widget, GdkEventButton *event, 
RSPreviewWidget *preview);
 static gboolean motion(GtkWidget *widget, GdkEventMotion *event, gpointer 
user_data);
 static gboolean leave(GtkWidget *widget, GdkEventCrossing *event, gpointer 
user_data);
+static void dcp_profile_changed(RS_PHOTO *photo, RSDcpFile *dcp, 
RSPreviewWidget *preview);
 static void settings_changed(RS_PHOTO *photo, RSSettingsMask mask, 
RSPreviewWidget *preview);
 static void filter_changed(RSFilter *filter, RSFilterChangedMask mask, 
RSPreviewWidget *preview);
 static gboolean get_image_coord(RSPreviewWidget *preview, gint view, const 
gint x, const gint y, gint *scaled_x, gint *scaled_y, gint *real_x, gint 
*real_y, gint *max_w, gint *max_h);
@@ -338,8 +341,10 @@
                preview->filter_cache1[i] = rs_filter_new("RSCache", 
preview->filter_resample[i]);
                preview->filter_denoise[i] = rs_filter_new("RSDenoise", 
preview->filter_cache1[i]);
                preview->filter_cache2[i] = rs_filter_new("RSCache", 
preview->filter_denoise[i]);
-               preview->filter_render[i] = rs_filter_new("RSBasicRender", 
preview->filter_cache2[i]);
-               preview->filter_mask[i] = rs_filter_new("RSExposureMask", 
preview->filter_render[i]);
+               preview->filter_transform_input[i] = 
rs_filter_new("RSColorspaceTransform", preview->filter_cache2[i]);
+               preview->filter_dcp[i] = rs_filter_new("RSDcp", 
preview->filter_transform_input[i]);
+               preview->filter_transform_display[i] = 
rs_filter_new("RSColorspaceTransform", preview->filter_dcp[i]);
+               preview->filter_mask[i] = rs_filter_new("RSExposureMask", 
preview->filter_transform_display[i]);
                preview->filter_cache3[i] = rs_filter_new("RSCache", 
preview->filter_mask[i]);
                preview->filter_end[i] = preview->filter_cache3[i];
                g_signal_connect(preview->filter_end[i], "changed", 
G_CALLBACK(filter_changed), preview);
@@ -577,6 +582,7 @@
        if (preview->photo)
        {
                g_signal_connect(G_OBJECT(preview->photo), "settings-changed", 
G_CALLBACK(settings_changed), preview);
+               g_signal_connect(G_OBJECT(preview->photo), "profile-changed", 
G_CALLBACK(dcp_profile_changed), preview);
                for(view=0;view<MAX_VIEWS;view++) 
                {
                        rs_filter_request_set_quick(preview->request[view], 
TRUE);
@@ -2213,6 +2219,18 @@
 }
 
 static void
+dcp_profile_changed(RS_PHOTO *photo, RSDcpFile *dcp, RSPreviewWidget *preview)
+{
+       gint view;
+
+       if (photo == preview->photo)
+       {
+               for(view=0;view<MAX_VIEWS;view++)
+               g_object_set(preview->filter_dcp[view], "profile", dcp, NULL);
+       }
+}
+
+static void
 filter_changed(RSFilter *filter, RSFilterChangedMask mask, RSPreviewWidget 
*preview)
 {
        gint view;


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

Reply via email to