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

Reply via email to