[gimp] app: prepare the color profile dialog for doing RGB <-> GRAY conversion
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: prepare the color profile dialog for doing RGB <-> GRAY conversion
- Date: Sat, 30 Apr 2016 16:36:24 +0000 (UTC)
commit 1cf04cc4b98af3f5df87ffd5bffcbb2f3a7843ec
Author: Michael Natterer <mitch gimp org>
Date: Fri Apr 29 12:53:43 2016 +0200
app: prepare the color profile dialog for doing RGB <-> GRAY conversion
Get rid of individual constructors for assign and convert, instead
have one constructor that takes a dialog type enum. No new features
yet in this commit.
app/actions/image-commands.c | 18 ++--
app/dialogs/color-profile-dialog.c | 217 +++++++++++++++++-------------------
app/dialogs/color-profile-dialog.h | 21 ++--
3 files changed, 127 insertions(+), 129 deletions(-)
---
diff --git a/app/actions/image-commands.c b/app/actions/image-commands.c
index 6a25535..94141ff 100644
--- a/app/actions/image-commands.c
+++ b/app/actions/image-commands.c
@@ -330,10 +330,11 @@ image_color_profile_assign_cmd_callback (GtkAction *action,
if (! dialog)
{
- dialog = color_profile_assign_dialog_new (image,
- action_data_get_context (data),
- widget,
- GIMP_PROGRESS (display));
+ dialog = color_profile_dialog_new (COLOR_PROFILE_DIALOG_ASSIGN_PROFILE,
+ image,
+ action_data_get_context (data),
+ widget,
+ GIMP_PROGRESS (display));
g_object_set_data (G_OBJECT (image),
IMAGE_PROFILE_ASSIGN_DIALOG_KEY, dialog);
@@ -369,10 +370,11 @@ image_color_profile_convert_cmd_callback (GtkAction *action,
if (! dialog)
{
- dialog = color_profile_convert_dialog_new (image,
- action_data_get_context (data),
- widget,
- GIMP_PROGRESS (display));
+ dialog = color_profile_dialog_new (COLOR_PROFILE_DIALOG_CONVERT_TO_PROFILE,
+ image,
+ action_data_get_context (data),
+ widget,
+ GIMP_PROGRESS (display));
g_object_set_data (G_OBJECT (image),
IMAGE_PROFILE_CONVERT_DIALOG_KEY, dialog);
diff --git a/app/dialogs/color-profile-dialog.c b/app/dialogs/color-profile-dialog.c
index aa32c6c..f19cbcc 100644
--- a/app/dialogs/color-profile-dialog.c
+++ b/app/dialogs/color-profile-dialog.c
@@ -58,28 +58,23 @@ typedef struct
GtkWidget *combo;
GtkWidget *dest_view;
+ ColorProfileDialogType dialog_type;
GimpImage *image;
GimpProgress *progress;
GimpColorConfig *config;
- gboolean convert;
GimpColorRenderingIntent intent;
gboolean bpc;
} ProfileDialog;
-static ProfileDialog * color_profile_dialog_new (GimpImage *image,
- GimpContext *context,
- GtkWidget *parent,
- GimpProgress *progress,
- gboolean convert);
-static GtkWidget * color_profile_combo_box_new (ProfileDialog *dialog);
-static void color_profile_dialog_response (GtkWidget *widget,
- gint response_id,
- ProfileDialog *dialog);
-static void color_profile_dest_changed (GtkWidget *combo,
- ProfileDialog *dialog);
-static void color_profile_dialog_free (ProfileDialog *dialog);
+static GtkWidget * color_profile_combo_box_new (ProfileDialog *dialog);
+static void color_profile_dialog_response (GtkWidget *widget,
+ gint response_id,
+ ProfileDialog *dialog);
+static void color_profile_dest_changed (GtkWidget *combo,
+ ProfileDialog *dialog);
+static void color_profile_dialog_free (ProfileDialog *dialog);
/* defaults */
@@ -91,40 +86,11 @@ static gboolean saved_bpc = FALSE;
/* public functions */
GtkWidget *
-color_profile_assign_dialog_new (GimpImage *image,
- GimpContext *context,
- GtkWidget *parent,
- GimpProgress *progress)
-{
- ProfileDialog *dialog;
-
- dialog = color_profile_dialog_new (image, context, parent, progress, FALSE);
-
- return dialog ? dialog->dialog : NULL;
-}
-
-GtkWidget *
-color_profile_convert_dialog_new (GimpImage *image,
- GimpContext *context,
- GtkWidget *parent,
- GimpProgress *progress)
-{
- ProfileDialog *dialog;
-
- dialog = color_profile_dialog_new (image, context, parent, progress, TRUE);
-
- return dialog ? dialog->dialog : NULL;
-}
-
-
-/* private functions */
-
-static ProfileDialog *
-color_profile_dialog_new (GimpImage *image,
- GimpContext *context,
- GtkWidget *parent,
- GimpProgress *progress,
- gboolean convert)
+color_profile_dialog_new (ColorProfileDialogType dialog_type,
+ GimpImage *image,
+ GimpContext *context,
+ GtkWidget *parent,
+ GimpProgress *progress)
{
ProfileDialog *dialog;
GtkWidget *frame;
@@ -140,10 +106,10 @@ color_profile_dialog_new (GimpImage *image,
dialog = g_slice_new0 (ProfileDialog);
- dialog->image = image;
- dialog->progress = progress;
- dialog->config = image->gimp->config->color_management;
- dialog->convert = convert;
+ dialog->dialog_type = dialog_type;
+ dialog->image = image;
+ dialog->progress = progress;
+ dialog->config = image->gimp->config->color_management;
if (saved_intent == -1)
{
@@ -156,39 +122,47 @@ color_profile_dialog_new (GimpImage *image,
dialog->bpc = saved_bpc;
}
- if (convert)
+ switch (dialog_type)
{
+ case COLOR_PROFILE_DIALOG_ASSIGN_PROFILE:
dialog->dialog =
gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context,
- _("Convert to ICC Color Profile"),
- "gimp-image-color-profile-convert",
+ _("Assign ICC Color Profile"),
+ "gimp-image-color-profile-assign",
NULL,
- _("Convert the image to a color profile"),
+ _("Assign a color profile to the image"),
parent,
gimp_standard_help_func,
- GIMP_HELP_IMAGE_COLOR_PROFILE_CONVERT,
+ GIMP_HELP_IMAGE_COLOR_PROFILE_ASSIGN,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_CONVERT, GTK_RESPONSE_OK,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ _("_Assign"), GTK_RESPONSE_OK,
NULL);
- }
- else
- {
+ break;
+
+ case COLOR_PROFILE_DIALOG_CONVERT_TO_PROFILE:
dialog->dialog =
gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context,
- _("Assign ICC Color Profile"),
- "gimp-image-color-profile-assign",
+ _("Convert to ICC Color Profile"),
+ "gimp-image-color-profile-convert",
NULL,
- _("Assign a color profile to the image"),
+ _("Convert the image to a color profile"),
parent,
gimp_standard_help_func,
- GIMP_HELP_IMAGE_COLOR_PROFILE_ASSIGN,
+ GIMP_HELP_IMAGE_COLOR_PROFILE_CONVERT,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- _("_Assign"), GTK_RESPONSE_OK,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_CONVERT, GTK_RESPONSE_OK,
NULL);
+ break;
+
+ case COLOR_PROFILE_DIALOG_CONVERT_TO_RGB:
+ break;
+
+ case COLOR_PROFILE_DIALOG_CONVERT_TO_GRAY:
+ break;
}
gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog->dialog),
@@ -221,7 +195,8 @@ color_profile_dialog_new (GimpImage *image,
gtk_container_add (GTK_CONTAINER (frame), label);
gtk_widget_show (label);
- frame = gimp_frame_new (convert ? _("Convert to") : _("Assign"));
+ frame = gimp_frame_new (dialog_type == COLOR_PROFILE_DIALOG_ASSIGN_PROFILE ?
+ _("Assign") : _("Convert to"));
gtk_box_pack_start (GTK_BOX (dialog->main_vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
@@ -247,7 +222,7 @@ color_profile_dialog_new (GimpImage *image,
color_profile_dest_changed (dialog->combo, dialog);
- if (convert)
+ if (dialog_type != COLOR_PROFILE_DIALOG_ASSIGN_PROFILE)
{
GtkWidget *vbox;
GtkWidget *hbox;
@@ -288,9 +263,12 @@ color_profile_dialog_new (GimpImage *image,
&dialog->bpc);
}
- return dialog;
+ return dialog->dialog;
}
+
+/* private functions */
+
static GtkWidget *
color_profile_combo_box_new (ProfileDialog *dialog)
{
@@ -396,50 +374,63 @@ color_profile_dialog_response (GtkWidget *widget,
if (success)
{
- if (dialog->convert)
- {
- GimpProgress *progress;
- const gchar *label;
-
- label = gimp_color_profile_get_label (dest_profile);
-
- progress = gimp_progress_start (dialog->progress, FALSE,
- _("Converting to '%s'"), label);
-
- success = gimp_image_convert_color_profile (dialog->image,
- dest_profile,
- dialog->intent,
- dialog->bpc,
- progress,
- &error);
-
- if (progress)
- gimp_progress_end (progress);
-
- if (success)
- {
- saved_intent = dialog->intent;
- saved_bpc = dialog->bpc;
- }
- }
- else
+ switch (dialog->dialog_type)
{
- gimp_image_undo_group_start (dialog->image,
- GIMP_UNDO_GROUP_PARASITE_ATTACH,
- _("Assign color profile"));
-
- success = gimp_image_set_color_profile (dialog->image,
- dest_profile,
- &error);
-
- /* omg... */
- if (success)
- gimp_image_parasite_detach (dialog->image, "icc-profile-name");
-
- gimp_image_undo_group_end (dialog->image);
-
- if (! success)
- gimp_image_undo (dialog->image);
+ case COLOR_PROFILE_DIALOG_ASSIGN_PROFILE:
+ {
+ gimp_image_undo_group_start (dialog->image,
+ GIMP_UNDO_GROUP_PARASITE_ATTACH,
+ _("Assign color profile"));
+
+ success = gimp_image_set_color_profile (dialog->image,
+ dest_profile,
+ &error);
+
+ /* omg... */
+ if (success)
+ gimp_image_parasite_detach (dialog->image,
+ "icc-profile-name");
+
+ gimp_image_undo_group_end (dialog->image);
+
+ if (! success)
+ gimp_image_undo (dialog->image);
+ }
+ break;
+
+ case COLOR_PROFILE_DIALOG_CONVERT_TO_PROFILE:
+ {
+ GimpProgress *progress;
+ const gchar *label;
+
+ label = gimp_color_profile_get_label (dest_profile);
+
+ progress = gimp_progress_start (dialog->progress, FALSE,
+ _("Converting to '%s'"), label);
+
+ success = gimp_image_convert_color_profile (dialog->image,
+ dest_profile,
+ dialog->intent,
+ dialog->bpc,
+ progress,
+ &error);
+
+ if (progress)
+ gimp_progress_end (progress);
+
+ if (success)
+ {
+ saved_intent = dialog->intent;
+ saved_bpc = dialog->bpc;
+ }
+ }
+ break;
+
+ case COLOR_PROFILE_DIALOG_CONVERT_TO_RGB:
+ break;
+
+ case COLOR_PROFILE_DIALOG_CONVERT_TO_GRAY:
+ break;
}
if (success)
diff --git a/app/dialogs/color-profile-dialog.h b/app/dialogs/color-profile-dialog.h
index df7b042..6305dc3 100644
--- a/app/dialogs/color-profile-dialog.h
+++ b/app/dialogs/color-profile-dialog.h
@@ -22,15 +22,20 @@
#define __COLOR_PROFILE_DIALOG_H__
-GtkWidget * color_profile_assign_dialog_new (GimpImage *image,
- GimpContext *context,
- GtkWidget *parent,
- GimpProgress *progress);
+typedef enum
+{
+ COLOR_PROFILE_DIALOG_ASSIGN_PROFILE,
+ COLOR_PROFILE_DIALOG_CONVERT_TO_PROFILE,
+ COLOR_PROFILE_DIALOG_CONVERT_TO_RGB,
+ COLOR_PROFILE_DIALOG_CONVERT_TO_GRAY
+} ColorProfileDialogType;
-GtkWidget * color_profile_convert_dialog_new (GimpImage *image,
- GimpContext *context,
- GtkWidget *parent,
- GimpProgress *progress);
+
+GtkWidget * color_profile_dialog_new (ColorProfileDialogType dialog_type,
+ GimpImage *image,
+ GimpContext *context,
+ GtkWidget *parent,
+ GimpProgress *progress);
#endif /* __COLOR_PROFILE_DIALOG_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]