set new image resolution correctly. Previously wasn't taking into account

Sun Oct 18 21:20:25 BST 1998  Austin Donnelly  <austin@greenend.org.uk>

	* app/file_new_dialog.c: set new image resolution correctly.
	Previously wasn't taking into account the units, and assuming
	dpi.  When using existing image as a template for size, take
	resolution too.  Make sure cm/inch option menus are persistent
	across dialog popups.
This commit is contained in:
BST 1998 Austin Donnelly 1998-10-18 20:38:36 +00:00 committed by Austin Donnelly
parent acb526c80b
commit cff7ddbdb6
3 changed files with 54 additions and 18 deletions

View file

@ -83,7 +83,11 @@ file_new_ok_callback (GtkWidget *widget,
vals->width = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (vals->width_spinbutton));
vals->height = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (vals->height_spinbutton));
/* resolution is always in DPI, but the value in the spinner may not
* be */
vals->resolution = gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (vals->resolution_spinbutton));
vals->resolution *= vals->res_unit;
last_new_image = TRUE;
@ -445,10 +449,9 @@ file_new_cmd_callback (GtkWidget *widget,
vals->width = gdisp->gimage->width;
vals->height = gdisp->gimage->height;
vals->type = gimage_base_type (gdisp->gimage);
/* this is wrong, but until resolution and unit is stored in the image... */
vals->resolution = last_resolution;
vals->resolution = gdisp->gimage->resolution;
vals->unit = last_unit;
vals->res_unit = last_res_unit;
vals->res_unit = 1.0;
}
else
{
@ -470,6 +473,10 @@ file_new_cmd_callback (GtkWidget *widget,
{
vals->width = global_buf->width;
vals->height = global_buf->height;
/* It would be good to set the resolution here, but that would
* require TileManagers to know about the resolution of tiles
* they're dealing with. It's not clear we want to go down that
* road. -- austin */
}
vals->dlg = gtk_dialog_new ();
@ -554,7 +561,7 @@ file_new_cmd_callback (GtkWidget *widget,
gtk_widget_show (vals->height_spinbutton);
/* width in units spinbutton */
temp = (float) vals->width / vals->resolution;
temp = (float) vals->width / vals->resolution * vals->unit;
adj = (GtkAdjustment *) gtk_adjustment_new (temp, 0.0, 32767.0,
1.0, 0.01, 0.0);
vals->width_units_spinbutton = gtk_spin_button_new (adj, 1.0, 2.0);
@ -570,7 +577,7 @@ file_new_cmd_callback (GtkWidget *widget,
gtk_widget_show (vals->width_units_spinbutton);
/* height in units spinbutton */
temp = (float) vals->height / vals->resolution;
temp = (float) vals->height / vals->resolution * vals->unit;
adj = (GtkAdjustment *) gtk_adjustment_new (temp, 0.0, 32767.0,
1.0, 0.01, 0.0);
vals->height_units_spinbutton = gtk_spin_button_new (adj, 1.0, 2.0);
@ -607,6 +614,8 @@ file_new_cmd_callback (GtkWidget *widget,
optionmenu = gtk_option_menu_new();
gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), menu);
if (vals->unit != 1.0)
gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), 1);
gtk_table_attach (GTK_TABLE (table), optionmenu , 2, 3, 2, 3,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
gtk_widget_show(optionmenu);
@ -623,7 +632,8 @@ file_new_cmd_callback (GtkWidget *widget,
gtk_widget_show(hbox);
/* resoltuion spinbutton */
adj = (GtkAdjustment *) gtk_adjustment_new (vals->resolution, 1.0, 32767.0,
adj = (GtkAdjustment *) gtk_adjustment_new (vals->resolution/vals->res_unit,
1.0, 32767.0,
1.0, 5.0, 0.0);
vals->resolution_spinbutton = gtk_spin_button_new (adj, 1.0, 2.0);
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON(vals->resolution_spinbutton), GTK_SHADOW_NONE);
@ -660,6 +670,8 @@ file_new_cmd_callback (GtkWidget *widget,
optionmenu = gtk_option_menu_new();
gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), menu);
if (vals->res_unit != 1.0)
gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), 1);
gtk_box_pack_start (GTK_BOX (hbox), optionmenu, TRUE, TRUE, 0);
gtk_widget_show(optionmenu);

