From a06dbdb9fc7ef451644ed4795baa2398b927b2be Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Wed, 25 Dec 2019 01:43:21 +0200 Subject: [PATCH] Added Black & White, put Scale/Crop Image and Flip Horizontal/Vertical from Edit to Image --- Main.tscn | 25 ++++++------ Scripts/Main.gd | 103 +++++++++++++++++++++++++++--------------------- 2 files changed, 70 insertions(+), 58 deletions(-) diff --git a/Main.tscn b/Main.tscn index d9d34b38e..bb74302f8 100644 --- a/Main.tscn +++ b/Main.tscn @@ -1183,6 +1183,7 @@ margin_right = 689.0 margin_bottom = 138.0 [node name="LayerPanel" type="Panel" parent="MenuAndUI/UI"] +editor/display_folded = true margin_left = 928.0 margin_right = 1152.0 margin_bottom = 620.0 @@ -1232,12 +1233,10 @@ margin_right = 224.0 margin_bottom = 199.0 [node name="PaletteVBoxContainer" type="VBoxContainer" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc"] -editor/display_folded = true margin_top = 203.0 margin_right = 224.0 -margin_bottom = 384.0 +margin_bottom = 355.0 size_flags_horizontal = 3 -size_flags_vertical = 3 [node name="CenterContainer" type="CenterContainer" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/PaletteVBoxContainer"] margin_right = 224.0 @@ -1293,9 +1292,9 @@ texture_hover = ExtResource( 43 ) editor/display_folded = true margin_top = 36.0 margin_right = 224.0 -margin_bottom = 181.0 +margin_bottom = 152.0 +rect_min_size = Vector2( 0, 116 ) size_flags_horizontal = 3 -size_flags_vertical = 3 [node name="CenterPalette" type="CenterContainer" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/PaletteVBoxContainer/ScrollPalette"] margin_right = 224.0 @@ -1309,26 +1308,26 @@ columns = 8 script = ExtResource( 44 ) [node name="HSeparator2" type="HSeparator" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc"] -margin_top = 388.0 +margin_top = 359.0 margin_right = 224.0 -margin_bottom = 392.0 +margin_bottom = 363.0 [node name="LayerLabel" type="Label" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc"] -margin_top = 396.0 +margin_top = 367.0 margin_right = 224.0 -margin_bottom = 411.0 +margin_bottom = 382.0 size_flags_horizontal = 3 size_flags_vertical = 0 text = "Layers" align = 1 [node name="HSeparator4" type="HSeparator" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc"] -margin_top = 415.0 +margin_top = 386.0 margin_right = 224.0 -margin_bottom = 419.0 +margin_bottom = 390.0 [node name="LayerVBoxContainer" type="VBoxContainer" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc"] -margin_top = 423.0 +margin_top = 394.0 margin_right = 224.0 margin_bottom = 604.0 size_flags_vertical = 3 @@ -1456,7 +1455,7 @@ align = 1 editor/display_folded = true margin_top = 61.0 margin_right = 224.0 -margin_bottom = 181.0 +margin_bottom = 210.0 size_flags_horizontal = 3 size_flags_vertical = 3 diff --git a/Scripts/Main.gd b/Scripts/Main.gd index c7e3804a2..91c1406cc 100644 --- a/Scripts/Main.gd +++ b/Scripts/Main.gd @@ -60,11 +60,7 @@ func _ready() -> void: var edit_menu_items := { "Undo" : KEY_MASK_CMD + KEY_Z, "Redo" : KEY_MASK_CMD + KEY_Y, - "Scale Image" : 0, - "Crop Image" : 0, "Clear Selection" : 0, - "Flip Horizontal" : KEY_MASK_SHIFT + KEY_H, - "Flip Vertical" : KEY_MASK_SHIFT + KEY_V, "Preferences" : 0 } var view_menu_items := { @@ -74,7 +70,12 @@ func _ready() -> void: "Show Guides" : KEY_MASK_CMD + KEY_F } var image_menu_items := { + "Scale Image" : 0, + "Crop Image" : 0, + "Flip Horizontal" : KEY_MASK_SHIFT + KEY_H, + "Flip Vertical" : KEY_MASK_SHIFT + KEY_V, "Invert Colors" : 0, + "Black & White" : 0, "Outline" : 0 } var help_menu_items := { @@ -257,10 +258,45 @@ func edit_menu_id_pressed(id : int) -> void: redone = true Global.undo_redo.redo() redone = false - 2: # Scale Image + 2: # Clear selection + Global.canvas.handle_undo("Rectangle Select") + Global.selection_rectangle.polygon[0] = Vector2.ZERO + Global.selection_rectangle.polygon[1] = Vector2.ZERO + Global.selection_rectangle.polygon[2] = Vector2.ZERO + Global.selection_rectangle.polygon[3] = Vector2.ZERO + Global.selected_pixels.clear() + Global.canvas.handle_redo("Rectangle Select") + 3: # Preferences + $PreferencesDialog.popup_centered() + Global.can_draw = false + +func view_menu_id_pressed(id : int) -> void: + match id: + 0: # Tile mode + Global.tile_mode = !Global.tile_mode + view_menu.set_item_checked(0, Global.tile_mode) + 1: # Show grid + Global.draw_grid = !Global.draw_grid + view_menu.set_item_checked(1, Global.draw_grid) + 2: # Show rulers + Global.show_rulers = !Global.show_rulers + view_menu.set_item_checked(2, Global.show_rulers) + Global.horizontal_ruler.visible = Global.show_rulers + Global.vertical_ruler.visible = Global.show_rulers + 3: # Show guides + Global.show_guides = !Global.show_guides + view_menu.set_item_checked(3, Global.show_guides) + for canvas in Global.canvases: + for guide in canvas.get_children(): + if guide is Guide: + guide.visible = Global.show_guides + +func image_menu_id_pressed(id : int) -> void: + match id: + 0: # Scale Image $ScaleImage.popup_centered() Global.can_draw = false - 3: # Crop Image + 1: # Crop Image # Use first layer as a starting rectangle var used_rect : Rect2 = Global.canvas.layers[0][0].get_used_rect() # However, if first layer is empty, loop through all layers until we find one that isn't @@ -293,56 +329,21 @@ func edit_menu_id_pressed(id : int) -> void: Global.undo_redo.add_undo_method(Global, "undo", [Global.canvas]) Global.undo_redo.add_do_method(Global, "redo", [Global.canvas]) Global.undo_redo.commit_action() - 4: # Clear selection - Global.canvas.handle_undo("Rectangle Select") - Global.selection_rectangle.polygon[0] = Vector2.ZERO - Global.selection_rectangle.polygon[1] = Vector2.ZERO - Global.selection_rectangle.polygon[2] = Vector2.ZERO - Global.selection_rectangle.polygon[3] = Vector2.ZERO - Global.selected_pixels.clear() - Global.canvas.handle_redo("Rectangle Select") - 5: # Flip Horizontal + 2: # Flip Horizontal var canvas : Canvas = Global.canvas canvas.handle_undo("Draw") canvas.layers[canvas.current_layer_index][0].unlock() canvas.layers[canvas.current_layer_index][0].flip_x() canvas.layers[canvas.current_layer_index][0].lock() canvas.handle_redo("Draw") - 6: # Flip Vertical + 3: # Flip Vertical var canvas : Canvas = Global.canvas canvas.handle_undo("Draw") canvas.layers[canvas.current_layer_index][0].unlock() canvas.layers[canvas.current_layer_index][0].flip_y() canvas.layers[canvas.current_layer_index][0].lock() canvas.handle_redo("Draw") - 7: # Preferences - $PreferencesDialog.popup_centered() - Global.can_draw = false - -func view_menu_id_pressed(id : int) -> void: - match id: - 0: # Tile mode - Global.tile_mode = !Global.tile_mode - view_menu.set_item_checked(0, Global.tile_mode) - 1: # Show grid - Global.draw_grid = !Global.draw_grid - view_menu.set_item_checked(1, Global.draw_grid) - 2: # Show rulers - Global.show_rulers = !Global.show_rulers - view_menu.set_item_checked(2, Global.show_rulers) - Global.horizontal_ruler.visible = Global.show_rulers - Global.vertical_ruler.visible = Global.show_rulers - 3: # Show guides - Global.show_guides = !Global.show_guides - view_menu.set_item_checked(3, Global.show_guides) - for canvas in Global.canvases: - for guide in canvas.get_children(): - if guide is Guide: - guide.visible = Global.show_guides - -func image_menu_id_pressed(id : int) -> void: - match id: - 0: # Invert Colors + 4: # Invert Colors var image : Image = Global.canvas.layers[Global.canvas.current_layer_index][0] Global.canvas.handle_undo("Draw") for xx in image.get_size().x: @@ -352,7 +353,19 @@ func image_menu_id_pressed(id : int) -> void: continue image.set_pixel(xx, yy, px_color) Global.canvas.handle_redo("Draw") - 1: # Outline + 5: # Black & White + var image : Image = Global.canvas.layers[Global.canvas.current_layer_index][0] + Global.canvas.handle_undo("Draw") + for xx in image.get_size().x: + for yy in image.get_size().y: + var px_color = image.get_pixel(xx, yy) + if px_color.a == 0: + continue + var gray = image.get_pixel(xx, yy).gray() + px_color = Color(gray, gray, gray, px_color.a) + image.set_pixel(xx, yy, px_color) + Global.canvas.handle_redo("Draw") + 6: # Outline $OutlineDialog.popup_centered() func help_menu_id_pressed(id : int) -> void: