static void gimp_sample_point_undo_pop (GimpUndo *undo, GimpUndoMode undo_mode, GimpUndoAccumulator *accum) { GimpSamplePointUndo *sample_point_undo = GIMP_SAMPLE_POINT_UNDO (undo); GimpSamplePoint *sample_point; gint x; gint y; GimpColorPickMode pick_mode; GIMP_UNDO_CLASS (parent_class)->pop (undo, undo_mode, accum); sample_point = GIMP_SAMPLE_POINT (GIMP_AUX_ITEM_UNDO (undo)->aux_item); gimp_sample_point_get_position (sample_point, &x, &y); pick_mode = gimp_sample_point_get_pick_mode (sample_point); if (x == GIMP_SAMPLE_POINT_POSITION_UNDEFINED) { gimp_image_add_sample_point (undo->image, sample_point, sample_point_undo->x, sample_point_undo->y); } else if (sample_point_undo->x == GIMP_SAMPLE_POINT_POSITION_UNDEFINED) { gimp_image_remove_sample_point (undo->image, sample_point, FALSE); } else { gimp_sample_point_set_position (sample_point, sample_point_undo->x, sample_point_undo->y); gimp_sample_point_set_pick_mode (sample_point, sample_point_undo->pick_mode); gimp_image_sample_point_moved (undo->image, sample_point); } sample_point_undo->x = x; sample_point_undo->y = y; sample_point_undo->pick_mode = pick_mode; }
static void gimp_sample_point_undo_pop (GimpUndo *undo, GimpUndoMode undo_mode, GimpUndoAccumulator *accum) { GimpSamplePointUndo *sample_point_undo = GIMP_SAMPLE_POINT_UNDO (undo); gint x; gint y; GIMP_UNDO_CLASS (parent_class)->pop (undo, undo_mode, accum); x = sample_point_undo->sample_point->x; y = sample_point_undo->sample_point->y; if (x == -1) { gimp_image_add_sample_point (undo->image, sample_point_undo->sample_point, sample_point_undo->x, sample_point_undo->y); } else if (sample_point_undo->x == -1) { gimp_image_remove_sample_point (undo->image, sample_point_undo->sample_point, FALSE); } else { sample_point_undo->sample_point->x = sample_point_undo->x; sample_point_undo->sample_point->y = sample_point_undo->y; gimp_image_sample_point_moved (undo->image, sample_point_undo->sample_point); } sample_point_undo->x = x; sample_point_undo->y = y; }
GimpSamplePoint * gimp_image_add_sample_point_at_pos (GimpImage *image, gint x, gint y, gboolean push_undo) { GimpSamplePoint *sample_point; g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); g_return_val_if_fail (x >= 0 && x < gimp_image_get_width (image), NULL); g_return_val_if_fail (y >= 0 && y < gimp_image_get_height (image), NULL); sample_point = gimp_sample_point_new (image->gimp->next_sample_point_ID++); if (push_undo) gimp_image_undo_push_sample_point (image, _("Add Sample Point"), sample_point); gimp_image_add_sample_point (image, sample_point, x, y); gimp_sample_point_unref (sample_point); return sample_point; }