From d6a199c53fd69089b310e9fa5e0fb3817ac9b3d9 Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Fri, 27 Dec 2019 22:02:47 +0200 Subject: [PATCH] Added a new brush type - Filled Circle Filled Circle brush is just like the Circle brush, but filled. Issue is, when drawing while moving the mouse, some pixels remain unfilled. Also added some more file brushes. --- .../Graphics}/circle_filled_9x9.png | Bin Assets/Graphics/circle_filled_9x9.png.import | 13 +++++ Brushes/Godot.png | Bin 0 -> 3433 bytes Brushes/Grass/%Grass1.png | Bin 0 -> 666 bytes Brushes/Grass/%Grass2.png | Bin 0 -> 665 bytes Brushes/Grass/%Grass3.png | Bin 0 -> 675 bytes Brushes/Grass/%Grass4.png | Bin 0 -> 663 bytes Brushes/Grass/%Grass5.png | Bin 0 -> 642 bytes Brushes/Icons/%icon_2.png | Bin 197 -> 0 bytes Brushes/Icons/%icon_3.png | Bin 198 -> 0 bytes Brushes/Icons/%icon_4.png | Bin 198 -> 0 bytes Brushes/Lines/%random_line_1.png | Bin 110 -> 0 bytes Brushes/Lines/%random_line_2.png | Bin 119 -> 0 bytes Brushes/Lines/%random_line_3.png | Bin 158 -> 0 bytes Brushes/Lines/%random_line_4.png | Bin 126 -> 0 bytes Brushes/Lines/%random_line_5.png | Bin 141 -> 0 bytes Brushes/{Icons/%icon_1.png => Pixelorama.png} | Bin Brushes/Snow.png | Bin 0 -> 141 bytes Brushes/Star/%star1.png | Bin 0 -> 1371 bytes Brushes/Star/%star2.png | Bin 0 -> 1365 bytes Brushes/Star/%star3.png | Bin 0 -> 1374 bytes Brushes/Star/%star4.png | Bin 0 -> 1369 bytes Brushes/Star/%star5.png | Bin 0 -> 1376 bytes Brushes/Star/%star6.png | Bin 0 -> 1375 bytes Brushes/{Circles => }/circle_blended.png | Bin Brushes/{Lines => }/hline_3x3.png | Bin Brushes/{Lines => }/vline_3x3.png | Bin Main.tscn | 55 +++++++++++++----- Scripts/BrushButton.gd | 20 ++++--- Scripts/Canvas.gd | 24 ++++---- Scripts/Global.gd | 16 +++-- 31 files changed, 93 insertions(+), 35 deletions(-) rename {Brushes/Circles => Assets/Graphics}/circle_filled_9x9.png (100%) create mode 100644 Assets/Graphics/circle_filled_9x9.png.import create mode 100644 Brushes/Godot.png create mode 100644 Brushes/Grass/%Grass1.png create mode 100644 Brushes/Grass/%Grass2.png create mode 100644 Brushes/Grass/%Grass3.png create mode 100644 Brushes/Grass/%Grass4.png create mode 100644 Brushes/Grass/%Grass5.png delete mode 100644 Brushes/Icons/%icon_2.png delete mode 100644 Brushes/Icons/%icon_3.png delete mode 100644 Brushes/Icons/%icon_4.png delete mode 100644 Brushes/Lines/%random_line_1.png delete mode 100644 Brushes/Lines/%random_line_2.png delete mode 100644 Brushes/Lines/%random_line_3.png delete mode 100644 Brushes/Lines/%random_line_4.png delete mode 100644 Brushes/Lines/%random_line_5.png rename Brushes/{Icons/%icon_1.png => Pixelorama.png} (100%) create mode 100644 Brushes/Snow.png create mode 100644 Brushes/Star/%star1.png create mode 100644 Brushes/Star/%star2.png create mode 100644 Brushes/Star/%star3.png create mode 100644 Brushes/Star/%star4.png create mode 100644 Brushes/Star/%star5.png create mode 100644 Brushes/Star/%star6.png rename Brushes/{Circles => }/circle_blended.png (100%) rename Brushes/{Lines => }/hline_3x3.png (100%) rename Brushes/{Lines => }/vline_3x3.png (100%) diff --git a/Brushes/Circles/circle_filled_9x9.png b/Assets/Graphics/circle_filled_9x9.png similarity index 100% rename from Brushes/Circles/circle_filled_9x9.png rename to Assets/Graphics/circle_filled_9x9.png diff --git a/Assets/Graphics/circle_filled_9x9.png.import b/Assets/Graphics/circle_filled_9x9.png.import new file mode 100644 index 0000000..165efdf --- /dev/null +++ b/Assets/Graphics/circle_filled_9x9.png.import @@ -0,0 +1,13 @@ +[remap] + +importer="image" +type="Image" +path="res://.import/circle_filled_9x9.png-e8b23839b7a2268668453f011aef5a21.image" + +[deps] + +source_file="res://Assets/Graphics/circle_filled_9x9.png" +dest_files=[ "res://.import/circle_filled_9x9.png-e8b23839b7a2268668453f011aef5a21.image" ] + +[params] + diff --git a/Brushes/Godot.png b/Brushes/Godot.png new file mode 100644 index 0000000000000000000000000000000000000000..2b658158b6a2211b656d83fee35e3941e5ad376a GIT binary patch literal 3433 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 LNkvXXu0mjfd922> literal 0 HcmV?d00001 diff --git a/Brushes/Grass/%Grass1.png b/Brushes/Grass/%Grass1.png new file mode 100644 index 0000000000000000000000000000000000000000..a27390554d8cb0b577d70189d9be6b5086782127 GIT binary patch literal 666 zcmV;L0%iS)P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2P;T%h)|s@h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|;_9U6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+5kwe+7y%?^>WTDX2A<>V9zMR_MR}I@xj#prk~bOP6N%@TZdk+{#50?g z&Uv3W#7dGvd`>)W&;^Mfxh}i>#<}RQz%xTeCN)nSA{L7sEO#&~87lEKaYRuy$``UO zE1b7DtCbpS-IKpCnAcX)T&FpVIF^t=5+Y>OP(}q7qO@wHm`Krn%)=jc{7G`jM<{bJi6qd;I6Xx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^~HgIv>*5p0lat9cC(j`N3BtK1|PypV~=$mrDz%9_b=JwXw$LRx*p{|y1fP+I| ztVr4G9`Eky?Csw(t^R%hZYOf3-f^e}00006VoOIv0FwZ&006uLmel|N010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|v=C1RjA+Y(oG502y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0044HL_t&-(_>&@U|^WMj^RH88pvrth~+de{AYr3Tzn+{ zyz`(#Xc^$+5o0k{}0w!$M!AysN8)qaS3U8c|VDL|R!N9=4z_4*1f{pA9CR|qC zI3vN38^pi}Q_O_VUC2IXLN|pd&k*fvZ0>{s0K4ub{cOYlS^xk507*qoM6N<$g2bm8 AJpcdz literal 0 HcmV?d00001 diff --git a/Brushes/Grass/%Grass2.png b/Brushes/Grass/%Grass2.png new file mode 100644 index 0000000000000000000000000000000000000000..dac7c02800c4be67f9ab71e2084cf5aee2093ec5 GIT binary patch literal 665 zcmV;K0%rY*P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2P;T%h)|s@h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|;_9U6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+5kwe+7y%?^>WTDX2A<>V9zMR_MR}I@xj#prk~bOP6N%@TZdk+{#50?g z&Uv3W#7dGvd`>)W&;^Mfxh}i>#<}RQz%xTeCN)nSA{L7sEO#&~87lEKaYRuy$``UO zE1b7DtCbpS-IKpCnAcX)T&FpVIF^t=5+Y>OP(}q7qO@wHm`Krn%)=jc{7G`jM<{bJi6qd;I6Xx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^~HgIv>*5p0lat9cC(j`N3BtK1|PypV~=$mrDz%9_b=JwXw$LRx*p{|y1fP+I| ztVr4G9`Eky?Csw(t^R%hZYOf3-f^e}00006VoOIv0FwZ&006uLmel|N010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|v=C1Sj4|eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0041GL_t&-(_>(Of}941{|rcA@;V3~CeDN`>Ea{tADboy z1_lNuY=X$P+&Ck_fMFsGz$8&jM0O88lbK+;Z=8`}*t6vYBf3-klU^{~I3s~-HL{yv z;N~TWVkTq`vMISi42EX>4Tx04R}tkv&MmKpe$iQ>7vm2P;T%h)|s@h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|;_9U6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+5kwe+7y%?^>WTDX2A<>V9zMR_MR}I@xj#prk~bOP6N%@TZdk+{#50?g z&Uv3W#7dGvd`>)W&;^Mfxh}i>#<}RQz%xTeCN)nSA{L7sEO#&~87lEKaYRuy$``UO zE1b7DtCbpS-IKpCnAcX)T&FpVIF^t=5+Y>OP(}q7qO@wHm`Krn%)=jc{7G`jM<{bJi6qd;I6Xx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^~HgIv>*5p0lat9cC(j`N3BtK1|PypV~=$mrDz%9_b=JwXw$LRx*p{|y1fP+I| ztVr4G9`Eky?Csw(t^R%hZYOf3-f^e}00006VoOIv0FwZ&006uLmel|N010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|v=C1TWB&YeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004VQL_t&-(_>&@U|`5;VEE5~2jny`{6|rQ%y#jS_z$CV z8W{dFAxo(1;WnKKrpQ0(1w(ES10w?i1HlVI>qdVx~`%qc{h2mmK9CKUtDZ!iD=002ov JPDHLkV1mqP72E&- literal 0 HcmV?d00001 diff --git a/Brushes/Grass/%Grass4.png b/Brushes/Grass/%Grass4.png new file mode 100644 index 0000000000000000000000000000000000000000..8068aabedba567b71ad92d24038cd316875d99e0 GIT binary patch literal 663 zcmV;I0%-k-P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2P;T%h)|s@h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|;_9U6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+5kwe+7y%?^>WTDX2A<>V9zMR_MR}I@xj#prk~bOP6N%@TZdk+{#50?g z&Uv3W#7dGvd`>)W&;^Mfxh}i>#<}RQz%xTeCN)nSA{L7sEO#&~87lEKaYRuy$``UO zE1b7DtCbpS-IKpCnAcX)T&FpVIF^t=5+Y>OP(}q7qO@wHm`Krn%)=jc{7G`jM<{bJi6qd;I6Xx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^~HgIv>*5p0lat9cC(j`N3BtK1|PypV~=$mrDz%9_b=JwXw$LRx*p{|y1fP+I| ztVr4G9`Eky?Csw(t^R%hZYOf3-f^e}00006VoOIv0FwZ&006uLmel|N010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|v=C1UV!}*(d-202y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{003`EL_t&-(_?V)k@(Mm10c&W!5BFW4F8cOVSEgQ3=9km zlh-j|H9e<+;Xe~T1^!7du$zbvFlm^)AW9(%GH2sF2?qb97YrIE4F7MOkzi2Qd%=*? x0AVw!>p>K#>tULLEKa-|aY-Qi*gxq70{}H5BqF{Vh}!@F002ovPDHLkV1ndV4#fZf literal 0 HcmV?d00001 diff --git a/Brushes/Grass/%Grass5.png b/Brushes/Grass/%Grass5.png new file mode 100644 index 0000000000000000000000000000000000000000..809d559338836c832121cbd26f0c92b3bb3f8227 GIT binary patch literal 642 zcmV-|0)737P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2P;T%h)|s@h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|;_9U6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+5kwe+7y%?^>WTDX2A<>V9zMR_MR}I@xj#prk~bOP6N%@TZdk+{#50?g z&Uv3W#7dGvd`>)W&;^Mfxh}i>#<}RQz%xTeCN)nSA{L7sEO#&~87lEKaYRuy$``UO zE1b7DtCbpS-IKpCnAcX)T&FpVIF^t=5+Y>OP(}q7qO@wHm`Krn%)=jc{7G`jM<{bJi6qd;I6Xx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^~HgIv>*5p0lat9cC(j`N3BtK1|PypV~=$mrDz%9_b=JwXw$LRx*p{|y1fP+I| ztVr4G9`Eky?Csw(t^R%hZYOf3-f^e}00006VoOIv0FwZ&006uLmel|N010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|v=C1qO>c#Z&+Q02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{003G^L_t&-(_?V)k@(Mm267r0FvOT(jLGXzC9xR*7lbK> znTV{IiGcusX=1`9f$kJ0m;hEcF)%Qw>p?UVw3>l|f#Jp(2?nN{mlzoQlU`t$f-`ss c0iqQG0Dl%Bm5x`#u>b%707*qoM6N<$f}nQ?*#H0l literal 0 HcmV?d00001 diff --git a/Brushes/Icons/%icon_2.png b/Brushes/Icons/%icon_2.png deleted file mode 100644 index e4d5abbea1bf6e52e2c6e5fb7730d8eded68ac37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`J)SO(Ar`$$CkOH!P~dQme*Aa+ z8M|eC0vA$hRxa#!)806pC4JY7TowkGEZdzbR~RClgw9Ba)a0(;XI+zU$(mt{=en29 zF&WEmCjKnF$YYx&Uidv}w^Y}qLvM<_5BN@H_?nWoc6Ix5&L_7HYWipC29fXumes|eC?^SaCTES`G{TwcRbd75Cu<6_*_i(bqob9vk8eCtTQ2nl>a)D~+ xa-AnU3hIHIG|cOqr>tIGSG(-e%Vz%LtZ%X`d5vKOeT96Zx}==!y<=hNyN?r<`2pERxQ z;C|a8dt&Y)%kMXX-W}}EI4*Y2(u+BIlGmb32e^zUYad+e#k{*aM_-TK=}&Lq3;Uz$ xA7`=7XKYdNn{0B*uJ!kZ_7AT9w2e(*CGOc(fJKfk65XaIw!tDnm{ Hr-UW|U0Wif diff --git a/Brushes/Lines/%random_line_2.png b/Brushes/Lines/%random_line_2.png deleted file mode 100644 index cf61b87a7a9fa556d0fb2cb897f01a246f24e9e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn1|+R>-G2coJ5LwK5R2aAlm$G0(i4C{C6rl8 z!PP#D*@MaX1cRDa?xHU36=@8idz$k&j^0zaEwJi1-_5v%tGwCl>KPaoEATRY_~Um1 PXcB{`tDnm{r-UW|wLc;# diff --git a/Brushes/Lines/%random_line_3.png b/Brushes/Lines/%random_line_3.png deleted file mode 100644 index 118c27cf0f35ca3d046d555c64a6da6edf7db78b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^fFVdQ I&MBb@0Q@^TGXMYp diff --git a/Brushes/Lines/%random_line_4.png b/Brushes/Lines/%random_line_4.png deleted file mode 100644 index ace4cc968a78e51a5181bca808fffee564a2b7c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^+(0bK!3HEJ6o{M!Qm&pZjv*QolM@mWew=quNocy{ zlC2PF=))Z6+ryIMFkL-E+LK{jBj&d)%@4u+XuJhl#<_ WoLfM#ReCPaKn71&KbLh*2~7a=n o2|Ci@DmU9L=hcTS1#Sk0Uz-%3hb-_u3N)X=)78&qol`;+0K1GR-v9sr diff --git a/Brushes/Icons/%icon_1.png b/Brushes/Pixelorama.png similarity index 100% rename from Brushes/Icons/%icon_1.png rename to Brushes/Pixelorama.png diff --git a/Brushes/Snow.png b/Brushes/Snow.png new file mode 100644 index 0000000000000000000000000000000000000000..60ea378dea2ef1f7a86f2544aaa6d7fdd341c265 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;Ah^LEVh(&L5f zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=K1k|ZY#hWDJpM?exn;y5Ia2;acR_YXy4@1#9P+3~}qaU*sJGy&j5QpTpxQ!zUg>68Ffr zmx3!uk-8)p85VIjNm%P1N$mDE02y4s`UHKPpnlc9@;-cY|6qT`{aDc#@=n*kD_Z-l zjBYUpB%x!mdO>%TMMEz2*y4rWs1O6?q(q%6O&WV{)Zk*`!QjZuEwF5%14iMtai`U3 zvH^S-2lR%N5J>sy3vIJyn``8;hu8^6nV@Xt%0KSmy9ej438LuFSivt|SqCp70soqC z3`A(2pz03rqknFTtAL>HFgq?-;}vcdm(q{qk_}pLP%+;{OxBMAgb1b;&X9mW%p^(~ z9vQO{A&?G06|S=+zCeIfxx-0LA{lT{!?2BajP_AhzQy<$N(v~xECx0xO~6V?kw2Ck zIaF0NscKeJ*P=B`UKN(J<@HsqCYDSso0$hIR$V-~dUkX7;C;lvmYX$irPa<|I_kLRZryw7bwm*7m~U?UZ^?y)?wjO(=JqRUef>PQ zP3$hi71SuGKI{*#>~;NGemRG~I`G~3t>~@jt>~@jt>~@jt?2)+XwDfr{yBy}0r1AR z1U)TaJOBUzg=s@WP)S2WAaHVTW@&6?004NLeUUv#!$2IxUsI(b6$d+rI%KF0VnO`E zQL0!33#F~ls)Na;U(lo>NpW!$Tni3b4)iZ;tk@NO-tvzPaI-JNg+Nb9y92I#E)E;U4G+Sa9H4(AtRlfCk_#d zg*KMkm=z6`c#1fzs2b%98J88#Tb$K$l{N3lUl`13D=Dti96}6Bh$8_JGO8${3=0uj zHBw9@X+P@WA8`B$a>?W>fstbY6{wILKlmT~?$*ptPPj?IDA4(0+aJR~U>9iAZ2SAz zwi_pa{~5T_TK-BMnEfQZ*3!a9K<_qiaoy77J>YT&=zr2BLvkcPO(CBL-p}ZpvOwQ0 z(7opN*4)SG1CXY!mT!QALtvyp+3Ozf?rQJt-!skregNBra?u7*Ohy0z00v@9M??Vs z0RI60puMM)00009a7bBm001r{001r{0eGc9b^rhX2XskIMF-;y8v-^F{=}R50000P zbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN6-h)vR2b7^U>I=lpI8O| dDK?45005HL1N|GcXaoQN002ovPDHLkV1nDgX{rDK literal 0 HcmV?d00001 diff --git a/Brushes/Star/%star2.png b/Brushes/Star/%star2.png new file mode 100644 index 0000000000000000000000000000000000000000..76e434d3c6d709474ef0fd075edc7a35fa688c39 GIT binary patch literal 1365 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 literal 0 HcmV?d00001 diff --git a/Brushes/Star/%star4.png b/Brushes/Star/%star4.png new file mode 100644 index 0000000000000000000000000000000000000000..94857a812f3b51b4342b6d9c094fdf2a7dc4b735 GIT binary patch literal 1369 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 void: Global.left_brush_type_label.text = tr("Custom brush") else: Global.left_brush_type_label.text = tr("Brush:") + " %s" % hint_tooltip - elif custom_brush_index == -2: # Pixel brush + elif custom_brush_index == -3: # Pixel brush Global.left_color_interpolation_container.visible = false Global.left_brush_type_label.text = tr("Brush: Pixel") - elif custom_brush_index == -1: # Circle brush + elif custom_brush_index == -2: # Circle brush Global.left_color_interpolation_container.visible = false Global.left_brush_type_label.text = tr("Brush: Circle") + elif custom_brush_index == -1: # Filled Circle brush + Global.left_color_interpolation_container.visible = false + Global.left_brush_type_label.text = tr("Brush: Filled Circle") Global.update_left_custom_brush() @@ -36,24 +39,27 @@ func _on_BrushButton_pressed() -> void: Global.right_brush_type_label.text = tr("Custom brush") else: Global.right_brush_type_label.text = tr("Brush:") + " %s" % hint_tooltip - elif custom_brush_index == -2: # Pixel brush + elif custom_brush_index == -3: # Pixel brush Global.right_color_interpolation_container.visible = false Global.right_brush_type_label.text = tr("Brush: Pixel") - elif custom_brush_index == -1: # Circle brush + elif custom_brush_index == -2: # Circle brush Global.right_color_interpolation_container.visible = false Global.right_brush_type_label.text = tr("Brush: Circle") + elif custom_brush_index == -1: # Filled Circle brush + Global.right_color_interpolation_container.visible = false + Global.right_brush_type_label.text = tr("Brush: Filled Circle") Global.update_right_custom_brush() func _on_DeleteButton_pressed() -> void: if brush_type == Global.BRUSH_TYPES.CUSTOM: if Global.custom_left_brush_index == custom_brush_index: - Global.custom_left_brush_index = -2 + Global.custom_left_brush_index = -3 Global.current_left_brush_type = Global.BRUSH_TYPES.PIXEL Global.left_brush_type_label.text = "Brush: Pixel" Global.update_left_custom_brush() if Global.custom_right_brush_index == custom_brush_index: - Global.custom_right_brush_index = -2 + Global.custom_right_brush_index = -3 Global.current_right_brush_type = Global.BRUSH_TYPES.PIXEL Global.right_brush_type_label.text = "Brush: Pixel" Global.update_right_custom_brush() diff --git a/Scripts/Canvas.gd b/Scripts/Canvas.gd index d054514..5b30feb 100644 --- a/Scripts/Canvas.gd +++ b/Scripts/Canvas.gd @@ -466,7 +466,7 @@ func _draw() -> void: var start_pos_x = mouse_pos.x - (Global.left_brush_size >> 1) var start_pos_y = mouse_pos.y - (Global.left_brush_size >> 1) draw_rect(Rect2(start_pos_x, start_pos_y, Global.left_brush_size, Global.left_brush_size), Color.blue, false) - elif Global.current_left_brush_type == Global.BRUSH_TYPES.CIRCLE: + elif Global.current_left_brush_type == Global.BRUSH_TYPES.CIRCLE || Global.current_left_brush_type == Global.BRUSH_TYPES.FILLED_CIRCLE: if Global.current_left_tool == "Pencil" || Global.current_left_tool == "Eraser": draw_set_transform(mouse_pos, rotation, scale) for rect in Global.left_circle_points: @@ -484,7 +484,7 @@ func _draw() -> void: var start_pos_x = mouse_pos.x - (Global.right_brush_size >> 1) var start_pos_y = mouse_pos.y - (Global.right_brush_size >> 1) draw_rect(Rect2(start_pos_x, start_pos_y, Global.right_brush_size, Global.right_brush_size), Color.red, false) - elif Global.current_right_brush_type == Global.BRUSH_TYPES.CIRCLE: + elif Global.current_right_brush_type == Global.BRUSH_TYPES.CIRCLE || Global.current_right_brush_type == Global.BRUSH_TYPES.FILLED_CIRCLE: if Global.current_right_tool == "Pencil" || Global.current_right_tool == "Eraser": draw_set_transform(mouse_pos, rotation, scale) for rect in Global.right_circle_points: @@ -553,7 +553,7 @@ func draw_pixel(pos : Vector2, color : Color, current_mouse_button : String, cur if brush_type != Global.BRUSH_TYPES.RANDOM_FILE: custom_brush_image = Global.custom_left_brush_image else: # Handle random brush - var brush_button = Global.file_brush_container.get_child(brush_index + 2) + var brush_button = Global.file_brush_container.get_child(brush_index + 3) var random_index = randi() % brush_button.random_brushes.size() custom_brush_image = Image.new() custom_brush_image.copy_from(brush_button.random_brushes[random_index]) @@ -573,7 +573,7 @@ func draw_pixel(pos : Vector2, color : Color, current_mouse_button : String, cur if brush_type != Global.BRUSH_TYPES.RANDOM_FILE: custom_brush_image = Global.custom_right_brush_image else: # Handle random brush - var brush_button = Global.file_brush_container.get_child(brush_index + 2) + var brush_button = Global.file_brush_container.get_child(brush_index + 3) var random_index = randi() % brush_button.random_brushes.size() custom_brush_image = Image.new() custom_brush_image.copy_from(brush_button.random_brushes[random_index]) @@ -664,18 +664,18 @@ func draw_pixel(pos : Vector2, color : Color, current_mouse_button : String, cur layers[current_layer_index][0].set_pixel(mirror_x, mirror_y, color) sprite_changed_this_frame = true - elif brush_type == Global.BRUSH_TYPES.CIRCLE: - plot_circle(layers[current_layer_index][0], pos.x, pos.y, brush_size, color) + elif brush_type == Global.BRUSH_TYPES.CIRCLE || brush_type == Global.BRUSH_TYPES.FILLED_CIRCLE: + plot_circle(layers[current_layer_index][0], pos.x, pos.y, brush_size, color, brush_type == Global.BRUSH_TYPES.FILLED_CIRCLE) # Handle mirroring var mirror_x := east_limit + west_limit - pos.x var mirror_y := south_limit + north_limit - pos.y if horizontal_mirror: - plot_circle(layers[current_layer_index][0], mirror_x, pos.y, brush_size, color) + plot_circle(layers[current_layer_index][0], mirror_x, pos.y, brush_size, color, brush_type == Global.BRUSH_TYPES.FILLED_CIRCLE) if vertical_mirror: - plot_circle(layers[current_layer_index][0], pos.x, mirror_y, brush_size, color) + plot_circle(layers[current_layer_index][0], pos.x, mirror_y, brush_size, color, brush_type == Global.BRUSH_TYPES.FILLED_CIRCLE) if horizontal_mirror && vertical_mirror: - plot_circle(layers[current_layer_index][0], mirror_x, mirror_y, brush_size, color) + plot_circle(layers[current_layer_index][0], mirror_x, mirror_y, brush_size, color, brush_type == Global.BRUSH_TYPES.FILLED_CIRCLE) sprite_changed_this_frame = true @@ -822,7 +822,7 @@ func flood_fill(pos : Vector2, target_color : Color, replace_color : Color) -> v sprite_changed_this_frame = true # Algorithm based on http://members.chello.at/easyfilter/bresenham.html -func plot_circle(sprite : Image, xm : int, ym : int, r : int, color : Color) -> void: +func plot_circle(sprite : Image, xm : int, ym : int, r : int, color : Color, fill := false) -> void: var west_limit := location.x var east_limit := location.x + size.x var north_limit := location.y @@ -833,6 +833,7 @@ func plot_circle(sprite : Image, xm : int, ym : int, r : int, color : Color) -> north_limit = max(north_limit, Global.selection_rectangle.polygon[0].y) south_limit = min(south_limit, Global.selection_rectangle.polygon[2].y) + var target_color : Color = sprite.get_pixel(xm, ym) # Used for filling var x := -r var y := 0 var err := 2 - r * 2 # II. Quadrant @@ -857,6 +858,9 @@ func plot_circle(sprite : Image, xm : int, ym : int, r : int, color : Color) -> x += 1 err += x * 2 + 1 + if fill: + flood_fill(Vector2(xm, ym), target_color, color) + # Checks if a point is inside a rectangle func point_in_rectangle(p : Vector2, coord1 : Vector2, coord2 : Vector2) -> bool: return p.x > coord1.x && p.y > coord1.y && p.x < coord2.x && p.y < coord2.y diff --git a/Scripts/Global.gd b/Scripts/Global.gd index d0d0781..8785049 100644 --- a/Scripts/Global.gd +++ b/Scripts/Global.gd @@ -85,7 +85,7 @@ var onion_skinning_future_rate := 0 var onion_skinning_blue_red := false # Brushes -enum BRUSH_TYPES {PIXEL, CIRCLE, FILE, RANDOM_FILE, CUSTOM} +enum BRUSH_TYPES {PIXEL, CIRCLE, FILLED_CIRCLE, FILE, RANDOM_FILE, CUSTOM} # warning-ignore:unused_class_variable var left_brush_size := 1 # warning-ignore:unused_class_variable @@ -494,12 +494,15 @@ func update_left_custom_brush() -> void: if current_left_brush_type == BRUSH_TYPES.PIXEL: var pixel := Image.new() pixel = preload("res://Assets/Graphics/pixel_image.png") - pixel = blend_image_with_color(pixel, left_color_picker.color, 1) left_brush_type_button.get_child(0).texture.create_from_image(pixel, 0) elif current_left_brush_type == BRUSH_TYPES.CIRCLE: var pixel := Image.new() pixel = preload("res://Assets/Graphics/circle_9x9.png") - pixel = blend_image_with_color(pixel, left_color_picker.color, 1) + left_brush_type_button.get_child(0).texture.create_from_image(pixel, 0) + left_circle_points = plot_circle(left_brush_size) + elif current_left_brush_type == BRUSH_TYPES.FILLED_CIRCLE: + var pixel := Image.new() + pixel = preload("res://Assets/Graphics/circle_filled_9x9.png") left_brush_type_button.get_child(0).texture.create_from_image(pixel, 0) left_circle_points = plot_circle(left_brush_size) else: @@ -516,12 +519,15 @@ func update_right_custom_brush() -> void: if current_right_brush_type == BRUSH_TYPES.PIXEL: var pixel := Image.new() pixel = preload("res://Assets/Graphics/pixel_image.png") - pixel = blend_image_with_color(pixel, right_color_picker.color, 1) right_brush_type_button.get_child(0).texture.create_from_image(pixel, 0) elif current_right_brush_type == BRUSH_TYPES.CIRCLE: var pixel := Image.new() pixel = preload("res://Assets/Graphics/circle_9x9.png") - pixel = blend_image_with_color(pixel, right_color_picker.color, 1) + right_brush_type_button.get_child(0).texture.create_from_image(pixel, 0) + right_circle_points = plot_circle(right_brush_size) + elif current_right_brush_type == BRUSH_TYPES.FILLED_CIRCLE: + var pixel := Image.new() + pixel = preload("res://Assets/Graphics/circle_filled_9x9.png") right_brush_type_button.get_child(0).texture.create_from_image(pixel, 0) right_circle_points = plot_circle(right_brush_size) else: