1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-03-13 06:45:17 +00:00

Added color Averaging (#822)

This commit is contained in:
Variable 2023-03-15 18:05:18 +05:00 committed by GitHub
parent ad61ddc2c0
commit e008c39286
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 169 additions and 19 deletions

View file

@ -2,12 +2,17 @@ extends Container
onready var left_picker := $ColorPickersHorizontal/LeftColorPickerButton
onready var right_picker := $ColorPickersHorizontal/RightColorPickerButton
onready var average_color = $"%AverageColor"
onready var transparent_checker = $"%TransparentChecker"
func _ready() -> void:
Tools.connect("color_changed", self, "update_color")
left_picker.get_picker().presets_visible = false
right_picker.get_picker().presets_visible = false
_average(left_picker.color, right_picker.color)
transparent_checker.rect_position = average_color.rect_position
transparent_checker.rect_size = average_color.rect_size
func _on_ColorSwitch_pressed() -> void:
@ -17,6 +22,15 @@ func _on_ColorSwitch_pressed() -> void:
func _on_ColorPickerButton_color_changed(color: Color, right: bool):
var button := BUTTON_RIGHT if right else BUTTON_LEFT
Tools.assign_color(color, button)
_average(left_picker.color, right_picker.color)
func _on_ToLeft_pressed():
Tools.assign_color(average_color.color, BUTTON_LEFT)
func _on_ToRight_pressed():
Tools.assign_color(average_color.color, BUTTON_RIGHT)
func _on_ColorPickerButton_pressed() -> void:
@ -38,3 +52,27 @@ func update_color(color: Color, button: int) -> void:
left_picker.color = color
else:
right_picker.color = color
_average(left_picker.color, right_picker.color)
func _average(color_1: Color, color_2: Color) -> void:
var average_r = (color_1.r + color_2.r) / 2.0
var average_g = (color_1.g + color_2.g) / 2.0
var average_b = (color_1.b + color_2.b) / 2.0
var average_a = (color_1.a + color_2.a) / 2.0
var average := Color(average_r, average_g, average_b, average_a)
var copy_button = average_color.get_parent()
copy_button.hint_tooltip = str("Average Color:\n#", average.to_html(), "\n(Press to Copy)")
average_color.color = average
func _on_CopyAverage_button_down():
transparent_checker.visible = false
average_color.visible = false
OS.clipboard = average_color.color.to_html()
func _on_CopyAverage_button_up():
transparent_checker.visible = true
average_color.visible = true

View file

@ -1,8 +1,11 @@
[gd_scene load_steps=6 format=2]
[gd_scene load_steps=10 format=2]
[ext_resource path="res://assets/graphics/misc/color_defaults.png" type="Texture" id=1]
[ext_resource path="res://assets/graphics/misc/color_switch.png" type="Texture" id=2]
[ext_resource path="res://src/UI/ColorPickers/ColorPickers.gd" type="Script" id=3]
[ext_resource path="res://src/UI/Nodes/TransparentChecker.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/Shaders/TransparentChecker.shader" type="Shader" id=5]
[ext_resource path="res://assets/graphics/timeline/move_arrow.png" type="Texture" id=6]
[sub_resource type="InputEventAction" id=20]
action = "switch_colors"
@ -10,6 +13,18 @@ action = "switch_colors"
[sub_resource type="ShortCut" id=19]
shortcut = SubResource( 20 )
[sub_resource type="ShaderMaterial" id=1]
shader = ExtResource( 5 )
shader_param/size = 10.0
shader_param/alpha = 1.0
shader_param/color1 = Color( 0.7, 0.7, 0.7, 1 )
shader_param/color2 = Color( 1, 1, 1, 1 )
shader_param/offset = Vector2( 0, 0 )
shader_param/scale = Vector2( 0, 0 )
shader_param/rect_size = Vector2( 0, 0 )
shader_param/follow_movement = false
shader_param/follow_scale = false
[node name="ColorPickers" type="PanelContainer"]
margin_left = 958.0
margin_top = 170.0
@ -21,15 +36,15 @@ script = ExtResource( 3 )
margin_left = 7.0
margin_top = 7.0
margin_right = 311.0
margin_bottom = 52.062
margin_bottom = 55.0
custom_constants/separation = 13
alignment = 1
[node name="LeftColorPickerButton" type="ColorPickerButton" parent="ColorPickersHorizontal"]
margin_left = 62.0
margin_top = 6.0
margin_right = 126.0
margin_bottom = 38.0
margin_left = 19.0
margin_top = 8.0
margin_right = 83.0
margin_bottom = 40.0
rect_min_size = Vector2( 64, 32 )
hint_tooltip = "Choose a color for the left tool"
mouse_default_cursor_shape = 2
@ -37,35 +52,128 @@ size_flags_horizontal = 0
size_flags_vertical = 4
[node name="ColorButtonsVertical" type="VBoxContainer" parent="ColorPickersHorizontal"]
margin_left = 139.0
margin_right = 164.0
margin_bottom = 45.0
margin_left = 96.0
margin_right = 207.0
margin_bottom = 48.0
alignment = 1
[node name="ColorSwitch" type="TextureButton" parent="ColorPickersHorizontal/ColorButtonsVertical" groups=["UIButtons"]]
margin_top = 13.0
margin_right = 25.0
margin_bottom = 20.0
margin_left = 43.0
margin_right = 68.0
margin_bottom = 7.0
hint_tooltip = "Switch left and right colors
(%s)"
mouse_default_cursor_shape = 2
size_flags_horizontal = 4
shortcut_in_tooltip = false
shortcut = SubResource( 19 )
texture_normal = ExtResource( 2 )
[node name="ColorDefaults" type="TextureButton" parent="ColorPickersHorizontal/ColorButtonsVertical"]
margin_top = 24.0
[node name="HBoxContainer" type="HBoxContainer" parent="ColorPickersHorizontal/ColorButtonsVertical"]
margin_top = 11.0
margin_right = 111.0
margin_bottom = 36.0
alignment = 1
[node name="ToLeft" type="Button" parent="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer"]
margin_right = 25.0
margin_bottom = 32.0
margin_bottom = 25.0
rect_min_size = Vector2( 25, 25 )
hint_tooltip = "Interpolate the (Left Color)
towards the (Right Color)"
[node name="TextureRect" type="TextureRect" parent="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer/ToLeft"]
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 4.0
margin_top = 4.0
margin_right = -4.0
margin_bottom = -4.0
texture = ExtResource( 6 )
expand = true
stretch_mode = 6
flip_h = true
__meta__ = {
"_editor_description_": ""
}
[node name="Line1" type="HSeparator" parent="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer"]
margin_left = 29.0
margin_right = 39.0
margin_bottom = 25.0
rect_min_size = Vector2( 10, 0 )
size_flags_horizontal = 3
[node name="CopyAverage" type="Button" parent="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer"]
margin_left = 43.0
margin_right = 68.0
margin_bottom = 25.0
rect_min_size = Vector2( 25, 25 )
[node name="TransparentChecker" parent="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer/CopyAverage" instance=ExtResource( 4 )]
unique_name_in_owner = true
material = SubResource( 1 )
anchor_right = 1.0
anchor_bottom = 1.0
margin_right = 0.0
margin_bottom = 0.0
__meta__ = {
"_editor_description_": ""
}
[node name="AverageColor" type="ColorRect" parent="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer/CopyAverage"]
unique_name_in_owner = true
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -10.5
margin_top = -10.5
margin_right = 10.5
margin_bottom = 10.5
mouse_filter = 2
[node name="Line2" type="HSeparator" parent="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer"]
margin_left = 72.0
margin_right = 82.0
margin_bottom = 25.0
rect_min_size = Vector2( 10, 0 )
size_flags_horizontal = 3
[node name="ToRight" type="Button" parent="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer"]
margin_left = 86.0
margin_right = 111.0
margin_bottom = 25.0
rect_min_size = Vector2( 25, 25 )
hint_tooltip = "Interpolate the (Right Color)
towards the (Left Color)"
[node name="TextureRect" type="TextureRect" parent="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer/ToRight"]
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 4.0
margin_top = 4.0
margin_right = -4.0
margin_bottom = -4.0
texture = ExtResource( 6 )
expand = true
stretch_mode = 6
[node name="ColorDefaults" type="TextureButton" parent="ColorPickersHorizontal/ColorButtonsVertical"]
margin_left = 43.0
margin_top = 40.0
margin_right = 68.0
margin_bottom = 48.0
hint_tooltip = "Reset the colors to their default state (black for left, white for right)"
mouse_default_cursor_shape = 2
size_flags_horizontal = 4
texture_normal = ExtResource( 1 )
[node name="RightColorPickerButton" type="ColorPickerButton" parent="ColorPickersHorizontal"]
margin_left = 177.0
margin_top = 6.0
margin_right = 241.0
margin_bottom = 38.0
margin_left = 220.0
margin_top = 8.0
margin_right = 284.0
margin_bottom = 40.0
rect_min_size = Vector2( 64, 32 )
hint_tooltip = "Choose a color for the right tool"
mouse_default_cursor_shape = 2
@ -77,6 +185,10 @@ color = Color( 1, 1, 1, 1 )
[connection signal="popup_closed" from="ColorPickersHorizontal/LeftColorPickerButton" to="." method="_on_ColorPickerButton_popup_closed"]
[connection signal="pressed" from="ColorPickersHorizontal/LeftColorPickerButton" to="." method="_on_ColorPickerButton_pressed"]
[connection signal="pressed" from="ColorPickersHorizontal/ColorButtonsVertical/ColorSwitch" to="." method="_on_ColorSwitch_pressed"]
[connection signal="pressed" from="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer/ToLeft" to="." method="_on_ToLeft_pressed"]
[connection signal="button_down" from="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer/CopyAverage" to="." method="_on_CopyAverage_button_down"]
[connection signal="button_up" from="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer/CopyAverage" to="." method="_on_CopyAverage_button_up"]
[connection signal="pressed" from="ColorPickersHorizontal/ColorButtonsVertical/HBoxContainer/ToRight" to="." method="_on_ToRight_pressed"]
[connection signal="pressed" from="ColorPickersHorizontal/ColorButtonsVertical/ColorDefaults" to="." method="_on_ColorDefaults_pressed"]
[connection signal="color_changed" from="ColorPickersHorizontal/RightColorPickerButton" to="." method="_on_ColorPickerButton_color_changed" binds= [ true ]]
[connection signal="popup_closed" from="ColorPickersHorizontal/RightColorPickerButton" to="." method="_on_ColorPickerButton_popup_closed"]