View file

@ -83,7 +83,11 @@ file_new_ok_callback (GtkWidget *widget,
vals->width = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (vals->width_spinbutton));
vals->height = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (vals->height_spinbutton));
/* resolution is always in DPI, but the value in the spinner may not
* be */
vals->resolution = gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (vals->resolution_spinbutton));
vals->resolution *= vals->res_unit;
last_new_image = TRUE;
@ -445,10 +449,9 @@ file_new_cmd_callback (GtkWidget *widget,
vals->width = gdisp->gimage->width;
vals->height = gdisp->gimage->height;
vals->type = gimage_base_type (gdisp->gimage);
/* this is wrong, but until resolution and unit is stored in the image... */
vals->resolution = last_resolution;
vals->resolution = gdisp->gimage->resolution;
vals->unit = last_unit;
vals->res_unit = last_res_unit;
vals->res_unit = 1.0;
}
else
{
@ -470,6 +473,10 @@ file_new_cmd_callback (GtkWidget *widget,
{
vals->width = global_buf->width;
vals->height = global_buf->height;
/* It would be good to set the resolution here, but that would
* require TileManagers to know about the resolution of tiles
* they're dealing with. It's not clear we want to go down that
* road. -- austin */
}
vals->dlg = gtk_dialog_new ();
@ -554,7 +561,7 @@ file_new_cmd_callback (GtkWidget *widget,
gtk_widget_show (vals->height_spinbutton);
/* width in units spinbutton */
temp = (float) vals->width / vals->resolution;
temp = (float) vals->width / vals->resolution * vals->unit;
adj = (GtkAdjustment *) gtk_adjustment_new (temp, 0.0, 32767.0,
1.0, 0.01, 0.0);
vals->width_units_spinbutton = gtk_spin_button_new (adj, 1.0, 2.0);
@ -570,7 +577,7 @@ file_new_cmd_callback (GtkWidget *widget,
gtk_widget_show (vals->width_units_spinbutton);
/* height in units spinbutton */
temp = (float) vals->height / vals->resolution;
temp = (float) vals->height / vals->resolution * vals->unit;
adj = (GtkAdjustment *) gtk_adjustment_new (temp, 0.0, 32767.0,
1.0, 0.01, 0.0);
vals->height_units_spinbutton = gtk_spin_button_new (adj, 1.0, 2.0);
@ -607,6 +614,8 @@ file_new_cmd_callback (GtkWidget *widget,
optionmenu = gtk_option_menu_new();
gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), menu);
if (vals->unit != 1.0)
gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), 1);
gtk_table_attach (GTK_TABLE (table), optionmenu , 2, 3, 2, 3,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
gtk_widget_show(optionmenu);
@ -623,7 +632,8 @@ file_new_cmd_callback (GtkWidget *widget,
gtk_widget_show(hbox);
/* resoltuion spinbutton */
adj = (GtkAdjustment *) gtk_adjustment_new (vals->resolution, 1.0, 32767.0,
adj = (GtkAdjustment *) gtk_adjustment_new (vals->resolution/vals->res_unit,
1.0, 32767.0,
1.0, 5.0, 0.0);
vals->resolution_spinbutton = gtk_spin_button_new (adj, 1.0, 2.0);
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON(vals->resolution_spinbutton), GTK_SHADOW_NONE);
@ -660,6 +670,8 @@ file_new_cmd_callback (GtkWidget *widget,
optionmenu = gtk_option_menu_new();
gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), menu);
if (vals->res_unit != 1.0)
gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), 1);
gtk_box_pack_start (GTK_BOX (hbox), optionmenu, TRUE, TRUE, 0);
gtk_widget_show(optionmenu);

