1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-31 07:29:49 +00:00

Pasting does not directly paste on the canvas, it is now confirmable instead

This lets the user easily cancel the pasting and move just the pasted area around.
This commit is contained in:
Manolis Papadeas 2021-04-19 14:39:58 +03:00
parent baba43d274
commit dd2bec4c19

View file

@ -37,6 +37,7 @@ class Gizmo:
var clipboard := Clipboard.new() var clipboard := Clipboard.new()
var is_moving_content := false var is_moving_content := false
var is_pasting := false
var big_bounding_rectangle := Rect2() setget _big_bounding_rectangle_changed var big_bounding_rectangle := Rect2() setget _big_bounding_rectangle_changed
var temp_rect := Rect2() var temp_rect := Rect2()
var original_big_bounding_rectangle := Rect2() var original_big_bounding_rectangle := Rect2()
@ -296,6 +297,7 @@ func move_content_confirm() -> void:
preview_image = Image.new() preview_image = Image.new()
original_bitmap = BitMap.new() original_bitmap = BitMap.new()
is_moving_content = false is_moving_content = false
is_pasting = false
commit_undo("Move Selection", undo_data) commit_undo("Move Selection", undo_data)
update() update()
@ -311,12 +313,14 @@ func move_content_cancel() -> void:
project.selection_bitmap = original_bitmap project.selection_bitmap = original_bitmap
project.selection_bitmap_changed() project.selection_bitmap_changed()
preview_image = original_preview_image preview_image = original_preview_image
var cel_image : Image = project.frames[project.current_frame].cels[project.current_layer].image if !is_pasting:
cel_image.blit_rect_mask(preview_image, preview_image, Rect2(Vector2.ZERO, Global.current_project.selection_bitmap.get_size()), big_bounding_rectangle.position) var cel_image : Image = project.frames[project.current_frame].cels[project.current_layer].image
Global.canvas.update_texture(project.current_layer) cel_image.blit_rect_mask(preview_image, preview_image, Rect2(Vector2.ZERO, Global.current_project.selection_bitmap.get_size()), big_bounding_rectangle.position)
Global.canvas.update_texture(project.current_layer)
original_preview_image = Image.new() original_preview_image = Image.new()
preview_image = Image.new() preview_image = Image.new()
original_bitmap = BitMap.new() original_bitmap = BitMap.new()
is_pasting = false
update() update()
@ -398,15 +402,25 @@ func copy() -> void:
func paste() -> void: func paste() -> void:
if !clipboard.image: if !clipboard.image:
return return
var _undo_data = _get_undo_data(true) undo_data = _get_undo_data(true)
var project := Global.current_project var project := Global.current_project
var image : Image = project.frames[project.current_frame].cels[project.current_layer].image
original_bitmap = Global.current_project.selection_bitmap.duplicate()
original_big_bounding_rectangle = big_bounding_rectangle
original_offset = Global.current_project.selection_offset
clear_selection() clear_selection()
project.selection_bitmap = clipboard.selection_bitmap.duplicate() project.selection_bitmap = clipboard.selection_bitmap.duplicate()
self.big_bounding_rectangle = clipboard.big_bounding_rectangle self.big_bounding_rectangle = clipboard.big_bounding_rectangle
project.selection_offset = clipboard.selection_offset project.selection_offset = clipboard.selection_offset
image.blend_rect(clipboard.image, Rect2(Vector2.ZERO, project.size), big_bounding_rectangle.position)
commit_undo("Draw", _undo_data) is_moving_content = true
is_pasting = true
original_preview_image = clipboard.image
preview_image.copy_from(original_preview_image)
preview_image_texture.create_from_image(preview_image, 0)
project.selection_bitmap_changed()
func delete() -> void: func delete() -> void: