Author: abrander
Date: 2009-12-01 01:12:13 +0100 (Tue, 01 Dec 2009)
New Revision: 2774
Modified:
trunk/src/rs-preview-widget.c
Log:
Enabled RSPreviewWidget to request a specific colorspace (defaults to sRGB).
Modified: trunk/src/rs-preview-widget.c
===================================================================
--- trunk/src/rs-preview-widget.c 2009-11-30 23:34:35 UTC (rev 2773)
+++ trunk/src/rs-preview-widget.c 2009-12-01 00:12:13 UTC (rev 2774)
@@ -178,6 +178,8 @@
RSFilter *navigator_filter_render;
RSFilter *navigator_filter_end;
GtkWidget *navigator;
+
+ RSColorSpace *display_color_space;
};
/* Define the boiler plate stuff using the predefined macro */
@@ -384,6 +386,9 @@
preview->lightsout_window = NULL;
#endif
preview->prev_inside_image = FALSE;
+
+ preview->display_color_space = rs_color_space_new_singleton("RSSrgb");
+ g_object_ref(preview->display_color_space);
}
/**
@@ -615,6 +620,15 @@
rs_filter_set_recursive(preview->loupe_filter_end, "icc-profile",
profile, NULL);
rs_filter_set_recursive(preview->navigator_filter_end, "icc-profile",
profile, NULL);
+
+ /* FIXME: Implement this properly */
+ /* 1. Make this assept RSColorSpace */
+ /* 2. Remove the standard sRGB ICC profile (and others!) */
+ /* 3. Use RSSrgb instead */
+ /* 4. Assign the value to preview->display_color_space */
+// if (preview->display_color_space)
+// g_object_unref(preview->display_color_space);
+// preview->display_color_space = rs_color_space_icc_new_from_icc(profile);
}
/**
@@ -1355,6 +1369,7 @@
/* Clone, now so it cannot change while filters are
being called */
RSFilterRequest *new_request =
rs_filter_request_clone(preview->request[i]);
+
rs_filter_param_set_object(RS_FILTER_PARAM(new_request), "colorspace",
preview->display_color_space);
RSFilterResponse *response =
rs_filter_get_image8(preview->filter_end[i], new_request);
GdkPixbuf *buffer =
rs_filter_response_get_image8(response);
@@ -2394,13 +2409,16 @@
if (!preview->last_roi[view])
return FALSE;
- RSFilterResponse *response =
rs_filter_get_image(preview->filter_cache1[view], preview->request[view]);
+ RSFilterRequest *request =
rs_filter_request_clone(preview->request[view]);
+ rs_filter_param_set_object(RS_FILTER_PARAM(request), "colorspace",
preview->display_color_space);
+ RSFilterResponse *response =
rs_filter_get_image(preview->filter_cache1[view], request);
RS_IMAGE16 *image = rs_filter_response_get_image(response);
g_object_unref(response);
- response = rs_filter_get_image8(preview->filter_end[view],
preview->request[view]);
+ response = rs_filter_get_image8(preview->filter_end[view], request);
GdkPixbuf *buffer = rs_filter_response_get_image8(response);
g_object_unref(response);
+ g_object_unref(request);
if (!image)
return FALSE;
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit