From d3748e68a95235a36de73cd5489457ca4e7d5499 Mon Sep 17 00:00:00 2001 From: mashiros <490328928@qq.com> Date: Fri, 15 Apr 2022 15:31:17 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E6=96=B0=E5=A2=9E"=E6=B8=90=E5=8F=98?= =?UTF-8?q?=E7=BA=BF"=E6=A0=B7=E5=BC=8F=20-=20=E5=AE=8C=E5=96=84=E7=AE=80?= =?UTF-8?q?=E4=BB=8B=E4=B8=8E=E7=BF=BB=E8=AF=91=20-=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E9=A2=84=E8=AE=BE=E6=8E=92=E5=BA=8F=E6=97=A0?= =?UTF-8?q?=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Locales/ja_JP.qm | Bin 2667 -> 3035 bytes Locales/zh.qm | Bin 2587 -> 2945 bytes Locales/zh_CN.qm | Bin 2587 -> 2945 bytes Presets/Gradient_Line/preset.json | 4 + Presets/Gradient_Line/preview.png | Bin 0 -> 5383 bytes Presets/Gradient_Line/settings.xml | 8 ++ package.json | 91 ++++++++++------ qml/Common.qml | 7 +- qml/api/CfgAPI.qml | 2 + styles/Preset_gradient_line/Config.qml | 161 ++++++++++++++++++++++++++++ styles/Preset_gradient_line/Style.qml | 187 +++++++++++++++++++++++++++++++++ 11 files changed, 422 insertions(+), 38 deletions(-) create mode 100644 Presets/Gradient_Line/preset.json create mode 100644 Presets/Gradient_Line/preview.png create mode 100644 Presets/Gradient_Line/settings.xml create mode 100644 styles/Preset_gradient_line/Config.qml create mode 100644 styles/Preset_gradient_line/Style.qml diff --git a/Locales/ja_JP.qm b/Locales/ja_JP.qm index 2abef90daedb863bc6730d00316c70911b137983..eb791579058a3bac416ad3222e91399f71223174 100644 GIT binary patch delta 758 zcmZXQZ%7ky7{{Nx-M`(=Woyn}WDc?wRPuX~(2JlbB|)81x-v*R-C0NDR_B$K)pB4+ zy{I@A5t0=}5<=l9QH%Zz8a9ZCUIe3%A~LriQZvH-Jfm8eFODD2!}t67exFM@llf;B zht31A4*-NlV9xad&^f@|c@1D$1Pg|)0q|d-=IJ}!r(yS@LI8+B$7un8i@>LEB{;_^ zM_(HC19b6?&G@dPpU0fYth9WrR{$uQWqXjrP9bFlz6%lwn}M{pG`A+*{{GG6zzaMLv)?nIQw@J(*AjYv=z{ zZ_;JIs%VD0RMnN{jEB#FHU_m8br+S%V*;xiTC)bRJgBROgPI`+%=^rcNAj+Um~%?x zRjGb|K$+E}hEuvphgZy^?A1*Hb>Du)UAMPQ*8TtI{+8Ra^4!02f3Qu<7@{hx(@Uku rsrtm60?sXltQ)iP%_M&>pV=BdFquUPK1DawW;qb;5{f9(Chq(NwQkAv delta 432 zcmcaD{#s;$Tzv)u1M2|>2Dax6EYnsnFfj2luxz`>z`!iSz&hh70|SR2gYd4UK>0d` zfOAiQ@^2U-P96b@%P?eA$}=!9Ol4^7=Kz`!!SLaiDUg4h>C#~l1_l;>=C_fl3=E7+ ztgQ2a`kC`tImKFm>J(WGyqkdhDXi5Tn-~~`*fz7SVLA*na1HD2FD?uW?4}dfi`BEN zV_WzisGUKFZP(|mK;=8xPS5`eq+hbVdhrNoOds2u#D755&)ELfX#kza&u*bE3bghC zd;I1Spg0G6)9d3v>s>ichD`?YCvv_B`2%!*8kd^GU7$KUuAM(X{6pLxr-063GT@2z z76RIr$g`WVn8AaAJqOHS;Hc&~xquHS!N4o)y$ERFZQci=K!>q;^GQ5r1v2(V2Pj0@hWVpRpw|O>XAgyE&apgi(US;FZB{ ngTn?VfI$Z|42W5SQj1edCMR-B3;ExTj)04^1SgiI0)?vpd=7GF diff --git a/Locales/zh.qm b/Locales/zh.qm index 49000aeb18538ca54a3dc6030c54479b59413b05..520e1e492cafba85bbab506d02bcb82c2ccb51a5 100644 GIT binary patch delta 788 zcmaiwZ%7ky7{{Nx-M`Iq*_y65)n152;^;+@K`#WA2Gc3|j}Zd;8`!sZ%+yVgSpyvVyz(nBd$}a35 z5w4+m)L$ZfxA$W$C0~rWk-6RWB_!c|g{B9PV_Tr@MQ70Gqjv=20F;OB;)VfS?0b5M z90RcT(Qg*3Fv!{7dqpvNj5)GgjIvkE^@~wq9Ut+^418HG4{`naIv4^9swqgvC8*eu8ea1f9xQb^TaFkTMMSaMT z{%-ZddH&~dhyhv59}2i|aSJb)3ka^@PtUbs0ENH2`Vax-`~xD2HT|dBC4T&x6ZOC^ zH{V3vVE(4S4O~2#|E>uSV7r_fKhhZBi8E=d#)apd(~o_4z~s7wbs&+H@rtK51W>v^ zWfHGRvSYWYQ8h8X`(=B$t~RFjC*wN)dNkqZs#ZmBy%v=XSyR20nxg5fHLBFq!*V-e zfjG6GVOmNzuK#D+rwgJisfM>o)}@GLU2CG0ovqQV!Qt09T|T9$hM<^ts7#CxmL(Q* z!W7oZqNqs!$wNuWpd*WR*0m|}vE!1r>1d~*i#a(^oR<|B{1w~1qSmQe`cxBLLzePk p2um>4qE;lvI%O5ay`;;BV{j&RPHf delta 438 zcmZn^pDi*$u0Df-f%O0b1KU~#mT4;(7?>CtShn3`U|{B8V4ZQ4fq{dGL3r0vpu7u1 zz`3VD`5O!oCyy{NuwP-wsFY`5VCZIO?B@WQVZ!j?mno3Hm+8`B5upCx%x@!8f&5>r ztn-2TnWI@b#abB{SpKsbcsBw04Xo81n-~~`*veVgFdYV3l)!rXiwn@A?-SRH)w4`t zTlgQOU5#zm=dD2HOW97({|cn9vb}oo2xwgz+ndCHKxfQh`&*|0s8k25eZT5_BWn+#Ov%lRVY577BhTxt$?f$FrlcK!hIH*tHM0y>9Dg(ucq z2xwn8&u+$I1`h^y4KRa&L!am50zRMw1Fx+2BA|h1c^`xV9mXceC-ImS=pb#rIn1s= z17rDa9Ml6kWFG%iki!}0WCH!vzj+ViLnfxwos;LY_)KnMUA6fLn+?-sYtDU}6}Z?K sg(se^&jSV?&^RDw4N5IeEtzb?EiL4KH#!0?&JvthmI@M{ti~M;096BXuK)l5 diff --git a/Locales/zh_CN.qm b/Locales/zh_CN.qm index 554abf6ec339c19b221da00986160ecb6583d007..d3bd6a0f305501a8b7a8343e256ab59bb5339310 100644 GIT binary patch delta 788 zcmbO&(kMPbu6_ms1M2|>1`crsmT4;(7?>CtShn3`U|{B85Z<+vfq{J;L%_MGK=B(4 z8I|%33=G{2jr|-93~b2^AAXqv`Fk0K*1Q3#pUI@RDhNnxGhI3?0yI;L`E6t>Q2rMy z>wKU&%%4~}#ae;-^jHnNn-~~a#96C3HZd>=u|H&8!*rN|fpZ$`?Jq7shjdI_FILZb zm@WIe3Q*ZqwuS#e#;CFF`n(m$w_!Uy|0~dV7PeO}9s!M;%JwGlA5gb0+uu43pmRCc zE!0JU@?Y8GH+ji5zykZybnTw9$>HLlX%Pubig6LIn1s=3w!u(9Ml7P z;4J@CkOvv(WCDG0lo@CMOOeOs$&9y{n6i{7=d<|K^V9~U$NT%%=gshMDgp*QP!kXf zx#p!P1mqWImSpDVDLCinl4BBA4A;QrkYJI8l9NinJuInn z{J7vo^Z6&`WEPgDDufo4Cl;k(xC5w|8?IOYs+dzDCBHlmq<(WKs}GYl&(!Y7(-_VX q2`))2DnWD2CtShn3`U|{B8V4ZQ4fq{dGL3r0vpu7u1 zz`3VD`5O!oCyy{NuwP-wsFY`5VCZIO?B@WQVZ!j?mno3Hm+8`B5upCx%x@!8f&5>r ztn-2TnWI@b#abB{SpKsbcsBw04Xo81n-~~`*veVgFdYV3l)!rXiwn@A?-SRH)w4`t zTlgQOU5#zm=dD2HOW97({|cn9vb}oo2xwgz+ndCHKxfQh`&*|0s8k25eZT5_BWn+#Ov%lRVY577BhTxt$?f$FrlcK!hIH*tHM0y>9Dg(ucq z2xwn8&u+$I1`h^y4KRa&L!am50zRMw1Fx+2BA|h1c^`xV9mXceC-ImS=pb#rIn1s= z17rDa9Ml6kWFG%iki!}0WCH!vzj+ViLnfxwos;LY_)KnMUA6fLn+?-sYtDU}6}Z?K sg(se^&jSV?&^RDw4N5IeEtzb?EiL4KH#!0?&JvthmI@M{ti~M;096BXuK)l5 diff --git a/Presets/Gradient_Line/preset.json b/Presets/Gradient_Line/preset.json new file mode 100644 index 0000000..8d2612c --- /dev/null +++ b/Presets/Gradient_Line/preset.json @@ -0,0 +1,4 @@ +{ + "source": "nvg://advp.widget.mashiros.top/widget", + "settings": "settings.xml" +} \ No newline at end of file diff --git a/Presets/Gradient_Line/preview.png b/Presets/Gradient_Line/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..46191eb654ca7e0152d7de956337baf966545333 GIT binary patch literal 5383 zcmc(jXH-+myN5R*9T5}+RLTJbRI2n28hVu=NJkJtCxV0?niNHXfOJAAQi9T(5Q<6% zA<}#AQUZh?z?*aL`Ec%C_xpd=`purTX7---ydU1{yoj}JgxNpcbz40LReKuN* z-SEDBLA6Mofn#s(vjK9GF)L%4@@9cA4MJL;sEZ}uw3L_ol4A8zX}GmJ^mX;e^;q2M zikyDdbOr$W&$VF#|5_9$POFy9eN4s3BYldTA<5RIb_aG9T7QX>{1^ z;>$4kJ^dLT&l|02H~CwH7+SXkUvNf%URIOOw2SZ`@oVEXruDSW4;ieQ__3zsh zS{_~-NC>B3&1LJ`s-=`RtZ1=NKiPXD)DAc;OxW>}+S!keuFlq^9f;p=Ejyvj+|>>! z?}_+*s!`pXYg6!kc$0IWI9%@_;Y8-DM3`9;jk-zPn^vzH zrKi!lEpC3!iLd;B7ylr%>%~cFD-UgnW-7S4R6lFEID1w_Q@7bXe5-k9b+n<6{kYxy zu=!+KpKmy39RH_RpcXmMev=(AQ!AyeqYLg&#VM{0RvKCOU?L+z7Pel%KY8c3K{1Hp z@pKYGQsgZ`Os^G5-)P~S|72Iq({E|NrQJTwfsYG&P8NG3agx)eJP=J!3+u`y<)I+o z8S#bl=e~Xi6)`CRzcnplLtRW%DRcYpJ6Xq;7$?R3XiFD`cc1!h6$ky{OxCWU44B*;^MZA&$8`d`4k7I>-zcyuN6!$H2nX@O1M*2 zgxszRa8vUCyxkgeOE$C01X+^W$Du}`vpaayni_6vQMb}@Y$DJ8xNn0~-CaoL_zV$W z_C}wrc?JNU_M|q$O`VmG?Gg9C8U;;g$Tzy)<;c=?TU5Vu`FpP9^djx+9ICXzGS6if zD&%pV;Q8I9EW|B^?qqo7;S%s+(q^6K_IsItnB)w*(za2@&&`Kt&nSTD{r0L{DNAdA zy|nZxbZbT|xDt=WaZFrS^7gGF0ci4D?99V!x$~H_!p{-$p$Xf70C{ynN-?U@Eoh#_fvOwXm#YQGE9#YdF2<3CWycd`pq8W45%M~gm0nivgdhxW zLxKIlyUC|u!(0Aw6)yk)G*noobg$-_(#ouPC%(7UJT`#yXp3$Ahf?^Ytw1uzdK~_+|I)#3j8H{bT5SHB2#Z&exsZe*-Z?&Z4-{J&0$% z&M$k+)MpjHcS;9H!`Hj>ViMI4+PitqUOkx;UiaAh755`13eHrz%DOrgh{((f!KYlT zu@^?6`Y8_e<@B+CA}%$tY$KT&j=;C?(3sMRh~O1Iu%UE{ns8F|o6uQ7>-tv;4jl{t#9_|m=X)w-NoMhP7Y zO@{%L*RL4pqVu>sOIj9R;ACIo3*P@_|8^x;Ma@afsoS_H^GjowHhXlkRq!V zC4vIw#2hlf-z`Sy0ipIMPoT0mvR~1uxJdW@Is@d*Udd-;wZseudhe2Vj8cq!sK0St zqJp2NnkdTApzvo(u#>`pKm&+y`=5*j6kFM?vvz4fK#OC959|EoDE;p(Q@VPpTpM; zS7|Js=9ek$5(YMp<%Y_&&{o#4TPtNzS#k~hr;YSLOr%v8Hdgr7nRoYvZo$Qiq#L!u zwYBTQC6{~`AV z<{~n{^A9Cgu&Aazjmc zOBU4hx>Kgr-=wl(+4S(lY+S4ygTD#|2fv7fiQOT9`XXwwpJO&UMYhNJY9D$k>03+X z@BHwN=(Gy7+}TSz^JT`B?T*_|E!fnDQ+YH^`ZS5NAj4w?{h26 zTKOF**mEml5S(%XWt<8EeDY8YJ>U5c0uw6!_DC91ktcNs z+HBigqc3a8QRFn#RNO4n2jxKYskj_;Aodz9aNrKt_~?0tIf;w{&EJ_*Z!Xsdl7PGW z6`M!Y*#gl@yL*>Gq(F-5F^y|sORrLk$wyDb;XAAXf5=^cxqd&LQWbbeCb*lX8*l|E zz5L0+XdXtIiXt3vJk{a`t`F$PQeUCYXV{pN=6w+G#d=)i0RU~~Q&+V&0%%5KQ({*+ z6ElQ^l({sN|El!9AnUh7SI?&?)tUqIh`61b!Mry@zMZXU!yr@Wwib)P79jdQ7Ywot zU#l>pg6H|90N>`LU~fMKkpQDJEIZd3L4al;A&dZ`wgqhGOaoB-PYWt*<`G#q**Hx# zQkWUBFi7MabH%+Pz{`Z7N5Vj6{Vr6BJHi z0df?`PQ$+{%Xoxn${!_Azii_KY!s&VBnI021Uls?uH@P>wEaZLU7?|V8oh-(c?Xn> ztIQ7|N=N}pS$D>lQwpQ668ZDF4K(CuD^!_`9+Sj}BduR&k);bmi}3y=A+1PJMsxC{ z=+iRf7|pyquRaWJ%yjoJ<>dfm#ue^@ao8>aX+jO$**O2mKSlr8<}%yMt`@0vUXD-X z{_rO3o&1P58W2fJn2*DZ(gNq7HtiDj>`6nO{~7gutIWVy)HYfKE7Z0kuVv{e{tSp;H&SY~@O0eY44GRHXVhG4wkgXO&Kn20=bZkX?#)J9Z z^~Cq=C#W4MB1kjgZbdsismPyk_7ATqLSL(qU)BYnqcublH7PHLFVs%K$8YxwcUqGE zZ2E;aPFI1fc4Sok&gC@T|I`b+x4)J()@|*NNNhQ1G`8CCi)|dNdOoO7mi!u9k+36U z{79kfdazp>edbq!!4+V(9RGnln-iF=#(&tDjvwM@(}4^oSG@=AID~33xo&dbW0gOK z4P5~=;+IlGsRZ)HX#vHP{3wF9n+q8>4C2aAzf+gvlcs9&vijWRk8VD16;1@M95iv$^g_UP5ownKA2zS&hRWSTiF|8Uwu_5&Yb_v$si9(U02meInd z*Q4M`j_T2-mSssVEi}X{Mz|!vWdI(`DO;c3m|jCXH-w1gmPUs;Xddy1-afK{tMan@ zrQBGQKHTZ#PTIl!#2m4>-kx?a3lVd+UJ}5*^HlrBtYvO+*`QbsGO#59#8VTDjcfWO zrfLV%gRN#)OmpzO*AS%Sn`0#vJvi00{Lx9RtB)T6A#<-$vh{IcmsY>wkleuFLkSem z+Pfw@0*P2%ChgKjuLRiauJn|M@r@y2Zf6Fd!2`)^k6nIZ&T$=xb`=%OhJN}mfY`8} zQ!+MnV?&`4-Aw@o$!>%PF6z3Pu5`_dSjEDRZo1Zg!haR&zMONr%nr(n;KsJxCwM8^ zr7m{n#4R6-CI;iqvUScN-EO_t`@)J{dvFonDzwVoBvT$waA}qbLU@ogws0OfA+yZp zM9@Z74Z<^={*t@6-cT~#Tnv6CLN+e#G^HPOq=NXt@|Ew2Nk;t&&fC2w>Z8q~7}C~t zoDc+qffTyI$W859vfZsVYE(p)lQkqq=XtVS#Aqu2ja{raIjve#U-9==Q`34psY{K+ z)HFqDhGdWfc58>u*>?`tSou;}apbhSt*xbPpFpcVthCYai3>n&yuVv8XDmp5V4ef3 zicG#}p(!cNv9xnphr;!3ZDrr|#JJtb80m^k?*&_K(q>)5R+rVSer}lzV=LlKt*MrL z4*%To>(|1x#oedc4{sNbGevp#Jqysv8ptKNxVYW<)9mc7&q?)r>N|D~mg*AlfeF*G z`(If`n>vdj!FaUOkJI;Up^;fpmccX4ffp$qN5=9BuSP}!ZVY)~&VKKEP0%@bfDI}% z|FB*Od9rq9*gRK{+^*KmCjC0INB3U_2e|K%LR$~Q{?HfO6 z)BTh0-cM>>ys6|?K0y3!Mz)h$0C`do5;aja< z-8z1w^C~+i=B+J{LLcYyF!>7cI_}i<>9ZvHU~n*jeyH6O04OItN~E_k?xiLnD_&-m z3Rq~c_8TQlovHN(mc0#t)!=lNlh+=m4uz1X&9vX_+gZ!;=1qsvf1M>R`=}pYZ+}5X zUAGBM)L5`+nrQAT4!&2-Aeu?dX3qRm%)?Y^@4FQREO-KC&yN?h^Lix#Y1(%AqoxE9 zuhUKI6tER*c#_&=n80Fm#)A%M!8B#4Sc6-T>ZZ1y&ouMw%&+eU2AyNHmmz7$sq0C# zO2hCBiIhVF{1VoPF^MP-JjvAiL0-z@5>zLGb(`6%-=VzeWDW%Of+-0DuZ3!g5xo&y z&y(DU$ORnc55q|SX~!4bt98IGT_#UdiO%|?B9NiTlM{! z)&-G7ck(ZVM4POy{}o05ZK?jpLg^dSRvICL_1<;$ z`aWRy`=P)xtP{$Mo!B`aB%a_p soUZ;$Ny+P0N%U^tivG{FuG^QKGEyv`oVi}WiDnbfRMi8OKDG(_FBD;WJOBUy literal 0 HcmV?d00001 diff --git a/Presets/Gradient_Line/settings.xml b/Presets/Gradient_Line/settings.xml new file mode 100644 index 0000000..d89c310 --- /dev/null +++ b/Presets/Gradient_Line/settings.xml @@ -0,0 +1,8 @@ + + + {"__version":"1.0.0","__cfg_height":580,"Center Line":true,"Center Color":"#ff4500","Line Color":"#ff4500","Line Position":0,"Data Length":0,"Channel":2,"Reverse":false,"Rotate Settings":{"Center Enable":false,"Center Angle":10,"Line Enable":false,"Line Angle":10},"Data Settings":{"Auto Normalizing":true,"Amplitude":4,"Unit Style":0}} + {"index":1} + "nvg://advp.widget.mashiros.top/advp-style-preset/gradient_line#Style.qml" + {"__version":"1.0.0","__cfg_height":580,"Center Line":true,"Center Color":"#ff4500","Line Color":"#ff4500","Line Position":0,"Data Length":0,"Channel":2,"Reverse":false,"Rotate Settings":{"Center Enable":false,"Center Angle":10,"Line Enable":false,"Line Angle":10},"Data Settings":{"Auto Normalizing":true,"Amplitude":10,"Unit Style":0}} + {"__version":"1.0.0","__cfg_height":600,"Gradient Direction":0,"Start Position Color":"#f44336","Middle Position Color":"#4caf50","End Position Color":"#03a9f4","Center Line":true,"Line Position":0,"Data Length":0,"Channel":2,"Reverse":false,"Rotate Settings":{"Center Enable":false,"Center Angle":10,"Line Enable":false,"Line Angle":10},"Data Settings":{"Auto Normalizing":true,"Amplitude":10,"Unit Style":0}} + \ No newline at end of file diff --git a/package.json b/package.json index 4960148..7266ef3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "top.mashiros.widget.advp", - "version": "1.0.0", + "version": "1.1.0", "title": { "en": "ADV Plugin", @@ -10,10 +10,10 @@ }, "description": { - "en": "Audio visualization plugin for SAO Utils 2", - "zh": "用于SAO Utils 2的音频可视化插件", - "zh_TW": "用于SAO Utils 2的音頻可視化插件", - "ja": "SAO Utils 2用の音声視覚化プラグイン" + "en": "Audio visualization plugin for SAO Utils 2, includes 6 preset styles and provides API for third-party style extensions.", + "zh": "用于SAO Utils 2的音频可视化插件,包含6种预设频谱样式,并为第三方频谱样式扩展提供了接口。", + "zh_TW": "用於SAO Utils 2的音頻可視化插件,包含6種預設頻譜樣式,並為第三方頻譜樣式擴展提供了接口。", + "ja": "SAO Utils 2のオーディオ視覚化プラグインには、6つのプリセットスペクトルスタイルが含まれており、サードパーティのスペクトルスタイル拡張用のインターフェイスを提供します。" }, "homepage": "https://nvg.dev/Mashiro_Sorata/ADV-Plugin", @@ -51,51 +51,62 @@ "entry": "qml/Main.qml" }, { - "location": "/advp-style-preset_line", + "location": "/advp-style-preset/line", "catalog": "top.mashiros.advp-style", "title": { "en": "Preset Line", - "zh": "预置 Line", - "zh_TW": "預置 Line", - "ja": "プリセット Line" + "zh": "预置 线", + "zh_TW": "預置 線", + "ja": "プリセット 線" }, "entry": "./styles/Preset_line" }, { - "location": "/advp-style-preset_waves", + "location": "/advp-style-preset/gradient_line", + "catalog": "top.mashiros.advp-style", + "title": { + "en": "Preset Gradient Line", + "zh": "预置 渐变线", + "zh_TW": "預置 漸變線", + "ja": "プリセット グラデーションライン" + }, + "entry": "./styles/Preset_gradient_line" + }, + { + "location": "/advp-style-preset/waves", "catalog": "top.mashiros.advp-style", "title": { "en": "Preset Waves", - "zh": "预置 Waves", - "zh_TW": "預置 Waves", - "ja": "プリセット Waves" + "zh": "预置 波浪", + "zh_TW": "預置 波浪", + "ja": "プリセット 波浪" }, "entry": "./styles/Preset_waves" }, { - "location": "/advp-style-preset-circle", + "location": "/advp-style-preset/circle", "catalog": "top.mashiros.advp-style", "title": { "en": "Preset Circle", - "zh": "预置 Circle", - "zh_TW": "預置 Circle", - "ja": "プリセット Circle" + "zh": "预置 圆", + "zh_TW": "預置 圓", + "ja": "プリセット 円" }, "entry": "./styles/Preset_circle" }, { - "location": "/advp-style-preset-solidcircle", + "location": "/advp-style-preset/solidcircle", "catalog": "top.mashiros.advp-style", "title": { "en": "Preset Solid-circle", - "zh": "预置 Solid-circle", - "zh_TW": "預置 Solid-circle", - "ja": "プリセット Solid-circle" + "zh": "预置 实心圆", + "zh_TW": "預置 實心圓", + "ja": "プリセット 固形円" }, "entry": "./styles/Preset_solidcircle" }, { - "location": "/advp-style-preset-ordinal_scale_ui_bottom", + "location": "/advp-style-preset/ordinal_scale_ui_bottom", "catalog": "top.mashiros.advp-style", "title": { "en": "Preset Ordinal Scale UI bottom", @@ -110,21 +121,33 @@ "catalog": "preset/widget", "title": { "en": "ADV Preset Line", - "zh": "ADV预置 Line", - "zh_TW": "ADV預置 Line", - "ja": "ADVプリセット Line" + "zh": "ADV预置 线", + "zh_TW": "ADV預置 線", + "ja": "ADVプリセット 線" }, "preview": "Presets/Line/preview.png", "entry": "Presets/Line/preset.json" }, { + "location": "/preset/advp-style-preset_gradient_line", + "catalog": "preset/widget", + "title": { + "en": "ADV Preset Gradient Line", + "zh": "ADV预置 渐变线", + "zh_TW": "ADV預置 漸變線", + "ja": "ADVプリセット グラデーションライン" + }, + "preview": "Presets/Gradient_Line/preview.png", + "entry": "Presets/Gradient_Line/preset.json" + }, + { "location": "/preset/advp-style-preset_waves", "catalog": "preset/widget", "title": { "en": "ADV Preset Waves", - "zh": "ADV预置 Waves", - "zh_TW": "ADV預置 Waves", - "ja": "ADVプリセット Waves" + "zh": "ADV预置 波浪", + "zh_TW": "ADV預置 波浪", + "ja": "ADVプリセット 波浪" }, "preview": "Presets/Waves/preview.png", "entry": "Presets/Waves/preset.json" @@ -134,9 +157,9 @@ "catalog": "preset/widget", "title": { "en": "ADV Preset Circle", - "zh": "ADV预置 Circle", - "zh_TW": "ADV預置 Circle", - "ja": "ADVプリセット Circle" + "zh": "ADV预置 圆", + "zh_TW": "ADV預置 圓", + "ja": "ADVプリセット 円" }, "preview": "Presets/Circle/preview.png", "entry": "Presets/Circle/preset.json" @@ -146,9 +169,9 @@ "catalog": "preset/widget", "title": { "en": "ADV Preset Solid-circle", - "zh": "ADV预置 Solid-circle", - "zh_TW": "ADV預置 Solid-circle", - "ja": "ADVプリセット Solid-circle" + "zh": "ADV预置 实心圆", + "zh_TW": "ADV預置 實心圓", + "ja": "ADVプリセット 固形円" }, "preview": "Presets/Solidcircle/preview.png", "entry": "Presets/Solidcircle/preset.json" diff --git a/qml/Common.qml b/qml/Common.qml index f86e41f..ca18ea4 100644 --- a/qml/Common.qml +++ b/qml/Common.qml @@ -94,10 +94,10 @@ Item { function parse_resource(resource_list, sort) { if (sort) resource_list.sort(function (x, y) { - let preset_order = ["Preset Line", "Preset Waves", "Preset Circle", "Preset Solid-circle", "Preset Ordinal Scale UI bottom"]; - if (preset_order.indexOf(x.title) < preset_order.indexOf(y.title)) + let preset_order = ["/advp-style-preset/line", "/advp-style-preset/gradient_line", "/advp-style-preset/waves", "/advp-style-preset/circle", "/advp-style-preset/solidcircle", "/advp-style-preset/ordinal_scale_ui_bottom"]; + if (preset_order.indexOf(x.location) < preset_order.indexOf(y.location)) return -1; - else if(preset_order.indexOf(x.title) > preset_order.indexOf(y.title)) + else if(preset_order.indexOf(x.location) > preset_order.indexOf(y.location)) return 1; else return 0; @@ -117,7 +117,6 @@ Item { styles.push(name); stylesURL.push(styleURL); stylesCFG.push(styleCFG); - } }); } diff --git a/qml/api/CfgAPI.qml b/qml/api/CfgAPI.qml index 5eeaee0..afdc0a0 100644 --- a/qml/api/CfgAPI.qml +++ b/qml/api/CfgAPI.qml @@ -38,4 +38,6 @@ P.DialogPreference { font.weight: Font.DemiBold } } + + P.Separator {} } diff --git a/styles/Preset_gradient_line/Config.qml b/styles/Preset_gradient_line/Config.qml new file mode 100644 index 0000000..71e6201 --- /dev/null +++ b/styles/Preset_gradient_line/Config.qml @@ -0,0 +1,161 @@ +import QtQuick 2.12 +import NERvGear.Preferences 1.0 as P + +import "../../qml/api" //导入CfgAPI.qml + +CfgAPI { + version: "1.0.0" + cfg_height: 660 + + P.SelectPreference { + name: "Gradient Direction" + label: qsTr("Gradient Direction") + defaultValue: 0 + model: [qsTr("Horizontal"), qsTr("Vertical"), qsTr("Oblique Upward"), qsTr("Oblique downward")] + } + + P.ColorPreference { + name: "Start Position Color" + label: qsTr("Start Position Color") + defaultValue: "#f44336" + } + + P.ColorPreference { + name: "Middle Position Color" + label: qsTr("Middle Position Color") + defaultValue: "#4caf50" + } + + P.ColorPreference { + name: "End Position Color" + label: qsTr("End Position Color") + defaultValue: "#03a9f4" + } + + P.Separator {} + + P.SwitchPreference { + name: "Center Line" + label: qsTr("Show Center Line") + defaultValue: true + } + + P.SelectPreference { + name: "Line Position" + label: qsTr("Spectrum Line Position") + defaultValue: 0 + model: [qsTr("Both"), qsTr("Up"), qsTr("Down")] + } + + P.SelectPreference { + name: "Data Length" + label: qsTr("Spectrum Length") + defaultValue: 0 + model: [64, 32, 16, 8] + } + + P.Separator {} + + P.SpinPreference { + id: _cfg_preset_line_Channel + name: "Channel" + label: qsTr("Channel") + message: "1 to 2" + display: P.TextFieldPreference.ExpandLabel + editable: false + from: 1 + to: 2 + defaultValue: 2 + } + + P.SwitchPreference { + name: "Reverse" + label: qsTr("Reverse Spectrum") + enabled: _cfg_preset_line_Channel.value === 1 + defaultValue: false + } + + P.Separator {} + + P.DialogPreference { + name: "Rotate Settings" + label: qsTr("Rotate Settings") + live: true + icon.name: "regular:\uf1de" + + P.SwitchPreference { + id: _cfg_preset_line_Rotate_Center_Enable + name: "Center Enable" + label: qsTr("Rotate Center Line") + defaultValue: false + } + + P.SliderPreference { + name: "Center Angle" + label: qsTr("Angle of Center Line") + enabled: _cfg_preset_line_Rotate_Center_Enable.value + from: -45 + to: 45 + stepSize: 1 + defaultValue: 10 + displayValue: value + "°" + } + + P.Separator {} + + P.SwitchPreference { + id: _cfg_preset_line_Rotate_Line_Enable + name: "Line Enable" + label: qsTr("Rotate Spectrum Line") + defaultValue: false + } + + P.SliderPreference { + name: "Line Angle" + label: qsTr("Angle of Spectrum Line") + enabled: _cfg_preset_line_Rotate_Line_Enable.value + from: -75 + to: 75 + stepSize: 1 + defaultValue: 10 + displayValue: value + "°" + } + } + + P.Separator {} + + P.DialogPreference { + name: "Data Settings" + label: qsTr("Data Settings") + live: true + icon.name: "regular:\uf1de" + + P.SwitchPreference { + id: _cfg_preset_line_dataSettings_autoNormalizing + name: "Auto Normalizing" + label: qsTr("Auto Normalizing") + defaultValue: true + } + + P.SpinPreference { + name: "Amplitude" + label: qsTr("Amplitude Ratio") + enabled: !_cfg_preset_line_dataSettings_autoNormalizing.value + message: "1 to 100" + display: P.TextFieldPreference.ExpandLabel + editable: true + from: 1 + to: 100 + defaultValue: 10 + } + + P.Separator {} + + P.SelectPreference { + name: "Unit Style" + label: qsTr("Display Style") + defaultValue: 0 + model: [qsTr("Linear"), qsTr("Decibel")] + } + } +} diff --git a/styles/Preset_gradient_line/Style.qml b/styles/Preset_gradient_line/Style.qml new file mode 100644 index 0000000..bffa52e --- /dev/null +++ b/styles/Preset_gradient_line/Style.qml @@ -0,0 +1,187 @@ +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +import QtGraphicalEffects 1.12 + +import "../../qml/api" //导入CfgAPI.qml + +Rectangle { + width: widget.width; + height: widget.height; + + LinearGradient { + id: gradient_mask + anchors.fill: parent + gradient: Gradient { + GradientStop { id: p_start; position: 0.0 } + GradientStop { id: p_middle; position: 0.5 } + GradientStop { id: p_end; position: 1.0 } + } + } + + layer.enabled: true + layer.effect: OpacityMask{ + maskSource: StyleAPI { + readonly property var audioData: new Array(128) + + readonly property bool centerLineFlag: configs["Center Line"] + readonly property int linePosition: configs["Line Position"] + readonly property int uDataLen: Math.pow(2, configs["Data Length"]); + readonly property int dataLength: 64/uDataLen + readonly property int channel: configs["Channel"] + readonly property bool reverse: configs["Reverse"] + readonly property bool centerRotateFlag: configs["Rotate Settings"]["Center Enable"] + readonly property real centerRotateAngle: configs["Rotate Settings"]["Center Angle"] + readonly property bool lineRotateFlag: configs["Rotate Settings"]["Line Enable"] + readonly property real lineRotateAngle: configs["Rotate Settings"]["Line Angle"] + readonly property bool autoNormalizing: configs["Data Settings"]["Auto Normalizing"] + readonly property real amplitude: configs["Data Settings"]["Amplitude"] / 400.0 + readonly property int unitStyle: configs["Data Settings"]["Unit Style"] + + property int total: channel * dataLength + property real logAmplitude: Math.log10(amplitude) + property real degUnit: Math.PI / 180 + + property real halfWidth: width/2 + property real halfHeight: height/2 + + onConfigsUpdated: { + context.fillStyle = "black"; + gradient_mask.start = Qt.point(0, height*(configs["Gradient Direction"]===2)) + gradient_mask.end = Qt.point(width*(configs["Gradient Direction"]!==1), height*(configs["Gradient Direction"]%2)) + p_start.color = configs["Start Position Color"]; + p_middle.color = configs["Middle Position Color"]; + p_end.color = configs["End Position Color"]; + } + + onAudioDataUpdeted: { + if(autoNormalizing) { + if (unitStyle) { + //对数化显示 + for(let i=0; i