From 7c4471b764740600f03b1400db078740b61d0309 Mon Sep 17 00:00:00 2001 From: Manish Singh Date: Fri, 27 Aug 1999 00:19:25 +0000 Subject: [PATCH] use AM_CPPFLAGS instead of CPPFLAGS * libgimp/Makefile.am: use AM_CPPFLAGS instead of CPPFLAGS * app/levels.c: added some basic load/save functionality to the levels tool. Still needs some polishing. -Yosh --- ChangeLog | 7 ++ app/levels.c | 197 +++++++++++++++++++++++++++++++++++-- app/tools/gimplevelstool.c | 197 +++++++++++++++++++++++++++++++++++-- app/tools/levels.c | 197 +++++++++++++++++++++++++++++++++++-- libgimp/Makefile.am | 2 +- 5 files changed, 578 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index b94cab141a..afa1d1be70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Thu Aug 26 17:17:48 PDT 1999 Manish Singh + + * libgimp/Makefile.am: use AM_CPPFLAGS instead of CPPFLAGS + + * app/levels.c: added some basic load/save functionality to the levels + tool. Still needs some polishing. + 1999-08-27 Tor Lillqvist * app/menus.c: Add Acquire under the File menu. diff --git a/app/levels.c b/app/levels.c index 5fd5184c9b..360ca1fb76 100644 --- a/app/levels.c +++ b/app/levels.c @@ -15,8 +15,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include +#include #include #include "appenv.h" #include "actionarea.h" @@ -115,6 +117,9 @@ static ToolOptions *levels_options = NULL; /* the levels tool dialog */ static LevelsDialog *levels_dialog = NULL; +/* the levels file dialog */ +static GtkWidget *file_dlg = NULL; +static gboolean load_save; /* levels action functions */ static void levels_control (Tool *, ToolAction, gpointer); @@ -133,6 +138,8 @@ static void levels_auto_levels_callback (GtkWidget *, gpointer); static void levels_ok_callback (GtkWidget *, gpointer); static void levels_cancel_callback (GtkWidget *, gpointer); static gint levels_delete_callback (GtkWidget *, GdkEvent *, gpointer); +static void levels_load_callback (GtkWidget *, gpointer); +static void levels_save_callback (GtkWidget *, gpointer); static void levels_preview_update (GtkWidget *, gpointer); static void levels_low_input_spin_update (GtkWidget *, gpointer); static void levels_gamma_text_update (GtkWidget *, gpointer); @@ -146,6 +153,11 @@ static gint levels_output_da_events (GtkWidget *, GdkEvent *, static void levels_histogram_range (HistogramWidget *, int, int, void *); +static void make_file_dlg (gpointer); +static void file_ok_callback (GtkWidget *, gpointer); +static void file_cancel_callback (GtkWidget *, gpointer); +static gint read_levels_from_file (FILE *f); +static void write_levels_to_file (FILE *f); static void levels_histogram_range (HistogramWidget *h, @@ -327,6 +339,8 @@ levels_new_dialog () GtkWidget *toggle; GtkWidget *channel_hbox; GtkWidget *menu; + GtkWidget *hbbox; + GtkWidget *button; int i; static ActionAreaItem action_items[] = @@ -523,21 +537,36 @@ levels_new_dialog () gtk_widget_show (frame); gtk_widget_show (hbox); - /* Horizontal box for preview */ - hbox = gtk_hbox_new (TRUE, 2); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + /* Horizontal button box for load/sve */ + hbbox = gtk_hbutton_box_new (); + gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbbox), 4); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_start (GTK_BOX (vbox), hbbox, FALSE, FALSE, 0); /* The preview toggle */ toggle = gtk_check_button_new_with_label (_("Preview")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), ld->preview); - gtk_box_pack_start (GTK_BOX (hbox), toggle, TRUE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbbox), toggle, TRUE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", (GtkSignalFunc) levels_preview_update, ld); - - gtk_widget_show (label); gtk_widget_show (toggle); - gtk_widget_show (hbox); + + button = gtk_button_new_with_label (_("Load")); + gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) levels_load_callback, + NULL); + gtk_widget_show (button); + + button = gtk_button_new_with_label (_("Save")); + gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) levels_save_callback, + NULL); + gtk_widget_show (button); + + gtk_widget_show (hbbox); /* The action area */ action_items[0].user_data = ld; @@ -1017,6 +1046,36 @@ levels_cancel_callback (GtkWidget *widget, active_tool->drawable = NULL; } +static void +levels_load_callback (GtkWidget *widget, + gpointer client_data) +{ + if (!file_dlg) + make_file_dlg (NULL); + else if (GTK_WIDGET_VISIBLE (file_dlg)) + return; + + load_save = TRUE; + + gtk_window_set_title(GTK_WINDOW (file_dlg), _("Load Levels")); + gtk_widget_show (file_dlg); +} + +static void +levels_save_callback (GtkWidget *widget, + gpointer client_data) +{ + if (!file_dlg) + make_file_dlg (NULL); + else if (GTK_WIDGET_VISIBLE (file_dlg)) + return; + + load_save = FALSE; + + gtk_window_set_title(GTK_WINDOW (file_dlg), _("Save Levels")); + gtk_widget_show (file_dlg); +} + static void levels_preview_update (GtkWidget *w, gpointer data) @@ -1324,3 +1383,127 @@ levels_output_da_events (GtkWidget *widget, return FALSE; } + +static void +make_file_dlg (gpointer data) +{ + file_dlg = gtk_file_selection_new (_("Load/Save Levels")); + gtk_window_position (GTK_WINDOW (file_dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION (file_dlg)->cancel_button), + "clicked", (GtkSignalFunc) file_cancel_callback, data); + gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION (file_dlg)->ok_button), + "clicked", (GtkSignalFunc) file_ok_callback, data); +} + +static void +file_ok_callback (GtkWidget *widget, + gpointer data) +{ + FILE *f; + char *filename; + int i; + + filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_dlg)); + + if (load_save) + { + f = fopen (filename, "rt"); + + if (!f) + { + g_message (_("Unable to open file %s"), filename); + return; + } + + if (!read_levels_from_file (f)) + { + g_message (("Error in reading file %s"), filename); + return; + } + + fclose (f); + } + else + { + f = fopen(filename, "wt"); + + if (!f) + { + g_message (_("Unable to open file %s"), filename); + return; + } + + write_levels_to_file (f); + + fclose (f); + } + + gtk_widget_hide (file_dlg); +} + +static void +file_cancel_callback (GtkWidget *widget, + gpointer data) +{ + gtk_widget_hide (file_dlg); +} + +static gint +read_levels_from_file (FILE *f) +{ + int low_input[5]; + int high_input[5]; + int low_output[5]; + int high_output[5]; + double gamma[5]; + int i, fields; + char buf[50], *nptr; + + for (i = 0; i < 5; i++) + { + fields = fscanf (f, "%d %d %d %d ", + &low_input[i], + &high_input[i], + &low_output[i], + &high_output[i]); + + if (fields != 4 || !fgets(buf, 50, f)) + return FALSE; + + gamma[i] = strtod(buf, &nptr); + + if (buf == nptr || errno == ERANGE) + return FALSE; + } + + for (i = 0; i < 5; i++) + { + levels_dialog->low_input[i] = low_input[i]; + levels_dialog->high_input[i] = high_input[i]; + levels_dialog->low_output[i] = low_output[i]; + levels_dialog->high_output[i] = high_output[i]; + levels_dialog->gamma[i] = gamma[i]; + } + + levels_update (levels_dialog, ALL); + if (levels_dialog->preview) + levels_preview (levels_dialog); + + return TRUE; +} + +static void +write_levels_to_file (FILE *f) +{ + int i; + + for (i = 0; i < 5; i++) + { + fprintf (f, "%d %d %d %d %f\n", + levels_dialog->low_input[i], + levels_dialog->high_input[i], + levels_dialog->low_output[i], + levels_dialog->high_output[i], + levels_dialog->gamma[i]); + } +} diff --git a/app/tools/gimplevelstool.c b/app/tools/gimplevelstool.c index 5fd5184c9b..360ca1fb76 100644 --- a/app/tools/gimplevelstool.c +++ b/app/tools/gimplevelstool.c @@ -15,8 +15,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include +#include #include #include "appenv.h" #include "actionarea.h" @@ -115,6 +117,9 @@ static ToolOptions *levels_options = NULL; /* the levels tool dialog */ static LevelsDialog *levels_dialog = NULL; +/* the levels file dialog */ +static GtkWidget *file_dlg = NULL; +static gboolean load_save; /* levels action functions */ static void levels_control (Tool *, ToolAction, gpointer); @@ -133,6 +138,8 @@ static void levels_auto_levels_callback (GtkWidget *, gpointer); static void levels_ok_callback (GtkWidget *, gpointer); static void levels_cancel_callback (GtkWidget *, gpointer); static gint levels_delete_callback (GtkWidget *, GdkEvent *, gpointer); +static void levels_load_callback (GtkWidget *, gpointer); +static void levels_save_callback (GtkWidget *, gpointer); static void levels_preview_update (GtkWidget *, gpointer); static void levels_low_input_spin_update (GtkWidget *, gpointer); static void levels_gamma_text_update (GtkWidget *, gpointer); @@ -146,6 +153,11 @@ static gint levels_output_da_events (GtkWidget *, GdkEvent *, static void levels_histogram_range (HistogramWidget *, int, int, void *); +static void make_file_dlg (gpointer); +static void file_ok_callback (GtkWidget *, gpointer); +static void file_cancel_callback (GtkWidget *, gpointer); +static gint read_levels_from_file (FILE *f); +static void write_levels_to_file (FILE *f); static void levels_histogram_range (HistogramWidget *h, @@ -327,6 +339,8 @@ levels_new_dialog () GtkWidget *toggle; GtkWidget *channel_hbox; GtkWidget *menu; + GtkWidget *hbbox; + GtkWidget *button; int i; static ActionAreaItem action_items[] = @@ -523,21 +537,36 @@ levels_new_dialog () gtk_widget_show (frame); gtk_widget_show (hbox); - /* Horizontal box for preview */ - hbox = gtk_hbox_new (TRUE, 2); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + /* Horizontal button box for load/sve */ + hbbox = gtk_hbutton_box_new (); + gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbbox), 4); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_start (GTK_BOX (vbox), hbbox, FALSE, FALSE, 0); /* The preview toggle */ toggle = gtk_check_button_new_with_label (_("Preview")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), ld->preview); - gtk_box_pack_start (GTK_BOX (hbox), toggle, TRUE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbbox), toggle, TRUE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", (GtkSignalFunc) levels_preview_update, ld); - - gtk_widget_show (label); gtk_widget_show (toggle); - gtk_widget_show (hbox); + + button = gtk_button_new_with_label (_("Load")); + gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) levels_load_callback, + NULL); + gtk_widget_show (button); + + button = gtk_button_new_with_label (_("Save")); + gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) levels_save_callback, + NULL); + gtk_widget_show (button); + + gtk_widget_show (hbbox); /* The action area */ action_items[0].user_data = ld; @@ -1017,6 +1046,36 @@ levels_cancel_callback (GtkWidget *widget, active_tool->drawable = NULL; } +static void +levels_load_callback (GtkWidget *widget, + gpointer client_data) +{ + if (!file_dlg) + make_file_dlg (NULL); + else if (GTK_WIDGET_VISIBLE (file_dlg)) + return; + + load_save = TRUE; + + gtk_window_set_title(GTK_WINDOW (file_dlg), _("Load Levels")); + gtk_widget_show (file_dlg); +} + +static void +levels_save_callback (GtkWidget *widget, + gpointer client_data) +{ + if (!file_dlg) + make_file_dlg (NULL); + else if (GTK_WIDGET_VISIBLE (file_dlg)) + return; + + load_save = FALSE; + + gtk_window_set_title(GTK_WINDOW (file_dlg), _("Save Levels")); + gtk_widget_show (file_dlg); +} + static void levels_preview_update (GtkWidget *w, gpointer data) @@ -1324,3 +1383,127 @@ levels_output_da_events (GtkWidget *widget, return FALSE; } + +static void +make_file_dlg (gpointer data) +{ + file_dlg = gtk_file_selection_new (_("Load/Save Levels")); + gtk_window_position (GTK_WINDOW (file_dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION (file_dlg)->cancel_button), + "clicked", (GtkSignalFunc) file_cancel_callback, data); + gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION (file_dlg)->ok_button), + "clicked", (GtkSignalFunc) file_ok_callback, data); +} + +static void +file_ok_callback (GtkWidget *widget, + gpointer data) +{ + FILE *f; + char *filename; + int i; + + filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_dlg)); + + if (load_save) + { + f = fopen (filename, "rt"); + + if (!f) + { + g_message (_("Unable to open file %s"), filename); + return; + } + + if (!read_levels_from_file (f)) + { + g_message (("Error in reading file %s"), filename); + return; + } + + fclose (f); + } + else + { + f = fopen(filename, "wt"); + + if (!f) + { + g_message (_("Unable to open file %s"), filename); + return; + } + + write_levels_to_file (f); + + fclose (f); + } + + gtk_widget_hide (file_dlg); +} + +static void +file_cancel_callback (GtkWidget *widget, + gpointer data) +{ + gtk_widget_hide (file_dlg); +} + +static gint +read_levels_from_file (FILE *f) +{ + int low_input[5]; + int high_input[5]; + int low_output[5]; + int high_output[5]; + double gamma[5]; + int i, fields; + char buf[50], *nptr; + + for (i = 0; i < 5; i++) + { + fields = fscanf (f, "%d %d %d %d ", + &low_input[i], + &high_input[i], + &low_output[i], + &high_output[i]); + + if (fields != 4 || !fgets(buf, 50, f)) + return FALSE; + + gamma[i] = strtod(buf, &nptr); + + if (buf == nptr || errno == ERANGE) + return FALSE; + } + + for (i = 0; i < 5; i++) + { + levels_dialog->low_input[i] = low_input[i]; + levels_dialog->high_input[i] = high_input[i]; + levels_dialog->low_output[i] = low_output[i]; + levels_dialog->high_output[i] = high_output[i]; + levels_dialog->gamma[i] = gamma[i]; + } + + levels_update (levels_dialog, ALL); + if (levels_dialog->preview) + levels_preview (levels_dialog); + + return TRUE; +} + +static void +write_levels_to_file (FILE *f) +{ + int i; + + for (i = 0; i < 5; i++) + { + fprintf (f, "%d %d %d %d %f\n", + levels_dialog->low_input[i], + levels_dialog->high_input[i], + levels_dialog->low_output[i], + levels_dialog->high_output[i], + levels_dialog->gamma[i]); + } +} diff --git a/app/tools/levels.c b/app/tools/levels.c index 5fd5184c9b..360ca1fb76 100644 --- a/app/tools/levels.c +++ b/app/tools/levels.c @@ -15,8 +15,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include +#include #include #include "appenv.h" #include "actionarea.h" @@ -115,6 +117,9 @@ static ToolOptions *levels_options = NULL; /* the levels tool dialog */ static LevelsDialog *levels_dialog = NULL; +/* the levels file dialog */ +static GtkWidget *file_dlg = NULL; +static gboolean load_save; /* levels action functions */ static void levels_control (Tool *, ToolAction, gpointer); @@ -133,6 +138,8 @@ static void levels_auto_levels_callback (GtkWidget *, gpointer); static void levels_ok_callback (GtkWidget *, gpointer); static void levels_cancel_callback (GtkWidget *, gpointer); static gint levels_delete_callback (GtkWidget *, GdkEvent *, gpointer); +static void levels_load_callback (GtkWidget *, gpointer); +static void levels_save_callback (GtkWidget *, gpointer); static void levels_preview_update (GtkWidget *, gpointer); static void levels_low_input_spin_update (GtkWidget *, gpointer); static void levels_gamma_text_update (GtkWidget *, gpointer); @@ -146,6 +153,11 @@ static gint levels_output_da_events (GtkWidget *, GdkEvent *, static void levels_histogram_range (HistogramWidget *, int, int, void *); +static void make_file_dlg (gpointer); +static void file_ok_callback (GtkWidget *, gpointer); +static void file_cancel_callback (GtkWidget *, gpointer); +static gint read_levels_from_file (FILE *f); +static void write_levels_to_file (FILE *f); static void levels_histogram_range (HistogramWidget *h, @@ -327,6 +339,8 @@ levels_new_dialog () GtkWidget *toggle; GtkWidget *channel_hbox; GtkWidget *menu; + GtkWidget *hbbox; + GtkWidget *button; int i; static ActionAreaItem action_items[] = @@ -523,21 +537,36 @@ levels_new_dialog () gtk_widget_show (frame); gtk_widget_show (hbox); - /* Horizontal box for preview */ - hbox = gtk_hbox_new (TRUE, 2); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + /* Horizontal button box for load/sve */ + hbbox = gtk_hbutton_box_new (); + gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbbox), 4); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_start (GTK_BOX (vbox), hbbox, FALSE, FALSE, 0); /* The preview toggle */ toggle = gtk_check_button_new_with_label (_("Preview")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), ld->preview); - gtk_box_pack_start (GTK_BOX (hbox), toggle, TRUE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbbox), toggle, TRUE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", (GtkSignalFunc) levels_preview_update, ld); - - gtk_widget_show (label); gtk_widget_show (toggle); - gtk_widget_show (hbox); + + button = gtk_button_new_with_label (_("Load")); + gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) levels_load_callback, + NULL); + gtk_widget_show (button); + + button = gtk_button_new_with_label (_("Save")); + gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) levels_save_callback, + NULL); + gtk_widget_show (button); + + gtk_widget_show (hbbox); /* The action area */ action_items[0].user_data = ld; @@ -1017,6 +1046,36 @@ levels_cancel_callback (GtkWidget *widget, active_tool->drawable = NULL; } +static void +levels_load_callback (GtkWidget *widget, + gpointer client_data) +{ + if (!file_dlg) + make_file_dlg (NULL); + else if (GTK_WIDGET_VISIBLE (file_dlg)) + return; + + load_save = TRUE; + + gtk_window_set_title(GTK_WINDOW (file_dlg), _("Load Levels")); + gtk_widget_show (file_dlg); +} + +static void +levels_save_callback (GtkWidget *widget, + gpointer client_data) +{ + if (!file_dlg) + make_file_dlg (NULL); + else if (GTK_WIDGET_VISIBLE (file_dlg)) + return; + + load_save = FALSE; + + gtk_window_set_title(GTK_WINDOW (file_dlg), _("Save Levels")); + gtk_widget_show (file_dlg); +} + static void levels_preview_update (GtkWidget *w, gpointer data) @@ -1324,3 +1383,127 @@ levels_output_da_events (GtkWidget *widget, return FALSE; } + +static void +make_file_dlg (gpointer data) +{ + file_dlg = gtk_file_selection_new (_("Load/Save Levels")); + gtk_window_position (GTK_WINDOW (file_dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION (file_dlg)->cancel_button), + "clicked", (GtkSignalFunc) file_cancel_callback, data); + gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION (file_dlg)->ok_button), + "clicked", (GtkSignalFunc) file_ok_callback, data); +} + +static void +file_ok_callback (GtkWidget *widget, + gpointer data) +{ + FILE *f; + char *filename; + int i; + + filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_dlg)); + + if (load_save) + { + f = fopen (filename, "rt"); + + if (!f) + { + g_message (_("Unable to open file %s"), filename); + return; + } + + if (!read_levels_from_file (f)) + { + g_message (("Error in reading file %s"), filename); + return; + } + + fclose (f); + } + else + { + f = fopen(filename, "wt"); + + if (!f) + { + g_message (_("Unable to open file %s"), filename); + return; + } + + write_levels_to_file (f); + + fclose (f); + } + + gtk_widget_hide (file_dlg); +} + +static void +file_cancel_callback (GtkWidget *widget, + gpointer data) +{ + gtk_widget_hide (file_dlg); +} + +static gint +read_levels_from_file (FILE *f) +{ + int low_input[5]; + int high_input[5]; + int low_output[5]; + int high_output[5]; + double gamma[5]; + int i, fields; + char buf[50], *nptr; + + for (i = 0; i < 5; i++) + { + fields = fscanf (f, "%d %d %d %d ", + &low_input[i], + &high_input[i], + &low_output[i], + &high_output[i]); + + if (fields != 4 || !fgets(buf, 50, f)) + return FALSE; + + gamma[i] = strtod(buf, &nptr); + + if (buf == nptr || errno == ERANGE) + return FALSE; + } + + for (i = 0; i < 5; i++) + { + levels_dialog->low_input[i] = low_input[i]; + levels_dialog->high_input[i] = high_input[i]; + levels_dialog->low_output[i] = low_output[i]; + levels_dialog->high_output[i] = high_output[i]; + levels_dialog->gamma[i] = gamma[i]; + } + + levels_update (levels_dialog, ALL); + if (levels_dialog->preview) + levels_preview (levels_dialog); + + return TRUE; +} + +static void +write_levels_to_file (FILE *f) +{ + int i; + + for (i = 0; i < 5; i++) + { + fprintf (f, "%d %d %d %d %f\n", + levels_dialog->low_input[i], + levels_dialog->high_input[i], + levels_dialog->low_output[i], + levels_dialog->high_output[i], + levels_dialog->gamma[i]); + } +} diff --git a/libgimp/Makefile.am b/libgimp/Makefile.am index c664d00ae1..852bb4b55b 100644 --- a/libgimp/Makefile.am +++ b/libgimp/Makefile.am @@ -2,7 +2,7 @@ gimpincludedir = $(includedir)/libgimp -CPPFLAGS = \ +AM_CPPFLAGS = \ -DGIMPDIR=\""$(gimpdir)"\" \ -DDATADIR=\""$(gimpdatadir)"\" \ @GIMP_THREAD_FLAGS@