Esempio n. 1
0
static GdkScreen *
cdisplay_lcms_get_screen (CdisplayLcms *lcms,
                          gint         *monitor)
{
  GimpColorManaged *managed;
  GdkScreen        *screen;

  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;
}
Esempio n. 2
0
static void
cdisplay_lcms_changed (GimpColorDisplay *display)
{
  CdisplayLcms     *lcms   = CDISPLAY_LCMS (display);
  GtkWidget        *widget = NULL;
  GimpColorConfig  *config;
  GimpColorManaged *managed;
  GimpColorProfile *src_profile;

  if (lcms->transform)
    {
      g_object_unref (lcms->transform);
      lcms->transform = NULL;
    }

  config  = gimp_color_display_get_config (display);
  managed = gimp_color_display_get_managed (display);

  if (! config || ! managed)
    return;

  if (GTK_IS_WIDGET (managed))
    widget = gtk_widget_get_toplevel (GTK_WIDGET (managed));

  src_profile = gimp_color_managed_get_color_profile (managed);

  lcms->transform =
    gimp_widget_get_color_transform (widget,
                                     config, src_profile,
                                     babl_format ("R'G'B'A float"),
                                     babl_format ("R'G'B'A float"));
}
Esempio n. 3
0
static cmsHPROFILE
cdisplay_lcms_get_rgb_profile (CdisplayLcms *lcms)
{
  GimpColorConfig  *config;
  GimpColorManaged *managed;
  cmsHPROFILE       profile = NULL;

  managed = gimp_color_display_get_managed (GIMP_COLOR_DISPLAY (lcms));

  if (managed)
    {
      gsize         len;
      const guint8 *data = gimp_color_managed_get_icc_profile (managed, &len);

      if (data)
        profile = cmsOpenProfileFromMem ((gpointer) data, len);

      if (profile &&
          ! cdisplay_lcms_profile_is_rgb (profile))
        {
          cmsCloseProfile (profile);
          profile = NULL;
        }
    }

  if (! profile)
    {
      config = gimp_color_display_get_config (GIMP_COLOR_DISPLAY (lcms));

      if (config->rgb_profile)
        profile = cmsOpenProfileFromFile (config->rgb_profile, "r");
    }

  return profile;
}
Esempio n. 4
0
static void
cdisplay_lcms_update_profile_label (CdisplayLcms *lcms,
                                    const gchar  *name)
{
  GimpColorConfig  *config;
  GimpColorManaged *managed;
  GtkWidget        *label;
  GimpColorProfile *profile = NULL;
  const gchar      *text;
  const gchar      *tooltip;

  config  = gimp_color_display_get_config (GIMP_COLOR_DISPLAY (lcms));
  managed = gimp_color_display_get_managed (GIMP_COLOR_DISPLAY (lcms));

  label = g_object_get_data (G_OBJECT (lcms), name);

  if (! label)
    return;

  if (strcmp (name, "rgb-profile") == 0)
    {
      profile = gimp_color_managed_get_color_profile (managed);

      if (profile)
        g_object_ref (profile);
    }
  else if (g_str_has_prefix (name, "display-profile"))
    {
      profile = cdisplay_lcms_get_display_profile (lcms);
    }
  else if (strcmp (name, "printer-profile") == 0)
    {
      profile = gimp_color_config_get_simulation_color_profile (config, NULL);
    }
  else
    {
      g_return_if_reached ();
    }

  if (profile)
    {
      text    = gimp_color_profile_get_label (profile);
      tooltip = gimp_color_profile_get_summary (profile);
    }
  else
    {
      text    = _("None");
      tooltip = NULL;
    }

  gtk_label_set_text (GTK_LABEL (label), text);
  gimp_help_set_help_data (label, tooltip, NULL);

  if (profile)
    g_object_unref (profile);
}
Esempio n. 5
0
static GimpColorProfile *
cdisplay_lcms_get_display_profile (CdisplayLcms *lcms)
{
  GimpColorConfig  *config;
  GimpColorManaged *managed;
  GtkWidget        *widget  = NULL;
  GimpColorProfile *profile = NULL;

  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))
    widget = gtk_widget_get_toplevel (GTK_WIDGET (managed));

  if (gimp_color_config_get_display_profile_from_gdk (config))
    profile = gimp_widget_get_color_profile (widget);

  if (! profile)
    profile = gimp_color_config_get_display_color_profile (config, NULL);

  return profile;
}