Author: post
Date: 2010-05-26 19:24:33 +0200 (Wed, 26 May 2010)
New Revision: 3381
Modified:
trunk/librawstudio/rs-profile-factory.c
trunk/librawstudio/rs-profile-factory.h
trunk/librawstudio/rs-profile-selector.c
trunk/src/rs-toolbox.c
Log:
Add possibility of using Embedded profiles. Loads 8 bit images as sRGB.
Modified: trunk/librawstudio/rs-profile-factory.c
===================================================================
--- trunk/librawstudio/rs-profile-factory.c 2010-05-26 17:05:55 UTC (rev
3380)
+++ trunk/librawstudio/rs-profile-factory.c 2010-05-26 17:24:33 UTC (rev
3381)
@@ -20,7 +20,6 @@
#include "rs-dcp-file.h"
#include "rs-profile-factory.h"
#include "rs-profile-factory-model.h"
-#include "rs-icc-profile.h"
#include "config.h"
#include "rs-utils.h"
@@ -132,11 +131,11 @@
rs_profile_factory_load_profiles(factory, search_path, TRUE, FALSE);
GtkTreeIter iter;
- RSIccProfile *srgb = rs_icc_profile_new_from_file(PACKAGE_DATA_DIR "/"
PACKAGE "/profiles/sRGB.icc");
gtk_list_store_prepend(factory->profiles, &iter);
gtk_list_store_set(factory->profiles, &iter,
FACTORY_MODEL_COLUMN_TYPE, FACTORY_MODEL_TYPE_INFO,
- FACTORY_MODEL_COLUMN_PROFILE, srgb,
+ FACTORY_MODEL_COLUMN_PROFILE, NULL,
+ FACTORY_MODEL_COLUMN_ID, "_embedded_image_profile_",
-1);
gtk_list_store_prepend(factory->profiles, &iter);
gtk_list_store_set(factory->profiles, &iter,
@@ -270,3 +269,27 @@
return ret;
}
+
+void
+rs_profile_factory_set_embedded_profile(RSProfileFactory *factory, const
RSIccProfile *profile)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *treemodel = GTK_TREE_MODEL(factory->profiles);
+ if (gtk_tree_model_get_iter_first(treemodel, &iter))
+ {
+ do
+ {
+ gchar *model_id;
+ gtk_tree_model_get(treemodel, &iter,
+ FACTORY_MODEL_COLUMN_ID, &model_id,
+ -1);
+ if (model_id && g_str_equal("_embedded_image_profile_",
model_id))
+ {
+ gtk_list_store_set(factory->profiles, &iter,
+ FACTORY_MODEL_COLUMN_PROFILE, profile,
+ -1);
+ }
+ } while (gtk_tree_model_iter_next(treemodel, &iter));
+ }
+
+}
Modified: trunk/librawstudio/rs-profile-factory.h
===================================================================
--- trunk/librawstudio/rs-profile-factory.h 2010-05-26 17:05:55 UTC (rev
3380)
+++ trunk/librawstudio/rs-profile-factory.h 2010-05-26 17:24:33 UTC (rev
3381)
@@ -22,6 +22,7 @@
#include <glib-object.h>
#include "rs-dcp-file.h"
+#include "rs-icc-profile.h"
G_BEGIN_DECLS
@@ -66,6 +67,8 @@
RSDcpFile *rs_profile_factory_find_from_id(RSProfileFactory *factory, const
gchar *path);
+void rs_profile_factory_set_embedded_profile(RSProfileFactory *factory, const
RSIccProfile *profile);
+
G_END_DECLS
#endif /* RS_PROFILE_FACTORY_H */
Modified: trunk/librawstudio/rs-profile-selector.c
===================================================================
--- trunk/librawstudio/rs-profile-selector.c 2010-05-26 17:05:55 UTC (rev
3380)
+++ trunk/librawstudio/rs-profile-selector.c 2010-05-26 17:24:33 UTC (rev
3381)
@@ -238,7 +238,10 @@
g_value_set_string(value, _("Add profile ..."));
break;
case FACTORY_MODEL_TYPE_INFO:
- g_value_set_string(value, _("(Select
Profile)"));
+ if (profile)
+ g_value_set_string(value, _("Embedded
Profile"));
+ else
+ g_value_set_string(value, _("(Select
Profile)"));
break;
}
}
Modified: trunk/src/rs-toolbox.c
===================================================================
--- trunk/src/rs-toolbox.c 2010-05-26 17:05:55 UTC (rev 3380)
+++ trunk/src/rs-toolbox.c 2010-05-26 17:24:33 UTC (rev 3381)
@@ -993,6 +993,27 @@
toolbox->mute_from_sliders = FALSE;
+ /* Enable Embedded Profile, if present */
+ gboolean embedded_present = FALSE;
+ if (photo && photo->input_response)
+ {
+ RSProfileFactory *factory = rs_profile_factory_new_default();
+ RSColorSpace *input_space =
rs_filter_param_get_object_with_type(RS_FILTER_PARAM(photo->input_response),
"embedded-colorspace", RS_TYPE_COLOR_SPACE);
+
+ if (input_space)
+ {
+ const RSIccProfile *icc_profile;
+ icc_profile =
rs_color_space_get_icc_profile(input_space, TRUE);
+
+ rs_profile_factory_set_embedded_profile(factory,
icc_profile);
+ embedded_present = TRUE;
+ }
+ else
+ {
+ rs_profile_factory_set_embedded_profile(factory, NULL);
+ }
+ }
+
/* Update profile selector */
if (photo && photo->metadata)
{
@@ -1021,8 +1042,11 @@
if (photo)
{
RSDcpFile *dcp_profile = rs_photo_get_dcp_profile(photo);
+
if (dcp_profile)
rs_profile_selector_select_profile(toolbox->selector,
dcp_profile);
+ else if (embedded_present)
+
gtk_combo_box_set_active(GTK_COMBO_BOX(toolbox->selector), 0);
else
gtk_combo_box_set_active(GTK_COMBO_BOX(toolbox->selector), 1);
/* FIXME: support ICC profiles too */
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit