Author: post
Date: 2010-01-04 20:57:15 +0100 (Mon, 04 Jan 2010)
New Revision: 2971
Modified:
branches/rawstudio-ng-color/src/rs-loupe.c
branches/rawstudio-ng-color/src/rs-loupe.h
branches/rawstudio-ng-color/src/rs-preview-widget.c
Log:
Support DCP profiles in loupe view.
Modified: branches/rawstudio-ng-color/src/rs-loupe.c
===================================================================
--- branches/rawstudio-ng-color/src/rs-loupe.c 2010-01-04 18:51:17 UTC (rev
2970)
+++ branches/rawstudio-ng-color/src/rs-loupe.c 2010-01-04 19:57:15 UTC (rev
2971)
@@ -120,6 +120,18 @@
redraw(loupe);
}
+/**
+ * Set display colorspace
+ * @param loupe A RSLoupe
+ * @param colorspace An RSColorSpace that should be used to display the
content of the loupe
+ */
+void
+rs_loupe_set_colorspace(RSLoupe *loupe, RSColorSpace *display_color_space)
+{
+ g_assert(RS_IS_LOUPE(loupe));
+ loupe->display_color_space = display_color_space;
+}
+
static gboolean
expose(GtkWidget *widget, GdkEventExpose *event, RSLoupe *loupe)
{
@@ -214,6 +226,7 @@
roi.width = window_width;
roi.height = window_height;
rs_filter_request_set_roi(request, &roi);
+ rs_filter_param_set_object(RS_FILTER_PARAM(request), "colorspace",
loupe->display_color_space);
RSFilterResponse *response = rs_filter_get_image8(loupe->filter,
request);
GdkPixbuf *buffer = rs_filter_response_get_image8(response);
Modified: branches/rawstudio-ng-color/src/rs-loupe.h
===================================================================
--- branches/rawstudio-ng-color/src/rs-loupe.h 2010-01-04 18:51:17 UTC (rev
2970)
+++ branches/rawstudio-ng-color/src/rs-loupe.h 2010-01-04 19:57:15 UTC (rev
2971)
@@ -39,6 +39,7 @@
gint center_y;
gboolean left;
gboolean atop;
+ RSColorSpace *display_color_space;
} RSLoupe;
typedef struct {
@@ -68,6 +69,13 @@
*/
void rs_loupe_set_coord(RSLoupe *loupe, gint center_x, gint center_y);
+/**
+ * Set display colorspace
+ * @param loupe A RSLoupe
+ * @param display_color_space An RSColorSpace that should be used to display
the content of the loupe
+ */
+void rs_loupe_set_colorspace(RSLoupe *loupe, RSColorSpace
*display_color_space);
+
G_END_DECLS
#endif /* RS_LOUPE_H */
Modified: branches/rawstudio-ng-color/src/rs-preview-widget.c
===================================================================
--- branches/rawstudio-ng-color/src/rs-preview-widget.c 2010-01-04 18:51:17 UTC
(rev 2970)
+++ branches/rawstudio-ng-color/src/rs-preview-widget.c 2010-01-04 19:57:15 UTC
(rev 2971)
@@ -171,8 +171,10 @@
gboolean loupe_enabled;
RSLoupe *loupe;
RSFilter *loupe_filter_cache;
+ RSFilter *loupe_transform_input;
+ RSFilter *loupe_filter_dcp;
RSFilter *loupe_filter_denoise;
- RSFilter *loupe_filter_render;
+ RSFilter *loupe_transform_display;
RSFilter *loupe_filter_end;
RSFilter *navigator_filter_scale;
@@ -367,9 +369,11 @@
rs_filter_set_label(preview->filter_resample[1], "RSPreviewWidget-1");
preview->loupe_filter_cache = rs_filter_new("RSCache", NULL);
- preview->loupe_filter_denoise = rs_filter_new("RSDenoise",
preview->loupe_filter_cache);
- preview->loupe_filter_render = rs_filter_new("RSBasicRender",
preview->loupe_filter_denoise);
- preview->loupe_filter_end = preview->loupe_filter_render;
+ preview->loupe_transform_input = rs_filter_new("RSColorspaceTransform",
preview->loupe_filter_cache);
+ preview->loupe_filter_dcp = rs_filter_new("RSDcp",
preview->loupe_transform_input);
+ preview->loupe_filter_denoise = rs_filter_new("RSDenoise",
preview->loupe_filter_dcp);
+ preview->loupe_transform_display =
rs_filter_new("RSColorspaceTransform", preview->loupe_filter_denoise);
+ preview->loupe_filter_end = preview->loupe_transform_display;
preview->loupe = rs_loupe_new();
g_object_set(preview->loupe_filter_cache, "ignore-roi", TRUE, NULL);
preview->photo = NULL;
@@ -544,7 +548,9 @@
rs_filter_set_previous(preview->loupe_filter_cache,
preview->filter_input);
/* FIXME: view is hardcoded to 0 */
+ g_object_set(preview->loupe_filter_dcp, "profile",
rs_photo_get_dcp_profile(preview->photo), NULL);
rs_filter_set_recursive(preview->loupe_filter_end,
"settings", preview->photo->settings[preview->snapshot[0]], NULL);
+ rs_loupe_set_colorspace(preview->loupe,
preview->display_color_space);
gtk_widget_show_all(GTK_WIDGET(preview->loupe));
}
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit