From af976a75c35f2f998554829cab863ece71660b8b Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sat, 14 May 2016 00:56:26 +0200 Subject: [PATCH] app: add a GimpColorConfig to GimpDisplayShell Use the shell's color config for color managing the display and various auxiliary widgets attached to it, like the notebook tab widget and navigation popup. The config is currently just a reference to the global prefs config, so no behavior changed. --- app/display/gimpdisplayshell-filter-dialog.c | 10 ++---- app/display/gimpdisplayshell-filter.c | 7 +---- app/display/gimpdisplayshell-filter.h | 3 +- app/display/gimpdisplayshell-layer-select.c | 33 +++++++++++--------- app/display/gimpdisplayshell-profile.c | 7 +---- app/display/gimpdisplayshell.c | 21 +++++++++++-- app/display/gimpdisplayshell.h | 5 +++ app/display/gimpimagewindow.c | 3 ++ app/display/gimpnavigationeditor.c | 2 ++ 9 files changed, 53 insertions(+), 38 deletions(-) diff --git a/app/display/gimpdisplayshell-filter-dialog.c b/app/display/gimpdisplayshell-filter-dialog.c index bdaa9be309..cdd9fdc055 100644 --- a/app/display/gimpdisplayshell-filter-dialog.c +++ b/app/display/gimpdisplayshell-filter-dialog.c @@ -25,10 +25,8 @@ #include "display-types.h" -#include "config/gimpcoreconfig.h" - #include "core/gimp.h" -#include "core/gimpimage.h" +#include "core/gimpviewable.h" #include "widgets/gimpcolordisplayeditor.h" #include "widgets/gimphelp-ids.h" @@ -65,15 +63,13 @@ static void gimp_display_shell_filter_dialog_free (ColorDisplayDialog *cdd); GtkWidget * gimp_display_shell_filter_dialog_new (GimpDisplayShell *shell) { - GimpDisplayConfig *config; GimpImage *image; ColorDisplayDialog *cdd; GtkWidget *editor; g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL); - config = shell->display->config; - image = gimp_display_get_image (shell->display); + image = gimp_display_get_image (shell->display); cdd = g_slice_new0 (ColorDisplayDialog); @@ -123,7 +119,7 @@ gimp_display_shell_filter_dialog_new (GimpDisplayShell *shell) } editor = gimp_color_display_editor_new (shell->filter_stack, - GIMP_CORE_CONFIG (config)->color_management, + gimp_display_shell_get_color_config (shell), GIMP_COLOR_MANAGED (shell)); gtk_container_set_border_width (GTK_CONTAINER (editor), 12); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (cdd->dialog))), diff --git a/app/display/gimpdisplayshell-filter.c b/app/display/gimpdisplayshell-filter.c index b1fa58358e..bb69b3b85c 100644 --- a/app/display/gimpdisplayshell-filter.c +++ b/app/display/gimpdisplayshell-filter.c @@ -20,13 +20,10 @@ #include #include -#include "libgimpconfig/gimpconfig.h" #include "libgimpwidgets/gimpwidgets.h" #include "display-types.h" -#include "config/gimpcoreconfig.h" - #include "gimpdisplayshell.h" #include "gimpdisplayshell-expose.h" #include "gimpdisplayshell-filter.h" @@ -83,11 +80,9 @@ gimp_display_shell_has_filter (GimpDisplayShell *shell) } GimpColorDisplayStack * -gimp_display_shell_filter_new (GimpDisplayShell *shell, - GimpColorConfig *config) +gimp_display_shell_filter_new (GimpDisplayShell *shell) { g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL); - g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), NULL); #if 0 /* disabled because we use gimpdisplayshell-profile now, keep diff --git a/app/display/gimpdisplayshell-filter.h b/app/display/gimpdisplayshell-filter.h index af22c3d96d..aa490271d2 100644 --- a/app/display/gimpdisplayshell-filter.h +++ b/app/display/gimpdisplayshell-filter.h @@ -25,8 +25,7 @@ void gimp_display_shell_filter_set (GimpDisplayShell *shell, gboolean gimp_display_shell_has_filter (GimpDisplayShell *shell); GimpColorDisplayStack * - gimp_display_shell_filter_new (GimpDisplayShell *shell, - GimpColorConfig *config); + gimp_display_shell_filter_new (GimpDisplayShell *shell); #endif /* __GIMP_DISPLAY_SHELL_FILTER_H__ */ diff --git a/app/display/gimpdisplayshell-layer-select.c b/app/display/gimpdisplayshell-layer-select.c index 55a69fc690..0b52dcb503 100644 --- a/app/display/gimpdisplayshell-layer-select.c +++ b/app/display/gimpdisplayshell-layer-select.c @@ -33,6 +33,7 @@ #include "core/gimplayer.h" #include "widgets/gimpview.h" +#include "widgets/gimpviewrenderer.h" #include "gimpdisplay.h" #include "gimpdisplayshell.h" @@ -54,16 +55,17 @@ typedef struct /* local function prototypes */ -static LayerSelect * layer_select_new (GimpImage *image, - GimpLayer *layer, - gint view_size); -static void layer_select_destroy (LayerSelect *layer_select, - guint32 time); -static void layer_select_advance (LayerSelect *layer_select, - gint move); -static gboolean layer_select_events (GtkWidget *widget, - GdkEvent *event, - LayerSelect *layer_select); +static LayerSelect * layer_select_new (GimpDisplayShell *shell, + GimpImage *image, + GimpLayer *layer, + gint view_size); +static void layer_select_destroy (LayerSelect *layer_select, + guint32 time); +static void layer_select_advance (LayerSelect *layer_select, + gint move); +static gboolean layer_select_events (GtkWidget *widget, + GdkEvent *event, + LayerSelect *layer_select); /* public functions */ @@ -86,7 +88,7 @@ gimp_display_shell_layer_select_init (GimpDisplayShell *shell, if (! layer) return; - layer_select = layer_select_new (image, layer, + layer_select = layer_select_new (shell, image, layer, image->gimp->config->layer_preview_size); layer_select_advance (layer_select, move); @@ -102,9 +104,10 @@ gimp_display_shell_layer_select_init (GimpDisplayShell *shell, /* private functions */ static LayerSelect * -layer_select_new (GimpImage *image, - GimpLayer *layer, - gint view_size) +layer_select_new (GimpDisplayShell *shell, + GimpImage *image, + GimpLayer *layer, + gint view_size) { LayerSelect *layer_select; GtkWidget *frame1; @@ -155,6 +158,8 @@ layer_select_new (GimpImage *image, GIMP_TYPE_VIEW, GIMP_TYPE_LAYER, view_size, 1, FALSE); + gimp_view_renderer_set_color_config (GIMP_VIEW (layer_select->view)->renderer, + gimp_display_shell_get_color_config (shell)); gimp_view_set_viewable (GIMP_VIEW (layer_select->view), GIMP_VIEWABLE (layer)); gtk_container_add (GTK_CONTAINER (alignment), layer_select->view); diff --git a/app/display/gimpdisplayshell-profile.c b/app/display/gimpdisplayshell-profile.c index 3bb55570ab..745b7add88 100644 --- a/app/display/gimpdisplayshell-profile.c +++ b/app/display/gimpdisplayshell-profile.c @@ -30,8 +30,6 @@ #include "display-types.h" -#include "config/gimpcoreconfig.h" - #include "gegl/gimp-babl.h" #include "core/gimpimage.h" @@ -70,7 +68,6 @@ void gimp_display_shell_profile_update (GimpDisplayShell *shell) { GimpImage *image; - GimpColorConfig *config; GimpColorProfile *src_profile; const Babl *src_format; const Babl *dest_format; @@ -84,8 +81,6 @@ gimp_display_shell_profile_update (GimpDisplayShell *shell) if (! image) return; - config = GIMP_CORE_CONFIG (shell->display->config)->color_management; - src_profile = gimp_color_managed_get_color_profile (GIMP_COLOR_MANAGED (shell)); if (! src_profile) @@ -112,7 +107,7 @@ gimp_display_shell_profile_update (GimpDisplayShell *shell) shell->profile_transform = gimp_widget_get_color_transform (gtk_widget_get_toplevel (GTK_WIDGET (shell)), - config, + gimp_display_shell_get_color_config (shell), src_profile, &src_format, &dest_format); diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c index 5aa24782fa..4a777e2be7 100644 --- a/app/display/gimpdisplayshell.c +++ b/app/display/gimpdisplayshell.c @@ -405,6 +405,8 @@ gimp_display_shell_constructed (GObject *object) config = shell->display->config; image = gimp_display_get_image (shell->display); + shell->color_config = g_object_ref (GIMP_CORE_CONFIG (config)->color_management); + if (image) { image_width = gimp_image_get_width (image); @@ -745,10 +747,9 @@ gimp_display_shell_constructed (GObject *object) gtk_widget_show (GTK_WIDGET (shell->canvas)); - /* add display filter for color management */ + /* add display filters */ - filter = gimp_display_shell_filter_new (shell, - GIMP_CORE_CONFIG (config)->color_management); + filter = gimp_display_shell_filter_new (shell); if (filter) { @@ -816,6 +817,12 @@ gimp_display_shell_dispose (GObject *object) shell->checkerboard = NULL; } + if (shell->color_config) + { + g_object_unref (shell->color_config); + shell->color_config = NULL; + } + gimp_display_shell_profile_dispose (shell); if (shell->filter_buffer) @@ -1377,6 +1384,14 @@ gimp_display_shell_get_statusbar (GimpDisplayShell *shell) return GIMP_STATUSBAR (shell->statusbar); } +GimpColorConfig * +gimp_display_shell_get_color_config (GimpDisplayShell *shell) +{ + g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL); + + return shell->color_config; +} + void gimp_display_shell_present (GimpDisplayShell *shell) { diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h index 33692bc12c..8310baf2cc 100644 --- a/app/display/gimpdisplayshell.h +++ b/app/display/gimpdisplayshell.h @@ -150,6 +150,8 @@ struct _GimpDisplayShell GtkWidget *nav_popup; /* navigation popup */ GtkWidget *grid_dialog; /* grid configuration dialog */ + GimpColorConfig *color_config; /* color management settings */ + GimpColorTransform profile_transform; const Babl *profile_src_format; const Babl *profile_dest_format; @@ -253,6 +255,9 @@ void gimp_display_shell_move_overlay (GimpDisplayShell *shell, GimpImageWindow * gimp_display_shell_get_window (GimpDisplayShell *shell); GimpStatusbar * gimp_display_shell_get_statusbar (GimpDisplayShell *shell); +GimpColorConfig * gimp_display_shell_get_color_config + (GimpDisplayShell *shell); + void gimp_display_shell_present (GimpDisplayShell *shell); void gimp_display_shell_reconnect (GimpDisplayShell *shell); diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c index 9914b241aa..47baf9151c 100644 --- a/app/display/gimpimagewindow.c +++ b/app/display/gimpimagewindow.c @@ -54,6 +54,7 @@ #include "widgets/gimptoolbox.h" #include "widgets/gimpuimanager.h" #include "widgets/gimpview.h" +#include "widgets/gimpviewrenderer.h" #include "widgets/gimpwidgets-utils.h" #include "gimpdisplay.h" @@ -2297,6 +2298,8 @@ gimp_image_window_create_tab_label (GimpImageWindow *window, GIMP_TYPE_VIEW, GIMP_TYPE_IMAGE, GIMP_VIEW_SIZE_LARGE, 0, FALSE); gtk_widget_set_size_request (view, GIMP_VIEW_SIZE_LARGE, -1); + gimp_view_renderer_set_color_config (GIMP_VIEW (view)->renderer, + gimp_display_shell_get_color_config (shell)); gtk_box_pack_start (GTK_BOX (hbox), view, FALSE, FALSE, 0); gtk_widget_show (view); diff --git a/app/display/gimpnavigationeditor.c b/app/display/gimpnavigationeditor.c index 33a2e61c26..02390d25d9 100644 --- a/app/display/gimpnavigationeditor.c +++ b/app/display/gimpnavigationeditor.c @@ -365,6 +365,8 @@ gimp_navigation_editor_new_private (GimpMenuFactory *menu_factory, view->renderer->border_width); gimp_view_renderer_set_context (view->renderer, gimp_get_user_context (gimp)); + gimp_view_renderer_set_color_config (view->renderer, + gimp_display_shell_get_color_config (shell)); gimp_navigation_editor_set_shell (editor, shell);