1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-18 17:19:50 +00:00

v0.3 - Custom brushes, rectangle selection and .pxo!

v0.3 of Pixelorama is out! Check https://functionoverload590613498.wordpress.com/2019/10/22/pixelorama-v0-3-is-out/ for the full changelog.
This commit is contained in:
OverloadedOrama 2019-10-22 14:27:07 +03:00
parent 420ec63aeb
commit e18389d8c4
6 changed files with 141 additions and 137 deletions

229
Main.tscn
View file

@ -16,16 +16,15 @@ anchor_bottom = 1.0
script = ExtResource( 1 ) script = ExtResource( 1 )
[node name="UI" type="HBoxContainer" parent="."] [node name="UI" type="HBoxContainer" parent="."]
editor/display_folded = true
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
custom_constants/separation = 0 custom_constants/separation = 0
[node name="ToolPanel" type="Panel" parent="UI"] [node name="ToolPanel" type="Panel" parent="UI"]
margin_right = 320.0 margin_right = 230.0
margin_bottom = 600.0 margin_bottom = 600.0
rect_min_size = Vector2( 320, 0 ) rect_min_size = Vector2( 230, 0 )
size_flags_vertical = 3 size_flags_vertical = 3
[node name="Tools" type="VBoxContainer" parent="UI/ToolPanel"] [node name="Tools" type="VBoxContainer" parent="UI/ToolPanel"]
@ -35,12 +34,14 @@ size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
[node name="MenusAndTools" type="VBoxContainer" parent="UI/ToolPanel/Tools"] [node name="MenusAndTools" type="VBoxContainer" parent="UI/ToolPanel/Tools"]
margin_right = 320.0 editor/display_folded = true
margin_right = 230.0
margin_bottom = 266.0 margin_bottom = 266.0
size_flags_vertical = 3 size_flags_vertical = 3
[node name="MenuItems" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"] [node name="MenuItems" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"]
margin_right = 320.0 editor/display_folded = true
margin_right = 230.0
margin_bottom = 20.0 margin_bottom = 20.0
[node name="FileMenu" type="MenuButton" parent="UI/ToolPanel/Tools/MenusAndTools/MenuItems"] [node name="FileMenu" type="MenuButton" parent="UI/ToolPanel/Tools/MenusAndTools/MenuItems"]
@ -70,12 +71,12 @@ margin_bottom = 20.0
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
text = "Help" text = "Help"
[node name="ToolsContainer" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"] [node name="PaintToolsContainer" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"]
margin_top = 24.0 margin_top = 24.0
margin_right = 320.0 margin_right = 230.0
margin_bottom = 44.0 margin_bottom = 44.0
[node name="Pencil" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer"] [node name="Pencil" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer"]
margin_right = 51.0 margin_right = 51.0
margin_bottom = 20.0 margin_bottom = 20.0
hint_tooltip = "P for left mouse button hint_tooltip = "P for left mouse button
@ -85,12 +86,12 @@ mouse_default_cursor_shape = 2
button_mask = 3 button_mask = 3
text = "Pencil" text = "Pencil"
[node name="LeftIndicator" type="Sprite" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer/Pencil"] [node name="LeftIndicator" type="Sprite" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer/Pencil"]
texture = ExtResource( 2 ) texture = ExtResource( 2 )
centered = false centered = false
offset = Vector2( 0, -10 ) offset = Vector2( 0, -10 )
[node name="Eraser" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer"] [node name="Eraser" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer"]
margin_left = 55.0 margin_left = 55.0
margin_right = 106.0 margin_right = 106.0
margin_bottom = 20.0 margin_bottom = 20.0
@ -101,12 +102,12 @@ mouse_default_cursor_shape = 2
button_mask = 3 button_mask = 3
text = "Eraser" text = "Eraser"
[node name="RightIndicator" type="Sprite" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer/Eraser"] [node name="RightIndicator" type="Sprite" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer/Eraser"]
texture = ExtResource( 3 ) texture = ExtResource( 3 )
centered = false centered = false
offset = Vector2( 35, -10 ) offset = Vector2( 35, -10 )
[node name="Fill" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer"] [node name="Fill" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer"]
margin_left = 110.0 margin_left = 110.0
margin_right = 166.0 margin_right = 166.0
margin_bottom = 20.0 margin_bottom = 20.0
@ -116,9 +117,13 @@ mouse_default_cursor_shape = 2
button_mask = 3 button_mask = 3
text = "Bucket" text = "Bucket"
[node name="RectSelect" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer"] [node name="SelectionToolsContainer" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"]
margin_left = 170.0 margin_top = 48.0
margin_right = 249.0 margin_right = 230.0
margin_bottom = 68.0
[node name="RectSelect" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/SelectionToolsContainer"]
margin_right = 79.0
margin_bottom = 20.0 margin_bottom = 20.0
hint_tooltip = "R for left mouse button hint_tooltip = "R for left mouse button
Alt + R for right mouse button Alt + R for right mouse button
@ -129,32 +134,34 @@ text = "RectSelect"
[node name="HSeparator" type="HSeparator" parent="UI/ToolPanel/Tools"] [node name="HSeparator" type="HSeparator" parent="UI/ToolPanel/Tools"]
margin_top = 270.0 margin_top = 270.0
margin_right = 320.0 margin_right = 230.0
margin_bottom = 274.0 margin_bottom = 274.0
[node name="ToolOptions" type="HBoxContainer" parent="UI/ToolPanel/Tools"] [node name="ToolOptions" type="HBoxContainer" parent="UI/ToolPanel/Tools"]
margin_top = 278.0 margin_top = 278.0
margin_right = 320.0 margin_right = 230.0
margin_bottom = 544.0 margin_bottom = 544.0
size_flags_vertical = 3 size_flags_vertical = 3
custom_constants/separation = 0
[node name="LeftToolOptions" type="VBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions"] [node name="LeftToolOptions" type="VBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions"]
margin_right = 154.0 margin_right = 113.0
margin_bottom = 266.0 margin_bottom = 266.0
size_flags_horizontal = 3 size_flags_horizontal = 3
[node name="LeftLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] [node name="LeftLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_right = 154.0 margin_right = 113.0
margin_bottom = 14.0 margin_bottom = 14.0
text = "Left tool options" text = "Left tool options"
[node name="LeftIndicatorCheckbox" type="CheckBox" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] [node name="LeftIndicatorCheckbox" type="CheckBox" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_top = 18.0 margin_top = 18.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 42.0 margin_bottom = 42.0
hint_tooltip = "Show left mouse indicator when drawing"
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
pressed = true pressed = true
text = "Show left indicator" text = "Left cursor"
[node name="LeftColorPickerButton" type="ColorPickerButton" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] [node name="LeftColorPickerButton" type="ColorPickerButton" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_top = 46.0 margin_top = 46.0
@ -166,48 +173,44 @@ mouse_default_cursor_shape = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
size_flags_vertical = 0 size_flags_vertical = 0
[node name="BrushSize" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] [node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_top = 82.0 margin_top = 82.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 106.0 margin_bottom = 96.0
[node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/BrushSize"]
margin_top = 5.0
margin_right = 75.0
margin_bottom = 19.0
text = "Brush size: " text = "Brush size: "
[node name="LeftBrushSizeEdit" type="SpinBox" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/BrushSize"] [node name="LeftBrushSizeEdit" type="SpinBox" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_left = 79.0 margin_top = 100.0
margin_right = 153.0 margin_right = 113.0
margin_bottom = 24.0 margin_bottom = 124.0
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
min_value = 1.0 min_value = 1.0
value = 1.0 value = 1.0
suffix = "px" suffix = "px"
[node name="ColorComesFrom" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] [node name="ColorComesFrom" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_top = 110.0 margin_top = 128.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 124.0 margin_bottom = 142.0
text = "Brush's color from" text = "Brush color from"
[node name="InterpolateColor" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] [node name="InterpolateColor" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_top = 128.0 margin_top = 146.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 144.0 margin_bottom = 162.0
[node name="BrushColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"] [node name="BrushColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"]
margin_top = 1.0 margin_top = 1.0
margin_right = 37.0 margin_right = 9.0
margin_bottom = 15.0 margin_bottom = 15.0
rect_pivot_offset = Vector2( -90, -47 ) rect_pivot_offset = Vector2( -90, -47 )
text = "Brush" text = "B"
[node name="LeftInterpolateFactor" type="HSlider" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"] [node name="LeftInterpolateFactor" type="HSlider" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"]
margin_left = 41.0 margin_left = 13.0
margin_right = 117.0 margin_right = 101.0
margin_bottom = 16.0 margin_bottom = 16.0
hint_tooltip = "Choose if the brush's color should come from the brush itself (left), or the currently selected color (right)"
size_flags_horizontal = 3 size_flags_horizontal = 3
max_value = 1.0 max_value = 1.0
step = 0.01 step = 0.01
@ -215,36 +218,36 @@ value = 0.5
ticks_on_borders = true ticks_on_borders = true
[node name="SelectedColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"] [node name="SelectedColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"]
margin_left = 121.0 margin_left = 105.0
margin_top = 1.0 margin_top = 1.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 15.0 margin_bottom = 15.0
rect_pivot_offset = Vector2( -90, -47 ) rect_pivot_offset = Vector2( -90, -47 )
text = "Color" text = "C"
[node name="VSeparator" type="VSeparator" parent="UI/ToolPanel/Tools/ToolOptions"] [node name="VSeparator" type="VSeparator" parent="UI/ToolPanel/Tools/ToolOptions"]
margin_left = 158.0 margin_left = 113.0
margin_right = 162.0 margin_right = 117.0
margin_bottom = 266.0 margin_bottom = 266.0
[node name="RightToolOptions" type="VBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions"] [node name="RightToolOptions" type="VBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions"]
editor/display_folded = true margin_left = 117.0
margin_left = 166.0 margin_right = 230.0
margin_right = 320.0
margin_bottom = 266.0 margin_bottom = 266.0
size_flags_horizontal = 3 size_flags_horizontal = 3
[node name="RightLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] [node name="RightLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_right = 154.0 margin_right = 113.0
margin_bottom = 14.0 margin_bottom = 14.0
text = "Right tool options" text = "Right tool options"
[node name="RightIndicatorCheckbox" type="CheckBox" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] [node name="RightIndicatorCheckbox" type="CheckBox" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_top = 18.0 margin_top = 18.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 42.0 margin_bottom = 42.0
hint_tooltip = "Show right mouse indicator when drawing"
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
text = "Show right indicator" text = "Right cursor"
[node name="RightColorPickerButton" type="ColorPickerButton" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] [node name="RightColorPickerButton" type="ColorPickerButton" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_top = 46.0 margin_top = 46.0
@ -256,48 +259,44 @@ mouse_default_cursor_shape = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
size_flags_vertical = 0 size_flags_vertical = 0
[node name="BrushSize" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] [node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_top = 82.0 margin_top = 82.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 106.0 margin_bottom = 96.0
[node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/BrushSize"]
margin_top = 5.0
margin_right = 75.0
margin_bottom = 19.0
text = "Brush size: " text = "Brush size: "
[node name="RightBrushSizeEdit" type="SpinBox" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/BrushSize"] [node name="RightBrushSizeEdit" type="SpinBox" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_left = 79.0 margin_top = 100.0
margin_right = 153.0 margin_right = 113.0
margin_bottom = 24.0 margin_bottom = 124.0
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
min_value = 1.0 min_value = 1.0
value = 1.0 value = 1.0
suffix = "px" suffix = "px"
[node name="ColorComesFrom" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] [node name="ColorComesFrom" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_top = 110.0 margin_top = 128.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 124.0 margin_bottom = 142.0
text = "Brush's color from" text = "Brush color from"
[node name="InterpolateColor" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] [node name="InterpolateColor" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_top = 128.0 margin_top = 146.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 144.0 margin_bottom = 162.0
[node name="BrushColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"] [node name="BrushColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"]
margin_top = 1.0 margin_top = 1.0
margin_right = 37.0 margin_right = 9.0
margin_bottom = 15.0 margin_bottom = 15.0
rect_pivot_offset = Vector2( -90, -47 ) rect_pivot_offset = Vector2( -90, -47 )
text = "Brush" text = "B"
[node name="RightInterpolateFactor" type="HSlider" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"] [node name="RightInterpolateFactor" type="HSlider" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"]
margin_left = 41.0 margin_left = 13.0
margin_right = 117.0 margin_right = 101.0
margin_bottom = 16.0 margin_bottom = 16.0
hint_tooltip = "Choose if the brush's color should come from the brush itself (left), or the currently selected color (right)"
size_flags_horizontal = 3 size_flags_horizontal = 3
max_value = 1.0 max_value = 1.0
step = 0.01 step = 0.01
@ -305,21 +304,21 @@ value = 0.5
ticks_on_borders = true ticks_on_borders = true
[node name="SelectedColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"] [node name="SelectedColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"]
margin_left = 121.0 margin_left = 105.0
margin_top = 1.0 margin_top = 1.0
margin_right = 154.0 margin_right = 113.0
margin_bottom = 15.0 margin_bottom = 15.0
rect_pivot_offset = Vector2( -90, -47 ) rect_pivot_offset = Vector2( -90, -47 )
text = "Color" text = "C"
[node name="HSeparator2" type="HSeparator" parent="UI/ToolPanel/Tools"] [node name="HSeparator2" type="HSeparator" parent="UI/ToolPanel/Tools"]
margin_top = 548.0 margin_top = 548.0
margin_right = 320.0 margin_right = 230.0
margin_bottom = 552.0 margin_bottom = 552.0
[node name="BrushesContainer" type="ScrollContainer" parent="UI/ToolPanel/Tools"] [node name="BrushesContainer" type="ScrollContainer" parent="UI/ToolPanel/Tools"]
margin_top = 556.0 margin_top = 556.0
margin_right = 320.0 margin_right = 230.0
margin_bottom = 592.0 margin_bottom = 592.0
size_flags_horizontal = 3 size_flags_horizontal = 3
scroll_vertical_enabled = false scroll_vertical_enabled = false
@ -329,6 +328,7 @@ margin_right = 36.0
margin_bottom = 36.0 margin_bottom = 36.0
[node name="PixelBrushButton" parent="UI/ToolPanel/Tools/BrushesContainer/BrushHBoxContainer" instance=ExtResource( 4 )] [node name="PixelBrushButton" parent="UI/ToolPanel/Tools/BrushesContainer/BrushHBoxContainer" instance=ExtResource( 4 )]
hint_tooltip = "Pixel brush"
[node name="LeftBrushIndicator" type="Sprite" parent="UI/ToolPanel/Tools/BrushesContainer/BrushHBoxContainer/PixelBrushButton"] [node name="LeftBrushIndicator" type="Sprite" parent="UI/ToolPanel/Tools/BrushesContainer/BrushHBoxContainer/PixelBrushButton"]
scale = Vector2( 0.8, 0.8 ) scale = Vector2( 0.8, 0.8 )
@ -343,23 +343,24 @@ offset = Vector2( 28, 0 )
[node name="HSeparator3" type="HSeparator" parent="UI/ToolPanel/Tools"] [node name="HSeparator3" type="HSeparator" parent="UI/ToolPanel/Tools"]
margin_top = 596.0 margin_top = 596.0
margin_right = 320.0 margin_right = 230.0
margin_bottom = 600.0 margin_bottom = 600.0
[node name="CanvasAndTimeline" type="VBoxContainer" parent="UI"] [node name="CanvasAndTimeline" type="VBoxContainer" parent="UI"]
margin_left = 320.0 margin_left = 230.0
margin_right = 864.0 margin_right = 864.0
margin_bottom = 600.0 margin_bottom = 600.0
size_flags_horizontal = 3 size_flags_horizontal = 3
[node name="HBoxContainer" type="HBoxContainer" parent="UI/CanvasAndTimeline"] [node name="HBoxContainer" type="HBoxContainer" parent="UI/CanvasAndTimeline"]
margin_right = 544.0 editor/display_folded = true
margin_right = 634.0
margin_bottom = 464.0 margin_bottom = 464.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
[node name="ViewportContainer" type="ViewportContainer" parent="UI/CanvasAndTimeline/HBoxContainer"] [node name="ViewportContainer" type="ViewportContainer" parent="UI/CanvasAndTimeline/HBoxContainer"]
margin_right = 544.0 margin_right = 634.0
margin_bottom = 464.0 margin_bottom = 464.0
mouse_default_cursor_shape = 3 mouse_default_cursor_shape = 3
size_flags_horizontal = 3 size_flags_horizontal = 3
@ -367,7 +368,7 @@ size_flags_vertical = 3
stretch = true stretch = true
[node name="Viewport" type="Viewport" parent="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer"] [node name="Viewport" type="Viewport" parent="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer"]
size = Vector2( 544, 464 ) size = Vector2( 634, 464 )
handle_input_locally = false handle_input_locally = false
render_target_update_mode = 3 render_target_update_mode = 3
@ -386,14 +387,15 @@ script = ExtResource( 7 )
[node name="ViewportSeparator" type="VSeparator" parent="UI/CanvasAndTimeline/HBoxContainer"] [node name="ViewportSeparator" type="VSeparator" parent="UI/CanvasAndTimeline/HBoxContainer"]
visible = false visible = false
margin_left = 532.0 margin_left = 315.0
margin_right = 536.0 margin_right = 319.0
margin_bottom = 464.0 margin_bottom = 464.0
[node name="ViewportContainer2" type="ViewportContainer" parent="UI/CanvasAndTimeline/HBoxContainer"] [node name="ViewportContainer2" type="ViewportContainer" parent="UI/CanvasAndTimeline/HBoxContainer"]
editor/display_folded = true
visible = false visible = false
margin_left = 270.0 margin_left = 319.0
margin_right = 536.0 margin_right = 634.0
margin_bottom = 464.0 margin_bottom = 464.0
mouse_default_cursor_shape = 3 mouse_default_cursor_shape = 3
size_flags_horizontal = 3 size_flags_horizontal = 3
@ -401,7 +403,7 @@ size_flags_vertical = 3
stretch = true stretch = true
[node name="Viewport" type="Viewport" parent="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer2"] [node name="Viewport" type="Viewport" parent="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer2"]
size = Vector2( 266, 464 ) size = Vector2( 315, 464 )
handle_input_locally = false handle_input_locally = false
render_target_update_mode = 0 render_target_update_mode = 0
script = ExtResource( 8 ) script = ExtResource( 8 )
@ -412,9 +414,8 @@ zoom = Vector2( 0.15, 0.15 )
script = ExtResource( 6 ) script = ExtResource( 6 )
[node name="AnimationTimeline" type="Panel" parent="UI/CanvasAndTimeline"] [node name="AnimationTimeline" type="Panel" parent="UI/CanvasAndTimeline"]
editor/display_folded = true
margin_top = 468.0 margin_top = 468.0
margin_right = 544.0 margin_right = 634.0
margin_bottom = 600.0 margin_bottom = 600.0
rect_min_size = Vector2( 0, 132 ) rect_min_size = Vector2( 0, 132 )
size_flags_horizontal = 3 size_flags_horizontal = 3
@ -425,12 +426,12 @@ anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
[node name="ButtonContainer" type="CenterContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] [node name="ButtonContainer" type="CenterContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"]
margin_right = 544.0 margin_right = 634.0
margin_bottom = 24.0 margin_bottom = 24.0
[node name="AnimationButtons" type="HBoxContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/ButtonContainer"] [node name="AnimationButtons" type="HBoxContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/ButtonContainer"]
margin_left = 94.0 margin_left = 139.0
margin_right = 450.0 margin_right = 495.0
margin_bottom = 24.0 margin_bottom = 24.0
[node name="LoopLabel" type="Label" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/ButtonContainer/AnimationButtons"] [node name="LoopLabel" type="Label" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/ButtonContainer/AnimationButtons"]
@ -443,7 +444,9 @@ text = "Loop:"
margin_left = 39.0 margin_left = 39.0
margin_right = 69.0 margin_right = 69.0
margin_bottom = 24.0 margin_bottom = 24.0
hint_tooltip = "Should the animation loop (play again after it reached the end)?" hint_tooltip = "No: Animation doesn't loop
Cycle: Animation plays again when it reaches the last frame
Ping-pong: Animation plays again but backwards when it reaches the last frame"
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
text = "No" text = "No"
@ -479,18 +482,18 @@ suffix = "FPS"
[node name="HSeparator" type="HSeparator" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] [node name="HSeparator" type="HSeparator" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"]
margin_top = 28.0 margin_top = 28.0
margin_right = 544.0 margin_right = 634.0
margin_bottom = 32.0 margin_bottom = 32.0
[node name="CenterContainer" type="CenterContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] [node name="CenterContainer" type="CenterContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"]
editor/display_folded = true editor/display_folded = true
margin_top = 36.0 margin_top = 36.0
margin_right = 544.0 margin_right = 634.0
margin_bottom = 56.0 margin_bottom = 56.0
[node name="FrameButtons" type="HBoxContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/CenterContainer"] [node name="FrameButtons" type="HBoxContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/CenterContainer"]
margin_left = 213.0 margin_left = 258.0
margin_right = 330.0 margin_right = 375.0
margin_bottom = 20.0 margin_bottom = 20.0
[node name="AddFrame" type="Button" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/CenterContainer/FrameButtons"] [node name="AddFrame" type="Button" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/CenterContainer/FrameButtons"]
@ -539,12 +542,12 @@ text = "Cl"
[node name="HSeparator2" type="HSeparator" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] [node name="HSeparator2" type="HSeparator" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"]
margin_top = 60.0 margin_top = 60.0
margin_right = 544.0 margin_right = 634.0
margin_bottom = 64.0 margin_bottom = 64.0
[node name="ScrollContainer" type="ScrollContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] [node name="ScrollContainer" type="ScrollContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"]
margin_top = 68.0 margin_top = 68.0
margin_right = 544.0 margin_right = 634.0
margin_bottom = 132.0 margin_bottom = 132.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
@ -553,6 +556,7 @@ scroll_vertical_enabled = false
[node name="FrameContainer" type="HBoxContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/ScrollContainer"] [node name="FrameContainer" type="HBoxContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/ScrollContainer"]
[node name="LayerPanel" type="Panel" parent="UI"] [node name="LayerPanel" type="Panel" parent="UI"]
editor/display_folded = true
margin_left = 864.0 margin_left = 864.0
margin_right = 1024.0 margin_right = 1024.0
margin_bottom = 600.0 margin_bottom = 600.0
@ -941,7 +945,7 @@ margin_right = 276.0
margin_bottom = 150.0 margin_bottom = 150.0
[node name="Pixelorama" type="Label" parent="AboutDialog/AboutUI"] [node name="Pixelorama" type="Label" parent="AboutDialog/AboutUI"]
margin_right = 339.0 margin_right = 268.0
margin_bottom = 31.0 margin_bottom = 31.0
text = "Pixelorama v0.3 text = "Pixelorama v0.3
" "
@ -949,7 +953,7 @@ align = 1
[node name="MadeBy" type="Label" parent="AboutDialog/AboutUI"] [node name="MadeBy" type="Label" parent="AboutDialog/AboutUI"]
margin_top = 35.0 margin_top = 35.0
margin_right = 339.0 margin_right = 268.0
margin_bottom = 83.0 margin_bottom = 83.0
text = "Your Free and Open Source Sprite Editor text = "Your Free and Open Source Sprite Editor
Developed by Orama Interactive Developed by Orama Interactive
@ -958,12 +962,11 @@ align = 1
[node name="Links" type="CenterContainer" parent="AboutDialog/AboutUI"] [node name="Links" type="CenterContainer" parent="AboutDialog/AboutUI"]
margin_top = 87.0 margin_top = 87.0
margin_right = 339.0 margin_right = 268.0
margin_bottom = 107.0 margin_bottom = 107.0
[node name="LinkButtons" type="HBoxContainer" parent="AboutDialog/AboutUI/Links"] [node name="LinkButtons" type="HBoxContainer" parent="AboutDialog/AboutUI/Links"]
margin_left = 35.0 margin_right = 268.0
margin_right = 303.0
margin_bottom = 20.0 margin_bottom = 20.0
[node name="Website" type="Button" parent="AboutDialog/AboutUI/Links/LinkButtons"] [node name="Website" type="Button" parent="AboutDialog/AboutUI/Links/LinkButtons"]
@ -991,7 +994,7 @@ text = "Blog"
[node name="Copyright" type="Label" parent="AboutDialog/AboutUI"] [node name="Copyright" type="Label" parent="AboutDialog/AboutUI"]
margin_top = 111.0 margin_top = 111.0
margin_right = 339.0 margin_right = 268.0
margin_bottom = 142.0 margin_bottom = 142.0
text = " text = "
Copyright 2019 - Orama Interactive" Copyright 2019 - Orama Interactive"
@ -1002,13 +1005,13 @@ align = 1
[connection signal="color_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorPickerButton" to="." method="_on_LeftColorPickerButton_color_changed"] [connection signal="color_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorPickerButton" to="." method="_on_LeftColorPickerButton_color_changed"]
[connection signal="popup_closed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorPickerButton" to="." method="_can_draw_true"] [connection signal="popup_closed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorPickerButton" to="." method="_can_draw_true"]
[connection signal="pressed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorPickerButton" to="." method="_can_draw_false"] [connection signal="pressed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorPickerButton" to="." method="_can_draw_false"]
[connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/BrushSize/LeftBrushSizeEdit" to="." method="_on_LeftBrushSizeEdit_value_changed"] [connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftBrushSizeEdit" to="." method="_on_LeftBrushSizeEdit_value_changed"]
[connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor/LeftInterpolateFactor" to="." method="_on_LeftInterpolateFactor_value_changed"] [connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor/LeftInterpolateFactor" to="." method="_on_LeftInterpolateFactor_value_changed"]
[connection signal="toggled" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightIndicatorCheckbox" to="." method="_on_RightIndicatorCheckbox_toggled"] [connection signal="toggled" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightIndicatorCheckbox" to="." method="_on_RightIndicatorCheckbox_toggled"]
[connection signal="color_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorPickerButton" to="." method="_on_RightColorPickerButton_color_changed"] [connection signal="color_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorPickerButton" to="." method="_on_RightColorPickerButton_color_changed"]
[connection signal="popup_closed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorPickerButton" to="." method="_can_draw_true"] [connection signal="popup_closed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorPickerButton" to="." method="_can_draw_true"]
[connection signal="pressed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorPickerButton" to="." method="_can_draw_false"] [connection signal="pressed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorPickerButton" to="." method="_can_draw_false"]
[connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/BrushSize/RightBrushSizeEdit" to="." method="_on_RightBrushSizeEdit_value_changed"] [connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightBrushSizeEdit" to="." method="_on_RightBrushSizeEdit_value_changed"]
[connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor/RightInterpolateFactor" to="." method="_on_RightInterpolateFactor_value_changed"] [connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor/RightInterpolateFactor" to="." method="_on_RightInterpolateFactor_value_changed"]
[connection signal="mouse_entered" from="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer" to="." method="_on_ViewportContainer_mouse_entered"] [connection signal="mouse_entered" from="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer" to="." method="_on_ViewportContainer_mouse_entered"]
[connection signal="mouse_exited" from="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer" to="." method="_on_ViewportContainer_mouse_exited"] [connection signal="mouse_exited" from="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer" to="." method="_on_ViewportContainer_mouse_exited"]

View file

@ -1,22 +1,25 @@
# Pixelorama - your free and open-source sprite editor! # Pixelorama - your free and open-source sprite editor!
A free & open-source 2D sprite editor, made with Godot Engine, using GDScript! A free & open-source 2D sprite editor, made with Godot Engine, using GDScript!
[![Pixelorama's horrible UI](https://functionoverload590613498.files.wordpress.com/2019/09/screenshot_260-3.png)](https://www.youtube.com/watch?v=f6u910HCT_E) [![Pixelorama's horrible UI](https://functionoverload590613498.files.wordpress.com/2019/10/screenshot_265.png)](https://www.youtube.com/watch?v=L8o8QKB8lPs)
Current features as of version v0.2: Current features as of version v0.3:
- Choosing between 3 tools pencil, eraser and fill bucket and mapping them to both of your left and right mouse buttons. Thats, pretty wild, huh? - Choosing between 4 tools pencil, eraser, fill bucket and rectangle select and mapping them to both of your left and right mouse buttons. Thats, pretty wild, huh?
- Different colors and brush sizes for each of the mouse buttons. - Different colors and brush sizes for each of the mouse buttons.
- Custom brush support.
- Creating a new canvas with a size of your choosing. - Creating a new canvas with a size of your choosing.
- Are you an animator? Then you've come to the right place! Pixelorama has its own Animation Timeline just for you! - Are you an animator? Then you've come to the right place! Pixelorama has its own Animation Timeline just for you!
- Importing PNG and JPEG images, and edit them inside Pixelorama. If you import multiple files, they will be added as individual animation frames. - Importing PNG and JPEG images, and edit them inside Pixelorama. If you import multiple files, they will be added as individual animation frames.
- Export your gorgeous art as PNG files. - Export your gorgeous art as PNG files.
- Save snd open your projects as Pixelorama's custom file format, .pxo
- Tile Mode for pattern creation!
- Split screen mode to see your masterpiece twice!
- Create straight lines for pencil and eraser by holding down Shift while you draw. - Create straight lines for pencil and eraser by holding down Shift while you draw.
- The middle mouse wheel isnt forgotten, you can use it to pan around the canvas and by scrolling up and down, you can zoom in and out! - The middle mouse wheel isnt forgotten, you can use it to pan around the canvas and by scrolling up and down, you can zoom in and out!
- Keyboard shortcuts! Im pretty sure this is a lifesaver for most of you. - Keyboard shortcuts! Im pretty sure this is a lifesaver for most of you.
- Just like onions, Pixelorama has a multiple layer system! You can add, remove, move up and down, clone and merge as many layers as you like! - Just like onions, Pixelorama has a multiple layer system! You can add, remove, move up and down, clone and merge as many layers as you like!
- Scale your images! - Scale and crop your images!
- Its freeeeeee! And open source!
Make sure to read my blog post on Function(Overload) for more information! https://functionoverload590613498.wordpress.com/2019/08/18/i-made-my-own-sprite-editor-in-godot/ Make sure to read my blog post on Function(Overload) for more information! https://functionoverload590613498.wordpress.com/2019/08/18/i-made-my-own-sprite-editor-in-godot/

View file

@ -366,8 +366,8 @@ func draw_pixel(pos : Vector2, color : Color, brush_size : int, brush_type : int
var dst := rectangle_center(pos, custom_brush_size) var dst := rectangle_center(pos, custom_brush_size)
var src_rect := Rect2(Vector2.ZERO, custom_brush_size + Vector2.ONE) var src_rect := Rect2(Vector2.ZERO, custom_brush_size + Vector2.ONE)
#Rectangle with the same size as the brush, but at cursor's position #Rectangle with the same size as the brush, but at cursor's position
var pos_rect_position := rectangle_center(pos, custom_brush_size) #var pos_rect_position := rectangle_center(pos, custom_brush_size)
var pos_rect := Rect2(pos_rect_position, custom_brush_size + Vector2.ONE) var pos_rect := Rect2(dst, custom_brush_size + Vector2.ONE)
#The selection rectangle #The selection rectangle
#If there's no rectangle, the whole canvas is considered a selection #If there's no rectangle, the whole canvas is considered a selection
@ -380,19 +380,16 @@ func draw_pixel(pos : Vector2, color : Color, brush_size : int, brush_type : int
if pos_rect_clipped.size == Vector2.ZERO: if pos_rect_clipped.size == Vector2.ZERO:
return return
#According to the relative position of pos_rect to selection_rect, ... #Re-position src_rect and dst based on the clipped position
#... manipulate src_rect so only the pixels INSIDE the selection get drawn var pos_difference := (pos_rect.position - pos_rect_clipped.position).abs()
if pos_rect.position.x < selection_rect.position.x: #Obviously, if pos_rect and pos_rect_clipped are the same, pos_difference is Vector2.ZERO
src_rect.position.x += pos_rect.size.x - pos_rect_clipped.size.x src_rect.position = pos_difference
dst.x += pos_rect.size.x - pos_rect_clipped.size.x dst += pos_difference
if pos_rect.end.x > selection_rect.end.x: src_rect.end -= pos_rect.end - pos_rect_clipped.end
src_rect.size.x = pos_rect_clipped.size.x #If the selection rectangle is smaller than the brush, ...
#... make sure pixels aren't being drawn outside the selection by adjusting src_rect's size
if pos_rect.position.y < selection_rect.position.y: src_rect.size.x = min(src_rect.size.x, selection_rect.size.x)
src_rect.position.y += pos_rect.size.y - pos_rect_clipped.size.y src_rect.size.y = min(src_rect.size.y, selection_rect.size.y)
dst.y += pos_rect.size.y - pos_rect_clipped.size.y
if pos_rect.end.y > selection_rect.end.y:
src_rect.size.y = pos_rect_clipped.size.y
if color.a > 0: #If it's the pencil if color.a > 0: #If it's the pencil
layers[current_layer_index][0].blend_rect(custom_brush_image, src_rect, dst) layers[current_layer_index][0].blend_rect(custom_brush_image, src_rect, dst)

View file

@ -18,6 +18,7 @@ var animation_forward := true
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
OS.set_window_title("Pixelorama %s" % ProjectSettings.get_setting("application/config/Version"))
# Set a minimum window size to prevent UI elements from collapsing on each other. # Set a minimum window size to prevent UI elements from collapsing on each other.
# This property is only available in 3.2alpha or later, so use `set()` to fail gracefully if it doesn't exist. # This property is only available in 3.2alpha or later, so use `set()` to fail gracefully if it doesn't exist.
OS.set("min_window_size", Vector2(1024, 600)) OS.set("min_window_size", Vector2(1024, 600))

View file

@ -7,7 +7,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="C:/Users/Overloaded/Dropbox/Orama Interactive/Projects/[Programa] Software/Pixelorama/Full of bugs/Pixelorama.exe" export_path="C:/Users/Overloaded/Dropbox/Orama Interactive/Projects/[Programa Labs]/Pixelorama/Stable/Pixelorama.exe"
patch_list=PoolStringArray( ) patch_list=PoolStringArray( )
script_export_mode=1 script_export_mode=1
script_encryption_key="" script_encryption_key=""
@ -23,8 +23,8 @@ binary_format/64_bits=true
custom_template/release="" custom_template/release=""
custom_template/debug="" custom_template/debug=""
application/icon="" application/icon=""
application/file_version="0.2" application/file_version="0.3"
application/product_version="0.2" application/product_version="0.3"
application/company_name="Orama Interactive" application/company_name="Orama Interactive"
application/product_name="Pixelorama" application/product_name="Pixelorama"
application/file_description="" application/file_description=""

View file

@ -29,7 +29,7 @@ _global_script_class_icons={
config/name="Pixelorama" config/name="Pixelorama"
run/main_scene="res://Main.tscn" run/main_scene="res://Main.tscn"
config/icon="res://icon.png" config/icon="res://icon.png"
config/Version="v0.2" config/Version="v0.3"
[autoload] [autoload]