View file

@ -83,7 +83,11 @@ file_new_ok_callback (GtkWidget *widget,
vals->width = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (vals->width_spinbutton));
vals->height = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (vals->height_spinbutton));
/* resolution is always in DPI, but the value in the spinner may not
* be */
vals->resolution = gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (vals->resolution_spinbutton));
vals->resolution *= vals->res_unit;
last_new_image = TRUE;
@ -445,10 +449,9 @@ file_new_cmd_callback (GtkWidget *widget,
vals->width = gdisp->gimage->width;
vals->height = gdisp->gimage->height;
vals->type = gimage_base_type (gdisp->gimage);
/* this is wrong, but until resolution and unit is stored in the image... */
vals->resolution = last_resolution;
vals->resolution = gdisp->gimage->resolution;
vals->unit = last_unit;
vals->res_unit = last_res_unit;
vals->res_unit = 1.0;
}
else
{
@ -470,6 +473,10 @@ file_new_cmd_callback (GtkWidget *widget,
{
vals->width = global_buf->width;
vals->height = global_buf->height;
/* It would be good to set the resolution here, but that would
* require TileManagers to know about the resolution of tiles
* they're dealing with. It's not clear we want to go down that
* road. -- austin */
}
vals->dlg = gtk_dialog_new ();
@ -554,7 +561,7 @@ file_new_cmd_callback (GtkWidget *widget,
gtk_widget_show (vals->height_spinbutton);
/* width in units spinbutton */
temp = (float) vals->width / vals->resolution;
temp = (float) vals->width / vals->resolution * vals->unit;
adj = (GtkAdjustment *) gtk_adjustment_new (temp, 0.0, 32767.0,
1.0, 0.01, 0.0);
vals->width_units_spinbutton = gtk_spin_button_new (adj, 1.0, 2.0);
@ -570,7 +577,7 @@ file_new_cmd_callback (GtkWidget *widget,
gtk_widget_show (vals->width_units_spinbutton);
/* height in units spinbutton */
temp = (float) vals->height / vals->resolution;
temp = (float) vals->height / vals->resolution * vals->unit;
adj = (GtkAdjustment *) gtk_adjustment_new (temp, 0.0, 32767.0,
1.0, 0.01, 0.0);
vals->height_units_spinbutton = gtk_spin_button_new (adj, 1.0, 2.0);
@ -607,6 +614,8 @@ file_new_cmd_callback (GtkWidget *widget,
optionmenu = gtk_option_menu_new();
gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), menu);
if (vals->unit != 1.0)
gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), 1);
gtk_table_attach (GTK_TABLE (table), optionmenu , 2, 3, 2, 3,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
gtk_widget_show(optionmenu);
@ -623,7 +632,8 @@ file_new_cmd_callback (GtkWidget *widget,
gtk_widget_show(hbox);
/* resoltuion spinbutton */
adj = (GtkAdjustment *) gtk_adjustment_new (vals->resolution, 1.0, 32767.0,
adj = (GtkAdjustment *) gtk_adjustment_new (vals->resolution/vals->res_unit,
1.0, 32767.0,
1.0, 5.0, 0.0);
vals->resolution_spinbutton = gtk_spin_button_new (adj, 1.0, 2.0);
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON(vals->resolution_spinbutton), GTK_SHADOW_NONE);
@ -660,6 +670,8 @@ file_new_cmd_callback (GtkWidget *widget,
optionmenu = gtk_option_menu_new();
gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), menu);
if (vals->res_unit != 1.0)
gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), 1);
gtk_box_pack_start (GTK_BOX (hbox), optionmenu, TRUE, TRUE, 0);
gtk_widget_show(optionmenu);