static void gimp_scale_tool_dialog_update (GimpTransformTool *tr_tool) { GimpTransformOptions *options = GIMP_TRANSFORM_TOOL_GET_OPTIONS (tr_tool); gint width = ROUND (tr_tool->trans_info[X1] - tr_tool->trans_info[X0]); gint height = ROUND (tr_tool->trans_info[Y1] - tr_tool->trans_info[Y0]); g_object_set (GIMP_SCALE_TOOL (tr_tool)->box, "width", width, "height", height, "keep-aspect", options->constrain, NULL); }
static void gimp_scale_tool_prepare (GimpTransformTool *tr_tool) { GimpScaleTool *scale = GIMP_SCALE_TOOL (tr_tool); GimpTransformOptions *options = GIMP_TRANSFORM_TOOL_GET_OPTIONS (tr_tool); GimpDisplay *display = GIMP_TOOL (tr_tool)->display; gdouble xres; gdouble yres; tr_tool->trans_info[X0] = (gdouble) tr_tool->x1; tr_tool->trans_info[Y0] = (gdouble) tr_tool->y1; tr_tool->trans_info[X1] = (gdouble) tr_tool->x2; tr_tool->trans_info[Y1] = (gdouble) tr_tool->y2; gimp_image_get_resolution (gimp_display_get_image (display), &xres, &yres); if (scale->box) { g_signal_handlers_disconnect_by_func (scale->box, gimp_scale_tool_size_notify, tr_tool); gtk_widget_destroy (scale->box); } /* Need to create a new GimpSizeBox widget because the initial * width and height is what counts as 100%. */ scale->box = g_object_new (GIMP_TYPE_SIZE_BOX, "width", tr_tool->x2 - tr_tool->x1, "height", tr_tool->y2 - tr_tool->y1, "keep-aspect", options->constrain_scale, "unit", gimp_display_get_shell (display)->unit, "xresolution", xres, "yresolution", yres, NULL); gtk_box_pack_start (GTK_BOX (gimp_tool_gui_get_vbox (tr_tool->gui)), scale->box, FALSE, FALSE, 0); gtk_widget_show (scale->box); g_signal_connect (scale->box, "notify", G_CALLBACK (gimp_scale_tool_size_notify), tr_tool); }
static void gimp_scale_tool_prepare (GimpTransformTool *tr_tool, GimpDisplay *display) { GimpScaleTool *scale = GIMP_SCALE_TOOL (tr_tool); GimpTransformOptions *options = GIMP_TRANSFORM_TOOL_GET_OPTIONS (tr_tool); tr_tool->trans_info[X0] = (gdouble) tr_tool->x1; tr_tool->trans_info[Y0] = (gdouble) tr_tool->y1; tr_tool->trans_info[X1] = (gdouble) tr_tool->x2; tr_tool->trans_info[Y1] = (gdouble) tr_tool->y2; if (scale->box) { g_signal_handlers_disconnect_by_func (scale->box, gimp_scale_tool_size_notify, tr_tool); gtk_widget_destroy (scale->box); } /* Need to create a new GimpSizeBox widget because the initial * width and height is what counts as 100%. */ scale->box = g_object_new (GIMP_TYPE_SIZE_BOX, "width", tr_tool->x2 - tr_tool->x1, "height", tr_tool->y2 - tr_tool->y1, "keep-aspect", options->constrain, "unit", GIMP_DISPLAY_SHELL (display->shell)->unit, "xresolution", display->image->xresolution, "yresolution", display->image->yresolution, NULL); gtk_container_set_border_width (GTK_CONTAINER (scale->box), 6); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (tr_tool->dialog)->vbox), scale->box, FALSE, FALSE, 0); gtk_widget_show (scale->box); g_signal_connect (scale->box, "notify", G_CALLBACK (gimp_scale_tool_size_notify), tr_tool); }