From c5d78047bfb9a661002ace7a2b90ac9da7d9b5fb Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Fri, 4 Oct 2024 22:37:53 -0700 Subject: [PATCH] "Spiral" magic tools: icons & sound effects --- docs/AUTHORS.txt | 5 +++ docs/CHANGES.txt | 7 ++-- magic/icons/spiral-circle.png | Bin 0 -> 1508 bytes magic/icons/spiral-square.png | Bin 0 -> 480 bytes magic/sounds/spiral-circle.ogg | Bin 0 -> 17419 bytes magic/sounds/spiral-square.ogg | Bin 0 -> 19011 bytes magic/src/spiral.c | 65 ++++++++++++++++++++++++--------- 7 files changed, 57 insertions(+), 20 deletions(-) create mode 100644 magic/icons/spiral-circle.png create mode 100644 magic/icons/spiral-square.png create mode 100644 magic/sounds/spiral-circle.ogg create mode 100644 magic/sounds/spiral-square.ogg diff --git a/docs/AUTHORS.txt b/docs/AUTHORS.txt index 0c8ad6e9e..82ffb5759 100644 --- a/docs/AUTHORS.txt +++ b/docs/AUTHORS.txt @@ -250,6 +250,11 @@ June 17, 2002 - October 4, 2024 "Spiral" & "Spiral Square" magic tools by Bill Kendrick + "Spiral" & "Spiral Square" sound effects based on "Wobble Slicer E3.wav" + + Creative Commons Attribution 4.0 (CC BY 4.0) by Luke Sharples + + Bloom magic tool by Bill Kendrick diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index 89c71e240..ff145aa79 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -79,9 +79,10 @@ https://tuxpaint.org/ * "Spiral" and "Square Spiral": Draw spiral shapes. + Code by Bill Kendrick - + TODO Correct location - + TODO Icons - + TODO Sound effects + + Sound effects based on "Wobble Slicer E3.wav" + + Creative Commons Attribution 4.0 (CC BY 4.0) by Luke Sharples + + TODO Documentation + Closes https://sourceforge.net/p/tuxpaint/feature-requests/261/ diff --git a/magic/icons/spiral-circle.png b/magic/icons/spiral-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..b8606cc098e9c976daf1bc1ff753e727ea9e3ab8 GIT binary patch literal 1508 zcmeAS@N?(olHy`uVBq!ia0vp^3P3E!!3-p;uDp?EU|@0!@Ck7Ra!0{v2v8UT(nijT zKqC&81o;Isa4@m4Gj_#uhNv-n^5@Q|)eh9*lIFgYXCtUDso3af&ogB@Yr;DjBfeKw zEUFrYG2H@{>y)J4eE8cY7V2VGxa;v1xh=P=MP5HtxHXygpRuyZDci)o^ZU;?>^Z)m z!ou%`XzRvbRhkDc&P)wIaAuju1cT?MX`K?n;>AMQ&Qbfy!s^%7$ZwnT?BXmM|taW;BY|3xhKkj!|K3TQX>*U*oLDomVo1d5%{lLL3 zIVWEtg9(^DdOTemLn`7*FDFk{;S_0oID6H(SDSJ-ug$%^ZSBTf>FnFvO8?zV^9?=Y z_w}7k{Q21vB_|eY%AYs*5|VR9S$_XN-?@9v9l7*hVk?ueQK$S4QNaxMP-VAMUDG@# z>C9r03bp>m;8mg`mKL)xA&`^l=h48D4|Be%8RdP6tlY=k==5uPk>}~}XPh@@n9r8& zmRhsy=U4I7G5z1KxK9hYwdqOt#yKszy6d(r5#^h+TqaRU`cY1drp490Z{O~H#j(0) z`;whg&nHhwJ#;jI`N@8 zR~0|~d-Fh--@;ti04M*>O-AcCCN0~u>B=R?swJBmt6~>s=PhX3c4=WA!+D8v=W}wk z1}RP&;wxSn>XK!&nL!ar5TXrUh zTZx9R{lfLidVYSjqOeHmQ&zznE!oj)mq%SV%#kK()3wjpN9Rv|!0%%$!o2&Bx;GxU z!T3^HHX}r%(7e)GJb=S2teNfHR`2HT{?gj-7EbLteO9d}@Yu%wYpIUin4=3bw?{_TR#XD=+<^1lA}-14{Y-+m4}#{T2Ok(2&@ z^B>s%T_d~MG`=P?xxfDECsXr&<1ZchA9B||+P!t{`(~N%hiCrcC|^~Pm9YQ8fo=Vp zgl2qE&9(n$@_q9}<#Ta&dP4m#T$C*j?0a#nF?HFe6Z$KDel?He{Z?5K`sMpG`xl0V zR-e097%eT^eOH~^^-^TO+okFqYgI3(%(-dvQcL3Ce6>^Q|F~~xYfD}^Y20pXsCA+K th}e_*@YdCjA76Ue`Q?9v+o9lj^$hne?kEW5&)ERVr=G5UF6*2UngA6FwZs4b literal 0 HcmV?d00001 diff --git a/magic/icons/spiral-square.png b/magic/icons/spiral-square.png new file mode 100644 index 0000000000000000000000000000000000000000..a49dba03c080ec1eb20129229ba4d1f150887c48 GIT binary patch literal 480 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 b@Ypiclm39j^>hl4xdf()e)L;{km&ybKOdk+ literal 0 HcmV?d00001 diff --git a/magic/sounds/spiral-square.ogg b/magic/sounds/spiral-square.ogg new file mode 100644 index 0000000000000000000000000000000000000000..225fe169f8d682fb108437c6af9652dece131778 GIT binary patch literal 19011 zcmeFZWmuG7+dg_v&>%w(>Cla|lsXLEFfcSocb5W!LrQmpNDD(FAQ%YJUDAT6NQsD~ zipn1RJ@5NG@BZ@N$MNn@``GJPtovGhuXEM8u6qr7&d!Da82Fdr3#3FaD@)yo;7;uYlT=k4X`=oP?!Sqq5ZpE9^n zO2!}n2>@LFZ~@gyfBI+`6H1@)BMWN6eUA~PO%=%^u5B^O?VrY8QG$xI;ER|_!vL2V z9w^?WjZRP`W{>8+VVV)edjl`U$>PIYFT-G{|8i7hUGTAr#H`UDMPo&CgT5@o=`6#|EM&wKW(0UJ0AhSP^@IxblnwO^F0%~ozjiYoCp6mf z*NXqmt_}eD2IMNfv_yaNIRF50iA+MJX+ot-!d6@gadd1Q7{CGm6km;`lA(fHmhz+# zW})44J!Zojyk<`n+EBaVs zcBMeGS(dd(y)8JSFria+tH^(1c(X`s0xy*nnUNRZ(`^;?m6(zKBk?u|PZbDUhWSqH z*c4F>;3b~=;Ix9|HoQbo@0wDe)r^{dZktFgIzeH&VnzcLF=`WHV09(xoaqeGg(WyyAN{Ev(LNCm3@ zffI4rH2|P@$TCgE`fvM3Q`7Gtc=!dCJ2d!Vgp zj-%QCu>Uk2Ki3iX!TwJ}_y^$rW3t;^S+M_VCcZ-fA6m7)<4vQ5OKXN}d`3v`NK%jH zh5@b0tR!Zd&dT7rr-8KNtdy0Zv=zqK(vRPfgx$WtQSPZ<)n(0B70W7qJ%RWJI zOt@l-pQnD_2o*zHk!LSJhrWWwcU}wtD*&zgupnE6@b)h<0FWk0F{MD+BuV)%KbHj=Q`TirVT&xW0rsf7cGqXB%>skulppyLqr90HxF zsvb#DhNI$aiL0p2zp>!LM<~uB5&#W+#FS(l$G@X8@DU}hFcoYCKEj3RzvmD>#iS&A z0!$^3r&~fNjzgKMisaw9{!_xQ%y1w41}<7k{@?E;li&yfupeb|@SGs!qbWU}UgdBn z0Dz5I0Uv&$|KFMaSs^tL2L^oj@D&a=3$5d8K5&H^hA&5l3S1C0Uu|fG)Fqe%3;+k6FOS z=QskFKA}-O>Q`9sd^xEkGf5z^X*!yW5?RVF2*&aOKsUUK)^J3WhrI&EG{6;2i{jy~ zoI&Fd6=*a+U9^#=0C#y7+KnFrL-W^Uk)i~+v(W&s7y-fm#pt^XX#xmJ04u6`xoPWi zRM6T_$nsL56U4TPGBw3E@ia(-pAo;CZ&hUdr95cO%P?8~%D=oP3$2M~O1hf-+|d(? zyp>rqcz#3!07ie&E+5*2aw`6X8w~=;Q|vF{#v_%(^|!b93aWTC{^r!!_nGJ=Yveqv;R@3$74ve*XzYKKAT+JE3C#D=2>ceq(zB{%AB> zQ@GtUQM0r>1FcyOP zzU|;4T(#^*F+j{|AtXF!?k+k2U$scAY%fR@yZL^GZAb@gYvP2!%L%I|~ z2BsEj0FN62h94yOF@ql!73d^c{HVBsA}%$;hy9hrz6a@U6vn)ZcX66?lew8Ae=+?>tTZ7<{(M zEPRvsE2%X}xTC4j{QQ-)n#An*NPL))CP`^DHGXhjVvjFClONx^EHZd<3|Hi3#L(N8 zlQ6LTv#L1YIZs&@nqOEYlA{t{0oPKc^Vc^|sP-dAkJq3l5Sv^%abnR~nMUH9v?y}a zE=!;`KcR3o95n#1SoG5>^}m8&6%_$2HVptEPyz{{dmVW14+{W8)tCV+LfI)!xfkVg zSDyq%We7srMWRFiBU8%?D@$Z9NM!p%1B4yQPOK<&r34FQDe~#1@xJ?-LU)Q^AP|8s z7XT=L1N;kG0#sDfW3~=19zFqg?_s0klG5-CB;GIr_wXlIZltoZq(7XIiJ66!?J9zu zgOdxtjQ?{CM_>Uc^dClbxq?HX|D3bCZ~n~>T%NNp!(V~pXPFeFPk&xOE(p#q2reiu zu3QkF{kb6deT;XEmKNS@W0n?<<5;sbouJeDPB#85byX}e#wF;f<|yuzNS|yMS3#Y_ zKj>X8H7)DLPpp1qHmlT+SPcQARnAV@q=uhtHO8Ay8_cbN3?rtE2~>zFBP~NLG7DQEHhq_* zD3a;n-m^XxTT4vTXw)Vn7$){nXH~|(DYB6o1IFEmcq2F^F+eK{#F;5Eq@}?sBC=VA z3DZ!(bh0psZM`|2L6EJ8Hg?WDYOXsv7K%cGJ^DJ70B9U>(jeFdwA&ewHr@r)k}?(o z4370(H*>VYRVnEK)ZtgDnu@M#f`Ek-5Mg%fu}--6AnMhL1>Ml`QbY90t;J&JgFqzx5kwdZpshX)}z<^~Z4u>r9K_u0vW-Ce&72P#xEi3P(-iu>; z5cb?|cW=O9>|_$ncQ(R(CP_`<0>|uQl)2SGR`KbE`35G_W4=P;!3B(``rK0yJT&q% zTyL1{vXC|zV?K%E25%hH0Cgo^ZiEIM{mv(qUmCNF-Sg==DHRPu%6`(Ed*ptzQT!YiN5 zkmNqWyn#=@V+$WNFI|Oh9%sB%F=6x7ebAk$lJpxpbAneLeyOdVO=9f`n#ieeG1mc=XJdwTX>;yvBs1dzB8%3&8 zF(ZZ;Lt2qUR_muRITae?U>bwHR=sm4O`uol@nBAqoGuX79>7MC@PVjOTc0 zRuv9iSwANNd8g%hIGgRAPRtC(k($X2;&7(WjQ;ZBXC_OX)yXNLo}#CO&op-mXSGt^ z>^{ENah+j&rTBWNLdDbCW|_wqj(6hui4~2NNg)z@2BL`WQfx%oy@u*&rs*Qqlo<*9 z5wNr$dB@JE!6!#1S>>6Ix&b!5{eIwln&w$_q9*{Y6@_7uoHWM7Kpa9n7yg7au(CCC z&{d0_1H(sNdd(hIWoKs2Ex;kd|KlewAp`sDF*#g%s@e+$A?kEo1tsvz8`_CiCk8m0 z#E`@9nY_(Ix~#;IcS8DJ>@t6eLqT9EaS$S4Ex2-5o}A)Bls)5C^Xs2+lsY>vE*O+w zC@NR)KGr!l+#cAL99P3H0V)7Z?xWEgUlUGPR6}2hsQZ-dyEQwIJo4GbA|*uq18 znpc(?jbuja--MnBCL2XWJfz)IB3&OKIAyCZhb$io8uAcV6$e_23HDjO>;LI??rkNb zDpmB^TPFRtmFBAtjWnBdW0A;^4|t&fEf>7G&)*(R%CU!*tyXzM1U4f z-g)ZCQs;hF@6)un4C1VPXKsUdGGe;g&lu%-wlW8W2lKVUYc&lqj2KRW6sD$m>7g+X z4SV9MeX9;9ZO)<;{WwGxj~N4nBJACp8-M(wRXft*lZAy_5g9M2+pE}2KS z6W0Dgv-`FR1DLY9+j$*}DDVQ_aK{dJfi;bK@ryV!!$sqW($QOHgr zkBHNJDhuFP1IYsJzA^nJ`smDyPJaJDgAXyd10sF#0lblidQI#$t_pzPKq*uO&H(c! z`sk8$rh@1WEB>=t95FJEUS1SUnj86|70B^mMz%|=_|L&N!a5WiB_1N5Fu_SM{zKjm z@`n4K9gT!;KREBMJ#>CL#VfGe?!p#M!gO1|X887%J}REc>0Y93Frgw)Tp;{QVzKJR zi+2aj3BrA96~fD-=Y($&A8))oPB-v5z=MF%uT#yGP@C*aTsa``w7Ryi(JC-xTb8XV zxhx`*`?XPoU!BJyIYgVqD(D(pc-&AXyh!qzPGB0@_Sq=_k3kZ$&sPLl@q|oPE%ipv zD&$5{DI?XvfTkF3#ruv3r+vr5y{iTZvi*Sj#~{kXYBX^lZQaW&KmZ78dC$%)eFl!z z2djVJB8&%ysax)mH0{>ZXqHAAwHhRRKY#V^>`vR0E&|GUn=-GbW$?_d&FbGjo$h>o zz}n)j(Gwi0UZ>Q3J>&Y!-K!ZMNssgOuO&VRj19?JZ`CUYIKNxm&dEA$NriH5^9$CM}ZEUb~uKx!+x`f`rFglxO3`!b)|%bLP|} z1tf3&k3Pz&v7eiZ8RiMAFxZBGBdMjUpPBV5B0}#^AqHKWG}j{$Kq5P@tHQ6bKp~5i|4wJ>pHmmGx%-@QwRZE;yo$W0T3qp z957`ey8DI+=$6h_c^nrhgq?Pe)YQkBl8|6UUG(1SE+^Q*o>*9^U!D1#9Yp{I_{7nc zU#CSf1Ta&--B}O0ND#gxFHh~ZlkCY@XHSmW=b>9EP?soq43S^~S=nu|PsRtUHu%djU5v5Ya&b9Z&ELCi#v zehbTIw31|6`AxTZ^d)Vym$A{G>->u;-KPK}O;vCjNT75$&S*z`Wa>&?#kj`XMp$$+FI&SM1?O6(pql7jYeA*16z&fBq>C)>% zP`KfaE5ns)s$v-rq-RJglq2HnIT?E%GVc+Zk;|)13g_uC#KtDecg!zzgHj&$m9u?5 z_W^D4%5!v*)<-%#aF5IJi!<7-ZSx|p^V}Mrfhy*@vd{Uqs@mqL+@{l?5 z^%o;n&Y-VmWp($W{|e81%hg*F=eQ7ek5f+rw}G=|?JN@}_^CXR=QT|qVkuU2pU%tAXB=Fz_%D$p(bVpP zjg~g14PU6pBlP>~Mx;f_qgfJ?kfLZMX?PmYZOb$Ojr|m>hZ0d8q&9=3Z||2Vzkcfe z?&i-xZr`MgbW0*Grl6=~c6q?s?aQguJgspt*2vR@t+}dsS+85C;Ngw@fYYWX6%qW= zp!>RUyMAcrhJsYnQF#mcS|H^f`R6b(%WPRyhS8bYJ;S_w5qm=!I)Nx#`If>W43>Ke zSx*+JSZ5$1x=13VNPZ=cm13P3Ez*o)q*l?kEz&0_PZG~dke~;$N2*nn$ize!7Sv_k zt|>lKW+w!46(JC9tYZ8sHjPB{|5X4g2l9!)=XW$UcXdfu;}hU;4YY< z0(-o){(2v!zYdWTeMq@j(7TBka3uL8Qe5e1gwP{c*;Uj%7EjnaT&~mM zKj$)5K=T}tqhRW7n8{Du)AJkjb164^^qzQhg0bk15TK%)kcJGBRuQTE0<1(Y9qot~ zVMmF@q?rNTs=pd8ew&I1w{x@G*5}k^;Ih&-R7StjceN@xNmkpcCiVyHm+Ten!Lq3y z%iiC1VOIG?ytMI0lqjqs_z7We$P41Y_+MNpuhLe}mnV^s>UmqW;kXELD1Nw~^ayTH zbX}~ExwJ2yE!H)6Tu80Q4(~nUE-!w=7U$c5v!si7Hjnc7z3bdWe-YYViF?a6%W)zg zP)IE&JzF*`5Q?kizSAJM)%96yL4P)Ac#a&WG;x>chGD~}H95ipn;K%6!&u&kYplU{ zRo~3k?g)VR36rZMGLr7Qk>gplkN`81EG=8nVK~-&;Sdh(=}@#G%illXI@UOfjqIw_ zi`0?3R1`xr#9CE7lq#tkBImzrq3Cmxk>Udx)4oqF>4eM8RHP6#rs0wmjQIsthCekY zu2|*9{wSZ;9>v7|_K~bYHs8F1(ogp?ob-HJ*Z06FrQYYcdGxJ07nuQ+gd`D)@L&3h z@PF$oF2C87z(c5+E{HF{7oZD@3yR+t;NKU(1?0yCaCSj-{--#>sy=kD&E}8SMO2>g zUe7zbhK$3)Z>gw*?pAEi4tJpjuYqVS4#y#WqOT`C_Du~HBD20+AIsi0Un))^H{0Y@ z8MZ9&WtEcocr-nc-dCzu_3_Hi4U8Cu2BS206c{)Y!*2sTsQrn`9Mg9b-%78uwlAPP z-VJO6kOXA3gnYSA>gvNDeV)!(Me_CAC`1FW=;mYsAP7#5Bqk@OfTW;Zm!UbKmIMG{ zcb6~q^>#x02z%y=1vqN@z=RCyvXm4Zj+Nr$Ma(XE!&ZtY-(iW7K8 z5J!K5Jmqs0DHP7&{+Juz8t#x>8&#)y6fu^zGB_EFypx*N!vTaBB#)^5DpS82{s)9^ zOTS3EEj|Crf&QpFYpGo*G$iF_OMxGrH^F>;L}z_w4dKh3PeV-JHedh1Sq_iT%}|@a zW;a?jvt0SGXb5cfZHJF5y*U^cd)J`AKF1L*87C4*I%H|G)=?XI-_3xBK4UGt&EPPk z@)o%^$9*mfLI6d874CDBU!ZSsF3d^9)`i;d=X5^0vk~%%`bO(Zi?pZ46$F$|C6l?9 zD3?gg7EBsm<1Y%r9cnO{-Qm#;@gamG!TfF-kh zP_Vm`k$dfPh{^3N-q)W1z1XEGgS)q0A{6!xqxTS&kM0Dn9iM7GDCP{>5I!4Au3!l0 zNLD14SHU`MGf0$vWGUPbG@9&A9~+qNXtb~!0wFj}0~DQEK(*OL}Kr8+o4oiBWeXQSfWr?-+(%vGcSBxzdf8AxfNA)*^V zhKUrg%^6s--wn1V()a@IpgFbT2RZ^4ux^9;P!xbw=~+F#mrom@QPBbrHq`^VL6$~< zsrq`J@qG3@!>npCA&15{s)g?E;LPN{RQ*SvVoq=IJLsLf}A3W0?X12=JB@*jY0#BYX^!3sR{ zpM#NNY**=_3Zm&Gd9xDd+q5uNJPxGmLb3fXe>m)f+}`^*v|FUVWZ8?;v`p{zjpj6K<8y%J+;5V-qtRM@$@%Z{uOg?mY_- z^9+H2+0Wg_g-wce&{6wA%- zC$RMKOfBL75!>0z)+{`Zt}s%P0doQJPa7bo;@KGee8Ui@i4#dQr~1i@^FE8hcdi1J0jUsXnyVq zrqyD(^TPIvg2Ebc#BnyqjD{QadIBcFsp7R=Sny|bg*q`Bj9^fS%~6D8!^?uE9l%x@ zytIbEx(p4F*YS1X#{ANaLDmk#RY2DL8kMNsFA_4AgAVcMXu6tnta${~7h!>jv$Z_V zaAd&>g-#L!*ly`oO%f~x7|LNTH7#!vW5mtxhxww6n_^PBPPVL9Vk_w;j+uNwPQj{* z-5ipo0rf}M^}wkYWriQ`$*e25NWolZyjfZH3-UK1B9N|{mZqEXiIM(elNwejb23#+ z*Aiq0rxY^2f?4@arB#h+C{|M6d^OLY-L|G_0P$iGX=MGXE|q~WbQ(;N%TY^C$BG8N zNX%ad=OwO6y;o4!AT6>t!xa5qY-oV=-2yx&X?UJ3tC5a13zi{~!LD>relv08m7;?T zY(|L5Mg@`FzVV!4IyL65CY6fW98zL4A^8t!+I=|E$tXtP6uNIlk8UNw*6FUC$ z2e|Ix@~HUD&1xNa{F+DwjhuI<*wpg$Yptj%@65UBu{58x$HV^IO~ZRIGl{0HYd2%8 zVqy066`d~?3B$+eDZkD8_BXP~$ak>HrZ#GxMtnLOP3tKcRdp&MM^j?M6Sb$`$BWgz zs&|bkXgeQ265;MfOj&*xyS7uaIC#%ZFS~_%0v4nw%=BU`h+opO27KxY96ZlmJ@HPJ zzF&V5NvoLN1chQ3T*?Ezm0RsM;M<8Lz4kYanexJCcsEvKnu+I}nvUL9=<-mLc`!W` z$(10q?;FVMT9Q!MxZ6!Vmo(wE%VVuUl7b0^Ik$rtyA12Pycd9Vgj5 zR8`Fn@L|1FG!q-GdL*0>Zn;%eGI=QT7Y6&$a7Z%P0hFA zJl~0!$L!K}yHZlqGIHm&B^uk^h<>jKHg1i$CKsicP-q@VROdD$+SR9v+W!!12cS5fY=i1dpMo6g*I=+!N+sP1jY53wkT(MnPCGSL#KT#FC0|E zcnNHM@T?$4ziBmS<^@(ROoBfUs9W4+OJ z`DL=slduw=D>^)~3_3bX68&{{R2v000|ZD6;v=b=I#Nl|8*THZy6Vn>bZo@45fUKL zIy5tJ$Or|n+z=@((s5&oh^V%RLAC=@9BE#ia-Uv~_V<7}Y^3NjB0ITr(zt-`cx~Ko z1%fQi^yqQBQ2CC{V}0+eSa0I+hId|t?f%v=5PitW>f`Ud01)tjcL5Iip-0wr{vod`Aw#G2!Y}x(;m9-?!XtxzwR(fzhnbGn24YT7AdALK)EbaDO-H#?5Y+a5?q5sOvE#>uf5XV%L4wa|T= zsF@nEkVhpSdYY{7Oju0c!*j_{64lu+;zD!s+iPMb=0gd>v64tjBQ+H>or3CVbASMv z2j`ZJvl-*#8yUBO7ONsQY=(`Yp3?|+)0&E^H7Ne-j)QiR8I}X2ZW>Linb0t92DV{_ zFsw2=xX_y0-LW1VRwf3SrgV*>2!T?YhsUxsexHYf$Tdir%e?1G;p{E5bOpC}_UK7V zOZSp{9f}6))d@8OJ%Wr%I>ntMI4KC;FLL zXH1O^M&|^rHZt!AdL&r-$^-hba?hW7e9Fy@v`y_SxtSomd02$bjgd&&Wf+Gs8)Kzk z3j#ofaU{4g8C#}@qRSce9ohj?Ymri@W23x6#oW8+p+GkWwhzh%bc-29`l0D(UrT`t9;NsPxbyRXN^HeWsPWu@%z<><*FZk>#N9V8{H_Z56c0ML1As;d)=~8kq9_ zE%^8DB2fb;#~b%yi=75N6CMta0ej<5cx__#r@M`~kJ*#A9UXA$J}HGKlF{uo8n1^E zN)vVFxT}u~$Z|1K7Mx zJ|PD5Pal&Gx(DBxYuBk!&9HTR(xTh7Ke&JMd$hg%Vv!63 z7@hV&%HEQ5-uA* z3eRX@upMM0Mp)9Yi#EWtU7v9+WNkXRrUPK1D3Q8T@ICTEFW-r$2lpD2ht%)H-&@U0 zJg5t?4!bS-nfq+-@O0(;WH)mDD`3~ zWuDmjoiC7V9#~XboNau>GQYz|s%Sb=LZEvN3w@4T+Ck#Ps!{#aY^J)$I`LROkOwUf@z0h=SIXA?u`)&Fh|Kz^Pk z7H^x`oAIZHDLL{Q5SufPfXkCek~ECK*eCn9F_qZN(K+~%{RC+>KiL8Ji9TNv8mbD< z;*9Sw>m>|qtl+`5ct4?xWaRkhQrZImapW;KK*du=Y9{0L{t+v89++au5kLhqnEUBF z=u$^fv$2$*h`=h>cNHqb97$%#@?AnE^YOipjc?mpu3Ea(Ln_T033Bf+fADihi8vvz z>H`%Z3hR)QU9}Czva_=X`P21Jx;Ppmn}42NJ&4FEmD&83_7$@1FS;kj6jo}7X}}49 zQ7h%1&bs$^Ioz5w?>qImgHyF0bNH`i?e#O;Ito0D4wkr<@J3mCL_i=~ z+g|5o^L|Dk5JT#xS#w34++pisSl4Pl`xmk|m#tc?7?M!~n_Edy92X zmNnz&0`9^}GQmp~*y% zJR6c2%Ttm4{<<(QOU`T<1Pd6x}d(j9)1Xvdc z@5=9(fB5v{Dl9=~7r&RLi=5p`SZ8Yf(QD20W!^T7Q2p_Z>C%dN+^>J3F(TwoX{(8Q&KG^h>gq*IMO*; z5;0>hRYFG+9-k4UeX$|rDmPx~N?(JZiSqe6P-&Ke?!j%>18G%R8Ag+6(hRBBd!@2e zh{!oWHc|)^Cak{G3S{sW;%%973+NlL_?g4nX2Kj2&6ILNgW8Nai|ub^ z!QTyqT+tTy;ofrDqZmJFm|kxTG`xF9sb-f~q~M7!S^cf2(%=jju82uGP>mc+2v~>c z%&YbBOr3}GE7nLY-?k+_2!Abh-F4%B&~Oi*fx1n$Kc<%rUt#mJEluTKX4!eOo?rV8YcBl4)oVbN5Q+bnJ4TmD+Q=U!Nsh!f;C&1JSr%C`*9Qu&4UacNE-8hy zw;lzS>p({RRo0sAlQR6}Hs{G*_6nID0WmxbzhjrOB_Y-zvne)_zT3%K>sKg# z@EL}sVe+xzw8GO#oN$l4pE~;Md9Q|2O`FAJlg5nO1+tGK^T$ncAVIv`z{Rae2v4aA zNZMmJOg#g`UAo>+<#C?i#`)0{I;3nwTj~eU)%_%8npu*wKcve1eE^QcpQz_foka=4*I+c}*&`;RBwg3>TD2u}q%JM>!I$FeA)9=R zLJ}sJP62R}c@cLq^K{7T>BsiZptTJnf6~hA7tB`a1&IRo#rBCRO=Kzq1L;O)=EU2? z=w)+b#R{wqX$&BJ5L#swgS*YSu|e1S=wmpv09(=~A|?+;0IU&oKK}lww$nF!0w*AL z_EyRgaC?9(t14cVP^}(u6l#fHUhg0ygOcy3FGQdrQ_*N;2(H()vRL=x4-NeRhX)nd zhOCr~IMeY!Fd+G9W&Yz2V@`YnUN^G{$~x~~^-k*Kf_F}anFg+pLIPFZGC?<%@<6Ww zn*+p=H@)Jg9?WD#mkqzALgJ^0)QE{X$=Ypts!B}bJ!s+j3$yhB-BYJ4Ib+qSy7i@& zm~26Cx(6Xq`THmDP2yKx@(oU5AG|zvZirE5d)Ax1NVSmpHvesfi5idGH9dlYGX)(` zoNldnxV>#0X_7W06;c_DRrD}~vTKudCT4fI0#Pgt1F1*x6OK;)Yc|B(ps7sygEEG~ z>ZB#sg|mmpg7zK4$~n&Co8J%sH%wa7u?@>WTth?5u2@Iv!?!PwGL3`5_SNd2cpRC$ zWdGi@3}3Y?T(_Mjf0!Y$hZJFwMtQs+&pUp5NECfQ4l+{ge zeLX>#o~1*|1Alo*YTo%!VY>4XR=2kKX2vJQ(f#Y|5v~*Uw2910S2=55N@m!YVKDuu z5?d$Dv1ehJwO1Q=D`k0RBla8^J6Qa9MYzQt?;I(+jmcvpNi_-(3&y?)itq2#N}qA? zmJdk2xQ3#D3xm0b$Ztd%2tDql%Xj*wIo{54gZ-ed)g|`RGwG&HIKZL{0L?s15Qi9MW!v z*7|pfU}(#uK8Kd@PW}3yCsXNrSw2j${q;XEXTO*RZNha~udo&*%|(5a;4GAJT@Jdt zlN;kN7+~-=9_;xMc+3uA3rT)2?^?M1>lc8k9}ee!PW<}AFOb*Nr0mPAwNscq2GdLm zikr)bQ`)zpIIXQvW!X}&{A9$POU=5RO@#h^ckD30+t1HNlm-HVNg7A{N*UYl8onJM zaG-?xvmzmMLvTdI$*9|5yj5@6ZRDmBi?dtxsFso zJI`n^BAG}T_a#f0po9d1I}m1GY-Wp~N9 zM+vbMm|gYbm5L{2q=-EZ6JF?$18r%I$-M2F4{Z6op-tTv*zG5q_jn|*nGSHeW7tTt z`*{rs;9HL0CdFN@cHM$WxSj0E`xR#8-oIr;oln&1#2ux^xeY^PQJ+jJX()|hFr8Sc zTHb-M~Bsd=mi7=p$N`WXyJnK0?;G~rjedF?bA3E9A7`hipP04lJj%T--+Qfp~G+7vE zvdvt*?Paeo%D0k}td1pT5mKpW+jbJUyY}td$17pp?n4c**AL{GKa}}#5MEdCv&CX- z2pOv5ffy7d~tF{2ze6z(@2b|>V(5|y0Gzv@P0;JHGiF~(0x zNnKYmGVp!NP|?$9z1Cz6@02^rbsW<5V4nFq33 zOTpTD@(Ra}aMl5ynaR-GQwj16LXkG1JDiTSO99eBU6(j9# zAuf{y*xXJ|B@V@>J1^Gbr`(JlrJKZ0{2-cq+mybg>(tI!<7ZrlZ@!JB%)-a^KYk8;U5LTI%jcql@fpL?cm6gy~^02azjaRM;nY1(gYjLn+GA zO8~YtEy@j5AW)8Il@DS-7s!I+zenN%<$ii56Tf->!4iqxWg}`ay%ymYsEJFUQiM6! z0L0zmwgZCnJasf*!x~P%nS8jR&DYNI%+tjHYh#Z3t`DStUNPe6J;{F^Ja5T8M$p>g z61gy6cYKbla%s}iK4_sfNLX!SZ?*FnQBR>ZdmcvKd$gT$@s`mKfYwE-EaK}Ms%Mv-%I z>z<}fupaF{zvIih2lbj9g~w2`#Qgqn<8rb!3SXn__1GXVBL z+zp_+Vm}P%yS&xwVR`wxOJEJD8w{udP}NqU&V?5i8TWLcGJQisS6BnhLv&)&c1cZz z4I46FLOfc0?Hq_6(3}cg_hq5T&-8ng34UJBlDsV{sd^`T*?BNO=#AmSM7XGQ=NW}p z`{%+ka3RGX*T5x{U*fL0Ul}y=^=e6O&0NboJp9GM@89cnZE}KTi8B(vC}Kbw{c@Fq z6}^RL1A?z3c3m6vYZ9{DhJS{*G`-YlxbS_qhE}uuWmZ)*N96B4T=GkQT&xnPH& z0j#kz-v;hcztE{WJDt`L;S07R+x4^zs3agt1mrC{iD_=o} z8|0qm1e$EErlZ=fR*0mViUMsQnePU#>z}>!s3NNou$Zp7w zQ&~B8Utxp^{-cI~vcLPc8UlZF0_fkZ@`7EEUyxjo;%_k!;&l(e?}b14C;28Djx*L> zx8ruko*i%=a=>%_IbDO-=evYlzE*l}Y*Xc|w z$%xv9e(Ty15gOID7Q#E3INx~zqx}x>^C;=u8C2i9S2Bse3{07QIfkY>JcfqvO?ax* z-z;@XV&oN!Hp7Lwa+_7Z_G0s*m4>3dT&pHG4>13?CA47LUVT?XDqWzkVWN& zwv7FWae$qovCFMkE+*bI?t?h8_BJq00@?dHE2EE%Hjl?l1#PYx6rp zp_+P!6y~$<6?fCn!@Dxe%X7aS-$WfB7k`ehBa?h;#4&f3Tc|1iMq^$+)x-6t0No)h z(qam;HPWXrby_PdJcgxKY>4GsfjFwZ`DFC&$1OlfwGoP>t1U=+kuwhL)~|GBjRx(e zJ*j4q@)-yYUXk{HgL0;pi{;@iNz!Hjr{-JcXq4ij>iVWn^%$QdT(z%%z~UIQw_$1X z@Mx*Ofed=|AmZZVKwG&$eWMaw^{1*sl(QPiCEe3o zN>w7R=Tv_Y4}|ckV5d%#H*#AF_jNIA8?VAAQaw@ZmeVRdA5wSvg#UKO0jpw7nj4-% zp53N|c(oh%Q0R=E`Mu>ucaC#re%?)l$x9FE>{Z9)qiZp1U)VhX7y;i^cadXrXLVZ6 zo?|2?ZKD;zdqg$huKty6=E?1_7Z3&t2ywZk?Ea6F5GbV?w|Ohakb~D*ZFss^v9-7J z*o{rb@uji|LLe`}U|3PT-wODm4{)_wB!6P>-zck*{&nV+A_}A+ZMrwY47%DIk1%XM z`%5^%n`r}w4}#(>Jb#qGYiz9Br4y@1JeaHuRz84e6o(!-s;8}lsJm+_+FbmSPJSYo zVji6&U7caEw&eX84#Q6l;T~u8EBg@jdgD*54%lj|4nFzg0)bNw(CFPEpJ* zwoSa;aW>#Y=GvVVYu1Y0P)-Jkf_o^`Os&`GhtU3n)*D^IdS5NRCe(Hoe>s~RS9r4Y z`K{^;f49eH^}FlsBJG2)4p^qI%e_&w;;8UCNSbb|})4E(Ok@e#C&_QgQW zf&18@QZ^CddL`qz?{<-jWZe-=FxX8C#Isuq@j?hwC=#oj+MNTNU)Pdel_wUifyksW zyOzFP;jdSYux-+Zw!YU7e^&p?If>%hO_R0r>><1-pcyuYP>*sOgZA&Lri)dRJwZF0WNn>(?8@rTrDxr#W99$ia?Ovau*{%YJ%*l@n|<=*pNso&`IA)MV>KZQF} z9>f*N+HGd5iezF2Za%|Lh+ymW-$Z;b>CZVG2==e7$4(z_t#b(EcTU;m;BU0RTvj~~ z`@3$wXt8_w`%P-^Gq;29cl_sV=H_}jtS7}bZdA{4kPt1%)js%0`YpTkrg={dp(OkN z6?y`N{lF>|udedh+@MMWbSJR}{pxb-x8z^|n0B$ai;hYdKp>zTM@?ES0C3m?!V=I_ zcN8j+0Lm)?008vFTkdoK>Xz3ABr3#~ihef*XWA(PV5Crxo_ljm-uFPGPYj|)Lx^K8 zQf+By41M=7+>N}m9_DJDm^()_OD=zVgpMf=mUhf45cwNk4{@mI&>7Zsae8&6FoaF` z>}_1T0+(IDk@Jy$0|g8oT5Z-dc^QvE$S;-7U(^{6u}KU8Hdhnl%&O2RW4UW zis2*E(oUzg)ssC(;wz^CA(>KlkkVw--8C>QkiiGH zAU3ax1cmAWuyR!zno;2>CY@(wR9?=Ko16Y@My&|kJ2WqIPldxyf4!H77m7v5q%)~h z00000000000D$s0dH-6T@8%zWEaQaBq{oki+UCIPvx6_=ZeVK3np3XARYqds!)nX! z1FNsSF0UT1z4fj>bocTyn-fb$SaL;x;XB0c?IHTB6#i@9rvf877 literal 0 HcmV?d00001 diff --git a/magic/src/spiral.c b/magic/src/spiral.c index 97aa8c863..b6160834a 100644 --- a/magic/src/spiral.c +++ b/magic/src/spiral.c @@ -3,6 +3,9 @@ Draws a spiral shape centered around the mouse click point. + FIXME: This tool could be altered to draw concentric + circles and squares. -bjk 2024.10.04 + Tux Paint - A simple drawing program for children. Copyright (c) 2024 by Bill Kendrick @@ -47,7 +50,17 @@ const char * spiral_descrs[NUM_TOOLS] = { gettext_noop("Click and drag to create a square spiral."), }; -static Mix_Chunk *spiral_snd; +const char * spiral_sounds[NUM_TOOLS] = { + "spiral-circle.ogg", + "spiral-square.ogg", +}; + +const char * spiral_icons[NUM_TOOLS] = { + "spiral-circle.png", + "spiral-square.png", +}; + +static Mix_Chunk *spiral_snd[NUM_TOOLS]; static int spiral_thickness = 2; Uint32 spiral_color; int spiral_cx, spiral_cy, spiral_has_dragged; @@ -92,6 +105,9 @@ Uint8 spiral_default_size(magic_api * api, int which, int mode); void spiral_set_size(magic_api * api, int which, int mode, SDL_Surface * canvas, SDL_Surface * last, Uint8 size, SDL_Rect * update_rect); +void do_spiral(magic_api * api, int which, SDL_Surface * canvas, + SDL_Surface * last, int x, int y, SDL_Rect * update_rect, + int final); Uint32 spiral_api_version(void) { @@ -101,9 +117,13 @@ Uint32 spiral_api_version(void) int spiral_init(magic_api * api, Uint8 disabled_features ATTRIBUTE_UNUSED, Uint8 complexity_level ATTRIBUTE_UNUSED) { char fname[1024]; + int i; - snprintf(fname, sizeof(fname), "%ssounds/magic/xor.ogg", api->data_directory); - spiral_snd = Mix_LoadWAV(fname); + for (i = 0; i < NUM_TOOLS; i++) + { + snprintf(fname, sizeof(fname), "%ssounds/magic/%s", api->data_directory, spiral_sounds[i]); + spiral_snd[i] = Mix_LoadWAV(fname); + } return (1); } @@ -113,11 +133,11 @@ int spiral_get_tool_count(magic_api * api ATTRIBUTE_UNUSED) return (NUM_TOOLS); } -SDL_Surface *spiral_get_icon(magic_api * api, int which ATTRIBUTE_UNUSED) +SDL_Surface *spiral_get_icon(magic_api * api, int which) { char fname[1024]; - snprintf(fname, sizeof(fname), "%simages/magic/xor.png", api->data_directory); + snprintf(fname, sizeof(fname), "%simages/magic/%s", api->data_directory, spiral_icons[which]); return (IMG_Load(fname)); } @@ -129,15 +149,15 @@ char *spiral_get_name(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUS int spiral_get_group(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED) { - return MAGIC_TYPE_COLOR_FILTERS; + return MAGIC_TYPE_PAINTING; } -int spiral_get_order(int which ATTRIBUTE_UNUSED) +int spiral_get_order(int which) { - return 800; + return 1310 + which; } -char *spiral_get_description(magic_api * api ATTRIBUTE_UNUSED, int which, int mode) +char *spiral_get_description(magic_api * api ATTRIBUTE_UNUSED, int which, int mode ATTRIBUTE_UNUSED) { return (strdup(gettext(spiral_descrs[which]))); } @@ -175,7 +195,8 @@ void do_spiral(magic_api * api, int which, SDL_Surface * canvas, SDL_Surface * last, int x, int y, SDL_Rect * update_rect, int final) { - float radius, i, xx, yy, xsgn, ysgn, ox, oy, stp, oxx, oyy; + float radius = 0, i, xx, yy, xsgn, ysgn, stp, oxx, oyy; + int vol; SDL_BlitSurface(last, NULL, canvas, NULL); @@ -222,7 +243,7 @@ void do_spiral(magic_api * api, int which, SDL_Surface * canvas, } else if (which == TOOL_SPIRAL_SQUARE) { - int dir, oi, ooi, ix, iy; + int dir, oi, ooi; radius = max(abs(x - spiral_cx), abs(y - spiral_cy)); @@ -265,22 +286,29 @@ void do_spiral(magic_api * api, int which, SDL_Surface * canvas, update_rect->w = canvas->w; update_rect->h = canvas->h; - api->playsound(spiral_snd, (x * 255) / canvas->w, 255); + vol = (radius * 255) / max(canvas->w, canvas->h); + if (vol > 255) + vol = 255; + else if (vol < 32) + vol = 32; + + api->playsound(spiral_snd[which], (spiral_cx * 255) / canvas->w, vol); } void spiral_drag(magic_api * api, int which, SDL_Surface * canvas, - SDL_Surface * last, int ox, int oy, int x, int y, SDL_Rect * update_rect) + SDL_Surface * last, int ox ATTRIBUTE_UNUSED, int oy ATTRIBUTE_UNUSED, int x, int y, SDL_Rect * update_rect) { spiral_has_dragged = 1; do_spiral(api, which, canvas, last, x, y, update_rect, 0); } -void spiral_click(magic_api * api, int which, int mode, +void spiral_click(magic_api * api, int which, int mode ATTRIBUTE_UNUSED, SDL_Surface * canvas, SDL_Surface * last, int x, int y, SDL_Rect * update_rect) { spiral_cx = x; spiral_cy = y; + api->stopsound(); spiral_drag(api, which, canvas, last, x, y, x + (spiral_thickness * MIN_RADIUS), y, update_rect); spiral_has_dragged = 0; @@ -302,8 +330,11 @@ void spiral_release(magic_api * api, int which, void spiral_shutdown(magic_api * api ATTRIBUTE_UNUSED) { - if (spiral_snd != NULL) - Mix_FreeChunk(spiral_snd); + int i; + + for (i = 0; i < NUM_TOOLS; i++) + if (spiral_snd[i] != NULL) + Mix_FreeChunk(spiral_snd[i]); } void spiral_set_color(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, SDL_Surface * canvas, @@ -333,7 +364,7 @@ int spiral_modes(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED) } -Uint8 spiral_accepted_sizes(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode) +Uint8 spiral_accepted_sizes(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED) { return 8; }