From 639cb07fcff30aec918399a525f359fd8e97c94a Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sat, 9 Apr 2016 23:38:58 +0200 Subject: [PATCH 01/15] Make notes more customisable Split notes graphics into note and fill Changed notes, notes fill and notes bg to be the same size. Distorting/stretching graphics no longer needed. Adjusted the _DrawNote* functions and made additions for the separated fill --- Output/Themes/Ambient/Screens/ScreenSing.xml | 5 +- Output/Themes/Ambient/Skin Blue.xml | 3 + Output/Themes/Ambient/Skin Green.xml | 3 + Output/Themes/Ambient/Skin Red.xml | 3 + Output/Themes/Ambient/Skin Yellow.xml | 3 + Output/Themes/Ambient/notes_bg_left.png | Bin 1772 -> 2538 bytes Output/Themes/Ambient/notes_bg_mid.png | Bin 1366 -> 2117 bytes Output/Themes/Ambient/notes_bg_right.png | Bin 1787 -> 2520 bytes Output/Themes/Ambient/notes_fill_left.png | Bin 0 -> 3342 bytes Output/Themes/Ambient/notes_fill_mid.png | Bin 0 -> 1682 bytes Output/Themes/Ambient/notes_fill_right.png | Bin 0 -> 3400 bytes Output/Themes/Ambient/notes_left.png | Bin 4565 -> 3328 bytes Output/Themes/Ambient/notes_mid.png | Bin 3468 -> 1683 bytes Output/Themes/Ambient/notes_right.png | Bin 4650 -> 3382 bytes .../Themes/Changelog/Changelog_ScreenSing.txt | 10 ++++ VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 55 +++++++++--------- 16 files changed, 55 insertions(+), 27 deletions(-) create mode 100644 Output/Themes/Ambient/notes_fill_left.png create mode 100644 Output/Themes/Ambient/notes_fill_mid.png create mode 100644 Output/Themes/Ambient/notes_fill_right.png diff --git a/Output/Themes/Ambient/Screens/ScreenSing.xml b/Output/Themes/Ambient/Screens/ScreenSing.xml index ed9bcb15..da4ab31f 100644 --- a/Output/Themes/Ambient/Screens/ScreenSing.xml +++ b/Output/Themes/Ambient/Screens/ScreenSing.xml @@ -2,7 +2,7 @@ ScreenSing - 7 + 8 @@ -1696,6 +1696,9 @@ NoteLeft NoteMiddle NoteRight + NoteFillLeft + NoteFillMiddle + NoteFillRight NoteBackgroundLeft NoteBackgroundMiddle NoteBackgroundRight diff --git a/Output/Themes/Ambient/Skin Blue.xml b/Output/Themes/Ambient/Skin Blue.xml index b1ab5aa9..da83f302 100644 --- a/Output/Themes/Ambient/Skin Blue.xml +++ b/Output/Themes/Ambient/Skin Blue.xml @@ -219,6 +219,9 @@ notes_left.png notes_mid.png notes_right.png + notes_fill_left.png + notes_fill_mid.png + notes_fill_right.png notes_bg_left.png notes_bg_mid.png notes_bg_right.png diff --git a/Output/Themes/Ambient/Skin Green.xml b/Output/Themes/Ambient/Skin Green.xml index 3b6e3ba8..374d3a3f 100644 --- a/Output/Themes/Ambient/Skin Green.xml +++ b/Output/Themes/Ambient/Skin Green.xml @@ -213,6 +213,9 @@ notes_left.png notes_mid.png notes_right.png + notes_fill_left.png + notes_fill_mid.png + notes_fill_right.png notes_bg_left.png notes_bg_mid.png notes_bg_right.png diff --git a/Output/Themes/Ambient/Skin Red.xml b/Output/Themes/Ambient/Skin Red.xml index 0f65931e..fffebc22 100644 --- a/Output/Themes/Ambient/Skin Red.xml +++ b/Output/Themes/Ambient/Skin Red.xml @@ -213,6 +213,9 @@ notes_left.png notes_mid.png notes_right.png + notes_fill_left.png + notes_fill_mid.png + notes_fill_right.png notes_bg_left.png notes_bg_mid.png notes_bg_right.png diff --git a/Output/Themes/Ambient/Skin Yellow.xml b/Output/Themes/Ambient/Skin Yellow.xml index 48c2176b..da3d047f 100644 --- a/Output/Themes/Ambient/Skin Yellow.xml +++ b/Output/Themes/Ambient/Skin Yellow.xml @@ -213,6 +213,9 @@ notes_left.png notes_mid.png notes_right.png + notes_fill_left.png + notes_fill_mid.png + notes_fill_right.png notes_bg_left.png notes_bg_mid.png notes_bg_right.png diff --git a/Output/Themes/Ambient/notes_bg_left.png b/Output/Themes/Ambient/notes_bg_left.png index 14dee215fb89f613a20c414e2c7ee77be9a8ea3d..3a8e040fbecc1287401842b38b61bd0feeb37eca 100644 GIT binary patch literal 2538 zcmaJ@YgAKL7CtwLAyE`$tW|39POO3oxk(fVX@UU)2pB-fs&vFcgiA;vxiPsw2nc~u ztXip~f{IRrQ5RB2G9wEVMR}>HpmDH*T7>xEA@~60CEz$W`0DD6bN-yY&;Gt|@3YVT zakhpA`%j;0KNSElJz%9MjM()6K!8Rith84d#l$uj_l>~Au{bX! z<*@?B8dot(tnxwQBhB+*@E5h9&qgePFcwJOf5s$9v&VDi-T}DE(F3wld8m} zS{J2e!FvS}s)eu~>>`@gzqq<^?Dm+S4ubzRQ&6}{(*u$UwTs>I)OV?S~^pX6G`L7^fti%_*Z8IAQ*V+wfk z+C2FuYw_^=q~1Gj?5AsCeUgh1#UPf){mo;)KO!c`VtyE1!uc@#sFIj?H8I-d@OEDS zsDBC&c}cW)pWIu!eW~xPivy+g>4BfknqS4IWjk5geo&+>!4jI>__#FY8pYdjegL)6spbI3sL5S$F){MZ9f4> z7e}kiC?H&2|4rxzn+y)fo^P!;Tan?>T0qNSy>%PGo~inO{VsrzLze)*%>ROX1i!UD z;@(=-*1{4n=QRf$B}EVZ7V^6Q1#F`T$M!-_pMk?sR2YQ*q5R)Xh1e#c#b$slgHgc_ zA+IBY&*$tv)Yz1ev-LUIloHi(((3jLf8)kd=Lu!wm8}C3QWL45r##$fHOVqM796O| zk(G?QKNrZFeY49Q8p`ua!GGUJa+Srp4z&&q_8p9@;X}_BA4!`f?sb4}Z1 za~lTQv)eGg(Kycq#4}>M+ z=#u4MooczPIUqZ39co{Nge=tS7DGqqUx82&ec#=#^!9%$?>*orHT|;Lj=$89Hi1N6 zQ+KtvTrY3!k9=H0>4B0>;M8r~)#KeXQ=S3Yk&VEA)h>bJptE`U4LLVnDu>dCSrVT4 zWp}EwzfH4H)%SFDKc_pVheyKIuHDn_vad$=?_@DFF zV%B$>tM+_R?H(eAE8z>4k^_Yg9|tHZ%PQPUn3Nj zV^5GRlpEDr!h%YPxq}$@J4B@kNDpLYt{Ivf#{QIu{{7 z^iDl?Z+>+P{ZP9@p3EQo{VDzGr3Q@=;g9!1o_U*Gv%*u(oNgGuo+?Tk4kIyN2`?rD z&oJe3Y8>r0Jadj#y8UCg-Y%bazo=Pi!~ZpM=JMjG9Su#3b^_Hc``YG&Qu!GMKWzzQ z^*U}4<1(0KUDM#bfZU`= zKBmZY$a%G6X3!Uofq#=31vRTP=N#67sRySV>i-*%UIhc=C|JeG(!R&LtnbLmz$OWBe7@gaTJ^Y4Rxc2A|R!yMz+vuR~G=qIN z?@18zR7Ql!e~P&<^T&>ZN&4>!mI#FYW5UtpSukswws_tu#m;?aUv@R;Y&&}5R_A{H z{7O3iR`n%yGF2PpRMrA@4Sut7*)jl`GtW65;Q-nmVA}%;3+WW%{{&9ztpRBvpjduW zLI7;RJ5zO|Y@Mz8MEg~6@ zYnTpfXOIXV2)Q&svx2~V7{K$WU{gKNtL6|vGN>yW4bem3{GTg4?}q&4y5;v3;2SI| I^^VT|54XwdI{*Lx literal 1772 zcmYk7X;_n27RS$<0AZPgtpbH;Gci0UpePfIQNRFEHUY(`rCLQrLpg}+s!X~l_K}iZD^P=rD^Wi?{{LcUU@4X-HbFSz> zpf}Ob+7JMUzCNsAETRAi=<8vbK$}*D1%wyu?Fn^{$def8o%Z);VG-c&w^!Dk#-c%- zPY4gd$b4-fASt!NiUhuIz+S?DKAA|^k$;P}9xJWqus`8@#hyDC5yQt2z$+o*6h9)I zlE~plQ@nix4uo%wAYdnW`LaCNN&Pc}g8C7<$%A3dzfOMmIa7Zg5t~qE6D?ZCUv<{8 z4~y0>nKfUDy7pU4P{V z;v@(Ua)koB4bWz8jE;&3%!O7wa{&=E=E0{d34Gka850YP(djk`yU>h>qInF&E776s-smue5?s+G(Ke*$xFK^IfV?yw!g|oU*nb?IS3NwV>=o9~(m( z0Uez}bO_siM<`l9bO`qC0oq9e6SC~Z1Z2MV*fQhbsuZtJ3SH#EFGx-rY0caD&c%3V zA-wO$fu}*}D*2Cg5Kh}tsP08L5(Ov<V)~GKW%vlJulPzuV(ZgnpJS~zSg~*XPhkO#<(%6 z>4oU%b_KHGQ;uFoTv@QX%b08`wdO@4)OdqUyK5cn178pS9RKEN|GY;-E#qY~ns8rT z%YD|%mveR)Pa#y*-@d3Jn1}?ZijQaRx5%d1Qr#23dkvWVMZDxrvCG`W$sM)hIiv#{ zV4Xa7DHyj1*?H4H&fj9^4Sbu_S?DYw%CkFhRF%<44qm?jEomNTAK~U_jl0WldbHiG zT)CY0kX{JeoAFQm(rb(=8@<9FIArvel}0c<%TB1vyJbR6L7PN(apy1E)VQ&Kk7SO& zUD`zq)F|i2z8HzVaJ%;`2rWx>^+EW3Kq!Y!OOz&cO?Q*WAVRjRVB=aHZJE(HU0_`@ zyMCiX`(xP5XR6y5I{I_X=r$7X6wB)q36XPV6H0FMY!7?w^1Eej7ObCI$mNZP)bveS zGiOnyS*S(aCk8^Ir&IH9?S1zZFHk3GRbTnV(L&j?nS<@?=6ZQN+W=c;2QbSSfxIH8 zELymD{2(mWovN8B2-)>KD{?Py@t(MByyB_$4(AN+?>3$tI34)hY+F*YqUmYhr#44F zP77=(XQ8U zv1`DPbFFcI_hw5;sw5d~nP2Nk3~>OJ8TqA#X*298grzY1<}Y#Bd_d4I6AmeBM>mlOy!F`QVGZM`}>lbkjFyE-*&U>tY!UdX(f#@7B(aofD3s+>fs>72Edg z8m@SJ%872*WNm4B*D9Y;!bH%LI@6vLJpb-OPu_P<;Z)VpFy|=qCz%N|N2Oca-`-i` z$`6MtOJ^PWgc|v+9=uRgQnT^+P-68kP;2mU2q}&_`z_nByk9WVFa{DPEncB`r$^YNbci92bsIn4a_8wHG<@;7)1l za+7TL=Kb!MnAnpgE%f6=wO3rYM)qg?YuX(+Ev)sq!t~s+(cBO8`3is5id_XmfDNo$ z089WA03Cpg5Nu!_2cQ7x1K`&Fmj6q!ws+O=Y=E}E0yDt`#AF=M*3bh(eGGMgMnL|j t{()=iS~G^(n0g9BD-888#6erR<|9GUs|$mJkJkPj@ZB58s`CuZ{4ZFe`kVj& diff --git a/Output/Themes/Ambient/notes_bg_mid.png b/Output/Themes/Ambient/notes_bg_mid.png index 4161d17ba5ac8aa06951057988489b0067d2aad9..0424007929706c8cb25578f7baa031f790b23346 100644 GIT binary patch literal 2117 zcmb_deM}Q)7=K%-N{LE>=*IjwTPF}~uPyZJq~dxe6_WLYxrkGuDM^E|)j z`Td^X-EGUu&6>uHV*&uC$0MOu)2BuDikCm>^t?=LEVKxA%>0YPFT#A!O5ngO_$XEj> z+gXUsB4ZhZTAtRaz)Nh|6)s#~k(+O>C^bthtn@S_)r&y@J5HJquf5FS#=J6C2p5BE z>KJ7qp%AiE#u{nLsLewZgbPQ6ToK32=kpPm`mBg?u3<a=`4czw6DP~lk znHQ5$c&fLw=Jepo8KMsg=U&3Q>Vk6{IFj5N`OYET4+%?KG!1(MM?q~p9bBQLGtx$G zF_dgcU^N{GVlx7s-C2c(b6?vOFnoSj*_8H9-Hv0^4QcfPyz2xV^72+PfChA|iaIzs zeR*ypV(F^$t+iG@iju*Q>j~~v;Qqeo{=3WMhi>mq)Zc3EZe9Cx>@&_@xbD-;rY+zv znA_h+LO`iJz2gZPO=x$i?_6Pi2v-YOMKGOupDHU zNok7-(ebiRF7`}$epvflt$5lQ%sN1!Z|-hQ7M&8bC>^T&Nln{fF4`SPK^ESMgDyeX zNuYj|^*G`F72ra_cH`2a88Me3vpRi{|>v?vlx%5rzBsYaUyJk_+{ueoq zg3HI|&wIHsFuVj}N*A~Z#;=u}$MID>%1DiO<3?=IT*Lq)vSeIsci+7;z4_(uud+OB z&Ji;uWIOvCd*i~2jgS2E-{0D(ht`OJPFl?X0s$@T<-ZM7ybrWiZSe+%?+miV@f5c+ z-Lr<&1wreD5IJ9FODVV!*KxL{pzYd-QxEJ1YaW`R%NlEK4Cu$&U6JsOuJtjt7JT$z z$=QJos{)dc`GfV~kO4W+i=U_)6f)pZ?)ejRXePfu;x#wD)o;SX=+W;&^~_-=4{QkR VTqwix?!o^$$Wi4gzml*1_%Hacs4D;f literal 1366 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G!U;i$lZxy-8q?;Kn`1yx4R3F zW?euu zpPQSSR|4cRFgO>bCYGe8D3oWGWGJ|M`Ua%vrLr?Hu&niTaSW-r_4e-Ryu}UztQX#` zsIT0&Ki&A6!j%V1$ySTb-F)J@qf5cI3>ngHtq( z^OuP-tYL6)o5#u^4D{K*)vLEh$Lr_!Mc3ID_4v#*%0H9SI63BP_f$^)Wk7Cu-)1I< zr1hK&^zXehb&IcA%RYP6`o5P&si*$P&eXN=>v1~&C-AU_H&E?lqqPhZW-u{a2L)FI zBZL6i!Jy5Mz{FrA>hL9hlKcJe(>pVrfy(1g<*3&m2s*c(uiS11(7Y{7z!3jY!OGyn za3Gj_0h@ie-W-LLQ&TF7)2x5=$^qRXKV_$0!&hI9?_bOnFBYGiqFEf2cH81b-|uOs zf$XAX-3=3FEN4_S6b44t0WO9aP%pJJ>p`YFrQMd4?(5N<7%h19zzU_{WoM*~ zZFxC5cd`Lpec}WcQn*7cZ+I?tVE1&TYeN5zw|qTNnR;r9rDE|GrkIcO-QADZ{<2D+ zX_Oi_CzBNzIujm~Q*?F7c%=kk=g zYNizj&x2Bo6Eyj&0e$1}OjMzYb<=y9{oiXZJ_flt`B^qoM_gk~`SgoHkFJXVg)A*E za{;rHf--WVqDol+&BR;>oPoZCmNXx7>KPAl^(!rC>$n0e&=@>j{an^LB{Ts5I!nLc diff --git a/Output/Themes/Ambient/notes_bg_right.png b/Output/Themes/Ambient/notes_bg_right.png index fd3fb69acf93e3b74c869cccaa2db477c37b8851..1ef6a69fb00b0283d33543ffbdb9777dbba39ffd 100644 GIT binary patch literal 2520 zcmaJ@X;@Qd7Cs3GM5rKATEx_A5Q;uR7L1S(AV63(6afXt1tPhGh*?O2tOG%(?N}{t zAWCI%aKi-{aNV}* zO6O9zQcpBm=$j-%gOdV6B9mew8GMqPE5b@(Vge#m!9x;6yTx*5f(vO@mxRSp)#oyCXIs3 zJtQoej331e;&{)+!gemCXoW(`B$MOg?JY*naW@=$P^lxMzg~ZcJf5Af|padQ+)h zbaw{L!^7Rn$zz=peXWxhXP(QEM8=6wv0|Rf|C8(RQLc6zL{cm=2bBr;pnPwcM1;&9 zn<@NwE|ibz&2jl3&xQI?E*VRPtZnWG&7OB*6QniYk1n=(Km4c|n|K*E+U6PVO9AwJ z{W$I+36F-l(+<4gnEmv!xjnQ;lcT11#1g;&0?h$4*z2@*!OA%U@Y;(Y#}n$Yn?TF>fc(xx zpdPP%)$R$(XC{C!bb+$4pm_^G!wO)_FfIN0ozj$jvK-*3CxEq*Ccr^GWHJnADS>!f zxj86}W&wO?JhcE2oxr{|*tPQklC3u@MFX6&{rEf`a}I%-8#gWWIL-h%s&tJ)Z&{^< z&s4p7Sg9HPeWbUgu^R1D#ssuh-sw}-j8DJF0@}j*$?*e5Y$#A!M}$Rh=*!6}njzN= zpA;0*q=aQ%R$mH=mh@Tl7Mrr)@|8YCmX?QqxIJ!SQE=OjQQlwT5A+y(w(qTgeNXSd zxU*l>hdaF?w}*w<$aT`3ymp6PSu`WdaHHMkEdfVE+I+=mW|wHY8c~} z$GfmIIXFsNx~`l0#GG*<^CfxnEXJcu`d%rae$ee90->+88qPWPG*vM#yAFV`!sY)Nc+s2WYFf1f{N z;$9ClUr9>rE?9FV^+v}OC-l*?*UuJ^b}bSYANzhf?dMMQm!vYLd*1fst2C=H`UyOXN&ongM#cu)7e~_)F(=%pYH|byYlQzosq4>$6?YSFNL$ z3pCsauGQ73|1__-(f>9N?&{iP6IQ72_xpUYAaIO_7AT@dfUtOD@D#o4N zkk>s4M=~7C#x{xWoN5?%u*TYabTF8U;HoQTKDUl&`Ny}hQI?SfhONJJ{$?8y77Itd z&QMM7xonkK6^tJn?B2L%0(~0awAsHxCMc<8o7DaGz*e~^8+VS`om{?cSI?>=s~!l( zQj$3^9CveT*QZOiTfZ>M%RhBPzu=g^aq0Ixz#cU=tnSJxPImOlJUzVr@bN18i~788 zmoMNfx;SY*M(@puMNhkBax{bc6v5W`?5sW;7225il(gAVL!=&8qE6z;Ef?&f7XLT qM!`e@229W;!rnzt<61Ut9sx(vc901->VCz3wZP9SfK%)dvG;%WJJOT@ literal 1787 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 SUKrVUp*RvA6&Ofu= zCGDVC6(I4#Dg@ewChZj=RE?Ky(jHpD!$2TF>;VLm+6Q0~<4;2{CRLPUH^~N~JncT% z=iYnHcfRwTb6*`DInWW<5deUW{7|L{K%q%NYYYAkn{Q9z?-4s&vJdK$c11J^q-1@9 z(0NsyB1Iy~v&TOo{Qylp%2>%R6@~>#S3{!f6RN5PMg#N@R1Hy@CN@1mrW7r~{BmWP zp%pp79EudUf{`X=WoXVM2j@n{q`7G+E;9rB>HeyK04lLXx~d-2ETNiUJX`^7_n2j9 z&&8fjFq@=Gg;6@Kn}m*p_Vr3U&(qO(h>yhj!jY%xFvmw&F3$2?FUJc!Cxkh=wiwK2 z%9BDdldI*zU4kjwwjr==rBVr1`a-%n#q#lZoaMr7INXaKz1FN|i`8Du>aHVXh$Wed zVJo^uyNKe1K4T{sWV%^`YBXRqt0of)##TjxO|#j=@nG@Q#ub3C7oq~hVh!BjRjxGxsji&yp7j4sWnM6>I$ z^4-|JEo0qrPz}tSA*OPI$T?G2X|HTS*_sQtC0;F7-kJ-)Wh{$iShucmx`T~h<6 z4LAxCdz^P}J-FhB%M|#aL^+=Zoo@OJK=fa9{d0B69NryiE7JGv%b z`1#at{TsXIA8^ifZrom7^;K}QAMLaUQ%`Mw=48mGVO_}CeVMzT%n{x>kKfdicx!NR$U?=t1X;1Ya zEJj@7ZfZ}ry0P-t^T94Ga(Nr{08*+=%Uh=3AKdJy5BA<@$a)384URAT4SDOTyZ`_I literal 0 HcmV?d00001 diff --git a/Output/Themes/Ambient/notes_fill_right.png b/Output/Themes/Ambient/notes_fill_right.png new file mode 100644 index 0000000000000000000000000000000000000000..5ebcb958bf785df195935c449c6eb8aefcfc6b93 GIT binary patch literal 3400 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 literal 0 HcmV?d00001 diff --git a/Output/Themes/Ambient/notes_left.png b/Output/Themes/Ambient/notes_left.png index 310c7e87687cfdd06925ec14bd17a4ac44719201..ce74a2d1ba43377c0ad3f355aac5b296cb6955d7 100644 GIT binary patch literal 3328 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 Cezh|I literal 3468 zcma)9c{tQ-8-52_#+qH?5ZS`mWoO2|FQXYzwiqQ@ar2>zd#DT+jPF_j}*>^ZxOh1ZztpX6O+p0D#%VSl<=^ z2qlC7dRofj6j1C*Ss46`9WDdF$Z_z4fb6@x06?wIBM{csUcQ08m%V)bgiH_!A-@1$ z&+`{O00*$ ze|ug$by5=cCYOyg(+%hl-Hh=4q^Jk+H#)W_!yb4K)Njsp?L8gTo-bd+)pXMl>6y}v z6>XHUOeJu^!|$WoT3RP(WOXBtNY0WO{HZqvY82Dpe{o9hEu z+*Vc?1UTLi=7Qv<03i;Kczxid0m{2i-7o-XIl$>@)}jW6WPqFr%F`HB)dC`kjj13+F17e(#bZZL_Zl0;HT!m~KbEWV`OKj!8(y*Jxk z=BEq5WMD+ko;0lH2v&m@>$7+N_zI2JS;o9yHxoUpS#_U+yoC|en%{vp2Kl!L!^5*P zGef2=a7Wh;RQMjI$(e}Sz4#?Ub7yno{fjBlNQE4RCXESj&bRcnR6M)q^-^O%CcuQ&2a6KRh&9vW?A+;LHfhKsf|!P(%@bJ(K+E|TTf;S#Z3RRU5juy?uw zN<zV$-arc38w;#z1yHHQIT=1r(P#$>*LPy;jpXk{R@-R3V|t1p6ssPI zHoVXH_FSNRb~1Nf&f9<|N3?FL%$?=%}dD;SmN^2I^>= zCh=pb#b!^$o*(|w!t16WABQ%U78zhq=76z<#Uol&McES&3gU!YR3?ufB750;4SO%y ziY!Q%*5lMYLa?ZP&PVJ7g(24e#8Qe_sjN%OcjPR->6z8Vv|8UE0O2W3|f+^oD z+pN+otw*MUp8bPt+p*$&P1k21{*`T7$1+K_Up z@=KZXS*%&U_Gl@*)K#vO4rrQbnphgY6bxBXT39+>%4ol4--%2vIcpbQX=tx#H(kQ; zF1^gY6lc9;$8U!z(I}29#T5G@bsk1I>?Y7UG@CbDAs*V~J$9b1Zxv#6=c@^p7WQT? zi~TiHxkc=8*YMRVQgxZT0(FU6r6u`l2t`vxRE_Q09Zwy)=}iBvyMdMr^AbfFYY{ib zIX_BHN%9venG@taoV-iZGt$vz#$`5TMoSGUmCHrA!UlsnhwVrfy*5*ECvhW8GU*U* z-fq}#tO#1fZK0*UQ7K#MUBI7Tryun4Qqf9g?u)b7Tyx)|@sNi3uSdgSyU1OiuSFY1 zOlaB~CQ({46Ny*zm9oFDrU0ys{K*D!rdbzJ;F{)|F&Ujg=+S)8Z}^)b>&^46PSc{( zKCM2j55#E2gvHD(7A;n?Z7m3el7$-P8s=?XZ@TVx4P+_jXvq&M%;(JK4CYMKx||L^ zEsZb6Kl3oDo;h9Uu!66@6mwe5p#W`v`b>>s1+L=wKwU*$(cvP3WvXRa?f|B_>J$Do zzND6~YIca0T#5I=hr43jcrdlEDw|hQ8&bochyS*#MaLXB%u*(BS|H-`lK@WjQ|jZ{ zq`NCR;jh-y7ho84H(U3R;xwM4Q?lhe&Mv3V2*ZORT#j0cPfReo-YJ`*Et|vNI@aDW zV;Z>Oe`YeYcLSGGlhd?ZOn$VYvT}YUZuH(8rF)XO4vLrGHn$_*+syXpFy2d(^PVV= zutHcxVxG>6z}#UesEWa=+Jd0cP1lb++Ml%p?oDe?YpRYbj5|2LQ6<*4*LGSp`{p{w zOdzg_?4R2Y-R}WK*y9ikbwZ?Gq$Ab#R_ImXmq|M6WRK6)!^?U%^9Xueddb%-uFp1B z2z#~veyc)wb3T)lLORb9V;%8f;4Pi&oNHop1e177Tns8!C&@1!eWXV|Lpi8t6mfY% z|Eqqw{&)^X-b(F}jH$AecB$+I%@Nh-O3!s#Wj!6<^rLZTlZ$3Y)nuhARW4n8F|o6} z7B_{PVw?`+$%M6^@e9c(HLb@KahJ%lORJ~rn#Wt7yz_@1n^ZCP&Eu;aLC2GzAx#2J zm}9UWm7e$^gp-t@<*KoiMd zjqyNvzU)fqP)je%J<+xNrlx~@OZD!@d;81mP3)7m@ddGFC>a6tTtoQ(GhVQ?%up&u-wQeEO}*mQfj%5e;IY7T%F(8#}HyK81KMG1^0CW5Sn42ba%Sp5^hv-l6f+?t_?|y2G8=x`F6a_8ol$Rq^yN-uG_QMb75{=CfAWAy)P9iBnIOH$EGXVHsT#MbO27A$9qTuDwO_v=+e7Rv`aSzSwoSHcHgzf!N*A`$w|&l3So-)cw^8>} z@6w5|;0Fos`UQHmkhaMKCzgy@+J1Slhx-^L!>qz=|J&WxDG@*YkeP)|hKWrH2=TB7hNqU4Un=W*g?%Wp6vWIX<^~qun#GI3BuVME-^Ku9Buhi0K;g_4$#7 z>wT%1)$W_PG+cOu?3Ym&@_l^RygO;)0;})G=WKzKy$1V<^BVOUB&XG9fveTzSq{`Q zRQ4lvXP?EuMa{j`KC8C6yLH)>1SfC8N@&B=Fwe~e{#;ek*m^_AC+_`${#-S!v4*u! z-_2K>8x!1P5dq@6q|UnGAn}!odaHWpb=_sXVZ>NmzmDVH=+MW}YZr(?d22nRMw_%T zQQdnf8_BGQL&;gmow3ZZOSvbt)zqeR0(KX6iV)rBy2WyN_U`X>R`PJeBDVUM21z}c zJ^2}{8L2OQt`_Vr5|{WMkz1Qu1z)@lR+K-xerkKUF=#YM;Nyb{R;!t-Lf0hry}mr& zuzOpyoywP*x=%x$xwhl3C_|=vZwk2^+gbn+dK>_36aZiLDeD3Nzsdoy=mLOxCICFX zx1C=Z0zg%3qOXSx9{GK^kvUq9jYdzGq~rWD9VYp#1UmVUetk>#Iy|59^c28Dt6PmcW9{9)IDz;8zV zu!jk}rvXWyce@`o)H>5ptl&5>_JET0%>SY!2XwLj;0ON!fge6V1R;6{gQ4K6ey9BZ zMwC&0V-ErKKTrJ6kx{50$~&;0Oc_;u+*=FyIlVlzW$u0 diff --git a/Output/Themes/Ambient/notes_right.png b/Output/Themes/Ambient/notes_right.png index 681b4aa4851be264a1bcbe8ac7e8a6dd9042b227..290018e256dae69bb75980158920465dc9af9b12 100644 GIT binary patch literal 3382 zcmb_fc|4SB8-CuI$=GR?gh`F4%%-u7ea%#(X(+VVW(I>X)66i|46>v;_7)P^T9inO zD8?!IT26^lN^(T0NHi&pNr${F#BQFe|;0h9*4}i(#ebL8Ra) zTnAj-%^7+&)+ozJl8k`O6!@Vc*`Z;4QlypMH(ru#KWoP7p}x5Y zLag-u66Hyuq8vCpCW?qLF{0z~c$BF*22V6ICJ@)42sk_ui!;aKaYi^i36CQYaH#K( zo-7)V5kR6jI)9HPJ6Y)k2?Sgc7Aq7AF+yVuhZl&&o12?saRe-ZU?lS};zxxE{34CQ z_{)DVI5PQk9*Zkral%lujDG%{aDkPcOzB@Ku(>~J!}#CJBr6y;(vOS9V{o%6{cxmE z{<|xi{nMK-pfUf}`;WwY_b4tCOJnjm;XJymaRJL`LvcwCJf@$3!*l0wLVr||8pIKB z_(2>l%E94V)ldc=tS|;g$T$3kp-@QVFuuSqjLsxGTItDHFf0~>WbbTlN;ENdbapaz z#^arccIE_odpjpHdlNI_S~DldA6Q2YJ)F%96a2t3{>D1}5<5E%Y_2S_Ba_F9U^1L} z95(7(+9cLLYatk$*%5xp_Z`dlwHAk8VzDwY*xBa(N3(yJWD_*I{W-d_!_VPohRG(L zCmZd9k4>uqP^cg~+POzQ9V+w++QD4V+H_YwN2Ca%WRggsOVDNnXN|CLC3l(!H zT1`H#OFt>2jq~*?HQ+I?!Hdifs%awoOjvVc4Yip}^RNqn2wC!x&)?JnhFUx7$ z9(+!E!#RE4H>~Z!gSo0YmY!d|-cm!|uby0d10uWvWUozBA0ORCM%xxFTH~qSbcw3P z--BGZ(s(?Wu_UO|iaB1AWfMO=NsISY@t1JZ2R5JCd`4;Dk#jB@=|W0?Oakv6rEz>w zD~?fl<$cRqj->0;@D8dt?Tr03Go@FqTQ7+>o!o6Ts{`|#=EclA>>^_wi?K1RoN^cNh>%i zy~<{eukKrBdk!AyGLEPXyssKz%gWX14{jMQTRH3Mc4IKjKX$Ts%%h5S!C<%Yz)MAg zKPbKzE84QHh3~uD=ZzWEQ+GA>S<>?G$g~Z14h{~t6owYmKCmwB>!EsEdvCf;=mWc+ zvzpRyaPp$PjBh-boDLo&6mmAeat-oA!<*h>8dw~&2Bdj zr28A_x-3DJ8zRNl8R+Mz>W_-8hJ08<%BTe`A3~Qc^E+D|vh%q_eVccpmuzK0cD?c(#wp35T_@V{(u zm~eEA0ERGyQ&RH)#B{t4|YI9*M?WoE&db_j3&4rRVTDyn5lb* zs|KXIKoNK{c&-%rK}qzcirP4=49qq*p3+2qFp4S8dtOwx5Cn%xbYE&Vzs%c7UYns` zeN&+9fzUoMlvUTMTu%zWT5%$wW5_k4qV03~PBU8-bMe|rTeaSfX?kl-X;M5)WFyUB zRwjl(;-XKjUo+0rsO`WM4IUweYQ8q}-L%r&> zzk3X_@2+jDnR0`z zS|N>pt_^ZUb6Gx@8Ebj%L|FfFRjK)NoJ=4$jqZdOC}cACs~BJH2Q$AYbGAX76Ike6Zcz-wB=)o2?0}^3_5eHi&U%EmlpL~ zAbf52#;<>-OD=E#xszL-G;RW+{Wg@bLSlkk#k?6dV?xU%&j$I$eRQ7Tn1XGk^UR&H zR$btPo?gu+H(uB26}BikX|P6LgJ;AskL=iZRo~03xE-S*lED6dL7fJjtp3Y6az5b6 z%Px$trK<9jD&ih7{8;mt@VXZ0OE_4=D{Ot@SQ#{`eZ43%bcX0{43|p$ZqJai`MJKi&{)t0_Jp>BUL|~EAc6vgtLbO?!=rL>52d`#r|VQNF$pc z*S-d+-KI9%%DS|sf`m`}oAs~X-sO6YGdk$`fBmqro5G3#_4oycqX!HUXa8i#POgqs I_P&Y#1_MuEB>(^b literal 4650 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 + + + +Skins for separated note fill graphics + +++++++++ Version 7 diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index ba296f94..d63d3bf1 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -102,7 +102,7 @@ namespace VocaluxeLib.Menu.SingNotes SRectF rect = _GetNoteRect(note); _DrawNoteBG(rect, color); - _DrawNote(rect, new SColorF(Color.White, 0.7f * Alpha), 0.7f); + _DrawNoteBase(rect, new SColorF(Color.White, Alpha), 1f); } } @@ -118,9 +118,9 @@ namespace VocaluxeLib.Menu.SingNotes if (note.EndBeat == CBase.Game.GetRecordedBeat()) rect.W -= (1 - (CBase.Game.GetMidRecordedBeat() - CBase.Game.GetRecordedBeat())) * Rect.W / beats; - float factor = (note.Hit) ? 0.7f : 0.4f; + float factor = (note.Hit) ? 1f : 0.6f; - _DrawNote(rect, color, factor); + _DrawNoteFill(rect, color, factor); if (note.EndBeat >= CBase.Game.GetRecordedBeat() && note.Hit && note.HitNote.Type == ENoteType.Golden) { @@ -221,7 +221,7 @@ namespace VocaluxeLib.Menu.SingNotes CBase.Drawing.DrawTexture(toneHelper, drawRect, color); } - private void _DrawNote(SRectF rect, SColorF color, float factor) + private void _DrawNote(SRectF rect, SColorF color, float factor, CTextureRef noteBegin, CTextureRef noteMiddle, CTextureRef noteEnd) { if (factor <= 0) return; @@ -231,10 +231,6 @@ namespace VocaluxeLib.Menu.SingNotes var noteRect = new SRectF(rect.X + dw, rect.Y + dh, rect.W - 2 * dw, rect.H - 2 * dh, rect.Z); - CTextureRef noteBegin = CBase.Themes.GetSkinTexture(_Theme.SkinLeft, _PartyModeID); - CTextureRef noteMiddle = CBase.Themes.GetSkinTexture(_Theme.SkinMiddle, _PartyModeID); - CTextureRef noteEnd = CBase.Themes.GetSkinTexture(_Theme.SkinRight, _PartyModeID); - //Width of each of the ends (round parts) //Need 2 of them so use minimum float endsW = Math.Min(noteRect.H * noteBegin.OrigAspect, noteRect.W / 2); @@ -250,7 +246,26 @@ namespace VocaluxeLib.Menu.SingNotes CBase.Drawing.DrawTexture(noteEnd, new SRectF(noteRect.X + noteRect.W - endsW, noteRect.Y, endsW, noteRect.H, noteRect.Z), color); } - private void _DrawNoteBG(SRectF noteRect, SColorF color) + private void _DrawNoteBase(SRectF rect, SColorF color, float factor) + { + CTextureRef noteBegin = CBase.Themes.GetSkinTexture(_Theme.SkinLeft, _PartyModeID); + CTextureRef noteMiddle = CBase.Themes.GetSkinTexture(_Theme.SkinMiddle, _PartyModeID); + CTextureRef noteEnd = CBase.Themes.GetSkinTexture(_Theme.SkinRight, _PartyModeID); + + _DrawNote(rect, color, factor, noteBegin, noteMiddle, noteEnd); + } + + private void _DrawNoteFill(SRectF rect, SColorF color, float factor) + { + + CTextureRef noteBegin = CBase.Themes.GetSkinTexture(_Theme.SkinFillLeft, _PartyModeID); + CTextureRef noteMiddle = CBase.Themes.GetSkinTexture(_Theme.SkinFillMiddle, _PartyModeID); + CTextureRef noteEnd = CBase.Themes.GetSkinTexture(_Theme.SkinFillRight, _PartyModeID); + + _DrawNote(rect, color, factor, noteBegin, noteMiddle, noteEnd); + } + + private void _DrawNoteBG(SRectF rect, SColorF color) { const float period = 1500; //[ms] @@ -262,27 +277,15 @@ namespace VocaluxeLib.Menu.SingNotes float alpha = (float)(Math.Cos(_Timer.ElapsedMilliseconds / period * Math.PI * 2) + 1) / 4 + 0.5f; - CTextureRef noteBackgroundBegin = CBase.Themes.GetSkinTexture(_Theme.SkinBackgroundLeft, _PartyModeID); - CTextureRef noteBackgroundMiddle = CBase.Themes.GetSkinTexture(_Theme.SkinBackgroundMiddle, _PartyModeID); - CTextureRef noteBackgroundEnd = CBase.Themes.GetSkinTexture(_Theme.SkinBackgroundRight, _PartyModeID); - - float dx = noteRect.H * noteBackgroundBegin.OrigAspect; - if (2 * dx > noteRect.W) - dx = noteRect.W / 2; - var col = new SColorF(color, color.A * alpha); - CBase.Drawing.DrawTexture(noteBackgroundBegin, new SRectF(noteRect.X, noteRect.Y, dx, noteRect.H, noteRect.Z), col); + CTextureRef noteBegin = CBase.Themes.GetSkinTexture(_Theme.SkinBackgroundLeft, _PartyModeID); + CTextureRef noteMiddle = CBase.Themes.GetSkinTexture(_Theme.SkinBackgroundMiddle, _PartyModeID); + CTextureRef noteEnd = CBase.Themes.GetSkinTexture(_Theme.SkinBackgroundRight, _PartyModeID); - if (noteRect.W - 2 * dx >= 2 * dx) - CBase.Drawing.DrawTexture(noteBackgroundMiddle, new SRectF(noteRect.X + dx, noteRect.Y, noteRect.W - 2 * dx, noteRect.H, noteRect.Z), col); - else - { - CBase.Drawing.DrawTexture(noteBackgroundMiddle, new SRectF(noteRect.X + dx, noteRect.Y, 2 * dx, noteRect.H, noteRect.Z), col, - new SRectF(noteRect.X + dx, noteRect.Y, noteRect.W - 2 * dx, noteRect.H, noteRect.Z)); - } + float factor = 1f; - CBase.Drawing.DrawTexture(noteBackgroundEnd, new SRectF(noteRect.X + noteRect.W - dx, noteRect.Y, dx, noteRect.H, noteRect.Z), col); + _DrawNote(rect, col, factor, noteBegin, noteMiddle, noteEnd); } private void _AddGoldenNote(SRectF noteRect) From 502333a9c12e98a38a39ae4cd3b05c337afa972d Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sun, 10 Apr 2016 09:06:56 +0200 Subject: [PATCH 02/15] Fix erroneous indenting --- Output/Themes/Ambient/Skin Blue.xml | 2 +- Output/Themes/Ambient/Skin Green.xml | 2 +- Output/Themes/Ambient/Skin Red.xml | 2 +- Output/Themes/Ambient/Skin Yellow.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Output/Themes/Ambient/Skin Blue.xml b/Output/Themes/Ambient/Skin Blue.xml index da83f302..73bc8846 100644 --- a/Output/Themes/Ambient/Skin Blue.xml +++ b/Output/Themes/Ambient/Skin Blue.xml @@ -219,7 +219,7 @@ notes_left.png notes_mid.png notes_right.png - notes_fill_left.png + notes_fill_left.png notes_fill_mid.png notes_fill_right.png notes_bg_left.png diff --git a/Output/Themes/Ambient/Skin Green.xml b/Output/Themes/Ambient/Skin Green.xml index 374d3a3f..50f6e329 100644 --- a/Output/Themes/Ambient/Skin Green.xml +++ b/Output/Themes/Ambient/Skin Green.xml @@ -213,7 +213,7 @@ notes_left.png notes_mid.png notes_right.png - notes_fill_left.png + notes_fill_left.png notes_fill_mid.png notes_fill_right.png notes_bg_left.png diff --git a/Output/Themes/Ambient/Skin Red.xml b/Output/Themes/Ambient/Skin Red.xml index fffebc22..1b97acb1 100644 --- a/Output/Themes/Ambient/Skin Red.xml +++ b/Output/Themes/Ambient/Skin Red.xml @@ -213,7 +213,7 @@ notes_left.png notes_mid.png notes_right.png - notes_fill_left.png + notes_fill_left.png notes_fill_mid.png notes_fill_right.png notes_bg_left.png diff --git a/Output/Themes/Ambient/Skin Yellow.xml b/Output/Themes/Ambient/Skin Yellow.xml index da3d047f..a6f36b3c 100644 --- a/Output/Themes/Ambient/Skin Yellow.xml +++ b/Output/Themes/Ambient/Skin Yellow.xml @@ -213,7 +213,7 @@ notes_left.png notes_mid.png notes_right.png - notes_fill_left.png + notes_fill_left.png notes_fill_mid.png notes_fill_right.png notes_bg_left.png From e1057f7c83b08481a6c27b614e30df77d6beece8 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sun, 10 Apr 2016 09:17:09 +0200 Subject: [PATCH 03/15] Commit changes in file missing from initial commit --- VocaluxeLib/Menu/SingNotes/CSingNotes.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/VocaluxeLib/Menu/SingNotes/CSingNotes.cs b/VocaluxeLib/Menu/SingNotes/CSingNotes.cs index 71c09fdc..5dee6b02 100644 --- a/VocaluxeLib/Menu/SingNotes/CSingNotes.cs +++ b/VocaluxeLib/Menu/SingNotes/CSingNotes.cs @@ -40,6 +40,10 @@ namespace VocaluxeLib.Menu.SingNotes public string SkinMiddle; public string SkinRight; + public string SkinFillLeft; + public string SkinFillMiddle; + public string SkinFillRight; + public string SkinBackgroundLeft; public string SkinBackgroundMiddle; public string SkinBackgroundRight; @@ -110,6 +114,10 @@ namespace VocaluxeLib.Menu.SingNotes ThemeLoaded &= xmlReader.GetValue(item + "/SkinMiddle", out _Theme.SkinMiddle, String.Empty); ThemeLoaded &= xmlReader.GetValue(item + "/SkinRight", out _Theme.SkinRight, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinFillLeft", out _Theme.SkinLeft, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinFillMiddle", out _Theme.SkinMiddle, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinFillRight", out _Theme.SkinRight, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundLeft", out _Theme.SkinBackgroundLeft, String.Empty); ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundMiddle", out _Theme.SkinBackgroundMiddle, String.Empty); ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundRight", out _Theme.SkinBackgroundRight, String.Empty); From d9bc3fb907285189a5437bf17bf4435eac3ec9c2 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sun, 10 Apr 2016 10:16:46 +0200 Subject: [PATCH 04/15] Reorganising method arguments --- VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index d63d3bf1..7bb3d3c0 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -221,7 +221,7 @@ namespace VocaluxeLib.Menu.SingNotes CBase.Drawing.DrawTexture(toneHelper, drawRect, color); } - private void _DrawNote(SRectF rect, SColorF color, float factor, CTextureRef noteBegin, CTextureRef noteMiddle, CTextureRef noteEnd) + private void _DrawNote(SRectF rect, SColorF color, CTextureRef noteBegin, CTextureRef noteMiddle, CTextureRef noteEnd, float factor) { if (factor <= 0) return; @@ -252,7 +252,7 @@ namespace VocaluxeLib.Menu.SingNotes CTextureRef noteMiddle = CBase.Themes.GetSkinTexture(_Theme.SkinMiddle, _PartyModeID); CTextureRef noteEnd = CBase.Themes.GetSkinTexture(_Theme.SkinRight, _PartyModeID); - _DrawNote(rect, color, factor, noteBegin, noteMiddle, noteEnd); + _DrawNote(rect, color, noteBegin, noteMiddle, noteEnd, factor); } private void _DrawNoteFill(SRectF rect, SColorF color, float factor) @@ -262,7 +262,7 @@ namespace VocaluxeLib.Menu.SingNotes CTextureRef noteMiddle = CBase.Themes.GetSkinTexture(_Theme.SkinFillMiddle, _PartyModeID); CTextureRef noteEnd = CBase.Themes.GetSkinTexture(_Theme.SkinFillRight, _PartyModeID); - _DrawNote(rect, color, factor, noteBegin, noteMiddle, noteEnd); + _DrawNote(rect, color, noteBegin, noteMiddle, noteEnd, factor); } private void _DrawNoteBG(SRectF rect, SColorF color) @@ -283,9 +283,7 @@ namespace VocaluxeLib.Menu.SingNotes CTextureRef noteMiddle = CBase.Themes.GetSkinTexture(_Theme.SkinBackgroundMiddle, _PartyModeID); CTextureRef noteEnd = CBase.Themes.GetSkinTexture(_Theme.SkinBackgroundRight, _PartyModeID); - float factor = 1f; - - _DrawNote(rect, col, factor, noteBegin, noteMiddle, noteEnd); + _DrawNote(rect, col, noteBegin, noteMiddle, noteEnd, 1f); } private void _AddGoldenNote(SRectF noteRect) From a7a359c8e716e5be4884d2d1ef77e80eb9e2bd41 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sun, 10 Apr 2016 10:18:59 +0200 Subject: [PATCH 05/15] Make notelines colour customisable --- Output/Themes/Ambient/Skin Blue.xml | 6 ++++++ Output/Themes/Ambient/Skin Green.xml | 6 ++++++ Output/Themes/Ambient/Skin Red.xml | 6 ++++++ Output/Themes/Ambient/Skin Yellow.xml | 6 ++++++ Output/Themes/Changelog/Changelog_SkinSystem.txt | 7 ++++--- VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 5 ++++- 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Output/Themes/Ambient/Skin Blue.xml b/Output/Themes/Ambient/Skin Blue.xml index 73bc8846..a1972d22 100644 --- a/Output/Themes/Ambient/Skin Blue.xml +++ b/Output/Themes/Ambient/Skin Blue.xml @@ -44,6 +44,12 @@ 0.500 1.000 + + 0.675 + 0.890 + 0.969 + 0.200 + 0.000 0.000 diff --git a/Output/Themes/Ambient/Skin Green.xml b/Output/Themes/Ambient/Skin Green.xml index 50f6e329..6dcd8236 100644 --- a/Output/Themes/Ambient/Skin Green.xml +++ b/Output/Themes/Ambient/Skin Green.xml @@ -44,6 +44,12 @@ 0.500 1.000 + + 0.709 + 0.968 + 0.674 + 0.200 + 0.000 0.750 diff --git a/Output/Themes/Ambient/Skin Red.xml b/Output/Themes/Ambient/Skin Red.xml index 1b97acb1..56f21910 100644 --- a/Output/Themes/Ambient/Skin Red.xml +++ b/Output/Themes/Ambient/Skin Red.xml @@ -44,6 +44,12 @@ 0.500 1.000 + + 0.968 + 0.674 + 0.674 + 0.200 + 0.750 0.000 diff --git a/Output/Themes/Ambient/Skin Yellow.xml b/Output/Themes/Ambient/Skin Yellow.xml index a6f36b3c..45e030fe 100644 --- a/Output/Themes/Ambient/Skin Yellow.xml +++ b/Output/Themes/Ambient/Skin Yellow.xml @@ -44,6 +44,12 @@ 0.500 1.000 + + 0.968 + 0.956 + 0.674 + 0.200 + 0.750 0.750 diff --git a/Output/Themes/Changelog/Changelog_SkinSystem.txt b/Output/Themes/Changelog/Changelog_SkinSystem.txt index ce2085ae..16bf841b 100644 --- a/Output/Themes/Changelog/Changelog_SkinSystem.txt +++ b/Output/Themes/Changelog/Changelog_SkinSystem.txt @@ -1,5 +1,9 @@ Skin System +++++++++++ +Version 5: +Added optional to be able to colour the note lines (Fallback to gray with 0.2 Alpha if not set) + ++++++++++ Version 4: All Colors in (Playercolors and ColorSchemes) @@ -12,9 +16,6 @@ Added videos: -++++++++++ - - ++++++++++ Version 2: diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index 7bb3d3c0..f5ac5eaa 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -32,6 +32,7 @@ namespace VocaluxeLib.Menu.SingNotes private readonly int _Player; public readonly SRectF Rect; private readonly SColorF _Color; + private readonly SColorF _NoteLinesColor; public float Alpha = 1; private readonly CSongLine[] _Lines; @@ -60,6 +61,8 @@ namespace VocaluxeLib.Menu.SingNotes Rect = rect; _Color = CBase.Themes.GetPlayerColor(player + 1); + if (!CBase.Themes.GetColor("NoteLinesColor", _PartyModeID, out _NoteLinesColor)) + _NoteLinesColor = new SColorF(Color.Gray, 0.5f * Alpha); SPlayer playerData = CBase.Game.GetPlayers()[player]; _Lines = CBase.Game.GetSong().Notes.GetVoice(playerData.VoiceNr).Lines; @@ -88,7 +91,7 @@ namespace VocaluxeLib.Menu.SingNotes CSongLine line = _Lines[_CurrentLine]; if (CBase.Config.GetDrawNoteLines() == EOffOn.TR_CONFIG_ON) - _DrawNoteLines(new SColorF(Color.Gray, 0.5f * Alpha)); + _DrawNoteLines(_NoteLinesColor); float beats = line.LastNoteBeat - line.FirstNoteBeat + 1; From 4564c6a3843cd8e261aedb459ce4b0b2ed493809 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sun, 10 Apr 2016 11:02:18 +0200 Subject: [PATCH 06/15] Correct broken fading and set fallback to use old hardcoded values --- Output/Themes/Ambient/Skin Blue.xml | 2 +- Output/Themes/Ambient/Skin Green.xml | 2 +- Output/Themes/Ambient/Skin Red.xml | 2 +- Output/Themes/Ambient/Skin Yellow.xml | 2 +- Output/Themes/Changelog/Changelog_SkinSystem.txt | 2 +- VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Output/Themes/Ambient/Skin Blue.xml b/Output/Themes/Ambient/Skin Blue.xml index a1972d22..bec4a1c6 100644 --- a/Output/Themes/Ambient/Skin Blue.xml +++ b/Output/Themes/Ambient/Skin Blue.xml @@ -48,7 +48,7 @@ 0.675 0.890 0.969 - 0.200 + 0.500 0.000 diff --git a/Output/Themes/Ambient/Skin Green.xml b/Output/Themes/Ambient/Skin Green.xml index 6dcd8236..2185cf6b 100644 --- a/Output/Themes/Ambient/Skin Green.xml +++ b/Output/Themes/Ambient/Skin Green.xml @@ -48,7 +48,7 @@ 0.709 0.968 0.674 - 0.200 + 0.500 0.000 diff --git a/Output/Themes/Ambient/Skin Red.xml b/Output/Themes/Ambient/Skin Red.xml index 56f21910..a44a3c74 100644 --- a/Output/Themes/Ambient/Skin Red.xml +++ b/Output/Themes/Ambient/Skin Red.xml @@ -48,7 +48,7 @@ 0.968 0.674 0.674 - 0.200 + 0.500 0.750 diff --git a/Output/Themes/Ambient/Skin Yellow.xml b/Output/Themes/Ambient/Skin Yellow.xml index 45e030fe..3bb4f4a7 100644 --- a/Output/Themes/Ambient/Skin Yellow.xml +++ b/Output/Themes/Ambient/Skin Yellow.xml @@ -48,7 +48,7 @@ 0.968 0.956 0.674 - 0.200 + 0.500 0.750 diff --git a/Output/Themes/Changelog/Changelog_SkinSystem.txt b/Output/Themes/Changelog/Changelog_SkinSystem.txt index 16bf841b..a7cf4268 100644 --- a/Output/Themes/Changelog/Changelog_SkinSystem.txt +++ b/Output/Themes/Changelog/Changelog_SkinSystem.txt @@ -2,7 +2,7 @@ Skin System ++++++++++ Version 5: -Added optional to be able to colour the note lines (Fallback to gray with 0.2 Alpha if not set) +Added optional to be able to colour the note lines (Fallback to gray with 0.5 Alpha if not set) ++++++++++ Version 4: diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index f5ac5eaa..fb9ac50c 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -62,7 +62,7 @@ namespace VocaluxeLib.Menu.SingNotes _Color = CBase.Themes.GetPlayerColor(player + 1); if (!CBase.Themes.GetColor("NoteLinesColor", _PartyModeID, out _NoteLinesColor)) - _NoteLinesColor = new SColorF(Color.Gray, 0.5f * Alpha); + _NoteLinesColor = new SColorF(Color.Gray, 0.5f); SPlayer playerData = CBase.Game.GetPlayers()[player]; _Lines = CBase.Game.GetSong().Notes.GetVoice(playerData.VoiceNr).Lines; @@ -91,7 +91,7 @@ namespace VocaluxeLib.Menu.SingNotes CSongLine line = _Lines[_CurrentLine]; if (CBase.Config.GetDrawNoteLines() == EOffOn.TR_CONFIG_ON) - _DrawNoteLines(_NoteLinesColor); + _DrawNoteLines(new SColorF(_NoteLinesColor, _NoteLinesColor.A * Alpha)); float beats = line.LastNoteBeat - line.FirstNoteBeat + 1; From f2fdf31aa7ff660b51e164c2639f5b3c979d23d3 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sun, 10 Apr 2016 12:19:52 +0200 Subject: [PATCH 07/15] Remove rows in changelog As the skin system has not actually been altered. --- Output/Themes/Changelog/Changelog_SkinSystem.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Output/Themes/Changelog/Changelog_SkinSystem.txt b/Output/Themes/Changelog/Changelog_SkinSystem.txt index a7cf4268..41b5d672 100644 --- a/Output/Themes/Changelog/Changelog_SkinSystem.txt +++ b/Output/Themes/Changelog/Changelog_SkinSystem.txt @@ -1,9 +1,5 @@ Skin System -++++++++++ -Version 5: -Added optional to be able to colour the note lines (Fallback to gray with 0.5 Alpha if not set) - ++++++++++ Version 4: All Colors in (Playercolors and ColorSchemes) From e3265edbb031632a07d85e9b49ee312053ec8292 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sun, 10 Apr 2016 12:21:52 +0200 Subject: [PATCH 08/15] Make note base colorisable --- Output/Themes/Ambient/Skin Blue.xml | 6 ++++++ Output/Themes/Ambient/Skin Green.xml | 6 ++++++ Output/Themes/Ambient/Skin Red.xml | 6 ++++++ Output/Themes/Ambient/Skin Yellow.xml | 6 ++++++ VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 7 ++++++- 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Output/Themes/Ambient/Skin Blue.xml b/Output/Themes/Ambient/Skin Blue.xml index bec4a1c6..88edeb74 100644 --- a/Output/Themes/Ambient/Skin Blue.xml +++ b/Output/Themes/Ambient/Skin Blue.xml @@ -50,6 +50,12 @@ 0.969 0.500 + + 0.675 + 0.890 + 0.969 + 1.000 + 0.000 0.000 diff --git a/Output/Themes/Ambient/Skin Green.xml b/Output/Themes/Ambient/Skin Green.xml index 2185cf6b..d946ab0a 100644 --- a/Output/Themes/Ambient/Skin Green.xml +++ b/Output/Themes/Ambient/Skin Green.xml @@ -50,6 +50,12 @@ 0.674 0.500 + + 0.709 + 0.968 + 0.674 + 1.000 + 0.000 0.750 diff --git a/Output/Themes/Ambient/Skin Red.xml b/Output/Themes/Ambient/Skin Red.xml index a44a3c74..b55dd210 100644 --- a/Output/Themes/Ambient/Skin Red.xml +++ b/Output/Themes/Ambient/Skin Red.xml @@ -50,6 +50,12 @@ 0.674 0.500 + + 0.968 + 0.674 + 0.674 + 1.000 + 0.750 0.000 diff --git a/Output/Themes/Ambient/Skin Yellow.xml b/Output/Themes/Ambient/Skin Yellow.xml index 3bb4f4a7..d1a53735 100644 --- a/Output/Themes/Ambient/Skin Yellow.xml +++ b/Output/Themes/Ambient/Skin Yellow.xml @@ -50,6 +50,12 @@ 0.674 0.500 + + 0.968 + 0.956 + 0.674 + 1.000 + 0.750 0.750 diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index fb9ac50c..f817e2f1 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -33,6 +33,7 @@ namespace VocaluxeLib.Menu.SingNotes public readonly SRectF Rect; private readonly SColorF _Color; private readonly SColorF _NoteLinesColor; + private readonly SColorF _NoteBaseColor; public float Alpha = 1; private readonly CSongLine[] _Lines; @@ -61,9 +62,13 @@ namespace VocaluxeLib.Menu.SingNotes Rect = rect; _Color = CBase.Themes.GetPlayerColor(player + 1); + if (!CBase.Themes.GetColor("NoteLinesColor", _PartyModeID, out _NoteLinesColor)) _NoteLinesColor = new SColorF(Color.Gray, 0.5f); + if (!CBase.Themes.GetColor("NoteBaseColor", _PartyModeID, out _NoteBaseColor)) + _NoteBaseColor = new SColorF(Color.White); + SPlayer playerData = CBase.Game.GetPlayers()[player]; _Lines = CBase.Game.GetSong().Notes.GetVoice(playerData.VoiceNr).Lines; _NoteLineHeight = Rect.H / CBase.Settings.GetNumNoteLines(); @@ -105,7 +110,7 @@ namespace VocaluxeLib.Menu.SingNotes SRectF rect = _GetNoteRect(note); _DrawNoteBG(rect, color); - _DrawNoteBase(rect, new SColorF(Color.White, Alpha), 1f); + _DrawNoteBase(rect, new SColorF(_NoteBaseColor, _NoteBaseColor.A * Alpha), 1f); } } From 989c7af2d20345a9d0ee29f0c0900464a6173fc8 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sun, 10 Apr 2016 16:37:10 +0200 Subject: [PATCH 09/15] Repeat note-mid-texture instead of stretching it Additionally, the code no longer assumes width to be 2x end width. --- VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index f817e2f1..853d71f4 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -246,10 +246,19 @@ namespace VocaluxeLib.Menu.SingNotes CBase.Drawing.DrawTexture(noteBegin, new SRectF(noteRect.X, noteRect.Y, endsW, noteRect.H, noteRect.Z), color); var middleRect = new SRectF(noteRect.X + endsW, noteRect.Y, noteRect.W - 2 * endsW, noteRect.H, noteRect.Z); - if (noteRect.W >= 4 * endsW) - CBase.Drawing.DrawTexture(noteMiddle, middleRect, color); - else - CBase.Drawing.DrawTexture(noteMiddle, new SRectF(middleRect.X, middleRect.Y, 2 * endsW, middleRect.H, middleRect.Z), color, middleRect); + + float midW = noteRect.H * noteMiddle.OrigAspect; + + int midCount = (int)Math.Floor(middleRect.W / midW); + + for (int i = 0; i < midCount; ++i) + { + CBase.Drawing.DrawTexture(noteMiddle, new SRectF(middleRect.X + (i * midW), noteRect.Y, midW, noteRect.H, noteRect.Z), color); + } + + SRectF lastMidRect = new SRectF(middleRect.X + midCount * midW, noteRect.Y, middleRect.W - (midCount * midW), noteRect.H, noteRect.Z); + + CBase.Drawing.DrawTexture(noteMiddle, new SRectF(middleRect.X + (midCount * midW), middleRect.Y, midW, middleRect.H, middleRect.Z), color, lastMidRect); CBase.Drawing.DrawTexture(noteEnd, new SRectF(noteRect.X + noteRect.W - endsW, noteRect.Y, endsW, noteRect.H, noteRect.Z), color); } From 01e1ead0a40bb61d861e123d79b49382037576e8 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Tue, 12 Apr 2016 21:19:42 +0200 Subject: [PATCH 10/15] Fix 1px gap appearing in notes of certain lengths --- VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index 853d71f4..efced613 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -258,9 +258,14 @@ namespace VocaluxeLib.Menu.SingNotes SRectF lastMidRect = new SRectF(middleRect.X + midCount * midW, noteRect.Y, middleRect.W - (midCount * midW), noteRect.H, noteRect.Z); + //gapAdjust fixes 1px empty gap appearing with certain note lengths. + float gapAdjust = 0f; + if (lastMidRect.W < 1) + gapAdjust = lastMidRect.W; + CBase.Drawing.DrawTexture(noteMiddle, new SRectF(middleRect.X + (midCount * midW), middleRect.Y, midW, middleRect.H, middleRect.Z), color, lastMidRect); - CBase.Drawing.DrawTexture(noteEnd, new SRectF(noteRect.X + noteRect.W - endsW, noteRect.Y, endsW, noteRect.H, noteRect.Z), color); + CBase.Drawing.DrawTexture(noteEnd, new SRectF(noteRect.X + noteRect.W - endsW - gapAdjust, noteRect.Y, endsW, noteRect.H, noteRect.Z), color); } private void _DrawNoteBase(SRectF rect, SColorF color, float factor) From 9cf8126603954091c64c23dcdae15846708c3c4f Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Wed, 10 Aug 2016 10:35:38 +0200 Subject: [PATCH 11/15] Fix 1px gap in middle of certain notes --- VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index efced613..fd086d04 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -247,7 +247,7 @@ namespace VocaluxeLib.Menu.SingNotes var middleRect = new SRectF(noteRect.X + endsW, noteRect.Y, noteRect.W - 2 * endsW, noteRect.H, noteRect.Z); - float midW = noteRect.H * noteMiddle.OrigAspect; + float midW = (float)Math.Round(noteRect.H * noteMiddle.OrigAspect); int midCount = (int)Math.Floor(middleRect.W / midW); From e095cc090bf848ce5ee0c936c80df7d00554388d Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sat, 7 Jan 2017 11:11:40 +0100 Subject: [PATCH 12/15] Up Theme Version --- Output/Themes/Ambient.xml | 2 +- Output/Themes/Changelog/Changelog_ThemeSystem.txt | 9 +++++++++ Vocaluxe/Base/ThemeSystem/CTheme.cs | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Output/Themes/Ambient.xml b/Output/Themes/Ambient.xml index 91b0c674..e8260cf9 100644 --- a/Output/Themes/Ambient.xml +++ b/Output/Themes/Ambient.xml @@ -1,6 +1,6 @@  - 5 + 6 Ambient bohning diff --git a/Output/Themes/Changelog/Changelog_ThemeSystem.txt b/Output/Themes/Changelog/Changelog_ThemeSystem.txt index fceb7c3f..16b3e6b1 100644 --- a/Output/Themes/Changelog/Changelog_ThemeSystem.txt +++ b/Output/Themes/Changelog/Changelog_ThemeSystem.txt @@ -1,5 +1,14 @@ Theme System +++++++++++ +Version 6 +Added to : + + + + +Changed: +Graphics handling of notes - background, base and fill of notes will be layered on each other without any resizing differences between the textures. ++++++++++ Version 5 (yes it's still 5!): diff --git a/Vocaluxe/Base/ThemeSystem/CTheme.cs b/Vocaluxe/Base/ThemeSystem/CTheme.cs index 94c9433f..ef37438e 100644 --- a/Vocaluxe/Base/ThemeSystem/CTheme.cs +++ b/Vocaluxe/Base/ThemeSystem/CTheme.cs @@ -28,7 +28,7 @@ namespace Vocaluxe.Base.ThemeSystem abstract class CTheme { // Version number for theme files. Increment it, if you've changed something on the theme files! - private const int _ThemeSystemVersion = 5; + private const int _ThemeSystemVersion = 6; protected STheme _Data; public String Name From 25d98d5134f150b255bb309392ac611058aa0747 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sat, 7 Jan 2017 12:01:23 +0100 Subject: [PATCH 13/15] Fix: Positioning of Notelines Notelines rect was top adjusted to a calculated center position making the lines slightly offset downwards. --- VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index fd086d04..b695b6fe 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -194,7 +194,7 @@ namespace VocaluxeLib.Menu.SingNotes lineRect.H = 1.5f; for (int i = 0; i < CBase.Settings.GetNumNoteLines(); i++) { - lineRect.Y = Rect.Y + Rect.H / CBase.Settings.GetNumNoteLines() * (i + 1); + lineRect.Y = (Rect.Y + Rect.H / CBase.Settings.GetNumNoteLines() * (i + 1)) - (lineRect.H / 2); CBase.Drawing.DrawRect(color, lineRect); } } From e92bc0c13c8d9dafc83bbfd57509b8f9a494a8a4 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sat, 7 Jan 2017 14:23:42 +0100 Subject: [PATCH 14/15] Redo the 1-Pixel-Gap Fixes A different approach to fix the 1px gaps occurring in certain notes. --- VocaluxeLib/Menu/SingNotes/CNoteBars.cs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs index b695b6fe..fcf52e20 100644 --- a/VocaluxeLib/Menu/SingNotes/CNoteBars.cs +++ b/VocaluxeLib/Menu/SingNotes/CNoteBars.cs @@ -234,22 +234,26 @@ namespace VocaluxeLib.Menu.SingNotes if (factor <= 0) return; - float dh = (1f - factor) * rect.H / 2; - float dw = Math.Min(dh, rect.W / 2); + //Width-related variables rounded and then floored to prevent 1px gaps in notes + rect.X = (float)Math.Round(rect.X); + rect.W = (float)Math.Round(rect.W); + + int dh = (int)((1f - factor) * rect.H / 2); + int dw = (int)Math.Min(dh, rect.W / 2); var noteRect = new SRectF(rect.X + dw, rect.Y + dh, rect.W - 2 * dw, rect.H - 2 * dh, rect.Z); //Width of each of the ends (round parts) //Need 2 of them so use minimum - float endsW = Math.Min(noteRect.H * noteBegin.OrigAspect, noteRect.W / 2); + int endsW = (int)Math.Min(noteRect.H * noteBegin.OrigAspect, noteRect.W / 2); CBase.Drawing.DrawTexture(noteBegin, new SRectF(noteRect.X, noteRect.Y, endsW, noteRect.H, noteRect.Z), color); - var middleRect = new SRectF(noteRect.X + endsW, noteRect.Y, noteRect.W - 2 * endsW, noteRect.H, noteRect.Z); + SRectF middleRect = new SRectF(noteRect.X + endsW, noteRect.Y, noteRect.W - 2 * endsW, noteRect.H, noteRect.Z); - float midW = (float)Math.Round(noteRect.H * noteMiddle.OrigAspect); + int midW = (int)Math.Round(noteRect.H * noteMiddle.OrigAspect); - int midCount = (int)Math.Floor(middleRect.W / midW); + int midCount = (int)middleRect.W / midW; for (int i = 0; i < midCount; ++i) { @@ -258,14 +262,9 @@ namespace VocaluxeLib.Menu.SingNotes SRectF lastMidRect = new SRectF(middleRect.X + midCount * midW, noteRect.Y, middleRect.W - (midCount * midW), noteRect.H, noteRect.Z); - //gapAdjust fixes 1px empty gap appearing with certain note lengths. - float gapAdjust = 0f; - if (lastMidRect.W < 1) - gapAdjust = lastMidRect.W; - CBase.Drawing.DrawTexture(noteMiddle, new SRectF(middleRect.X + (midCount * midW), middleRect.Y, midW, middleRect.H, middleRect.Z), color, lastMidRect); - CBase.Drawing.DrawTexture(noteEnd, new SRectF(noteRect.X + noteRect.W - endsW - gapAdjust, noteRect.Y, endsW, noteRect.H, noteRect.Z), color); + CBase.Drawing.DrawTexture(noteEnd, new SRectF(noteRect.X + noteRect.W - endsW, noteRect.Y, endsW, noteRect.H, noteRect.Z), color); } private void _DrawNoteBase(SRectF rect, SColorF color, float factor) From 67c4785e0dccb177ed99f246124e607b6ed1b783 Mon Sep 17 00:00:00 2001 From: Jiiniasu Date: Sat, 7 Jan 2017 14:50:26 +0100 Subject: [PATCH 15/15] Fix Deviating Formatting in ScreenSing.xml --- Output/Themes/Ambient/Screens/ScreenSing.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Output/Themes/Ambient/Screens/ScreenSing.xml b/Output/Themes/Ambient/Screens/ScreenSing.xml index da4ab31f..06f591c9 100644 --- a/Output/Themes/Ambient/Screens/ScreenSing.xml +++ b/Output/Themes/Ambient/Screens/ScreenSing.xml @@ -1696,7 +1696,7 @@ NoteLeft NoteMiddle NoteRight - NoteFillLeft + NoteFillLeft NoteFillMiddle NoteFillRight NoteBackgroundLeft