[gimp] modules: use the new API in the lcms display filter, and some cleanup
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] modules: use the new API in the lcms display filter, and some cleanup
- Date: Wed, 6 May 2015 20:21:44 +0000 (UTC)
commit ed3f2daac2edc5e26740bb93938e30a61d4363aa
Author: Michael Natterer <mitch gimp org>
Date: Wed May 6 22:21:13 2015 +0200
modules: use the new API in the lcms display filter, and some cleanup
modules/display-filter-lcms.c | 220 +++++++++-------------------------------
1 files changed, 50 insertions(+), 170 deletions(-)
---
diff --git a/modules/display-filter-lcms.c b/modules/display-filter-lcms.c
index ba28f11..ea0c317 100644
--- a/modules/display-filter-lcms.c
+++ b/modules/display-filter-lcms.c
@@ -71,28 +71,28 @@ struct _CdisplayLcmsClass
};
-GType cdisplay_lcms_get_type (void);
+GType cdisplay_lcms_get_type (void);
-static void cdisplay_lcms_finalize (GObject *object);
+static void cdisplay_lcms_finalize (GObject *object);
-static GtkWidget * cdisplay_lcms_configure (GimpColorDisplay *display);
-static void cdisplay_lcms_convert_buffer (GimpColorDisplay *display,
- GeglBuffer *buffer,
- GeglRectangle *area);
-static void cdisplay_lcms_changed (GimpColorDisplay *display);
+static GtkWidget * cdisplay_lcms_configure (GimpColorDisplay *display);
+static void cdisplay_lcms_convert_buffer (GimpColorDisplay *display,
+ GeglBuffer *buffer,
+ GeglRectangle *area);
+static void cdisplay_lcms_changed (GimpColorDisplay *display);
-static cmsHPROFILE cdisplay_lcms_get_rgb_profile (CdisplayLcms *lcms);
-static cmsHPROFILE cdisplay_lcms_get_display_profile (CdisplayLcms *lcms);
+static GimpColorProfile cdisplay_lcms_get_rgb_profile (CdisplayLcms *lcms);
+static GimpColorProfile cdisplay_lcms_get_display_profile (CdisplayLcms *lcms);
-static void cdisplay_lcms_attach_labelled (GtkTable *table,
- gint row,
- const gchar *text,
- GtkWidget *widget);
-static void cdisplay_lcms_update_profile_label (CdisplayLcms *lcms,
- const gchar *name);
-static void cdisplay_lcms_notify_profile (GObject *config,
- GParamSpec *pspec,
- CdisplayLcms *lcms);
+static void cdisplay_lcms_attach_labelled (GtkTable *table,
+ gint row,
+ const gchar *text,
+ GtkWidget *widget);
+static void cdisplay_lcms_update_profile_label (CdisplayLcms *lcms,
+ const gchar *name);
+static void cdisplay_lcms_notify_profile (GObject *config,
+ GParamSpec *pspec,
+ CdisplayLcms *lcms);
static const GimpModuleInfo cdisplay_lcms_info =
@@ -164,23 +164,6 @@ cdisplay_lcms_finalize (GObject *object)
G_OBJECT_CLASS (cdisplay_lcms_parent_class)->finalize (object);
}
-static void
-cdisplay_lcms_profile_get_info (cmsHPROFILE profile,
- gchar **label,
- gchar **summary)
-{
- if (profile)
- {
- *label = gimp_lcms_profile_get_label (profile);
- *summary = gimp_lcms_profile_get_summary (profile);
- }
- else
- {
- *label = g_strdup (_("None"));
- *summary = NULL;
- }
-}
-
static GtkWidget *
cdisplay_lcms_configure (GimpColorDisplay *display)
{
@@ -271,13 +254,14 @@ cdisplay_lcms_convert_buffer (GimpColorDisplay *display,
static void
cdisplay_lcms_changed (GimpColorDisplay *display)
{
- CdisplayLcms *lcms = CDISPLAY_LCMS (display);
- GimpColorConfig *config = gimp_color_display_get_config (display);
+ CdisplayLcms *lcms = CDISPLAY_LCMS (display);
+ GimpColorConfig *config;
+ GimpColorProfile src_profile = NULL;
+ GimpColorProfile dest_profile = NULL;
+ GimpColorProfile proof_profile = NULL;
+ cmsUInt16Number alarmCodes[cmsMAXCHANNELS] = { 0, };
- cmsHPROFILE src_profile = NULL;
- cmsHPROFILE dest_profile = NULL;
- cmsHPROFILE proof_profile = NULL;
- cmsUInt16Number alarmCodes[cmsMAXCHANNELS] = { 0, };
+ config = gimp_color_display_get_config (display);
if (lcms->transform)
{
@@ -371,12 +355,12 @@ cdisplay_lcms_changed (GimpColorDisplay *display)
gimp_lcms_profile_close (src_profile);
}
-static cmsHPROFILE
+static GimpColorProfile
cdisplay_lcms_get_rgb_profile (CdisplayLcms *lcms)
{
GimpColorConfig *config;
GimpColorManaged *managed;
- cmsHPROFILE profile = NULL;
+ GimpColorProfile profile = NULL;
config = gimp_color_display_get_config (GIMP_COLOR_DISPLAY (lcms));
managed = gimp_color_display_get_managed (GIMP_COLOR_DISPLAY (lcms));
@@ -402,134 +386,21 @@ cdisplay_lcms_get_rgb_profile (CdisplayLcms *lcms)
return profile;
}
-static GdkScreen *
-cdisplay_lcms_get_screen (CdisplayLcms *lcms,
- gint *monitor)
+static GimpColorProfile
+cdisplay_lcms_get_display_profile (CdisplayLcms *lcms)
{
+ GimpColorConfig *config;
GimpColorManaged *managed;
- GdkScreen *screen;
+ GtkWidget *widget = NULL;
+ GimpColorProfile profile;
+ config = gimp_color_display_get_config (GIMP_COLOR_DISPLAY (lcms));
managed = gimp_color_display_get_managed (GIMP_COLOR_DISPLAY (lcms));
if (GTK_IS_WIDGET (managed))
- screen = gtk_widget_get_screen (GTK_WIDGET (managed));
- else
- screen = gdk_screen_get_default ();
-
- g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
-
- if (GTK_IS_WIDGET (managed) && gtk_widget_get_window (GTK_WIDGET (managed)))
- {
- GtkWidget *widget = GTK_WIDGET (managed);
-
- *monitor = gdk_screen_get_monitor_at_window (screen,
- gtk_widget_get_window (widget));
- }
- else
- {
- *monitor = 0;
- }
-
- return screen;
-}
-
-
-static cmsHPROFILE
-cdisplay_lcms_get_display_profile (CdisplayLcms *lcms)
-{
- GimpColorConfig *config;
- cmsHPROFILE profile = NULL;
-
- config = gimp_color_display_get_config (GIMP_COLOR_DISPLAY (lcms));
-
-#if defined GDK_WINDOWING_X11
- if (config->display_profile_from_gdk)
- {
- GdkScreen *screen;
- GdkAtom type = GDK_NONE;
- gint format = 0;
- gint nitems = 0;
- gint monitor = 0;
- gchar *atom_name;
- guchar *data = NULL;
-
- screen = cdisplay_lcms_get_screen (lcms, &monitor);
-
- if (monitor > 0)
- atom_name = g_strdup_printf ("_ICC_PROFILE_%d", monitor);
- else
- atom_name = g_strdup ("_ICC_PROFILE");
-
- if (gdk_property_get (gdk_screen_get_root_window (screen),
- gdk_atom_intern (atom_name, FALSE),
- GDK_NONE,
- 0, 64 * 1024 * 1024, FALSE,
- &type, &format, &nitems, &data) && nitems > 0)
- {
- profile = cmsOpenProfileFromMem (data, nitems);
- g_free (data);
- }
+ widget = GTK_WIDGET (managed);
- g_free (atom_name);
- }
-
-#elif defined GDK_WINDOWING_QUARTZ
- if (config->display_profile_from_gdk)
- {
- CMProfileRef prof = NULL;
- gint monitor = 0;
-
- cdisplay_lcms_get_screen (lcms, &monitor);
-
- CMGetProfileByAVID (monitor, &prof);
-
- if (prof)
- {
- CFDataRef data;
-
- data = CMProfileCopyICCData (NULL, prof);
- CMCloseProfile (prof);
-
- if (data)
- {
- UInt8 *buffer = g_malloc (CFDataGetLength (data));
-
- /* We cannot use CFDataGetBytesPtr(), because that returns
- * a const pointer where cmsOpenProfileFromMem wants a
- * non-const pointer.
- */
- CFDataGetBytes (data, CFRangeMake (0, CFDataGetLength (data)),
- buffer);
-
- profile = cmsOpenProfileFromMem (buffer, CFDataGetLength (data));
-
- g_free (buffer);
- CFRelease (data);
- }
- }
- }
-
-#elif defined G_OS_WIN32
- if (config->display_profile_from_gdk)
- {
- HDC hdc = GetDC (NULL);
-
- if (hdc)
- {
- gchar *path;
- gint32 len = 0;
-
- GetICMProfile (hdc, &len, NULL);
- path = g_new (gchar, len);
-
- if (GetICMProfile (hdc, &len, path))
- profile = cmsOpenProfileFromFile (path, "r");
-
- g_free (path);
- ReleaseDC (NULL, hdc);
- }
- }
-#endif
+ profile = gimp_widget_get_color_profile (widget);
if (! profile)
profile = gimp_color_config_get_display_profile (config, NULL);
@@ -569,11 +440,11 @@ static void
cdisplay_lcms_update_profile_label (CdisplayLcms *lcms,
const gchar *name)
{
- GimpColorConfig *config;
- GtkWidget *label;
- cmsHPROFILE profile = NULL;
- gchar *text = NULL;
- gchar *tooltip = NULL;
+ GimpColorConfig *config;
+ GtkWidget *label;
+ GimpColorProfile profile = NULL;
+ gchar *text;
+ gchar *tooltip;
config = gimp_color_display_get_config (GIMP_COLOR_DISPLAY (lcms));
@@ -599,7 +470,16 @@ cdisplay_lcms_update_profile_label (CdisplayLcms *lcms,
g_return_if_reached ();
}
- cdisplay_lcms_profile_get_info (profile, &text, &tooltip);
+ if (profile)
+ {
+ text = gimp_lcms_profile_get_label (profile);
+ tooltip = gimp_lcms_profile_get_summary (profile);
+ }
+ else
+ {
+ text = g_strdup (_("None"));
+ tooltip = NULL;
+ }
gtk_label_set_text (GTK_LABEL (label), text);
gimp_help_set_help_data (label, tooltip, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]