diff --git a/ChangeLog b/ChangeLog index cc617d0999..9e15dfa4cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,37 @@ +1999-05-22 Michael Natterer + + * app/[all files with resolution info] + * libgimp/gimp.h + * libgimp/gimpimage.c + * libgimp/gimpsizeentry.[ch] + * libgimp/gimpunit.[ch] + * plug-ins/newsprint/newsprint.c + * plug-ins/pgn/png.c + * plug-ins/tiff/tiff.c: double instead of float for all resolution + and unit-factor variables. + + * app/commands.c + * app/crop.c + * app/interface.c + * app/layers_dialog.c + * app/move_tool.c + * app/resize.c + * app/rotate_tool.c + * app/scale_tool.c: pass the image's unit *and* gdisp->dot_for_dot + to all functions which create sizeentries. Never create a + sizeentry with UNIT_PIXEL but with the image's unit and set it's + unit to UNIT_PIXEL after creation if dot_for_dot is on. + This way the image's unit can always be picked from the menu + without selecting "More...". + + * app/interface.c: made the query_*_box() functions use the + ActionArea. + + * plug-ins/gimpunitmenu.c: GTK_WIN_POS_MOUSE for the unit + selection dialog. + Fri May 21 10:39:00 CST 1999 Seth Burgess + * app/gimprc.c * app/gimprc.h * app/gimprc_cmds.c : wrapped up value_to_str and added it to diff --git a/app/actions/help-commands.c b/app/actions/help-commands.c index 6126ccc7d5..64b87beffc 100644 --- a/app/actions/help-commands.c +++ b/app/actions/help-commands.c @@ -365,9 +365,10 @@ select_border_cmd_callback (GtkWidget *widget, query_size_box (_("Border Selection"), _("Border selection by:"), selection_border_radius, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_border_callback, gdisp->gimage); } @@ -382,9 +383,10 @@ select_feather_cmd_callback (GtkWidget *widget, query_size_box (_("Feather Selection"), _("Feather selection by:"), selection_feather_radius, 0, 32767, 3, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_feather_callback, gdisp->gimage); } @@ -399,9 +401,10 @@ select_grow_cmd_callback (GtkWidget *widget, query_size_box (_("Grow Selection"), _("Grow selection by:"), selection_grow_pixels, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_grow_callback, gdisp->gimage); } @@ -416,9 +419,10 @@ select_shrink_cmd_callback (GtkWidget *widget, query_size_box (_("Shrink Selection"), _("Shrink selection by:"), selection_shrink_pixels, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_shrink_callback, gdisp->gimage); } @@ -1211,7 +1215,7 @@ gimage_mask_feather_callback (GtkWidget *w, double radius_x; double radius_y; - selection_feather_radius = *(float*) call_data; + selection_feather_radius = *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1245,7 +1249,7 @@ gimage_mask_border_callback (GtkWidget *w, double radius_x; double radius_y; - selection_border_radius = (int) *(float*) call_data; + selection_border_radius = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1279,7 +1283,7 @@ gimage_mask_grow_callback (GtkWidget *w, double radius_x; double radius_y; - selection_grow_pixels = (int) *(float*) call_data; + selection_grow_pixels = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1313,7 +1317,7 @@ gimage_mask_shrink_callback (GtkWidget *w, int radius_x; int radius_y; - selection_shrink_pixels = (int) *(float*) call_data; + selection_shrink_pixels = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); diff --git a/app/app_procs.c b/app/app_procs.c index 6be23452f8..ba84733ace 100644 --- a/app/app_procs.c +++ b/app/app_procs.c @@ -87,6 +87,7 @@ #include "color_select.h" #include "gimpparasite.h" +#include "libgimp/gimplimits.h" #include "libgimp/gimpintl.h" #define LOGO_WIDTH_MIN 300 @@ -497,13 +498,10 @@ app_init (void) restore_session = TRUE; /* make sure the monitor resolution is valid */ - if (monitor_xres < 1e-5 || monitor_yres < 1e-5) + if (monitor_xres < GIMP_MIN_RESOLUTION || + monitor_yres < GIMP_MIN_RESOLUTION) { - gfloat xres, yres; - - gdisplay_xserver_resolution (&xres, &yres); - monitor_xres = xres; - monitor_yres = yres; + gdisplay_xserver_resolution (&monitor_xres, &monitor_yres); using_xserver_resolution = TRUE; } diff --git a/app/blend.c b/app/blend.c index ff29269b6c..8dc2bd416d 100644 --- a/app/blend.c +++ b/app/blend.c @@ -643,7 +643,7 @@ blend_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (vector, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Blend: "), diff --git a/app/commands.c b/app/commands.c index 6126ccc7d5..64b87beffc 100644 --- a/app/commands.c +++ b/app/commands.c @@ -365,9 +365,10 @@ select_border_cmd_callback (GtkWidget *widget, query_size_box (_("Border Selection"), _("Border selection by:"), selection_border_radius, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_border_callback, gdisp->gimage); } @@ -382,9 +383,10 @@ select_feather_cmd_callback (GtkWidget *widget, query_size_box (_("Feather Selection"), _("Feather selection by:"), selection_feather_radius, 0, 32767, 3, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_feather_callback, gdisp->gimage); } @@ -399,9 +401,10 @@ select_grow_cmd_callback (GtkWidget *widget, query_size_box (_("Grow Selection"), _("Grow selection by:"), selection_grow_pixels, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_grow_callback, gdisp->gimage); } @@ -416,9 +419,10 @@ select_shrink_cmd_callback (GtkWidget *widget, query_size_box (_("Shrink Selection"), _("Shrink selection by:"), selection_shrink_pixels, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_shrink_callback, gdisp->gimage); } @@ -1211,7 +1215,7 @@ gimage_mask_feather_callback (GtkWidget *w, double radius_x; double radius_y; - selection_feather_radius = *(float*) call_data; + selection_feather_radius = *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1245,7 +1249,7 @@ gimage_mask_border_callback (GtkWidget *w, double radius_x; double radius_y; - selection_border_radius = (int) *(float*) call_data; + selection_border_radius = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1279,7 +1283,7 @@ gimage_mask_grow_callback (GtkWidget *w, double radius_x; double radius_y; - selection_grow_pixels = (int) *(float*) call_data; + selection_grow_pixels = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1313,7 +1317,7 @@ gimage_mask_shrink_callback (GtkWidget *w, int radius_x; int radius_y; - selection_shrink_pixels = (int) *(float*) call_data; + selection_shrink_pixels = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); diff --git a/app/core/gimpdrawable-blend.c b/app/core/gimpdrawable-blend.c index ff29269b6c..8dc2bd416d 100644 --- a/app/core/gimpdrawable-blend.c +++ b/app/core/gimpdrawable-blend.c @@ -643,7 +643,7 @@ blend_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (vector, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Blend: "), diff --git a/app/core/gimpimage-guides.c b/app/core/gimpimage-guides.c index 181e43e32d..5090a660de 100644 --- a/app/core/gimpimage-guides.c +++ b/app/core/gimpimage-guides.c @@ -319,8 +319,8 @@ gimp_image_set_filename (GimpImage *gimage, char *filename) void gimp_image_set_resolution (GimpImage *gimage, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { gimage->xresolution = xresolution; gimage->yresolution = yresolution; @@ -328,8 +328,8 @@ gimp_image_set_resolution (GimpImage *gimage, void gimp_image_get_resolution (GimpImage *gimage, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { g_return_if_fail(xresolution && yresolution); *xresolution = gimage->xresolution; diff --git a/app/core/gimpimage-guides.h b/app/core/gimpimage-guides.h index 0324fca9b3..dfbe1f6593 100644 --- a/app/core/gimpimage-guides.h +++ b/app/core/gimpimage-guides.h @@ -108,10 +108,11 @@ GtkType gimp_image_get_type(void); GimpImage * gimp_image_new (int, int, int); void gimp_image_set_filename (GimpImage *, char *); -void gimp_image_set_resolution (GimpImage *, float, float); +void gimp_image_set_resolution (GimpImage *, + double, double); void gimp_image_get_resolution (GimpImage *, - float *, - float *); + double *, + double *); void gimp_image_set_unit (GimpImage *, GUnit); GUnit gimp_image_get_unit (GimpImage *); void gimp_image_set_save_proc (GimpImage *, PlugInProcDef *); diff --git a/app/core/gimpimage-merge.c b/app/core/gimpimage-merge.c index 181e43e32d..5090a660de 100644 --- a/app/core/gimpimage-merge.c +++ b/app/core/gimpimage-merge.c @@ -319,8 +319,8 @@ gimp_image_set_filename (GimpImage *gimage, char *filename) void gimp_image_set_resolution (GimpImage *gimage, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { gimage->xresolution = xresolution; gimage->yresolution = yresolution; @@ -328,8 +328,8 @@ gimp_image_set_resolution (GimpImage *gimage, void gimp_image_get_resolution (GimpImage *gimage, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { g_return_if_fail(xresolution && yresolution); *xresolution = gimage->xresolution; diff --git a/app/core/gimpimage-merge.h b/app/core/gimpimage-merge.h index 0324fca9b3..dfbe1f6593 100644 --- a/app/core/gimpimage-merge.h +++ b/app/core/gimpimage-merge.h @@ -108,10 +108,11 @@ GtkType gimp_image_get_type(void); GimpImage * gimp_image_new (int, int, int); void gimp_image_set_filename (GimpImage *, char *); -void gimp_image_set_resolution (GimpImage *, float, float); +void gimp_image_set_resolution (GimpImage *, + double, double); void gimp_image_get_resolution (GimpImage *, - float *, - float *); + double *, + double *); void gimp_image_set_unit (GimpImage *, GUnit); GUnit gimp_image_get_unit (GimpImage *); void gimp_image_set_save_proc (GimpImage *, PlugInProcDef *); diff --git a/app/core/gimpimage-projection.c b/app/core/gimpimage-projection.c index 181e43e32d..5090a660de 100644 --- a/app/core/gimpimage-projection.c +++ b/app/core/gimpimage-projection.c @@ -319,8 +319,8 @@ gimp_image_set_filename (GimpImage *gimage, char *filename) void gimp_image_set_resolution (GimpImage *gimage, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { gimage->xresolution = xresolution; gimage->yresolution = yresolution; @@ -328,8 +328,8 @@ gimp_image_set_resolution (GimpImage *gimage, void gimp_image_get_resolution (GimpImage *gimage, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { g_return_if_fail(xresolution && yresolution); *xresolution = gimage->xresolution; diff --git a/app/core/gimpimage-projection.h b/app/core/gimpimage-projection.h index 0324fca9b3..dfbe1f6593 100644 --- a/app/core/gimpimage-projection.h +++ b/app/core/gimpimage-projection.h @@ -108,10 +108,11 @@ GtkType gimp_image_get_type(void); GimpImage * gimp_image_new (int, int, int); void gimp_image_set_filename (GimpImage *, char *); -void gimp_image_set_resolution (GimpImage *, float, float); +void gimp_image_set_resolution (GimpImage *, + double, double); void gimp_image_get_resolution (GimpImage *, - float *, - float *); + double *, + double *); void gimp_image_set_unit (GimpImage *, GUnit); GUnit gimp_image_get_unit (GimpImage *); void gimp_image_set_save_proc (GimpImage *, PlugInProcDef *); diff --git a/app/core/gimpimage-resize.c b/app/core/gimpimage-resize.c index 181e43e32d..5090a660de 100644 --- a/app/core/gimpimage-resize.c +++ b/app/core/gimpimage-resize.c @@ -319,8 +319,8 @@ gimp_image_set_filename (GimpImage *gimage, char *filename) void gimp_image_set_resolution (GimpImage *gimage, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { gimage->xresolution = xresolution; gimage->yresolution = yresolution; @@ -328,8 +328,8 @@ gimp_image_set_resolution (GimpImage *gimage, void gimp_image_get_resolution (GimpImage *gimage, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { g_return_if_fail(xresolution && yresolution); *xresolution = gimage->xresolution; diff --git a/app/core/gimpimage-resize.h b/app/core/gimpimage-resize.h index 0324fca9b3..dfbe1f6593 100644 --- a/app/core/gimpimage-resize.h +++ b/app/core/gimpimage-resize.h @@ -108,10 +108,11 @@ GtkType gimp_image_get_type(void); GimpImage * gimp_image_new (int, int, int); void gimp_image_set_filename (GimpImage *, char *); -void gimp_image_set_resolution (GimpImage *, float, float); +void gimp_image_set_resolution (GimpImage *, + double, double); void gimp_image_get_resolution (GimpImage *, - float *, - float *); + double *, + double *); void gimp_image_set_unit (GimpImage *, GUnit); GUnit gimp_image_get_unit (GimpImage *); void gimp_image_set_save_proc (GimpImage *, PlugInProcDef *); diff --git a/app/core/gimpimage-scale.c b/app/core/gimpimage-scale.c index 181e43e32d..5090a660de 100644 --- a/app/core/gimpimage-scale.c +++ b/app/core/gimpimage-scale.c @@ -319,8 +319,8 @@ gimp_image_set_filename (GimpImage *gimage, char *filename) void gimp_image_set_resolution (GimpImage *gimage, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { gimage->xresolution = xresolution; gimage->yresolution = yresolution; @@ -328,8 +328,8 @@ gimp_image_set_resolution (GimpImage *gimage, void gimp_image_get_resolution (GimpImage *gimage, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { g_return_if_fail(xresolution && yresolution); *xresolution = gimage->xresolution; diff --git a/app/core/gimpimage-scale.h b/app/core/gimpimage-scale.h index 0324fca9b3..dfbe1f6593 100644 --- a/app/core/gimpimage-scale.h +++ b/app/core/gimpimage-scale.h @@ -108,10 +108,11 @@ GtkType gimp_image_get_type(void); GimpImage * gimp_image_new (int, int, int); void gimp_image_set_filename (GimpImage *, char *); -void gimp_image_set_resolution (GimpImage *, float, float); +void gimp_image_set_resolution (GimpImage *, + double, double); void gimp_image_get_resolution (GimpImage *, - float *, - float *); + double *, + double *); void gimp_image_set_unit (GimpImage *, GUnit); GUnit gimp_image_get_unit (GimpImage *); void gimp_image_set_save_proc (GimpImage *, PlugInProcDef *); diff --git a/app/core/gimpimage.c b/app/core/gimpimage.c index 181e43e32d..5090a660de 100644 --- a/app/core/gimpimage.c +++ b/app/core/gimpimage.c @@ -319,8 +319,8 @@ gimp_image_set_filename (GimpImage *gimage, char *filename) void gimp_image_set_resolution (GimpImage *gimage, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { gimage->xresolution = xresolution; gimage->yresolution = yresolution; @@ -328,8 +328,8 @@ gimp_image_set_resolution (GimpImage *gimage, void gimp_image_get_resolution (GimpImage *gimage, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { g_return_if_fail(xresolution && yresolution); *xresolution = gimage->xresolution; diff --git a/app/core/gimpimage.h b/app/core/gimpimage.h index 0324fca9b3..dfbe1f6593 100644 --- a/app/core/gimpimage.h +++ b/app/core/gimpimage.h @@ -108,10 +108,11 @@ GtkType gimp_image_get_type(void); GimpImage * gimp_image_new (int, int, int); void gimp_image_set_filename (GimpImage *, char *); -void gimp_image_set_resolution (GimpImage *, float, float); +void gimp_image_set_resolution (GimpImage *, + double, double); void gimp_image_get_resolution (GimpImage *, - float *, - float *); + double *, + double *); void gimp_image_set_unit (GimpImage *, GUnit); GUnit gimp_image_get_unit (GimpImage *); void gimp_image_set_save_proc (GimpImage *, PlugInProcDef *); diff --git a/app/core/gimpprojection-construct.c b/app/core/gimpprojection-construct.c index 181e43e32d..5090a660de 100644 --- a/app/core/gimpprojection-construct.c +++ b/app/core/gimpprojection-construct.c @@ -319,8 +319,8 @@ gimp_image_set_filename (GimpImage *gimage, char *filename) void gimp_image_set_resolution (GimpImage *gimage, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { gimage->xresolution = xresolution; gimage->yresolution = yresolution; @@ -328,8 +328,8 @@ gimp_image_set_resolution (GimpImage *gimage, void gimp_image_get_resolution (GimpImage *gimage, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { g_return_if_fail(xresolution && yresolution); *xresolution = gimage->xresolution; diff --git a/app/core/gimpprojection-construct.h b/app/core/gimpprojection-construct.h index 0324fca9b3..dfbe1f6593 100644 --- a/app/core/gimpprojection-construct.h +++ b/app/core/gimpprojection-construct.h @@ -108,10 +108,11 @@ GtkType gimp_image_get_type(void); GimpImage * gimp_image_new (int, int, int); void gimp_image_set_filename (GimpImage *, char *); -void gimp_image_set_resolution (GimpImage *, float, float); +void gimp_image_set_resolution (GimpImage *, + double, double); void gimp_image_get_resolution (GimpImage *, - float *, - float *); + double *, + double *); void gimp_image_set_unit (GimpImage *, GUnit); GUnit gimp_image_get_unit (GimpImage *); void gimp_image_set_save_proc (GimpImage *, PlugInProcDef *); diff --git a/app/core/gimpprojection.c b/app/core/gimpprojection.c index 76629bcdcb..c874bceccf 100644 --- a/app/core/gimpprojection.c +++ b/app/core/gimpprojection.c @@ -1024,14 +1024,14 @@ gdisplay_update_cursor (GDisplay *gdisp, int x, int y) } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + double unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); - g_snprintf (buffer, CURSOR_STR_LENGTH, - gdisp->cursor_format_str, - "", - (float)t_x * unit_factor / gdisp->gimage->xresolution, - ", ", - (float)t_y * unit_factor / gdisp->gimage->yresolution); + g_snprintf + (buffer, CURSOR_STR_LENGTH, gdisp->cursor_format_str, + "", + (double) t_x * unit_factor / gdisp->gimage->xresolution, + ", ", + (double) t_y * unit_factor / gdisp->gimage->yresolution); } gtk_label_set (GTK_LABEL (gdisp->cursor_label), buffer); } @@ -1076,7 +1076,7 @@ gdisplay_resize_cursor_label (GDisplay *gdisp) } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (gdisp->cursor_format_str, sizeof(gdisp->cursor_format_str), "%%s%%.%df%%s%%.%df %s", @@ -1086,14 +1086,14 @@ gdisplay_resize_cursor_label (GDisplay *gdisp) g_snprintf (buffer, sizeof(buffer), gdisp->cursor_format_str, "", - (float)gdisp->gimage->width * unit_factor / + (gdouble) gdisp->gimage->width * unit_factor / gdisp->gimage->xresolution, ", ", - (float)gdisp->gimage->height * unit_factor / + (gdouble) gdisp->gimage->height * unit_factor / gdisp->gimage->yresolution); } cursor_label_width = - gdk_string_width ( gtk_widget_get_style(gdisp->cursor_label)->font, buffer ); + gdk_string_width (gtk_widget_get_style (gdisp->cursor_label)->font, buffer); /* find out how many pixels the label's parent frame is bigger than * the label itself */ diff --git a/app/core/gimpprojection.h b/app/core/gimpprojection.h index 420be2d098..5226a6e352 100644 --- a/app/core/gimpprojection.h +++ b/app/core/gimpprojection.h @@ -35,11 +35,11 @@ #define SCALESRC(g) (g->scale & 0x00ff) #define SCALEDEST(g) (g->scale >> 8) -/* finding the effective screen resolution (float) */ +/* finding the effective screen resolution (double) */ #define SCREEN_XRES(g) (g->dot_for_dot? g->gimage->xresolution : monitor_xres) #define SCREEN_YRES(g) (g->dot_for_dot? g->gimage->yresolution : monitor_yres) -/* calculate scale factors (float) */ +/* calculate scale factors (double) */ #define SCALEFACTOR_X(g) ((SCALEDEST(g) * SCREEN_XRES(g)) / \ (SCALESRC(g) * g->gimage->xresolution)) #define SCALEFACTOR_Y(g) ((SCALEDEST(g) * SCREEN_YRES(g)) / \ diff --git a/app/core/gimpunit.c b/app/core/gimpunit.c index c8e0e7c0eb..834832354c 100644 --- a/app/core/gimpunit.c +++ b/app/core/gimpunit.c @@ -40,7 +40,7 @@ typedef struct { guint delete_on_exit; - float factor; + gdouble factor; gint digits; gchar *identifier; gchar *symbol; @@ -100,13 +100,13 @@ gimp_unit_get_number_of_built_in_units (void) GUnit -gimp_unit_new (gchar *identifier, - gfloat factor, - gint digits, - gchar *symbol, - gchar *abbreviation, - gchar *singular, - gchar *plural) +gimp_unit_new (gchar *identifier, + gdouble factor, + gint digits, + gchar *symbol, + gchar *abbreviation, + gchar *singular, + gchar *plural) { GimpUnitDef *user_unit; @@ -151,7 +151,7 @@ gimp_unit_set_deletion_flag (GUnit unit, } -gfloat +gdouble gimp_unit_get_factor (GUnit unit) { g_return_val_if_fail ( (unit >= UNIT_PIXEL) && diff --git a/app/crop.c b/app/crop.c index 755f95901d..d75d1d9784 100644 --- a/app/crop.c +++ b/app/crop.c @@ -502,14 +502,14 @@ crop_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (size, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Crop: "), - (float)(crop->tx2 - crop->tx1) * unit_factor / + (gdouble) (crop->tx2 - crop->tx1) * unit_factor / gdisp->gimage->xresolution, " x ", - (float)(crop->ty2 - crop->ty1) * unit_factor / + (gdouble) (crop->ty2 - crop->ty1) * unit_factor / gdisp->gimage->yresolution); } gtk_statusbar_push (GTK_STATUSBAR (gdisp->statusbar), crop->context_id, diff --git a/app/dialogs/image-new-dialog.c b/app/dialogs/image-new-dialog.c index 4b557d7c67..972f455906 100644 --- a/app/dialogs/image-new-dialog.c +++ b/app/dialogs/image-new-dialog.c @@ -295,8 +295,9 @@ file_new_confirm_dialog (NewImageValues *vals) vals->confirm_dlg = gtk_dialog_new (); gtk_window_set_wmclass (GTK_WINDOW (vals->confirm_dlg), - "really_create", "Gimp"); + "confirm_size", "Gimp"); gtk_window_set_title (GTK_WINDOW (vals->confirm_dlg), _("Confirm Image Size")); + gtk_window_set_policy (GTK_WINDOW (vals->confirm_dlg), FALSE, FALSE, FALSE); gtk_window_position (GTK_WINDOW (vals->confirm_dlg), GTK_WIN_POS_MOUSE); /* Handle the wm close signal */ @@ -480,7 +481,6 @@ file_new_cmd_callback (GtkWidget *widget, N_("RGB"), N_("Grayscale") }; - static gchar *fill_type_names[] = { N_("Foreground"), diff --git a/app/dialogs/info-window.c b/app/dialogs/info-window.c index 425c1f6e56..36b0e65f0b 100644 --- a/app/dialogs/info-window.c +++ b/app/dialogs/info-window.c @@ -200,7 +200,7 @@ info_window_update (InfoDialog *info_win, GDisplay *gdisp; InfoWinData *iwd; int type; - gfloat unit_factor; + gdouble unit_factor; gint unit_digits; gchar format_buf[32]; diff --git a/app/dialogs/preferences-dialog.c b/app/dialogs/preferences-dialog.c index 48e3976601..a5744b23c0 100644 --- a/app/dialogs/preferences-dialog.c +++ b/app/dialogs/preferences-dialog.c @@ -33,6 +33,7 @@ #include "libgimp/gimpfileselection.h" #include "libgimp/gimppatheditor.h" #include "libgimp/gimpsizeentry.h" +#include "libgimp/gimplimits.h" #include "libgimp/gimpintl.h" /* preferences local functions */ @@ -245,7 +246,8 @@ file_prefs_ok_callback (GtkWidget *widget, default_units = old_default_units; return; } - if (default_xresolution < 1e-5 || default_yresolution < 1e-5) + if (default_xresolution < GIMP_MIN_RESOLUTION || + default_yresolution < GIMP_MIN_RESOLUTION) { g_message (_("Error: default resolution must not be zero.")); default_xresolution = old_default_xresolution; @@ -259,7 +261,8 @@ file_prefs_ok_callback (GtkWidget *widget, default_resolution_units = old_default_resolution_units; return; } - if (monitor_xres < 1e-5 || monitor_yres < 1e-5) + if (monitor_xres < GIMP_MIN_RESOLUTION || + monitor_yres < GIMP_MIN_RESOLUTION) { g_message (_("Error: Monitor resolution must not be zero.")); monitor_xres = old_monitor_xres; @@ -388,9 +391,9 @@ file_prefs_save_callback (GtkWidget *widget, update = g_list_append (update, "default-image-size"); if (default_units != old_default_units) update = g_list_append (update, "default-units"); - if (ABS(default_xresolution - old_default_xresolution) > 1e-5) + if (ABS(default_xresolution - old_default_xresolution) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "default-xresolution"); - if (ABS(default_yresolution - old_default_yresolution) > 1e-5) + if (ABS(default_yresolution - old_default_yresolution) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "default-yresolution"); if (default_resolution_units != old_default_resolution_units) update = g_list_append (update, "default-resolution-units"); @@ -405,10 +408,10 @@ file_prefs_save_callback (GtkWidget *widget, if (transparency_size != old_transparency_size) update = g_list_append (update, "transparency-size"); if (using_xserver_resolution != old_using_xserver_resolution || - ABS(monitor_xres - old_monitor_xres) > 1e-5) + ABS(monitor_xres - old_monitor_xres) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "monitor-xresolution"); if (using_xserver_resolution != old_using_xserver_resolution || - ABS(monitor_yres - old_monitor_yres) > 1e-5) + ABS(monitor_yres - old_monitor_yres) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "monitor-yresolution"); if (edit_num_processors != num_processors) update = g_list_append (update, "num-processors"); @@ -510,13 +513,7 @@ file_prefs_save_callback (GtkWidget *widget, save_gimprc (&update, &remove); if (using_xserver_resolution) - { - gfloat xres, yres; - - gdisplay_xserver_resolution (&xres, &yres); - monitor_xres = xres; - monitor_yres = yres; - } + gdisplay_xserver_resolution (&monitor_xres, &monitor_yres); /* Restore variables which must not change */ stingy_memory_use = save_stingy_memory_use; @@ -863,21 +860,17 @@ file_prefs_res_source_callback (GtkWidget *widget, if (GTK_TOGGLE_BUTTON (widget)->active) { - gfloat xres, yres; - - gdisplay_xserver_resolution (&xres, &yres); - monitor_xres = xres; - monitor_yres = yres; + gdisplay_xserver_resolution (&monitor_xres, &monitor_yres); using_xserver_resolution = TRUE; } else { if (monitor_resolution_sizeentry) { - monitor_xres = - gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0); - monitor_yres = - gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1); + monitor_xres = gimp_size_entry_get_refval + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0); + monitor_yres = gimp_size_entry_get_refval + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1); } using_xserver_resolution = FALSE; } @@ -1535,9 +1528,11 @@ file_pref_cmd_callback (GtkWidget *widget, gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, default_yresolution, FALSE); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_size_sizeentry), 0, 1, 32767); + (GIMP_SIZE_ENTRY (default_size_sizeentry), 0, + GIMP_MIN_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, 1, 32767); + (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, + GIMP_MIN_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_size_sizeentry), 0, default_width); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, @@ -1572,9 +1567,11 @@ file_pref_cmd_callback (GtkWidget *widget, FALSE, FALSE, TRUE, 75, GIMP_SIZE_ENTRY_UPDATE_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 0, 1, 32767); + (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 0, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 1, 1, 32767); + (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 1, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 0, default_xresolution); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_resolution_sizeentry), @@ -1603,7 +1600,7 @@ file_pref_cmd_callback (GtkWidget *widget, gtk_table_attach_defaults (GTK_TABLE (default_resolution_sizeentry), button, 1, 3, 3, 4); - if (ABS (default_xresolution - default_yresolution) < 1e-5) + if (ABS (default_xresolution - default_yresolution) < GIMP_MIN_RESOLUTION) gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (button), TRUE); gtk_widget_show (button); @@ -2205,7 +2202,7 @@ file_pref_cmd_callback (GtkWidget *widget, gtk_widget_show (button); { - gfloat xres, yres; + gdouble xres, yres; gchar buf[80]; gdisplay_xserver_resolution (&xres, &yres); @@ -2234,9 +2231,11 @@ file_pref_cmd_callback (GtkWidget *widget, gimp_size_entry_new (2, UNIT_INCH, "Pixels/%s", FALSE, FALSE, TRUE, 75, GIMP_SIZE_ENTRY_UPDATE_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0, 1, 32767); + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1, 1, 32767); + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0, monitor_xres); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), @@ -2258,7 +2257,7 @@ file_pref_cmd_callback (GtkWidget *widget, gtk_container_add (GTK_CONTAINER (abox), monitor_resolution_sizeentry); gtk_widget_show (monitor_resolution_sizeentry); - if (ABS (monitor_xres - monitor_yres) < 1e-5) + if (ABS (monitor_xres - monitor_yres) < GIMP_MIN_RESOLUTION) gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (button), TRUE); gtk_table_attach_defaults (GTK_TABLE (monitor_resolution_sizeentry), button, 1, 3, 3, 4); diff --git a/app/dialogs/resize-dialog.c b/app/dialogs/resize-dialog.c index da2b0af474..3abc514473 100644 --- a/app/dialogs/resize-dialog.c +++ b/app/dialogs/resize-dialog.c @@ -58,7 +58,7 @@ struct _ResizePrivate double ratio; int old_width, old_height; - int old_res_x, old_res_y; + double old_res_x, old_res_y; int area_width, area_height; int start_x, start_y; int orig_x, orig_y; @@ -82,10 +82,10 @@ Resize * resize_widget_new (ResizeType type, ResizeTarget target, GtkObject *object, - int width, - int height, - float resolution_x, - float resolution_y, + gint width, + gint height, + gdouble resolution_x, + gdouble resolution_y, GUnit unit, gboolean dot_for_dot, GtkSignalFunc ok_cb, @@ -281,8 +281,7 @@ resize_widget_new (ResizeType type, gtk_widget_set_usize (spinbutton, 75, 0); private->size_se = - gimp_size_entry_new (1, dot_for_dot ? UNIT_PIXEL : unit, "%a", - TRUE, TRUE, FALSE, 75, + gimp_size_entry_new (1, unit, "%a", TRUE, TRUE, FALSE, 75, GIMP_SIZE_ENTRY_UPDATE_SIZE); gimp_size_entry_add_field (GIMP_SIZE_ENTRY (private->size_se), GTK_SPIN_BUTTON (spinbutton), NULL); @@ -311,6 +310,9 @@ resize_widget_new (ResizeType type, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->size_se), 0, width); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->size_se), 1, height); + if (dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (private->size_se), UNIT_PIXEL); + gtk_signal_connect (GTK_OBJECT (private->size_se), "value_changed", (GtkSignalFunc) size_callback, resize); @@ -428,8 +430,7 @@ resize_widget_new (ResizeType type, gtk_widget_set_usize (spinbutton, 75, 0); private->offset_se = - gimp_size_entry_new (1, dot_for_dot ? UNIT_PIXEL : unit, "%a", - TRUE, FALSE, FALSE, 75, + gimp_size_entry_new (1, unit, "%a", TRUE, FALSE, FALSE, 75, GIMP_SIZE_ENTRY_UPDATE_SIZE); gimp_size_entry_add_field (GIMP_SIZE_ENTRY (private->offset_se), GTK_SPIN_BUTTON (spinbutton), NULL); @@ -453,6 +454,10 @@ resize_widget_new (ResizeType type, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 0, 0); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 1, 0); + if (dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (private->offset_se), + UNIT_PIXEL); + gtk_signal_connect (GTK_OBJECT (private->offset_se), "value_changed", (GtkSignalFunc) offset_update, resize); diff --git a/app/dialogs/resize-dialog.h b/app/dialogs/resize-dialog.h index 89e7d707ef..0c916c9fd0 100644 --- a/app/dialogs/resize-dialog.h +++ b/app/dialogs/resize-dialog.h @@ -45,8 +45,8 @@ struct _Resize int width; int height; - float resolution_x; - float resolution_y; + double resolution_x; + double resolution_y; GUnit unit; double ratio_x; @@ -65,10 +65,10 @@ struct _Resize Resize * resize_widget_new (ResizeType type, ResizeTarget target, GtkObject * object, - int width, - int height, - float resolution_x, - float resolution_y, + gint width, + gint height, + gdouble resolution_x, + gdouble resolution_y, GUnit unit, gboolean dot_for_dot, GtkSignalFunc ok_cb, diff --git a/app/display/gimpdisplay-ops.c b/app/display/gimpdisplay-ops.c index 43e892b07b..f739760dd7 100644 --- a/app/display/gimpdisplay-ops.c +++ b/app/display/gimpdisplay-ops.c @@ -70,7 +70,7 @@ gdisplay_color_pixel (GDisplay *gdisp) void -gdisplay_xserver_resolution (float *xres, float *yres) +gdisplay_xserver_resolution (gdouble *xres, gdouble *yres) { gint width, height; gint widthMM, heightMM; @@ -91,8 +91,8 @@ gdisplay_xserver_resolution (float *xres, float *yres) * = N * 25.4 pixels / M inch */ - *xres = (width * 25.4) / ((float)widthMM); - *yres = (height * 25.4) / ((float)heightMM); + *xres = (width * 25.4) / ((gdouble) widthMM); + *yres = (height * 25.4) / ((gdouble) heightMM); } diff --git a/app/display/gimpdisplay-ops.h b/app/display/gimpdisplay-ops.h index f9e4b4f94c..8650a2f0da 100644 --- a/app/display/gimpdisplay-ops.h +++ b/app/display/gimpdisplay-ops.h @@ -25,7 +25,7 @@ gulong gdisplay_black_pixel (GDisplay *); gulong gdisplay_gray_pixel (GDisplay *); gulong gdisplay_white_pixel (GDisplay *); gulong gdisplay_color_pixel (GDisplay *); -void gdisplay_xserver_resolution (float *, float *); +void gdisplay_xserver_resolution (gdouble *, gdouble *); void gdisplay_new_view (GDisplay *); void gdisplay_close_window (GDisplay *, int); void gdisplay_shrink_wrap (GDisplay *); diff --git a/app/display/gimpdisplay-scale.c b/app/display/gimpdisplay-scale.c index cbe72d6cdb..9c73de328d 100644 --- a/app/display/gimpdisplay-scale.c +++ b/app/display/gimpdisplay-scale.c @@ -166,7 +166,7 @@ change_scale (GDisplay *gdisp, static gdouble img2real (GDisplay *gdisp, gboolean xdir, gdouble a) { - float res; + gdouble res; if (gdisp->dot_for_dot) return a; diff --git a/app/display/gimpdisplay.c b/app/display/gimpdisplay.c index 76629bcdcb..c874bceccf 100644 --- a/app/display/gimpdisplay.c +++ b/app/display/gimpdisplay.c @@ -1024,14 +1024,14 @@ gdisplay_update_cursor (GDisplay *gdisp, int x, int y) } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + double unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); - g_snprintf (buffer, CURSOR_STR_LENGTH, - gdisp->cursor_format_str, - "", - (float)t_x * unit_factor / gdisp->gimage->xresolution, - ", ", - (float)t_y * unit_factor / gdisp->gimage->yresolution); + g_snprintf + (buffer, CURSOR_STR_LENGTH, gdisp->cursor_format_str, + "", + (double) t_x * unit_factor / gdisp->gimage->xresolution, + ", ", + (double) t_y * unit_factor / gdisp->gimage->yresolution); } gtk_label_set (GTK_LABEL (gdisp->cursor_label), buffer); } @@ -1076,7 +1076,7 @@ gdisplay_resize_cursor_label (GDisplay *gdisp) } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (gdisp->cursor_format_str, sizeof(gdisp->cursor_format_str), "%%s%%.%df%%s%%.%df %s", @@ -1086,14 +1086,14 @@ gdisplay_resize_cursor_label (GDisplay *gdisp) g_snprintf (buffer, sizeof(buffer), gdisp->cursor_format_str, "", - (float)gdisp->gimage->width * unit_factor / + (gdouble) gdisp->gimage->width * unit_factor / gdisp->gimage->xresolution, ", ", - (float)gdisp->gimage->height * unit_factor / + (gdouble) gdisp->gimage->height * unit_factor / gdisp->gimage->yresolution); } cursor_label_width = - gdk_string_width ( gtk_widget_get_style(gdisp->cursor_label)->font, buffer ); + gdk_string_width (gtk_widget_get_style (gdisp->cursor_label)->font, buffer); /* find out how many pixels the label's parent frame is bigger than * the label itself */ diff --git a/app/display/gimpdisplay.h b/app/display/gimpdisplay.h index 420be2d098..5226a6e352 100644 --- a/app/display/gimpdisplay.h +++ b/app/display/gimpdisplay.h @@ -35,11 +35,11 @@ #define SCALESRC(g) (g->scale & 0x00ff) #define SCALEDEST(g) (g->scale >> 8) -/* finding the effective screen resolution (float) */ +/* finding the effective screen resolution (double) */ #define SCREEN_XRES(g) (g->dot_for_dot? g->gimage->xresolution : monitor_xres) #define SCREEN_YRES(g) (g->dot_for_dot? g->gimage->yresolution : monitor_yres) -/* calculate scale factors (float) */ +/* calculate scale factors (double) */ #define SCALEFACTOR_X(g) ((SCALEDEST(g) * SCREEN_XRES(g)) / \ (SCALESRC(g) * g->gimage->xresolution)) #define SCALEFACTOR_Y(g) ((SCALEDEST(g) * SCREEN_YRES(g)) / \ diff --git a/app/display/gimpdisplayshell-draw.c b/app/display/gimpdisplayshell-draw.c index eee91320e1..813580b43d 100644 --- a/app/display/gimpdisplayshell-draw.c +++ b/app/display/gimpdisplayshell-draw.c @@ -790,7 +790,7 @@ create_display_shell (GDisplay* gdisp, /* - * String, integer, float and size query boxes + * String, integer, double and size query boxes */ typedef struct _QueryBox QueryBox; @@ -812,7 +812,7 @@ static gint query_box_delete_callback (GtkWidget *, GdkEvent *, gpointer); static void query_box_cancel_callback (GtkWidget *, gpointer); static void string_query_box_ok_callback (GtkWidget *, gpointer); static void int_query_box_ok_callback (GtkWidget *, gpointer); -static void float_query_box_ok_callback (GtkWidget *, gpointer); +static void double_query_box_ok_callback (GtkWidget *, gpointer); static void size_query_box_ok_callback (GtkWidget *, gpointer); /* create a generic query box without any entry widget @@ -830,8 +830,12 @@ create_query_box (gchar *title, GtkWidget *qbox; GtkWidget *vbox; GtkWidget *label; - GtkWidget *ok_button; - GtkWidget *button; + + static ActionAreaItem action_items[] = + { + { N_("OK"), (ActionCallback) NULL, NULL, NULL }, + { N_("Cancel"), (ActionCallback) query_box_cancel_callback, NULL, NULL } + }; query_box = (QueryBox *) g_malloc (sizeof (QueryBox)); @@ -852,23 +856,9 @@ create_query_box (gchar *title, else object = NULL; - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (qbox)->action_area), 2); - - ok_button = gtk_button_new_with_label (_("OK")); - GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (qbox)->action_area), ok_button, - TRUE, TRUE, 0); - gtk_widget_grab_default (ok_button); - gtk_widget_show (ok_button); - - button = gtk_button_new_with_label (_("Cancel")); - GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - (GtkSignalFunc) query_box_cancel_callback, - query_box); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (qbox)->action_area), button, - TRUE, TRUE, 0); - gtk_widget_show (button); + /* The action area */ + action_items[1].user_data = query_box; + build_action_area (GTK_DIALOG (qbox), action_items, 2, 0); vbox = gtk_vbox_new (FALSE, 1); gtk_container_set_border_width (GTK_CONTAINER (vbox), 2); @@ -882,7 +872,7 @@ create_query_box (gchar *title, query_box->qbox = qbox; query_box->vbox = vbox; query_box->entry = NULL; - query_box->ok_button = ok_button; + query_box->ok_button = action_items[0].widget; query_box->object = object; query_box->callback = callback; query_box->data = data; @@ -958,16 +948,16 @@ query_int_box (gchar *title, } GtkWidget * -query_float_box (gchar *title, - gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, - gint digits, - GtkObject *object, - gchar *signal, - QueryFunc callback, - gpointer data) +query_double_box (gchar *title, + gchar *message, + gdouble initial, + gdouble lower, + gdouble upper, + gint digits, + GtkObject *object, + gchar *signal, + QueryFunc callback, + gpointer data) { QueryBox *query_box; GtkAdjustment* adjustment; @@ -976,7 +966,7 @@ query_float_box (gchar *title, query_box = create_query_box (title, message, object, signal, callback, data); gtk_signal_connect (GTK_OBJECT (query_box->ok_button), "clicked", - (GtkSignalFunc) float_query_box_ok_callback, + (GtkSignalFunc) double_query_box_ok_callback, query_box); adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (initial, lower, upper, @@ -996,12 +986,13 @@ query_float_box (gchar *title, GtkWidget * query_size_box (gchar *title, gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, + gdouble initial, + gdouble lower, + gdouble upper, gint digits, GUnit unit, - gfloat resolution, + gdouble resolution, + gint dot_for_dot, GtkObject *object, gchar *signal, QueryFunc callback, @@ -1025,6 +1016,9 @@ query_size_box (gchar *title, lower, upper); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 0, initial); + if (dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), UNIT_PIXEL); + gtk_box_pack_start (GTK_BOX (query_box->vbox), sizeentry, TRUE, TRUE, 0); gimp_size_entry_grab_focus (GIMP_SIZE_ENTRY (sizeentry)); gtk_widget_show (sizeentry); @@ -1106,7 +1100,7 @@ int_query_box_ok_callback (GtkWidget *w, /* Get the spinbutton data */ integer_value = g_malloc (sizeof (gint)); *integer_value = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(query_box->entry)); + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (query_box->entry)); /* Call the user defined callback */ (* query_box->callback) (w, query_box->data, (gpointer) integer_value); @@ -1118,11 +1112,11 @@ int_query_box_ok_callback (GtkWidget *w, } static void -float_query_box_ok_callback (GtkWidget *w, - gpointer client_data) +double_query_box_ok_callback (GtkWidget *w, + gpointer client_data) { QueryBox *query_box; - gfloat *float_value; + gdouble *double_value; query_box = (QueryBox *) client_data; @@ -1131,12 +1125,12 @@ float_query_box_ok_callback (GtkWidget *w, gtk_signal_disconnect_by_data (query_box->object, query_box); /* Get the spinbutton data */ - float_value = g_malloc (sizeof (gfloat)); - *float_value = - gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(query_box->entry)); + double_value = g_malloc (sizeof (gdouble)); + *double_value = + gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (query_box->entry)); /* Call the user defined callback */ - (* query_box->callback) (w, query_box->data, (gpointer) float_value); + (* query_box->callback) (w, query_box->data, (gpointer) double_value); /* Destroy the box */ gtk_widget_destroy (query_box->qbox); @@ -1149,7 +1143,7 @@ size_query_box_ok_callback (GtkWidget *w, gpointer client_data) { QueryBox *query_box; - gfloat *float_value; + gdouble *double_value; query_box = (QueryBox *) client_data; @@ -1158,8 +1152,8 @@ size_query_box_ok_callback (GtkWidget *w, gtk_signal_disconnect_by_data (query_box->object, query_box); /* Get the sizeentry data */ - float_value = g_malloc (sizeof (gfloat)); - *float_value = + double_value = g_malloc (sizeof (gdouble)); + *double_value = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (query_box->entry), 0); /* Pass the selected unit to the callback */ @@ -1168,7 +1162,7 @@ size_query_box_ok_callback (GtkWidget *w, (gpointer) gimp_size_entry_get_unit (GIMP_SIZE_ENTRY (query_box->entry))); /* Call the user defined callback */ - (* query_box->callback) (w, query_box->data, (gpointer) float_value); + (* query_box->callback) (w, query_box->data, (gpointer) double_value); /* Destroy the box */ gtk_widget_destroy (query_box->qbox); @@ -1217,7 +1211,7 @@ message_box (char *message, gtk_window_set_wmclass (GTK_WINDOW (mbox), "gimp_message", "Gimp"); gtk_window_set_title (GTK_WINDOW (mbox), _("GIMP Message")); gtk_window_position (GTK_WINDOW (mbox), GTK_WIN_POS_MOUSE); - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (mbox)->action_area), 2); + gtk_signal_connect (GTK_OBJECT (mbox), "delete_event", GTK_SIGNAL_FUNC (message_box_delete_callback), msg_box); diff --git a/app/display/gimpdisplayshell-draw.h b/app/display/gimpdisplayshell-draw.h index 5679f4c4c0..2e3a1f5ca0 100644 --- a/app/display/gimpdisplayshell-draw.h +++ b/app/display/gimpdisplayshell-draw.h @@ -77,11 +77,11 @@ GtkWidget * query_int_box (gchar *title, gchar *signal, QueryFunc callback, gpointer data); -GtkWidget * query_float_box (gchar *title, +GtkWidget * query_double_box (gchar *title, gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, + gdouble initial, + gdouble lower, + gdouble upper, gint digits, GtkObject *object, gchar *signal, @@ -89,12 +89,13 @@ GtkWidget * query_float_box (gchar *title, gpointer data); GtkWidget * query_size_box (gchar *title, gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, + gdouble initial, + gdouble lower, + gdouble upper, gint digits, GUnit unit, - gfloat resolution, + gdouble resolution, + gint dot_for_dot, GtkObject *object, gchar *signal, QueryFunc callback, diff --git a/app/display/gimpdisplayshell-scale.c b/app/display/gimpdisplayshell-scale.c index cbe72d6cdb..9c73de328d 100644 --- a/app/display/gimpdisplayshell-scale.c +++ b/app/display/gimpdisplayshell-scale.c @@ -166,7 +166,7 @@ change_scale (GDisplay *gdisp, static gdouble img2real (GDisplay *gdisp, gboolean xdir, gdouble a) { - float res; + gdouble res; if (gdisp->dot_for_dot) return a; diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c index eee91320e1..813580b43d 100644 --- a/app/display/gimpdisplayshell.c +++ b/app/display/gimpdisplayshell.c @@ -790,7 +790,7 @@ create_display_shell (GDisplay* gdisp, /* - * String, integer, float and size query boxes + * String, integer, double and size query boxes */ typedef struct _QueryBox QueryBox; @@ -812,7 +812,7 @@ static gint query_box_delete_callback (GtkWidget *, GdkEvent *, gpointer); static void query_box_cancel_callback (GtkWidget *, gpointer); static void string_query_box_ok_callback (GtkWidget *, gpointer); static void int_query_box_ok_callback (GtkWidget *, gpointer); -static void float_query_box_ok_callback (GtkWidget *, gpointer); +static void double_query_box_ok_callback (GtkWidget *, gpointer); static void size_query_box_ok_callback (GtkWidget *, gpointer); /* create a generic query box without any entry widget @@ -830,8 +830,12 @@ create_query_box (gchar *title, GtkWidget *qbox; GtkWidget *vbox; GtkWidget *label; - GtkWidget *ok_button; - GtkWidget *button; + + static ActionAreaItem action_items[] = + { + { N_("OK"), (ActionCallback) NULL, NULL, NULL }, + { N_("Cancel"), (ActionCallback) query_box_cancel_callback, NULL, NULL } + }; query_box = (QueryBox *) g_malloc (sizeof (QueryBox)); @@ -852,23 +856,9 @@ create_query_box (gchar *title, else object = NULL; - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (qbox)->action_area), 2); - - ok_button = gtk_button_new_with_label (_("OK")); - GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (qbox)->action_area), ok_button, - TRUE, TRUE, 0); - gtk_widget_grab_default (ok_button); - gtk_widget_show (ok_button); - - button = gtk_button_new_with_label (_("Cancel")); - GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - (GtkSignalFunc) query_box_cancel_callback, - query_box); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (qbox)->action_area), button, - TRUE, TRUE, 0); - gtk_widget_show (button); + /* The action area */ + action_items[1].user_data = query_box; + build_action_area (GTK_DIALOG (qbox), action_items, 2, 0); vbox = gtk_vbox_new (FALSE, 1); gtk_container_set_border_width (GTK_CONTAINER (vbox), 2); @@ -882,7 +872,7 @@ create_query_box (gchar *title, query_box->qbox = qbox; query_box->vbox = vbox; query_box->entry = NULL; - query_box->ok_button = ok_button; + query_box->ok_button = action_items[0].widget; query_box->object = object; query_box->callback = callback; query_box->data = data; @@ -958,16 +948,16 @@ query_int_box (gchar *title, } GtkWidget * -query_float_box (gchar *title, - gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, - gint digits, - GtkObject *object, - gchar *signal, - QueryFunc callback, - gpointer data) +query_double_box (gchar *title, + gchar *message, + gdouble initial, + gdouble lower, + gdouble upper, + gint digits, + GtkObject *object, + gchar *signal, + QueryFunc callback, + gpointer data) { QueryBox *query_box; GtkAdjustment* adjustment; @@ -976,7 +966,7 @@ query_float_box (gchar *title, query_box = create_query_box (title, message, object, signal, callback, data); gtk_signal_connect (GTK_OBJECT (query_box->ok_button), "clicked", - (GtkSignalFunc) float_query_box_ok_callback, + (GtkSignalFunc) double_query_box_ok_callback, query_box); adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (initial, lower, upper, @@ -996,12 +986,13 @@ query_float_box (gchar *title, GtkWidget * query_size_box (gchar *title, gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, + gdouble initial, + gdouble lower, + gdouble upper, gint digits, GUnit unit, - gfloat resolution, + gdouble resolution, + gint dot_for_dot, GtkObject *object, gchar *signal, QueryFunc callback, @@ -1025,6 +1016,9 @@ query_size_box (gchar *title, lower, upper); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 0, initial); + if (dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), UNIT_PIXEL); + gtk_box_pack_start (GTK_BOX (query_box->vbox), sizeentry, TRUE, TRUE, 0); gimp_size_entry_grab_focus (GIMP_SIZE_ENTRY (sizeentry)); gtk_widget_show (sizeentry); @@ -1106,7 +1100,7 @@ int_query_box_ok_callback (GtkWidget *w, /* Get the spinbutton data */ integer_value = g_malloc (sizeof (gint)); *integer_value = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(query_box->entry)); + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (query_box->entry)); /* Call the user defined callback */ (* query_box->callback) (w, query_box->data, (gpointer) integer_value); @@ -1118,11 +1112,11 @@ int_query_box_ok_callback (GtkWidget *w, } static void -float_query_box_ok_callback (GtkWidget *w, - gpointer client_data) +double_query_box_ok_callback (GtkWidget *w, + gpointer client_data) { QueryBox *query_box; - gfloat *float_value; + gdouble *double_value; query_box = (QueryBox *) client_data; @@ -1131,12 +1125,12 @@ float_query_box_ok_callback (GtkWidget *w, gtk_signal_disconnect_by_data (query_box->object, query_box); /* Get the spinbutton data */ - float_value = g_malloc (sizeof (gfloat)); - *float_value = - gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(query_box->entry)); + double_value = g_malloc (sizeof (gdouble)); + *double_value = + gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (query_box->entry)); /* Call the user defined callback */ - (* query_box->callback) (w, query_box->data, (gpointer) float_value); + (* query_box->callback) (w, query_box->data, (gpointer) double_value); /* Destroy the box */ gtk_widget_destroy (query_box->qbox); @@ -1149,7 +1143,7 @@ size_query_box_ok_callback (GtkWidget *w, gpointer client_data) { QueryBox *query_box; - gfloat *float_value; + gdouble *double_value; query_box = (QueryBox *) client_data; @@ -1158,8 +1152,8 @@ size_query_box_ok_callback (GtkWidget *w, gtk_signal_disconnect_by_data (query_box->object, query_box); /* Get the sizeentry data */ - float_value = g_malloc (sizeof (gfloat)); - *float_value = + double_value = g_malloc (sizeof (gdouble)); + *double_value = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (query_box->entry), 0); /* Pass the selected unit to the callback */ @@ -1168,7 +1162,7 @@ size_query_box_ok_callback (GtkWidget *w, (gpointer) gimp_size_entry_get_unit (GIMP_SIZE_ENTRY (query_box->entry))); /* Call the user defined callback */ - (* query_box->callback) (w, query_box->data, (gpointer) float_value); + (* query_box->callback) (w, query_box->data, (gpointer) double_value); /* Destroy the box */ gtk_widget_destroy (query_box->qbox); @@ -1217,7 +1211,7 @@ message_box (char *message, gtk_window_set_wmclass (GTK_WINDOW (mbox), "gimp_message", "Gimp"); gtk_window_set_title (GTK_WINDOW (mbox), _("GIMP Message")); gtk_window_position (GTK_WINDOW (mbox), GTK_WIN_POS_MOUSE); - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (mbox)->action_area), 2); + gtk_signal_connect (GTK_OBJECT (mbox), "delete_event", GTK_SIGNAL_FUNC (message_box_delete_callback), msg_box); diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h index 5679f4c4c0..2e3a1f5ca0 100644 --- a/app/display/gimpdisplayshell.h +++ b/app/display/gimpdisplayshell.h @@ -77,11 +77,11 @@ GtkWidget * query_int_box (gchar *title, gchar *signal, QueryFunc callback, gpointer data); -GtkWidget * query_float_box (gchar *title, +GtkWidget * query_double_box (gchar *title, gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, + gdouble initial, + gdouble lower, + gdouble upper, gint digits, GtkObject *object, gchar *signal, @@ -89,12 +89,13 @@ GtkWidget * query_float_box (gchar *title, gpointer data); GtkWidget * query_size_box (gchar *title, gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, + gdouble initial, + gdouble lower, + gdouble upper, gint digits, GUnit unit, - gfloat resolution, + gdouble resolution, + gint dot_for_dot, GtkObject *object, gchar *signal, QueryFunc callback, diff --git a/app/edit_selection.c b/app/edit_selection.c index 4173af4e65..871f2d3b47 100644 --- a/app/edit_selection.c +++ b/app/edit_selection.c @@ -447,7 +447,7 @@ edit_selection_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (offset, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Move: "), diff --git a/app/file_new_dialog.c b/app/file_new_dialog.c index 4b557d7c67..972f455906 100644 --- a/app/file_new_dialog.c +++ b/app/file_new_dialog.c @@ -295,8 +295,9 @@ file_new_confirm_dialog (NewImageValues *vals) vals->confirm_dlg = gtk_dialog_new (); gtk_window_set_wmclass (GTK_WINDOW (vals->confirm_dlg), - "really_create", "Gimp"); + "confirm_size", "Gimp"); gtk_window_set_title (GTK_WINDOW (vals->confirm_dlg), _("Confirm Image Size")); + gtk_window_set_policy (GTK_WINDOW (vals->confirm_dlg), FALSE, FALSE, FALSE); gtk_window_position (GTK_WINDOW (vals->confirm_dlg), GTK_WIN_POS_MOUSE); /* Handle the wm close signal */ @@ -480,7 +481,6 @@ file_new_cmd_callback (GtkWidget *widget, N_("RGB"), N_("Grayscale") }; - static gchar *fill_type_names[] = { N_("Foreground"), diff --git a/app/gdisplay.c b/app/gdisplay.c index 76629bcdcb..c874bceccf 100644 --- a/app/gdisplay.c +++ b/app/gdisplay.c @@ -1024,14 +1024,14 @@ gdisplay_update_cursor (GDisplay *gdisp, int x, int y) } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + double unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); - g_snprintf (buffer, CURSOR_STR_LENGTH, - gdisp->cursor_format_str, - "", - (float)t_x * unit_factor / gdisp->gimage->xresolution, - ", ", - (float)t_y * unit_factor / gdisp->gimage->yresolution); + g_snprintf + (buffer, CURSOR_STR_LENGTH, gdisp->cursor_format_str, + "", + (double) t_x * unit_factor / gdisp->gimage->xresolution, + ", ", + (double) t_y * unit_factor / gdisp->gimage->yresolution); } gtk_label_set (GTK_LABEL (gdisp->cursor_label), buffer); } @@ -1076,7 +1076,7 @@ gdisplay_resize_cursor_label (GDisplay *gdisp) } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (gdisp->cursor_format_str, sizeof(gdisp->cursor_format_str), "%%s%%.%df%%s%%.%df %s", @@ -1086,14 +1086,14 @@ gdisplay_resize_cursor_label (GDisplay *gdisp) g_snprintf (buffer, sizeof(buffer), gdisp->cursor_format_str, "", - (float)gdisp->gimage->width * unit_factor / + (gdouble) gdisp->gimage->width * unit_factor / gdisp->gimage->xresolution, ", ", - (float)gdisp->gimage->height * unit_factor / + (gdouble) gdisp->gimage->height * unit_factor / gdisp->gimage->yresolution); } cursor_label_width = - gdk_string_width ( gtk_widget_get_style(gdisp->cursor_label)->font, buffer ); + gdk_string_width (gtk_widget_get_style (gdisp->cursor_label)->font, buffer); /* find out how many pixels the label's parent frame is bigger than * the label itself */ diff --git a/app/gdisplay.h b/app/gdisplay.h index 420be2d098..5226a6e352 100644 --- a/app/gdisplay.h +++ b/app/gdisplay.h @@ -35,11 +35,11 @@ #define SCALESRC(g) (g->scale & 0x00ff) #define SCALEDEST(g) (g->scale >> 8) -/* finding the effective screen resolution (float) */ +/* finding the effective screen resolution (double) */ #define SCREEN_XRES(g) (g->dot_for_dot? g->gimage->xresolution : monitor_xres) #define SCREEN_YRES(g) (g->dot_for_dot? g->gimage->yresolution : monitor_yres) -/* calculate scale factors (float) */ +/* calculate scale factors (double) */ #define SCALEFACTOR_X(g) ((SCALEDEST(g) * SCREEN_XRES(g)) / \ (SCALESRC(g) * g->gimage->xresolution)) #define SCALEFACTOR_Y(g) ((SCALEDEST(g) * SCREEN_YRES(g)) / \ diff --git a/app/gdisplay_ops.c b/app/gdisplay_ops.c index 43e892b07b..f739760dd7 100644 --- a/app/gdisplay_ops.c +++ b/app/gdisplay_ops.c @@ -70,7 +70,7 @@ gdisplay_color_pixel (GDisplay *gdisp) void -gdisplay_xserver_resolution (float *xres, float *yres) +gdisplay_xserver_resolution (gdouble *xres, gdouble *yres) { gint width, height; gint widthMM, heightMM; @@ -91,8 +91,8 @@ gdisplay_xserver_resolution (float *xres, float *yres) * = N * 25.4 pixels / M inch */ - *xres = (width * 25.4) / ((float)widthMM); - *yres = (height * 25.4) / ((float)heightMM); + *xres = (width * 25.4) / ((gdouble) widthMM); + *yres = (height * 25.4) / ((gdouble) heightMM); } diff --git a/app/gdisplay_ops.h b/app/gdisplay_ops.h index f9e4b4f94c..8650a2f0da 100644 --- a/app/gdisplay_ops.h +++ b/app/gdisplay_ops.h @@ -25,7 +25,7 @@ gulong gdisplay_black_pixel (GDisplay *); gulong gdisplay_gray_pixel (GDisplay *); gulong gdisplay_white_pixel (GDisplay *); gulong gdisplay_color_pixel (GDisplay *); -void gdisplay_xserver_resolution (float *, float *); +void gdisplay_xserver_resolution (gdouble *, gdouble *); void gdisplay_new_view (GDisplay *); void gdisplay_close_window (GDisplay *, int); void gdisplay_shrink_wrap (GDisplay *); diff --git a/app/gimpimage.c b/app/gimpimage.c index 181e43e32d..5090a660de 100644 --- a/app/gimpimage.c +++ b/app/gimpimage.c @@ -319,8 +319,8 @@ gimp_image_set_filename (GimpImage *gimage, char *filename) void gimp_image_set_resolution (GimpImage *gimage, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { gimage->xresolution = xresolution; gimage->yresolution = yresolution; @@ -328,8 +328,8 @@ gimp_image_set_resolution (GimpImage *gimage, void gimp_image_get_resolution (GimpImage *gimage, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { g_return_if_fail(xresolution && yresolution); *xresolution = gimage->xresolution; diff --git a/app/gimpimage.h b/app/gimpimage.h index 0324fca9b3..dfbe1f6593 100644 --- a/app/gimpimage.h +++ b/app/gimpimage.h @@ -108,10 +108,11 @@ GtkType gimp_image_get_type(void); GimpImage * gimp_image_new (int, int, int); void gimp_image_set_filename (GimpImage *, char *); -void gimp_image_set_resolution (GimpImage *, float, float); +void gimp_image_set_resolution (GimpImage *, + double, double); void gimp_image_get_resolution (GimpImage *, - float *, - float *); + double *, + double *); void gimp_image_set_unit (GimpImage *, GUnit); GUnit gimp_image_get_unit (GimpImage *); void gimp_image_set_save_proc (GimpImage *, PlugInProcDef *); diff --git a/app/gimpimageP.h b/app/gimpimageP.h index 366fb0416c..36e9bcc61d 100644 --- a/app/gimpimageP.h +++ b/app/gimpimageP.h @@ -22,8 +22,8 @@ struct _GimpImage PlugInProcDef *save_proc; /* last PDB save proc used */ int width, height; /* width and height attributes */ - float xresolution; /* image x-res, in dpi */ - float yresolution; /* image y-res, in dpi */ + double xresolution; /* image x-res, in dpi */ + double yresolution; /* image y-res, in dpi */ GUnit unit; /* image unit */ int base_type; /* base gimp_image type */ diff --git a/app/gimpunit.c b/app/gimpunit.c index c8e0e7c0eb..834832354c 100644 --- a/app/gimpunit.c +++ b/app/gimpunit.c @@ -40,7 +40,7 @@ typedef struct { guint delete_on_exit; - float factor; + gdouble factor; gint digits; gchar *identifier; gchar *symbol; @@ -100,13 +100,13 @@ gimp_unit_get_number_of_built_in_units (void) GUnit -gimp_unit_new (gchar *identifier, - gfloat factor, - gint digits, - gchar *symbol, - gchar *abbreviation, - gchar *singular, - gchar *plural) +gimp_unit_new (gchar *identifier, + gdouble factor, + gint digits, + gchar *symbol, + gchar *abbreviation, + gchar *singular, + gchar *plural) { GimpUnitDef *user_unit; @@ -151,7 +151,7 @@ gimp_unit_set_deletion_flag (GUnit unit, } -gfloat +gdouble gimp_unit_get_factor (GUnit unit) { g_return_val_if_fail ( (unit >= UNIT_PIXEL) && diff --git a/app/gui/commands.c b/app/gui/commands.c index 6126ccc7d5..64b87beffc 100644 --- a/app/gui/commands.c +++ b/app/gui/commands.c @@ -365,9 +365,10 @@ select_border_cmd_callback (GtkWidget *widget, query_size_box (_("Border Selection"), _("Border selection by:"), selection_border_radius, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_border_callback, gdisp->gimage); } @@ -382,9 +383,10 @@ select_feather_cmd_callback (GtkWidget *widget, query_size_box (_("Feather Selection"), _("Feather selection by:"), selection_feather_radius, 0, 32767, 3, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_feather_callback, gdisp->gimage); } @@ -399,9 +401,10 @@ select_grow_cmd_callback (GtkWidget *widget, query_size_box (_("Grow Selection"), _("Grow selection by:"), selection_grow_pixels, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_grow_callback, gdisp->gimage); } @@ -416,9 +419,10 @@ select_shrink_cmd_callback (GtkWidget *widget, query_size_box (_("Shrink Selection"), _("Shrink selection by:"), selection_shrink_pixels, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_shrink_callback, gdisp->gimage); } @@ -1211,7 +1215,7 @@ gimage_mask_feather_callback (GtkWidget *w, double radius_x; double radius_y; - selection_feather_radius = *(float*) call_data; + selection_feather_radius = *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1245,7 +1249,7 @@ gimage_mask_border_callback (GtkWidget *w, double radius_x; double radius_y; - selection_border_radius = (int) *(float*) call_data; + selection_border_radius = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1279,7 +1283,7 @@ gimage_mask_grow_callback (GtkWidget *w, double radius_x; double radius_y; - selection_grow_pixels = (int) *(float*) call_data; + selection_grow_pixels = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1313,7 +1317,7 @@ gimage_mask_shrink_callback (GtkWidget *w, int radius_x; int radius_y; - selection_shrink_pixels = (int) *(float*) call_data; + selection_shrink_pixels = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); diff --git a/app/gui/file-new-dialog.c b/app/gui/file-new-dialog.c index 4b557d7c67..972f455906 100644 --- a/app/gui/file-new-dialog.c +++ b/app/gui/file-new-dialog.c @@ -295,8 +295,9 @@ file_new_confirm_dialog (NewImageValues *vals) vals->confirm_dlg = gtk_dialog_new (); gtk_window_set_wmclass (GTK_WINDOW (vals->confirm_dlg), - "really_create", "Gimp"); + "confirm_size", "Gimp"); gtk_window_set_title (GTK_WINDOW (vals->confirm_dlg), _("Confirm Image Size")); + gtk_window_set_policy (GTK_WINDOW (vals->confirm_dlg), FALSE, FALSE, FALSE); gtk_window_position (GTK_WINDOW (vals->confirm_dlg), GTK_WIN_POS_MOUSE); /* Handle the wm close signal */ @@ -480,7 +481,6 @@ file_new_cmd_callback (GtkWidget *widget, N_("RGB"), N_("Grayscale") }; - static gchar *fill_type_names[] = { N_("Foreground"), diff --git a/app/gui/help-commands.c b/app/gui/help-commands.c index 6126ccc7d5..64b87beffc 100644 --- a/app/gui/help-commands.c +++ b/app/gui/help-commands.c @@ -365,9 +365,10 @@ select_border_cmd_callback (GtkWidget *widget, query_size_box (_("Border Selection"), _("Border selection by:"), selection_border_radius, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_border_callback, gdisp->gimage); } @@ -382,9 +383,10 @@ select_feather_cmd_callback (GtkWidget *widget, query_size_box (_("Feather Selection"), _("Feather selection by:"), selection_feather_radius, 0, 32767, 3, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_feather_callback, gdisp->gimage); } @@ -399,9 +401,10 @@ select_grow_cmd_callback (GtkWidget *widget, query_size_box (_("Grow Selection"), _("Grow selection by:"), selection_grow_pixels, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_grow_callback, gdisp->gimage); } @@ -416,9 +419,10 @@ select_shrink_cmd_callback (GtkWidget *widget, query_size_box (_("Shrink Selection"), _("Shrink selection by:"), selection_shrink_pixels, 1, 32767, 0, - gdisp->dot_for_dot ? UNIT_PIXEL : gdisp->gimage->unit, + gdisp->gimage->unit, MIN (gdisp->gimage->xresolution, gdisp->gimage->yresolution), + gdisp->dot_for_dot, GTK_OBJECT (gdisp->gimage), "destroy", gimage_mask_shrink_callback, gdisp->gimage); } @@ -1211,7 +1215,7 @@ gimage_mask_feather_callback (GtkWidget *w, double radius_x; double radius_y; - selection_feather_radius = *(float*) call_data; + selection_feather_radius = *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1245,7 +1249,7 @@ gimage_mask_border_callback (GtkWidget *w, double radius_x; double radius_y; - selection_border_radius = (int) *(float*) call_data; + selection_border_radius = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1279,7 +1283,7 @@ gimage_mask_grow_callback (GtkWidget *w, double radius_x; double radius_y; - selection_grow_pixels = (int) *(float*) call_data; + selection_grow_pixels = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); @@ -1313,7 +1317,7 @@ gimage_mask_shrink_callback (GtkWidget *w, int radius_x; int radius_y; - selection_shrink_pixels = (int) *(float*) call_data; + selection_shrink_pixels = (int) *(double*) call_data; g_free (call_data); unit = (GUnit) gtk_object_get_data (GTK_OBJECT (w), "size_query_unit"); diff --git a/app/gui/info-window.c b/app/gui/info-window.c index 425c1f6e56..36b0e65f0b 100644 --- a/app/gui/info-window.c +++ b/app/gui/info-window.c @@ -200,7 +200,7 @@ info_window_update (InfoDialog *info_win, GDisplay *gdisp; InfoWinData *iwd; int type; - gfloat unit_factor; + gdouble unit_factor; gint unit_digits; gchar format_buf[32]; diff --git a/app/gui/layers-dialog.c b/app/gui/layers-dialog.c index a4c6d507f0..d7fe9dc6a4 100644 --- a/app/gui/layers-dialog.c +++ b/app/gui/layers-dialog.c @@ -3129,11 +3129,6 @@ new_layer_query_fill_type_callback (GtkWidget *w, static void layers_dialog_new_layer_query (GimpImage* gimage) { - static ActionAreaItem action_items[2] = - { - { N_("OK"), new_layer_query_ok_callback, NULL, NULL }, - { N_("Cancel"), new_layer_query_cancel_callback, NULL, NULL } - }; NewLayerOptions *options; GtkWidget *vbox; GtkWidget *table; @@ -3145,13 +3140,18 @@ layers_dialog_new_layer_query (GimpImage* gimage) GtkWidget *radio_button; GSList *group = NULL; int i; - char *button_names[4] = + char *button_names[] = { N_("Foreground"), N_("Background"), N_("White"), N_("Transparent") }; + static ActionAreaItem action_items[] = + { + { N_("OK"), new_layer_query_ok_callback, NULL, NULL }, + { N_("Cancel"), new_layer_query_cancel_callback, NULL, NULL } + }; /* the new options structure */ options = (NewLayerOptions *) g_malloc (sizeof (NewLayerOptions)); @@ -3160,7 +3160,8 @@ layers_dialog_new_layer_query (GimpImage* gimage) /* the dialog */ options->query_box = gtk_dialog_new (); - gtk_window_set_wmclass (GTK_WINDOW (options->query_box), "new_layer_options", "Gimp"); + gtk_window_set_wmclass (GTK_WINDOW (options->query_box), + "new_layer_options", "Gimp"); gtk_window_set_title (GTK_WINDOW (options->query_box), _("New Layer Options")); gtk_window_position (GTK_WINDOW (options->query_box), GTK_WIN_POS_MOUSE); @@ -3215,7 +3216,7 @@ layers_dialog_new_layer_query (GimpImage* gimage) gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); gtk_widget_set_usize (spinbutton, 75, 0); - options->size_se = gimp_size_entry_new (1, UNIT_PIXEL, "%a", + options->size_se = gimp_size_entry_new (1, gimage->unit, "%a", TRUE, TRUE, FALSE, 75, GIMP_SIZE_ENTRY_UPDATE_SIZE); gimp_size_entry_add_field (GIMP_SIZE_ENTRY (options->size_se), @@ -3249,6 +3250,8 @@ layers_dialog_new_layer_query (GimpImage* gimage) gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (options->size_se), 1, gimage->height); + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (options->size_se), UNIT_PIXEL); + gtk_widget_show (table); /* the radio frame and box */ diff --git a/app/gui/preferences-dialog.c b/app/gui/preferences-dialog.c index 48e3976601..a5744b23c0 100644 --- a/app/gui/preferences-dialog.c +++ b/app/gui/preferences-dialog.c @@ -33,6 +33,7 @@ #include "libgimp/gimpfileselection.h" #include "libgimp/gimppatheditor.h" #include "libgimp/gimpsizeentry.h" +#include "libgimp/gimplimits.h" #include "libgimp/gimpintl.h" /* preferences local functions */ @@ -245,7 +246,8 @@ file_prefs_ok_callback (GtkWidget *widget, default_units = old_default_units; return; } - if (default_xresolution < 1e-5 || default_yresolution < 1e-5) + if (default_xresolution < GIMP_MIN_RESOLUTION || + default_yresolution < GIMP_MIN_RESOLUTION) { g_message (_("Error: default resolution must not be zero.")); default_xresolution = old_default_xresolution; @@ -259,7 +261,8 @@ file_prefs_ok_callback (GtkWidget *widget, default_resolution_units = old_default_resolution_units; return; } - if (monitor_xres < 1e-5 || monitor_yres < 1e-5) + if (monitor_xres < GIMP_MIN_RESOLUTION || + monitor_yres < GIMP_MIN_RESOLUTION) { g_message (_("Error: Monitor resolution must not be zero.")); monitor_xres = old_monitor_xres; @@ -388,9 +391,9 @@ file_prefs_save_callback (GtkWidget *widget, update = g_list_append (update, "default-image-size"); if (default_units != old_default_units) update = g_list_append (update, "default-units"); - if (ABS(default_xresolution - old_default_xresolution) > 1e-5) + if (ABS(default_xresolution - old_default_xresolution) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "default-xresolution"); - if (ABS(default_yresolution - old_default_yresolution) > 1e-5) + if (ABS(default_yresolution - old_default_yresolution) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "default-yresolution"); if (default_resolution_units != old_default_resolution_units) update = g_list_append (update, "default-resolution-units"); @@ -405,10 +408,10 @@ file_prefs_save_callback (GtkWidget *widget, if (transparency_size != old_transparency_size) update = g_list_append (update, "transparency-size"); if (using_xserver_resolution != old_using_xserver_resolution || - ABS(monitor_xres - old_monitor_xres) > 1e-5) + ABS(monitor_xres - old_monitor_xres) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "monitor-xresolution"); if (using_xserver_resolution != old_using_xserver_resolution || - ABS(monitor_yres - old_monitor_yres) > 1e-5) + ABS(monitor_yres - old_monitor_yres) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "monitor-yresolution"); if (edit_num_processors != num_processors) update = g_list_append (update, "num-processors"); @@ -510,13 +513,7 @@ file_prefs_save_callback (GtkWidget *widget, save_gimprc (&update, &remove); if (using_xserver_resolution) - { - gfloat xres, yres; - - gdisplay_xserver_resolution (&xres, &yres); - monitor_xres = xres; - monitor_yres = yres; - } + gdisplay_xserver_resolution (&monitor_xres, &monitor_yres); /* Restore variables which must not change */ stingy_memory_use = save_stingy_memory_use; @@ -863,21 +860,17 @@ file_prefs_res_source_callback (GtkWidget *widget, if (GTK_TOGGLE_BUTTON (widget)->active) { - gfloat xres, yres; - - gdisplay_xserver_resolution (&xres, &yres); - monitor_xres = xres; - monitor_yres = yres; + gdisplay_xserver_resolution (&monitor_xres, &monitor_yres); using_xserver_resolution = TRUE; } else { if (monitor_resolution_sizeentry) { - monitor_xres = - gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0); - monitor_yres = - gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1); + monitor_xres = gimp_size_entry_get_refval + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0); + monitor_yres = gimp_size_entry_get_refval + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1); } using_xserver_resolution = FALSE; } @@ -1535,9 +1528,11 @@ file_pref_cmd_callback (GtkWidget *widget, gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, default_yresolution, FALSE); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_size_sizeentry), 0, 1, 32767); + (GIMP_SIZE_ENTRY (default_size_sizeentry), 0, + GIMP_MIN_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, 1, 32767); + (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, + GIMP_MIN_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_size_sizeentry), 0, default_width); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, @@ -1572,9 +1567,11 @@ file_pref_cmd_callback (GtkWidget *widget, FALSE, FALSE, TRUE, 75, GIMP_SIZE_ENTRY_UPDATE_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 0, 1, 32767); + (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 0, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 1, 1, 32767); + (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 1, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 0, default_xresolution); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_resolution_sizeentry), @@ -1603,7 +1600,7 @@ file_pref_cmd_callback (GtkWidget *widget, gtk_table_attach_defaults (GTK_TABLE (default_resolution_sizeentry), button, 1, 3, 3, 4); - if (ABS (default_xresolution - default_yresolution) < 1e-5) + if (ABS (default_xresolution - default_yresolution) < GIMP_MIN_RESOLUTION) gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (button), TRUE); gtk_widget_show (button); @@ -2205,7 +2202,7 @@ file_pref_cmd_callback (GtkWidget *widget, gtk_widget_show (button); { - gfloat xres, yres; + gdouble xres, yres; gchar buf[80]; gdisplay_xserver_resolution (&xres, &yres); @@ -2234,9 +2231,11 @@ file_pref_cmd_callback (GtkWidget *widget, gimp_size_entry_new (2, UNIT_INCH, "Pixels/%s", FALSE, FALSE, TRUE, 75, GIMP_SIZE_ENTRY_UPDATE_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0, 1, 32767); + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1, 1, 32767); + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0, monitor_xres); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), @@ -2258,7 +2257,7 @@ file_pref_cmd_callback (GtkWidget *widget, gtk_container_add (GTK_CONTAINER (abox), monitor_resolution_sizeentry); gtk_widget_show (monitor_resolution_sizeentry); - if (ABS (monitor_xres - monitor_yres) < 1e-5) + if (ABS (monitor_xres - monitor_yres) < GIMP_MIN_RESOLUTION) gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (button), TRUE); gtk_table_attach_defaults (GTK_TABLE (monitor_resolution_sizeentry), button, 1, 3, 3, 4); diff --git a/app/gui/resize-dialog.c b/app/gui/resize-dialog.c index da2b0af474..3abc514473 100644 --- a/app/gui/resize-dialog.c +++ b/app/gui/resize-dialog.c @@ -58,7 +58,7 @@ struct _ResizePrivate double ratio; int old_width, old_height; - int old_res_x, old_res_y; + double old_res_x, old_res_y; int area_width, area_height; int start_x, start_y; int orig_x, orig_y; @@ -82,10 +82,10 @@ Resize * resize_widget_new (ResizeType type, ResizeTarget target, GtkObject *object, - int width, - int height, - float resolution_x, - float resolution_y, + gint width, + gint height, + gdouble resolution_x, + gdouble resolution_y, GUnit unit, gboolean dot_for_dot, GtkSignalFunc ok_cb, @@ -281,8 +281,7 @@ resize_widget_new (ResizeType type, gtk_widget_set_usize (spinbutton, 75, 0); private->size_se = - gimp_size_entry_new (1, dot_for_dot ? UNIT_PIXEL : unit, "%a", - TRUE, TRUE, FALSE, 75, + gimp_size_entry_new (1, unit, "%a", TRUE, TRUE, FALSE, 75, GIMP_SIZE_ENTRY_UPDATE_SIZE); gimp_size_entry_add_field (GIMP_SIZE_ENTRY (private->size_se), GTK_SPIN_BUTTON (spinbutton), NULL); @@ -311,6 +310,9 @@ resize_widget_new (ResizeType type, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->size_se), 0, width); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->size_se), 1, height); + if (dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (private->size_se), UNIT_PIXEL); + gtk_signal_connect (GTK_OBJECT (private->size_se), "value_changed", (GtkSignalFunc) size_callback, resize); @@ -428,8 +430,7 @@ resize_widget_new (ResizeType type, gtk_widget_set_usize (spinbutton, 75, 0); private->offset_se = - gimp_size_entry_new (1, dot_for_dot ? UNIT_PIXEL : unit, "%a", - TRUE, FALSE, FALSE, 75, + gimp_size_entry_new (1, unit, "%a", TRUE, FALSE, FALSE, 75, GIMP_SIZE_ENTRY_UPDATE_SIZE); gimp_size_entry_add_field (GIMP_SIZE_ENTRY (private->offset_se), GTK_SPIN_BUTTON (spinbutton), NULL); @@ -453,6 +454,10 @@ resize_widget_new (ResizeType type, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 0, 0); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 1, 0); + if (dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (private->offset_se), + UNIT_PIXEL); + gtk_signal_connect (GTK_OBJECT (private->offset_se), "value_changed", (GtkSignalFunc) offset_update, resize); diff --git a/app/gui/resize-dialog.h b/app/gui/resize-dialog.h index 89e7d707ef..0c916c9fd0 100644 --- a/app/gui/resize-dialog.h +++ b/app/gui/resize-dialog.h @@ -45,8 +45,8 @@ struct _Resize int width; int height; - float resolution_x; - float resolution_y; + double resolution_x; + double resolution_y; GUnit unit; double ratio_x; @@ -65,10 +65,10 @@ struct _Resize Resize * resize_widget_new (ResizeType type, ResizeTarget target, GtkObject * object, - int width, - int height, - float resolution_x, - float resolution_y, + gint width, + gint height, + gdouble resolution_x, + gdouble resolution_y, GUnit unit, gboolean dot_for_dot, GtkSignalFunc ok_cb, diff --git a/app/info_window.c b/app/info_window.c index 425c1f6e56..36b0e65f0b 100644 --- a/app/info_window.c +++ b/app/info_window.c @@ -200,7 +200,7 @@ info_window_update (InfoDialog *info_win, GDisplay *gdisp; InfoWinData *iwd; int type; - gfloat unit_factor; + gdouble unit_factor; gint unit_digits; gchar format_buf[32]; diff --git a/app/interface.c b/app/interface.c index eee91320e1..813580b43d 100644 --- a/app/interface.c +++ b/app/interface.c @@ -790,7 +790,7 @@ create_display_shell (GDisplay* gdisp, /* - * String, integer, float and size query boxes + * String, integer, double and size query boxes */ typedef struct _QueryBox QueryBox; @@ -812,7 +812,7 @@ static gint query_box_delete_callback (GtkWidget *, GdkEvent *, gpointer); static void query_box_cancel_callback (GtkWidget *, gpointer); static void string_query_box_ok_callback (GtkWidget *, gpointer); static void int_query_box_ok_callback (GtkWidget *, gpointer); -static void float_query_box_ok_callback (GtkWidget *, gpointer); +static void double_query_box_ok_callback (GtkWidget *, gpointer); static void size_query_box_ok_callback (GtkWidget *, gpointer); /* create a generic query box without any entry widget @@ -830,8 +830,12 @@ create_query_box (gchar *title, GtkWidget *qbox; GtkWidget *vbox; GtkWidget *label; - GtkWidget *ok_button; - GtkWidget *button; + + static ActionAreaItem action_items[] = + { + { N_("OK"), (ActionCallback) NULL, NULL, NULL }, + { N_("Cancel"), (ActionCallback) query_box_cancel_callback, NULL, NULL } + }; query_box = (QueryBox *) g_malloc (sizeof (QueryBox)); @@ -852,23 +856,9 @@ create_query_box (gchar *title, else object = NULL; - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (qbox)->action_area), 2); - - ok_button = gtk_button_new_with_label (_("OK")); - GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (qbox)->action_area), ok_button, - TRUE, TRUE, 0); - gtk_widget_grab_default (ok_button); - gtk_widget_show (ok_button); - - button = gtk_button_new_with_label (_("Cancel")); - GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - (GtkSignalFunc) query_box_cancel_callback, - query_box); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (qbox)->action_area), button, - TRUE, TRUE, 0); - gtk_widget_show (button); + /* The action area */ + action_items[1].user_data = query_box; + build_action_area (GTK_DIALOG (qbox), action_items, 2, 0); vbox = gtk_vbox_new (FALSE, 1); gtk_container_set_border_width (GTK_CONTAINER (vbox), 2); @@ -882,7 +872,7 @@ create_query_box (gchar *title, query_box->qbox = qbox; query_box->vbox = vbox; query_box->entry = NULL; - query_box->ok_button = ok_button; + query_box->ok_button = action_items[0].widget; query_box->object = object; query_box->callback = callback; query_box->data = data; @@ -958,16 +948,16 @@ query_int_box (gchar *title, } GtkWidget * -query_float_box (gchar *title, - gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, - gint digits, - GtkObject *object, - gchar *signal, - QueryFunc callback, - gpointer data) +query_double_box (gchar *title, + gchar *message, + gdouble initial, + gdouble lower, + gdouble upper, + gint digits, + GtkObject *object, + gchar *signal, + QueryFunc callback, + gpointer data) { QueryBox *query_box; GtkAdjustment* adjustment; @@ -976,7 +966,7 @@ query_float_box (gchar *title, query_box = create_query_box (title, message, object, signal, callback, data); gtk_signal_connect (GTK_OBJECT (query_box->ok_button), "clicked", - (GtkSignalFunc) float_query_box_ok_callback, + (GtkSignalFunc) double_query_box_ok_callback, query_box); adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (initial, lower, upper, @@ -996,12 +986,13 @@ query_float_box (gchar *title, GtkWidget * query_size_box (gchar *title, gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, + gdouble initial, + gdouble lower, + gdouble upper, gint digits, GUnit unit, - gfloat resolution, + gdouble resolution, + gint dot_for_dot, GtkObject *object, gchar *signal, QueryFunc callback, @@ -1025,6 +1016,9 @@ query_size_box (gchar *title, lower, upper); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 0, initial); + if (dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), UNIT_PIXEL); + gtk_box_pack_start (GTK_BOX (query_box->vbox), sizeentry, TRUE, TRUE, 0); gimp_size_entry_grab_focus (GIMP_SIZE_ENTRY (sizeentry)); gtk_widget_show (sizeentry); @@ -1106,7 +1100,7 @@ int_query_box_ok_callback (GtkWidget *w, /* Get the spinbutton data */ integer_value = g_malloc (sizeof (gint)); *integer_value = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(query_box->entry)); + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (query_box->entry)); /* Call the user defined callback */ (* query_box->callback) (w, query_box->data, (gpointer) integer_value); @@ -1118,11 +1112,11 @@ int_query_box_ok_callback (GtkWidget *w, } static void -float_query_box_ok_callback (GtkWidget *w, - gpointer client_data) +double_query_box_ok_callback (GtkWidget *w, + gpointer client_data) { QueryBox *query_box; - gfloat *float_value; + gdouble *double_value; query_box = (QueryBox *) client_data; @@ -1131,12 +1125,12 @@ float_query_box_ok_callback (GtkWidget *w, gtk_signal_disconnect_by_data (query_box->object, query_box); /* Get the spinbutton data */ - float_value = g_malloc (sizeof (gfloat)); - *float_value = - gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(query_box->entry)); + double_value = g_malloc (sizeof (gdouble)); + *double_value = + gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (query_box->entry)); /* Call the user defined callback */ - (* query_box->callback) (w, query_box->data, (gpointer) float_value); + (* query_box->callback) (w, query_box->data, (gpointer) double_value); /* Destroy the box */ gtk_widget_destroy (query_box->qbox); @@ -1149,7 +1143,7 @@ size_query_box_ok_callback (GtkWidget *w, gpointer client_data) { QueryBox *query_box; - gfloat *float_value; + gdouble *double_value; query_box = (QueryBox *) client_data; @@ -1158,8 +1152,8 @@ size_query_box_ok_callback (GtkWidget *w, gtk_signal_disconnect_by_data (query_box->object, query_box); /* Get the sizeentry data */ - float_value = g_malloc (sizeof (gfloat)); - *float_value = + double_value = g_malloc (sizeof (gdouble)); + *double_value = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (query_box->entry), 0); /* Pass the selected unit to the callback */ @@ -1168,7 +1162,7 @@ size_query_box_ok_callback (GtkWidget *w, (gpointer) gimp_size_entry_get_unit (GIMP_SIZE_ENTRY (query_box->entry))); /* Call the user defined callback */ - (* query_box->callback) (w, query_box->data, (gpointer) float_value); + (* query_box->callback) (w, query_box->data, (gpointer) double_value); /* Destroy the box */ gtk_widget_destroy (query_box->qbox); @@ -1217,7 +1211,7 @@ message_box (char *message, gtk_window_set_wmclass (GTK_WINDOW (mbox), "gimp_message", "Gimp"); gtk_window_set_title (GTK_WINDOW (mbox), _("GIMP Message")); gtk_window_position (GTK_WINDOW (mbox), GTK_WIN_POS_MOUSE); - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (mbox)->action_area), 2); + gtk_signal_connect (GTK_OBJECT (mbox), "delete_event", GTK_SIGNAL_FUNC (message_box_delete_callback), msg_box); diff --git a/app/interface.h b/app/interface.h index 5679f4c4c0..2e3a1f5ca0 100644 --- a/app/interface.h +++ b/app/interface.h @@ -77,11 +77,11 @@ GtkWidget * query_int_box (gchar *title, gchar *signal, QueryFunc callback, gpointer data); -GtkWidget * query_float_box (gchar *title, +GtkWidget * query_double_box (gchar *title, gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, + gdouble initial, + gdouble lower, + gdouble upper, gint digits, GtkObject *object, gchar *signal, @@ -89,12 +89,13 @@ GtkWidget * query_float_box (gchar *title, gpointer data); GtkWidget * query_size_box (gchar *title, gchar *message, - gfloat initial, - gfloat lower, - gfloat upper, + gdouble initial, + gdouble lower, + gdouble upper, gint digits, GUnit unit, - gfloat resolution, + gdouble resolution, + gint dot_for_dot, GtkObject *object, gchar *signal, QueryFunc callback, diff --git a/app/layers_dialog.c b/app/layers_dialog.c index a4c6d507f0..d7fe9dc6a4 100644 --- a/app/layers_dialog.c +++ b/app/layers_dialog.c @@ -3129,11 +3129,6 @@ new_layer_query_fill_type_callback (GtkWidget *w, static void layers_dialog_new_layer_query (GimpImage* gimage) { - static ActionAreaItem action_items[2] = - { - { N_("OK"), new_layer_query_ok_callback, NULL, NULL }, - { N_("Cancel"), new_layer_query_cancel_callback, NULL, NULL } - }; NewLayerOptions *options; GtkWidget *vbox; GtkWidget *table; @@ -3145,13 +3140,18 @@ layers_dialog_new_layer_query (GimpImage* gimage) GtkWidget *radio_button; GSList *group = NULL; int i; - char *button_names[4] = + char *button_names[] = { N_("Foreground"), N_("Background"), N_("White"), N_("Transparent") }; + static ActionAreaItem action_items[] = + { + { N_("OK"), new_layer_query_ok_callback, NULL, NULL }, + { N_("Cancel"), new_layer_query_cancel_callback, NULL, NULL } + }; /* the new options structure */ options = (NewLayerOptions *) g_malloc (sizeof (NewLayerOptions)); @@ -3160,7 +3160,8 @@ layers_dialog_new_layer_query (GimpImage* gimage) /* the dialog */ options->query_box = gtk_dialog_new (); - gtk_window_set_wmclass (GTK_WINDOW (options->query_box), "new_layer_options", "Gimp"); + gtk_window_set_wmclass (GTK_WINDOW (options->query_box), + "new_layer_options", "Gimp"); gtk_window_set_title (GTK_WINDOW (options->query_box), _("New Layer Options")); gtk_window_position (GTK_WINDOW (options->query_box), GTK_WIN_POS_MOUSE); @@ -3215,7 +3216,7 @@ layers_dialog_new_layer_query (GimpImage* gimage) gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); gtk_widget_set_usize (spinbutton, 75, 0); - options->size_se = gimp_size_entry_new (1, UNIT_PIXEL, "%a", + options->size_se = gimp_size_entry_new (1, gimage->unit, "%a", TRUE, TRUE, FALSE, 75, GIMP_SIZE_ENTRY_UPDATE_SIZE); gimp_size_entry_add_field (GIMP_SIZE_ENTRY (options->size_se), @@ -3249,6 +3250,8 @@ layers_dialog_new_layer_query (GimpImage* gimage) gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (options->size_se), 1, gimage->height); + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (options->size_se), UNIT_PIXEL); + gtk_widget_show (table); /* the radio frame and box */ diff --git a/app/preferences_dialog.c b/app/preferences_dialog.c index 48e3976601..a5744b23c0 100644 --- a/app/preferences_dialog.c +++ b/app/preferences_dialog.c @@ -33,6 +33,7 @@ #include "libgimp/gimpfileselection.h" #include "libgimp/gimppatheditor.h" #include "libgimp/gimpsizeentry.h" +#include "libgimp/gimplimits.h" #include "libgimp/gimpintl.h" /* preferences local functions */ @@ -245,7 +246,8 @@ file_prefs_ok_callback (GtkWidget *widget, default_units = old_default_units; return; } - if (default_xresolution < 1e-5 || default_yresolution < 1e-5) + if (default_xresolution < GIMP_MIN_RESOLUTION || + default_yresolution < GIMP_MIN_RESOLUTION) { g_message (_("Error: default resolution must not be zero.")); default_xresolution = old_default_xresolution; @@ -259,7 +261,8 @@ file_prefs_ok_callback (GtkWidget *widget, default_resolution_units = old_default_resolution_units; return; } - if (monitor_xres < 1e-5 || monitor_yres < 1e-5) + if (monitor_xres < GIMP_MIN_RESOLUTION || + monitor_yres < GIMP_MIN_RESOLUTION) { g_message (_("Error: Monitor resolution must not be zero.")); monitor_xres = old_monitor_xres; @@ -388,9 +391,9 @@ file_prefs_save_callback (GtkWidget *widget, update = g_list_append (update, "default-image-size"); if (default_units != old_default_units) update = g_list_append (update, "default-units"); - if (ABS(default_xresolution - old_default_xresolution) > 1e-5) + if (ABS(default_xresolution - old_default_xresolution) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "default-xresolution"); - if (ABS(default_yresolution - old_default_yresolution) > 1e-5) + if (ABS(default_yresolution - old_default_yresolution) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "default-yresolution"); if (default_resolution_units != old_default_resolution_units) update = g_list_append (update, "default-resolution-units"); @@ -405,10 +408,10 @@ file_prefs_save_callback (GtkWidget *widget, if (transparency_size != old_transparency_size) update = g_list_append (update, "transparency-size"); if (using_xserver_resolution != old_using_xserver_resolution || - ABS(monitor_xres - old_monitor_xres) > 1e-5) + ABS(monitor_xres - old_monitor_xres) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "monitor-xresolution"); if (using_xserver_resolution != old_using_xserver_resolution || - ABS(monitor_yres - old_monitor_yres) > 1e-5) + ABS(monitor_yres - old_monitor_yres) > GIMP_MIN_RESOLUTION) update = g_list_append (update, "monitor-yresolution"); if (edit_num_processors != num_processors) update = g_list_append (update, "num-processors"); @@ -510,13 +513,7 @@ file_prefs_save_callback (GtkWidget *widget, save_gimprc (&update, &remove); if (using_xserver_resolution) - { - gfloat xres, yres; - - gdisplay_xserver_resolution (&xres, &yres); - monitor_xres = xres; - monitor_yres = yres; - } + gdisplay_xserver_resolution (&monitor_xres, &monitor_yres); /* Restore variables which must not change */ stingy_memory_use = save_stingy_memory_use; @@ -863,21 +860,17 @@ file_prefs_res_source_callback (GtkWidget *widget, if (GTK_TOGGLE_BUTTON (widget)->active) { - gfloat xres, yres; - - gdisplay_xserver_resolution (&xres, &yres); - monitor_xres = xres; - monitor_yres = yres; + gdisplay_xserver_resolution (&monitor_xres, &monitor_yres); using_xserver_resolution = TRUE; } else { if (monitor_resolution_sizeentry) { - monitor_xres = - gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0); - monitor_yres = - gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1); + monitor_xres = gimp_size_entry_get_refval + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0); + monitor_yres = gimp_size_entry_get_refval + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1); } using_xserver_resolution = FALSE; } @@ -1535,9 +1528,11 @@ file_pref_cmd_callback (GtkWidget *widget, gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, default_yresolution, FALSE); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_size_sizeentry), 0, 1, 32767); + (GIMP_SIZE_ENTRY (default_size_sizeentry), 0, + GIMP_MIN_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, 1, 32767); + (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, + GIMP_MIN_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_size_sizeentry), 0, default_width); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_size_sizeentry), 1, @@ -1572,9 +1567,11 @@ file_pref_cmd_callback (GtkWidget *widget, FALSE, FALSE, TRUE, 75, GIMP_SIZE_ENTRY_UPDATE_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 0, 1, 32767); + (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 0, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 1, 1, 32767); + (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 1, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_resolution_sizeentry), 0, default_xresolution); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (default_resolution_sizeentry), @@ -1603,7 +1600,7 @@ file_pref_cmd_callback (GtkWidget *widget, gtk_table_attach_defaults (GTK_TABLE (default_resolution_sizeentry), button, 1, 3, 3, 4); - if (ABS (default_xresolution - default_yresolution) < 1e-5) + if (ABS (default_xresolution - default_yresolution) < GIMP_MIN_RESOLUTION) gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (button), TRUE); gtk_widget_show (button); @@ -2205,7 +2202,7 @@ file_pref_cmd_callback (GtkWidget *widget, gtk_widget_show (button); { - gfloat xres, yres; + gdouble xres, yres; gchar buf[80]; gdisplay_xserver_resolution (&xres, &yres); @@ -2234,9 +2231,11 @@ file_pref_cmd_callback (GtkWidget *widget, gimp_size_entry_new (2, UNIT_INCH, "Pixels/%s", FALSE, FALSE, TRUE, 75, GIMP_SIZE_ENTRY_UPDATE_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0, 1, 32767); + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval_boundaries - (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1, 1, 32767); + (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 1, + GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), 0, monitor_xres); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (monitor_resolution_sizeentry), @@ -2258,7 +2257,7 @@ file_pref_cmd_callback (GtkWidget *widget, gtk_container_add (GTK_CONTAINER (abox), monitor_resolution_sizeentry); gtk_widget_show (monitor_resolution_sizeentry); - if (ABS (monitor_xres - monitor_yres) < 1e-5) + if (ABS (monitor_xres - monitor_yres) < GIMP_MIN_RESOLUTION) gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (button), TRUE); gtk_table_attach_defaults (GTK_TABLE (monitor_resolution_sizeentry), button, 1, 3, 3, 4); diff --git a/app/rect_select.c b/app/rect_select.c index d1068d8ef1..538bb380b5 100644 --- a/app/rect_select.c +++ b/app/rect_select.c @@ -99,7 +99,7 @@ rect_select_button_press (Tool *tool, gchar select_mode[STATUSBAR_SIZE]; int x, y; GUnit unit = UNIT_PIXEL; - float unit_factor; + double unit_factor; gdisp = (GDisplay *) gdisp_ptr; rect_sel = (RectSelect *) tool->private; @@ -405,14 +405,14 @@ rect_select_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (size, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Selection: "), - (float)abs(rect_sel->w) * unit_factor / + (gdouble) abs(rect_sel->w) * unit_factor / gdisp->gimage->xresolution, " x ", - (float)abs(rect_sel->h) * unit_factor / + (gdouble) abs(rect_sel->h) * unit_factor / gdisp->gimage->yresolution); } gtk_statusbar_push (GTK_STATUSBAR (gdisp->statusbar), rect_sel->context_id, diff --git a/app/resize.c b/app/resize.c index da2b0af474..3abc514473 100644 --- a/app/resize.c +++ b/app/resize.c @@ -58,7 +58,7 @@ struct _ResizePrivate double ratio; int old_width, old_height; - int old_res_x, old_res_y; + double old_res_x, old_res_y; int area_width, area_height; int start_x, start_y; int orig_x, orig_y; @@ -82,10 +82,10 @@ Resize * resize_widget_new (ResizeType type, ResizeTarget target, GtkObject *object, - int width, - int height, - float resolution_x, - float resolution_y, + gint width, + gint height, + gdouble resolution_x, + gdouble resolution_y, GUnit unit, gboolean dot_for_dot, GtkSignalFunc ok_cb, @@ -281,8 +281,7 @@ resize_widget_new (ResizeType type, gtk_widget_set_usize (spinbutton, 75, 0); private->size_se = - gimp_size_entry_new (1, dot_for_dot ? UNIT_PIXEL : unit, "%a", - TRUE, TRUE, FALSE, 75, + gimp_size_entry_new (1, unit, "%a", TRUE, TRUE, FALSE, 75, GIMP_SIZE_ENTRY_UPDATE_SIZE); gimp_size_entry_add_field (GIMP_SIZE_ENTRY (private->size_se), GTK_SPIN_BUTTON (spinbutton), NULL); @@ -311,6 +310,9 @@ resize_widget_new (ResizeType type, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->size_se), 0, width); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->size_se), 1, height); + if (dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (private->size_se), UNIT_PIXEL); + gtk_signal_connect (GTK_OBJECT (private->size_se), "value_changed", (GtkSignalFunc) size_callback, resize); @@ -428,8 +430,7 @@ resize_widget_new (ResizeType type, gtk_widget_set_usize (spinbutton, 75, 0); private->offset_se = - gimp_size_entry_new (1, dot_for_dot ? UNIT_PIXEL : unit, "%a", - TRUE, FALSE, FALSE, 75, + gimp_size_entry_new (1, unit, "%a", TRUE, FALSE, FALSE, 75, GIMP_SIZE_ENTRY_UPDATE_SIZE); gimp_size_entry_add_field (GIMP_SIZE_ENTRY (private->offset_se), GTK_SPIN_BUTTON (spinbutton), NULL); @@ -453,6 +454,10 @@ resize_widget_new (ResizeType type, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 0, 0); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 1, 0); + if (dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (private->offset_se), + UNIT_PIXEL); + gtk_signal_connect (GTK_OBJECT (private->offset_se), "value_changed", (GtkSignalFunc) offset_update, resize); diff --git a/app/resize.h b/app/resize.h index 89e7d707ef..0c916c9fd0 100644 --- a/app/resize.h +++ b/app/resize.h @@ -45,8 +45,8 @@ struct _Resize int width; int height; - float resolution_x; - float resolution_y; + double resolution_x; + double resolution_y; GUnit unit; double ratio_x; @@ -65,10 +65,10 @@ struct _Resize Resize * resize_widget_new (ResizeType type, ResizeTarget target, GtkObject * object, - int width, - int height, - float resolution_x, - float resolution_y, + gint width, + gint height, + gdouble resolution_x, + gdouble resolution_y, GUnit unit, gboolean dot_for_dot, GtkSignalFunc ok_cb, diff --git a/app/rotate_tool.c b/app/rotate_tool.c index d69591faf4..33080d1e05 100644 --- a/app/rotate_tool.c +++ b/app/rotate_tool.c @@ -103,8 +103,7 @@ rotate_tool_transform (Tool *tool, sizeentry = info_dialog_add_sizeentry (transform_info, _("Y:"), center_vals, 1, - gdisp->dot_for_dot ? - UNIT_PIXEL : gdisp->gimage->unit, "%a", + gdisp->gimage->unit, "%a", TRUE, TRUE, FALSE, GIMP_SIZE_ENTRY_UPDATE_SIZE, rotate_center_changed, tool); @@ -127,6 +126,9 @@ rotate_tool_transform (Tool *tool, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 1, center_vals[1]); + if (gdisp->dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), UNIT_PIXEL); + gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table), 1, 6); gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table), diff --git a/app/scale.c b/app/scale.c index cbe72d6cdb..9c73de328d 100644 --- a/app/scale.c +++ b/app/scale.c @@ -166,7 +166,7 @@ change_scale (GDisplay *gdisp, static gdouble img2real (GDisplay *gdisp, gboolean xdir, gdouble a) { - float res; + gdouble res; if (gdisp->dot_for_dot) return a; diff --git a/app/scale_tool.c b/app/scale_tool.c index 74437ae1b1..2cc167b852 100644 --- a/app/scale_tool.c +++ b/app/scale_tool.c @@ -80,8 +80,7 @@ scale_tool_transform (Tool *tool, sizeentry = info_dialog_add_sizeentry (transform_info, _("Height:"), size_vals, 1, - gdisp->dot_for_dot ? - UNIT_PIXEL : gdisp->gimage->unit, "%a", + gdisp->gimage->unit, "%a", TRUE, TRUE, FALSE, GIMP_SIZE_ENTRY_UPDATE_SIZE, scale_size_changed, tool); @@ -104,6 +103,9 @@ scale_tool_transform (Tool *tool, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 1, size_vals[1]); + if (gdisp->dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), UNIT_PIXEL); + info_dialog_add_label (transform_info, _("Scale Ratio X:"), x_ratio_buf); info_dialog_add_label (transform_info, _("Y:"), @@ -191,7 +193,7 @@ scale_info_update (Tool *tool) double ratio_x, ratio_y; int x1, y1, x2, y2, x3, y3, x4, y4; GUnit unit; - float unit_factor; + double unit_factor; gchar format_buf[16]; static GUnit label_unit = UNIT_PIXEL; diff --git a/app/tools/blend.c b/app/tools/blend.c index ff29269b6c..8dc2bd416d 100644 --- a/app/tools/blend.c +++ b/app/tools/blend.c @@ -643,7 +643,7 @@ blend_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (vector, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Blend: "), diff --git a/app/tools/crop.c b/app/tools/crop.c index 755f95901d..d75d1d9784 100644 --- a/app/tools/crop.c +++ b/app/tools/crop.c @@ -502,14 +502,14 @@ crop_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (size, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Crop: "), - (float)(crop->tx2 - crop->tx1) * unit_factor / + (gdouble) (crop->tx2 - crop->tx1) * unit_factor / gdisp->gimage->xresolution, " x ", - (float)(crop->ty2 - crop->ty1) * unit_factor / + (gdouble) (crop->ty2 - crop->ty1) * unit_factor / gdisp->gimage->yresolution); } gtk_statusbar_push (GTK_STATUSBAR (gdisp->statusbar), crop->context_id, diff --git a/app/tools/edit_selection.c b/app/tools/edit_selection.c index 4173af4e65..871f2d3b47 100644 --- a/app/tools/edit_selection.c +++ b/app/tools/edit_selection.c @@ -447,7 +447,7 @@ edit_selection_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (offset, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Move: "), diff --git a/app/tools/gimpblendtool.c b/app/tools/gimpblendtool.c index ff29269b6c..8dc2bd416d 100644 --- a/app/tools/gimpblendtool.c +++ b/app/tools/gimpblendtool.c @@ -643,7 +643,7 @@ blend_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (vector, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Blend: "), diff --git a/app/tools/gimpcroptool.c b/app/tools/gimpcroptool.c index 755f95901d..d75d1d9784 100644 --- a/app/tools/gimpcroptool.c +++ b/app/tools/gimpcroptool.c @@ -502,14 +502,14 @@ crop_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (size, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Crop: "), - (float)(crop->tx2 - crop->tx1) * unit_factor / + (gdouble) (crop->tx2 - crop->tx1) * unit_factor / gdisp->gimage->xresolution, " x ", - (float)(crop->ty2 - crop->ty1) * unit_factor / + (gdouble) (crop->ty2 - crop->ty1) * unit_factor / gdisp->gimage->yresolution); } gtk_statusbar_push (GTK_STATUSBAR (gdisp->statusbar), crop->context_id, diff --git a/app/tools/gimpeditselectiontool.c b/app/tools/gimpeditselectiontool.c index 4173af4e65..871f2d3b47 100644 --- a/app/tools/gimpeditselectiontool.c +++ b/app/tools/gimpeditselectiontool.c @@ -447,7 +447,7 @@ edit_selection_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (offset, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Move: "), diff --git a/app/tools/gimprectselecttool.c b/app/tools/gimprectselecttool.c index d1068d8ef1..538bb380b5 100644 --- a/app/tools/gimprectselecttool.c +++ b/app/tools/gimprectselecttool.c @@ -99,7 +99,7 @@ rect_select_button_press (Tool *tool, gchar select_mode[STATUSBAR_SIZE]; int x, y; GUnit unit = UNIT_PIXEL; - float unit_factor; + double unit_factor; gdisp = (GDisplay *) gdisp_ptr; rect_sel = (RectSelect *) tool->private; @@ -405,14 +405,14 @@ rect_select_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (size, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Selection: "), - (float)abs(rect_sel->w) * unit_factor / + (gdouble) abs(rect_sel->w) * unit_factor / gdisp->gimage->xresolution, " x ", - (float)abs(rect_sel->h) * unit_factor / + (gdouble) abs(rect_sel->h) * unit_factor / gdisp->gimage->yresolution); } gtk_statusbar_push (GTK_STATUSBAR (gdisp->statusbar), rect_sel->context_id, diff --git a/app/tools/gimprotatetool.c b/app/tools/gimprotatetool.c index d69591faf4..33080d1e05 100644 --- a/app/tools/gimprotatetool.c +++ b/app/tools/gimprotatetool.c @@ -103,8 +103,7 @@ rotate_tool_transform (Tool *tool, sizeentry = info_dialog_add_sizeentry (transform_info, _("Y:"), center_vals, 1, - gdisp->dot_for_dot ? - UNIT_PIXEL : gdisp->gimage->unit, "%a", + gdisp->gimage->unit, "%a", TRUE, TRUE, FALSE, GIMP_SIZE_ENTRY_UPDATE_SIZE, rotate_center_changed, tool); @@ -127,6 +126,9 @@ rotate_tool_transform (Tool *tool, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 1, center_vals[1]); + if (gdisp->dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), UNIT_PIXEL); + gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table), 1, 6); gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table), diff --git a/app/tools/gimpscaletool.c b/app/tools/gimpscaletool.c index 74437ae1b1..2cc167b852 100644 --- a/app/tools/gimpscaletool.c +++ b/app/tools/gimpscaletool.c @@ -80,8 +80,7 @@ scale_tool_transform (Tool *tool, sizeentry = info_dialog_add_sizeentry (transform_info, _("Height:"), size_vals, 1, - gdisp->dot_for_dot ? - UNIT_PIXEL : gdisp->gimage->unit, "%a", + gdisp->gimage->unit, "%a", TRUE, TRUE, FALSE, GIMP_SIZE_ENTRY_UPDATE_SIZE, scale_size_changed, tool); @@ -104,6 +103,9 @@ scale_tool_transform (Tool *tool, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 1, size_vals[1]); + if (gdisp->dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), UNIT_PIXEL); + info_dialog_add_label (transform_info, _("Scale Ratio X:"), x_ratio_buf); info_dialog_add_label (transform_info, _("Y:"), @@ -191,7 +193,7 @@ scale_info_update (Tool *tool) double ratio_x, ratio_y; int x1, y1, x2, y2, x3, y3, x4, y4; GUnit unit; - float unit_factor; + double unit_factor; gchar format_buf[16]; static GUnit label_unit = UNIT_PIXEL; diff --git a/app/tools/rect_select.c b/app/tools/rect_select.c index d1068d8ef1..538bb380b5 100644 --- a/app/tools/rect_select.c +++ b/app/tools/rect_select.c @@ -99,7 +99,7 @@ rect_select_button_press (Tool *tool, gchar select_mode[STATUSBAR_SIZE]; int x, y; GUnit unit = UNIT_PIXEL; - float unit_factor; + double unit_factor; gdisp = (GDisplay *) gdisp_ptr; rect_sel = (RectSelect *) tool->private; @@ -405,14 +405,14 @@ rect_select_motion (Tool *tool, } else /* show real world units */ { - float unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); + gdouble unit_factor = gimp_unit_get_factor (gdisp->gimage->unit); g_snprintf (size, STATUSBAR_SIZE, gdisp->cursor_format_str, _("Selection: "), - (float)abs(rect_sel->w) * unit_factor / + (gdouble) abs(rect_sel->w) * unit_factor / gdisp->gimage->xresolution, " x ", - (float)abs(rect_sel->h) * unit_factor / + (gdouble) abs(rect_sel->h) * unit_factor / gdisp->gimage->yresolution); } gtk_statusbar_push (GTK_STATUSBAR (gdisp->statusbar), rect_sel->context_id, diff --git a/app/tools/rotate_tool.c b/app/tools/rotate_tool.c index d69591faf4..33080d1e05 100644 --- a/app/tools/rotate_tool.c +++ b/app/tools/rotate_tool.c @@ -103,8 +103,7 @@ rotate_tool_transform (Tool *tool, sizeentry = info_dialog_add_sizeentry (transform_info, _("Y:"), center_vals, 1, - gdisp->dot_for_dot ? - UNIT_PIXEL : gdisp->gimage->unit, "%a", + gdisp->gimage->unit, "%a", TRUE, TRUE, FALSE, GIMP_SIZE_ENTRY_UPDATE_SIZE, rotate_center_changed, tool); @@ -127,6 +126,9 @@ rotate_tool_transform (Tool *tool, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 1, center_vals[1]); + if (gdisp->dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), UNIT_PIXEL); + gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table), 1, 6); gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table), diff --git a/app/tools/scale_tool.c b/app/tools/scale_tool.c index 74437ae1b1..2cc167b852 100644 --- a/app/tools/scale_tool.c +++ b/app/tools/scale_tool.c @@ -80,8 +80,7 @@ scale_tool_transform (Tool *tool, sizeentry = info_dialog_add_sizeentry (transform_info, _("Height:"), size_vals, 1, - gdisp->dot_for_dot ? - UNIT_PIXEL : gdisp->gimage->unit, "%a", + gdisp->gimage->unit, "%a", TRUE, TRUE, FALSE, GIMP_SIZE_ENTRY_UPDATE_SIZE, scale_size_changed, tool); @@ -104,6 +103,9 @@ scale_tool_transform (Tool *tool, gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 1, size_vals[1]); + if (gdisp->dot_for_dot) + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), UNIT_PIXEL); + info_dialog_add_label (transform_info, _("Scale Ratio X:"), x_ratio_buf); info_dialog_add_label (transform_info, _("Y:"), @@ -191,7 +193,7 @@ scale_info_update (Tool *tool) double ratio_x, ratio_y; int x1, y1, x2, y2, x3, y3, x4, y4; GUnit unit; - float unit_factor; + double unit_factor; gchar format_buf[16]; static GUnit label_unit = UNIT_PIXEL; diff --git a/app/xcf.c b/app/xcf.c index eaf7ef0d4b..2c4980a1c3 100644 --- a/app/xcf.c +++ b/app/xcf.c @@ -40,6 +40,7 @@ #include "parasitelist.h" #include "pathsP.h" #include +#include /* #define SWAP_FROM_FILE */ @@ -1134,7 +1135,6 @@ xcf_save_prop (XcfInfo *info, info->cp += xcf_write_float (info->fp, &xresolution, 1); info->cp += xcf_write_float (info->fp, &yresolution, 1); - } break; case PROP_TATTOO: @@ -1838,16 +1838,18 @@ xcf_load_image_props (XcfInfo *info, break; case PROP_RESOLUTION: { - info->cp += xcf_read_float (info->fp, &gimage->xresolution, 1); - info->cp += xcf_read_float (info->fp, &gimage->yresolution, 1); - if (gimage->xresolution < 1e-5 || gimage->xresolution > 1e+5 || - gimage->yresolution < 1e-5 || gimage->yresolution > 1e+5) - { - g_message(_("Warning, resolution out of range in XCF file")); - gimage->xresolution = 72.0; - gimage->yresolution = 72.0; - } - + float xres, yres; + + info->cp += xcf_read_float (info->fp, &xres, 1); + info->cp += xcf_read_float (info->fp, &yres, 1); + if (xres < GIMP_MIN_RESOLUTION || xres > GIMP_MAX_RESOLUTION || + yres < GIMP_MIN_RESOLUTION || yres > GIMP_MAX_RESOLUTION) + { + g_message(_("Warning, resolution out of range in XCF file")); + xres = yres = 72.0; + } + gimage->xresolution = xres; + gimage->yresolution = yres; } break; case PROP_TATTOO: diff --git a/app/xcf/xcf.c b/app/xcf/xcf.c index eaf7ef0d4b..2c4980a1c3 100644 --- a/app/xcf/xcf.c +++ b/app/xcf/xcf.c @@ -40,6 +40,7 @@ #include "parasitelist.h" #include "pathsP.h" #include +#include /* #define SWAP_FROM_FILE */ @@ -1134,7 +1135,6 @@ xcf_save_prop (XcfInfo *info, info->cp += xcf_write_float (info->fp, &xresolution, 1); info->cp += xcf_write_float (info->fp, &yresolution, 1); - } break; case PROP_TATTOO: @@ -1838,16 +1838,18 @@ xcf_load_image_props (XcfInfo *info, break; case PROP_RESOLUTION: { - info->cp += xcf_read_float (info->fp, &gimage->xresolution, 1); - info->cp += xcf_read_float (info->fp, &gimage->yresolution, 1); - if (gimage->xresolution < 1e-5 || gimage->xresolution > 1e+5 || - gimage->yresolution < 1e-5 || gimage->yresolution > 1e+5) - { - g_message(_("Warning, resolution out of range in XCF file")); - gimage->xresolution = 72.0; - gimage->yresolution = 72.0; - } - + float xres, yres; + + info->cp += xcf_read_float (info->fp, &xres, 1); + info->cp += xcf_read_float (info->fp, &yres, 1); + if (xres < GIMP_MIN_RESOLUTION || xres > GIMP_MAX_RESOLUTION || + yres < GIMP_MIN_RESOLUTION || yres > GIMP_MAX_RESOLUTION) + { + g_message(_("Warning, resolution out of range in XCF file")); + xres = yres = 72.0; + } + gimage->xresolution = xres; + gimage->yresolution = yres; } break; case PROP_TATTOO: diff --git a/libgimp/gimp.h b/libgimp/gimp.h index 00648d88a7..16151aa6ca 100644 --- a/libgimp/gimp.h +++ b/libgimp/gimp.h @@ -503,11 +503,11 @@ void gimp_image_attach_new_parasite (gint32 image_ID, void gimp_image_detach_parasite (gint32 image_ID, const char *name); void gimp_image_set_resolution (gint32 image_ID, - float xresolution, - float yresolution); + double xresolution, + double yresolution); void gimp_image_get_resolution (gint32 image_ID, - float *xresolution, - float *yresolution); + double *xresolution, + double *yresolution); void gimp_image_set_unit (gint32 image_ID, GUnit unit); GUnit gimp_image_get_unit (gint32 image_ID); diff --git a/libgimp/gimpimage.c b/libgimp/gimpimage.c index b724ab665a..7979f42cba 100644 --- a/libgimp/gimpimage.c +++ b/libgimp/gimpimage.c @@ -1012,15 +1012,15 @@ gimp_image_detach_parasite (gint32 image_ID, const char *name) void gimp_image_get_resolution (gint32 image_ID, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { GParam *return_vals; int nreturn_vals; - float xres; - float yres; + double xres; + double yres; - g_return_if_fail(xresolution && yresolution); + g_return_if_fail (xresolution && yresolution); return_vals = gimp_run_procedure ("gimp_image_get_resolution", &nreturn_vals, @@ -1045,8 +1045,8 @@ gimp_image_get_resolution (gint32 image_ID, void gimp_image_set_resolution (gint32 image_ID, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { GParam *return_vals; int nreturn_vals; diff --git a/libgimp/gimpimage_pdb.c b/libgimp/gimpimage_pdb.c index b724ab665a..7979f42cba 100644 --- a/libgimp/gimpimage_pdb.c +++ b/libgimp/gimpimage_pdb.c @@ -1012,15 +1012,15 @@ gimp_image_detach_parasite (gint32 image_ID, const char *name) void gimp_image_get_resolution (gint32 image_ID, - float *xresolution, - float *yresolution) + double *xresolution, + double *yresolution) { GParam *return_vals; int nreturn_vals; - float xres; - float yres; + double xres; + double yres; - g_return_if_fail(xresolution && yresolution); + g_return_if_fail (xresolution && yresolution); return_vals = gimp_run_procedure ("gimp_image_get_resolution", &nreturn_vals, @@ -1045,8 +1045,8 @@ gimp_image_get_resolution (gint32 image_ID, void gimp_image_set_resolution (gint32 image_ID, - float xresolution, - float yresolution) + double xresolution, + double yresolution) { GParam *return_vals; int nreturn_vals; diff --git a/libgimp/gimpsizeentry.c b/libgimp/gimpsizeentry.c index 050f758cf6..9089d6298a 100644 --- a/libgimp/gimpsizeentry.c +++ b/libgimp/gimpsizeentry.c @@ -46,23 +46,22 @@ enum { struct _GimpSizeEntryField { GimpSizeEntry *gse; - gint index; - gfloat resolution; - gfloat lower; - gfloat upper; + gdouble resolution; + gdouble lower; + gdouble upper; GtkObject *value_adjustment; GtkWidget *value_spinbutton; - gfloat value; - gfloat min_value; - gfloat max_value; + gdouble value; + gdouble min_value; + gdouble max_value; GtkObject *refval_adjustment; GtkWidget *refval_spinbutton; - gfloat refval; - gfloat min_refval; - gfloat max_refval; + gdouble refval; + gdouble min_refval; + gdouble max_refval; gint refval_digits; gint stop_recursion; @@ -221,7 +220,6 @@ gimp_size_entry_new (gint number_of_fields, gse->fields = g_slist_append (gse->fields, gsef); gsef->gse = gse; - gsef->index = i; gsef->resolution = 1.0; /* just to avoid division by zero */ gsef->lower = 0.0; gsef->upper = 100.0; @@ -343,7 +341,6 @@ gimp_size_entry_add_field (GimpSizeEntry *gse, gse->number_of_fields++; gsef->gse = gse; - gsef->index = 0; gsef->resolution = 1.0; /* just to avoid division by zero */ gsef->lower = 0.0; gsef->upper = 100.0; @@ -431,7 +428,7 @@ gimp_size_entry_attach_label (GimpSizeEntry *gse, void gimp_size_entry_set_resolution (GimpSizeEntry *gse, gint field, - gfloat resolution, + gdouble resolution, guint keep_size) { GimpSizeEntryField *gsef; @@ -461,8 +458,8 @@ gimp_size_entry_set_resolution (GimpSizeEntry *gse, void gimp_size_entry_set_size (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper) + gdouble lower, + gdouble upper) { GimpSizeEntryField *gsef; @@ -484,8 +481,8 @@ gimp_size_entry_set_size (GimpSizeEntry *gse, void gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper) + gdouble lower, + gdouble upper) { GimpSizeEntryField *gsef; @@ -552,7 +549,7 @@ gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse, gimp_size_entry_set_value (gse, field, gsef->value); } -gfloat +gdouble gimp_size_entry_get_value (GimpSizeEntry *gse, gint field) { @@ -568,7 +565,7 @@ gimp_size_entry_get_value (GimpSizeEntry *gse, static void gimp_size_entry_update_value (GimpSizeEntryField *gsef, - gfloat value) + gdouble value) { if (gsef->stop_recursion > 1) return; @@ -619,7 +616,7 @@ gimp_size_entry_update_value (GimpSizeEntryField *gsef, void gimp_size_entry_set_value (GimpSizeEntry *gse, gint field, - gfloat value) + gdouble value) { GimpSizeEntryField *gsef; @@ -642,7 +639,7 @@ gimp_size_entry_value_callback (GtkWidget *widget, gpointer data) { GimpSizeEntryField *gsef; - gfloat new_value; + gdouble new_value; gsef = (GimpSizeEntryField*) data; @@ -662,8 +659,8 @@ gimp_size_entry_value_callback (GtkWidget *widget, void gimp_size_entry_set_refval_boundaries (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper) + gdouble lower, + gdouble upper) { GimpSizeEntryField *gsef; @@ -761,7 +758,7 @@ gimp_size_entry_set_refval_digits (GimpSizeEntry *gse, } } -gfloat +gdouble gimp_size_entry_get_refval (GimpSizeEntry *gse, gint field) { @@ -778,7 +775,7 @@ gimp_size_entry_get_refval (GimpSizeEntry *gse, static void gimp_size_entry_update_refval (GimpSizeEntryField *gsef, - gfloat refval) + gdouble refval) { if (gsef->stop_recursion > 1) return; @@ -827,7 +824,7 @@ gimp_size_entry_update_refval (GimpSizeEntryField *gsef, void gimp_size_entry_set_refval (GimpSizeEntry *gse, gint field, - gfloat refval) + gdouble refval) { GimpSizeEntryField *gsef; @@ -853,7 +850,7 @@ gimp_size_entry_refval_callback (GtkWidget *widget, gpointer data) { GimpSizeEntryField *gsef; - gfloat new_refval; + gdouble new_refval; gsef = (GimpSizeEntryField*) data; diff --git a/libgimp/gimpsizeentry.h b/libgimp/gimpsizeentry.h index dbf3bdf516..e185808bcb 100644 --- a/libgimp/gimpsizeentry.h +++ b/libgimp/gimpsizeentry.h @@ -16,7 +16,6 @@ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ - #ifndef __GIMP_SIZE_ENTRY_H__ #define __GIMP_SIZE_ENTRY_H__ @@ -133,7 +132,7 @@ void gimp_size_entry_attach_label (GimpSizeEntry *gse, */ void gimp_size_entry_set_resolution (GimpSizeEntry *gse, gint field, - gfloat resolution, + gdouble resolution, guint keep_size); /* this one sets the values (in pixels) which will be treated as @@ -143,8 +142,8 @@ void gimp_size_entry_set_resolution (GimpSizeEntry *gse, */ void gimp_size_entry_set_size (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper); + gdouble lower, + gdouble upper); /* these functions set/return the value in the units the user selected * note that in some cases where the caller chooses not to have the @@ -153,13 +152,13 @@ void gimp_size_entry_set_size (GimpSizeEntry *gse, */ void gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper); -gfloat gimp_size_entry_get_value (GimpSizeEntry *gse, + gdouble lower, + gdouble upper); +gdouble gimp_size_entry_get_value (GimpSizeEntry *gse, gint field); void gimp_size_entry_set_value (GimpSizeEntry *gse, gint field, - gfloat value); + gdouble value); /* these functions set/return the value in the 'reference unit' for the * current update policy @@ -171,16 +170,16 @@ void gimp_size_entry_set_value (GimpSizeEntry *gse, */ void gimp_size_entry_set_refval_boundaries (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper); + gdouble lower, + gdouble upper); void gimp_size_entry_set_refval_digits (GimpSizeEntry *gse, gint field, gint digits); -gfloat gimp_size_entry_get_refval (GimpSizeEntry *gse, +gdouble gimp_size_entry_get_refval (GimpSizeEntry *gse, gint field); void gimp_size_entry_set_refval (GimpSizeEntry *gse, gint field, - gfloat refval); + gdouble refval); /* these functions set/return the currently used unit * note that for GIMP_SIZE_ENTRY_UPDATE_SIZE a value of UNIT_PIXEL diff --git a/libgimp/gimpunit.c b/libgimp/gimpunit.c index 016b834251..31cd24cff7 100644 --- a/libgimp/gimpunit.c +++ b/libgimp/gimpunit.c @@ -28,7 +28,7 @@ typedef struct { guint delete_on_exit; - float factor; + gdouble factor; gint digits; gchar *identifier; gchar *symbol; @@ -89,13 +89,13 @@ gimp_unit_get_number_of_built_in_units (void) GUnit -gimp_unit_new (gchar *identifier, - gfloat factor, - gint digits, - gchar *symbol, - gchar *abbreviation, - gchar *singular, - gchar *plural) +gimp_unit_new (gchar *identifier, + gdouble factor, + gint digits, + gchar *symbol, + gchar *abbreviation, + gchar *singular, + gchar *plural) { GParam *return_vals; int nreturn_vals; @@ -172,13 +172,13 @@ gimp_unit_set_deletion_flag (GUnit unit, } -gfloat +gdouble gimp_unit_get_factor (GUnit unit) { GParam *return_vals; int nreturn_vals; - gfloat factor; + gdouble factor; g_return_val_if_fail (unit >= UNIT_INCH, 1.0); diff --git a/libgimp/gimpunit.h b/libgimp/gimpunit.h index 854c518f67..e3568e9c9a 100644 --- a/libgimp/gimpunit.h +++ b/libgimp/gimpunit.h @@ -67,13 +67,13 @@ gint gimp_unit_get_number_of_built_in_units (void); * set to TRUE. You will have to set it to FALSE after creation to make * the unit definition persistant. */ -GUnit gimp_unit_new (gchar *identifier, - gfloat factor, - gint digits, - gchar *symbol, - gchar *abbreviation, - gchar *singular, - gchar *plural); +GUnit gimp_unit_new (gchar *identifier, + gdouble factor, + gint digits, + gchar *symbol, + gchar *abbreviation, + gchar *singular, + gchar *plural); /* The following functions fall back to inch (not pixel, as pixel is not * a 'real' unit) if the value passed is out of range. @@ -93,7 +93,7 @@ void gimp_unit_set_deletion_flag (GUnit unit, * * Returns 0 for unit == UNIT_PIXEL as we don't have resolution info here */ -gfloat gimp_unit_get_factor (GUnit unit); +gdouble gimp_unit_get_factor (GUnit unit); /* The following function gives a hint how many digits a spinbutton * should provide to get approximately the accuracy of an inch-spinbutton diff --git a/libgimp/gimpunit_pdb.c b/libgimp/gimpunit_pdb.c index 016b834251..31cd24cff7 100644 --- a/libgimp/gimpunit_pdb.c +++ b/libgimp/gimpunit_pdb.c @@ -28,7 +28,7 @@ typedef struct { guint delete_on_exit; - float factor; + gdouble factor; gint digits; gchar *identifier; gchar *symbol; @@ -89,13 +89,13 @@ gimp_unit_get_number_of_built_in_units (void) GUnit -gimp_unit_new (gchar *identifier, - gfloat factor, - gint digits, - gchar *symbol, - gchar *abbreviation, - gchar *singular, - gchar *plural) +gimp_unit_new (gchar *identifier, + gdouble factor, + gint digits, + gchar *symbol, + gchar *abbreviation, + gchar *singular, + gchar *plural) { GParam *return_vals; int nreturn_vals; @@ -172,13 +172,13 @@ gimp_unit_set_deletion_flag (GUnit unit, } -gfloat +gdouble gimp_unit_get_factor (GUnit unit) { GParam *return_vals; int nreturn_vals; - gfloat factor; + gdouble factor; g_return_val_if_fail (unit >= UNIT_INCH, 1.0); diff --git a/libgimp/gimpunitcache.c b/libgimp/gimpunitcache.c index 016b834251..31cd24cff7 100644 --- a/libgimp/gimpunitcache.c +++ b/libgimp/gimpunitcache.c @@ -28,7 +28,7 @@ typedef struct { guint delete_on_exit; - float factor; + gdouble factor; gint digits; gchar *identifier; gchar *symbol; @@ -89,13 +89,13 @@ gimp_unit_get_number_of_built_in_units (void) GUnit -gimp_unit_new (gchar *identifier, - gfloat factor, - gint digits, - gchar *symbol, - gchar *abbreviation, - gchar *singular, - gchar *plural) +gimp_unit_new (gchar *identifier, + gdouble factor, + gint digits, + gchar *symbol, + gchar *abbreviation, + gchar *singular, + gchar *plural) { GParam *return_vals; int nreturn_vals; @@ -172,13 +172,13 @@ gimp_unit_set_deletion_flag (GUnit unit, } -gfloat +gdouble gimp_unit_get_factor (GUnit unit) { GParam *return_vals; int nreturn_vals; - gfloat factor; + gdouble factor; g_return_val_if_fail (unit >= UNIT_INCH, 1.0); diff --git a/libgimp/gimpunitmenu.c b/libgimp/gimpunitmenu.c index 628bbb75f0..15f402ac85 100644 --- a/libgimp/gimpunitmenu.c +++ b/libgimp/gimpunitmenu.c @@ -453,9 +453,10 @@ gimp_unit_menu_create_selection (GimpUnitMenu *gum) gum->selection = gtk_dialog_new (); gtk_window_set_wmclass (GTK_WINDOW (gum->selection), - "unitselection", "Gimp"); + "unit_selection", "Gimp"); gtk_window_set_title (GTK_WINDOW (gum->selection), _("Unit Selection")); - gtk_window_set_policy (GTK_WINDOW(gum->selection), FALSE, TRUE, FALSE); + gtk_window_set_policy (GTK_WINDOW (gum->selection), FALSE, TRUE, FALSE); + gtk_window_position (GTK_WINDOW (gum->selection), GTK_WIN_POS_MOUSE); vbox = gtk_vbox_new (FALSE, 2); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (gum->selection)->vbox), vbox); diff --git a/libgimpbase/gimpunit.h b/libgimpbase/gimpunit.h index 854c518f67..e3568e9c9a 100644 --- a/libgimpbase/gimpunit.h +++ b/libgimpbase/gimpunit.h @@ -67,13 +67,13 @@ gint gimp_unit_get_number_of_built_in_units (void); * set to TRUE. You will have to set it to FALSE after creation to make * the unit definition persistant. */ -GUnit gimp_unit_new (gchar *identifier, - gfloat factor, - gint digits, - gchar *symbol, - gchar *abbreviation, - gchar *singular, - gchar *plural); +GUnit gimp_unit_new (gchar *identifier, + gdouble factor, + gint digits, + gchar *symbol, + gchar *abbreviation, + gchar *singular, + gchar *plural); /* The following functions fall back to inch (not pixel, as pixel is not * a 'real' unit) if the value passed is out of range. @@ -93,7 +93,7 @@ void gimp_unit_set_deletion_flag (GUnit unit, * * Returns 0 for unit == UNIT_PIXEL as we don't have resolution info here */ -gfloat gimp_unit_get_factor (GUnit unit); +gdouble gimp_unit_get_factor (GUnit unit); /* The following function gives a hint how many digits a spinbutton * should provide to get approximately the accuracy of an inch-spinbutton diff --git a/libgimpwidgets/gimpsizeentry.c b/libgimpwidgets/gimpsizeentry.c index 050f758cf6..9089d6298a 100644 --- a/libgimpwidgets/gimpsizeentry.c +++ b/libgimpwidgets/gimpsizeentry.c @@ -46,23 +46,22 @@ enum { struct _GimpSizeEntryField { GimpSizeEntry *gse; - gint index; - gfloat resolution; - gfloat lower; - gfloat upper; + gdouble resolution; + gdouble lower; + gdouble upper; GtkObject *value_adjustment; GtkWidget *value_spinbutton; - gfloat value; - gfloat min_value; - gfloat max_value; + gdouble value; + gdouble min_value; + gdouble max_value; GtkObject *refval_adjustment; GtkWidget *refval_spinbutton; - gfloat refval; - gfloat min_refval; - gfloat max_refval; + gdouble refval; + gdouble min_refval; + gdouble max_refval; gint refval_digits; gint stop_recursion; @@ -221,7 +220,6 @@ gimp_size_entry_new (gint number_of_fields, gse->fields = g_slist_append (gse->fields, gsef); gsef->gse = gse; - gsef->index = i; gsef->resolution = 1.0; /* just to avoid division by zero */ gsef->lower = 0.0; gsef->upper = 100.0; @@ -343,7 +341,6 @@ gimp_size_entry_add_field (GimpSizeEntry *gse, gse->number_of_fields++; gsef->gse = gse; - gsef->index = 0; gsef->resolution = 1.0; /* just to avoid division by zero */ gsef->lower = 0.0; gsef->upper = 100.0; @@ -431,7 +428,7 @@ gimp_size_entry_attach_label (GimpSizeEntry *gse, void gimp_size_entry_set_resolution (GimpSizeEntry *gse, gint field, - gfloat resolution, + gdouble resolution, guint keep_size) { GimpSizeEntryField *gsef; @@ -461,8 +458,8 @@ gimp_size_entry_set_resolution (GimpSizeEntry *gse, void gimp_size_entry_set_size (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper) + gdouble lower, + gdouble upper) { GimpSizeEntryField *gsef; @@ -484,8 +481,8 @@ gimp_size_entry_set_size (GimpSizeEntry *gse, void gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper) + gdouble lower, + gdouble upper) { GimpSizeEntryField *gsef; @@ -552,7 +549,7 @@ gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse, gimp_size_entry_set_value (gse, field, gsef->value); } -gfloat +gdouble gimp_size_entry_get_value (GimpSizeEntry *gse, gint field) { @@ -568,7 +565,7 @@ gimp_size_entry_get_value (GimpSizeEntry *gse, static void gimp_size_entry_update_value (GimpSizeEntryField *gsef, - gfloat value) + gdouble value) { if (gsef->stop_recursion > 1) return; @@ -619,7 +616,7 @@ gimp_size_entry_update_value (GimpSizeEntryField *gsef, void gimp_size_entry_set_value (GimpSizeEntry *gse, gint field, - gfloat value) + gdouble value) { GimpSizeEntryField *gsef; @@ -642,7 +639,7 @@ gimp_size_entry_value_callback (GtkWidget *widget, gpointer data) { GimpSizeEntryField *gsef; - gfloat new_value; + gdouble new_value; gsef = (GimpSizeEntryField*) data; @@ -662,8 +659,8 @@ gimp_size_entry_value_callback (GtkWidget *widget, void gimp_size_entry_set_refval_boundaries (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper) + gdouble lower, + gdouble upper) { GimpSizeEntryField *gsef; @@ -761,7 +758,7 @@ gimp_size_entry_set_refval_digits (GimpSizeEntry *gse, } } -gfloat +gdouble gimp_size_entry_get_refval (GimpSizeEntry *gse, gint field) { @@ -778,7 +775,7 @@ gimp_size_entry_get_refval (GimpSizeEntry *gse, static void gimp_size_entry_update_refval (GimpSizeEntryField *gsef, - gfloat refval) + gdouble refval) { if (gsef->stop_recursion > 1) return; @@ -827,7 +824,7 @@ gimp_size_entry_update_refval (GimpSizeEntryField *gsef, void gimp_size_entry_set_refval (GimpSizeEntry *gse, gint field, - gfloat refval) + gdouble refval) { GimpSizeEntryField *gsef; @@ -853,7 +850,7 @@ gimp_size_entry_refval_callback (GtkWidget *widget, gpointer data) { GimpSizeEntryField *gsef; - gfloat new_refval; + gdouble new_refval; gsef = (GimpSizeEntryField*) data; diff --git a/libgimpwidgets/gimpsizeentry.h b/libgimpwidgets/gimpsizeentry.h index dbf3bdf516..e185808bcb 100644 --- a/libgimpwidgets/gimpsizeentry.h +++ b/libgimpwidgets/gimpsizeentry.h @@ -16,7 +16,6 @@ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ - #ifndef __GIMP_SIZE_ENTRY_H__ #define __GIMP_SIZE_ENTRY_H__ @@ -133,7 +132,7 @@ void gimp_size_entry_attach_label (GimpSizeEntry *gse, */ void gimp_size_entry_set_resolution (GimpSizeEntry *gse, gint field, - gfloat resolution, + gdouble resolution, guint keep_size); /* this one sets the values (in pixels) which will be treated as @@ -143,8 +142,8 @@ void gimp_size_entry_set_resolution (GimpSizeEntry *gse, */ void gimp_size_entry_set_size (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper); + gdouble lower, + gdouble upper); /* these functions set/return the value in the units the user selected * note that in some cases where the caller chooses not to have the @@ -153,13 +152,13 @@ void gimp_size_entry_set_size (GimpSizeEntry *gse, */ void gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper); -gfloat gimp_size_entry_get_value (GimpSizeEntry *gse, + gdouble lower, + gdouble upper); +gdouble gimp_size_entry_get_value (GimpSizeEntry *gse, gint field); void gimp_size_entry_set_value (GimpSizeEntry *gse, gint field, - gfloat value); + gdouble value); /* these functions set/return the value in the 'reference unit' for the * current update policy @@ -171,16 +170,16 @@ void gimp_size_entry_set_value (GimpSizeEntry *gse, */ void gimp_size_entry_set_refval_boundaries (GimpSizeEntry *gse, gint field, - gfloat lower, - gfloat upper); + gdouble lower, + gdouble upper); void gimp_size_entry_set_refval_digits (GimpSizeEntry *gse, gint field, gint digits); -gfloat gimp_size_entry_get_refval (GimpSizeEntry *gse, +gdouble gimp_size_entry_get_refval (GimpSizeEntry *gse, gint field); void gimp_size_entry_set_refval (GimpSizeEntry *gse, gint field, - gfloat refval); + gdouble refval); /* these functions set/return the currently used unit * note that for GIMP_SIZE_ENTRY_UPDATE_SIZE a value of UNIT_PIXEL diff --git a/libgimpwidgets/gimpunitmenu.c b/libgimpwidgets/gimpunitmenu.c index 628bbb75f0..15f402ac85 100644 --- a/libgimpwidgets/gimpunitmenu.c +++ b/libgimpwidgets/gimpunitmenu.c @@ -453,9 +453,10 @@ gimp_unit_menu_create_selection (GimpUnitMenu *gum) gum->selection = gtk_dialog_new (); gtk_window_set_wmclass (GTK_WINDOW (gum->selection), - "unitselection", "Gimp"); + "unit_selection", "Gimp"); gtk_window_set_title (GTK_WINDOW (gum->selection), _("Unit Selection")); - gtk_window_set_policy (GTK_WINDOW(gum->selection), FALSE, TRUE, FALSE); + gtk_window_set_policy (GTK_WINDOW (gum->selection), FALSE, TRUE, FALSE); + gtk_window_position (GTK_WINDOW (gum->selection), GTK_WIN_POS_MOUSE); vbox = gtk_vbox_new (FALSE, 2); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (gum->selection)->vbox), vbox); diff --git a/plug-ins/common/newsprint.c b/plug-ins/common/newsprint.c index 07434ac632..3c248dffec 100644 --- a/plug-ins/common/newsprint.c +++ b/plug-ins/common/newsprint.c @@ -1270,13 +1270,13 @@ newsprint_dialog (GDrawable *drawable) #ifdef GIMP_HAVE_RESOLUTION_INFO { - float xres, yres; - gimp_image_get_resolution(gimp_drawable_image_id(drawable->id), - &xres, &yres); - /* XXX hack: should really note both resolutions, and use - * rectangular cells, not square cells. But I'm being lazy, - * and the majority of the world works with xres == yres */ - pvals_ui.input_spi = xres; + double xres, yres; + gimp_image_get_resolution(gimp_drawable_image_id(drawable->id), + &xres, &yres); + /* XXX hack: should really note both resolutions, and use + * rectangular cells, not square cells. But I'm being lazy, + * and the majority of the world works with xres == yres */ + pvals_ui.input_spi = xres; } #endif diff --git a/plug-ins/common/png.c b/plug-ins/common/png.c index 6ebfc1144a..f08f9aa39c 100644 --- a/plug-ins/common/png.c +++ b/plug-ins/common/png.c @@ -37,6 +37,39 @@ * Revision History: * * $Log$ + * Revision 1.18 1999/05/22 17:56:32 mitch + * 1999-05-22 Michael Natterer + * + * * app/[all files with resolution info] + * * libgimp/gimp.h + * * libgimp/gimpimage.c + * * libgimp/gimpsizeentry.[ch] + * * libgimp/gimpunit.[ch] + * * plug-ins/newsprint/newsprint.c + * * plug-ins/pgn/png.c + * * plug-ins/tiff/tiff.c: double instead of float for all resolution + * and unit-factor variables. + * + * * app/commands.c + * * app/crop.c + * * app/interface.c + * * app/layers_dialog.c + * * app/move_tool.c + * * app/resize.c + * * app/rotate_tool.c + * * app/scale_tool.c: pass the image's unit *and* gdisp->dot_for_dot + * to all functions which create sizeentries. Never create a + * sizeentry with UNIT_PIXEL but with the image's unit and set it's + * unit to UNIT_PIXEL after creation if dot_for_dot is on. + * This way the image's unit can always be picked from the menu + * without selecting "More...". + * + * * app/interface.c: made the query_*_box() functions use the + * ActionArea. + * + * * plug-ins/gimpunitmenu.c: GTK_WIN_POS_MOUSE for the unit + * selection dialog. + * * Revision 1.17 1999/05/04 17:20:05 mitch * 1999-05-02 Michael Natterer * @@ -668,12 +701,12 @@ load_image(char *filename) /* I - File to load */ { if (info->phys_unit_type == PNG_RESOLUTION_METER) gimp_image_set_resolution(image, - ((float) info->x_pixels_per_unit) * 0.0254, - ((float) info->y_pixels_per_unit) * 0.0254); + ((double) info->x_pixels_per_unit) * 0.0254, + ((double) info->y_pixels_per_unit) * 0.0254); else /* set aspect ratio as resolution */ gimp_image_set_resolution(image, - ((float) info->x_pixels_per_unit), - ((float) info->y_pixels_per_unit)); + ((double) info->x_pixels_per_unit), + ((double) info->y_pixels_per_unit)); } #endif /* GIMP_HAVE_RESOLUTION_INFO */ @@ -793,7 +826,7 @@ save_image(char *filename, /* I - File to save to */ guchar **pixels, /* Pixel rows */ *pixel; /* Pixel data */ char progress[255]; /* Title for progress display... */ - float xres, yres; /* GIMP resolution (dpi) */ + gdouble xres, yres; /* GIMP resolution (dpi) */ gdouble gamma; /* diff --git a/plug-ins/common/tiff.c b/plug-ins/common/tiff.c index 76422f6384..303ec02f6d 100644 --- a/plug-ins/common/tiff.c +++ b/plug-ins/common/tiff.c @@ -518,7 +518,7 @@ static gint32 load_image (char *filename) { /* now set the new image's resolution info */ gimp_image_set_resolution (image, xres, yres); if (unit != UNIT_PIXEL) - gimp_image_set_unit(image, unit); + gimp_image_set_unit (image, unit); } /* no x res tag => we assume we have no resolution info, so we @@ -1138,33 +1138,33 @@ static gint save_image (char *filename, gint32 image, gint32 layer) { #ifdef GIMP_HAVE_RESOLUTION_INFO /* resolution fields */ { - float xresolution; - float yresolution; - unsigned short save_unit = RESUNIT_INCH; - GUnit unit; - float factor; + double xresolution; + double yresolution; + unsigned short save_unit = RESUNIT_INCH; + GUnit unit; + float factor; - gimp_image_get_resolution (image, &xresolution, &yresolution); - unit = gimp_image_get_unit (image); - factor = gimp_unit_get_factor (unit); + gimp_image_get_resolution (image, &xresolution, &yresolution); + unit = gimp_image_get_unit (image); + factor = gimp_unit_get_factor (unit); - /* if we have a metric unit, save the resolution as centimeters - */ - if ((ABS(factor - 0.0254) < 1e-5) || /* m */ - (ABS(factor - 0.254) < 1e-5) || /* why not ;) */ - (ABS(factor - 2.54) < 1e-5) || /* cm */ - (ABS(factor - 25.4) < 1e-5)) /* mm */ - { - save_unit = RESUNIT_CENTIMETER; - xresolution /= 2.54; - yresolution /= 2.54; - } - - if (xresolution > 1e-5 && yresolution > 1e-5) + /* if we have a metric unit, save the resolution as centimeters + */ + if ((ABS(factor - 0.0254) < 1e-5) || /* m */ + (ABS(factor - 0.254) < 1e-5) || /* why not ;) */ + (ABS(factor - 2.54) < 1e-5) || /* cm */ + (ABS(factor - 25.4) < 1e-5)) /* mm */ { - TIFFSetField (tif, TIFFTAG_XRESOLUTION, xresolution); - TIFFSetField (tif, TIFFTAG_YRESOLUTION, yresolution); - TIFFSetField (tif, TIFFTAG_RESOLUTIONUNIT, save_unit); + save_unit = RESUNIT_CENTIMETER; + xresolution /= 2.54; + yresolution /= 2.54; + } + + if (xresolution > 1e-5 && yresolution > 1e-5) + { + TIFFSetField (tif, TIFFTAG_XRESOLUTION, xresolution); + TIFFSetField (tif, TIFFTAG_YRESOLUTION, yresolution); + TIFFSetField (tif, TIFFTAG_RESOLUTIONUNIT, save_unit); } } #endif /* GIMP_HAVE_RESOLUTION_INFO */ diff --git a/plug-ins/newsprint/newsprint.c b/plug-ins/newsprint/newsprint.c index 07434ac632..3c248dffec 100644 --- a/plug-ins/newsprint/newsprint.c +++ b/plug-ins/newsprint/newsprint.c @@ -1270,13 +1270,13 @@ newsprint_dialog (GDrawable *drawable) #ifdef GIMP_HAVE_RESOLUTION_INFO { - float xres, yres; - gimp_image_get_resolution(gimp_drawable_image_id(drawable->id), - &xres, &yres); - /* XXX hack: should really note both resolutions, and use - * rectangular cells, not square cells. But I'm being lazy, - * and the majority of the world works with xres == yres */ - pvals_ui.input_spi = xres; + double xres, yres; + gimp_image_get_resolution(gimp_drawable_image_id(drawable->id), + &xres, &yres); + /* XXX hack: should really note both resolutions, and use + * rectangular cells, not square cells. But I'm being lazy, + * and the majority of the world works with xres == yres */ + pvals_ui.input_spi = xres; } #endif diff --git a/plug-ins/png/png.c b/plug-ins/png/png.c index 6ebfc1144a..f08f9aa39c 100644 --- a/plug-ins/png/png.c +++ b/plug-ins/png/png.c @@ -37,6 +37,39 @@ * Revision History: * * $Log$ + * Revision 1.18 1999/05/22 17:56:32 mitch + * 1999-05-22 Michael Natterer + * + * * app/[all files with resolution info] + * * libgimp/gimp.h + * * libgimp/gimpimage.c + * * libgimp/gimpsizeentry.[ch] + * * libgimp/gimpunit.[ch] + * * plug-ins/newsprint/newsprint.c + * * plug-ins/pgn/png.c + * * plug-ins/tiff/tiff.c: double instead of float for all resolution + * and unit-factor variables. + * + * * app/commands.c + * * app/crop.c + * * app/interface.c + * * app/layers_dialog.c + * * app/move_tool.c + * * app/resize.c + * * app/rotate_tool.c + * * app/scale_tool.c: pass the image's unit *and* gdisp->dot_for_dot + * to all functions which create sizeentries. Never create a + * sizeentry with UNIT_PIXEL but with the image's unit and set it's + * unit to UNIT_PIXEL after creation if dot_for_dot is on. + * This way the image's unit can always be picked from the menu + * without selecting "More...". + * + * * app/interface.c: made the query_*_box() functions use the + * ActionArea. + * + * * plug-ins/gimpunitmenu.c: GTK_WIN_POS_MOUSE for the unit + * selection dialog. + * * Revision 1.17 1999/05/04 17:20:05 mitch * 1999-05-02 Michael Natterer * @@ -668,12 +701,12 @@ load_image(char *filename) /* I - File to load */ { if (info->phys_unit_type == PNG_RESOLUTION_METER) gimp_image_set_resolution(image, - ((float) info->x_pixels_per_unit) * 0.0254, - ((float) info->y_pixels_per_unit) * 0.0254); + ((double) info->x_pixels_per_unit) * 0.0254, + ((double) info->y_pixels_per_unit) * 0.0254); else /* set aspect ratio as resolution */ gimp_image_set_resolution(image, - ((float) info->x_pixels_per_unit), - ((float) info->y_pixels_per_unit)); + ((double) info->x_pixels_per_unit), + ((double) info->y_pixels_per_unit)); } #endif /* GIMP_HAVE_RESOLUTION_INFO */ @@ -793,7 +826,7 @@ save_image(char *filename, /* I - File to save to */ guchar **pixels, /* Pixel rows */ *pixel; /* Pixel data */ char progress[255]; /* Title for progress display... */ - float xres, yres; /* GIMP resolution (dpi) */ + gdouble xres, yres; /* GIMP resolution (dpi) */ gdouble gamma; /* diff --git a/plug-ins/tiff/tiff.c b/plug-ins/tiff/tiff.c index 76422f6384..303ec02f6d 100644 --- a/plug-ins/tiff/tiff.c +++ b/plug-ins/tiff/tiff.c @@ -518,7 +518,7 @@ static gint32 load_image (char *filename) { /* now set the new image's resolution info */ gimp_image_set_resolution (image, xres, yres); if (unit != UNIT_PIXEL) - gimp_image_set_unit(image, unit); + gimp_image_set_unit (image, unit); } /* no x res tag => we assume we have no resolution info, so we @@ -1138,33 +1138,33 @@ static gint save_image (char *filename, gint32 image, gint32 layer) { #ifdef GIMP_HAVE_RESOLUTION_INFO /* resolution fields */ { - float xresolution; - float yresolution; - unsigned short save_unit = RESUNIT_INCH; - GUnit unit; - float factor; + double xresolution; + double yresolution; + unsigned short save_unit = RESUNIT_INCH; + GUnit unit; + float factor; - gimp_image_get_resolution (image, &xresolution, &yresolution); - unit = gimp_image_get_unit (image); - factor = gimp_unit_get_factor (unit); + gimp_image_get_resolution (image, &xresolution, &yresolution); + unit = gimp_image_get_unit (image); + factor = gimp_unit_get_factor (unit); - /* if we have a metric unit, save the resolution as centimeters - */ - if ((ABS(factor - 0.0254) < 1e-5) || /* m */ - (ABS(factor - 0.254) < 1e-5) || /* why not ;) */ - (ABS(factor - 2.54) < 1e-5) || /* cm */ - (ABS(factor - 25.4) < 1e-5)) /* mm */ - { - save_unit = RESUNIT_CENTIMETER; - xresolution /= 2.54; - yresolution /= 2.54; - } - - if (xresolution > 1e-5 && yresolution > 1e-5) + /* if we have a metric unit, save the resolution as centimeters + */ + if ((ABS(factor - 0.0254) < 1e-5) || /* m */ + (ABS(factor - 0.254) < 1e-5) || /* why not ;) */ + (ABS(factor - 2.54) < 1e-5) || /* cm */ + (ABS(factor - 25.4) < 1e-5)) /* mm */ { - TIFFSetField (tif, TIFFTAG_XRESOLUTION, xresolution); - TIFFSetField (tif, TIFFTAG_YRESOLUTION, yresolution); - TIFFSetField (tif, TIFFTAG_RESOLUTIONUNIT, save_unit); + save_unit = RESUNIT_CENTIMETER; + xresolution /= 2.54; + yresolution /= 2.54; + } + + if (xresolution > 1e-5 && yresolution > 1e-5) + { + TIFFSetField (tif, TIFFTAG_XRESOLUTION, xresolution); + TIFFSetField (tif, TIFFTAG_YRESOLUTION, yresolution); + TIFFSetField (tif, TIFFTAG_RESOLUTIONUNIT, save_unit); } } #endif /* GIMP_HAVE_RESOLUTION_INFO */