diff --git a/ChangeLog b/ChangeLog index be108c56b5..7528455e92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-08-06 Sven Neumann + + * app/core/gimpimage.c: added missing static qualifier. + + * app/display/gimpdisplayshell.c + * app/display/gimpdisplayshell-handlers.c: implement the + GimpColorManaged interface and delegate it to GimpImage. + 2007-08-06 Manish Singh * configure.in: specify #include correctly for KEY_OK check. diff --git a/app/core/gimpimage.c b/app/core/gimpimage.c index 45124e3e11..a65701551d 100644 --- a/app/core/gimpimage.c +++ b/app/core/gimpimage.c @@ -186,7 +186,7 @@ static void gimp_image_channel_name_changed (GimpChannel *channel, static void gimp_image_channel_color_changed (GimpChannel *channel, GimpImage *image); -const guint8 * gimp_image_get_icc_profile (GimpColorManaged *managed, +static const guint8 * gimp_image_get_icc_profile (GimpColorManaged *managed, gsize *len); @@ -3763,7 +3763,7 @@ gimp_image_invalidate_channel_previews (GimpImage *image) NULL); } -const guint8 * +static const guint8 * gimp_image_get_icc_profile (GimpColorManaged *managed, gsize *len) { diff --git a/app/display/gimpdisplayshell-handlers.c b/app/display/gimpdisplayshell-handlers.c index ce91b87fc2..73faf9d198 100644 --- a/app/display/gimpdisplayshell-handlers.c +++ b/app/display/gimpdisplayshell-handlers.c @@ -20,6 +20,7 @@ #include +#include "libgimpcolor/gimpcolor.h" #include "libgimpwidgets/gimpwidgets.h" #include "display-types.h" @@ -79,6 +80,8 @@ static void gimp_display_shell_update_sample_point_handler(GimpImage *i GimpDisplayShell *shell); static void gimp_display_shell_invalidate_preview_handler (GimpImage *image, GimpDisplayShell *shell); +static void gimp_display_shell_profile_changed_handler (GimpColorManaged *image, + GimpDisplayShell *shell); static void gimp_display_shell_vectors_freeze_handler (GimpVectors *vectors, GimpDisplayShell *shell); @@ -167,6 +170,9 @@ gimp_display_shell_connect (GimpDisplayShell *shell) g_signal_connect (image, "invalidate-preview", G_CALLBACK (gimp_display_shell_invalidate_preview_handler), shell); + g_signal_connect (image, "profile-changed", + G_CALLBACK (gimp_display_shell_profile_changed_handler), + shell); shell->vectors_freeze_handler = gimp_container_add_handler (image->vectors, "freeze", @@ -316,6 +322,9 @@ gimp_display_shell_disconnect (GimpDisplayShell *shell) gimp_container_remove_handler (image->vectors, shell->vectors_freeze_handler); + g_signal_handlers_disconnect_by_func (image, + gimp_display_shell_profile_changed_handler, + shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_invalidate_preview_handler, shell); @@ -484,6 +493,13 @@ gimp_display_shell_invalidate_preview_handler (GimpImage *image, NULL); } +static void +gimp_display_shell_profile_changed_handler (GimpColorManaged *image, + GimpDisplayShell *shell) +{ + gimp_color_managed_profile_changed (GIMP_COLOR_MANAGED (shell)); +} + static void gimp_display_shell_vectors_freeze_handler (GimpVectors *vectors, GimpDisplayShell *shell) diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c index 451d39420e..7d7e1b358d 100644 --- a/app/display/gimpdisplayshell.c +++ b/app/display/gimpdisplayshell.c @@ -90,6 +90,8 @@ enum /* local function prototypes */ +static void gimp_color_managed_iface_init (GimpColorManagedInterface *iface); + static void gimp_display_shell_finalize (GObject *object); static void gimp_display_shell_set_property (GObject *object, guint property_id, @@ -121,10 +123,17 @@ static void gimp_display_shell_show_tooltip (GimpUIManager *manager, static void gimp_display_shell_hide_tooltip (GimpUIManager *manager, GimpDisplayShell *shell); +static const guint8 * gimp_display_shell_get_icc_profile + (GimpColorManaged *managed, + gsize *len); + G_DEFINE_TYPE_WITH_CODE (GimpDisplayShell, gimp_display_shell, GTK_TYPE_WINDOW, G_IMPLEMENT_INTERFACE (GIMP_TYPE_PROGRESS, - gimp_display_shell_progress_iface_init)) + gimp_display_shell_progress_iface_init) + G_IMPLEMENT_INTERFACE (GIMP_TYPE_COLOR_MANAGED, + gimp_color_managed_iface_init)) + #define parent_class gimp_display_shell_parent_class @@ -350,6 +359,12 @@ gimp_display_shell_init (GimpDisplayShell *shell) GIMP_HELP_IMAGE_WINDOW, NULL); } +static void +gimp_color_managed_iface_init (GimpColorManagedInterface *iface) +{ + iface->get_icc_profile = gimp_display_shell_get_icc_profile; +} + static void gimp_display_shell_finalize (GObject *object) { @@ -594,6 +609,15 @@ gimp_display_shell_hide_tooltip (GimpUIManager *manager, gimp_statusbar_pop (GIMP_STATUSBAR (shell->statusbar), "menu-tooltip"); } +static const guint8 * +gimp_display_shell_get_icc_profile (GimpColorManaged *managed, + gsize *len) +{ + GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (managed); + GimpImage *image = shell->display->image; + + return gimp_color_managed_get_icc_profile (GIMP_COLOR_MANAGED (image), len); +} /* public functions */ @@ -1098,6 +1122,8 @@ gimp_display_shell_reconnect (GimpDisplayShell *shell) g_signal_emit (shell, display_shell_signals[RECONNECT], 0); + gimp_color_managed_profile_changed (GIMP_COLOR_MANAGED (shell)); + gimp_display_shell_scale_setup (shell); gimp_display_shell_expose_full (shell); gimp_display_shell_scaled (shell);