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")); }
static void gimp_view_renderer_transform_create (GimpViewRenderer *renderer, GtkWidget *widget, GeglBuffer *src_buffer, GeglBuffer *dest_buffer) { if (GIMP_IS_COLOR_MANAGED (renderer->viewable)) { GimpColorManaged *managed = GIMP_COLOR_MANAGED (renderer->viewable); GimpPickable *pickable = GIMP_PICKABLE (renderer->viewable); GimpColorProfile *profile; profile = gimp_color_managed_get_color_profile (managed); if (profile) { GimpImage *image = gimp_pickable_get_image (pickable); GimpColorConfig *config = image->gimp->config->color_management; renderer->profile_src_format = gegl_buffer_get_format (src_buffer); renderer->profile_dest_format = gegl_buffer_get_format (dest_buffer); renderer->profile_transform = gimp_widget_get_color_transform (widget, config, profile, &renderer->profile_src_format, &renderer->profile_dest_format); } } }
static void gimp_fg_bg_view_create_transform (GimpFgBgView *view) { if (view->color_config) { static GimpColorProfile *profile = NULL; if (G_UNLIKELY (! profile)) profile = gimp_color_profile_new_rgb_srgb (); view->transform = gimp_widget_get_color_transform (GTK_WIDGET (view), view->color_config, profile, babl_format ("R'G'B'A double"), babl_format ("R'G'B'A double")); } }