From 5f72e970c62038a812008373f00143fcc665f80d Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Wed, 4 Dec 2019 17:22:21 +0200 Subject: [PATCH] Added a custom color picker tool, which allows you to select a color from the canvas --- Assets/Graphics/Tools/ColorPicker.png | Bin 0 -> 797 bytes Assets/Graphics/Tools/ColorPicker.png.import | 34 +++ Assets/Graphics/Tools/ColorPicker_l.png | Bin 0 -> 829 bytes .../Graphics/Tools/ColorPicker_l.png.import | 34 +++ Assets/Graphics/Tools/ColorPicker_l_r.png | Bin 0 -> 848 bytes .../Graphics/Tools/ColorPicker_l_r.png.import | 34 +++ Assets/Graphics/Tools/ColorPicker_r.png | Bin 0 -> 832 bytes .../Graphics/Tools/ColorPicker_r.png.import | 34 +++ Main.tscn | 265 +++++++++--------- Scripts/Canvas.gd | 7 + Scripts/Global.gd | 2 + Scripts/Main.gd | 1 + project.godot | 20 +- 13 files changed, 296 insertions(+), 135 deletions(-) create mode 100644 Assets/Graphics/Tools/ColorPicker.png create mode 100644 Assets/Graphics/Tools/ColorPicker.png.import create mode 100644 Assets/Graphics/Tools/ColorPicker_l.png create mode 100644 Assets/Graphics/Tools/ColorPicker_l.png.import create mode 100644 Assets/Graphics/Tools/ColorPicker_l_r.png create mode 100644 Assets/Graphics/Tools/ColorPicker_l_r.png.import create mode 100644 Assets/Graphics/Tools/ColorPicker_r.png create mode 100644 Assets/Graphics/Tools/ColorPicker_r.png.import diff --git a/Assets/Graphics/Tools/ColorPicker.png b/Assets/Graphics/Tools/ColorPicker.png new file mode 100644 index 0000000000000000000000000000000000000000..23875660d3ee7d2b12066b4eafb0ee813d2c5408 GIT binary patch literal 797 zcmV+&1LFLNP)EX>4Tx04R}tkv&MmKpe$iQ>CIU4t5Yx2w0sgh>GYYRV;#q(pG5I!Q}c0O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!HiqSC+D5|L^ zq7gBjSrvV+=)n*I7{;u`3@w&iOu==0-NVDzyD-mkKlkSdWOD`sJR2yKjN3P2bzi}?uEbz>ro=VIU2Z_Z(8_R9Xin>BPMI6d1D&-4l zhqIiwI4k8UYu=N;(4SLRl3b@bh$xm2LmVPxR8c}1Cc?C;q!>uhe#FH;VEg0blF3y9 zBgX_CX>@2HM@dakSAh-}0002=Nklnl~6)T;Z8BuLO+y1E4wFm z5SL#QH7A@nd@tc;M0CzU5g*VE%pc5+;F5y?0CY3_B*bV_nEAJkF`n|IRXsBw;H8+o z3#46jFGuijkaVkC)vE}Y1(!y=EFj--wtBG+{2Q;)_e2DE@0%iGjMY3zz-uB}U=aa3 zyw-^kPmmORRRl@G0RTb>Q^qtJ@R{i#E%<1d75KJohn%%`{d(k_>wba0goEQx}lKwS~OmQi?63DSH6TU2g9k0Y1=uEXNR^ b_&xsu1=n5QNi4N-00000NkvXXu0mjfhkI3z literal 0 HcmV?d00001 diff --git a/Assets/Graphics/Tools/ColorPicker.png.import b/Assets/Graphics/Tools/ColorPicker.png.import new file mode 100644 index 000000000..77a6058d8 --- /dev/null +++ b/Assets/Graphics/Tools/ColorPicker.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ColorPicker.png-c3ca53305589accba5ce5f684a7ab345.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Graphics/Tools/ColorPicker.png" +dest_files=[ "res://.import/ColorPicker.png-c3ca53305589accba5ce5f684a7ab345.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/Assets/Graphics/Tools/ColorPicker_l.png b/Assets/Graphics/Tools/ColorPicker_l.png new file mode 100644 index 0000000000000000000000000000000000000000..1eabc02868d7840584bcd749a78ee64cf368bec1 GIT binary patch literal 829 zcmV-D1H$}?P)EX>4Tx04R}tkv&MmKpe$iQ>CIU4t5Yx2w0sgh>GYYRV;#q(pG5I!Q}c0O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!HiqSC+D5|L^ zq7gBjSrvV+=)n*I7{;u`3@w&iOu==0-NVDzyD-mkKlkSdWOD`sJR2yKjN3P2bzi}?uEbz>ro=VIU2Z_Z(8_R9Xin>BPMI6d1D&-4l zhqIiwI4k8UYu=N;(4SLRl3b@bh$xm2LmVPxR8c}1Cc?C;q!>uhe#FH;VEg0blF3y9 zBgX_CX>@2HM@dakSAh-}0003LNklj425kUC3Oa10$_*?U}^@)7@mbX zKa)6_gE~E_-~=(ovL&O+oH)KG>DhqPS_>GD?|l-8&}Ao(A>l<43r>g$3Q?Kie?kgw zO53)}+FI+F$8}1oe$N9C3}Y)oaaVnmQ{v=M6xG72eATlEz=Fv=03V30o~#3|?G<_- ziGaTEy&|l&yZPjE;CXv3>tPrU4<6DEK)9{ccR@WiEX>4Tx04R}tkv&MmKpe$iQ>CIU4t5Yx2w0sgh>GYYRV;#q(pG5I!Q}c0O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!HiqSC+D5|L^ zq7gBjSrvV+=)n*I7{;u`3@w&iOu==0-NVDzyD-mkKlkSdWOD`sJR2yKjN3P2bzi}?uEbz>ro=VIU2Z_Z(8_R9Xin>BPMI6d1D&-4l zhqIiwI4k8UYu=N;(4SLRl3b@bh$xm2LmVPxR8c}1Cc?C;q!>uhe#FH;VEg0blF3y9 zBgX&F#_v000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jdGJ4LAUn;8J%0000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0003eNkl2(x>gASXg;%bna*at*)lu3rn~Qc4CRd#8$7gnHg=rn68s96o!lVAn{q zoq|HdKjC9SJZjM6zVF9TT>s=bJE=w0Pk8`>VGKnG>Z<2*f~_0^qgq&%u6hyywqSG* zz!%z9kJf>)?PWR-ML>}swIZUpp3E;k2l8vtkI$Fa?7@TD0SF)Kgo!5v7Ti^Yz=U_p zU}H>c517Eowjnm$>T?X?Ns@f!%Ie^3WTPeU+h8)c1a7nhI(W4$*ZUe`z?}tP!JPzP z!e@7Z-v;PF;|}P|M=k)usfDcnQz|zh*BOn{1EFlV_b<0=mtd?5)X`l|`wny>s4uF+ a>-h&mD1qKqpyCn$0000EX>4Tx04R}tkv&MmKpe$iQ>CIU4t5Yx2w0sgh>GYYRV;#q(pG5I!Q}c0O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!HiqSC+D5|L^ zq7gBjSrvV+=)n*I7{;u`3@w&iOu==0-NVDzyD-mkKlkSdWOD`sJR2yKjN3P2bzi}?uEbz>ro=VIU2Z_Z(8_R9Xin>BPMI6d1D&-4l zhqIiwI4k8UYu=N;(4SLRl3b@bh$xm2LmVPxR8c}1Cc?C;q!>uhe#FH;VEg0blF3y9 zBgX_CX>@2HM@dakSAh-}0003ONklex!tw}B6aKE!zt~6NHM5R$MYAJKyCDk void: Global.selection_rectangle.polygon[1] = Vector2(end_pos.x, start_pos.y) Global.selection_rectangle.polygon[2] = end_pos Global.selection_rectangle.polygon[3] = Vector2(start_pos.x, end_pos.y) + "ColorPicker": + if mouse_in_canvas && Global.can_draw && Global.has_focus && Global.current_frame == frame: + var pixel_color : Color = layers[current_layer_index][0].get_pixelv(mouse_pos) + if current_mouse_button == "left_mouse": + Global.left_color_picker.color = pixel_color + elif current_mouse_button == "right_mouse": + Global.right_color_picker.color = pixel_color if !is_making_line: previous_mouse_pos = mouse_pos diff --git a/Scripts/Global.gd b/Scripts/Global.gd index fe6e1ee76..dfbad291e 100644 --- a/Scripts/Global.gd +++ b/Scripts/Global.gd @@ -120,7 +120,9 @@ var right_fill_area := 0 #0 for lighten, 1 for darken var left_ld := 0 var right_ld := 0 +# warning-ignore:unused_class_variable var left_ld_amount := 0.1 +# warning-ignore:unused_class_variable var right_ld_amount := 0.1 # warning-ignore:unused_class_variable diff --git a/Scripts/Main.gd b/Scripts/Main.gd index b9d6cb6f0..646692786 100644 --- a/Scripts/Main.gd +++ b/Scripts/Main.gd @@ -100,6 +100,7 @@ func _ready() -> void: tools.append([Global.find_node_by_name(root, "Bucket"), "left_fill_tool", "right_fill_tool"]) tools.append([Global.find_node_by_name(root, "LightenDarken"), "left_lightdark_tool", "right_lightdark_tool"]) tools.append([Global.find_node_by_name(root, "RectSelect"), "left_rectangle_select_tool", "right_rectangle_select_tool"]) + tools.append([Global.find_node_by_name(root, "ColorPicker"), "left_colorpicker_tool", "right_colorpicker_tool"]) for t in tools: t[0].connect("pressed", self, "_on_Tool_pressed", [t[0]]) diff --git a/project.godot b/project.godot index 5728350b0..acdaf256b 100644 --- a/project.godot +++ b/project.godot @@ -151,16 +151,6 @@ paste={ "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":true,"meta":false,"command":true,"pressed":false,"scancode":86,"unicode":0,"echo":false,"script":null) ] } -left_paint_all_tool={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) - ] -} -right_paint_all_tool={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":true,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) - ] -} left_lightdark_tool={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":85,"unicode":0,"echo":false,"script":null) @@ -177,6 +167,16 @@ toggle_fullscreen={ , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":true,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"unicode":0,"echo":false,"script":null) ] } +left_colorpicker_tool={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":79,"unicode":0,"echo":false,"script":null) + ] +} +right_colorpicker_tool={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":true,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":79,"unicode":0,"echo":false,"script":null) + ] +} [rendering]