static void gimp_image_map_tool_notify_preview (GObject *config, GParamSpec *pspec, GimpImageMapTool *image_map_tool) { GimpTool *tool = GIMP_TOOL (image_map_tool); GimpImageMapOptions *options = GIMP_IMAGE_MAP_OPTIONS (config); if (image_map_tool->image_map) { if (options->preview) { gimp_tool_control_set_preserve (tool->control, TRUE); gimp_image_map_tool_map (image_map_tool); gimp_tool_control_set_preserve (tool->control, FALSE); } else { gimp_tool_control_set_preserve (tool->control, TRUE); gimp_image_map_clear (image_map_tool->image_map); gimp_tool_control_set_preserve (tool->control, FALSE); gimp_image_map_tool_flush (image_map_tool->image_map, image_map_tool); } } }
static gboolean gimp_seamless_clone_tool_key_press (GimpTool *tool, GdkEventKey *kevent, GimpDisplay *display) { GimpSeamlessCloneTool *sct = GIMP_SEAMLESS_CLONE_TOOL (tool); if (sct->tool_state == SC_STATE_RENDER_MOTION || sct->tool_state == SC_STATE_RENDER_WAIT) { switch (kevent->keyval) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: case GDK_KEY_ISO_Enter: gimp_tool_control_set_preserve (tool->control, TRUE); /* TODO: there may be issues with committing the image map * result after some changes were made and the preview * was scrolled. We can fix these by either invalidating * the area which is a union of the previous paste * rectangle each time (in the update function) or by * invalidating and re-rendering all now (expensive and * perhaps useless */ gimp_image_map_commit (sct->image_map, GIMP_PROGRESS (tool)); g_object_unref (sct->image_map); sct->image_map = NULL; gimp_tool_control_set_preserve (tool->control, FALSE); gimp_image_flush (gimp_display_get_image (display)); gimp_seamless_clone_tool_control (tool, GIMP_TOOL_ACTION_HALT, display); return TRUE; case GDK_KEY_Escape: gimp_seamless_clone_tool_control (tool, GIMP_TOOL_ACTION_HALT, display); return TRUE; default: break; } } return FALSE; }
static void gimp_rectangle_select_tool_init (GimpRectangleSelectTool *rect_sel_tool) { GimpTool *tool = GIMP_TOOL (rect_sel_tool); GimpRectangleSelectToolPrivate *priv; gimp_rectangle_tool_init (GIMP_RECTANGLE_TOOL (rect_sel_tool)); rect_sel_tool->priv = G_TYPE_INSTANCE_GET_PRIVATE (rect_sel_tool, GIMP_TYPE_RECTANGLE_SELECT_TOOL, GimpRectangleSelectToolPrivate); priv = GIMP_RECTANGLE_SELECT_TOOL_GET_PRIVATE (rect_sel_tool); gimp_tool_control_set_wants_click (tool->control, TRUE); gimp_tool_control_set_precision (tool->control, GIMP_CURSOR_PRECISION_PIXEL_BORDER); gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_RECT_SELECT); gimp_tool_control_set_preserve (tool->control, FALSE); gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE_SIZE | GIMP_DIRTY_SELECTION); priv->undo = NULL; priv->redo = NULL; priv->press_x = 0.0; priv->press_y = 0.0; }
static void gimp_image_map_tool_gegl_notify (GObject *config, const GParamSpec *pspec, GimpImageMapTool *im_tool) { if (im_tool->image_map) { gimp_tool_control_set_preserve (GIMP_TOOL (im_tool)->control, TRUE); gimp_image_map_tool_create_map (im_tool); gimp_tool_control_set_preserve (GIMP_TOOL (im_tool)->control, FALSE); gimp_image_map_tool_preview (im_tool); } }
static void gimp_cage_tool_init (GimpCageTool *self) { GimpTool *tool = GIMP_TOOL (self); gimp_tool_control_set_preserve (tool->control, FALSE); gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE | GIMP_DIRTY_IMAGE_STRUCTURE | GIMP_DIRTY_DRAWABLE | GIMP_DIRTY_SELECTION | GIMP_DIRTY_ACTIVE_DRAWABLE); gimp_tool_control_set_wants_click (tool->control, TRUE); gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_PERSPECTIVE); self->config = g_object_new (GIMP_TYPE_CAGE_CONFIG, NULL); self->hovering_handle = -1; self->tool_state = CAGE_STATE_INIT; self->coef = NULL; self->render_node = NULL; self->coef_node = NULL; self->cage_node = NULL; self->image_map = NULL; }
void gimp_image_map_tool_preview (GimpImageMapTool *image_map_tool) { GimpTool *tool; GimpImageMapOptions *options; g_return_if_fail (GIMP_IS_IMAGE_MAP_TOOL (image_map_tool)); tool = GIMP_TOOL (image_map_tool); options = GIMP_IMAGE_MAP_TOOL_GET_OPTIONS (tool); if (image_map_tool->image_map && options->preview) { gimp_tool_control_set_preserve (tool->control, TRUE); gimp_image_map_tool_map (image_map_tool); gimp_tool_control_set_preserve (tool->control, FALSE); } }
static void gimp_image_map_tool_init (GimpImageMapTool *im_tool) { GimpTool *tool = GIMP_TOOL (im_tool); gimp_tool_control_set_scroll_lock (tool->control, TRUE); gimp_tool_control_set_preserve (tool->control, FALSE); gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE | GIMP_DIRTY_IMAGE_STRUCTURE | GIMP_DIRTY_DRAWABLE | GIMP_DIRTY_SELECTION | GIMP_DIRTY_ACTIVE_DRAWABLE); }
static void gimp_warp_tool_init (GimpWarpTool *self) { GimpTool *tool = GIMP_TOOL (self); gimp_tool_control_set_preserve (tool->control, FALSE); gimp_tool_control_set_motion_mode (tool->control, GIMP_MOTION_MODE_EXACT); gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE | GIMP_DIRTY_IMAGE_STRUCTURE | GIMP_DIRTY_DRAWABLE | GIMP_DIRTY_SELECTION); gimp_tool_control_set_wants_click (tool->control, TRUE); gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_PERSPECTIVE); }
static void gimp_n_point_deformation_tool_init (GimpNPointDeformationTool *npd_tool) { GimpTool *tool = GIMP_TOOL (npd_tool); gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_PERSPECTIVE); gimp_tool_control_set_preserve (tool->control, FALSE); gimp_tool_control_set_wants_click (tool->control, TRUE); gimp_tool_control_set_wants_all_key_events (tool->control, TRUE); gimp_tool_control_set_handle_empty_image (tool->control, FALSE); gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE | GIMP_DIRTY_IMAGE_STRUCTURE | GIMP_DIRTY_DRAWABLE | GIMP_DIRTY_SELECTION | GIMP_DIRTY_ACTIVE_DRAWABLE); }
static void gimp_warp_tool_init (GimpWarpTool *self) { GimpTool *tool = GIMP_TOOL (self); gimp_tool_control_set_preserve (tool->control, FALSE); gimp_tool_control_set_motion_mode (tool->control, GIMP_MOTION_MODE_EXACT); gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE | GIMP_DIRTY_DRAWABLE | GIMP_DIRTY_SELECTION | GIMP_DIRTY_ACTIVE_DRAWABLE); gimp_tool_control_set_wants_click (tool->control, TRUE); gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_PERSPECTIVE); gimp_tool_control_set_action_size (tool->control, "tools/tools-warp-effect-size-set"); }
static void gimp_foreground_select_tool_init (GimpForegroundSelectTool *fg_select) { GimpTool *tool = GIMP_TOOL (fg_select); gimp_tool_control_set_scroll_lock (tool->control, FALSE); gimp_tool_control_set_preserve (tool->control, FALSE); gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE_SIZE); gimp_tool_control_set_precision (tool->control, GIMP_CURSOR_PRECISION_PIXEL_CENTER); gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_FREE_SELECT); gimp_tool_control_set_action_value_2 (tool->control, "tools/tools-foreground-select-brush-size-set"); fg_select->idle_id = 0; fg_select->stroke = NULL; fg_select->strokes = NULL; fg_select->mask = NULL; }
static void gimp_image_map_tool_init (GimpImageMapTool *image_map_tool) { GimpTool *tool = GIMP_TOOL (image_map_tool); gimp_tool_control_set_scroll_lock (tool->control, TRUE); gimp_tool_control_set_preserve (tool->control, FALSE); gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE | GIMP_DIRTY_IMAGE_STRUCTURE | GIMP_DIRTY_DRAWABLE | GIMP_DIRTY_SELECTION); image_map_tool->drawable = NULL; image_map_tool->operation = NULL; image_map_tool->config = NULL; image_map_tool->default_config = NULL; image_map_tool->image_map = NULL; image_map_tool->shell = NULL; image_map_tool->main_vbox = NULL; image_map_tool->settings_box = NULL; image_map_tool->label_group = NULL; }
static void gimp_image_map_tool_response (GtkWidget *widget, gint response_id, GimpImageMapTool *image_map_tool) { GimpTool *tool = GIMP_TOOL (image_map_tool); switch (response_id) { case RESPONSE_RESET: gimp_image_map_tool_reset (image_map_tool); gimp_image_map_tool_preview (image_map_tool); break; case GTK_RESPONSE_OK: gimp_dialog_factory_hide_dialog (image_map_tool->shell); if (image_map_tool->image_map) { GimpImageMapOptions *options = GIMP_IMAGE_MAP_TOOL_GET_OPTIONS (tool); gimp_tool_control_set_preserve (tool->control, TRUE); if (! options->preview) gimp_image_map_tool_map (image_map_tool); gimp_image_map_commit (image_map_tool->image_map); g_object_unref (image_map_tool->image_map); image_map_tool->image_map = NULL; gimp_tool_control_set_preserve (tool->control, FALSE); gimp_image_flush (tool->display->image); if (image_map_tool->config) gimp_settings_box_add_current (GIMP_SETTINGS_BOX (image_map_tool->settings_box)); } tool->display = NULL; tool->drawable = NULL; break; default: gimp_dialog_factory_hide_dialog (image_map_tool->shell); if (image_map_tool->image_map) { gimp_tool_control_set_preserve (tool->control, TRUE); gimp_image_map_abort (image_map_tool->image_map); g_object_unref (image_map_tool->image_map); image_map_tool->image_map = NULL; gimp_tool_control_set_preserve (tool->control, FALSE); gimp_image_flush (tool->display->image); } tool->display = NULL; tool->drawable = NULL; break; } }