When a custom brush is selected, it now appears as an indicator at the cursor

Also moved blend_image_with_color() to Global and the custom brush image (resized & blended accordingly with the selected color and interpolation factor) is now updated every time something changes (size, color etc) and not every time you draw. This is not true for the eraser, however, as it must be blended with Color(0, 0, 0, 0)
This commit is contained in:
OverloadedOrama 2019-09-27 20:05:24 +03:00
parent 086b4f1423
commit 7ff823f3a5
6 changed files with 159 additions and 96 deletions

View file

@ -17,13 +17,13 @@ anchor_bottom = 1.0
script = ExtResource( 1 )
[node name="UI" type="HBoxContainer" parent="."]
editor/display_folded = true
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 3
custom_constants/separation = 0
[node name="ToolPanel" type="Panel" parent="UI"]
editor/display_folded = true
margin_right = 320.0
margin_bottom = 600.0
rect_min_size = Vector2( 320, 0 )
@ -36,12 +36,12 @@ size_flags_horizontal = 3
size_flags_vertical = 3
[node name="MenusAndTools" type="VBoxContainer" parent="UI/ToolPanel/Tools"]
margin_right = 320.0
margin_bottom = 270.0
margin_right = 328.0
margin_bottom = 266.0
size_flags_vertical = 3
[node name="MenuItems" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"]
margin_right = 320.0
margin_right = 328.0
margin_bottom = 20.0
[node name="FileMenu" type="MenuButton" parent="UI/ToolPanel/Tools/MenusAndTools/MenuItems"]
@ -78,7 +78,7 @@ text = "Help"
[node name="ToolsContainer" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"]
editor/display_folded = true
margin_top = 24.0
margin_right = 320.0
margin_right = 328.0
margin_bottom = 44.0
[node name="Pencil" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer"]
@ -136,30 +136,29 @@ button_mask = 3
text = "RectSelect"
[node name="HSeparator" type="HSeparator" parent="UI/ToolPanel/Tools"]
margin_top = 274.0
margin_right = 320.0
margin_bottom = 278.0
margin_top = 270.0
margin_right = 328.0
margin_bottom = 274.0
[node name="ToolOptions" type="HBoxContainer" parent="UI/ToolPanel/Tools"]
editor/display_folded = true
margin_top = 282.0
margin_right = 320.0
margin_bottom = 552.0
margin_top = 278.0
margin_right = 328.0
margin_bottom = 544.0
size_flags_vertical = 3
[node name="LeftToolOptions" type="VBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions"]
margin_right = 154.0
margin_bottom = 270.0
margin_right = 158.0
margin_bottom = 266.0
size_flags_horizontal = 3
[node name="LeftLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_right = 154.0
margin_right = 158.0
margin_bottom = 14.0
text = "Left tool options"
[node name="LeftIndicatorCheckbox" type="CheckBox" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_top = 18.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 42.0
mouse_default_cursor_shape = 2
pressed = true
@ -176,9 +175,8 @@ size_flags_horizontal = 0
size_flags_vertical = 0
[node name="BrushSize" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
editor/display_folded = true
margin_top = 82.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 106.0
[node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/BrushSize"]
@ -198,13 +196,13 @@ suffix = "px"
[node name="ColorComesFrom" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_top = 110.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 124.0
text = "Brush's color from"
[node name="InterpolateColor" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"]
margin_top = 128.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 144.0
[node name="BrushColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"]
@ -216,7 +214,7 @@ text = "Brush"
[node name="LeftInterpolateFactor" type="HSlider" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"]
margin_left = 41.0
margin_right = 117.0
margin_right = 121.0
margin_bottom = 16.0
size_flags_horizontal = 3
max_value = 1.0
@ -225,32 +223,32 @@ value = 0.5
ticks_on_borders = true
[node name="SelectedColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"]
margin_left = 121.0
margin_left = 125.0
margin_top = 1.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 15.0
rect_pivot_offset = Vector2( -90, -47 )
text = "Color"
[node name="VSeparator" type="VSeparator" parent="UI/ToolPanel/Tools/ToolOptions"]
margin_left = 158.0
margin_right = 162.0
margin_bottom = 270.0
margin_left = 162.0
margin_right = 166.0
margin_bottom = 266.0
[node name="RightToolOptions" type="VBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions"]
margin_left = 166.0
margin_right = 320.0
margin_bottom = 270.0
margin_left = 170.0
margin_right = 328.0
margin_bottom = 266.0
size_flags_horizontal = 3
[node name="RightLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_right = 154.0
margin_right = 158.0
margin_bottom = 14.0
text = "Right tool options"
[node name="RightIndicatorCheckbox" type="CheckBox" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_top = 18.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 42.0
mouse_default_cursor_shape = 2
text = "Show right indicator"
@ -267,7 +265,7 @@ size_flags_vertical = 0
[node name="BrushSize" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_top = 82.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 106.0
[node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/BrushSize"]
@ -287,13 +285,13 @@ suffix = "px"
[node name="ColorComesFrom" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_top = 110.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 124.0
text = "Brush's color from"
[node name="InterpolateColor" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"]
margin_top = 128.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 144.0
[node name="BrushColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"]
@ -305,7 +303,7 @@ text = "Brush"
[node name="RightInterpolateFactor" type="HSlider" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"]
margin_left = 41.0
margin_right = 117.0
margin_right = 121.0
margin_bottom = 16.0
size_flags_horizontal = 3
max_value = 1.0
@ -314,22 +312,23 @@ value = 0.5
ticks_on_borders = true
[node name="SelectedColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"]
margin_left = 121.0
margin_left = 125.0
margin_top = 1.0
margin_right = 154.0
margin_right = 158.0
margin_bottom = 15.0
rect_pivot_offset = Vector2( -90, -47 )
text = "Color"
[node name="HSeparator2" type="HSeparator" parent="UI/ToolPanel/Tools"]
margin_top = 556.0
margin_right = 320.0
margin_bottom = 560.0
margin_top = 548.0
margin_right = 328.0
margin_bottom = 552.0
[node name="BrushesContainer" type="ScrollContainer" parent="UI/ToolPanel/Tools"]
margin_top = 564.0
margin_right = 320.0
margin_bottom = 600.0
editor/display_folded = true
margin_top = 556.0
margin_right = 328.0
margin_bottom = 592.0
size_flags_horizontal = 3
scroll_vertical_enabled = false
@ -339,6 +338,11 @@ margin_bottom = 36.0
[node name="PixelBrushButton" parent="UI/ToolPanel/Tools/BrushesContainer/BrushHBoxContainer" instance=ExtResource( 5 )]
[node name="HSeparator3" type="HSeparator" parent="UI/ToolPanel/Tools"]
margin_top = 596.0
margin_right = 328.0
margin_bottom = 600.0
[node name="CanvasAndTimeline" type="VBoxContainer" parent="UI"]
margin_left = 320.0
margin_right = 864.0
@ -992,13 +996,17 @@ align = 1
[node name="AnimationTimer" type="Timer" parent="."]
[connection signal="toggled" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftIndicatorCheckbox" to="." method="_on_LeftIndicatorCheckbox_toggled"]
[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="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/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="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="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/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_exited" from="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer" to="." method="_on_ViewportContainer_mouse_exited"]
[connection signal="mouse_entered" from="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer2" to="." method="_on_ViewportContainer_mouse_entered"]