From f5c6297902ab30da88482a6b11e655cb79b216f2 Mon Sep 17 00:00:00 2001 From: Nick Black Date: Sat, 4 Jan 2020 07:21:54 -0500 Subject: [PATCH] Chun Li demo (#251) * chun li demo * ncvisual_decode: allow multiple renders of the same frame * add -H to notcurses-demo man page * update section 1 man page versions --- README.md | 3 +- data/chunli1.bmp | Bin 0 -> 12282 bytes data/chunli2.bmp | Bin 0 -> 11158 bytes data/chunli3.bmp | Bin 0 -> 15530 bytes data/chunli4.bmp | Bin 0 -> 19850 bytes data/chunli5.bmp | Bin 0 -> 11178 bytes data/chunli6.bmp | Bin 0 -> 18030 bytes data/chunli7.bmp | Bin 0 -> 18030 bytes data/chunli8.bmp | Bin 0 -> 10926 bytes data/chunlivictory.png | Bin 0 -> 21864 bytes doc/man/man1/notcurses-demo.1 | 8 ++- doc/man/man1/notcurses-input.1 | 2 +- doc/man/man1/notcurses-planereel.1 | 2 +- doc/man/man1/notcurses-view.1 | 2 +- doc/man/man3/notcurses_ncplane.3.md | 11 +++- include/notcurses.h | 3 +- src/demo/chunli.c | 78 ++++++++++++++++++++++++++++ src/demo/demo.c | 4 +- src/demo/demo.h | 1 + src/demo/unicodeblocks.c | 2 +- src/lib/libav.c | 4 +- 21 files changed, 106 insertions(+), 14 deletions(-) create mode 100644 data/chunli1.bmp create mode 100644 data/chunli2.bmp create mode 100644 data/chunli3.bmp create mode 100644 data/chunli4.bmp create mode 100644 data/chunli5.bmp create mode 100644 data/chunli6.bmp create mode 100644 data/chunli7.bmp create mode 100644 data/chunli8.bmp create mode 100644 data/chunlivictory.png create mode 100644 src/demo/chunli.c diff --git a/README.md b/README.md index fedd5ca2e..9887fb28c 100644 --- a/README.md +++ b/README.md @@ -730,8 +730,7 @@ memory. int ncplane_cursor_move_yx(struct ncplane* n, int y, int x); // Get the current position of the cursor within n. y and/or x may be NULL. -void ncplane_cursor_yx(const struct ncplane* n, int* RESTRICT y, - int* RESTRICT x); +void ncplane_cursor_yx(struct ncplane* n, int* RESTRICT y, int* RESTRICT x); // Replace the cell underneath the cursor with the provided cell 'c', and // advance the cursor by the width of the cell (but not past the end of the diff --git a/data/chunli1.bmp b/data/chunli1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..65eb54c8bc0f4564ba294a179254bdd89a081e56 GIT binary patch literal 12282 zcmd7Yp^jw76^HRjLM(+?3NbV^N(Kf-OR^-Al_v-^Tq!gUUvR8?WsDq>YT6sb#8TgwQv6NzdzippMNfY{$pvsU)r0c{p#k+ zo8K(<-SYf*zumWGc=y@e-0c4|-o5$rU;o~dQ|+%$nE1upce_*C389{xa!MX^js-e( z{iiU`9zOf>>)oLi-+Y$u8djb!Zr|mNsd+9O8q@q9O)s`0pEX6L&YZ~N(ely7od_cZ0>8R>k;{-WliPGZDe z!;{AAd$!Dv`6amRgm&^d+v@MhT3I-{OYp^BU##jPt?^@~k@&3nkJUWEv&0fNZn=8j zkFH+Uq+#qhV^4FoeYA(($(P_3v-nf5`qgh=mawf6w^ROrJmAt)1NZVqw4U zp9Oq3`HoxO;>RX-dh+E@bI;tJ-ZkvjPv%+Q#b(8^mbLB@Z0qF`qnP*cmSbn~ z-O()HROUYttBe{1ix3!+;xW)GT60NPV zXF0@-jg47<`eSA>v+`s18;qs7W?ko5ytH2TdnvSacXhnwKE@iayqMArv)X3k?pgaY zehIDHZkk{^rmx(wny;x`?JLR{0Plbrf%u7%GSYyWT8_hgpNwdUHV zc1>QfW5$9Z_B1@iUARoFet!Me&h4`#Z_m|XLta93eevEAI z6q{zT#@Btly}u{BH807HvojWVveUHpQy;fEEM~s$Y1Z1w7I(~^+5fZele;q&S4;PM zI}+Gi-1soHPhXR#o^ArBUo{bHHomO+ax^aAChXZmT2$Nm)$O4=DL9s?H>NGO@uAwrz2+;} zg;pGO!d5FW<2e-8Z&Z!u@n)S>jSu70`lYyW;f$ovn%ko)!P0np>OmXWwCk)#?R3j|T&Y`pY*xdFZCw4rz z>B^VR7~|IGH#cU_UV|Gu227aME)L`By=RywyZ&o(W5p0(-}lDOB0t91+neXFp?BX? zy=(T+-HCJ7zw_Wrf_IE*E@l(cyE?5z45Y`_4%*Pa%zG*W=z=JX*kuiv3J|^Y;F?BUV0kuk-%zfA;U^?OHom;W;rV9kt%Obf&EqKi=Ly_5Rv=s|idrec-=c zwZ`3kV(ktwK2e(MOk0@e_c``7uRh$#^zELG{W?HrL|xdulbGio;-@WUw*G6~(+79u zj$8IH`Hj>0Q{{I4>;1gyzrSa2&)-tmjXx>9mqWl#-#tJ5_YJG|$<+3Ng2A?Gzy53b Lhwt!@@m>CZb`ocY literal 0 HcmV?d00001 diff --git a/data/chunli2.bmp b/data/chunli2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..382d4c2f852e926f237364a176779e7844017122 GIT binary patch literal 11158 zcmciIKg(=a8HVwRc4`r@u?fUlk(7ZnAqc4qVj*@4c2|z|MUFx(Z@geO*6N)Ut1P_@Vj3e-bDQ1x1T?W zH<9a>9Dn@r;i>rRKVQ8F7w_Ny_|qx$fBA=@URs43 zUW(~lUy}LvUw?4o;nMjMcle9H{PZ=GRyBOpcX(ye`{@0>b|-jASLa!KZO?Px8#%?6 zSLWjIwf=X0_^Z3$mvU+^-3{YdlZX3_?|kGt${@xZ!AnD(lBo~Ih}SAOSjh@&2lgVGyLIT~A;G{@5B z^Im_ar`=clTbbB<{7ql1G&4Co^yCxrIrK9Pw7>dS^Y$O_#OWnDU5Ad*;|BjZ^1b zt8cw|oVfEWpJQIrXs`K|X`H^v#HQUjn7hW6)7pI1rt#9bUR z{u)yq_Nna}Gv4&b*d=aEZR@o&hyJ{~^E~-B?~uK#S1Z>VImtGOhPqSYv(f$*ME0)=aK_s0wx@lbr?>UXH+gbYv%IZ|f!E*F#$w9RK5Mp^ z(_?!Id)<9G?G-CCtufbHuQ8{`mzdRGZmhJ%)yAB)=I5n0|5m1Nw_N7mG;{TsFY294 z^{oE(JB7~t@ZDA4HE+{Ri*vL#X8Rkz#OyaNrhV4vm-o3gk5{JWOaAsd9>*H2TQ$yF z;_~(ue{thz_h^i}GFN})rEA{ZM>OJM=B;l^Ok*>5+($LWbZ4+Ir@xp}=RC*mP=4)c z>5PfDYQ>ovtxfA5&bk&CZ)%m7mX-I2zRATDm}%wf%Im$Id-wF!TgZjU*Ul8XJJh`O zdl+-Ay)^iidEfN0^w;0Z)nQG3&s?|mG3D>?2|8jLFYpD=`G9+`R*b&aYRATuKi+JO z`wiOf?OV02>u}ZW%+g5@R`)kwwa!=IuDSL+V+niYl`oF`*!i2s#vbKXqdaMmmj|oY z@$;d*_qH*owz!jBUw!wo+80x<&d=SN9(S+eTG#%)t$P$}^19nA*E9aT=bAn~^0l+9 zPZPa)j-{?gndQ??O?X8$#kB4bo#m~ScShs5G*+AbJ>0yNcXHOg`8>re?$wLy8|co^ z(zo2VRbLn{)Pt#xsd>-cmD4>*8}?STF2C<#(o&w7*V?>jOAHbGi?k{eS4Vw9V|zh%7?)N-zV#4n43IYXS(HWzLjI;$!E@ZbM0wv z@@~b#7{^i2ElpMae-(N#QmcQEa*ojhJ*8#}!H-s|^O9o;wM_CCjH zUd^$z@}$r21^Lv|@0Hf7!92Dxe(|-uTWub#{>p)M^6l7GL;AJ(^8Y*a-pTVV);exq z+%xCQj1_y{<<{Bf4Arl{=H7b7O!Haeho@(`_;+TXb>mh`9P7HfTa0x)CSG?#Uru^( z)0L;a6Iu~>&As*9ndDu0ohhFAxUtoPl|TBlZZR&6%PSw=Iq&)Y_a00(57PGtQysWs y*2J^8owc^#D>3i=dwQ~FAD6B(oBng)h`nbyb6@Mrd(wRR*Rtn(>imkWz5fMzDpF|x literal 0 HcmV?d00001 diff --git a/data/chunli3.bmp b/data/chunli3.bmp new file mode 100644 index 0000000000000000000000000000000000000000..94ba21334c7eff88de330cf10a341a9eebb0ea1a GIT binary patch literal 15530 zcmdtnzm8-_702-b5+o8!B!n9hZa_dlfSh0CAt5o5Lx(&9At52* zzQNF+zVn?qT-_dbug%`ujJCG^ovQkM&pB1yv-|1q{`RYf^Ut48fB)%JesLpu3_oq*?*%tHG-g}IF^Tpfe`*VqB+S~(=yV0Al z<@?F=+8x^?9_ust8%s>`Z!+mOm))FS@3&`vt#vC#GdAXroNsvOoBpSH`hPuV%~9Vs zzEAJ0lV6{;PyerZCi9_rPAoru z^ZEJBbq~tD-h+H@+*n1vt>c&No;4QllQ&nb|L_#Abj65az5|EjIq4P?EPlttqkm=! z=2X)iN4a*yx1iWyd5tH#zyAFt-{Lw1f>R+E7 zkI!{X^sVEArSZNG@BzCc^7tNEjOfFtly5UOc>3I7b2J`${GNtq#weZ{8#xw__EC9o z;K5bSZSlx2JV(tncS(FO$T>dORxa^iIcjVskJwz|!Pfg+Y>t|1#Y2r}-l2Yfm^^HH z*VOCxa?gIbh6TqZ9=eN9ZENp=XTAx&)3FpA{Uh?wTfT{pH-T1T^POJvba%RQ-*=Aj zm2&I8@nG5F>E28pF`7Kyhg;9RWZyZxp|3KnzFXS!R-Vp@r#Ix1zFWp)@!g~ERD5@4 zT5CV`{aabzUpnU!k3GyeqjT)N#Utm~wC9J`_J|`UXVR>H)*ja!8wXAvy1GAjls$N! zb<_UI%l`{%zi_=h&lwvy|CMi(2j|w^DLy#yx^vdCo%>$Zre)~Kf5l_bK6GclSuek* zU5d}-5%bCx&xf$se~TFtp5<=5usGj2)@hfU=Y39m^2$2>e7ug&R<5mitT}7g5_e(j ziRBy{Yh!pef6B9S>`q$y{u`6pSWM+%Op}LAe%Ru%PyV3;&y&7qIp5kiX|%@r&YMi$ z%;gR(@!`Xm*t1QCI_{-@`9CY#vhOT?`jz(mPCSFAP6gJo?k8-x`w)1`mJIW3T*8Hx9W&hc=&@k4f8{b;Tz3SgNgM>zo;z z?}Nvgiw~ANr|qmXIg{36z&64`Vp00+X^+WcKgE9bQf`TlGp#KqG35Jl zF5SgVO{4Q>jO^81dwUbLW4e~dna@1s(JOW5SrZ2>Sn?4c(io4n!iLUlvu}>(Vqt7D z-NIx4b9`RmXeu5Ic%0*GF)@~Z>{$%V<2SFZUdJfbnAj;XYcG<>L>}aJ$pH6#Or*2I=+2kK~aj-FdOFXu0J2NKrl5b1SnK#yW zH7&95Z(7ak$Dl4&*;rdl=GrZNA2LRBpLyELXV3C|f6mdGAM-8$(!{s)ny*;PH|ki} z#$e5@_x@TwXDXAWwZ>yn(?(M)@x;MKX-{=`3&a1CBh9bX^mK33u z+&SZz?tumKj1T>^W2org8&3?_aCBepjisC{=i+f+VlkH8J=N|<3~K#*Wy$aKR~p;1 F{tv^!_@V#+ literal 0 HcmV?d00001 diff --git a/data/chunli4.bmp b/data/chunli4.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de8c0278bdc2bb0ba4450cdb36800a70acf45cc2 GIT binary patch literal 19850 zcmeI$v2G;C6@_8iP7F9P;KZRqhYTGON~}bH;3sgXZ~>=&0721)4*duU75WhzI&|o8 z-(Wmn&-}xy-Wie$aXFl!7b@NAs_N?c&$(6I!!N)7{_C6N-}l@9|7~0Dwnft~Zoatr z)i%2L-EVfqlx?>4{w;+xGMzIwludp&NKeq*jl11y;EV~zdyx9>LZ zzWeuHgIz8dlTO#7!Sp`%;>-p0bfUqsSDuz$uX+^zf4%?9Qh1J2?u+ZX{78dq;b+d0 z%gecUw@Cx+Uw!+-a(%xKc4y!Oa2R}<73{skMCJWA`)}Gkf83bW6~13Of4&#vcde|? z`}jq9aG8$pRvmMkSaHdJ{wwsr8E^Idon$BRdazx_`q_oPw#rJT7Werv^pTZswF^pqyv^K?lYG4|qX&jG*T zra##Ep0}7{FJi(c52}mRV;9|Hj`@t&QpbLbpYPacfeAxQX;9nLAg$6yU;XFMV9C)F zV&k@^$v?fPLHx1Lm=3Y#zd13Rw{yewOY?iSH67C+_GA2c?`$^?XFiHk1NC&!=Xqi} zip_Bje$P~<2C+NW*8J^z8n{Qnu-4#|9?fSSW5k|!A`L%Vv$e^f%{?^_irf=>y zMxh55ZKt%53+9gB@4Pbys(XfUUB5>D z*gx{W-|SoVH9sEjLwx#N7h@I6pEMAcdtTD`{j>5r|HVAz@yGl-Zd~qF%4hx?ug|^Z zNaM^qi?Q~>L9;XQPj+>=?~MM4f9pNA*sZ&@r$PP2={28~?o-EqZvWT(Q-l2X4Lkje zrMxZ=;udLAf6T|?Ir;f>ieDa-198NaZ`O{9PBhT(9;KW}tJs^Xcy9jA`h3Txt$kp9 z{NI)P{GS?N$AiB(_kDYPY7xJA7VXZk|1nxy-=)^4jdzN=w)=gs<1Y`U=ke&PxSy`j zjFoRw3+&p?fPQ$SHCl%fd)~RWUK%VM`}~ftXk2F|9lQ&)#eR6$zJj^3?mNe|wJJQ1 zz4d9wAJe_hyEAd}8f%>Wul*GNIT#;$<}q&kycg4;-!9GqbuoV2+Kg2$jXl5P#vZ?% zz%%mzV;W$eMf)Z2=X>licOFcBW7A;jFuAMar`ba}ckVtsr?~M?b}aGJ04EI;V_jpe zXfyuYjHjNzX3y_43fai_QNUHL#|baJJ^j9)IH||IG1p5IgtGZ%+5T zHvZW0t=T8PwO5Rz1IGMMgQ9l)&1tUJ#*bZjh@EfxCwm-uJT-{hm^rU+{q8%p2Vbf^ zZXV7x^2j>#{S>?V%u%kF=VCe;qqsJYdAskWIM>ga+{gTx?CBDZ7?XLnb07HW;JZhA zW4bSPn(psgFYB{kx31PC;%jYj=exc+HYW4z85Um5_092VS3db3)OHSj&zx(kZf(|u zJ^ppR$2PbZuUyyHd}7?@ne6KNUy8r|*gEIhTI1wbpX{-%xxvplV{cA#tl4R+-<+R4 z(YFu4&es?`d#-7EJ(-WOuGia`Q{3}8)}Uy6Detj+|HMDnbBvodpRzXmPhp?WdMWQ? z?{~KEkUW_AZ9Q?z5lm~Jk6jyQJpSgO?^@$y>`#5hvFAS2);<>}@6^EhT5sGKelEMY z*6eGYKP9&w;;b)^vBt>bSO6b_I9epykJ7 zj1To=D1Y+%A#P(oCAS`Wc72n1)?+VX$J~8CH)3zU=lhK5QvB3?_0;tpW9C6x)4TH2 zIUgH`J@4~9_IQh*i+ipSA7)-p_BrM`>T#zh#+mOii@0BcJ+9VNto^wnc5}xh=Dqit z`Z>6ti|?U%CVRf-y_}1kKIOp=b$;2j>EMtQ}LrbCg0anmKL*t->hW-hLhJl9r z561m^=FQfXdvE7%dM+#1^>j~nz51$ZX0?9$;@{tQ_47~p`**P?#a~`Zn=EKuxum1AR((%Wo8&B-Jdbu00a=Y5QKXya36USC9!~6R2{jmFW zf5Se$*$)`^iD4Ba9j+QH@3JtD2JiFLpTpsBsK&e-d)9Y3{Cx3pc)WjGNBHQ+|kpYJ-DTd2io+sa%-knGx$zW0+`y0rUBr>oVV0_Vs^=A9AE{ijCGVD=Gy$e~QeSUbLN ze4lt0p5IHnKe%S?6tk|^9FNawWP2T%?6;0EWyojr8RXug@1@XNGRbAtI|Z&T{J}sM zBYQOGjEmSsH+#ogU)DZ0-}3OIFV--4^dWsE*5xBNGKpQopM4F>XBi&rjO?KfXZ6Nt3Ljr^WjU%7p2l8{yu)48(}~GB@(q`3 z4K{w&s80Erc~`A+?Q5P_nX-(9Idy?aoLY-Xd{N?!>-0Rqq<^SeWO5yunH{<2KrVB*oYzl056d$$%xOI1Jm!p}(^}w7XZ0oZ(una$ysPy4@#FKjshLa%HpEx_SuTj3 z?>ce=ml)*gUq6m&W%PN5%ZJ#EuP&75NEU3bTU^#;<2xHVS;J4}R#yBoaidRboAsiZ zxH21_Othb67QQ}ixEcLdyv9{bNR^z_!_zZ|2=9;jxra&xxQO* zVNqYk%#F2;&(MAAI-i@~SNOMQ@E`kFz22YCuDMviB@V1Bx5P}1_3gFaL2BhbHCQ7t zpOpo}K6@xGIc#ywL+>0{?V-l@GgiIy#)uRwpG4kZ+R`# z9@|2*EPaz}^9#wP&)d;hd>#ewI zWJH&7#2RMeZ1 zhJi76l;s}AUR?a(kKeTZmS%1ojI8%&!sRz~Q z-*uibYSZHrx&FUU@%tUu7<#ecqQ|_d&EAsd*pmxGzl^*q@E>Dg-S4eldDg#dHThiU z^Ed#pSypa$`(67jfTxu4CWkJi?7N&iC)bKl5hVJ+|9uBAf=pUax`{8G=Z1taRow(O|kFJgfZI29(u7~(XyHETB^XE@q z9G|~@bNuT0%_#@>x&M-LN8VSj|2+Qw?)Hc;IoJ{tTKgH=@A2m~=k(?W_S@Ur!YjA^ z&7qFm=$}^h!RAHIIMMnZ;)eB~x4#vB{Jq#mZaCro^6FKo{hJquqjpBB^{*PWKJmsm zHN-!iS>|SKwecRfxtBc;^V^qKC7*xX{8;*H%bfN4RO`um*WRK(8negQE7m%F*r^?@ zSAKPd1GB$Y_vriPuiK(C?6l!;v6DygaaL`&eA!T^sox#{@Vs02z$vqNm}95@yJIhV z`os&T+pr1Uu(P7wiC)dcWJ#u&bk9J>3iB0)vCRaeiCV zr#zmX@vu@mn3{LRo`Mc-G=iBJYcm&k@-W9wE__bt(Yj}D(;)v+4y*xq&|3XreEs#w zTo3QQ$gy7A@WV&Ft2gbee`G>fAkyx0X})IqjFer^jn>z(ozv_Pvz0 zhW2^haqdy~+=uUxYfDT%&tQiIURcwTn_7^aIeTS?6JAW#mhS5Be%J$h?&DSs$S!y0 zz%e}IaFZ9j?E2Q)mm2f=E8=1v-0;v&e%QHIb2I0hOk2K-Sd)Pm;m&8Zx+i;T zZ65HfhmlX#b?q&&oO@1-oxPcHBs;l*2Tm+=;5eH1&JCaJ#tLV0)2`WT=F9`@kRPpH zEBn?_j-9ie?9^%NyJeS0ug+>u4!G7@qcv8u*ZtN#A9GChIc~m7c05K+%a1n)_hE;# zX07`lle4uJ>{#oXWAMRjytJ)z_jcyO`>{M<_o!77Kj zz&qB9M|0vLZoFnbw(8IQoQrVF&RX_q_rgpZaAR;{a_f^nbC72s^@1@bC%$*?WJb3% zV)r`ZoSXTqmpRYEWY0GD_n>)d4PWxggJ)cRe$S^3zjI`^2I_Y{*?ZznEnD31$tXYU z(w82at43-e>!6Un}a#uOPv#Yi(7VhTffN{?Z%pC zjb!hEZ7BxNaTr>Lw(9IzMh+O`8u@}3zbAIM=d^C=ExWmZU0&wbHNTYeOJ1AfhDWo` zWlgW-=M4JV8|qm$L#ls!AVqu|k&d$c{(xZK2!*2(QV8RL_VBQK1#O>-=y z&b_+H4KI4jZLOoRy4QZHgU(qA&%YO8NWEL!5 zxU~*5b0>Be+lg0eeh=XH5$YNq_cy#UTjyLyTWZ7hPH;<@HM75w!_Kvu8Lg9*Hntbd zlNVMv_1Q*$=E{e*lfI+gnTK9APhOakHF;^*{hFD6=A&25lbOAo%(Ux1bG%2-9NO~g z$w9B&)L^oyY3PMHd*t1m9v6(_=n04m+!6qZQ^_D^v*Vyv>lJ5E8MWs_U~-Y0Qt-Kju~5_!vvq) d)0xNfYqW>T?RzP{$=^!Y0~tfpIeQ3*{{oH%&8h$Z literal 0 HcmV?d00001 diff --git a/data/chunli7.bmp b/data/chunli7.bmp new file mode 100644 index 0000000000000000000000000000000000000000..aa5c018213cf66e7ab710dae51efaf6f86b9e179 GIT binary patch literal 18030 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 z6a~XwCEJoframe->data[0]); do{ do{ if(nc->packet_outstanding){ @@ -370,7 +371,6 @@ int ncvisual_render(const ncvisual* ncv, int begy, int begx, int leny, int lenx) } } } - av_freep(&ncv->oframe->data[0]); //av_frame_unref(ncv->oframe); return 0; } @@ -381,7 +381,6 @@ int ncvisual_render(const ncvisual* ncv, int begy, int begx, int leny, int lenx) // up playback. int ncvisual_stream(notcurses* nc, ncvisual* ncv, int* averr, streamcb streamer, void* curry){ - ncplane* n = ncv->ncp; int frame = 1; AVFrame* avf; struct timespec begin; // time we started @@ -396,7 +395,6 @@ int ncvisual_stream(notcurses* nc, ncvisual* ncv, int* averr, if(frame == 1 && ts){ usets = true; } - ncplane_cursor_move_yx(n, 0, 0); if(ncvisual_render(ncv, 0, 0, 0, 0)){ return -1; }