From 0fd255682dd3290094c409fd0bba0248b6aeae36 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Fri, 8 Sep 2023 20:54:27 -0700 Subject: [PATCH 01/24] wip zig orca sample --- samples/calc-zig/.gitignore | 5 + samples/calc-zig/build.zig | 54 +++++++++ samples/calc-zig/data/segoeui.ttf | Bin 0 -> 955804 bytes samples/calc-zig/icon.png | Bin 0 -> 2717 bytes samples/calc-zig/src/main.c | 190 ++++++++++++++++++++++++++++++ samples/calc-zig/src/main.zig | 10 ++ src/orca.zig | 17 +++ 7 files changed, 276 insertions(+) create mode 100644 samples/calc-zig/.gitignore create mode 100644 samples/calc-zig/build.zig create mode 100644 samples/calc-zig/data/segoeui.ttf create mode 100644 samples/calc-zig/icon.png create mode 100644 samples/calc-zig/src/main.c create mode 100644 samples/calc-zig/src/main.zig create mode 100644 src/orca.zig diff --git a/samples/calc-zig/.gitignore b/samples/calc-zig/.gitignore new file mode 100644 index 0000000..53d00b4 --- /dev/null +++ b/samples/calc-zig/.gitignore @@ -0,0 +1,5 @@ +Calc +zig-out +zig-cache +profile.dtrace +profile.spall diff --git a/samples/calc-zig/build.zig b/samples/calc-zig/build.zig new file mode 100644 index 0000000..044f6f6 --- /dev/null +++ b/samples/calc-zig/build.zig @@ -0,0 +1,54 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const optimize = b.standardOptimizeOption(.{}); + + // builds the wasm module out of the orca C sources and main.zig + const lib = b.addSharedLibrary(.{ + .name = "module", + .root_source_file = .{ .path = "src/main.zig" }, + .target = std.zig.CrossTarget{ + .cpu_arch = .wasm32, + .os_tag = .freestanding, + }, + .optimize = optimize, + }); + lib.rdynamic = true; + + // const orca_sources = [_][]const u8{"../../src/orca.c"}; //, "../../src/libc-shim/src/*.c" + const orca_sources = [_][]const u8{ "../../src/orca.c", "../../src/libc-shim/src/string.c" }; + const orca_compile_opts = [_][]const u8{ + "-D__ORCA__", + "--no-standard-libraries", + "-fno-builtin", + "-I../../src", + "-I../../src/libc-shim/include", + "-I../../ext", + "-Wl,--export-all", + "-g", + }; + + // -isystem ..\..\src\libc-shim\include ^ + // -I..\..\ext -I ..\..\src + + lib.addIncludePath(.{ .path = "../../src" }); + lib.addIncludePath(.{ .path = "../../src/libc-shim/include" }); + lib.addIncludePath(.{ .path = "../../ext" }); + lib.addCSourceFiles(&orca_sources, &orca_compile_opts); + + const orca_module: *std.Build.Module = b.createModule(.{ + .source_file = .{ .path = "../../src/orca.zig" }, + }); + lib.addModule("orca", orca_module); + + // copies the wasm module into zig-out/lib + b.installArtifact(lib); + + // Runs the orca build command + const bundle_cmd_str = [_][]const u8{ "orca", "bundle", "--orca-dir", "../..", "--name", "Calc", "--icon", "icon.png", "--resource-dir", "data", "zig-out/lib/module.wasm" }; + var bundle_cmd = b.addSystemCommand(&bundle_cmd_str); + bundle_cmd.step.dependOn(b.getInstallStep()); + + const bundle_step = b.step("bundle", "Runs the orca toolchain to bundle the wasm module into an orca app."); + bundle_step.dependOn(&bundle_cmd.step); +} diff --git a/samples/calc-zig/data/segoeui.ttf b/samples/calc-zig/data/segoeui.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0f52cbd9c914110a410def0773988650986c428d GIT binary patch literal 955804 zcmcG%37}j>mH&Tk-`ls>x8xBLvJgT72_Xwf5CsMzVnjriu*hb>umxnz0J03Cf+B*T zsECS)fDjP^L_|Og0TC6(1sFu!K?VUCMMOkINdG_IQ@6VNy}SoF^ZQr7Q&qQaEvHVM zI(6z)bw5kYY(2cpKD2Ppcf9?ORoRZ#yl}GF)XUz!@NGMM>)P*q$C|g?X_oH$_C>qx z`R?mJaF;c|y`CjI-}Cl8-?jb0M^E^x^;RA=JAcm3d+oX7duKlWRkL?JWj6ZpUEa3G z+ii>`*8AChGi&a)=VtTYbMUsGGAmViUb6SXUG_a`-_sv7JMu?n&T;zJLI7K&)VUB zEA_me_a8atpi`EOU)l3C<>{|YKIX6!587qnEw|9$i9CPk*n^HaY}fCO`Gz%*qrQzk zw(PhQPHgRNCtLF~&no}2;}2W*nP(<_%aVVtXI9+~NiiHp~{;75RC#C_mgzP9CoE0>WkK zq}Jo)-y2YP3~(CI3tR~t2OJFS4;-lcDqB7^=~q1p(~IoGl`CyUd4`S2F0xhG^LAkQ z62hjfN}sY-<{j4t8^|uO4e7@{X|?qP;TGWVM7jrk-`MuZ2Eg$qTb|x%OR}4R&1^~O z4BNuvXWR1RS^E2IYwPqSk1x+3x8)h>*-G+KPWejrQ2sDGqI9#(rF59_7^8l+X~v>p7tM5zrFADTYZjwa{PtUFyJ_XpKy!-e*1#oAAtvfd)v4P zzit38;T9n^o112KG~;tCaHPf~-OjE|ud%(d{pkMZBCw5+3vO){@Now-geFFc4&SzeOqbs zXz!De|GbXPoqrCbo(IaC*yhk=F|dF6H+Ej6mD;Qv4;)S3U}4Ql`fwz0Z1RvD2^_1s zvTN;V(OqMo9K7Zp@LF0r+ZGG5WsEJL{ySejWcyNn-`e%I$j3utA)X`@z<;NdHf+5N z{Dt@g@3;C6XsjY6&)V|Ri?ng0O)Z^f3rfe@#>pjibZLR@kz8q;mp*UXB}#wMmcqvy z()TgqS@DhdQ#>O6U=B>oPNjd~?tOsA#b-{VQ>Pvm(^oqmQ3ZSb87)q3|s5 zVlIm3Vko*e-!UgOFR~DRu8j|K)aMCddX~*}eupn(7-F{ZI!Fc$qSX)@L|Q~TuN5M%oEFzJhG*L(c;x?x$9~0kMqvOc4lb`ym>V1%E9*4Y`T@xb8P2~^z7?)kiVP9SiIa? zgFO3cwuLp*PuebpJiR=Q$QXXWgA49?qU+UNGN< zOXU~VU->QX?g3Z&l$~qal&|GkAT95&$B+&k^i~%bhZccat&#K)8Sz1&{_!3 z4Wfb86VX6*-cKAll%FNvPPV-AdDhQ|iC<+i@`cpHe9w?2)oFyc*|xssTmjzO()WJo zvjjRK1IjO2mVU|>Wy?te#HZPttiLQ-FHoNq7VBubqfL_RVty>q8VFx3&(4BQOKo}n zdE&R(r1EuyRqDDCemjGBZVO!AT#AlC+nR@xjm(b+^F6FTKao7=@=kL^vYqzQJE7BL zTdsAW`V#%hY!vcwGi2jwz%IaBB$wNB4Ua?0Y?*lO>!LAQep9Y?QrR&9UbS<@L}tz;nTb1Z!r%?$`|F&tAxGKusPCuMRG(a) zPGZi%gOwdyPv;9P%btM07r+P1HP(gYnh(yCL+Xcr#;4CQUz8Vq)tqs8em8pVX0}J9 z2fU#5y$vaPkpui9-iQD{jdnPewIIM~!qIVj;yAnhD_v4DuRAQ(BiD;rw_hua^}be! zuCPivZhQUetXpyYis5DS|2)YU(E-_YAN2he;d6vPb$Ut`h^}2>v4(v%gsqo~@Z}LeYx5cRN;!pL_cglqA+_8?t4O?-ny(CrMWt0mOF>&$L#RpJ}ZI zy2DjkBZq_Rg4XT8>hg``zp-^Ea652^ubWysM}T~8>vmvuW$)H1;7;In;Ev*X73=MV zz_F~MzX85Md;;Oqz@36LZ`}^8PG2N^v2|y*X=_#X2HM>ed<5P5oUV9&EbSgkyO+`K zWu4I1X|4Su0J_NP{Jhqkz#YIUt>v!@m(b27)W4i|mearG^lv%+3(u?KI7FI8I?>NJ z0Ac+s^oFQAxc)H0_{I9V#_@K>@H>FQJBn~sY-gkp{cBa%xWw^^;p^%5s;+*={>QN0 z?}%@A*v5TE>z^^6txO&VZY#p=2sa1!53dCmv{t}}cZ2^5;BJ>sE0dkbzrD)9Gk*kL z0&Xne5yFR%TWeS=21-x0u9x0P-i5%HDzg?ZthCGFtINC62Z#^A8y5jLmb2Ds%9RRu zU|9aR1pLrx^KTR(x+wV{03I`2^AvEWS*t{dU2V-X#4jcM4I!2vh04?VA)xnqCXeUC zZq_OQ`;oO46tE+qU<`m(-dYaq+y!iVTjK+GJ6jOH1lSum0HCckJg@mWAp8Vs^ACV< zEfeljKsWA7Nn6Hy+Ee+~Lc*&E=K|`J%JAOmges>tt|2^>Q1MNP(?{W|_iebEw8dtx z^qRf=1mO*=j~ixBG5*q%CF?K6R-m*O*nhmh{_QqjCnquoR%92l-@ggnbQRExJlqSr z)l;pD%jcj2B8&4i$j@Ev*3#BN4^Llq8_#Iz{p?+CEx+8lSiGn8rgA5Hesu8cKI&Dw z(w(=ngV9mg|M7q*2M#x*~-5kvY_PtR%n zMtWE`&aqrYdzcRc?9pAf8qyxR%cZ^#D0Dpf@=@wKmheTwCt^D>WPC2e&X5&r{l!E3 z$R49VUB-SR>NtSea2`_qDuq*C?9=a&qm3_^w@S^zf2yBO2w$5nh*@k!M2kF)DM6lJl{#jbj z>hS1=r3yU&LIv8yN34$|iJ*u$=hv z()H|ru4iw11^5a!W54xM>(izF)}^IgTgyueTMOakEuEi#$Q-+i{+#Ug&1RuJ#j($A?P6sm|>7&Lyd8V}<^DRq9lMa1inaWmkH z@R^%hSFdKST?r2GTzU!PbT?z4AvYcezvo(~X|9Wg*n>95rm%S#>6tBT{SjW?F})sM zx!XpkkJ;$*&d3ebcNTp{!l@1FzCwFd@w@mXMb-%Nr{KAxftfB_W>na3mv3c`?twjh z4R!-?Da&s5An(s&ud@xP$MOgo!9aw$N_RTNB z{((%Wk*_kn(=IaVK=cjSNoONd_DI1USqjFjk5(SD4WaQC$gmmAx7peInG@fn?ehpT z$6*QlurKr;K(C+9+?m0?e^P!cIPQwf8H2om$I9P_9w*X9w3}@a_Fef)*x^s5?;oVD zo7neLzTA(^p$N5KlTAZ*1=?5*4$FOhUP`!tGTM6$*$YS8RNULZ*S;r zW#Y%UM~q>lXAEWkkPRZkUgC3mNa%Y&*)BAGvRQnBcH!6jL2L<+5iX-|-$!PjOy7UV zI4-dD@&j#jv{X3K)TX~;xSUbk?v<&H z-pRW`Kz=>HURn&IFXhHlUTGT*1=5u^5+1wqZV-@P&x7zl&&0L%3h)Z&;H@Ld$i~tV z=3{TzGiR$>zY@T2XBBV{p&;=3=WP?tY&P-poUQCS(my{KTF)|XpCfH+>OT>X?kgRB zZt+aon#)7Fbk_jUHi7N3Uf#(pzXCb+h%L|>l3^d^Y-$_U)aB{UzL)<*>0s6#**vFm zZiswz8!T&3`eS4k>uLczvwrN6?ZmUzXn^{(rcZLf7MAV6x_6E(Wi6HNv$TCi$=aRn zi(ax5_T8;%OSV^VL$8(%R_p7M>~!Ra^tvZnFO}^&f+eizLyyH?RfqKGH?a)z1bU* zkM(;&>EPB2s!#IL^DAG>0}e3{G=JIKB@JHNzLMD|vo+wp$W9XE=nkB#PtAYH8u2{( z$eY;bN#`@$lylA*9M8`}|Cq}fJ5A@QmH$A$0m^y%40sH*-VpoPKsK-S=M=lQ>r`WG zuFeqQA=ZL5w-YWAAEAS6$eMeE)?I}4awk4F1mNBUWDCJsGyCcapG zmL8|~=#q;a=aX8WcKuc7-f9DTl+!`9;2gp2ADknUALUFGTdj0t>6_AZwO0GMPhni9 z*|w$I2^sU`WY&&d{oMkM5#!L8oX8j-Y@-}@ZJq7UJKMbEhk-AA%vZKn`I>mY^T~qJ zpW&UKQ{S$wdkg+3dmC54C!YbfvqovGjdyrA;Xv!3dJoMbu=cL`4d+0ID-pg7{2q9w8`z7CXur}s z@;=xNL-W@!vzuNI(3e%5qwEO0qksbl0~~2TVlEz$dDV`@qmJzrJ;wpqjOAOZT>KQEp~d z0=7zr2XSO?{%yPfa;0h?F)zNT33+wO!AuIDnt2e!FT`Icb<*(chHvdU0d1D zu2mj|9(P)Z9zcn<0Lq)7w!eK*Q2%-W+8QSy&tZaOZ_&%HrS311el30ZBK2(LA#ISy zcz3bD*v2tF*uxZh{Ej00DdF4HNAUB0lJAPxSA|Z8f`-Cb&oLCwj=yB>YHguc=>zUqhCZ?{#@Cibs`SDU8Cv+f*Eeh=x-Z0db~y1s2M zIz=9ceIrfyfVJICpT`pR>mBjCVxAa^#^Ig4gM8xc&lPYNVH==<#@}gAdr!vx$3DE? z(D`A|Jn5b@uN{wLLjRnnMhZ1%5y;byD^0woIXN^GKWgs9u+5X#!I#B+6urA?{(9n~ zv7mZ`jZ^)imBviGJzN;yzg8%I5wE%KohV>%H*uE{uuxwP%t(pL5qk3E96o zjEQ3u#{?V?gNNGVLD~Iz-irBkR{(nh&w{NBa5+bOq);+v57AmsTH`YBbJX>@>^ru! zcE6pFUu`F3+u1vsv+V@N@Ey#>9jI@<@CUGco9yNv1DJ0<=Olyl{`;z1AifhoE0@jX zeS_>qXZQ^8HQ-Yk%WkNb?Q$-Va1XYHENg@Gy`R$l7NQ05CxJ%-*ym_>TcE7Iq{vb4 zQT+IyX5%x520c z?7iA+X@8~=y>)q3+%G`)9-ltSJ~p1$>U@E-(=vB+*aL{i(H-s0U7_NFrNGI+ugZVo zF5)HF8P&$!w7U~Hjw6G__%9R9|B;h*T(=d%yr0R4X^ z@35Pe{%$vRxnyefq_6f9Yq#BED8)>&lSSx(a^$G52cUi7fc9w2>46&%sp-CxdBdJbJHp^=bI^W zqvk|;3Vi%7JG8u8I(JifomZB}QNPmujXLI$x7Y5K4Z-o)pE-6O>)4CPKb>&^ z6}}t7{?8$wW!qFXB>ubbTwO}|u>g5*NF(o?J$^bmgK#|)`*_Q?Qyux7kVkE!n=H@% zCzNIHHXr%32p+pWpN>4+lk~q~8`+KY-IF4 z_woEb=7ippm%88VHW;3>b6V%B-t2q4-_bST0z&Y~wNxN3htrtA~KFabw-`vhDU(C4j zo_TnU%Qublmxv$7y=v0)y(#x*?xc$6erO-H|AaH)+Jw{p)UjR9Th`)4sDh$X3ExoTYzcj`wjEx58GY z%Yb+Dd?C+&u$83@IKxIM4|H9b57^6T7Li@ zjkpM(K_EQ3KzIylL;V$~pY$7;9oy&*{k`%iFZ2Lr)9!b{fv-sMeT~fC3|z+gH;7K6 zRRrPKhAjilBCg27m2D6Wy8(KNrV+aP(;XMByTNHLx)-z;{RQg3#zFK~+{bhZblM3U zvgoTk>LawIPb-}-G?vAfr=P{HBRW6HJI0=SgmWD?+9{WiuZ(wjJHEfuPaf4zodpk_ zt#ZOg?=)_Xo8F&qQ_?pQj^jOjSG#&Ip36UEJ^6*a`yF}2f6v<+vqyMV-NHd>DtiNG z$kbJSlJt*Z`z`40_@7H1;2--Hao2b{?$p`FeH8hY*y;HR@cEU*&*8ftmxp%H$M?$B z=ReTaJl4d=a^c40KfZ|HydsP?cyIGX;``PFYCrel5-D2QC&Ko|Q zW_BEKMDmaw2b>5TtY>t@CBj+X-{HG4k9%LW-=V*<>zC=1%i!X^EMqWJ{Y!NZpSo37 zxC4E|wlQe`249*&$_=v5 z#b@^Eg`L#%`W`jz^)+_tMP|&!=v^a)(j_Dy3jS7Cn zJ_|hrBih~cF4ol@k7Wtv_m|!E4?X8Qa2lqMF zfxWt8Z&bM<&&n6`YHmh*0_}9!qhuemu?37F9K*N|k{7S_OnqYu7(+OQ{tU9MzZPCY z@kD-HD~R)pId>(Hc7?=S2ZyxQ_nF7C(dq2u9AF83m_)b@N$ekG7e#Id8|xLkldUn> z{8wO?Ux7V-1$V+%*w)ZzEI|KT_x%3>mHk@xydEeeuPpyp0Gzk_-vaaLOyJ_-fN`HR zT)NU2=i{O2@gs%ZV*iSJfFW}ic+xd6TEr0gs9 zA=cKD%3ENMnM9lW*(rGs{av3u{!8q=FDGq1J3F7qKJg6le1yA>A4!bx0N^O#LSR4O zbl?tPro#f-y%9Y3u=i&VbI3K=mJbDpXRGZd?m3)^?sRflHndqlYUkw>_&(>se3$cJbhj^he7?tj3(a4)6LapD zatCnVd?W1WKe7Yz@z~PuWS#$sorrzy1ll;W{3YuB8SQLL{6%a;`xAbKHlM)`^;Oj2;7R^1O2X%i{)1BVS;ev z*F+a5Z+-)5H`x2~Z$p!l?K9a&?Y*QQCCC?0{(767Z-MT982UYXjPx?@*llMUSEt)1 z>@jC%3)vt2!FC23z@*=d>Qx%@g0C!z+|5PSj5>0dYbI5+X1>qGZjGmwD``-n%e-*#&p+p4YqKv zb3?-E04ES@{tjFL+{JT+kh^tjZbV*hn0^OY9Yc-fVb}rrPDJTm_As)Y9mGEO+nlK! zZ{z%4^fdT>b?dL$F`RS0hu@`mmrcySW8daZ@N&NUyd*!v4yhc@K5Q=K*`K8kAVYO8 z`|I52CB6Jh>`|;g>~G7Q!z|zoa{>3e`>-VrRLY#a?_>Sd2PwareC*}4e#EeLGxxG5 z@%%3PfcjE-%#N!(maIcKjdo5aO?Lmyb;m4AlFd28>B~-nm%_g5@aiSlVgC);_DSmg z9rvPF^PYRzW$u;H&Lr){QttPa|HrQ9d(EGW&)jjDfqih2?7-U7RUQC8>R_#!$(k^~ z{A+tske>oSv1d%Mn`1LrA^Tx^g3aYDb0PX^g1o)m5Yx7FJ&%cuW^-4P<&+L^vOO_FS3pgEU0p|f50Dl9v25!jiwp+5h zlT8Uv2R;tm1e^+d33vo}r=UFAeh2&-SPmQk%m$i8d>6uNfz!*I*mdPil63=c*0G6g z2fP7z7qA=f9pKlMg~{!JRTkQR0WIJ~U@<-`!z}xa8l2ZsT1>OjJ zf#;nFH&L9iSpi%Qya4uEnwa9DM<~O!W#7= zVK3n=z$w7dz`p@M1pb?~_3gm^z``PoaXrrk^nM{{2_FK!0(=oT0GJ2tQ^3Q79~Qs^ zI|3Ur)+YjQ1)c?dMp_@?CkY$CeV|H9lYGf$7=KI8Ye1O7JKJ^dvz?>5`r?NHc& zWy3r5+1k` zorU|Z^lvi#Tb{2Ay;(C#&lh=KLiTb0SL2Y5ZT&vqmiIrV?DNRR8!^P3ZVCOff?m_G zmklspA%k7SrQ1(0Dg*H#)%}+nHtNgdq&Rykw}Axv zN4Uoq?^03sR^&M|+B2y8OrHHtozi%|INhhUT##W4ahPbO4CtOgL*j?>ERgGt^Vqt> zQ-fD0aQj(TT6eTvwz-r&OL2!H`!MrkOXj_PXJxtb&8iB&(pKIdAdUIGJiiKgdM-CT9494|j_9c1x2;bM%_k@ms zC*Qyx1HB<#X75O@x14(%6Qu)i#=BwiZMXj}OHOec@Np?Ngw&Eb9n`?lkD@>G9b5Gq-Qz%=`<404u51~hp5IE|J&6C6`0bp_VrQ4m z0&VAKPq+S&^ZP^Tm8}1p**cs@%y9Z4Q|OzOeqdAiKF|x?zhBOtF`P}#Chu(K*Gl_P z*$V)_+i{64l#ynmkY{YK3r0cX>_8Ncnr znQ+s?S^8au)&|+E)&}W{HTUoxh2D~W7v@IpK125et}8tb|6WGFbcV98-B-XI!dHXC zyYha#bS~e|1mNSJ^8L%(+K{*nxZHChGURWZ-TwpK>JXb>+7 zx}hAuG3Ip?d3I&56rSH3!WQ~>>&Yk&G#@=aV0SYQ-Oe6uj(%qn+q&LISrFoS_Ism# z_l?PQ9{TLtbZ&x8!)0gr`qt;OOIwTU$m8k`=&kxqBYszi``7*1Vb&kl6kj{U|M0B% zmGkFKz;Da)Nz6y=E2Wj(`+w~1PR>tc{1*Y|z&qz+w@KmQ_ajTWo1RKuA8Xsx65A_1%TBCq z+j^0{ABGHT+e}3hY)XD_GRjKH#~^fcAF}PZJE;4E`cBY4j{?ZUR?1%acYyts9KStv zsQnsx>MkJn@MKf%+$q&K_;@jH?Xl~Mr+>l53Q+zdj#IEXdfslCjy!J5bC>1&vOer< zKLwTo8vq{!b_2EmCKRCfp1^!yKVT-XOH=n5flA%DUlW|-f^-*qF5M;BjPN92W8hlg zU|@S-BCtNN4e;I~JdW@!z)`Z(f!oE|U(mUyp<~XqQ!3-J@l3~d(O?gKF!wEf!t)yd zo~!2)j&``L@*g3sd^CBP9(@WWB^xJ6G6itgOqwxD*o+T7#AhYRMx>=7tu|$PCu=jAlQie>qM7tGo6R{Y zI*!LNp{^bZ)k3uGldW(?o~g;Eo6^F>q`7G_5x>vV`TZz`8zd8_CrPgwsOov#IK1Wr zMb%UY!$Y%KtI^nI?KDaW5%ooN_4n(|EaBM02gLO}$feB`+&W3MX01sTRMNXqGg)^A z)IbSuCbT;+PA*gx3e1|L54E-{fNH8O)Eetmo%&2K5;9tx?jNtWXuMrV@th=+lQh)a zOnPZ!BX4MeH;{=wRFU-d5H^M7K)W1~$w^O7rIJ83s?~@lQzrM0hqkjAf9mQ1H-!gP5~`_q2gY!;){X`mBRE^$eZ1}_ev5Oti| zbqtNf!L2o?jGHn}!>Sy3VxloB45t?^NhZ0AbxgrUQpB_vZn|lyG!Etu??Y;L-k!q6 z{Gx;SOL=;FhPK#UQYF?d?ImJmp&IW=C#i_VstRTfRVB%cFdS=T|Gy-R4TWbXlN4c0 zr<4gZK52L(fByJ&$FG}AL9~sj*Of3{9&Vj=Lnt3f(f$;v#nk0VrPf(jVxkauMGo~; zQD;u-m`mKHOF@Dn8;mx4_MACT09PmCGHMJw+wHsyo-iNeHyAH0m2u3>B$+T_!t9VY zOXf_NP-%?uo^M<#F^!AXoGOaRAQ(;!|c5-urWMj1o@unqEX3Dx9F&t|s zgttFV4P;4@*+o}7ncA`LH)G~Tmw03(UoS^^7m{BkLs9TGbF>lcM271uZzltR_$-gp z)|x=$np!3$SEnSiX80PLY&JR>ry>)9kfKPkvDWHRGCCPOT8|~I-5%2ujxm{=XuM&f zX<_&`U2i>~B`{S$4;;u)tk%TFcs}P#5?RDq!M%nt32dt>XBRVIyFSepH9rlU*cvRRRfhd)w>G~Xs2Qc5!^xoVXbN_8GNe4M%p5y*?6_p0NOoLiCRJRhV~#Z5;-v~y<$1{@c_n0doj!7C zvV^+38gXcw#1)C@EQhezASiY`phoI-SBD_9RtTna-$rvc>MdX5-e% zxBmKVhVjU}WSm+Jt{|=g*fJI_Mgz^l#Z1UbV!^52!TBMzD8g87)Z-lJl5q-a$wuuR z8e1aC-2iPGM)8M|gKisYEBZWiW`;Q%vJCPiE?=L>^kU>L++ZotNssSG43#xz@2+IT z0)t<47m3xV#=)JKOOoK#o$7k+T(4e-H%;quua$G8_pa|XeIwt_!el}V!)c!cOKhA> zZo4VP8V$qG6DKn1yM!eQ#O(DOUKTGMpp$AqeC90YTEG~#kuyBcWKB2ZQx6;TjVEjB zj~$y#2Hf>bmiFUfW72#kK9g=tm~SObeq3l7lzd5q-6LD-Wh3ahisIVqQc<~28PW%m zQH4MZfK-T8!mU?vDfCa`EA#!WdtGG z$uM$kPBAor=NM-fSkv06Xt8{PVA}*vELD`WB^Uwl)E6H?k}fRYM!Iw1eolh-eXZUaS?H zpR7kM>p^X8Z6--iSbuIZ1ug)U&7>_&s#bmUq(Yg0R0(GpFIHPtwOVV9)vS(RcfVl` z;!SI|Ug5g|z4*P>*LvCdtRKJMM&XY#euKvbY&8Bl?vJ*y#Mia;S}$>vR{mHUhrgbU z#~)`CTmP`}wm$v@n}k2nHo#xsCbwR+Nycq4+rXyaPqvL(f42?YpJE#mpK8wjzy+ZTUN+Yf&)+rPz` zy}cWMZ(EGNj~$4=ulxJid-$z{{p}$9ce}sX4rx7Q+~&kT&|a32|LV=!Cz{};va6u;U8hkTEDmV+P~u;X~*LqWhdYtZSQM6ZpYY3 z_{X|`oSjU3nVpLN@A&_1{6-o63GSb0?k|6w~H|0DK^)^F`B{73kf z63`{ugaI{w4NRzG3nu zyBhye`x^e2?OOcH@E^9z?K=D`?0WpK*bVqs+Sgk@v#Z=+ZZ{JDs(l0hYW#=nYj!jK zHFgXBwRS813jCkib@na%>+LrD8|>Sy2W_RT#{ateH`*P zzKeg0eGmUu{0Hn?_I>=@>>m7Y+r9X!>_1!g+wJy4{MGK?VLv8*C;ol*9lH-*=lDOgU*P}9e%bnw{n&nu{}cD` zv)>TE-+s%la6Vv<;{TWZ4*x-W4F9M0->v_&hwO3upV{y6AGRm(e{N6mOCi6or|^Gi zPvif}{s;fp`1jav>`(Z=wP)}jasN?!w)F$Pf%_Ny$Lz0sYv8}#f83rY{(Jiy{uA~B z{*(41{!{qhvp?8N_)ptE@&CvDKiVt&BFUfJf5uwG|C}WF&*FdA{*t8l&$<8CgzrV# z^GUgNm;EiN;J=Vm@&BIG@Lx>ot?$@Bk_P@uNfZB{Ne}+ZNgw}W?vYAvr;c&aq=a!&SY zIn68ON}g3JX_}|C3N9;Wm2wS5j5@14=hYe&$d%=hnkrjx84Z@Ra-P-eH89{Dibiv9 zGb`6>6)K@YwMpHzdOdGs8A*A$T%x8t=OODMd#E=QPnD&V>i_J4UO6vQMY&8js#!)m z^>VdBGHCNjRko@gf=8+k4;9+VD)cu8^sGvVR8)eVWlc(@S&cmW5hqy{h%oV^ZpvjK z=@_V1)vH=#rUsRP0ccm!Mok}{!4xFx>V)296eFZ=NL{byPRz1~OdZghGQ`JIh|dcU zWt@nojfTcfd8&DXK~xP?K!SSB+ge`H2!m8!qr5V!n`OF5B{c|Bu8~=z$&;v-HJWrA z>?p%~=m6`4(H8mipbCfkh(g^?^bt{p`$Q6jPz^AIFiU7KFE_wOgQIl1jjQUNx34tC z#30^Pkg51UhT6JtXb*+ngc5oiSfQNOYx+c7BA)7;7^Gkln8QCA`0MQ}3kyM#@ zo%cctA(4?*PJ4SAAm3Cr@m*(}G@jlu%@itv-<6pOB07aeU2cg1kaa%9E*ZQHra}0G z@ezuQH=Z}ntPM|+1zD<*QU+?)EW#mAL{3Br8N~@?SF+2Lv`l9ZS`GS4IbI4MO>aGD zrj_g9q)?MzGXxPcnlFD+wlBqe(@{AD5L0k(jnJQYNc)?1h6&!|iyGnSm(4j{uSw0JanfpNEzB7FYFdY0p1)k~>FMheyO&rY#r#ayIIIY7 zqbxPlvwFt6GUd>5NKm`MF~}_R3@MMw#^8fW1+|H4ygW0<=><)k6Kcv9Ke3t^3e(^; zGC)sFpT0()<|o~x^7db~+GJYOOFlv^e8OtwzC0&LsIrDi04-}=gOzJ?e^D+)JbFjzXV$Yx$^V))Dm1Hqe%$8nj+iOgCu+g{nt=qd%d_;D@d-7U55c z1^QxIGE;^c#R0_7LU}E!NZSkI$eZ_u`A5u3r4w~0}G0jHZi`hDzSivnJz+e%~vY`ijwp+Sjl7JJ{BF# z)I#ZIW|Af`t=h$&p^(bZeV&zHU8(d?BMF1r8s;HO4Ut2)Q80iC>a|*+2?`V7yIz1s zB2rh89!+5&Bx+)zAoo>+unlbBgC?euz*ujnzR&6b;qpP55;_9d6QjUz^p5Qa&0I6W$sXiYx3|3 z)TN6&q3U*+TTCEf1#Jq~e&_r_^@TLcsR-j@9K^qd5Pn6z zlI&Xznq`E97Xntg02zI(H0MPWL{b&4o0r-nKxg6R!7Nb<0ruuV&$Dm6&x=UR4D4YIWk&*D-914&`VI$hgRN4?W_%!gdrB4|qib{Ru1 z>UVKvT4x3_bhvIA5aoc^UwB>O4RP)+^sc2C=Yk#K&I9X~6hg;Vcot4L^H#|e@`)B-5juzH6&W-kJp{Qr()r05;MKgNR>M}U2P4ni>eU3a8T)0oQM;gXcAm3sbP*TzUvM<`MMfzM~8dc zN$ZLQ>M_(vo3uo?>9X{pa=BUSsY5a+lrw@zDzgjYCPf3Lf=rM``V;a@+zrj7t0MJ~ zU=1lR(A)JrnQNHyUV0#Z7t z!0S^Q#-f@aNPuD4Ata8{Vg#ObCV^N`JN_!7K=MQgpN0!^=A-muQn9cg^7?VwUEOj_jzJ89-=x=y3s zL@)(~y~x1N3S@PJa$lp-Cvi?Su&j2tc`x*+@&a0;^UC*yLtb!_K2S~6qw|%l-Yoaz zvRag@Y@P>`%oR4Kyqe>WM#>0B4LIVXz$FHwM)BP*Y8m3h^6Y17j9xRu5KwAZAO2tg zO)H?HWstEzn_aIe8z-!XAqC=VLnEXMSJ*hIKts>IK(kUCUs0WQWXyCMCu70#qJ4r= z-Nq>a#?~kk+rvRr(01yGvIQ5U9!%S4$i|5*RSAaIT6jz`o<)k{vq$pBpAK;3I6Hs!Q zzDo;*-^#M8Vpk!L3?8bX=w6_=DiAtyu!m|6wW?m#8nU?(&E^X7w{4s#c?^$4ovT`6 zZ_P|~7~3TRRcL5YaZ{!=Bm@V<*Lp^XUu%fGbdoqaAx*MSv5e#m%>`xPY@XWz>6;L_Ue0K#{fmf=KN^^ofKS z8b%U@P$<$mbwepNh^+L^dY5TQEY3S27KD=Ka=;}pTF4V>Ya>97ni}yVe2SK|^%X&NkzFZn>DK9vf!e2C#>W`zclu8 z5_61C;k0rET&1yv7~Cq(@X6MdvuH7vjIFF)+H){9r0jHDKrmngjcK9Fg}h!B2*K4u z1l?e<_pd+2rVvL&p{m=F9Kx>dLQ9zdzz5|cD7IAH5O2^i31OtJ2HY7((vy+z*f@Cz zijc&r=!5za+Cf>uG=k&DZec5rR7#o7s~B=bi-q~Rq^6ERSu zsx=C{WaC7lxBvws;V2W}+BQz)z1j|TPa!50)a^h9%@%)@Zd5q(xa)paymJ#QR7tIE zySBHnmWM4)OBXyXmh851hPvx$TIhXDdwPH_BuAsA#_EX4*&C90eNJmI*(*=8>g$L*lnD5p^&7d27qm( zw<=EtJjMkb)%70D4B0r9(#)H(ai%5XC#qc1M2~h6a0t3s4a=$s>H~*x3(lV^?3J`Q zFve*b_%RmZCmMo{Q{oo26xCE6M$e`L{wKo-8lQTIIYJWC^$`|X>Q*84)1neqD&Fu; z2iVnWFSbiEwA&dW!k4_g9&NnyHo zUhv?|A=H9$FI66=PV$mm{vI!s6N?meN(8%*m!4je=~B-OH-;be6T`JO7_`f2Chxp5 z-KHP|YeYM{?3z@i{kmw)OGQW#-2k|j!Bg`n7a9gNEGrT%NC83$$;Rocs(j>=NX~G( zjgu6#S40`jyRmU~xyVUH=)Lo)q?ntB zFcJ~fMhHwHcz2J*Kp+Ti47_GNo-hs$66>8(#Ehyi>^op6HsP?CjCMMskOe^*5%dlA z6ng6p2En+eSxw+KWHhmh>SH4cg$1?Igm_R`I_UNdY%Mw*V|j=uZvrU zjXIgZ35?6VlxMG1YqEZ73lMB0b*wvBH|Y-+bj)M6J?6|iMq-& z?|mVn9Mcgk8U~UWbXf+8Ie=q*N_!g({^X>6(I#Ag)k7vSwn0IIqk8pUN{57uWQdx? z0#_GEJBuf@!!pG>%t1BF>5gVk-o&ixmQv?)gd?&Y?H~T-iUMw6y^P}|onp0DjL=5j z&k`)D4r9xz#Prp?pl;3+={4LB&p}4I(_}*^qYp+qp)Xpw(+okVN3j#bplOZb`Q+260RK)++L$YgUvVT!d%`d~kTuNhD&!oB6*T-Jv& zd+{NY$q)7sk!p@VD2n|ogXqwFD7pg!4X)o{0UPYVh9Ruho7HNM$0XaJx+Ikxvr7|< zXN<&Bc+lQ@#$)3|X+%?T8z)A_pl)f1wUEQKx%#QCm@JSCpJXfJUnN<_Ob$sTNVURh zpU_ZaER^Jj;%t1>9z#$_FlSd0HsGX2w1&XIYyp~eE^Z=AX%s}+#lxmDAybE@h)`#_ ztMo`rAyg_QF*n?kmix&b^o}r@b=ifs*%Io;9HTEK7&XmJNk|d+Sc-){ItQS7n#930 ztcQNYKrfs_)f4A4SV&@@%4Fm0rKoJ2+!1i?ld4pKkn|5l)J-{AQCa*#t%!R~-NKIQ zQyCj4Jc~6U{5}Fmuxd%v(NE1bE6*GpmxP9FoK%To z%9wD#7^p`#8Vp1g=5t94ruAA+ugu^*A_2o7tEMIukBmsLacbzb{xi>66*RvP)_uAf z;U^7RJvFN|y`Z_shp*W=?1zd5InhU!l;J)idqGXDf;7yB0k31OlCp-S3Os{C9IZ@s zpDaOOXh9T%KsiT-JYj59Tidbmp^Nb&e4H)lZTK`B`uN~UwJ0!Ejbf03Ndj)d&Ofm> zC<$L^SQQpM(BLy_nufuJ0K-*CW(2A!)^(4oZd8%1j?^7 z0#}G*gT+B!EE!t~CA&+v3xr5ffXU2rz(_dppf|w}yO(xVu=}v9!v8vvRvZ}?4sVe$ zMPOpGL^4&hw15i~)-d=q3A+dh8L996eO%o3 zBd0Fw9m|T__aqr43*q)QUl4b86X}Jkq#K&I<_#6Vk4OWkBXU71m*AQ&FtnIe8Kt(7 zomWAou#Aw8pOk@rX^o1Q&ytQp)n^(v8-${G49-S)AZ)bRL0BNZrFr>@v*tdZQ5?(l zag`N@)LPaf4ieH{x=|B>^onAxg<#{9{BWV*J6I9T6%VFfm=KY*p$6Gpk<&6yCQwlA z-TNFV|4dR@FJ-o*7dhqcTF8z-a0xG?;T9mr^5WvmgeVj~t7S+_AqvVt+x((tiDDn;qc zHn(w#JkTj<8gAoMHqIMM7&W0dnw+>c=Tz9GfW!cQzHJqu;VA8Zxdef{2B9W4PWVTA zL|?(f?m+X4H4iz6$Y+%N_K%LDamagGgqay3$3}~-x~)gq58-+}q5-HuIn5q9y_1Xa zQEdl}XREZPaSE ztM0T~`(8 zV(}1rI1-ef83fH=w~dq8LXFs8v~^^R#mXc&=F*7O4kC()zzdZ6UIP8GQ^5~%Ungpm z)6Nhag$_&ufwU84M?lG_h_FNBL7YWPa>1-BcAzPqaQ?#SNE90<_fGh-n8=~(nVu@n zlXPBQ5SOfC$e~`QTi@$Iu`W4Hj=}{p#wQOuk^{X!7RBQ0XyOu9Sh@&}xpv|Ux0i4> zVp2kv!fEZsxy+UUzF=()>Mo0o&1cKIRkKE8C&95)0%VHXzo@A2QM9s6+(J(+y1RH7qrUqt* zzIMmHowznpa3Nc1is}ZERv=Q)PHR|gFu2I22nKYiFk`8e1C1zkoc}fK0%ePUz@%A3 z3~a=#@OpxmHf6u|6`)%NL^;?Xw~y99-vC3Aut0nj+FOB3+d3Pf8KV*pN$Eb`xygBSUOF;ngNJEC~4k z)-B)5!Sr-E@O@fts0M^y+wrvx{<^qz*r>z?l}rE6` zgI(R=Tx^_-0$BD!L?j?MXb&O1oV6QKFZ{T9(UU57bSNN&(?}Ms!$2`*_)x?Nu2Z5D zi|-igVVw9ZxHz2MVW&VRHRdPmybjbuwjynG2C1!!tGLo!nvjfLao86-NwIN?bW${Q z=cbOC7$s^{Lu;znAsbzd^!bO(POqC;oQ3f%|AOu;avn!p!HPgOkvk%sFlb~!L zO}L=JEpb@8))%CKXec(2(jg%u8KN{Sa1DX9vsb;VGg^xgB2?!C65l=bUIto1LI;!B z-oZ~xd|~6v*BS3NPLywHa)ondAH@>fgu^%{idXIE7Q~}3+H923FTh1=y)-`d2=p19 z)0bUM`!HXiPZT>blq!~{V|p6BM6}Md9Y1xRH4)0AdU{4loFfuZ{2*to+RqneYP^8N z=yx(EyNy$;M{u&DK{ef~;x-V9a9`esI*DG$UVO-8!bs{$hMIHRrg7TMSFoX+%*lh? z=+VR4I5jLx+B&1xtC-8SCR0t*N&-nKA{XKaf?=yfd!1C5jZ^cpiCFaw4T2y#w)AA{ zMF>GzBs()3<&L2ggY;4>T*qJ_z383>wUYJFl#*p*gIJjaJ0cOLb?5U{y-_yFPt@TU=2rJn^1)?NJEqz+6k=f`5;&LAH0T+>~7gnXXpRY2tbghDY zo3=GH0s%0G=e@nX;$tOCQn}dznJrvk8WatBNFVjhB&HudQRT|Z7GJ8Gj-T>TM6jz! zS=Q`QvMLZ^^idT;M-DqMqyPies(Mwc>ePqZz*4%82N%pkTm`&te&yAfiE(PeQ4ZMi~RR2y3y+Dd2Xi={mW(@APg z$7!Wjt-p;=9f`IlFSdQ(C062{n?LWl;JdA31ec!>>X2Gna1~i1@%s7O-}~Q5r+EBQYqB#YuJRq+fCqVHhTp%M=~5=vrAHh|xVN zk}R(?G4()u2xW}1f!B}{jEAf^EZ4|rY+YWFK-IWF$lA zcu!pf(km73VWG;PE8PpE>XBB+N8jQH)1uR1!iWqSZ^Srndz-2VYKj~znO%+pDqU1$ znZ*Kz^k(7l!!*8t2MGcp0$p^W&reUZrpn%@QE&%UaU=P!@-7s4l?+9tubIO;ROg5f zc94^>ae+hF)mdm+M{5uVA|&153~%&8amEfgk7STuF13cCl=P&pTHsJB$iM?uNUD@r z6@9Q`hIV8Z6S=V5%OL8J8sB+>70?egh}Fud3Wr#nVu@*BD&Mx!Ix_;KS*ca6+U>2g zMu}%-lT*42P;muo9x@P(T&&9%ReanqN}v)6AuhoAZcKxwA3k7bCo~bdsCRm#pc<6( zJa~F1r)P!y8e-v~ksR!R$ER>2i4xk6Vtwr+7%H)x+EHb+99rUQ=2A)+YI?v|)#S7c zfD>P7LtpEu_ULDDf?VrCYt}(3R^LolIXrWo4-AYRt$CWV1x75u_rU;2W3`N*Ym?$y z<e&8rN6?Ge(ZbYGG08e(RT=jQJ+R(9_EDkg6C(6SO+*M? zL5~f8o+}{lw<-o0lA2Uz%u^KRi;3_q%*v`A)H*3`p*ei5t*{!?OL9!}j2#dxF7BxI z!Pk79PWLzq1`7dAGh11?V>KvbGKsQ!V&d#8wxU`a8#UcNfdTbv2Yfd!7Vt1HY@C{d z9O0vyg0&P>EveGT5tcH1`A}dLg3(w_w1<%ztU}mE#6w&m6{*OtsahW}Byz{>KB&#E z2X0eKYsSifZii~j_QP2@Y(^mmh7C;w*@$5FCeou{+P=y}>n3**G=&jF6a;FAr0k zC+#$I)vM;&>{2+*bRx1Y(xXdGlcR7Q=^j%GnW8ae$|rmO@~`ODg&Y2U<7 z9ea{amsn@Hl*y%X_NH2Sv299zu?8XZStDcy(vA(4HP|LI1OvKMn6cDat+u6(&j7Y# zy8R~MSB`+d1Or42Xfge}xH0RMrP`%_w+x7K!0Rstp-a5!S3~5SD-j68$+lii21GJ{ zK}?93qEioqh~yZeuq|UHeO&VN^`Y^KXhA>@aImchB-;QcDi?dIAa+opay#BdF6Go5 z5aY;6vX@0e@&<=Y9M%P8TYe}ReCM=|=e^UMapyl%f}Ms3)~z4|yZTGN;aKkh98*j* z_@M2?A+G9D$g3nT7dhBm>yK_=gJPqJWYZjl{}^NbwGDS`du1+S_OeTtI?4Bdnf
>cU4%E8V;H&{NEoY7>kAU5-H6bJQ5q|X&QWsokcUZn)kDWKvHmkqHOBx+%ZIRPSiZUzGNzs7kAQPlv0J)F?t+W_0(0q_6 z$hA7t50S-XO+w1)Vl3b90gPE0soW`gi4Ma=P zL`sK*jAV$?FmCn;q@BI$U7fL7jI{M(J(KwEYw~3|v}^s^3z%zp!HgYj_gW#wOyU-U zZnnTmZ5Noe+UUj3in1v~xIU^^vjdAA+G{xriz9<8jZa1&)CyKylA%-BIAZtGRr79# z^z+AYeLek5B46L)d+TL;iBKNh*Ec$-TiO@;7w*^TmohS1zlVf=Cu4F++YioF3divr z=wZCa7y)PJy`w6ls*oGqNw=5>IgF%`NZK$GxXe+igRznWoGXJ!t)00?~nohBr9B5zbeU zU^_73yI0;Fs?b4>HV^DR_;CbR8{s$Y6MU(_JdN@I!P)LehO#nKft+g#B5rI#Ob>4& z_OLxR!9YR-S;5@p-f#t_i=7-AiHxM6-ehF?H6Ga-xCAXWf_t)j9p?ts3$ZEQW#iQE zH26fI0P+NyAxB^ul64P>>y|1@8OM)%nHZyG?uS3&P#M(L(H~K+$0-A*3V62sHcfi?bSgX7B?zDI|89bUq1?JyVJu|tb9s~Z5BT}CD9Zw+ndf>7d@u3^yP~MN_9xJ&$=L+45pGWR?e!@K(wN0nE8o9GP8ZfuBbtjQk_-~5GVT@p;k-i? zO4VedaqZP$T%MqrY@BF{E+tVPU4n~WwYk9|rhU_ecE&5}r6wt{5?Wer_|YdHeHe?0 zsh*Mt>A`n55z@q!#veZyjB3M`6Ga%G}pyT?_;RD616CQNQ|iz#)t!*idZy zkwnNciU)Nq(@}ynGjE6`N~)=T)03l*qSFW=A?n4^{3Xi}X#E(WoEe7NIN?V>OqY#Q zfAqYtak5$*+4Y7z;q+|$}_^d4!4ewq05rE%DbG0(?|FQO7TW%!Fnr5zZm++JLCAbp}4>(3bpejm^y$D$CPzQZ`}fDz*ynaId6JZJK^pY=5* z2q9sd(d%i)gYFYTCv(nn4oz!fTYZFaW+9X~RD^6yP6Lz~-n;k+<3s~uhW-TPrC4KY zm1SKA#+fN`BOQ!UD(^AQ&EtlZCkVBGWlJ$mpX)}i&o_z=@F65;E(7DtD8xJydrKH6 zZXQYU)X9+hy=>f~(04nh{FI~?{>znHoz+=@gBh7$|CY-<+YA_|MN1ot#K+AqlHQP3 zI99+f(G-Jnixfcf!R6=5sXj&?0fBy>Xe}sdUae+b{vE~%*}!?YRpO|+$aTaxHzNqmC;dWiiC%-jA!9`0*&&b#7Nf>2mTT12NY2(vyiXhsApQ{b&oNFG z91xF5npZ$oF1G5Ljj+F2Lzn^t%`qaDk-PvY?9oN@9QBU4o*d@$@`0NCyD(0HL=X(% zNZ*KEa!dnO*}2! zW8l+48eS49HRE^3ZmffLc2Wju*8R%q3=N!7LL1|S4OI+D8jv~BE<*}&(p-Z)pi;3V z(txWES8@ADKIw>^$Pu#*Dy26A<95Y~4|l%i6Hhk&DH%FFd{pEzm=$^g<)UEr5P5TO z5XhlJ#~qV+%o>47(?YZz8l-SE30245^3G2V#sTBRC1pvpVlhrCfRPp`k_yqkTG^O( zkY4dhTmrb5KEW86XVQozyXo}Gb*vq7CgX&EFB|`1n6wov2FhksL_TTvX%nKa4RX%| zMm`Yvdy;g=-d3v=&V=mv+e|;=ZD@2R$_^CicI!?HVL2XykHHGBJXY=#oF~hWczL>o zW-CLsVyw-|(jN4T8H^S5(_>NY;VQ5EHO2`~{4gb9+kMc~up239_>9^)b|Q@!CqGn# z95>%5j!6X$S%@1P0K3BN3h&??;|=17EIDV{z>zlqc8q&KJI5~ycR-zZIBw``y;b2L zsKKG7!$(lp8U1uO87d0j5`zsYwC#L68Hpj--u#FAOjLsBx`f;Le9%w4>$^5k>`BSv z@yjE!U*=>H1*OgPB*VTE3M#CNDS4972BwBC957Cvjf}y~fS&6gG0w7F@OMY8AAY5- zj5$|HEhYuL39t^WLsittLd8{=7SK(2XSrTIK)TF>%EtJ^tvB#XW;@sqN;S2{PmYFP zfpIQ~+4IS($Apn}NVhhPPD(^XEBzwfXv#K8Dc$EjOo#qL&wTP`0R zyPX|Eddph_F5~D7tWtFlP(x>6cs^$WWA`huwm_8+B6^%YR_;$5)!f->0d1D@#ID;<%>MH6k<;es_K(tP}z} zqRTZ!L)YMUgvy|!sVGE4IT%)e9N@KLoKK49P&^%+f!Z*WQDU{G0rzOmN) zkQBu}ecEN~oG*&=*YvOfX+)r}v#ge#JB_gdOJt|YEkX^1gfruVRno5zjB_kCOD%YA zSbXsY0;n%0#Z>fRLJ*}N2GeZ7IDK4Tn-4C@rqOA0n*6)eb*v@Ai19;GXd)=cir&l7 zqL3}-%k@Uy;-)MU_7qtOAl;l%$cu-b7Y{gR0A^uD;!}m@PLd7CkfliSFZc<5o>QtL zk_sEi;E`xxOD%y+zM81f6V#~mb7aiZX(&GOP$+0%fI+TuEH6t*N~LR16gIe*^Z>y=E5TJ@A| zGKfa#UldR~fZ0a@5s{e>ts%_>l7XR^DD?-0w0HsCn0A8?wR(~_5 zj@2p#k<%?zLp_ZuQVbkIXg_8u2FYWN+ZHn%6@UrT5#+!$~(kyoZ%E?;|W<@?p zq=E<2fe;iRIa3Hvqt2h~4ccLnmtw`?O%0Jr1!{5%5;mVdY}1c6Tj)O7LSw`H_&GLF z`W$#6#IoXn$d?n4DkzT~(~fWoB@Q%3l&8-Y5KG&mEh4R?d)H4uH z{a{T$mMt=*=fB4|A(q%~IZ9#?GmRYO*s&4)0au_QLDP}aXqH5oDTg#lcc~`o`ick& z6ec6aF&u`31@w@y%S$ z06G~M(A}+{f>@2#=}5P;$&rikc;q<}vS}n%JKZY>&Y)sC(uaf4BJeMu!LZ@s0bTM7 z?aJvz`-OdoqBl$x%qmVguo8$_v5jerQ^8ZP(qZI%%CejhY`K&j8NXq@V$eATz_Fxq zsEfu|Ey5Yk_2}S0u1jCe5g3#Jqry$OUX+Nk%%sj`xqO`GN}UR5Ir4?7leZ~_JUYx` z65$azeX9L3sX6GzN)Kes!=()530THv9T|}`*<%*GOECYi-r!Fo{V%RaxBTLQA?tthil`785q&lm_v&kSS6Mn^5#CRMafWWq z5XoqA`VKy?aEwf$`U{18hjG$9$`W{5(js>lXEY7ANc}r`Bp4@vXnbK^Ij}Y|hqDBv zR8HrJLOc(mfvCcdld*%wgNZ*n&agN z3t;LTyLJAF7w&=~%w`z@l$duW+{diT0iWx}cw7)$37MONaT!1c=+R=4YxIfx0e@~7 zr?a-Xjhkh@Phl;vxugpJtF>F3x4H1pJSX$(AFc~|CJ4o5(b5)6tzB-7LlL_$d`6DQ z{1$$NrWjQ$Qvl5?#_3~x22}HXqP1-DdOh0~Pd7$y8P(v(Od_ebk?Xj0DVvOS^wSKj z8};!K3ofTa&S7d$)<^2g>uFC|8u0%3}+;0w;4=_WdKr+WU9bOL0 zbeT0HPC$?M1prO{8RO*9IBnhu>Ih_l#i%i$(RoM(a8Z9@G78}b){gG|y<|Vpj}yEI zBAFsUFA(7rWHIJjZ~j6umKv!IFaTmGQ%k5^l4sl$_Yil0tG(WZCyNS=gA1Z%f3cf9 zKF||zbnqAc(H^0H*|d14Q`-_MB87D)A-@Mj}HWk~bwONScKE(gbjONlvF59tQhI|ECMlPT;RB z$qI)H_^1X;3d4EUU;y2rs*#rrTscI6oMxAUi#SmuP6p9ncNIz1t($Z7?vpb+4*)bq zWoCJx)xvQT3PMv$SdSQI5_tmS)YVOQ!wheqpejUu^s|90@ub=8%5_47)Sf_wUmP|O%I`K2O6Nq-y*P%H(cY|xCOo`GhGQ*t11 z&N|Yh4pF{YHvD1uL&$?o8195Ii#85{(8n3thG)5qJ3>o`k1V-LVHQFQwZ>O8W z)*n3Hq9YYb_DGrvwhRLuvF0nO6Sfvqo^BmQg*0|Xxk2#yF3EuL6<1i+$Pe_bv#Dc; ztQ>7DVu=ix#j!lHLG)BO(fy~%M$PU{Q(3b-Hde^q(d!3aWgB9gNWqg5KF7=npp`MC zk+NZ^EQG>?4Rn)l^=9<|<$`hQVK$o-8&{C2Hy~2$L@;;mrVUw z4H_+ZrJ$ju_!vmzyN_XZ;=?vcDY$X$J~}&Ig`?Ru-A2&uY1aZU6vuSE0gir6sqL7* z;5NLXIr>Bbz&g9GHo(0!lP(xGC`}5+Y16fcYcvQt2TroufL!n&4M0cZ2>>%&JP|b# zLNW+8uM0XF(N{My3dFi$!kWk&5Y-X7`)2|z zf>L03y^Zrktg}^yFDY%Hr<7he=Ic<=a1>l5a~4TqOW)ylH7+u z09p=ij7pi6lL~P%Lw3TKd2FBbi6bcO3?LU^3d#{fq;mE>#m`n@?vtsyx*3yvPt&tkc0D%qCthpIR zX{bs96Cq^)%SQ6zw2ed*p*M_BJmzbz<3)vV3+xft1(Smt&V(2ou;JvY#o)U*KCCi6 z=|60vd8`HKD+p>MoaWA`|DWmz%-!YQSU7;H%&OV3PC9Pb>T^5?t95+a1$ zB@kbJr4m`DyHk!ZuZ^rI5bgE@qx+ui{l|aF%M{=d!}yf_FELCphTu#KrWOzSk{7yx zc7#4`17}v^KF=Pzrp(s!D$PKW?zjbsW{4_|bUT|lhKpB=lIKXiCadf@JKZbg43>gn zHqrgz93jiQG(}C zJt%-%nXRL!WDD=fF+)*EsFvb8hIP`zArruI#k7rG88aW^4y9c$ddzZlu2cqpWeO-# ziA6~Tj%XmHQAQUUvFQ9GzhMaq!m=rb9~+Gb$&Z!x!EUVD;rWmuJS^YX(h>^U-|IOF z{|r*&!C()GB}9syUMP^pe;T)rUAz`=7-y^yihf|1CaIt8z3M0D(&1lRFx>cWUJ;~A z7?Dt`D5}gR7!IFzWKCzRL|!+eULRs3vs7bnTjQgS-UB=@;TK1InX(EopmbuAVLOqTqQHfEhN_R>lraxHL92 z=yFJ(n=e_9A;R5p+fou$N&`*10sie*)nI<5Y8`a0+cvFe%$=Q!K-1lcE)n z07fQa$C~VE)A+r=rUW67T|{h4QVn}@yifQv1CFeh(6j+~vw$AWjK)YgXIZIG!pMX8 z%5=Uv8Vu6GdWcd9UiG+) zcL{(jKIN$Liz)Zbfhf6;=emhS<%$mQp>!DwUP|TnQYLra5SB6Bi`7KBO=!N}oJ+hsbVRx|C1HI{Imb7KHlvi19yF z1%)U5#Z{^Bv2v^ddt4|oPeOU0z?NakG3hJTAt%uCsS@m!MClh~)ZpdHNw`J0N{}Yw zeF41g`CkYm8}ETi)39wkFJN#*g3!&XC;}>0joW0UlN*U2u-A$a4gq2=C;I5%!7@C3 zD!|Dfg5zw3G>iy`@Ql|iER{OIGDY-wRhXRtEMq5?ihl_1oc*W%&&{K_tS3E!l?hJfgctum?=$x4AJu(=L=;O44T(e$*aWbEXq+ut5nT8atm5n1vuf%1;+b3x05ypTll}0St z&F5FH6ZFsfZ(#y5FR*~&ABIT@U@?#p!~c#ZA9G$=MAwn-dBDgABLATm?${gbJd#u? zL->fd<$=-hOxQ#4xO>{L1{Op<1}nVsSh-Jdp0Y&F=IIuitx;=sY%ZEc|9H=s!B{~* zJr?C2uJTH!i=Yd3a`q?NkZV(dCw`blP%GEL>Y9SmZo3#tj-5zo_p$LqMTkK|gOB7J zpHOU?-cW5>We#v@jfTWPkdsK-G^siA4Ie}FiB(aoktR0?eHmx)SZDOYp9^5%IE#-K zwOHm{0gC_@W%N4`A-E98$uT{}0zg>&SVGbGh>9U7^&pcg*kTF6O^W9}!48z872St4 zv_fcc$Qfg!IOyV+M{G6}az+su()82P{b=D$2HqHZTh4_hhmuN#6WxEBW=6eGS{+l< ztoXa5)(^ib=V}}gb*i}^+;UxRP$~Z`TEd#qLH? zx2N4oa65ZDcK0o{9`hH=?C>XniP3O$fc}C_US>uTCp@m=r%j45Yt!|JYtFB_VL;fS zJv04~=xBssILeB!Hm>4}H$HKk`;1ROumYz~4k!!I#8WJCi~O<4bN)yLKr>G)pn|Mg zRZ!%rDUt+7_ELdDhfGEu;v+%eGXE6@e(9@ops384%!c|MEoSAWLS}?X0M7_f;AI}T zniwbZ(QN{Fk=?!b@B+!F|^R{k@%2mXdy%j zicc${4Kr;pLJ%i(=KC(ilA6bJnO6*=nBT@>^?=i04pZ*SvX`AJz7b_gO6@AK`W^_0 z7b!gmCKK$$_)}w{HP68vpq{LNPfUt>+RTApF*xYO{9VEkl!D6o;lN^>4=%~3(P?v< z{JV5Gu$G8ien^6eIXzb{mvkUcWWfP$dV1|CP^c6m&fvudI|3*M`F(h(zpfwt1)U0Q zIEQ@@VFX7!yEi3NdK$YzN@8*S+BX=?5$^EKrvIgqC4L}uhU%{~ta^eP6-%Ch{Q$=B z%rW{U$}&V7Dah5v^|F+lL*#r6ay%c_1p+th6DFJ?;ZXrPO?FBKaM!FV7ewQsU_8^P za{}Iv(_WSm^AM!U?b=s;{S5{jmz4tbQEm7zCLQ7qlodq7Vf&B8&E5-xw|vaMxIL@d zW0S!Y!0_WA&gI?cjxOY+W^lQdn;)k+*YF29kX5Ro7ZZ$*jmpQSry!GG%GG?$HC?t| zRs#O8#~d`l;9Bt;1iCD%Qni?<$C6fWu7dDM`RWkvtYVuZC%Dg`)MB@n%1!5F*GiO}k z)H(Wu&Zl*!ju4gx{q)sx#&)zVqx~&;30lN!5Qv8~K5@Kre9CYuA1OZG^>PN(c&(pE66{lnEYtltMp*En zl$TWfy~_6;)BDf-fR~Zb+Cp$*#BNrFf%YHaOv|id)?^eg7tjq36Rj7*i!d1i&^>Lt z1{k!hz(b|GTR#P{7PuZdQ0(m0?2(Jt%NqGmLN<-Wipem#*q|{s1=K#$2mNdB_%EQL zD+ALFU;IUzfml5vM+TQf-5jP0W)-D3SP8f32m?c8e94}4{Lv-8tZM2Ee~*kHEIB(r znAKPFvS1%Ph~hhjADK#&xJoo=CZJ{Is(Z%1<=x}?)s-mkx@$58RH?+U55`Bau94T^ zWgzpwNQAO^g7#qvv<$6KzzHtWW+2HjS=YAwYOpZ zF2=^%2y98kHE70s5NMWkHO`=5oI~(8j`%9~=mvLblKR>H7gwZPesRGalJm3d<9JkO z&0C0vm}?e#EcmsmU>h_GQiD2eEQ8=TMy^r}kBMYQ`(=Mk2}00Ntdo;7OeA;=-|v1p=VU8rS`!<31WA#CC#Rf?q6U|R zzO6x>jyVk=`z|L)A}Id_D@I(i#mRy9xo%4YmQv9HK9nwFm1a#L*0oq*+z+NWVw|$5tT4B6 zOQpW;T{)N%R3T;bh18%i6kRws*5=XALBFNEZ-+uOYXnT7w2|zWArwkDloT79NRNrMET<5p`49%^wSJ22=(z1 zh%mWs?%9EsS&%NdAH`gEo2$d*r!W3SgVLMkFSm%%2Hb&M~{ zK%~iPM0OVM`V#rjGR7T`hQSf-bj+qK3D_oARi3Yt5s_carptyA4mBg_@y^ui4RK>& zoM0UYj`Q^sFKTw65r#+*80IL;q#6VYu=0#dgcX^zDwh|eo4ki*^8EICey!F$Ir8kW za6kLx<@R_Q!M?#?@DKqPY+JbXjrHtpmq8JF!AXdG`*Q+|A<%o-n8Zi!JaUl%& z79E6eZ%38D^>7ZHVKT-{j2n)}C%Nz~bBQ1ThBhx`df*bC%MlK6V#PP0^-W-$PjDk@ zXM?PkPtJ~FFjgB63lj6*lz#;Kr;c=_#pKgh0v-wZgJUBXK>`p%M$dKG8UPNnE5Cqh zfp+o2hAM_61;|hAA^Qkc9cTCw#1S3k1;tYf2!<|9AJBf zqZ}+*ZvvOv1SMc9RX@_P(niVDl0V@ z0>UPio5%{vhU!fQ0>q;UuX)@>2n)CYBSOBQ0)$=will;$AJ_^t+OP%|L_P*9yz*GNPjH^PM$YEx7MiUu7-#%gF8jVH6rr6e zZxytn9*c4hS9zt=MbHI1IXh0&m`1$Q1W)`h-C(WpUOz`l8a|_TjMemsb{`wRRD>8e zH26rq@u}d*u%;3V1~`C{!+uN*1kZ5<-pMG9X%JsGw2cjaNT*B%%YtFb;Kfvd98Do} z$c?jH#^?p3LagK)SJC~lu4I&<80j&5O1Au1F@X}g2nND0MIj&!QPB()6HGfxH{mB;G|oEt9=K%RsVCG*`XF@HK$l^L7j3R}r)4(W}QamC;2S8q{XJ5m2<%54(X#_^@$ON{X0!70Z;y za{=w&E*QSua=B4d>eBB^a63EZ%jd0tsr{J0h>ec-AstM^(E&5!+H_@IKup45ik~(q zJ}8jfdXKoqyg>8Sh2XaS+fdm1XH=vJDLD6i8V32RR#0{*MRG`oylaYr+UGay@_*XjnrLWF~qB3Jr ze%&i^f6N;M6qp2zUWg)xm4DK@2HeYhG&_CuWiEiW8r{Ye#JXn+24@wWgNG%#6QTt- zXUxXyfS3;%TEIhf%_4p3M69+YDkTp>8)h;CgEa2YFieIIxF6phA7ARCVGs!{UDE?j zgC$IPU)TF2Zt1j2b8eQ~25oP-$18>=eh}&8)!7J48rdVseZU(f9rcW9)y=vEZH?>% z&j0-w3d24u(#P@VLL8VQjZT|iz1@dWozIA(^4{+gMp}s`uhuI%kSD^}aMOc_CBrF9 z1}cEoG#t3-8zHd!d-m`zuwM|%683?618bgdBZt-UT-GX$FurmS$VH5P=vm_0Z_3I|?*Vkft0`OuyFSHj?mFMF2qbWTv46by4w9+G}Iz z=Ymy9OfK*awP#pr(=1u3BEU}6NfsdiVPKa%$T|XcfmFF2`zl?5FYqT6LWKv7$ik`>xfE;}QvkvT26y}$L|M@t3&b^Q1~R(iuBTb) zD-Bq*gOm}GO31>C33|Xb5)qD}RQxIBYQE;0F3Z*ps0@xNbych}Ik@o~+gsB#H8Ke= z7+j+iWYrTerAX(dVRqvhCaJP`0(+(+OmQ?mGA}X{GAYiP2rjEqlyiklsG(gau6$W* zro)Ot225XgRA+6M6Rn~nZ!Ep5g8M;F>>KAGewEcaUoI+RGvNlo@N?Fjb-VNq0xE*p z58OD}HJQjo`1I_vO+VUf>h=DeC zE@O|9*{PBb9mJkZaown}LrRlunlk7r(l|KE5;7oJDwE=tqcfc^OP6_$qcsDV949Z= zS(@;>l`4dCC71N*L1klt15nyJNi8Po_rpsYI5EAE{98_2L`mSdmg5@;#&b zKmDadrkaU^8lQAyzNwv(o|g7eTXK+jlVH&`w+2Xm?@Z?Bvvi`REQa$=?dmfzFfz$7#xurdUL^8WdL$3gjGVdO7bG~ z+A-krd{>*{urHG&yb9b!pUr&TFa?&H=-E!YD%;gsn$e({0$N(pmXxurtE>Yj#vC^H zcG3AK+LaTDlmSG;{7Otu^erpw=7Zg^Xj7&NKMOSF(u_hTM?L?p*P%x|N|570*nFK5 z(|#D!2nr6G<)Dpb5!W(iP0Vr}VZrnjFOyl3ezyO`xpd1fE*LWXH?N2);bKppMR5W9 zuQ=RYb&>2dP-Jyl-$HDkF{&C`oBls_4iuW18oghb zaNT6sDk&0#9Wywl6a^`$kvUJ_M_>OJ@8xmDmkCVTTJr`Ag*JLk^xkS)6gJP zWFjNO@SMrtex9!hgMbN73!R*j7f1Z|``ynHaHL=&q`81PBY32lQ4Xp=s;W+*1c4g5 z?$R;j7sL++E|Lh!e+9^dG$4IeM4U0C6WGdAvuqj;sfO+M=d%{1PaOgYI2JO@*sbfQ zEaGe}m(8?csmXfIeaoT(cksEv0#HYqSiUBDvE-qd&+sR7Mzl!l=>W46zDrb0^FltuX%q8Qa)BS)CaLh zWpVWP)f#ETwRjW4d8W&>>NeY1YJ-AP&feIJ73*EIndVa^-NV zf}A%cDTp85i`h>fU2kNh<0uExp_EK9=Ddn_!GbV+3S>jPgNKIHw=Ed8HhJP3)Z3T-# z9cTF8QRGuIq-2O@u4i*(1{VCRvzmA_{B5pQb}{6pCdOU%X~zowWyDTsUw zR(R#Ha-ZNlU5AiukHxLieI*(Czu#9CBtw#sjTQ9MV^QwmDz9|92)bY=XUD+s@W8bx z!4p4BA>qevyw}g5wA)S+BdObxB1{RZ`T43M#JFKxUIzhR6gcR5%7(3?*c8=ANrt}UkU36a4;KT$pz8p4qzV;$SYT0i_s zjTk2pa&f+c&o$tdU4<%&atSuF!ASsgXG{AP>qA{WK)K*72zf|=+or9RzzuE!ct^9h zv;ZD?!2a31>z*Ex+7|n{j4sm9pf>A`fKns7r@j7^Y@C!vr4E$unnoBkp#9qg!?&QY z*j)#ZtZzuyOyV6|iRM&UhjcrgT95e)ZiDwB0vlvUM)Ucu+SfE$tV0=92ZC}ihu7J; zLnO|DK-VoXx7F*JfhBI{Y~3nQrZQe|I7R0`{Bsm~AEB{WQ~;0xRFilaO+0sgYM%CW z!=K*&kR6(M`-D*3=ly0==DWlVteRAy&>@qNhj^^OAI^WJvtRn^yfFr$V9M{CDv>Hm z7R$jhaA;Q=EJ}F0xSALzQ_|=UzXEg1WA5)*!|c1!8gx?ST^Vgq0pp-rZH?#=`reT$pG-Q6oFiIOu-76W#02Z z6wd;~AHCu0?sRFSrud{8r3ZD`S7X5kQJrBvkz%x18!rpV02IIpAC$1`>gl3v5x6xM zt#e-IM04@Z$|<}fv}af=%mo=*@1$A5)rS(}cqKCB@iaSJ!DBr=>E1 zg~WuH&Nt1LG|q4E#=GR1?G~Gol!1)^hLAk=E*Ns20d&6ou#{5KLxS2tYoKZkQBvUPPn+tc05N?Hd*C3N2hzMoB{H~ zLIT~T4aGBLONt@h>nc8`8@@1I6J7-525u1OvsQEb^&_FcNUU1=;hW4;ir#cKXd`zU zV`ARZo2a0ihmAq%dBb9Gyf5Iq`KoKh>19pmZZMDK1Q*_xp6K!LWVp*^079uS+sm;j zj-8ffU^b?JEhPq+R=qB>w%7px!^;*O&Rs_Po3yZdl+kE~7EYk~mGM9s$4cW`5`(kY z)G+RrX56g0nv5`_&^+r5v*2Aqd&E%@F%^U@+`hwRMT;4-42aBzAc<=cLp4eJ{MLFt z68k0=bN+PiWk0zh9sb1y!;Syu6;UD9-O^`KTx0f(INV)jfd&ec0AWUecNQmMlFjoT zb)5kZZO~LepqScLbRUlQE@*&%>GP?UhG!5cBv~U2iE?5N=9|w#Sn|~lthn`!B|?I% z>-;p^bg+8*O*L(KTxMP0^E?y|h$=8n#tx1`=z`4DW~(o5mt(6G_HZD198CnB9_Rr=9_J&H{WO6VSq4+R*fwWnnCoz=D|69U8%pUM#Ngs|#z}tMk`>EeVl|$2W6p5zvIc7#Vr~;{NcM2tFRMcRXjyVkg17tI_k6F8J zL5^$*ujcIp8dAYlCc1KP2+4VIKEJ*ik@Im^F;);Xs{{b@FkDZJoW)es&-xjP=Yspz zRm%aN>z1Ma^-T0UjK_Kz9!xv!8auJTxIY)3wcr{B$-nioaZ9DX?OEkEBxGUn@pJ3; zx_jNV_S}xluYXl_*!62_$!5{gR?M!OUyuyPEZg3~S8bIXIFD&@`NIVEAp7<)J_Eqz z`$TKW{V&b>x5Mnl=xx3Viwd_&9M8Y;g`5Tuv|o&M^wSJ22=(z1{%WzjtM;FAlvdObPh#hDy= z_VARSe&9{b3Q0AA8t(@{Y|OO?h|FHxT+$o>lspF(1^Uj^-esG;0n8M2nr>4&)2Kew zJd!CMX#+Aq=w`m?Hr;B|6&o}H?&`SP)bV}e|EAM9PWP|6q|}xHxic$)PdEWIg2)Y0 zQW5upwRN)=P|hf)zEB1YhUcsa+=|wUp>~s@%`8|9j8%VnIv!7-;U3I$rtek!4~~so z1gHuh2lZU}FbEB^D;oG3Adq=gq8Uenl9+>%b|Fc631y(_o`RP%jJ*H@7e*l0=Y!so zAvz|>OS~ybLCVDlZKy9A5#jy3VxU4>aKQ;uvUXTrMZ4lK8jx&=AQ_4dDy+B>d*Mbm z8I*j5YQ(q=;d5G-#^oKlXEX!43lj^A#u)-EFJusb6O?l`G!5nxRH9W0!~+7CFZhMU z3i*N=cwPW$hR6fcXVS-4VGWHIh^)!~asp#OmP#X*Dy`R7t`j2wbxiL!ncr;uhhb6z zSd7T@cX8|{y-2l=qQMe>7(p{oYOmJ0G)~1cGDnj~HBEsDzP;Mc0rSF=CW^g3=O18089CY!^Bf{P& zUvf{ONtS$?s{W^8(ETd*KZn3z-%M-$yYEm}Rol@-Q>>sWY?{gju+ z2~|TJfRz82NBCS{x7EHu6-8_4(XJ~*=&m>-G*{WBs~@0Ta2D6IuNQ|7?+S*S!A-(j zY=fU1z9|jSDvIT9H+e{kSL_$ZG0}o!x)IQLB%~Pl!}sY%Q#YmVcCSsB((UZ+TToc+ zt^??f$=-4qJDV>2D5Yj((yIW0fL|(@lLW9>9Gg?OYde~$1EWsbHk_0>ye(dL;8tZr z^KENbTWHTof2X7MS;R<9@Nd`mBK|oFSCg8!!|3*SWvJn!zQN0A;ssoC(@jnwcL>2< z*W>?Jf{~G8riV`~`s4DnZYkZO z+EqVDCmS6DV39tKKjPajV2(68Z4Q+DUHa`eUQ~&B;D^LCTXX~;*cSN#Eed0EUbj6< z24PZ&IXNIR;>-qKLuj{k4)Xi(aQN@#!@r_a>q+CIoBG(Zg*a7$x zytwb0{ApLa@f+g@ym1T0$s*OfS+r%x=O(YGc>!B&fI5Ke+6GhU3d(2ZAanuqjGyrF zre$Ha|QJtiuOz3DZ?0R)i&W;HyjOU#c*?MLNUfo|?+P}wt>Tq^tx@bkn% zfcy$9zMQmRDd>ue!^MDdn1GkiLJi)T?3&EwHlLn-w&_P(YNOlUHcIZRf8N_f(D1O) zeQY8SO%71Rv$w6l3$AJ$#|+4jWY!GWC~WQ+Jrpj~8LSYa1D~I9yOjXNCweR4s+K3A zvuW817;*2GtWJ`C+GyV(kby`Nb}6yMHg+z6G9|N9B_GkK_~a!Go5?tpj9!$%;%NUt zyNMDvkh^Id{xVxj9w+m*b(QBhR!e5Bak}ohwEh#HYbk?Bw=(e`pO|uiV+>FE^WAYr z(p1Ka`Glddzmt(X*jVz{1wZZ7PY(NIey#w*W4gT097f zY&TF$I1_Dv$^nxhblddxa_sAkKqpcA846HX+JabnTn{x*+r`9u;o>SkU}cezO(U_| z>D~rz2!X;HO6YE&3kD%gVGjvt5ZoGh(n!Nh@A?>kSWR-K0GkW(aZtce&XwK>RRS^B z%u`5ej4x;hC|#``rp3zHbxrj`c4Yo(Eh;RQXRNoq2tT|4U5XVzusg8GzAE!=UGiCH zJ0{+ivF~8|eD2E27UdmxOAL`HR*@V!m;-1$0$Z*WGVNjaqDri5MphmNTLo z(*yXKI)mdIfquXNH3lYiUggE3@wU|yC=w!(Rb8amn-om+-f9~sgb*{N_=&B3WIH3n z@SMrte!gE5qtpa`8>?>8FMqSl!@raeIuT@=0-9bR0CoXAss>RWsVGPHKP)x>$tX9- zLMEpHfbU%I|2gmsflGk_^eF3iJHdwWx0y7P-DbCoi0 zlt#{CD%#C=bEK;!_idVv13uS{aJ1!)iJph?STCF8ivxuy5BmAV{iX1%1$X5m`FCD6 zZkG8zX{AgF#ZND<=g#f@@P6p*xdWMB|C;7>*a~#g4!sIq{ z1A%dRg9e0*Aa!gGgwxM>I|vx3I`uX2Tzp7&^;J*@2oWqM_(Rq7he3^hyv)G zQZt*B0IYchDEDxcS2|q;U9gk0&uv4lO-YB>k5WkZu^aF8Q%br^k{F4xY|2^g>&90VA!K64 z2;_fFnA$N)p!6%XHH`W~Z-X&$7ETg%q)8p6R0dx+^nhx&1L@2fguWgyvk-2AK z-hdmV+z`cU7)0~8R1$QbxGX7 zwv-AKI%G2P5RWzUdFQ{<+2$rr{FyHP65t6lDATO#W)JNV{fgMgtfd8_s9RXMj%#9^ z%txzl|D8aKtX+>6EQ}LW5bJx^?6$0)sCkd04m9|TAlk5I343DU`!gp!y4pr~=y1TX zkVtJSJ>RfDsKlX^5sn#*lh_SEq=a$)ap;c>A|vi!(*sU}JItu>hr@dkw{%)XR;u&Y zqk8W9fhL|643pIvDjT!mkpc(+3AqH4{oiM=@q5-2WPH0ic7G(n^=}Zl;s){x*wWow%DQ=wL zRaof%NB!`xcypi)Z}k#uU|_GXu20A*NI!&s z-R(+1Gh`!RImElVJ07#MA_%HV@kF2FXUc@|E-xoi&jB|?uZ?Ct8~sqKsE0)mm__}_6qHQ;94iy%ER*@j;*6BRSYv_}L6 zOj(^@)e#7hw1yU1d?JJrL!hzwbj(eN;h*=Zjc$9}sKdJQ(Pjg+WS_P`ae!J8cuQQC z@HjfaN6L)Qf)t4XMF%&-m9mY+%uu}zyC?`b3hHpZ~lBATN=}5uikb#|S z#!0L1lXN#S038GzKrwd8?e;_(udQ!07vDT{I{C6kE!z&X?e@nfj(3hvxn(fk9e2e1 zbseqT1c=4YTbYJ&oJKRFo!>)NyDj8?V{-q0e1nnMmGmW!hOTmHsy!9N1MNWXoCv+b zDDY(ni`-#?(n#zMW>#zgu!1kImtC7ZpYZpT?#5oibRntk5mhu#+sV~>%Ee82<~g2| zU`Ap!$ep*c)&v5DHPms7x1qHl?m<8576_yGQ{o)Jmk1C5CdF!G3=2g13v1;tRbcy3 zdNZ_@d=p2EP?w+`YQUNW;{F_tr)tyUmx(xuz{qTk)Tp~V=AZ0w(MC7ez z`;HR~uGB)9R@nCBXH?I$QOww2Rc%r3_8K1!JsH6aX`ZaaEO?jD9&uDej>n785HonO zaflRXmUI=(0;t8?79;o@9*;-{40?$_QktZGw)c{soJ)s)alsvu^OG#n6;Yv@H*`>L z6Ob&6X;QkYES*s!IB0Dk2s%rf!k%^v-4l}(Y-iJ=?xNqS@EQrvXlz6^h=5HIsgPJa zxFLh`0W|V@94_%WEN&#uAYWNwXoP3K5LGANBj)Yv9co&(e%+M&;}H)Hq#~4yz&OQd zz~0I^Gqu50F-H}L8pi~=3enu0!NZiovJV$ebnrl5ga^-MjS3E?3TnI~Bml`}ijnH7 z3FbMgjTAvs*uL=-Tl>g%Musu69e?}%+chN!K@THWW`;wQk`161-|v3nb;$ZKXj&87 zHlRmE3K~T!LPOu3bx%USVlbc6F(h$>at1CC{$iKySTTZ2imqlmUO&$&9AuYnddLn3 z4qT^(EDG3VV=!`xu`QE2wWpqLPP$ z0MGj_|KnwGWArv3DzFuGJbd|kWLNr|bXbjb^waDt2=(z19_8k}%?zXrYz}GQsu?DCCih@7WWM`sz<`Xc^ z$%8ueHD%cm28Tn=n9cFH$H&oiZ%wy9585a{(BPl(Z-knOaXXppt~bPuD*;Zh4%~+~ z&5W0r@LFh=Tp;K&5cOp2HOoyR9vCPf#xkWI=2#r64E3^U<_i{n>1hcX5!aJLRevT& zXmBjt&pvsvC_MrD27h76Z{2NsL_uaoJujHrfE{^G4Ng(&+R`7Y{F(FUB1N~|<0*ko zj;zSb2!t@old=cGy->uy*k=SdEcRGbi^3_*v`76Y^ol6~ z+Asl`*J3gL!!V&HSPT#r!~c#nr-uc{!m@SG14cd&`Pii2jmStD|*z?9cRkA>l=WC{CGHQ(^*{N zz{}9mTl7a@(XKtHd1Clc6n03a=K!yx2_X28HKCDM%hs@-5WEUa6v38z`eMtq-5hpM zqgWX=k;L_*ZsADsm29KrfKQzZI#RO1(1dXV#9dXlr88?8b||P};Y|kK=>OkY;t-nL zbgD$2=zg-=Psl)7VN7ptHGg;1`r%g*7QUwC$GnE;Z}(dHRqPuh_4y%Ucx8hIAvK z@rXlxOhF>CvvE?oDRnm#^M<6}&fdOB4=D}9hmR}i6t@!G$nBOh3#iAGT95e)ZZn%G zu(>1v^@qNhuFTj5$^m~I{W2%#DB0@ON#?*@H-&N?7Y38N`jPPqryDyx?vpGu&xn_ zi>YY+_y4h2eZp@ZaN;&S#YFKf$DqUN2~1fL)ssn=d|AA^+vJsC)0Fv@Nf>wtr(;%< zLXI_H8op`{JuN#d1e*|se;hRF)8Lny2mb4M|I8qA1=uw`;52xEDStbkza?=?y%1Tc zExugTbHCvg!@CF{1e1Lw=@evhNH~Ns>Q7tzz>Y+0SRG&2ZyE6GVTJeX4}+=DF#s0n z|6BhH8mnz+mjhy30!q1liDadY>Dp218_;ay4Ib9WOf(wtyG3?RR~NTeTa%F*vXy z=fHYtFwSyI=+_;eVAQj+CPYGyk2m9f+lz5h5nl4aykMLoKABbeofzjXZ;^>+X9%<; zOgF{O4=y%njx8A=w=%6Xr*pe4p%;vL4AWk*KTvR7>vaSzS?P`!G&WA&zrLPschm&< z^YRvNa?qO^eKRmlxd7;*&FAW6+w`L?wb5;F`-}}Ue8z%(*LROils@S`Ho60A2|y9} z>XE1?B?|;R4oc1B(Q!_UQ)8i!x8Jc)4wD3Y@QRq;N|4QOM^m3At_vx|cHF!DP)0}} zpbY{^L^5EP5=(5i90i8#)WA5k1-K#T5YoD9d&Iyhqv zGj@^+#WR4Ic&(pXR$N@=5PZ(~VIk5U-HG2rR#Np% z_5Dz0_>Ue`aB^PXAWxvM;@D6h0BGo|1ATPf>Nd_B6zqmR{I9qaoR_dB)7577+vjKC zxtBAJwbI?KpMqHTEU%_&3Q0_tQ!Z}H3%H_$Y#NCbZ6d}mAto3^3^{bTU>QP?ffY${ z3FE|@GcZmjBioFKGE;Puz&Kkc(@0{Rz@M&WD&Y7yV(1FBL zlu9f*+m`$00-o>k`~xzq;@XUMg(dJrT44_-(1YMWe)(ps^eCt_rIfM9UV}H#){Gi^ zEB^uG#5etlaS~JV7Z~SUj58)Tnu(y0fr$mdr%CE(doTIPx!dgalM99$f00GHA_%vh z*YsKRp}6D67-zG?FobW8y0zrRxH{p*giM2J3ILh4UUUVFp&~j6OUmV6__!Lo(}0-q z&LXum#rqq^2{O!@@(5%d7^e}f!8pMyffwpMD@XFp+on96PE5eq-yo`R%~2*+L&h2& z7^e*BSn~!q$SPr+&fmTl1R~}xF;1dQNxDB`oZyal+FE-U6y$4@B#hJ6`}bm;zh4vP zPE%l<>Fe0D=wRstBYRx7qPd5arRe?Q=jjCZ*Jq3N`2d-84U@lkTTx)ZoglC zzwG5U7c#&8^*ui5IkjZ7XlZK}*Uc~3NX9JpM+@KYdjw0;TMD50V2Di-J0IgS2I%Hi zC|V2dUwzpX|9HK_IBh;aEh{Q<{Pqtsec%NQk&f%Jj((b%1))AZV*F24Ins3T7gwd? zH!fy)=j9=#ZUIX~8}{&W#40SwzMoNy(@2`>aqN*qvl%Xn`2t?f(sE>-mdHX3M4F8E z1w0jCoV+rNR=uS>KjE}_N^Zht1;z=sw675_`~79m6ZrvqeL-?(2rMUv!29nd`;`DE ze>l`<1ICFRQ;bsx0xR1VKoR?!BL-I}efC`JsLJWI%T03wgMwpm2QH9Y&rq$KFAuyu z;O1I|V25*MGOBm;J4_|U_$3!Y;f*a*xoaI`li3)sEjI#yfd?Wo0S1-A6fGY9WVfVqY z8}9%Qby2q%=Ncz9AVb$I5s51UWgzC#I2xn@`ANb!m4cFJPpN`Dpwa>3#2MNnYE*Jn zm;R=OHr`ZKcA@|$22!Zhn1h0&INh+oAr|)Px&gg{an@j*hL!^3L{P&s6TnrB)0ms3 zXg4-Ug=)k&oDR_5;o$WF{~87*6obzwFHoTcLFVy@6}3jyQA0E2!3>p%kQ^h%*^6-^ zUr@zmlg*K{6?rP+wGvr>g@wLpj(Gb7B~4)r$Wm#t zAxa9v|BfQ3#|6j2QhCnRv1^x8uDEDxcS2|rtIHoJc$+aoL z6F*EL;m0oBnf6lBU5eT@mb85NWjxrjFYlKVtw7?oJlW_35&Gn zQ0uXWf-ti5QH-rx(K7s6@oRZ#H{kwvzU@9AE_>i~wo!G! zTErZ_Z+^cB((Guy^A-*t+H=Aii!V=jM<9xmbU4p*m{-uPKQ2_kuxKZy*YMukbc= zvSvMAFUDC1#tAOZ&_eOQT);TNZ8r@sqy^(-=!tRi$~iI4KZUY%NzHWn&&%NjF9g-i zYkJ@ne#cp!|9-jrp2RH|=ChEmEq{B~_3QUbPjJ-gp)CfC)7c{>G0w6$V_evsh}y6^ zy=^|{_*ER&{iXk5Fa^d5i}Z2)8EgpVNTbu{xXXT*{_zjuCE)`7LvjVk0gLRpu3zf< zR3p3~Hp^SsFqLepW{Z@h=tS@v+`d>;^Y*{Ghfg?(;FWnqVcPUC18j_Anoc3u{G~%q zDT{tf6xST#uHM5F`}TzgqImXN0x=^leMb(Ens#mslFY^c%V>RYM3iNSHd2fhd6t*K z`A94k!F?N)@NzlKH~krb8!WM|+C8e-{=_>g$)iF%!m`xuaVLLM1nCjJo&XrRpM}zY zQF#w|3sU8F){x*F#40Vy9 zhr0dDglCw~y&9Dk2&Ti3pK^Cd3<|lz9B2iv;qja&2 zoy*vxWOk}c7a%~0h;7BpHXElBrnpGK;;=?L-HdbA;Q$$s#^JA5rX`QDgUR)UG>%nx z<29X5o_Tpev?WIt*&u==p$ut!;*U=mZ@=9gH^dBf9j)BN)X2}VO!0aw3lTvgh?lGO z6j_PDLhc`m3jgVYFfzN6zGP*HKI+@{yqMQ`GhgVV*8@C-eju3aDuxNx3!;00^=_&e z5cFTaem?KYFRw@ZeWANsKLxR#PYzu?Qy|DTn{jd9y!9C8IBOb-wWiy>6(KpJ!=qSxTe|ex|rZ}WM_4~uSTNuc;JIBg}Q`b zgtme)hLz{fFR$P^@OQ*X1;*~k*wEcwFXYSFSNy=t;A<=;Ctw3p$+_?9XI8PFX{l#G zP)wPPVH5uN?bLm}oLO!T4Eyl#`T}DC4izQcHmCmWv_l##H)kR+o!V17hxVB?7+$o( z`2-hcJCh$PZH7v>-0B9aA`Zs+d}M{^^Wp8Z#Z>CTriP^tcPZjc`-T{Nz734m2meWs`OGouBuX;aZ3Oq4h_V0DDuvhsuo0<3C5*~F*PWnHTUk)H@_ z#KLvjhgi+Lff!2heeNuyAZ#*k$Kur&@ugwS)0t(VyoqLy5|e+;n+sf^LkGroRR+e% z*lEGunk6$eFSuI4nCeT%dJKw02=1{7tPzoMtxS4gnO8|K9dHKAAWo)>w+@Cn$bKOwdx@T6Z z^DrLkWxN68O$*kWMxVI9+v6E(!6Tpw_j}p6rBdJaeMsGMAv8b#zn$Fvc>Ck+B)54Z z^XuP!|K;tuq?T+JEp7esy7`5{X?CX5vxVQE_Gyv&*DtB2GuVUd+sF6}mg|3?Xf0ok z_?J`l&o9dxqqmGmVOG?k@z;MwcH`2e=gnA0Kh4mBP#+&L{->%u({%9{SEb_jt{nSz zqUUrA;PnBhH7j^IVwG-0bS07*cAx&{PZ^RZOb(okKu9<>mYXdr9Ki@_vbW{zshU3W zvMkrW-xAM-!M!91-3mNEpL4d3$jJNi+n|c7(CzAX{2LK9c#qd?b{bwvA9dzkLjs&2 z9!3D^=e($S4s^Ed5p)@d2&DA^?5>=GlQ9%;c0*R*vudHlo*&{pW~p_?T@T}sgeJ1$Fk&jZ(+>p`Xi0OE4B`owtB}^ z0vWR2AJ5gHqP@^v8bTUTvIc2`1y2aw;G&oMQq-5eMkBZY-Scm{T;TW@b&(6}5fQ7~ z{;=&TfKcEP7D{aU9S2xDh({^z!~5MQ-YdsTHqT(5=qYu_o1IQ%AqK+=n|gC5s|Iam zbAnL%>HO<&zkU6`fkEWcG>eePEq!n-SW4^wU|3C7nL__adP%fr$_^oo84Z6AQ|)U|jX@e=f>8S7JUeenQV?98;~M{rLjdo`{Qxs7 zUK~KKm`L%}XlG~-xG137^4ukY8mJ{$5eu(&pg0A*PNxrUCi>y=RBwy&OoY>>y<8A& zbznqyK|>)PA<_XR5Bdn_uzsb6ronv9V9d98px|ZLZsz-~Dh~k@khNNywYEEh6tBMfo#&u%4OQ7(W6fmMAwe|aMf9m%7HVp~0IFlbDoz>q1 zS}LaPkPn}qx6jYJ^QmSkXihtV$8~#572Bqwe8=bKo(ovi#=7;(9^b8+E6)4f1uFZ?_C$0Q$0=|)qd zQU^wTO*UOhx3jlzL1D2Qh7TX9OWof}a3i;C#ycWvjVZMr^ViNmO3(`am}p11m47{c zyS$xPvCcNC4g?-%4nOyQyfG(kkLP{!dcg7%+A~lERN*Q}0kuWHeCbyx^ZR(y9nj96 zkjm(T>jMWzURGg_#3EN;=3hbXE`TYQXMpDIW&1MAoAc-G=e9j;zb0;ATS^5A9Woht zh{yK$!}+hb$}fF&{vX_2z_#l%)2t-;c6>*_f=P5ZmLlLEVddg#M8s5`$^YB`;$<>( zqC*?9cueA``5)E(`9gd^2s_?fgbTmED*N_?hnry2?5qgkdH4!7}z|2&AuT{K0j~vZ+J0(mv987on`%S z;3dmN9yTyX8l5%=O8zeW^Pd;oZ!SM@K}4WVqB*{H?U%OYiAWHqX9Q`O6jDqJ$c#9{ zGK8+%vJm`mKnVQ$|Lq<=;T_hu04ex79bg3!3n&en*$h#u{Icr+!s^3uL45JgCln|s z;IMt?fqnupeH=c-rwu5dJMwG+6k|D1j3ljv;U&<9$rz% zp4^Uom9>GyJD3v3h+qcgoT^tHOMhv#_s?IjL*Z?1K!`q{c`xgc9Z1!@A~J@Kcc}QA zo;U~%Z%bq4hDNKhI-kJ|5ZDl*|Av@2&z{#fO!XTW7g?D>4S#hzcE=7Mo7h9&C~52Uu<5`_WE+}XYWThe&=mZkg_*KExn~LgnoVD6I^4_Z9kvtGwxX!#V_YY zyDd<&dC5mdeUJ~C>5;$A&x@8Gtq&FW<8QwmS%d&Q%$)Mto|x@EAIX5}>(rn2Uw%7Y zy6rbGlO}5+K*Z|ifZ&VoR&`KMd+CpL`OGpS0=~~L&&;O0+vV%u;#D`i3#mQ#M{wg5 zPaDnK=3`&krXOvojc$8e$VuU&&E~~kF!7ZoTu&ctDBuScA#Z7KM7 zyi2@5iB)rmoJ6T%y|v+c2|-Q5FookH8bM5-fLcrAa);i?k$gRe)eR|4Qa{^!(NE5$ z!@sy-xbfe-A}T~|!Fc5Y#lyRdkU=TkRTk6!{-uH`7X&=3SxJb)!gl*k_aipt4gF!z zm%Pbf4n#Y3RXO~t0RLs)LTNTE8={RTjL}LQ6O4jB3t@@(M)F9auVT{UJpwF&!XMxb z_bJ{)gPK;Ce=Ga9_xCN!XMB-g9j-Y54=jen*vCwb?+`Fy*?r!v@Nc9CfbN~aaXZze z3bHNA6MPUi^zfsd5U|>K|GZyF+a#+kiIHlRu_)4aR-3m+^5RijFMgJ*#lUrlE}fF+ zO#bropV#E;MM&Vc>C3QBkw>nFR;$a7akqU(K0q;gju+&Z8Rd|Q`u^qRYk^S0I!!pl z*L19Q4A)rqf$Y~W^~-{5;cQ;L07JquS1-GQa+v&wu^;j-}hpqNQ!WzHWZO z1xJa@^zv@u&oAe+Nd0erO*LJhoyop^jL(P_)VCs0$@h1o-~Vs+-a9a=qWc@4xxH*Q z*?TwHzI(T3vzu%}C?*&n0zm{sMARUb00C(#3U)+PKn#ctyN_bUg1UeOtf<%<_O6Ji z*cH1Vc|UVEo1l-+^L^jnU%x-TvwLRm&YhV%Gk509nKS2{=@YML&N+J!J!?KFbF+%F z&e3;}ogI@}Wv{vliANGhM6siJtTj6WRDij}56|C}jbIe{qnU`&=lmeIg zO2OP``$;Zv^sw&}?BTgazzD;7!&mN%KuHMuH5D$H{eo~JdPh0V3y?jk2t%?2t=i-8 zXv6YV7Fg(ZxhoTHe3&AZmB@50MezsdwFbODpe-l`Yg)XZ?{8NXo{KR!!Rvr*yBnuq z1VgOPhafcz-a^3Z3wom9-BoA>wB*B)v$%_$CAI`b7h{P^N<(ZsK_(aG+*o|wi$hrI zNq`;2QhdyR`h~>^D-eYKDbxU9z$R$LqCt-rGb1<}K{mC4MFAO%U=J}gmz3My~{ z%EPz|i!Z?aP^ZQ=D{wGGRYA34kIS#aN*oU9@?wt?G;1u5xJU?&&De~+%IS2_{Kl;LfZ_;);D=WoA)!ehG78_>D!kQCp_ z@_)i@l?CPt%8tX(*#}6t+p!w3g0TF63cGPE!#+0V$z(uevo~fZb@qze%tR0`y?Vvt z=p=9~gJK2QFAKBrS63_+lT8<_<1oiCyOXsc;uaim;y*f@!neIb%7S0)NnO8PoTDxi z8NPVogHX&{28@hgT(Z$ublCU?s|YH;uoMZs;7B}Rv2}l!!(CJrsaW;VH-exfy%7|y z66T#NBgurvN?5)`1QcK(5`~hw7ZQ$@c-OcawxT%oE0DC}Sf(IG!V0Ib3*zznflV-M zQIf(_7_W+H4&fnI9ODDp$imq3$AijI_)_=TYbT0U9r7*c@)TVr%%4j^2ja6C!cf?m2vHTHV0^FS( z7Cx4*cQQ(533ENw90`iUosS$jN!JQD7<%qR(VB7Q5(NwMB=Q zRdhWas2E~XF$@9y#j(aIxZns5x=uPTb2 z9|-1Q2FBD4vKdSl$ShWr1fA(1)W1!Te{6S&rNb%PX1FYBukgVU04}RAECX25o6_r2 zsrqCpl}uJvxc#A2D6N^kL^hQ5`=g;ci0*dLAgmWKqJtqBhC^8UT25!20i(|TtE|pG z5M%&b!i(Jj&EBxYG4~Gs$XZiM(($Ug0LGgklVkaziH5P$0M1S%#$%tQPxb zLm)>QGHBuwKMBFAmdutPQ0(e*D#U8QZv+oHmWGj4S7oiy3*=-aXs3+zx4{G^DaIQ^ z{b+M1oIOx9IWKOxIu%Gkibl`*>w+RfCPepCV#9d;I9b;D*eG|z)GY*NQe9( z?7sM+LIC@#UPd~F&|uLhHk@;Zhlv2*X26$9VvT?WjiK#9$!Zz~MtL>lu`N%96?Ne3 ziYiROao|oXl!YBvEIcEo!-M6o*U8Sv@#txkB7hx1e?=5*0j$P=5rdeS?PKS_Vr656 zVR07CrVPLZ0IJ1;%BZSJl$cgJ4mPTV-QHjv3NrCjpuD66w2=idv=}7UvRMzT@#uOa zP~l@5nXnrS#nc97^N{JGJJ3}z&Txnl7S1IqjB!HB610R4?j!`Ku%+X2Wi!Kh z50-(3L{=;V(2rf;H(Yy&eH9Zx#Y zexOic+|*H110psW#-5zzNrU+mh*U+90a)LVs18@xScyQe7W6Vi2)r?@!B`F8z>T)B z-=9ncqMq_3vnX5c))OFsD*_cpt`F7-cnf%L95gbFFx&f@n9Eu7!G}KlKYt2s)Z?=j zDu}QCyU&^@itGy?CSnJK0i)}&05e`A8OS)A-5n9~aT-ASPIg8nBY*g;i0aAY4=Fv-6^vG9zZr~G?rJB2-e*$?bW zkbqH37!~evHi^#)VKWS1OM=;Nx3fy6D$%R|$7R?*k`n(h5Y`@%KWvs*%#t)#LRKhU zQWEg!o+=F58Zh=S3cODC8rU$wDk2D>bDY5D(~a_y#y+)`QBSX$WZ1*{U2zavesmHx z2wC?Cc-RXLx^+ah0y#W~-D4f5*jfE}=`1OXR{LXE-IRyzBrKV)0*gYwz5HYh4KKE+ zJiZcKz%)DF1Pu8?Q`Y7_W4|T}nR32#HH9dxD;-bPz}U0GU;U!Oy~mx{j$N9SH|A(TFE)Mg7^B z5By0sR-=KY-l=e(s&s^%7Y$LXnrf67*@8>zi3Tbowb(jfqO0kM1)Y*q$dQh*8yH@8 z3wiAA*EI6;x?_PDs*JYk61N7biuwbU=_EEEGRa(J)EhyC{GI@|1@~}RJ;H7tNKObR z>dcrwv*gP<7!1YZXh7^s*b^v>=#}7{D5j^$OgKS!O$Vy$a)n9iKlv=uf4J8(yZwg< zdvJ38YYe+WVJFNU7C6l!J*9 z@_h#5virg7gw42uJ|*TY+rU~0HbtQF!z6pbMp2wF=F86Qg`@}0jl}T*CZzqDv2k1k zlrmo$B2(#bWeljXyia+cDx1X;0((>t>9Iv~*j76Z>2e#t`G)F97H)ztcXWEr72I!fw;hIEVd)y@L(g=Dp|pkIo82IL0hQjFP^ zL+0Jzc)UKB@t~IYu%Z<{k<#uDyYTg7naZ%j$5ZhXYfI9n-u@vDpa({$vd6Gz6itwH zmkO=L7(5Lr@38vP9z@TYFAh84NXo`T{}wyDqC{lIEY^|zvbU4ajbhFI}*j%^{rv4vwS&?|)p zU~57H37qOqV5c(}gA?bjgrG(hag;?O4y^pGh{K40#|VNHD3ejdu!oPK5DY<(9tKyU zY#S_rg(genEQ{b!IbQ@RLUw%Q5DM=_ur(V-2m0^MaF94k?2E+W6;KKZ$CHVO&mYI^ z1&d7imAN6G7!C)4l{Yn1fimfEEv-WC2hcP^AXZ4FSz6 zf0f5y74cWa*pj2Fsz4o7;o4t?rGdXH!4|wxFodlz7$#W$gTV?Rv1lY=MWc}rt`gyR zR1{%T%2AevkSFwu{NbSAnL-wf2jhTng_%ZHffUS8rZ8hhw30q>gTV%2cpA;ZSRy^{ zAHoVah56_%0a#xOI$&ZZ4r47)Cv*qEs)ZCx0&0egQDi$ti7|W97*q+wU%>bXLl-Fs z#j%hBR>mNU0X&*aAtxw|VcLfgDM)ocakV1r}%!zJmd}s8z;RXiR;_fhAFe#iZsnSYgILNace$i&dB_0+uEtc_5#MT{fJ^ zYIxB{Bbj)nAb;rqVt|G4!iYtcJf3c>WAjk3&;}A<$g8xp2tb(VO+YcwBf{|Cqk}p! zr3ga{6j0*d@qnE_y9u`kdILJQ9g^ak@%$5R%RqVqu9S&g+E@-qxZANBu!1l=22|LM zV;T0bF;6ZBI-9*QJ85aZ6i^aFOM!mIN-#8bOjQh`Ng#Cm-VDQoLxI8SQUN)slo^UFmIVy;bX(3XB1#mz%B(QdQgL4 zF2zH!R0u=9+u<(mVZ8*oLr*+nMObZ_NJ1uKWiqjJr9WO74^+l1=v2m%78nWGLd&Ew znMfuRjVB-z7p{t@unB`0mGNkm4?@Gi5U>eD3yi;x3$R?6WGJZKKrmhjIj=Z)pg2zj zvN_mH2toYbm++?$H|7L72&0cD3WNfqPr4eSu(iO*o`S;x71%{)9)LAiMGV9;GkF2A zC3mg@3yvg40Ndd$Z1A#GV8x(R3fAO6#XtiYYm`F2*Uhws3>d9Ybp858@ZF=g{^KQ- zA3;mOaHB8k?gKoRNmRyalaQRKhz7E;crX@BN79krXuo)%p(;UYYHG0A7Vuz+;jYhQ z)4+hR)foe%B4K|GS|Aonma7nH&E<3!yXXvt=xoObvo6=ufr=q)EmU+24;371oPsMZ z>h|Pk7TKs(RXulmuDZG!e!2$`mNZ4zQ-YrU#+IyIuIF~4^)P=$*?H(#D1o<&)e-36 zKB>M{HI-Fi_Q9IPCYXHA3e4f@$bg(5)_0TXc%UW$d#w=6%fjXrTW#AiMA+GJMoO#0 zWmt2>*@;ger}cQyRThF$0Xh&?_yt_%b;sSnlKv`3->Ry9RhYZ0GG4IztE{YE9!S?( zwZUN0>XY%>V;I@6UciVBhGZBHVeK1-XbA&Go&8spiG5*Q25bqGKNe4=KyxPR!1cx{ z?P195L%uf&RIa(aK6Y9tCZh78hnJZWgg9Yvt!obhKXzvw;EQLfprRLzRX7=67}7+@ z*Bc9_%Do{cOycNi9CG0ez=nM;=kt`nGH!W9_hU&38;=!N}Fb&OX(AQy+cbdW?K6d|+ahiY%_ zu{l)(%gOJnP9_tnY{&{4**@;R9$<=$8PCQ4Hkf>bwKGHgz`&(=5;1`s(dcONNOx%p z7cDK&B}%9Fz<~B;1niQka41<54)qF!vY|*K6tB#L;$bUfh2SNEkp##p$d!gIhy*4Q z*m$pRw}=R3@o=CjjWq%mG&na0)%TdT1I|0 zXRI7Mfsp%!Q8=b1kj3;Gg5F)wiw#&0jyMJ$gaTwLRu~fYXki$OMPrs=VWS)mgk9r+ zyQT(`53y_tL=%XwKqM7#SEMo_rl`r#DcCfYm8#A8>X{)iNQVbiymO?7KJozeDr^xx zbX6pGz<_wE273o87Ko72#59jxlOU)(bf(&xI&Umg5-4Y?m?5w~kv0y2MIdOe14ogT zC9x9&GY&BQ0s&1ZI74$I$oSdbR4M|dl{b#{eFNCsK$K-TpDT?0ewG!>04OWOJ_(>~ z92ReX3`pbqypBSyEMJx@%aeU-!KiaszHBBH(rXj!6ZB#fhB2$x*oM)pP^FoUR+U(w z&J!h}NKMiQAuR0Cg)37fP~{JmFvbXsyn^y&ztBiZrAweukjCzJBv8_;7l>Gx=|-`A zSumeMu^PxFLe(Ic2q&Ypz2cRjNN?<~!#avTiS(d=*_#13I_3#8InTJyQ|0rAu=D0% zBMG`q?)nDX45TAaj=m7bnX3hR+L+7PNv=$JhqdWHeF|;VdFX~EHEvI@Cf$qqCw1>Oi&j*BgP3V@Jf7s$m`iI;wk0@ zc|H4GG2dHOcw6j^72X*W=EKgWqwuN8vJZQC#TUrR$_^qbSUF>_v-m-0u|LI^3l%_! zy0Mqa7(_ud9s2}v5UtNqoJxSvZD*r6w13y?#x8MXWr4aYA^>KPg-tev`lQo!a0SW$ z`eK;53hS{$3}ve*OyA13UL!Zas>9hge8F)LJ)i2ADIiC``n03DbL zCGZ*CP!(;c$;Kep?}lhquUeEC*+Nv_mk4E|y|Hx=fv{6`EEWREYn5b^>;^<`SPNx* z{sca-=?SwB$q<^HwH3NH`$U74@n9&MO#_G3qSDJPrmBDUS+su-wL=QQ z|0Tj6oSgrVMInaWX{}PrHb;iyfkTaRm4vpRst-|&b1Oai-qZ{uG8~2eMGj4?) zzW`7UCQ7Dl2*eN$LY4=V4^-Hp*Nzi%p_YP1z=0q*XwAhewBh8eQc&saIhv~s=SJE_ zUKDnU9kcclQe1&*kY_lFCJD|&MS~|)Q(KEgj0enqkKaDx7GnqIfnl#7Gc|gii=m_% z3;GxV3>_G?WivQrBba1}ZImJj=3lUa376uGbi6mn-NJ@4M8nyUA2_8KM4PQr5AMDF za#7Y2MtcVAzc>@XMk4Tv2&0Iw*nf6CxZ4E^1Ru2e3m08}!SYCV5EL=2I4mL5V!s<( z3{^Jkk!6NPVZA66%4F&pQG(q*4CeYm7+6Q3KwKe6|NC4SU#0|cf!SE>k`TmKvFTot zD#`hBIRr8Jmj3;R49P$URH;v8q9F*GqzVi`R5Daz5v0Z5Y|fQ)K~Ak4>3pdS+pJ|` zQEd1_%OVHEdw3Wg%c7Np%z6~Us%P?!c6y7kXIa77sU^ri!=e>Gg;MwU(EROk;F>TQ zrT!WA8B#x_KEtq0Ju>h9rc(Xtb3W7(A6B%&2ev1RA9fMw$ug5;g->A_%U&UA=x6_s z5}*ghMPrX)&w!PZzdE!QdQx~mCNQd>s|V4u=ED-0Rg{f~K_l(#LS2HMx$Hlc(M_o5a#=4v7MKC4 zY&~!|b8LSy8R}bw2ViSL2ML_9>}M7|H)C)@p3A~%)3Fj9)C_Vh7>|{>W8g6cfmSOM zn9z0G9#|l3VWkvg%Y7!-#kwaFl^Rg|f~2K825l%7A4AoOHWBb1qEP7i@6KI9QdTq` zj3!fFsQgA#Rh7^!Pl4?L$qSSmY{yFM?}JYf3gK{$%9==^5AI_v5=>Q92P&~A2I0>@ z7+fE0Y=-OX?M2vZLV>D-)jk+F3}S&(9SSnzwaiuHI#?YBr=q$NEftGLVqk*=An6f` zg25V!M-$P?IAr}H@RCSJQwfN1!XAl{g_0jcJR#T_EX^PbY^vdKD(tpp8LuW247oGR za*yt8Y-niQ7h9|h3u8mGAS=P}4Rikx){Qp|bQh+M7Ab-8sgwoE4B9+le;UG$@k(?W zFp3I}^#L|0!TW(@OoM_X6*{5aJINb@uo+VxDT#P2wpxWO1~xjYst^~7tUf4SC831q3#O1c&VIo} zZw1mB@SFWvXk~>W)i9KXK^Y9j!7745RO~N%u|V@;a*0F|F@vqpkRFH)r+&x5;(;Nj zh`S^eXJ@9cMU-yFyrodI1r?1WIj}VVeJsBV-71&L*_KC02@nJ9r4>dj8=t;ztYh;~ zu+Rn)V93kmDgqEDdJ|9##N;si_voM{ITym1GQ5ov|BeUj{0r~EeoPm713I@IlH!~5 z{S$7>`D`W&%FfIZ;{znz?QDy0Ce+DRtp`}p&{!Bie z-C>BVSV8v7!fgE26^q4W(*^4|%rVUFVr_`H1qYn?kFG%CGry3s;Ip2zhwEY?0jn|> z$`n4h#Jp9G^?d;QAA30LD?_dlGMEr+il(e&l?6le-41M}a2T5pFjMIFr($vJeS|_u z(1*EPJeNyWXM>!r5dTyaTYCz$C>MTCOUWiy;E|h>3(%ovOkn3}R$ci5kcwL3#)T zIYSFfUl|t=Qx9Y8fa(o}F@Z)SDF_QddK|JjuoDsSU`w?!ScSOBvdUN@ighFyq0FIB z;jV^&vO9(kwvM|TBOw?Ogbm%262=SkCKC{7fV@toDqB(S#S2Jd5`efVw&mTuA$Y~y zP`pCeUuN8AD6hgY2F)XcE6h1EHEH650a4Uu8Ky3y{ZDC zWHMc$d14jy^$r%h=-drOw+9!qrvuq-WqZIr|K?cZ6r8;hv%MZJW(XgpKRve#t%vz5;RGWF3nkbh4S2&qp$%32t9xZ?qU-|(j7>1X zCu%G$a9F;5b%R7j8GCnJUnn={{Ir;dC7frj$b7WE!X( zd^HGNKe(x*V{|Z!tbdk7LF!VehGATzz#PW{JFT zG#-NBNY3TT0VxluuOCt%x7b;RP`FQo2K8aQ`XTkHkXaTXF<8}7fYNaYPjOb&A>b1V z)TPsvRke{=*qv*r=5jQ-2#w0m9mup?+Xs7oJ4QfgI83X!E~orH>q0O-Ob1 z9vINRjDmSlZCUAFQLC?I)mpK%1+p20G>}vz8jDnhqm|HBVWd+Wir|%%g^hO(uZ#z{ z;Zyrp2yP~X4#ppu3??OHK7TTQCf~s?TeCS zhFV8i$6L#-Yph4DPpt2wVif0sL}SrZG#Bk19UVO?dR+9p=!)p&(JNzIOoH_%BL=&4 zu}G{cmW}m^^@|OUO^i*6?MQScuTQQ{u1!9Wd?>jo`9kvL7jl&Vf7k**SFQV>>%{P2Tm> zpM(C~@#jx}{<%B8yLI>6-Me;ocK+Gfi8d`E7Fo%k#xF!0F6VC)dx_)4iQ;+U`Qk<5 zX7M`+5rpM2@bjdL+m!(f;OzbY4a`CEzPUQs{E>7@2J~JcA7gwI~&l3%{zze9JcedT}STP z@n@6WhJWm~(1x>jpM*Bt)!EtkbLS^$N4VYgN=eShX}MCiSDoS&g*(g^9F`N;5hBeN z|Ij9g3q_}Tq;Q20Qx4@<^ZmGuf9y}U&>1vAoI3~a-o5*GLUx_>+u6Sz{>v@D*(;fC zCvQ7(+njC3Z=1dCxNXO7J7(L=Z8Nq_-*)u2soUDOO(tZ^V)mphivXt-pGnB~w|`l` zrEv?!Ifg@4ou(%MUOABKzSoLOxu@(tM$Pc>EXS+f5&~ zA*9##A)lPXLO)&n>6xF-|MX-+-kbaBl=qG#WZMVZ-v7$Rs~`2KdF0n$ftWx z+c9Gzi(hoEYq8-nt88Z3jI!y4u!`TXgM57XPAJIv-K)xxyKNDPjch^(N?%LAuwh+j zIToh%)B3}|NxMt?%yBEassJb~b=mFz!IiZ3L?~HZ+T8Q+pRQbEu;{(mbp!mH0Jpeq zb=~gz(1j8eoPjnhIs@lk7|q3h?AI8}z!=vPW{fIa8^ete#ZY5dSJ=?5-)5HXug+Lt z4s>7TzSX_HJciRCx}REpNX4iMl&oSki(he9Ar<@etjG0@cOkN-_l9$MKGL^haHj`J#-Q;NU9l4miL0%)TlWF8j@-;b+%plXr zOmYmFMUEva$#LX(GMk)0=8zM~TyhdQnS4P`A*Yd3$?4<_GLNh$*ON2Je6oO?MZO~6 zkOycB9Y%R7P?1Vx7x|O!ONZ0_=m@f#bW)irRHcNDq@(EmbTmDHj-eXWse_i#1L;`u zEBTEcM90yC=^^w`+DgaM!{`KhI6Z6vr^J&T@A&mj-e zG_9f;nkAo-&*(xSFRT&P3hRV>gnNbig!_f{!Uo|1;X∾bGws?nU8IVIx^3JSIFY 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 z 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%0DFN@c%JWvSX^{fQiwL!i%LnY@oc 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 Xj?H%Mi`MMaKE7z(SNaY3JNy1W)~&gk literal 0 HcmV?d00001 diff --git a/samples/calc-zig/icon.png b/samples/calc-zig/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f921edb86b059fd3f29c7d23abe851385e46d76c GIT binary patch literal 2717 zcmeAS@N?(olHy`uVBq!ia0y~yU|ayg9LzwG+b^86ffQqLkh>GZx^prwfgF}}M_)$< zhK>E)e-c@Ne9-`(5LY10%gd{+t=-Vjz~EKy;NSohd77%$2Bg?ag8YL2g8_q-H?td1 zh_k>WvY3H^TNs2H8D`Cq0E+$dba4!+hJW z67h7iva09X<%@5zS>-XyZg1?n?QlGI!DF)vh0-r}@Rr;mTiBHOui1aT_o6o)gd z8}%NE&f_f+T>l|wL3c%KI&b5WzdhOQqb1L1sf(+|DJorX5JxSyuyNnM) vA0xiS18EVLkUijA+_1()mo{NQfi$?U51V)7|q^N_*Q)z4*}Q$iB}!5z!Q literal 0 HcmV?d00001 diff --git a/samples/calc-zig/src/main.c b/samples/calc-zig/src/main.c new file mode 100644 index 0000000..fefd5ee --- /dev/null +++ b/samples/calc-zig/src/main.c @@ -0,0 +1,190 @@ +#include + +#include + +#define ARRAYSIZE(array) (sizeof(array) / sizeof(array[0])) + +oc_vec2 frameSize = { 100, 100 }; + +oc_surface surface; +oc_canvas canvas; +oc_font font; + +f64 lastSeconds = 0; + +oc_mat2x3 mat_rotation(f32 radians); +oc_mat2x3 mat_translation(f32 x, f32 y); +oc_mat2x3 mat_transform(f32 x, f32 y, f32 radians); +f32 minf(f32 a, f32 b); + +ORCA_EXPORT void oc_on_init(void) +{ + oc_window_set_title(OC_STR8("clock")); + oc_runtime_window_set_size((oc_vec2){ .x = 400, .y = 400 }); + + surface = oc_surface_canvas(); + canvas = oc_canvas_create(); + + { + oc_str8 filename = OC_STR8("/segoeui.ttf"); + oc_file file = oc_file_open(filename, OC_FILE_ACCESS_READ, 0); + if(oc_file_last_error(file) != OC_IO_OK) + { + oc_log_error("Couldn't open file %s\n", oc_str8_to_cstring(oc_scratch(), filename)); + } + u64 size = oc_file_size(file); + char* buffer = oc_arena_push(oc_scratch(), size); + oc_file_read(file, size, buffer); + oc_file_close(file); + + oc_unicode_range ranges[5] = { OC_UNICODE_BASIC_LATIN, + OC_UNICODE_C1_CONTROLS_AND_LATIN_1_SUPPLEMENT, + OC_UNICODE_LATIN_EXTENDED_A, + OC_UNICODE_LATIN_EXTENDED_B, + OC_UNICODE_SPECIALS }; + font = oc_font_create_from_memory(oc_str8_from_buffer(size, buffer), 5, ranges); + } + + oc_arena_clear(oc_scratch()); +} + +ORCA_EXPORT void oc_on_resize(u32 width, u32 height) +{ + frameSize.x = width; + frameSize.y = height; +} + +ORCA_EXPORT void oc_on_frame_refresh(void) +{ + const oc_str8 clock_number_strings[] = { + OC_STR8("12"), + OC_STR8("1"), + OC_STR8("2"), + OC_STR8("3"), + OC_STR8("4"), + OC_STR8("5"), + OC_STR8("6"), + OC_STR8("7"), + OC_STR8("8"), + OC_STR8("9"), + OC_STR8("10"), + OC_STR8("11"), + }; + + oc_canvas_set_current(canvas); + oc_surface_select(surface); + oc_set_color_rgba(.05, .05, .05, 1); + oc_clear(); + + const f64 timestampSecs = oc_clock_time(OC_CLOCK_DATE); + const f64 secs = fmod(timestampSecs, 60); + const f64 minutes = fmod(timestampSecs, 60 * 60) / 60; + const f64 hours = fmod(timestampSecs, 60 * 60 * 24) / (60 * 60); + const f64 hoursAs12Format = fmod(hours, 12.0); + + if(lastSeconds != floor(secs)) + { + lastSeconds = floor(secs); + oc_log_info("current time: %.0f:%.0f:%.0f", floor(hours), floor(minutes), floor(secs)); + } + + const f32 secondsRotation = (M_PI * 2) * (secs / 60.0) - (M_PI / 2); + const f32 minutesRotation = (M_PI * 2) * (minutes / 60.0) - (M_PI / 2); + const f32 hoursRotation = (M_PI * 2) * (hoursAs12Format / 12.0) - (M_PI / 2); + + const f32 centerX = frameSize.x / 2; + const f32 centerY = frameSize.y / 2; + const f32 clockRadius = minf(frameSize.x, frameSize.y) * 0.5f * 0.85f; + + const f32 DEFAULT_CLOCK_RADIUS = 260; + const f32 uiScale = clockRadius / DEFAULT_CLOCK_RADIUS; + + const f32 fontSize = 26 * uiScale; + oc_set_font(font); + oc_set_font_size(fontSize); + + // clock backing + oc_set_color_rgba(1, 1, 1, 1); + oc_circle_fill(centerX, centerY, clockRadius); + + // clock face + for(int i = 0; i < ARRAYSIZE(clock_number_strings); ++i) + { + const f32 rot = -i * ((M_PI * 2) / 12.0f) + (M_PI / 2); + const f32 sinRot = sinf(rot); + const f32 cosRot = cosf(rot); + + oc_rect textRect = oc_text_bounding_box(font, fontSize, clock_number_strings[i]); + textRect.h -= 10 * uiScale; // oc_text_bounding_box height doesn't seem to be a tight fit around the glyph + + const f32 x = cosRot * clockRadius * 0.8f - (textRect.w / 2) + centerX; + const f32 y = -sinRot * clockRadius * 0.8f + (textRect.h / 2) + centerY; + + oc_set_color_rgba(0.2, 0.2, 0.2, 1); + oc_move_to(x, y); + oc_text_outlines(clock_number_strings[i]); + oc_fill(); + } + + oc_matrix_push(mat_transform(centerX, centerY, hoursRotation)); + { + oc_set_color_rgba(.2, 0.2, 0.2, 1); + oc_rounded_rectangle_fill(0, -7.5 * uiScale, clockRadius * 0.5f, 15 * uiScale, 5 * uiScale); + + oc_matrix_pop(); + } + + oc_matrix_push(mat_transform(centerX, centerY, minutesRotation)); + { + oc_set_color_rgba(.2, 0.2, 0.2, 1); + oc_rounded_rectangle_fill(0, -5 * uiScale, clockRadius * 0.7f, 10 * uiScale, 5 * uiScale); + + oc_matrix_pop(); + } + + oc_matrix_push(mat_transform(centerX, centerY, secondsRotation)); + { + oc_set_color_rgba(1, 0.2, 0.2, 1); + oc_rounded_rectangle_fill(0, -2.5 * uiScale, clockRadius * 0.8f, 5 * uiScale, 5 * uiScale); + + oc_matrix_pop(); + } + + oc_set_color_rgba(.2, 0.2, 0.2, 1); + oc_circle_fill(centerX, centerY, 10 * uiScale); + + oc_render(surface, canvas); + oc_surface_present(surface); +} + +oc_mat2x3 mat_rotation(f32 radians) +{ + const f32 sinRot = sinf(radians); + const f32 cosRot = cosf(radians); + oc_mat2x3 rot = { + cosRot, -sinRot, 0, + sinRot, cosRot, 0 + }; + return rot; +} + +oc_mat2x3 mat_translation(f32 x, f32 y) +{ + oc_mat2x3 translation = { + 1, 0, x, + 0, 1, y + }; + return translation; +} + +oc_mat2x3 mat_transform(f32 x, f32 y, f32 radians) +{ + oc_mat2x3 rotation = mat_rotation(radians); + oc_mat2x3 translation = mat_translation(x, y); + return oc_mat2x3_mul_m(translation, rotation); +} + +f32 minf(f32 a, f32 b) +{ + return (a < b) ? a : b; +} diff --git a/samples/calc-zig/src/main.zig b/samples/calc-zig/src/main.zig new file mode 100644 index 0000000..8920804 --- /dev/null +++ b/samples/calc-zig/src/main.zig @@ -0,0 +1,10 @@ +const std = @import("std"); +const oc = @import("orca"); + +export fn oc_on_init() void { + oc.log_info("oc_on_init!!!!\n"); +} + +export fn oc_on_frame_refresh() void { + oc.log_info("oc_on_frame_refresh!!!!\n"); +} diff --git a/src/orca.zig b/src/orca.zig new file mode 100644 index 0000000..322478b --- /dev/null +++ b/src/orca.zig @@ -0,0 +1,17 @@ +const c = @cImport({ + @cDefine("__ORCA__", ""); + @cInclude("orca.h"); +}); + +// export var oc_rawEvent: c.oc_event = c.oc_rawEvent; + +pub fn log_info(fmt: []const u8) void { + c.oc_log_ext(c.OC_LOG_LEVEL_INFO, "UnknownFunc", "UnknownFile", 0, fmt.ptr); +} + +// ORCA_API void oc_log_ext(oc_log_level level, +// const char* function, +// const char* file, +// int line, +// const char* fmt, +// ...); -- 2.25.1 From 02c1938a43a295ce3099e5adc3338fecdf6158b9 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Sun, 10 Sep 2023 23:21:20 -0700 Subject: [PATCH 02/24] wip trying to get orca wasm binary to build --- samples/calc-zig/build.bat | 19 ++++++ samples/calc-zig/build.zig | 116 ++++++++++++++++++++++++++----------- 2 files changed, 101 insertions(+), 34 deletions(-) create mode 100644 samples/calc-zig/build.bat diff --git a/samples/calc-zig/build.bat b/samples/calc-zig/build.bat new file mode 100644 index 0000000..3c1c2ff --- /dev/null +++ b/samples/calc-zig/build.bat @@ -0,0 +1,19 @@ +@echo off + +:: compile wasm module +set wasmFlags=--target=wasm32^ + --no-standard-libraries ^ + -fno-builtin ^ + -Wl,--no-entry ^ + -Wl,--export-dynamic ^ + -g ^ + -O2 ^ + -mbulk-memory ^ + -D__ORCA__ ^ + -isystem ..\..\src\libc-shim\include ^ + -I..\..\ext -I ..\..\src + +clang %wasmFlags% -o .\liborca.a ..\..\src\orca.c ..\..\src\libc-shim\src\*.c +IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL% + +zig build bundle diff --git a/samples/calc-zig/build.zig b/samples/calc-zig/build.zig index 044f6f6..7cd4236 100644 --- a/samples/calc-zig/build.zig +++ b/samples/calc-zig/build.zig @@ -1,48 +1,96 @@ const std = @import("std"); -pub fn build(b: *std.Build) void { +fn addSourceString(str: []const u8, strings: *std.ArrayList(u8), sources: *std.ArrayList([]const u8)) !void { + var begin = strings.items.len; + try strings.appendSlice(str); + var realstring = strings.items[begin..]; + try sources.append(realstring); +} + +pub fn build(b: *std.Build) !void { const optimize = b.standardOptimizeOption(.{}); - - // builds the wasm module out of the orca C sources and main.zig - const lib = b.addSharedLibrary(.{ - .name = "module", - .root_source_file = .{ .path = "src/main.zig" }, - .target = std.zig.CrossTarget{ - .cpu_arch = .wasm32, - .os_tag = .freestanding, - }, - .optimize = optimize, - }); - lib.rdynamic = true; - - // const orca_sources = [_][]const u8{"../../src/orca.c"}; //, "../../src/libc-shim/src/*.c" - const orca_sources = [_][]const u8{ "../../src/orca.c", "../../src/libc-shim/src/string.c" }; - const orca_compile_opts = [_][]const u8{ - "-D__ORCA__", - "--no-standard-libraries", - "-fno-builtin", - "-I../../src", - "-I../../src/libc-shim/include", - "-I../../ext", - "-Wl,--export-all", - "-g", + const wasm_target = std.zig.CrossTarget{ + .cpu_arch = .wasm32, + .os_tag = .freestanding, }; - // -isystem ..\..\src\libc-shim\include ^ - // -I..\..\ext -I ..\..\src + //NOTE(reuben) - Ideally we would build the orca wasm lib and link it all within build.zig, but there + // seems to be a bug where the -mbulk-memory flag is ignored and memory.copy and + // memory.fill instructions aren't generated, leading the memcpy and memset instructions + // to become infinitely recursive, crashing the program. So for now we build the orca + // wasm lib with clang and link it in here. - lib.addIncludePath(.{ .path = "../../src" }); - lib.addIncludePath(.{ .path = "../../src/libc-shim/include" }); - lib.addIncludePath(.{ .path = "../../ext" }); - lib.addCSourceFiles(&orca_sources, &orca_compile_opts); + // var orca_source_strings = try std.ArrayList(u8).initCapacity(b.allocator, 1024 * 4); + // var orca_sources = try std.ArrayList([]const u8).initCapacity(b.allocator, 128); + // defer orca_source_strings.deinit(); + // defer orca_sources.deinit(); + + // { + // try addSourceString("../../src/orca.c", &orca_source_strings, &orca_sources); + + // var libc_shim_dir = try std.fs.cwd().openIterableDir("../../src/libc-shim/src", .{}); + // var walker = try libc_shim_dir.walk(b.allocator); + // defer walker.deinit(); + + // while (try walker.next()) |entry| { + // const extension = std.fs.path.extension(entry.path); + // if (std.mem.eql(u8, extension, ".c")) { + // var path_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; + // var abs_path = try libc_shim_dir.dir.realpath(entry.path, &path_buffer); + // try addSourceString(abs_path, &orca_source_strings, &orca_sources); + // // std.debug.print("adding libc shim source: {s}\n", .{abs_path}); + // } + // } + // } + + // const orca_compile_opts = [_][]const u8{ + // "-D__ORCA__", + // "--no-standard-libraries", + // "-fno-builtin", + // "-isystem ../../src/libc-shim/include", + // "-I../../src", + // "-I../../ext", + // "-O2", + // "-mbulk-memory", + // "-Wl,--no-entry", + // "-Wl,--export-all", + // "-g", + // }; + + // var orca_lib = b.addStaticLibrary(.{ + // .name = "orca", + // .target = wasm_target, + // .optimize = optimize, + // }); + // orca_lib.rdynamic = true; + // orca_lib.addIncludePath(.{ .path = "../../src" }); + // orca_lib.addIncludePath(.{ .path = "../../src/libc-shim/include" }); + // orca_lib.addIncludePath(.{ .path = "../../ext" }); + // orca_lib.addCSourceFiles(orca_sources.items, &orca_compile_opts); + // b.installArtifact(orca_lib); + + // builds the wasm module out of the orca C sources and main.zig + const wasm_lib = b.addSharedLibrary(.{ + .name = "module", + .root_source_file = .{ .path = "src/main.zig" }, + .target = wasm_target, + .optimize = optimize, + }); + wasm_lib.rdynamic = true; const orca_module: *std.Build.Module = b.createModule(.{ .source_file = .{ .path = "../../src/orca.zig" }, }); - lib.addModule("orca", orca_module); + wasm_lib.addIncludePath(.{ .path = "../../src" }); + wasm_lib.addIncludePath(.{ .path = "../../src/libc-shim/include" }); + wasm_lib.addIncludePath(.{ .path = "../../ext" }); + wasm_lib.addModule("orca", orca_module); + // wasm_lib.linkLibrary(orca_lib); + wasm_lib.addLibraryPath(.{ .path = "." }); + wasm_lib.linkSystemLibrary("orca"); - // copies the wasm module into zig-out/lib - b.installArtifact(lib); + // copies the wasm module into zig-out/wasm_lib + b.installArtifact(wasm_lib); // Runs the orca build command const bundle_cmd_str = [_][]const u8{ "orca", "bundle", "--orca-dir", "../..", "--name", "Calc", "--icon", "icon.png", "--resource-dir", "data", "zig-out/lib/module.wasm" }; -- 2.25.1 From bded79d363b7d0e755f2a90d629b9dd0c85baf69 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Mon, 11 Sep 2023 20:50:05 -0700 Subject: [PATCH 03/24] zig proof of concept is working --- samples/calc-zig/.gitignore | 1 + samples/calc-zig/build.bat | 1 + samples/calc-zig/src/main.zig | 15 +++++++++++++-- src/orca.zig | 16 +++++++--------- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/samples/calc-zig/.gitignore b/samples/calc-zig/.gitignore index 53d00b4..8de307e 100644 --- a/samples/calc-zig/.gitignore +++ b/samples/calc-zig/.gitignore @@ -1,5 +1,6 @@ Calc zig-out zig-cache +liborca.a profile.dtrace profile.spall diff --git a/samples/calc-zig/build.bat b/samples/calc-zig/build.bat index 3c1c2ff..b70641c 100644 --- a/samples/calc-zig/build.bat +++ b/samples/calc-zig/build.bat @@ -6,6 +6,7 @@ set wasmFlags=--target=wasm32^ -fno-builtin ^ -Wl,--no-entry ^ -Wl,--export-dynamic ^ + -Wl,--relocatable ^ -g ^ -O2 ^ -mbulk-memory ^ diff --git a/samples/calc-zig/src/main.zig b/samples/calc-zig/src/main.zig index 8920804..a1e852c 100644 --- a/samples/calc-zig/src/main.zig +++ b/samples/calc-zig/src/main.zig @@ -1,10 +1,21 @@ const std = @import("std"); const oc = @import("orca"); +var counter: u32 = 0; + export fn oc_on_init() void { - oc.log_info("oc_on_init!!!!\n"); + oc.log_info("counter: {}", .{counter}, @src()); } export fn oc_on_frame_refresh() void { - oc.log_info("oc_on_frame_refresh!!!!\n"); + counter += 1; + oc.log_info("counter: {}", .{counter}, @src()); + + if (counter == 10) { + oc.oc_request_quit(); + } +} + +export fn oc_on_terminate() void { + oc.log_info("byebye", .{}, @src()); } diff --git a/src/orca.zig b/src/orca.zig index 322478b..1e71133 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -1,17 +1,15 @@ +const std = @import("std"); const c = @cImport({ @cDefine("__ORCA__", ""); @cInclude("orca.h"); }); -// export var oc_rawEvent: c.oc_event = c.oc_rawEvent; +pub fn log_info(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + var format_buf: [512:0]u8 = undefined; + _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; // just discard NoSpaceLeft error for now -pub fn log_info(fmt: []const u8) void { - c.oc_log_ext(c.OC_LOG_LEVEL_INFO, "UnknownFunc", "UnknownFile", 0, fmt.ptr); + var line: c_int = @intCast(source.line); + c.oc_log_ext(c.OC_LOG_LEVEL_INFO, source.fn_name.ptr, source.file.ptr, line, format_buf[0..].ptr); } -// ORCA_API void oc_log_ext(oc_log_level level, -// const char* function, -// const char* file, -// int line, -// const char* fmt, -// ...); +pub const oc_request_quit = c.oc_request_quit; -- 2.25.1 From b85efa4bc75764f111ee01d44048165ff26535d6 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Mon, 11 Sep 2023 23:10:28 -0700 Subject: [PATCH 04/24] fix oc_get_host_platform declaration --- src/platform/osx_platform.c | 11 +++++------ src/platform/platform.h | 2 +- src/platform/win32_platform.c | 11 +++++------ 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/platform/osx_platform.c b/src/platform/osx_platform.c index c9ab756..56ee617 100644 --- a/src/platform/osx_platform.c +++ b/src/platform/osx_platform.c @@ -8,14 +8,13 @@ #include "platform.h" #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif - oc_host_platform oc_get_host_platform() - { - return OC_HOST_PLATFORM_MACOS; - } +oc_host_platform oc_get_host_platform(void) +{ + return OC_HOST_PLATFORM_MACOS; +} #ifdef __cplusplus } // extern "C" diff --git a/src/platform/platform.h b/src/platform/platform.h index 3ec268c..b4e70e7 100644 --- a/src/platform/platform.h +++ b/src/platform/platform.h @@ -121,7 +121,7 @@ typedef enum OC_HOST_PLATFORM_WINDOWS, } oc_host_platform; -ORCA_API oc_host_platform oc_get_host_platform(); +ORCA_API oc_host_platform oc_get_host_platform(void); #ifdef __cplusplus } // extern "C" diff --git a/src/platform/win32_platform.c b/src/platform/win32_platform.c index 1d82f90..78c976a 100644 --- a/src/platform/win32_platform.c +++ b/src/platform/win32_platform.c @@ -8,14 +8,13 @@ #include "platform.h" #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif - oc_host_platform oc_get_host_platform() - { - return OC_HOST_PLATFORM_WINDOWS; - } +oc_host_platform oc_get_host_platform(void) +{ + return OC_HOST_PLATFORM_WINDOWS; +} #ifdef __cplusplus } // extern "C" -- 2.25.1 From ee2d14e0e7e9542d7a814ad627f398942e670390 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Mon, 11 Sep 2023 23:10:52 -0700 Subject: [PATCH 05/24] wip orca zig bindings --- samples/calc-zig/src/main.zig | 43 +++++- src/orca.zig | 239 +++++++++++++++++++++++++++++++++- 2 files changed, 270 insertions(+), 12 deletions(-) diff --git a/samples/calc-zig/src/main.zig b/samples/calc-zig/src/main.zig index a1e852c..e41a126 100644 --- a/samples/calc-zig/src/main.zig +++ b/samples/calc-zig/src/main.zig @@ -2,20 +2,53 @@ const std = @import("std"); const oc = @import("orca"); var counter: u32 = 0; +var lastSeconds: f64 = 0; export fn oc_on_init() void { - oc.log_info("counter: {}", .{counter}, @src()); + oc.logInfo("platform: {}", .{oc.getHostPlatform()}, @src()); + + oc.windowSetTitle("zig calc"); + oc.windowSetSize(oc.vec2{ .x = 480, .y = 640 }); +} + +export fn oc_on_resize(width: u32, height: u32) void { + oc.logInfo("frame resize: {}, {}", .{ width, height }, @src()); +} + +export fn oc_on_mouse_down(button: c_int) void { + oc.logInfo("mouse down! {}", .{button}, @src()); +} + +export fn oc_on_mouse_up(button: c_int) void { + oc.logInfo("mouse up! {}", .{button}, @src()); +} + +export fn oc_on_key_down(key: c_int) void { + oc.logInfo("key down: {}", .{key}, @src()); +} + +export fn oc_on_key_up(key: c_int) void { + oc.logInfo("key up: {}", .{key}, @src()); + + switch (key) { + oc.KeyCodes.escape => oc.requestQuit(), + oc.KeyCodes.b => oc.abort("aborting", .{}, @src()), + oc.KeyCodes.a => oc.assert(false, "test assert failed", .{}, @src()), + else => {}, + } } export fn oc_on_frame_refresh() void { counter += 1; - oc.log_info("counter: {}", .{counter}, @src()); - if (counter == 10) { - oc.oc_request_quit(); + const secs: f64 = oc.clockTime(oc.Clock.Date); + + if (lastSeconds != @floor(secs)) { + lastSeconds = @floor(secs); + oc.logInfo("seconds since Jan 1, 1970: {d:.0}", .{secs}, @src()); } } export fn oc_on_terminate() void { - oc.log_info("byebye", .{}, @src()); + oc.logInfo("byebye {}", .{counter}, @src()); } diff --git a/src/orca.zig b/src/orca.zig index 1e71133..108add0 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -1,15 +1,240 @@ const std = @import("std"); -const c = @cImport({ +const orca_c = @cImport({ @cDefine("__ORCA__", ""); @cInclude("orca.h"); }); -pub fn log_info(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { - var format_buf: [512:0]u8 = undefined; - _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; // just discard NoSpaceLeft error for now +pub const str8 = orca_c.oc_str8; +pub const vec2 = struct { + x: f32, + y: f32, +}; - var line: c_int = @intCast(source.line); - c.oc_log_ext(c.OC_LOG_LEVEL_INFO, source.fn_name.ptr, source.file.ptr, line, format_buf[0..].ptr); +/////////////////////////////////////////////////////////////////////////////////////////////////// +// platform + +pub const Platform = enum(c_uint) { + MacOS, + Windows, +}; + +pub fn getHostPlatform() Platform { + return @enumFromInt(orca_c.oc_get_host_platform()); } -pub const oc_request_quit = c.oc_request_quit; +/////////////////////////////////////////////////////////////////////////////////////////////////// +// platform debug + +pub fn logInfo(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + logExt(orca_c.OC_LOG_LEVEL_INFO, fmt, args, source); +} + +pub fn logWarning(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + logExt(orca_c.OC_LOG_LEVEL_WARNING, fmt, args, source); +} + +pub fn logError(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + logExt(orca_c.OC_LOG_LEVEL_ERROR, fmt, args, source); +} + +pub fn logExt(comptime level: orca_c.oc_log_level, comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + var format_buf: [512:0]u8 = undefined; + _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; // just discard NoSpaceLeft error for now + var line: c_int = @intCast(source.line); + + orca_c.oc_log_ext(level, source.fn_name.ptr, source.file.ptr, line, format_buf[0..].ptr); +} + +pub fn assert(condition: bool, comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + if (condition == false) { + var format_buf: [512:0]u8 = undefined; + _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; + var line: c_int = @intCast(source.line); + + orca_c.oc_assert_fail(source.file.ptr, source.fn_name.ptr, line, "", format_buf[0..].ptr); + } +} + +pub fn abort(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + var format_buf: [512:0]u8 = undefined; + _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; + var line: c_int = @intCast(source.line); + + orca_c.oc_abort_ext(source.file.ptr, source.fn_name.ptr, line, format_buf[0..].ptr); +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// +// app + +pub const requestQuit = orca_c.oc_request_quit; + +const MouseCursor = enum(c_uint) { + Arrow, + Resize0, + Resize90, + Resize45, + Resize135, + Text, +}; +pub fn setCursor(cursor: MouseCursor) void { + orca_c.oc_set_cursor(@intFromEnum(cursor)); +} + +pub const KeyCodes = struct { + pub const unknown: c_int = orca_c.OC_KEY_UNKNOWN; + pub const space: c_int = orca_c.OC_KEY_SPACE; + pub const apostrophe: c_int = orca_c.OC_KEY_APOSTROPHE; + pub const comma: c_int = orca_c.OC_KEY_COMMA; + pub const minus: c_int = orca_c.OC_KEY_MINUS; + pub const period: c_int = orca_c.OC_KEY_PERIOD; + pub const slash: c_int = orca_c.OC_KEY_SLASH; + pub const num_0: c_int = orca_c.OC_KEY_0; + pub const num_1: c_int = orca_c.OC_KEY_1; + pub const num_2: c_int = orca_c.OC_KEY_2; + pub const num_3: c_int = orca_c.OC_KEY_3; + pub const num_4: c_int = orca_c.OC_KEY_4; + pub const num_5: c_int = orca_c.OC_KEY_5; + pub const num_6: c_int = orca_c.OC_KEY_6; + pub const num_7: c_int = orca_c.OC_KEY_7; + pub const num_8: c_int = orca_c.OC_KEY_8; + pub const num_9: c_int = orca_c.OC_KEY_9; + pub const semicolon: c_int = orca_c.OC_KEY_SEMICOLON; + pub const equal: c_int = orca_c.OC_KEY_EQUAL; + pub const a: c_int = orca_c.OC_KEY_A; + pub const b: c_int = orca_c.OC_KEY_B; + pub const c: c_int = orca_c.OC_KEY_C; + pub const d: c_int = orca_c.OC_KEY_D; + pub const e: c_int = orca_c.OC_KEY_E; + pub const f: c_int = orca_c.OC_KEY_F; + pub const g: c_int = orca_c.OC_KEY_G; + pub const h: c_int = orca_c.OC_KEY_H; + pub const i: c_int = orca_c.OC_KEY_I; + pub const j: c_int = orca_c.OC_KEY_J; + pub const k: c_int = orca_c.OC_KEY_K; + pub const l: c_int = orca_c.OC_KEY_L; + pub const m: c_int = orca_c.OC_KEY_M; + pub const n: c_int = orca_c.OC_KEY_N; + pub const o: c_int = orca_c.OC_KEY_O; + pub const p: c_int = orca_c.OC_KEY_P; + pub const q: c_int = orca_c.OC_KEY_Q; + pub const r: c_int = orca_c.OC_KEY_R; + pub const s: c_int = orca_c.OC_KEY_S; + pub const t: c_int = orca_c.OC_KEY_T; + pub const u: c_int = orca_c.OC_KEY_U; + pub const v: c_int = orca_c.OC_KEY_V; + pub const w: c_int = orca_c.OC_KEY_W; + pub const x: c_int = orca_c.OC_KEY_X; + pub const y: c_int = orca_c.OC_KEY_Y; + pub const z: c_int = orca_c.OC_KEY_Z; + pub const left_bracket: c_int = orca_c.OC_KEY_LEFT_BRACKET; + pub const backslash: c_int = orca_c.OC_KEY_BACKSLASH; + pub const right_bracket: c_int = orca_c.OC_KEY_RIGHT_BRACKET; + pub const grave_accent: c_int = orca_c.OC_KEY_GRAVE_ACCENT; + pub const world_1: c_int = orca_c.OC_KEY_WORLD_1; + pub const world_2: c_int = orca_c.OC_KEY_WORLD_2; + pub const escape: c_int = orca_c.OC_KEY_ESCAPE; + pub const enter: c_int = orca_c.OC_KEY_ENTER; + pub const tab: c_int = orca_c.OC_KEY_TAB; + pub const backspace: c_int = orca_c.OC_KEY_BACKSPACE; + pub const insert: c_int = orca_c.OC_KEY_INSERT; + pub const delete: c_int = orca_c.OC_KEY_DELETE; + pub const right: c_int = orca_c.OC_KEY_RIGHT; + pub const left: c_int = orca_c.OC_KEY_LEFT; + pub const down: c_int = orca_c.OC_KEY_DOWN; + pub const up: c_int = orca_c.OC_KEY_UP; + pub const page_up: c_int = orca_c.OC_KEY_PAGE_UP; + pub const page_down: c_int = orca_c.OC_KEY_PAGE_DOWN; + pub const home: c_int = orca_c.OC_KEY_HOME; + pub const end: c_int = orca_c.OC_KEY_END; + pub const caps_lock: c_int = orca_c.OC_KEY_CAPS_LOCK; + pub const scroll_lock: c_int = orca_c.OC_KEY_SCROLL_LOCK; + pub const num_lock: c_int = orca_c.OC_KEY_NUM_LOCK; + pub const print_screen: c_int = orca_c.OC_KEY_PRINT_SCREEN; + pub const pause: c_int = orca_c.OC_KEY_PAUSE; + pub const function_1: c_int = orca_c.OC_KEY_F1; + pub const function_2: c_int = orca_c.OC_KEY_F2; + pub const function_3: c_int = orca_c.OC_KEY_F3; + pub const function_4: c_int = orca_c.OC_KEY_F4; + pub const function_5: c_int = orca_c.OC_KEY_F5; + pub const function_6: c_int = orca_c.OC_KEY_F6; + pub const function_7: c_int = orca_c.OC_KEY_F7; + pub const function_8: c_int = orca_c.OC_KEY_F8; + pub const function_9: c_int = orca_c.OC_KEY_F9; + pub const function_10: c_int = orca_c.OC_KEY_F10; + pub const function_11: c_int = orca_c.OC_KEY_F11; + pub const function_12: c_int = orca_c.OC_KEY_F12; + pub const function_13: c_int = orca_c.OC_KEY_F13; + pub const function_14: c_int = orca_c.OC_KEY_F14; + pub const function_15: c_int = orca_c.OC_KEY_F15; + pub const function_16: c_int = orca_c.OC_KEY_F16; + pub const function_17: c_int = orca_c.OC_KEY_F17; + pub const function_18: c_int = orca_c.OC_KEY_F18; + pub const function_19: c_int = orca_c.OC_KEY_F19; + pub const function_20: c_int = orca_c.OC_KEY_F20; + pub const function_21: c_int = orca_c.OC_KEY_F21; + pub const function_22: c_int = orca_c.OC_KEY_F22; + pub const function_23: c_int = orca_c.OC_KEY_F23; + pub const function_24: c_int = orca_c.OC_KEY_F24; + pub const function_25: c_int = orca_c.OC_KEY_F25; + pub const kp_0: c_int = orca_c.OC_KEY_KP_0; + pub const kp_1: c_int = orca_c.OC_KEY_KP_1; + pub const kp_2: c_int = orca_c.OC_KEY_KP_2; + pub const kp_3: c_int = orca_c.OC_KEY_KP_3; + pub const kp_4: c_int = orca_c.OC_KEY_KP_4; + pub const kp_5: c_int = orca_c.OC_KEY_KP_5; + pub const kp_6: c_int = orca_c.OC_KEY_KP_6; + pub const kp_7: c_int = orca_c.OC_KEY_KP_7; + pub const kp_8: c_int = orca_c.OC_KEY_KP_8; + pub const kp_9: c_int = orca_c.OC_KEY_KP_9; + pub const kp_decimal: c_int = orca_c.OC_KEY_KP_DECIMAL; + pub const kp_divide: c_int = orca_c.OC_KEY_KP_DIVIDE; + pub const kp_multiply: c_int = orca_c.OC_KEY_KP_MULTIPLY; + pub const kp_subtract: c_int = orca_c.OC_KEY_KP_SUBTRACT; + pub const kp_add: c_int = orca_c.OC_KEY_KP_ADD; + pub const kp_enter: c_int = orca_c.OC_KEY_KP_ENTER; + pub const kp_equal: c_int = orca_c.OC_KEY_KP_EQUAL; + pub const left_shift: c_int = orca_c.OC_KEY_LEFT_SHIFT; + pub const left_control: c_int = orca_c.OC_KEY_LEFT_CONTROL; + pub const left_alt: c_int = orca_c.OC_KEY_LEFT_ALT; + pub const left_super: c_int = orca_c.OC_KEY_LEFT_SUPER; + pub const right_shift: c_int = orca_c.OC_KEY_RIGHT_SHIFT; + pub const right_control: c_int = orca_c.OC_KEY_RIGHT_CONTROL; + pub const right_alt: c_int = orca_c.OC_KEY_RIGHT_ALT; + pub const right_super: c_int = orca_c.OC_KEY_RIGHT_SUPER; + pub const menu: c_int = orca_c.OC_KEY_MENU; + pub const count: c_int = orca_c.OC_KEY_COUNT; +}; + +pub const MouseButtons = struct { + pub const left: c_int = orca_c.OC_MOUSE_LEFT; + pub const right: c_int = orca_c.OC_MOUSE_RIGHT; + pub const middle: c_int = orca_c.OC_MOUSE_MIDDLE; + pub const ext1: c_int = orca_c.OC_MOUSE_EXT1; + pub const ext2: c_int = orca_c.OC_MOUSE_EXT2; +}; + +pub fn windowSetTitle(title: [:0]const u8) void { + var title_str8: str8 = .{ + .ptr = @constCast(title.ptr), + .len = title.len, + }; + orca_c.oc_window_set_title(title_str8); +} + +pub fn windowSetSize(size: vec2) void { + const c_size: *const orca_c.oc_vec2 = @ptrCast(&size); + orca_c.oc_window_set_size(c_size.*); +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// +// clock + +pub const Clock = enum(c_uint) { + Monotonic, + Uptime, + Date, +}; + +pub fn clockTime(clock: Clock) f64 { + return orca_c.oc_clock_time(@intFromEnum(clock)); +} -- 2.25.1 From 5999429838a43750e70e3bf201229bf11f01e932 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Mon, 11 Sep 2023 23:12:25 -0700 Subject: [PATCH 06/24] rename calc-zig to zig-sample --- samples/{calc-zig => zig-sample}/.gitignore | 2 +- samples/{calc-zig => zig-sample}/build.bat | 0 samples/{calc-zig => zig-sample}/build.zig | 2 +- samples/{calc-zig => zig-sample}/data/segoeui.ttf | Bin samples/{calc-zig => zig-sample}/icon.png | Bin samples/{calc-zig => zig-sample}/src/main.c | 0 samples/{calc-zig => zig-sample}/src/main.zig | 0 7 files changed, 2 insertions(+), 2 deletions(-) rename samples/{calc-zig => zig-sample}/.gitignore (89%) rename samples/{calc-zig => zig-sample}/build.bat (100%) rename samples/{calc-zig => zig-sample}/build.zig (97%) rename samples/{calc-zig => zig-sample}/data/segoeui.ttf (100%) rename samples/{calc-zig => zig-sample}/icon.png (100%) rename samples/{calc-zig => zig-sample}/src/main.c (100%) rename samples/{calc-zig => zig-sample}/src/main.zig (100%) diff --git a/samples/calc-zig/.gitignore b/samples/zig-sample/.gitignore similarity index 89% rename from samples/calc-zig/.gitignore rename to samples/zig-sample/.gitignore index 8de307e..592c104 100644 --- a/samples/calc-zig/.gitignore +++ b/samples/zig-sample/.gitignore @@ -1,4 +1,4 @@ -Calc +Sample zig-out zig-cache liborca.a diff --git a/samples/calc-zig/build.bat b/samples/zig-sample/build.bat similarity index 100% rename from samples/calc-zig/build.bat rename to samples/zig-sample/build.bat diff --git a/samples/calc-zig/build.zig b/samples/zig-sample/build.zig similarity index 97% rename from samples/calc-zig/build.zig rename to samples/zig-sample/build.zig index 7cd4236..1ee8cd3 100644 --- a/samples/calc-zig/build.zig +++ b/samples/zig-sample/build.zig @@ -93,7 +93,7 @@ pub fn build(b: *std.Build) !void { b.installArtifact(wasm_lib); // Runs the orca build command - const bundle_cmd_str = [_][]const u8{ "orca", "bundle", "--orca-dir", "../..", "--name", "Calc", "--icon", "icon.png", "--resource-dir", "data", "zig-out/lib/module.wasm" }; + const bundle_cmd_str = [_][]const u8{ "orca", "bundle", "--orca-dir", "../..", "--name", "Sample", "--icon", "icon.png", "--resource-dir", "data", "zig-out/lib/module.wasm" }; var bundle_cmd = b.addSystemCommand(&bundle_cmd_str); bundle_cmd.step.dependOn(b.getInstallStep()); diff --git a/samples/calc-zig/data/segoeui.ttf b/samples/zig-sample/data/segoeui.ttf similarity index 100% rename from samples/calc-zig/data/segoeui.ttf rename to samples/zig-sample/data/segoeui.ttf diff --git a/samples/calc-zig/icon.png b/samples/zig-sample/icon.png similarity index 100% rename from samples/calc-zig/icon.png rename to samples/zig-sample/icon.png diff --git a/samples/calc-zig/src/main.c b/samples/zig-sample/src/main.c similarity index 100% rename from samples/calc-zig/src/main.c rename to samples/zig-sample/src/main.c diff --git a/samples/calc-zig/src/main.zig b/samples/zig-sample/src/main.zig similarity index 100% rename from samples/calc-zig/src/main.zig rename to samples/zig-sample/src/main.zig -- 2.25.1 From e06e73590215fdfc9d19673e0451bc711d6430e6 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Fri, 15 Sep 2023 23:16:52 -0700 Subject: [PATCH 07/24] wip zig orca bindings --- samples/zig-sample/data/ZigFontReadMe.txt | 29 + samples/zig-sample/data/segoeui.ttf | Bin 955804 -> 0 bytes samples/zig-sample/data/zig.ttf | Bin 0 -> 51916 bytes samples/zig-sample/src/main.zig | 69 +- src/orca.zig | 1046 ++++++++++++++++++--- 5 files changed, 977 insertions(+), 167 deletions(-) create mode 100644 samples/zig-sample/data/ZigFontReadMe.txt delete mode 100644 samples/zig-sample/data/segoeui.ttf create mode 100644 samples/zig-sample/data/zig.ttf diff --git a/samples/zig-sample/data/ZigFontReadMe.txt b/samples/zig-sample/data/ZigFontReadMe.txt new file mode 100644 index 0000000..20a5f5b --- /dev/null +++ b/samples/zig-sample/data/ZigFontReadMe.txt @@ -0,0 +1,29 @@ +T E P I D M O N K E Y F O N T S +freeware fonts for a freeware world + +Site: http://www.tepidmonkey.com/ +E-mail: brandon@tepidmonkey.com + +Thanks for your interest in my fonts! + +For help on how to unzip, unstuff or install one of my +fonts, please visit my site at +www.tepidmonkey.com and go to the Help section. +If you have any comments or questions, you can e-mail +me at brandon@tepidmonkey.com and I'll try to reply as +soon as possible. + +Every week, I present a brand new original font for +your downloading pleasure, so be sure to visit my web +site every Sunday. + +You may use this font(s) for non-commercial and +commercial purposes. You are not allowed to sell this +font for any fee at all. You are allowed to +redistribute it as long as you don't charge ANYTHING +for it (at all) and if you include this unaltered +Read Me file. You may not change any aspect of the font +file or this file. +For the full set of terms of use (which override what +is listed here), go to www.tepidmonkey.com +and visit the Terms section. \ No newline at end of file diff --git a/samples/zig-sample/data/segoeui.ttf b/samples/zig-sample/data/segoeui.ttf deleted file mode 100644 index 0f52cbd9c914110a410def0773988650986c428d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955804 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∾bGws?nU8IVIx^3JSIFY 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 z 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%0DFN@c%JWvSX^{fQiwL!i%LnY@oc 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 Xj?H%Mi`MMaKE7z(SNaY3JNy1W)~&gk diff --git a/samples/zig-sample/data/zig.ttf b/samples/zig-sample/data/zig.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3d338877afd7e98128256be5eb187e1aa1b10edd GIT binary patch literal 51916 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 oc.requestQuit(), - oc.KeyCodes.b => oc.abort("aborting", .{}, @src()), - oc.KeyCodes.a => oc.assert(false, "test assert failed", .{}, @src()), + oc.KeyCode.Escape => oc.requestQuit(), + oc.KeyCode.B => oc.abort("aborting", .{}, @src()), + oc.KeyCode.A => oc.assert(false, "test assert failed", .{}, @src()), else => {}, } } @@ -41,12 +52,48 @@ export fn oc_on_key_up(key: c_int) void { export fn oc_on_frame_refresh() void { counter += 1; - const secs: f64 = oc.clockTime(oc.Clock.Date); + const secs: f64 = oc.clockTime(oc.ClockKind.Date); if (lastSeconds != @floor(secs)) { lastSeconds = @floor(secs); oc.logInfo("seconds since Jan 1, 1970: {d:.0}", .{secs}, @src()); } + + _ = canvas.setCurrent(); + surface.select(); + oc.setColorRgba(0.05, 0.05, 0.05, 1.0); + oc.clear(); + + oc.setColorRgba(1.0, 0.05, 0.05, 1.0); + + { + const translation: oc.Mat2x3 = .{ .m = [_]f32{ 1, 0, 50, 0, 1, 50 } }; + oc.matrixPush(translation); + defer oc.matrixPop(); + + oc.assert(std.meta.eql(oc.matrixTop(), translation), "top of matrix stack should be what we pushed", .{}, @src()); + oc.setWidth(1); + oc.rectangleFill(50, 50, 10, 10); + oc.rectangleStroke(70, 50, 10, 10); + oc.roundedRectangleFill(90, 50, 10, 10, 3); + oc.roundedRectangleStroke(110, 50, 10, 10, 3); + + const green = oc.Color{ .Flat = .{ .r = 0.05, .g = 1, .b = 0.05, .a = 1 } }; + oc.setColor(green); + oc.assert(std.meta.eql(oc.getColor().Flat, green.Flat), "color should be green", .{}, @src()); + + oc.setTolerance(1); + oc.setJoint(.Bevel); + oc.ellipseFill(140, 55, 10, 5); + oc.ellipseStroke(170, 55, 10, 5); + oc.circleFill(195, 55, 5); + oc.circleStroke(215, 55, 5); + + oc.arc(230, 55, 5, 0, std.math.pi); + } + + surface.render(canvas); + surface.present(); } export fn oc_on_terminate() void { diff --git a/src/orca.zig b/src/orca.zig index 108add0..a7f1042 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -4,26 +4,29 @@ const orca_c = @cImport({ @cInclude("orca.h"); }); -pub const str8 = orca_c.oc_str8; -pub const vec2 = struct { +pub const Str8 = orca_c.oc_str8; +pub const Str32 = orca_c.oc_str32; +pub const Utf32 = orca_c.oc_utf32; +pub const Vec2 = extern struct { x: f32, y: f32, }; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// platform +//------------------------------------------------------------------------------------------ +// [PLATFORM] +//------------------------------------------------------------------------------------------ pub const Platform = enum(c_uint) { MacOS, Windows, }; -pub fn getHostPlatform() Platform { - return @enumFromInt(orca_c.oc_get_host_platform()); -} +extern fn oc_get_host_platform() Platform; +pub const getHostPlatform = oc_get_host_platform; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// platform debug +//------------------------------------------------------------------------------------------ +// [DEBUG] +//------------------------------------------------------------------------------------------ pub fn logInfo(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { logExt(orca_c.OC_LOG_LEVEL_INFO, fmt, args, source); @@ -51,7 +54,7 @@ pub fn assert(condition: bool, comptime fmt: []const u8, args: anytype, source: _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; var line: c_int = @intCast(source.line); - orca_c.oc_assert_fail(source.file.ptr, source.fn_name.ptr, line, "", format_buf[0..].ptr); + orca_c.oc_assert_fail(source.file.ptr, source.fn_name.ptr, line, "", format_buf[0..].ptr); } } @@ -63,10 +66,185 @@ pub fn abort(comptime fmt: []const u8, args: anytype, source: std.builtin.Source orca_c.oc_abort_ext(source.file.ptr, source.fn_name.ptr, line, format_buf[0..].ptr); } -/////////////////////////////////////////////////////////////////////////////////////////////////// -// app +//------------------------------------------------------------------------------------------ +// [INTRUSIVE LIST] +//------------------------------------------------------------------------------------------ -pub const requestQuit = orca_c.oc_request_quit; +pub const ListElt = extern struct { + prev: ?*ListElt, + next: ?*ListElt, +}; + +pub const EltList = extern struct { + first: ?*ListElt, + last: ?*ListElt, +}; + +//------------------------------------------------------------------------------------------ +// [MEMORY] +//------------------------------------------------------------------------------------------ + +pub const BaseAllocator = extern struct { + const MemReserveFunction = *const fn (context: *BaseAllocator, size: u64) ?[*]u8; + const MemModifyFunction = *const fn (context: *BaseAllocator, ptr: ?[*]u8, size: u64) ?[*]u8; + + func_reserve: MemReserveFunction, + func_commit: MemModifyFunction, + func_decommit: MemModifyFunction, + func_release: MemModifyFunction, + + extern fn oc_base_allocator_default() *BaseAllocator; + pub const default = oc_base_allocator_default; +}; + +pub const ArenaChunk = extern struct { + list_elt: ListElt, + ptr: ?[*]u8, + offset: u64, + committed: u64, + cap: u64, +}; + +pub const Arena = extern struct { + base: ?*BaseAllocator, + chunks: EltList, + current_chunk: ?*ArenaChunk, + + extern fn oc_arena_init(arena: *Arena) void; + extern fn oc_arena_init_with_options(arena: *Arena, options: *ArenaOptions) void; + extern fn oc_arena_cleanup(arena: *Arena) void; + extern fn oc_arena_push(arena: *Arena, size: u64) ?[*]u8; + extern fn oc_arena_clear(arena: *Arena) void; + extern fn oc_arena_scope_begin(arena: *Arena) ArenaScope; + extern fn oc_arena_scope_end(scope: ArenaScope) void; + + extern fn oc_scratch() *Arena; + extern fn oc_scratch_next(used: *Arena) *Arena; + extern fn oc_scratch_begin() ArenaScope; + extern fn oc_scratch_begin_next(used: *Arena) ArenaScope; + + pub fn init() Arena { + var arena: Arena = undefined; + oc_arena_init(&arena); + return arena; + } + pub fn initWithOptions(opts: ArenaOptions) Arena { + var arena: Arena = undefined; + oc_arena_init(&arena, &opts); + return arena; + } + pub const deinit = oc_arena_cleanup; + pub fn push(arena: *Arena, size: u64) ?[]u8 { + if (oc_arena_push(arena, size)) |mem| { + return mem[0..size]; + } + return null; + } + pub const clear = oc_arena_clear; + pub const scopeBegin = oc_arena_scope_begin; + pub const scopeEnd = oc_arena_scope_end; + + pub fn pushType(arena: *Arena, comptime T: type) ?*T { + if (arena.push(@sizeOf(T))) |mem| { + std.debug.assert(mem.len >= @sizeOf(T)); + return @alignCast(@ptrCast(mem.ptr)); + } + + return null; + } + + pub fn pushArray(arena: *Arena, comptime T: type, count: u64) ?[]T { + if (arena.push(@sizeOf(T) * count)) |mem| { + std.debug.assert(mem.len >= @sizeOf(T) * count); + var items: [*]T = @alignCast(@ptrCast(mem.ptr)); + return items[0..count]; + } + return null; + } + + pub const scratch = oc_scratch; + pub const scratchNext = oc_scratch_next; + pub const scratchBegin = oc_scratch_begin; + pub const scratchBeginNext = oc_scratch_begin_next; + pub const scratchEnd = scopeEnd; +}; + +pub const ArenaScope = extern struct { + arena: ?*Arena, + chunk: ?*ArenaChunk, + offset: u64, +}; + +pub const ArenaOptions = extern struct { + base: ?*BaseAllocator, + reserve: u64, +}; + +//------------------------------------------------------------------------------------------ +// [STRINGS] +//------------------------------------------------------------------------------------------ + + + +//------------------------------------------------------------------------------------------ +// [UTF8] +//------------------------------------------------------------------------------------------ + +const UnicodeRange = extern struct { + first_code_point: Utf32, + count: u32, +}; + +const Utf8Dec = extern struct { + codepoint: Utf32, // decoded codepoint + size: u32, // size of corresponding oc_utf8 sequence +}; + +const Utf8 = struct { + + // getting sizes / offsets / indices + extern fn oc_utf8_size_from_leading_char(leadingChar: c_char) u32; + extern fn oc_utf8_codepoint_size(codePoint: Utf32) u32; + extern fn oc_utf8_codepoint_count_for_string(string: Str8) u64; + extern fn oc_utf8_byte_count_for_codepoints(codePoints: Str32) u64; + extern fn oc_utf8_next_offset(string: Str8, byteOffset: u64) u64; + extern fn oc_utf8_prev_offset(string: Str8, byteOffset: u64) u64; + + pub const sizeFromLeadingChar = oc_utf8_size_from_leading_char; + pub const codepointSize = oc_utf8_codepoint_size; + pub const codepointCountForString = oc_utf8_codepoint_count_for_string; + pub const byteCountForCodepoints = oc_utf8_byte_count_for_codepoints; + pub const nextOffset = oc_utf8_next_offset; + pub const prevOffset = oc_utf8_prev_offset; + + // encoding / decoding + extern fn oc_utf8_decode(string: Str8) Utf8Dec; //NOTE: decode a single oc_utf8 sequence at start of string + extern fn oc_utf8_decode_at(string: Str8, offset: u64) Utf8Dec; //NOTE: decode a single oc_utf8 sequence starting at byte offset + extern fn oc_utf8_encode(dst: [*]u8, codePoint: Utf32) Str8; //NOTE: encode codepoint into backing buffer dst + extern fn oc_utf8_to_codepoints(maxCount: u64, backing: [*]Utf32, string: Str8) Str32; + extern fn oc_utf8_from_codepoints(maxBytes: u64, backing: [*]c_char, codePoints: Str32) Str8; + extern fn oc_utf8_push_to_codepoints(arena: *Arena, string: Str8) Str32; + extern fn oc_utf8_push_from_codepoints(arena: *Arena, codePoints: Str32) Str8; + + pub const decode = oc_utf8_decode; + pub const decodeAt = oc_utf8_decode_at; + pub const encode = oc_utf8_encode; + pub const toCodepoints = oc_utf8_to_codepoints; + pub const fromCodepoints = oc_utf8_from_codepoints; + pub const pushToCodepoints = oc_utf8_push_to_codepoints; + pub const pushFromCodepoints = oc_utf8_push_from_codepoints; +}; + +//------------------------------------------------------------------------------------------ +// [APP] +//------------------------------------------------------------------------------------------ + +extern fn oc_request_quit() void; +pub const requestQuit = oc_request_quit; + +//------------------------------------------------------------------------------------------ +// [APP] input +//------------------------------------------------------------------------------------------ const MouseCursor = enum(c_uint) { Arrow, @@ -76,165 +254,721 @@ const MouseCursor = enum(c_uint) { Resize135, Text, }; -pub fn setCursor(cursor: MouseCursor) void { - orca_c.oc_set_cursor(@intFromEnum(cursor)); -} +extern fn oc_set_cursor(cursor: MouseCursor) void; +pub const setCursor = oc_set_cursor; -pub const KeyCodes = struct { - pub const unknown: c_int = orca_c.OC_KEY_UNKNOWN; - pub const space: c_int = orca_c.OC_KEY_SPACE; - pub const apostrophe: c_int = orca_c.OC_KEY_APOSTROPHE; - pub const comma: c_int = orca_c.OC_KEY_COMMA; - pub const minus: c_int = orca_c.OC_KEY_MINUS; - pub const period: c_int = orca_c.OC_KEY_PERIOD; - pub const slash: c_int = orca_c.OC_KEY_SLASH; - pub const num_0: c_int = orca_c.OC_KEY_0; - pub const num_1: c_int = orca_c.OC_KEY_1; - pub const num_2: c_int = orca_c.OC_KEY_2; - pub const num_3: c_int = orca_c.OC_KEY_3; - pub const num_4: c_int = orca_c.OC_KEY_4; - pub const num_5: c_int = orca_c.OC_KEY_5; - pub const num_6: c_int = orca_c.OC_KEY_6; - pub const num_7: c_int = orca_c.OC_KEY_7; - pub const num_8: c_int = orca_c.OC_KEY_8; - pub const num_9: c_int = orca_c.OC_KEY_9; - pub const semicolon: c_int = orca_c.OC_KEY_SEMICOLON; - pub const equal: c_int = orca_c.OC_KEY_EQUAL; - pub const a: c_int = orca_c.OC_KEY_A; - pub const b: c_int = orca_c.OC_KEY_B; - pub const c: c_int = orca_c.OC_KEY_C; - pub const d: c_int = orca_c.OC_KEY_D; - pub const e: c_int = orca_c.OC_KEY_E; - pub const f: c_int = orca_c.OC_KEY_F; - pub const g: c_int = orca_c.OC_KEY_G; - pub const h: c_int = orca_c.OC_KEY_H; - pub const i: c_int = orca_c.OC_KEY_I; - pub const j: c_int = orca_c.OC_KEY_J; - pub const k: c_int = orca_c.OC_KEY_K; - pub const l: c_int = orca_c.OC_KEY_L; - pub const m: c_int = orca_c.OC_KEY_M; - pub const n: c_int = orca_c.OC_KEY_N; - pub const o: c_int = orca_c.OC_KEY_O; - pub const p: c_int = orca_c.OC_KEY_P; - pub const q: c_int = orca_c.OC_KEY_Q; - pub const r: c_int = orca_c.OC_KEY_R; - pub const s: c_int = orca_c.OC_KEY_S; - pub const t: c_int = orca_c.OC_KEY_T; - pub const u: c_int = orca_c.OC_KEY_U; - pub const v: c_int = orca_c.OC_KEY_V; - pub const w: c_int = orca_c.OC_KEY_W; - pub const x: c_int = orca_c.OC_KEY_X; - pub const y: c_int = orca_c.OC_KEY_Y; - pub const z: c_int = orca_c.OC_KEY_Z; - pub const left_bracket: c_int = orca_c.OC_KEY_LEFT_BRACKET; - pub const backslash: c_int = orca_c.OC_KEY_BACKSLASH; - pub const right_bracket: c_int = orca_c.OC_KEY_RIGHT_BRACKET; - pub const grave_accent: c_int = orca_c.OC_KEY_GRAVE_ACCENT; - pub const world_1: c_int = orca_c.OC_KEY_WORLD_1; - pub const world_2: c_int = orca_c.OC_KEY_WORLD_2; - pub const escape: c_int = orca_c.OC_KEY_ESCAPE; - pub const enter: c_int = orca_c.OC_KEY_ENTER; - pub const tab: c_int = orca_c.OC_KEY_TAB; - pub const backspace: c_int = orca_c.OC_KEY_BACKSPACE; - pub const insert: c_int = orca_c.OC_KEY_INSERT; - pub const delete: c_int = orca_c.OC_KEY_DELETE; - pub const right: c_int = orca_c.OC_KEY_RIGHT; - pub const left: c_int = orca_c.OC_KEY_LEFT; - pub const down: c_int = orca_c.OC_KEY_DOWN; - pub const up: c_int = orca_c.OC_KEY_UP; - pub const page_up: c_int = orca_c.OC_KEY_PAGE_UP; - pub const page_down: c_int = orca_c.OC_KEY_PAGE_DOWN; - pub const home: c_int = orca_c.OC_KEY_HOME; - pub const end: c_int = orca_c.OC_KEY_END; - pub const caps_lock: c_int = orca_c.OC_KEY_CAPS_LOCK; - pub const scroll_lock: c_int = orca_c.OC_KEY_SCROLL_LOCK; - pub const num_lock: c_int = orca_c.OC_KEY_NUM_LOCK; - pub const print_screen: c_int = orca_c.OC_KEY_PRINT_SCREEN; - pub const pause: c_int = orca_c.OC_KEY_PAUSE; - pub const function_1: c_int = orca_c.OC_KEY_F1; - pub const function_2: c_int = orca_c.OC_KEY_F2; - pub const function_3: c_int = orca_c.OC_KEY_F3; - pub const function_4: c_int = orca_c.OC_KEY_F4; - pub const function_5: c_int = orca_c.OC_KEY_F5; - pub const function_6: c_int = orca_c.OC_KEY_F6; - pub const function_7: c_int = orca_c.OC_KEY_F7; - pub const function_8: c_int = orca_c.OC_KEY_F8; - pub const function_9: c_int = orca_c.OC_KEY_F9; - pub const function_10: c_int = orca_c.OC_KEY_F10; - pub const function_11: c_int = orca_c.OC_KEY_F11; - pub const function_12: c_int = orca_c.OC_KEY_F12; - pub const function_13: c_int = orca_c.OC_KEY_F13; - pub const function_14: c_int = orca_c.OC_KEY_F14; - pub const function_15: c_int = orca_c.OC_KEY_F15; - pub const function_16: c_int = orca_c.OC_KEY_F16; - pub const function_17: c_int = orca_c.OC_KEY_F17; - pub const function_18: c_int = orca_c.OC_KEY_F18; - pub const function_19: c_int = orca_c.OC_KEY_F19; - pub const function_20: c_int = orca_c.OC_KEY_F20; - pub const function_21: c_int = orca_c.OC_KEY_F21; - pub const function_22: c_int = orca_c.OC_KEY_F22; - pub const function_23: c_int = orca_c.OC_KEY_F23; - pub const function_24: c_int = orca_c.OC_KEY_F24; - pub const function_25: c_int = orca_c.OC_KEY_F25; - pub const kp_0: c_int = orca_c.OC_KEY_KP_0; - pub const kp_1: c_int = orca_c.OC_KEY_KP_1; - pub const kp_2: c_int = orca_c.OC_KEY_KP_2; - pub const kp_3: c_int = orca_c.OC_KEY_KP_3; - pub const kp_4: c_int = orca_c.OC_KEY_KP_4; - pub const kp_5: c_int = orca_c.OC_KEY_KP_5; - pub const kp_6: c_int = orca_c.OC_KEY_KP_6; - pub const kp_7: c_int = orca_c.OC_KEY_KP_7; - pub const kp_8: c_int = orca_c.OC_KEY_KP_8; - pub const kp_9: c_int = orca_c.OC_KEY_KP_9; - pub const kp_decimal: c_int = orca_c.OC_KEY_KP_DECIMAL; - pub const kp_divide: c_int = orca_c.OC_KEY_KP_DIVIDE; - pub const kp_multiply: c_int = orca_c.OC_KEY_KP_MULTIPLY; - pub const kp_subtract: c_int = orca_c.OC_KEY_KP_SUBTRACT; - pub const kp_add: c_int = orca_c.OC_KEY_KP_ADD; - pub const kp_enter: c_int = orca_c.OC_KEY_KP_ENTER; - pub const kp_equal: c_int = orca_c.OC_KEY_KP_EQUAL; - pub const left_shift: c_int = orca_c.OC_KEY_LEFT_SHIFT; - pub const left_control: c_int = orca_c.OC_KEY_LEFT_CONTROL; - pub const left_alt: c_int = orca_c.OC_KEY_LEFT_ALT; - pub const left_super: c_int = orca_c.OC_KEY_LEFT_SUPER; - pub const right_shift: c_int = orca_c.OC_KEY_RIGHT_SHIFT; - pub const right_control: c_int = orca_c.OC_KEY_RIGHT_CONTROL; - pub const right_alt: c_int = orca_c.OC_KEY_RIGHT_ALT; - pub const right_super: c_int = orca_c.OC_KEY_RIGHT_SUPER; - pub const menu: c_int = orca_c.OC_KEY_MENU; - pub const count: c_int = orca_c.OC_KEY_COUNT; +pub const KeyCode = enum(c_uint) { + Unknown = orca_c.OC_KEY_UNKNOWN, + Space = orca_c.OC_KEY_SPACE, + Apostrophe = orca_c.OC_KEY_APOSTROPHE, + Comma = orca_c.OC_KEY_COMMA, + Minus = orca_c.OC_KEY_MINUS, + Period = orca_c.OC_KEY_PERIOD, + Slash = orca_c.OC_KEY_SLASH, + Num0 = orca_c.OC_KEY_0, + Num1 = orca_c.OC_KEY_1, + Num2 = orca_c.OC_KEY_2, + Num3 = orca_c.OC_KEY_3, + Num4 = orca_c.OC_KEY_4, + Num5 = orca_c.OC_KEY_5, + Num6 = orca_c.OC_KEY_6, + Num7 = orca_c.OC_KEY_7, + Num8 = orca_c.OC_KEY_8, + Num9 = orca_c.OC_KEY_9, + Semicolon = orca_c.OC_KEY_SEMICOLON, + Equal = orca_c.OC_KEY_EQUAL, + A = orca_c.OC_KEY_A, + B = orca_c.OC_KEY_B, + C = orca_c.OC_KEY_C, + D = orca_c.OC_KEY_D, + E = orca_c.OC_KEY_E, + F = orca_c.OC_KEY_F, + G = orca_c.OC_KEY_G, + H = orca_c.OC_KEY_H, + I = orca_c.OC_KEY_I, + J = orca_c.OC_KEY_J, + K = orca_c.OC_KEY_K, + L = orca_c.OC_KEY_L, + M = orca_c.OC_KEY_M, + N = orca_c.OC_KEY_N, + O = orca_c.OC_KEY_O, + P = orca_c.OC_KEY_P, + Q = orca_c.OC_KEY_Q, + R = orca_c.OC_KEY_R, + S = orca_c.OC_KEY_S, + T = orca_c.OC_KEY_T, + U = orca_c.OC_KEY_U, + V = orca_c.OC_KEY_V, + W = orca_c.OC_KEY_W, + X = orca_c.OC_KEY_X, + Y = orca_c.OC_KEY_Y, + Z = orca_c.OC_KEY_Z, + LeftBracket = orca_c.OC_KEY_LEFT_BRACKET, + Backslash = orca_c.OC_KEY_BACKSLASH, + RightBracket = orca_c.OC_KEY_RIGHT_BRACKET, + GraveAccent = orca_c.OC_KEY_GRAVE_ACCENT, + World1 = orca_c.OC_KEY_WORLD_1, + World2 = orca_c.OC_KEY_WORLD_2, + Escape = orca_c.OC_KEY_ESCAPE, + Enter = orca_c.OC_KEY_ENTER, + Tab = orca_c.OC_KEY_TAB, + Backspace = orca_c.OC_KEY_BACKSPACE, + Insert = orca_c.OC_KEY_INSERT, + Delete = orca_c.OC_KEY_DELETE, + Right = orca_c.OC_KEY_RIGHT, + Left = orca_c.OC_KEY_LEFT, + Down = orca_c.OC_KEY_DOWN, + Up = orca_c.OC_KEY_UP, + PageUp = orca_c.OC_KEY_PAGE_UP, + PageDown = orca_c.OC_KEY_PAGE_DOWN, + Home = orca_c.OC_KEY_HOME, + End = orca_c.OC_KEY_END, + CapsLock = orca_c.OC_KEY_CAPS_LOCK, + ScrollLock = orca_c.OC_KEY_SCROLL_LOCK, + NumLock = orca_c.OC_KEY_NUM_LOCK, + PrintScreen = orca_c.OC_KEY_PRINT_SCREEN, + Pause = orca_c.OC_KEY_PAUSE, + F1 = orca_c.OC_KEY_F1, + F2 = orca_c.OC_KEY_F2, + F3 = orca_c.OC_KEY_F3, + F4 = orca_c.OC_KEY_F4, + F5 = orca_c.OC_KEY_F5, + F6 = orca_c.OC_KEY_F6, + F7 = orca_c.OC_KEY_F7, + F8 = orca_c.OC_KEY_F8, + F9 = orca_c.OC_KEY_F9, + F10 = orca_c.OC_KEY_F10, + F11 = orca_c.OC_KEY_F11, + F12 = orca_c.OC_KEY_F12, + F13 = orca_c.OC_KEY_F13, + F14 = orca_c.OC_KEY_F14, + F15 = orca_c.OC_KEY_F15, + F16 = orca_c.OC_KEY_F16, + F17 = orca_c.OC_KEY_F17, + F18 = orca_c.OC_KEY_F18, + F19 = orca_c.OC_KEY_F19, + F20 = orca_c.OC_KEY_F20, + F21 = orca_c.OC_KEY_F21, + F22 = orca_c.OC_KEY_F22, + F23 = orca_c.OC_KEY_F23, + F24 = orca_c.OC_KEY_F24, + F25 = orca_c.OC_KEY_F25, + Kp0 = orca_c.OC_KEY_KP_0, + Kp1 = orca_c.OC_KEY_KP_1, + Kp2 = orca_c.OC_KEY_KP_2, + Kp3 = orca_c.OC_KEY_KP_3, + Kp4 = orca_c.OC_KEY_KP_4, + Kp5 = orca_c.OC_KEY_KP_5, + Kp6 = orca_c.OC_KEY_KP_6, + Kp7 = orca_c.OC_KEY_KP_7, + Kp8 = orca_c.OC_KEY_KP_8, + Kp9 = orca_c.OC_KEY_KP_9, + KpDecimal = orca_c.OC_KEY_KP_DECIMAL, + KpDivide = orca_c.OC_KEY_KP_DIVIDE, + KpMultiply = orca_c.OC_KEY_KP_MULTIPLY, + KpSubtract = orca_c.OC_KEY_KP_SUBTRACT, + KpAdd = orca_c.OC_KEY_KP_ADD, + KpEnter = orca_c.OC_KEY_KP_ENTER, + KpEqual = orca_c.OC_KEY_KP_EQUAL, + LeftShift = orca_c.OC_KEY_LEFT_SHIFT, + LeftControl = orca_c.OC_KEY_LEFT_CONTROL, + LeftAlt = orca_c.OC_KEY_LEFT_ALT, + LeftSuper = orca_c.OC_KEY_LEFT_SUPER, + RightShift = orca_c.OC_KEY_RIGHT_SHIFT, + RightControl = orca_c.OC_KEY_RIGHT_CONTROL, + RightAlt = orca_c.OC_KEY_RIGHT_ALT, + RightSuper = orca_c.OC_KEY_RIGHT_SUPER, + Menu = orca_c.OC_KEY_MENU, + Count = orca_c.OC_KEY_COUNT, }; -pub const MouseButtons = struct { - pub const left: c_int = orca_c.OC_MOUSE_LEFT; - pub const right: c_int = orca_c.OC_MOUSE_RIGHT; - pub const middle: c_int = orca_c.OC_MOUSE_MIDDLE; - pub const ext1: c_int = orca_c.OC_MOUSE_EXT1; - pub const ext2: c_int = orca_c.OC_MOUSE_EXT2; +pub const MouseButton = enum(c_uint) { + Left = orca_c.OC_MOUSE_LEFT, + Right = orca_c.OC_MOUSE_RIGHT, + Middle = orca_c.OC_MOUSE_MIDDLE, + Ext1 = orca_c.OC_MOUSE_EXT1, + Ext2 = orca_c.OC_MOUSE_EXT2, }; +//------------------------------------------------------------------------------------------ +// [APP] windows +//------------------------------------------------------------------------------------------ + pub fn windowSetTitle(title: [:0]const u8) void { - var title_str8: str8 = .{ + var title_str8: Str8 = .{ .ptr = @constCast(title.ptr), .len = title.len, }; orca_c.oc_window_set_title(title_str8); } -pub fn windowSetSize(size: vec2) void { - const c_size: *const orca_c.oc_vec2 = @ptrCast(&size); - orca_c.oc_window_set_size(c_size.*); -} +extern fn oc_window_set_size(size: Vec2) void; +pub const windowSetSize = oc_window_set_size; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// clock +//------------------------------------------------------------------------------------------ +// [APP] file dialogs +//------------------------------------------------------------------------------------------ -pub const Clock = enum(c_uint) { +const FileDialogKind = enum (c_uint) { + Save, + Open, +}; + +const FileDialogFlags = packed struct(u32) { + files: bool, + directories: bool, + multiple: bool, + create_directories: bool, +}; + +const FileDialogDesc = extern struct { + kind: FileDialogKind, + flags: FileDialogFlags, + title: Str8, + ok_label: Str8, + start_at: File, + start_path: Str8, + filters: Str8List, +}; + +// typedef struct oc_file_dialog_desc +// { +// oc_file_dialog_kind kind; +// oc_file_dialog_flags flags; +// oc_str8 title; +// oc_str8 okLabel; +// oc_file startAt; +// oc_str8 startPath; +// oc_str8_list filters; + +// //... later customization options with checkboxes / radiobuttons +// } oc_file_dialog_desc; + +const FileDialogButton = enum (c_uint) { + Cancel, + Ok, +}; + +const FileDialogResult = extern struct { + button: FileDialogButton, + path: Str8, + selection: Str8List, +}; + +// typedef enum +// { +// OC_FILE_DIALOG_CANCEL = 0, +// OC_FILE_DIALOG_OK, +// } oc_file_dialog_button; + +// typedef struct oc_file_dialog_result +// { +// oc_file_dialog_button button; +// oc_str8 path; +// oc_str8_list selection; + +// } oc_file_dialog_result; + +//------------------------------------------------------------------------------------------ +// [CLOCK] +//------------------------------------------------------------------------------------------ + +pub const ClockKind = enum(c_uint) { Monotonic, Uptime, Date, }; -pub fn clockTime(clock: Clock) f64 { - return orca_c.oc_clock_time(@intFromEnum(clock)); -} +extern fn oc_clock_time(clock: ClockKind) f64; +pub const clockTime = oc_clock_time; + +//------------------------------------------------------------------------------------------ +// [GRAPHICS]: resources +//------------------------------------------------------------------------------------------ + +pub const Surface = extern struct { + h: u64, + + pub const canvas = oc_surface_canvas; + pub const gles = oc_surface_gles; + pub const select = oc_surface_select; + pub const present = oc_surface_present; + pub const getSize = oc_surface_get_size; + pub const contentsScaling = oc_surface_contents_scaling; + pub const bringToFront = oc_surface_bring_to_front; + pub const sendToBack = oc_surface_send_to_back; + // pub const renderCommands = oc_surface_render_commands; + pub const render = oc_render; + + extern fn oc_surface_canvas() Surface; + extern fn oc_surface_gles() Surface; + extern fn oc_surface_select(surface: Surface) void; + extern fn oc_surface_present(surface: Surface) void; + extern fn oc_surface_get_size(surface: Surface) Vec2; + extern fn oc_surface_contents_scaling(surface: Surface) Vec2; + extern fn oc_surface_bring_to_front(surface: Surface) void; + extern fn oc_surface_send_to_back(surface: Surface) void; + // extern fn oc_surface_render_commands( + // surface: Surface, + // color: Color, + // primitive_count: u32, + // primitives: [*]Primitive, + // elt_count: u32, + // elements: [*]PathElt, + // ) void; + extern fn oc_render(surface: Surface, canvas: Canvas) void; +}; + +pub const Canvas = extern struct { + h: u64, + + pub const nil = oc_canvas_nil; + pub const isNil = oc_canvas_is_nil; + pub const create = oc_canvas_create; + pub const destroy = oc_canvas_destroy; + pub const setCurrent = oc_canvas_set_current; + + extern fn oc_canvas_nil() Canvas; + extern fn oc_canvas_is_nil(canvas: Canvas) bool; + extern fn oc_canvas_create() Canvas; + extern fn oc_canvas_destroy(canvas: Canvas) void; + extern fn oc_canvas_set_current(canvas: Canvas) Canvas; +}; + +pub const Image = extern struct { + h: u64, + + pub const create = oc_image_create; + pub const destroy = oc_image_destroy; + pub const uploadRegionRGBA = oc_image_upload_region_rgba8; + pub const size = oc_image_size; + + extern fn oc_image_create(surface: Surface, width: u32, height: u32) Image; + extern fn oc_image_destroy(image: Image) void; + extern fn oc_image_upload_region_rgba8(image: Image, region: Rect, pixels: [*]u8) void; + extern fn oc_image_size(image: Image) Vec2; +}; + +pub const Rect = extern union { + Flat: extern struct { + x: f32, + y: f32, + w: f32, + h: f32, + }, + Pairs: extern struct { + xy: Vec2, + wh: Vec2, + }, + Array: [4]f32, +}; + +pub const Color = extern union { + Flat: extern struct { + r: f32, + g: f32, + b: f32, + a: f32, + }, + Array: [4]f32, +}; + +//------------------------------------------------------------------------------------------ +// [GRAPHICS]: fonts +//------------------------------------------------------------------------------------------ + +//NOTE(martin): the following int valued functions return -1 if font is invalid or codepoint is not present in font// +//TODO(martin): add enum error codes +//NOTE(martin): if you need to process more than one codepoint, first convert your codepoints to glyph indices, then use the +// glyph index versions of the functions, which can take an array of glyph indices. + +const Font = extern struct { + h: u64, + + extern fn oc_font_nil() Font; + extern fn oc_font_create_from_memory(mem: Str8, rangeCount: u32, ranges: [*]UnicodeRange) Font; + extern fn oc_font_destroy(font: Font) void; + extern fn oc_font_get_extents(font: Font) FontExtents; + extern fn oc_font_get_scaled_extents(font: Font, emSize: f32) FontExtents; + extern fn oc_font_get_scale_for_em_pixels(font: Font, emSize: f32) f32; + extern fn oc_font_get_glyph_indices(font: Font, codePoints: Str32, backing: Str32) Str32; + extern fn oc_font_push_glyph_indices(font: Font, arena: *Arena, codePoints: Str32) Str32; + extern fn oc_font_get_glyph_index(font: Font, codePoint: Utf32) u32; + extern fn oc_font_get_codepoint_extents(font: Font, codePoint: Utf32, outExtents: *TextExtents) c_int; + extern fn oc_font_get_glyph_extents(font: Font, glyphIndices: Str32, outExtents: *TextExtents) c_int; + extern fn oc_text_bounding_box_utf32(font: Font, fontSize: f32, text: Str32) Rect; + extern fn oc_text_bounding_box(font: Font, fontSize: f32, text: Str8) Rect; + + pub const nil = oc_font_nil; + pub fn createFromMemory(mem: Str8, ranges: []UnicodeRange) Font { + return oc_font_create_from_memory(mem, @intCast(ranges.len), ranges.ptr); + } + pub const destroy = oc_font_destroy; + pub const getExtents = oc_font_get_extents; + pub const getScaledExtents = oc_font_get_scaled_extents; + pub const getScaleForEmPixels = oc_font_get_scale_for_em_pixels; + pub const getGlyphIndices = oc_font_get_glyph_indices; + pub const pushGlyphIndices = oc_font_push_glyph_indices; + pub const getGlyphIndex = oc_font_get_glyph_index; + pub const getCodepointExtents = oc_font_get_codepoint_extents; + pub const getGlyphExtents = oc_font_get_glyph_extents; + pub const boundingBoxUtf32 = oc_text_bounding_box_utf32; + pub const boundingBox = oc_text_bounding_box; +}; + +const JointType = enum(c_uint) { + Miter, + Bevel, + None, +}; + +const CapType = enum(c_uint) { + None, + Square, +}; + +const FontExtents = extern struct { + ascent: f32, // the extent above the baseline (by convention a positive value extends above the baseline) + descent: f32, // the extent below the baseline (by convention, positive value extends below the baseline) + leading: f32, // spacing between one row's descent and the next row's ascent + x_height: f32, // height of the lower case letter 'x' + cap_height: f32, // height of the upper case letter 'M' + width: f32, // maximum width of the font +}; + +const TextExtents = extern struct { + x_bearing: f32, + y_bearing: f32, + width: f32, + height: f32, + x_advance: f32, + y_advance: f32, +}; + +//------------------------------------------------------------------------------------------ +// [GRAPHICS] Matrix / Clip stack +//------------------------------------------------------------------------------------------ + +pub const Mat2x3 = extern struct { + m: [6]f32, +}; + +extern fn oc_matrix_push(matrix: Mat2x3) void; +extern fn oc_matrix_pop() void; +extern fn oc_matrix_top() Mat2x3; +extern fn oc_clip_push(x: f32, y: f32, w: f32, h: f32) void; +extern fn oc_clip_pop() void; +extern fn oc_clip_top() Rect; + +pub const matrixPush = oc_matrix_push; +pub const matrixPop = oc_matrix_pop; +pub const matrixTop = oc_matrix_top; +pub const clipPush = oc_clip_push; +pub const clipPop = oc_clip_pop; +pub const clipTop = oc_clip_top; + +//------------------------------------------------------------------------------------------ +// [GRAPHICS]: graphics attributes setting/getting +//------------------------------------------------------------------------------------------ + +extern fn oc_set_color(color: Color) void; +extern fn oc_set_color_rgba(r: f32, g: f32, b: f32, a: f32) void; +extern fn oc_set_width(width: f32) void; +extern fn oc_set_tolerance(tolerance: f32) void; +extern fn oc_set_joint(joint: JointType) void; +extern fn oc_set_max_joint_excursion(maxJointExcursion: f32) void; +extern fn oc_set_cap(cap: CapType) void; +extern fn oc_set_font(font: Font) void; +extern fn oc_set_font_size(size: f32) void; +extern fn oc_set_text_flip(flip: bool) void; +extern fn oc_set_image(image: Image) void; +extern fn oc_set_image_source_region(region: Rect) void; + +extern fn oc_get_color() Color; +extern fn oc_get_width() f32; +extern fn oc_get_tolerance() f32; +extern fn oc_get_joint() JointType; +extern fn oc_get_max_joint_excursion() f32; +extern fn oc_get_cap() CapType; +extern fn oc_get_font() Font; +extern fn oc_get_font_size() f32; +extern fn oc_get_text_flip() bool; +extern fn oc_get_image() Image; +extern fn oc_get_image_source_region() Rect; + +pub const setColor = oc_set_color; +pub const setColorRgba = oc_set_color_rgba; +pub const setWidth = oc_set_width; +pub const setTolerance = oc_set_tolerance; +pub const setJoint = oc_set_joint; +pub const setMaxJointExcursion = oc_set_max_joint_excursion; +pub const setCap = oc_set_cap; +pub const setFont = oc_set_font; +pub const setFontSize = oc_set_font_size; +pub const setTextFlip = oc_set_text_flip; +pub const setImage = oc_set_image; +pub const setImageSourceRegion = oc_set_image_source_region; + +pub const getColor = oc_get_color; +pub const getWidth = oc_get_width; +pub const getTolerance = oc_get_tolerance; +pub const getJoint = oc_get_joint; +pub const getMaxJointExcursion = oc_get_max_joint_excursion; +pub const getCap = oc_get_cap; +pub const getFont = oc_get_font; +pub const getFontSize = oc_get_font_size; +pub const getTextFlip = oc_get_text_flip; +pub const getImage = oc_get_image; +pub const getImageSourceRegion = oc_get_image_source_region; + +//------------------------------------------------------------------------------------------ +// [GRAPHICS]: construction: path +//------------------------------------------------------------------------------------------ + +extern fn oc_get_position() Vec2; +extern fn oc_move_to(x: f32, y: f32) void; +extern fn oc_line_to(x: f32, y: f32) void; +extern fn oc_quadratic_to(x1: f32, y1: f32, x2: f32, y2: f32) void; +extern fn oc_cubic_to(x1: f32, y1: f32, x2: f32, y2: f32, x3: f32, y3: f32) void; +extern fn oc_close_path() void; + +extern fn oc_glyph_outlines(glyphIndices: Str32) Rect; +extern fn oc_codepoints_outlines(string: Str32) void; +extern fn oc_text_outlines(string: Str8) void; + +pub const getPosition = oc_get_position; +pub const moveTo = oc_move_to; +pub const lineTo = oc_line_to; +pub const quadraticTo = oc_quadratic_to; +pub const cubicTo = oc_cubic_to; +pub const closePath = oc_close_path; + +pub const glyphOutlines = oc_glyph_outlines; +pub const codepointsOutlines = oc_codepoints_outlines; +pub const textOutlines = oc_text_outlines; + +//------------------------------------------------------------------------------------------ +// [GRAPHICS]: vector graphics +//------------------------------------------------------------------------------------------ + +extern fn oc_clear() void; +extern fn oc_fill() void; +extern fn oc_stroke() void; + +pub const clear = oc_clear; +pub const fill = oc_fill; +pub const stroke = oc_stroke; + +//------------------------------------------------------------------------------------------ +// [GRAPHICS]: shape helpers +//------------------------------------------------------------------------------------------ + +extern fn oc_rectangle_fill(x: f32, y: f32, w: f32, h: f32) void; +extern fn oc_rectangle_stroke(x: f32, y: f32, w: f32, h: f32) void; +extern fn oc_rounded_rectangle_fill(x: f32, y: f32, w: f32, h: f32, r: f32) void; +extern fn oc_rounded_rectangle_stroke(x: f32, y: f32, w: f32, h: f32, r: f32) void; +extern fn oc_ellipse_fill(x: f32, y: f32, rx: f32, ry: f32) void; +extern fn oc_ellipse_stroke(x: f32, y: f32, rx: f32, ry: f32) void; +extern fn oc_circle_fill(x: f32, y: f32, r: f32) void; +extern fn oc_circle_stroke(x: f32, y: f32, r: f32) void; +extern fn oc_arc(x: f32, y: f32, r: f32, arcAngle: f32, startAngle: f32) void; + +pub const rectangleFill = oc_rectangle_fill; +pub const rectangleStroke = oc_rectangle_stroke; +pub const roundedRectangleFill = oc_rounded_rectangle_fill; +pub const roundedRectangleStroke = oc_rounded_rectangle_stroke; +pub const ellipseFill = oc_ellipse_fill; +pub const ellipseStroke = oc_ellipse_stroke; +pub const circleFill = oc_circle_fill; +pub const circleStroke = oc_circle_stroke; +pub const arc = oc_arc; + +//------------------------------------------------------------------------------------------ +// [GRAPHICS]: image helpers +//------------------------------------------------------------------------------------------ +extern fn oc_image_draw(image: Image, rect: Rect) void; +extern fn oc_image_draw_region(image: Image, srcRegion: Rect, dstRegion: Rect) void; + +pub const imageDraw = oc_image_draw; +pub const imageDrawRegion = oc_image_draw_region; + +//------------------------------------------------------------------------------------------ +// [FILE IO] types +//------------------------------------------------------------------------------------------ + +const File = extern struct { + h: u64, +}; + +const FileOpenFlags = packed struct(u16) { + none: bool, + append: bool, + truncate: bool, + create: bool, + + symlink: bool, + no_follow: bool, + restrict: bool, +}; + +const FileAccessFlags = packed struct(u16) { + none: bool, + read: bool, + write: bool, +}; + +const FileWhence = enum (c_uint) { + Set, + End, + Current, +}; + +const IoReqId = u16; +const IoOp = u32; + +const IoOpEnum = enum (c_uint) { + OpenAt = 0, + Close, + FStat, + Seek, + Read, + Write, + Error, +}; + +const IoReq = extern struct { + id: IoReqId, + op: IoOp, + handle: File, + + offset: i64, + size: u64, + + buffer: extern union { + data: ?[*]u8, + unused: u64, // This is a horrible hack to get the same layout on wasm and on host + }, + + type: extern union { + open: extern struct { + rights: FileAccessFlags, + flags: FileOpenFlags, + }, + whence: FileWhence, + }, +}; + +const IoError = enum(i32) { + Ok = 0, + Unknown, + Op, // unsupported operation + Handle, // invalid handle + Prev, // previously had a fatal error (last error stored on handle) + Arg, // invalid argument or argument combination + Perm, // access denied + Space, // no space left + NoEntry, // file or directory does not exist + Exists, // file already exists + NotDir, // path element is not a directory + Dir, // attempted to write directory + MaxFiles, // max open files reached + MaxLinks, // too many symbolic links in path + PathLength, // path too long + FileSize, // file too big + Overflow, // offset too big + NotReady, // no data ready to be read/written + Mem, // failed to allocate memory + Interrupt, // operation interrupted by a signal + Physical, // physical IO error + NoDevice, // device not found + Walkout, // attempted to walk out of root directory +}; + +const IoCmp = extern struct { + id: IoReqId, + err: IoError, + data: extern union { + result: i64, + size: u64, + offset: i64, + handle: File, + }, +}; + +//------------------------------------------------------------------------------------------ +// [FILE IO] complete io queue api +//------------------------------------------------------------------------------------------ + +extern fn oc_io_wait_single_req(req: *IoReq) IoCmp; + +//------------------------------------------------------------------------------------------ +// [FILE IO] file IO wrapper API +//------------------------------------------------------------------------------------------ +extern fn oc_file_nil() File; +extern fn oc_file_is_nil(handle: File) bool; + +extern fn oc_file_open(path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; +extern fn oc_file_open_at(dir: File, path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; +extern fn oc_file_close(file: File) void; +extern fn oc_file_last_error(handle: File) IoError; + +extern fn oc_file_pos(file: File) i64; +extern fn oc_file_seek(file: File, offset: i64, whence: oc_file_whence) i64; +extern fn oc_file_write(file: File, size: u64, buffer: ?[*]c_char) u64; +extern fn oc_file_read(file: File, size: u64, buffer: ?[*]c_char) u64; + +//------------------------------------------------------------------------------------------ +// [FILE IO] File system wrapper +//------------------------------------------------------------------------------------------ + +const FileType = enum (c_uint) { + Unknown, + Regular, + Directory, + Symlink, + Block, + Character, + Fifo, + Socket, +}; + +const FilePerm = packed struct(u16) { + other_exec: bool, + other_write: bool, + other_read: bool, + group_exec: bool, + group_write: bool, + group_read: bool, + owner_exec: bool, + owner_write: bool, + owner_read: bool, + sticky_bit: bool, + set_gid: bool, + set_uid: bool, +}; + +const DateStamp = extern struct { + seconds: i64, // seconds relative to NTP epoch. + fraction: u64, // fraction of seconds elapsed since the time specified by seconds. +}; + +const FileStatus = extern struct { + uid: u64, + type: FileType, + perm: FilePerm, + size: u64, + + creation_date: DateStamp, + access_date: DateStamp, + modification_date: DateStamp, +}; + +extern fn oc_file_get_status(file: File) oc_file_status; +extern fn oc_file_size(file: File) u64; + +//------------------------------------------------------------------------------------------ +// [FILE IO] Asking users for file capabilities +//------------------------------------------------------------------------------------------ + +extern fn oc_file_open_with_request(path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; +extern fn oc_file_open_with_dialog(arena: *Arena, rights: FileAccessFlags, flags: FileOpenFlags, desc: oc_file_dialog_desc*) oc_file_open_with_dialog_result; -- 2.25.1 From aa22491eb6c029e35badc7a27033ff900c80fe77 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Sat, 16 Sep 2023 10:57:07 -0700 Subject: [PATCH 08/24] wip zig bindings --- samples/zig-sample/build.bat | 29 ++++- samples/zig-sample/src/main.zig | 4 +- src/orca.zig | 218 +++++++++++++++++--------------- 3 files changed, 143 insertions(+), 108 deletions(-) diff --git a/samples/zig-sample/build.bat b/samples/zig-sample/build.bat index b70641c..c2eebff 100644 --- a/samples/zig-sample/build.bat +++ b/samples/zig-sample/build.bat @@ -1,18 +1,33 @@ @echo off :: compile wasm module +rem set wasmFlags=--target=wasm32^ +rem --no-standard-libraries ^ +rem -fno-builtin ^ +rem -Wl,--no-entry ^ +rem -Wl,--export-dynamic ^ +rem -Wl,--relocatable ^ +rem -g ^ +rem -O2 ^ +rem -mbulk-memory ^ +rem -D__ORCA__ ^ +rem -isystem ..\..\src\libc-shim\include ^ +rem -I..\..\ext -I ..\..\src + +set ORCA_DIR=..\.. +set STDLIB_DIR=%ORCA_DIR%\src\libc-shim + set wasmFlags=--target=wasm32^ --no-standard-libraries ^ - -fno-builtin ^ + -mbulk-memory ^ + -g -O2 ^ + -D__ORCA__ ^ -Wl,--no-entry ^ -Wl,--export-dynamic ^ -Wl,--relocatable ^ - -g ^ - -O2 ^ - -mbulk-memory ^ - -D__ORCA__ ^ - -isystem ..\..\src\libc-shim\include ^ - -I..\..\ext -I ..\..\src + -isystem %STDLIB_DIR%\include ^ + -I%ORCA_DIR%\src ^ + -I%ORCA_DIR%\src\ext clang %wasmFlags% -o .\liborca.a ..\..\src\orca.c ..\..\src\libc-shim\src\*.c IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL% diff --git a/samples/zig-sample/src/main.zig b/samples/zig-sample/src/main.zig index 1a38782..5c0162e 100644 --- a/samples/zig-sample/src/main.zig +++ b/samples/zig-sample/src/main.zig @@ -68,8 +68,8 @@ export fn oc_on_frame_refresh() void { { const translation: oc.Mat2x3 = .{ .m = [_]f32{ 1, 0, 50, 0, 1, 50 } }; - oc.matrixPush(translation); - defer oc.matrixPop(); + translation.push(); + defer oc.Mat2x3.pop(); oc.assert(std.meta.eql(oc.matrixTop(), translation), "top of matrix stack should be what we pushed", .{}, @src()); oc.setWidth(1); diff --git a/src/orca.zig b/src/orca.zig index a7f1042..05f01a6 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -75,7 +75,7 @@ pub const ListElt = extern struct { next: ?*ListElt, }; -pub const EltList = extern struct { +pub const List = extern struct { first: ?*ListElt, last: ?*ListElt, }; @@ -107,7 +107,7 @@ pub const ArenaChunk = extern struct { pub const Arena = extern struct { base: ?*BaseAllocator, - chunks: EltList, + chunks: List, current_chunk: ?*ArenaChunk, extern fn oc_arena_init(arena: *Arena) void; @@ -184,8 +184,6 @@ pub const ArenaOptions = extern struct { // [STRINGS] //------------------------------------------------------------------------------------------ - - //------------------------------------------------------------------------------------------ // [UTF8] //------------------------------------------------------------------------------------------ @@ -409,7 +407,7 @@ pub const windowSetSize = oc_window_set_size; // [APP] file dialogs //------------------------------------------------------------------------------------------ -const FileDialogKind = enum (c_uint) { +const FileDialogKind = enum(c_uint) { Save, Open, }; @@ -444,7 +442,7 @@ const FileDialogDesc = extern struct { // //... later customization options with checkboxes / radiobuttons // } oc_file_dialog_desc; -const FileDialogButton = enum (c_uint) { +const FileDialogButton = enum(c_uint) { Cancel, Ok, }; @@ -489,17 +487,6 @@ pub const clockTime = oc_clock_time; pub const Surface = extern struct { h: u64, - pub const canvas = oc_surface_canvas; - pub const gles = oc_surface_gles; - pub const select = oc_surface_select; - pub const present = oc_surface_present; - pub const getSize = oc_surface_get_size; - pub const contentsScaling = oc_surface_contents_scaling; - pub const bringToFront = oc_surface_bring_to_front; - pub const sendToBack = oc_surface_send_to_back; - // pub const renderCommands = oc_surface_render_commands; - pub const render = oc_render; - extern fn oc_surface_canvas() Surface; extern fn oc_surface_gles() Surface; extern fn oc_surface_select(surface: Surface) void; @@ -517,22 +504,33 @@ pub const Surface = extern struct { // elements: [*]PathElt, // ) void; extern fn oc_render(surface: Surface, canvas: Canvas) void; + + pub const canvas = oc_surface_canvas; + pub const gles = oc_surface_gles; + pub const select = oc_surface_select; + pub const present = oc_surface_present; + pub const getSize = oc_surface_get_size; + pub const contentsScaling = oc_surface_contents_scaling; + pub const bringToFront = oc_surface_bring_to_front; + pub const sendToBack = oc_surface_send_to_back; + // pub const renderCommands = oc_surface_render_commands; + pub const render = oc_render; }; pub const Canvas = extern struct { h: u64, - pub const nil = oc_canvas_nil; - pub const isNil = oc_canvas_is_nil; - pub const create = oc_canvas_create; - pub const destroy = oc_canvas_destroy; - pub const setCurrent = oc_canvas_set_current; - extern fn oc_canvas_nil() Canvas; extern fn oc_canvas_is_nil(canvas: Canvas) bool; extern fn oc_canvas_create() Canvas; extern fn oc_canvas_destroy(canvas: Canvas) void; extern fn oc_canvas_set_current(canvas: Canvas) Canvas; + + pub const nil = oc_canvas_nil; + pub const isNil = oc_canvas_is_nil; + pub const create = oc_canvas_create; + pub const destroy = oc_canvas_destroy; + pub const setCurrent = oc_canvas_set_current; }; pub const Image = extern struct { @@ -547,6 +545,15 @@ pub const Image = extern struct { extern fn oc_image_destroy(image: Image) void; extern fn oc_image_upload_region_rgba8(image: Image, region: Rect, pixels: [*]u8) void; extern fn oc_image_size(image: Image) Vec2; + extern fn oc_image_draw(image: Image, rect: Rect) void; + extern fn oc_image_draw_region(image: Image, srcRegion: Rect, dstRegion: Rect) void; + + pub const create = oc_image_create; + pub const destroy = oc_image_destroy; + pub const uploadRegionRgba8 = oc_image_upload_region_rgba8; + pub const size = oc_image_size; + pub const draw = oc_image_draw; + pub const drawRegion = oc_image_draw_region; }; pub const Rect = extern union { @@ -651,21 +658,25 @@ const TextExtents = extern struct { pub const Mat2x3 = extern struct { m: [6]f32, + + extern fn oc_matrix_push(matrix: Mat2x3) void; + extern fn oc_matrix_pop() void; + extern fn oc_matrix_top() Mat2x3; + + pub const push = oc_matrix_push; + pub const pop = oc_matrix_pop; + pub const top = oc_matrix_top; }; -extern fn oc_matrix_push(matrix: Mat2x3) void; -extern fn oc_matrix_pop() void; -extern fn oc_matrix_top() Mat2x3; -extern fn oc_clip_push(x: f32, y: f32, w: f32, h: f32) void; -extern fn oc_clip_pop() void; -extern fn oc_clip_top() Rect; +pub const clip = struct { + extern fn oc_clip_push(x: f32, y: f32, w: f32, h: f32) void; + extern fn oc_clip_pop() void; + extern fn oc_clip_top() Rect; -pub const matrixPush = oc_matrix_push; -pub const matrixPop = oc_matrix_pop; -pub const matrixTop = oc_matrix_top; -pub const clipPush = oc_clip_push; -pub const clipPop = oc_clip_pop; -pub const clipTop = oc_clip_top; + pub const push = oc_clip_push; + pub const pop = oc_clip_pop; + pub const top = oc_clip_top; +}; //------------------------------------------------------------------------------------------ // [GRAPHICS]: graphics attributes setting/getting @@ -784,20 +795,39 @@ pub const circleStroke = oc_circle_stroke; pub const arc = oc_arc; //------------------------------------------------------------------------------------------ -// [GRAPHICS]: image helpers -//------------------------------------------------------------------------------------------ -extern fn oc_image_draw(image: Image, rect: Rect) void; -extern fn oc_image_draw_region(image: Image, srcRegion: Rect, dstRegion: Rect) void; - -pub const imageDraw = oc_image_draw; -pub const imageDrawRegion = oc_image_draw_region; - -//------------------------------------------------------------------------------------------ -// [FILE IO] types +// [FILE IO] basic API //------------------------------------------------------------------------------------------ const File = extern struct { h: u64, + + extern fn oc_file_nil() File; + extern fn oc_file_is_nil(file: File) bool; + extern fn oc_file_open(path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; + extern fn oc_file_open_at(dir: File, path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; + extern fn oc_file_close(file: File) void; + extern fn oc_file_last_error(file: File) IoError; + extern fn oc_file_pos(file: File) i64; + extern fn oc_file_seek(file: File, offset: i64, whence: FileWhence) i64; + extern fn oc_file_write(file: File, size: u64, buffer: ?[*]u8) u64; + extern fn oc_file_read(file: File, size: u64, buffer: ?[*]u8) u64; + + extern fn oc_file_get_status(file: File) FileStatus; + extern fn oc_file_size(file: File) u64; + + pub const nil = oc_file_nil; + pub const isNil = oc_file_is_nil; + pub const open = oc_file_open; + pub const openAt = oc_file_open_at; + pub const close = oc_file_close; + pub const lastError = oc_file_last_error; + pub const pos = oc_file_pos; + pub const seek = oc_file_seek; + pub const write = oc_file_write; + pub const read = oc_file_read; + + const getStatus = oc_file_get_status; + const size = oc_file_size; }; const FileOpenFlags = packed struct(u16) { @@ -817,7 +847,7 @@ const FileAccessFlags = packed struct(u16) { write: bool, }; -const FileWhence = enum (c_uint) { +const FileWhence = enum(c_uint) { Set, End, Current, @@ -826,7 +856,7 @@ const FileWhence = enum (c_uint) { const IoReqId = u16; const IoOp = u32; -const IoOpEnum = enum (c_uint) { +const IoOpEnum = enum(c_uint) { OpenAt = 0, Close, FStat, @@ -861,27 +891,27 @@ const IoReq = extern struct { const IoError = enum(i32) { Ok = 0, Unknown, - Op, // unsupported operation - Handle, // invalid handle - Prev, // previously had a fatal error (last error stored on handle) - Arg, // invalid argument or argument combination - Perm, // access denied - Space, // no space left - NoEntry, // file or directory does not exist - Exists, // file already exists - NotDir, // path element is not a directory - Dir, // attempted to write directory - MaxFiles, // max open files reached - MaxLinks, // too many symbolic links in path + Op, // unsupported operation + Handle, // invalid handle + Prev, // previously had a fatal error (last error stored on handle) + Arg, // invalid argument or argument combination + Perm, // access denied + Space, // no space left + NoEntry, // file or directory does not exist + Exists, // file already exists + NotDir, // path element is not a directory + Dir, // attempted to write directory + MaxFiles, // max open files reached + MaxLinks, // too many symbolic links in path PathLength, // path too long - FileSize, // file too big - Overflow, // offset too big - NotReady, // no data ready to be read/written - Mem, // failed to allocate memory - Interrupt, // operation interrupted by a signal - Physical, // physical IO error - NoDevice, // device not found - Walkout, // attempted to walk out of root directory + FileSize, // file too big + Overflow, // offset too big + NotReady, // no data ready to be read/written + Mem, // failed to allocate memory + Interrupt, // operation interrupted by a signal + Physical, // physical IO error + NoDevice, // device not found + Walkout, // attempted to walk out of root directory }; const IoCmp = extern struct { @@ -895,33 +925,7 @@ const IoCmp = extern struct { }, }; -//------------------------------------------------------------------------------------------ -// [FILE IO] complete io queue api -//------------------------------------------------------------------------------------------ - -extern fn oc_io_wait_single_req(req: *IoReq) IoCmp; - -//------------------------------------------------------------------------------------------ -// [FILE IO] file IO wrapper API -//------------------------------------------------------------------------------------------ -extern fn oc_file_nil() File; -extern fn oc_file_is_nil(handle: File) bool; - -extern fn oc_file_open(path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; -extern fn oc_file_open_at(dir: File, path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; -extern fn oc_file_close(file: File) void; -extern fn oc_file_last_error(handle: File) IoError; - -extern fn oc_file_pos(file: File) i64; -extern fn oc_file_seek(file: File, offset: i64, whence: oc_file_whence) i64; -extern fn oc_file_write(file: File, size: u64, buffer: ?[*]c_char) u64; -extern fn oc_file_read(file: File, size: u64, buffer: ?[*]c_char) u64; - -//------------------------------------------------------------------------------------------ -// [FILE IO] File system wrapper -//------------------------------------------------------------------------------------------ - -const FileType = enum (c_uint) { +const FileType = enum(c_uint) { Unknown, Regular, Directory, @@ -948,7 +952,7 @@ const FilePerm = packed struct(u16) { }; const DateStamp = extern struct { - seconds: i64, // seconds relative to NTP epoch. + seconds: i64, // seconds relative to NTP epoch. fraction: u64, // fraction of seconds elapsed since the time specified by seconds. }; @@ -958,17 +962,33 @@ const FileStatus = extern struct { perm: FilePerm, size: u64, - creation_date: DateStamp, + creation_date: DateStamp, access_date: DateStamp, modification_date: DateStamp, }; -extern fn oc_file_get_status(file: File) oc_file_status; -extern fn oc_file_size(file: File) u64; +//------------------------------------------------------------------------------------------ +// [FILE IO] complete io queue api +//------------------------------------------------------------------------------------------ + +extern fn oc_io_wait_single_req(req: *IoReq) IoCmp; + +pub const ioWaitSingleReq = oc_io_wait_single_req; //------------------------------------------------------------------------------------------ // [FILE IO] Asking users for file capabilities //------------------------------------------------------------------------------------------ +const FileOpenWithDialogElt = extern struct { + list_elt: ListElt, + file: File, +}; + +const FileOpenWithDialogResult = extern struct { + button: FileDialogButton, + file: File, + selection: List, +}; + extern fn oc_file_open_with_request(path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; -extern fn oc_file_open_with_dialog(arena: *Arena, rights: FileAccessFlags, flags: FileOpenFlags, desc: oc_file_dialog_desc*) oc_file_open_with_dialog_result; +extern fn oc_file_open_with_dialog(arena: *Arena, rights: FileAccessFlags, flags: FileOpenFlags, desc: *FileDialogDesc) FileOpenWithDialogResult; -- 2.25.1 From 4fb25d1d4937e3c3a3a53b532376687b53547989 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Sun, 17 Sep 2023 21:31:09 -0700 Subject: [PATCH 09/24] wip zig orca bindings --- samples/zig-sample/data/orca_jumping.jpg | Bin 0 -> 156721 bytes samples/zig-sample/src/main.zig | 132 +- src/app/app.c | 2 +- src/graphics/graphics.h | 6 +- src/graphics/graphics_common.c | 6 +- src/orca.zig | 1477 +++++++++++++++++----- 6 files changed, 1258 insertions(+), 365 deletions(-) create mode 100644 samples/zig-sample/data/orca_jumping.jpg diff --git a/samples/zig-sample/data/orca_jumping.jpg b/samples/zig-sample/data/orca_jumping.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50e1c35d2cebad278cab55c9b6af0437954c0eb5 GIT binary patch literal 156721 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뒧^b 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 literal 0 HcmV?d00001 diff --git a/samples/zig-sample/src/main.zig b/samples/zig-sample/src/main.zig index 5c0162e..5a9540e 100644 --- a/samples/zig-sample/src/main.zig +++ b/samples/zig-sample/src/main.zig @@ -2,49 +2,71 @@ const std = @import("std"); const oc = @import("orca"); const Vec2 = oc.Vec2; +const Mat2x3 = oc.Mat2x3; var surface: oc.Surface = undefined; var canvas: oc.Canvas = undefined; +var font: oc.Font = undefined; +var orca_image: oc.Image = undefined; var counter: u32 = 0; -var lastSeconds: f64 = 0; +var last_seconds: f64 = 0; +var frame_size: Vec2 = .{ .x = 0, .y = 0 }; + +var rotation_demo: f32 = 0; export fn oc_on_init() void { - oc.windowSetTitle("zig calc"); + oc.windowSetTitle("zig sample"); oc.windowSetSize(Vec2{ .x = 480, .y = 640 }); - oc.logInfo("current platform: {}", .{oc.getHostPlatform()}, @src()); + oc.log.info("current platform: {}", .{oc.getHostPlatform()}, @src()); surface = oc.Surface.canvas(); canvas = oc.Canvas.create(); oc.assert(oc.Canvas.nil().isNil() == true, "nil canvas should be nil", .{}, @src()); oc.assert(canvas.isNil() == false, "created canvas should not be nil", .{}, @src()); + + var ranges = oc.UnicodeRange.range(&[_]oc.UnicodeRange.Enum{ + .BasicLatin, + .C1ControlsAndLatin1Supplement, + .LatinExtendedA, + .LatinExtendedB, + .Specials, + }); + font = oc.Font.createFromPath("/zig.ttf", &ranges); + oc.assert(font.isNil() == false, "created font should not be nil", .{}, @src()); + + orca_image = oc.Image.createFromPath(surface, oc.Str8.fromSlice("/orca_jumping.jpg"), false); + oc.assert(orca_image.isNil() == false, "created image should not be nil", .{}, @src()); } export fn oc_on_resize(width: u32, height: u32) void { - oc.logInfo("frame resize: {}, {}", .{ width, height }, @src()); + frame_size = Vec2{ .x = @floatFromInt(width), .y = @floatFromInt(height) }; + oc.log.info("frame resize: {d:.2}, {d:.2}", .{ frame_size.x, frame_size.y }, @src()); } export fn oc_on_mouse_down(button: oc.MouseButton) void { - oc.logInfo("mouse down! {}", .{button}, @src()); + oc.log.info("mouse down! {}", .{button}, @src()); } export fn oc_on_mouse_up(button: oc.MouseButton) void { - oc.logInfo("mouse up! {}", .{button}, @src()); + oc.log.info("mouse up! {}", .{button}, @src()); } -export fn oc_on_key_down(key: oc.KeyCode) void { - oc.logInfo("key down: {}", .{key}, @src()); +export fn oc_on_key_down(scan: oc.ScanCode, key: oc.KeyCode) void { + oc.log.info("key down: {} {}", .{ scan, key }, @src()); } -export fn oc_on_key_up(key: oc.KeyCode) void { - oc.logInfo("key up: {}", .{key}, @src()); +export fn oc_on_key_up(scan: oc.ScanCode, key: oc.KeyCode) void { + oc.log.info("key up: {} {}", .{ scan, key }, @src()); switch (key) { oc.KeyCode.Escape => oc.requestQuit(), oc.KeyCode.B => oc.abort("aborting", .{}, @src()), oc.KeyCode.A => oc.assert(false, "test assert failed", .{}, @src()), + oc.KeyCode.W => oc.log.warn("logging a test warning", .{}, @src()), + oc.KeyCode.E => oc.log.err("logging a test error", .{}, @src()), else => {}, } } @@ -54,29 +76,28 @@ export fn oc_on_frame_refresh() void { const secs: f64 = oc.clockTime(oc.ClockKind.Date); - if (lastSeconds != @floor(secs)) { - lastSeconds = @floor(secs); - oc.logInfo("seconds since Jan 1, 1970: {d:.0}", .{secs}, @src()); + if (last_seconds != @floor(secs)) { + last_seconds = @floor(secs); + oc.log.info("seconds since Jan 1, 1970: {d:.0}", .{secs}, @src()); } - _ = canvas.setCurrent(); - surface.select(); + _ = canvas.select(); oc.setColorRgba(0.05, 0.05, 0.05, 1.0); oc.clear(); oc.setColorRgba(1.0, 0.05, 0.05, 1.0); { - const translation: oc.Mat2x3 = .{ .m = [_]f32{ 1, 0, 50, 0, 1, 50 } }; - translation.push(); - defer oc.Mat2x3.pop(); + const translation: Mat2x3 = .{ .m = [_]f32{ 1, 0, 50, 0, 1, 50 } }; + Mat2x3.push(translation); + defer Mat2x3.pop(); - oc.assert(std.meta.eql(oc.matrixTop(), translation), "top of matrix stack should be what we pushed", .{}, @src()); + oc.assert(std.meta.eql(Mat2x3.top(), translation), "top of matrix stack should be what we pushed", .{}, @src()); oc.setWidth(1); - oc.rectangleFill(50, 50, 10, 10); - oc.rectangleStroke(70, 50, 10, 10); - oc.roundedRectangleFill(90, 50, 10, 10, 3); - oc.roundedRectangleStroke(110, 50, 10, 10, 3); + oc.rectangleFill(50, 0, 10, 10); + oc.rectangleStroke(70, 0, 10, 10); + oc.roundedRectangleFill(90, 0, 10, 10, 3); + oc.roundedRectangleStroke(110, 0, 10, 10, 3); const green = oc.Color{ .Flat = .{ .r = 0.05, .g = 1, .b = 0.05, .a = 1 } }; oc.setColor(green); @@ -84,18 +105,69 @@ export fn oc_on_frame_refresh() void { oc.setTolerance(1); oc.setJoint(.Bevel); - oc.ellipseFill(140, 55, 10, 5); - oc.ellipseStroke(170, 55, 10, 5); - oc.circleFill(195, 55, 5); - oc.circleStroke(215, 55, 5); + oc.ellipseFill(140, 5, 10, 5); + oc.ellipseStroke(170, 5, 10, 5); + oc.circleFill(195, 5, 5); + oc.circleStroke(215, 5, 5); - oc.arc(230, 55, 5, 0, std.math.pi); + oc.arc(230, 5, 5, 0, std.math.pi); } - surface.render(canvas); + { + rotation_demo += 0.03; + + const rot = Mat2x3.rotate(rotation_demo); + const trans = Mat2x3.translate(285, 55); + Mat2x3.push(Mat2x3.mul_m(trans, rot)); + defer Mat2x3.pop(); + + oc.rectangleFill(-5, -5, 10, 10); + } + + { + const str = oc.Str8.fromSlice("Hello from Zig!"); + const font_size = 18; + const text_rect = font.textMetrics(font_size, str).ink; + + const center_x = frame_size.x / 2; + const text_begin_x = center_x - text_rect.Flat.w / 2; + + oc.log.info("text rect width: {d}", .{text_rect.Flat.w}, @src()); + oc.log.info("center_x: {d}", .{center_x}, @src()); + oc.log.info("text_begin_x: {d}", .{text_begin_x}, @src()); + + Mat2x3.push(Mat2x3.translate(text_begin_x, 150)); + defer Mat2x3.pop(); + + oc.setColorRgba(1.0, 0.05, 0.05, 1.0); + + oc.setFont(font); + oc.setFontSize(font_size); + oc.moveTo(0, 0); + oc.textOutlines(str); + oc.fill(); + } + + { + const trans = Mat2x3.translate(0, 200); + const scale = Mat2x3.scaleUniform(0.25); + Mat2x3.push(Mat2x3.mul_m(trans, scale)); + defer Mat2x3.pop(); + + const size = orca_image.size(); + + orca_image.draw(oc.Rect.xywh(0, 0, size.x, size.y)); + + var half_size = orca_image.size(); + half_size.x /= 2; + orca_image.drawRegion(oc.Rect.xywh(0, 0, half_size.x, half_size.y), oc.Rect.xywh(size.x + 10, 0, half_size.x, half_size.y)); + } + + surface.select(); + canvas.render(); surface.present(); } export fn oc_on_terminate() void { - oc.logInfo("byebye {}", .{counter}, @src()); + oc.log.info("byebye {}", .{counter}, @src()); } diff --git a/src/app/app.c b/src/app/app.c index a704722..030f02d 100644 --- a/src/app/app.c +++ b/src/app/app.c @@ -188,7 +188,7 @@ oc_key_code oc_scancode_to_keycode(oc_scan_code scanCode) return (oc_appData.keyMap[scanCode]); } -#define OC_DEFAULT_KEYMAP_ENTRY(sc, sv, ...) [(int) sc] = (oc_key_code)sc, +#define OC_DEFAULT_KEYMAP_ENTRY(sc, sv, kc, ...) [(int) sc] = OC_VA_NOPT(sv, ##__VA_ARGS__) __VA_ARGS__, oc_key_code oc_defaultKeyMap[OC_SCANCODE_COUNT] = { OC_KEY_TABLE(OC_DEFAULT_KEYMAP_ENTRY) diff --git a/src/graphics/graphics.h b/src/graphics/graphics.h index 0b0e970..00cd6ab 100644 --- a/src/graphics/graphics.h +++ b/src/graphics/graphics.h @@ -227,9 +227,9 @@ ORCA_API void oc_render(oc_canvas canvas); //DOC: renders all canvas ORCA_API oc_font oc_font_nil(void); ORCA_API bool oc_font_is_nil(oc_font font); -ORCA_API oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, oc_unicode_range* ranges); -ORCA_API oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, oc_unicode_range* ranges); -ORCA_API oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, oc_unicode_range* ranges); +ORCA_API oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, const oc_unicode_range* ranges); +ORCA_API oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, const oc_unicode_range* ranges); +ORCA_API oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, const oc_unicode_range* ranges); ORCA_API void oc_font_destroy(oc_font font); diff --git a/src/graphics/graphics_common.c b/src/graphics/graphics_common.c index 2ce3900..9658ddd 100644 --- a/src/graphics/graphics_common.c +++ b/src/graphics/graphics_common.c @@ -369,7 +369,7 @@ oc_font_data* oc_font_data_from_handle(oc_font handle) return (data); } -oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, oc_unicode_range* ranges) +oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, const oc_unicode_range* ranges) { if(!oc_graphicsData.init) { @@ -552,7 +552,7 @@ oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, oc_unicode_range return (fontHandle); } -oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, oc_unicode_range* ranges) +oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, const oc_unicode_range* ranges) { oc_font font = oc_font_nil(); oc_arena_scope scratch = oc_scratch_begin(); @@ -574,7 +574,7 @@ oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, oc_unicode_range* return (font); } -oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, oc_unicode_range* ranges) +oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, const oc_unicode_range* ranges) { oc_font font = oc_font_nil(); diff --git a/src/orca.zig b/src/orca.zig index 05f01a6..dbad795 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -1,16 +1,4 @@ const std = @import("std"); -const orca_c = @cImport({ - @cDefine("__ORCA__", ""); - @cInclude("orca.h"); -}); - -pub const Str8 = orca_c.oc_str8; -pub const Str32 = orca_c.oc_str32; -pub const Utf32 = orca_c.oc_utf32; -pub const Vec2 = extern struct { - x: f32, - y: f32, -}; //------------------------------------------------------------------------------------------ // [PLATFORM] @@ -25,28 +13,52 @@ extern fn oc_get_host_platform() Platform; pub const getHostPlatform = oc_get_host_platform; //------------------------------------------------------------------------------------------ -// [DEBUG] +// [DEBUG] Logging //------------------------------------------------------------------------------------------ -pub fn logInfo(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { - logExt(orca_c.OC_LOG_LEVEL_INFO, fmt, args, source); -} +pub const log = struct { + pub const Level = enum(c_uint) { + Error, + Warning, + Info, + }; -pub fn logWarning(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { - logExt(orca_c.OC_LOG_LEVEL_WARNING, fmt, args, source); -} + pub const Output = opaque {}; -pub fn logError(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { - logExt(orca_c.OC_LOG_LEVEL_ERROR, fmt, args, source); -} + extern var OC_LOG_DEFAULT_OUTPUT: ?*Output; + extern fn oc_log_set_level(level: Level) void; + extern fn oc_log_set_output(output: *Output) void; + extern fn oc_log_ext(level: Level, function: [*]const u8, file: [*]const u8, line: c_int, fmt: [*]const u8, ...) void; -pub fn logExt(comptime level: orca_c.oc_log_level, comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { - var format_buf: [512:0]u8 = undefined; - _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; // just discard NoSpaceLeft error for now - var line: c_int = @intCast(source.line); + const DEFAULT_OUTPUT = OC_LOG_DEFAULT_OUTPUT; - orca_c.oc_log_ext(level, source.fn_name.ptr, source.file.ptr, line, format_buf[0..].ptr); -} + pub fn info(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + ext(Level.Info, fmt, args, source); + } + + pub fn warn(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + ext(Level.Warning, fmt, args, source); + } + + pub fn err(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + ext(Level.Error, fmt, args, source); + } + + pub fn ext(comptime level: Level, comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { + var format_buf: [512:0]u8 = undefined; + _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; // just discard NoSpaceLeft error for now + var line: c_int = @intCast(source.line); + + oc_log_ext(level, source.fn_name.ptr, source.file.ptr, line, format_buf[0..].ptr); + } +}; + +//------------------------------------------------------------------------------------------ +// [DEBUG] Assert/Abort +//------------------------------------------------------------------------------------------ + +extern fn oc_abort_ext(file: [*]const u8, function: [*]const u8, line: c_int, fmt: [*]const u8, ...) void; +extern fn oc_assert_fail(file: [*]const u8, function: [*]const u8, line: c_int, src: [*]const u8, fmt: [*]const u8, ...) void; pub fn assert(condition: bool, comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { if (condition == false) { @@ -54,7 +66,7 @@ pub fn assert(condition: bool, comptime fmt: []const u8, args: anytype, source: _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; var line: c_int = @intCast(source.line); - orca_c.oc_assert_fail(source.file.ptr, source.fn_name.ptr, line, "", format_buf[0..].ptr); + oc_assert_fail(source.file.ptr, source.fn_name.ptr, line, "", format_buf[0..].ptr); } } @@ -63,7 +75,7 @@ pub fn abort(comptime fmt: []const u8, args: anytype, source: std.builtin.Source _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; var line: c_int = @intCast(source.line); - orca_c.oc_abort_ext(source.file.ptr, source.fn_name.ptr, line, format_buf[0..].ptr); + oc_abort_ext(source.file.ptr, source.fn_name.ptr, line, format_buf[0..].ptr); } //------------------------------------------------------------------------------------------ @@ -181,30 +193,279 @@ pub const ArenaOptions = extern struct { }; //------------------------------------------------------------------------------------------ -// [STRINGS] +// [STRINGS] u8 strings //------------------------------------------------------------------------------------------ +fn stringType(comptime CharType: type) type { + return extern struct { + const Self = @This(); + + ptr: ?[*]CharType, + len: usize, + + extern fn strncmp(a: ?[*]u8, b: ?[*]u8, len: usize) c_int; + + // extern fn oc_str8_push_buffer(arena: *Arena, len: u64, buffer: [*]u8) oc_str8; + // extern fn oc_str8_push_cstring(arena: *Arena, str: [*]const u8) oc_str8; + // extern fn oc_str8_push_copy(arena: *Arena, s: oc_str8) oc_str8; + // extern fn oc_str8_push_slice(arena: *Arena, s: oc_str8, start: u64, end: u64) oc_str8; + // // extern fn oc_str8_pushfv(arena: oc_arena*, char: const* format, args: va_list) oc_str8; + // // extern fn oc_str8_pushf(arena: oc_arena*, char: const* format, ...) oc_str8; + // extern fn oc_str8_cmp(s1: oc_str8, s2: oc_str8) c_int; + + // extern fn oc_str8_list_push(oc_arena* arena, oc_str8_list* list, oc_str8 str) void; + // extern fn oc_str8_list_pushf(oc_arena* arena, oc_str8_list* list, const char* format, ...) void; + + // extern fn oc_str8_list_collate(oc_arena* arena, oc_str8_list list, oc_str8 prefix, oc_str8 separator, oc_str8 postfix) oc_str8; + // extern fn oc_str8_list_join(oc_arena* arena, oc_str8_list list) oc_str8; + // extern fn oc_str8_split(oc_arena* arena, oc_str8 str, oc_str8_list separators) oc_str8_list; + + // extern fn oc_str16_from_buffer(u64 len, u16* buffer) oc_str16; + // extern fn oc_str16_slice(oc_str16 s, u64 start, u64 end) oc_str16; + + // extern fn oc_str16_push_buffer(oc_arena* arena, u64 len, u16* buffer) oc_str16; + // extern fn oc_str16_push_copy(oc_arena* arena, oc_str16 s) oc_str16; + // extern fn oc_str16_push_slice(oc_arena* arena, oc_str16 s, u64 start, u64 end) oc_str16; + // extern fn oc_str16_list_push(oc_arena* arena, oc_str16_list* list, oc_str16 str) void; + // extern fn oc_str16_list_join(oc_arena* arena, oc_str16_list list) oc_str16; + // extern fn oc_str16_split(oc_arena* arena, oc_str16 str, oc_str16_list separators) oc_str16_list; + // extern fn oc_str32_from_buffer(u64 len, u32* buffer) oc_str32; + // extern fn oc_str32_slice(oc_str32 s, u64 start, u64 end) oc_str32; + + // extern fn oc_str32_push_buffer(oc_arena* arena, u64 len, u32* buffer) oc_str32; + // extern fn oc_str32_push_copy(oc_arena* arena, oc_str32 s) oc_str32; + // extern fn oc_str32_push_slice(oc_arena* arena, oc_str32 s, u64 start, u64 end) oc_str32; + // extern fn oc_str32_list_push(oc_arena* arena, oc_str32_list* list, oc_str32 str) void; + // extern fn oc_str32_list_join(oc_arena* arena, oc_str32_list list) oc_str32; + // extern fn oc_str32_split(oc_arena* arena, oc_str32 str, oc_str32_list separators) oc_str32_list; + + pub fn fromSlice(str: []const CharType) Self { + return .{ + .ptr = @constCast(str.ptr), + .len = str.len, + }; + } + + pub fn slice(self: *const Self) []CharType { + if (self.ptr) |p| { + return p[0..self.len]; + } + + return &[_]CharType{}; + } + + pub fn sliceInner(self: *const Self, start: u64, end: u64) []CharType { + if (self.ptr) |p| { + assert(start <= end, "{}.sliceLen: start <= end", .{typename()}, @src()); + assert(end <= self.len, "{}.sliceLen: end <= self.len", .{typename()}, @src()); + return p[start..end]; + } + + return &[_]CharType{}; + } + + pub fn fromBuffer(len: u64, buffer: ?[]CharType) Self { + return .{ + .ptr = buffer, + .len = @intCast(len), + }; + } + + // pub fn cmp(a: *const Self, b: *const Self) std.math.Order { + // if (CharType != u8) { + // @compileError("cmp() is only supported for Str8"); + // } + // const value = strncmp(a.ptr, b.ptr, std.math.min(a.len, b.len)); + + // } + // TODO + + fn typename() []const u8 { + return switch (CharType) { + u8 => "Str8", + u16 => "Str16", + u32 => "Str32", + else => unreachable, + }; + } + }; +} + +fn stringListEltType(comptime StringType: type) type { + return extern struct { + list_elt: ListElt, + string: StringType, + }; +} + +fn stringListType() type { + return extern struct { + list: List, + elt_count: u64, + len: u64, + }; +} + +pub const Str8 = stringType(u8); +pub const Str16 = stringType(u16); +pub const Str32 = stringType(u32); + +pub const Str8ListElt = stringListEltType(Str8); +pub const Str16ListElt = stringListEltType(Str16); +pub const Str32ListElt = stringListEltType(Str32); + +pub const Str8List = stringListType(Str8); +pub const Str16List = stringListType(Str8); +pub const Str32List = stringListType(Str8); + +// pub const Str8 = extern struct { +// ptr: ?[*:0]u8, +// len: usize, + +// pub fn fromSlice(slice: [:0]const u8) Str8 { +// return .{ +// ptr: @constCast(slice.ptr), +// len: slice.len, +// }; +// } +// }; + +// typedef struct oc_str8 +// { +// char* ptr; +// size_t len; +// } oc_str8; + +// #define OC_STR8(s) ((oc_str8){ .ptr = (char*)s, .len = (s) ? strlen(s) : 0 }) + +//NOTE: this only works with string literals, but is sometimes necessary to generate compile-time constants +// #define OC_STR8_LIT(s) \ +// { \ +// (char*)(s), sizeof(s) - 1 \ +// } + +// #define oc_str8_lp(s) ((s).len), ((s).ptr) +// #define oc_str8_ip(s) (int)oc_str8_lp(s) + +// ORCA_API oc_str8 oc_str8_from_buffer(u64 len, char* buffer); +// ORCA_API oc_str8 oc_str8_slice(oc_str8 s, u64 start, u64 end); + +// ORCA_API oc_str8 oc_str8_push_buffer(oc_arena* arena, u64 len, char* buffer); +// ORCA_API oc_str8 oc_str8_push_cstring(oc_arena* arena, const char* str); +// ORCA_API oc_str8 oc_str8_push_copy(oc_arena* arena, oc_str8 s); +// ORCA_API oc_str8 oc_str8_push_slice(oc_arena* arena, oc_str8 s, u64 start, u64 end); + +// ORCA_API oc_str8 oc_str8_pushfv(oc_arena* arena, const char* format, va_list args); +// ORCA_API oc_str8 oc_str8_pushf(oc_arena* arena, const char* format, ...); + +// ORCA_API int oc_str8_cmp(oc_str8 s1, oc_str8 s2); + +// ORCA_API char* oc_str8_to_cstring(oc_arena* arena, oc_str8 string); + +// typedef struct oc_str8_elt +// { +// oc_list_elt listElt; +// oc_str8 string; +// } oc_str8_elt; + +// typedef struct oc_str8_list +// { +// oc_list list; +// u64 eltCount; +// u64 len; +// } oc_str8_list; + +// ORCA_API void oc_str8_list_push(oc_arena* arena, oc_str8_list* list, oc_str8 str); +// ORCA_API void oc_str8_list_pushf(oc_arena* arena, oc_str8_list* list, const char* format, ...); + +// ORCA_API oc_str8 oc_str8_list_collate(oc_arena* arena, oc_str8_list list, oc_str8 prefix, oc_str8 separator, oc_str8 postfix); +// ORCA_API oc_str8 oc_str8_list_join(oc_arena* arena, oc_str8_list list); +// ORCA_API oc_str8_list oc_str8_split(oc_arena* arena, oc_str8 str, oc_str8_list separators); + +// //---------------------------------------------------------------------------------- +// // [STRINGS] u16 strings +// //---------------------------------------------------------------------------------- +// typedef struct oc_str16 +// { +// u16* ptr; +// size_t len; +// } oc_str16; + +// ORCA_API oc_str16 oc_str16_from_buffer(u64 len, u16* buffer); +// ORCA_API oc_str16 oc_str16_slice(oc_str16 s, u64 start, u64 end); + +// ORCA_API oc_str16 oc_str16_push_buffer(oc_arena* arena, u64 len, u16* buffer); +// ORCA_API oc_str16 oc_str16_push_copy(oc_arena* arena, oc_str16 s); +// ORCA_API oc_str16 oc_str16_push_slice(oc_arena* arena, oc_str16 s, u64 start, u64 end); + +// typedef struct oc_str16_elt +// { +// oc_list_elt listElt; +// oc_str16 string; +// } oc_str16_elt; + +// typedef struct oc_str16_list +// { +// oc_list list; +// u64 eltCount; +// u64 len; +// } oc_str16_list; + +// ORCA_API void oc_str16_list_push(oc_arena* arena, oc_str16_list* list, oc_str16 str); +// ORCA_API oc_str16 oc_str16_list_join(oc_arena* arena, oc_str16_list list); +// ORCA_API oc_str16_list oc_str16_split(oc_arena* arena, oc_str16 str, oc_str16_list separators); + +// //---------------------------------------------------------------------------------- +// // [STRINGS] u32 strings +// //---------------------------------------------------------------------------------- +// typedef struct oc_str32 +// { +// u32* ptr; +// size_t len; +// } oc_str32; + +// ORCA_API oc_str32 oc_str32_from_buffer(u64 len, u32* buffer); +// ORCA_API oc_str32 oc_str32_slice(oc_str32 s, u64 start, u64 end); + +// ORCA_API oc_str32 oc_str32_push_buffer(oc_arena* arena, u64 len, u32* buffer); +// ORCA_API oc_str32 oc_str32_push_copy(oc_arena* arena, oc_str32 s); +// ORCA_API oc_str32 oc_str32_push_slice(oc_arena* arena, oc_str32 s, u64 start, u64 end); + +// typedef struct oc_str32_elt +// { +// oc_list_elt listElt; +// oc_str32 string; +// } oc_str32_elt; + +// typedef struct oc_str32_list +// { +// oc_list list; +// u64 eltCount; +// u64 len; +// } oc_str32_list; + +// ORCA_API void oc_str32_list_push(oc_arena* arena, oc_str32_list* list, oc_str32 str); +// ORCA_API oc_str32 oc_str32_list_join(oc_arena* arena, oc_str32_list list); +// ORCA_API oc_str32_list oc_str32_split(oc_arena* arena, oc_str32 str, oc_str32_list separators); + //------------------------------------------------------------------------------------------ // [UTF8] //------------------------------------------------------------------------------------------ -const UnicodeRange = extern struct { - first_code_point: Utf32, - count: u32, -}; +pub const Utf32 = u32; -const Utf8Dec = extern struct { - codepoint: Utf32, // decoded codepoint +pub const Utf8Dec = extern struct { + code_point: Utf32, // decoded codepoint size: u32, // size of corresponding oc_utf8 sequence }; -const Utf8 = struct { +pub const Utf8 = struct { // getting sizes / offsets / indices extern fn oc_utf8_size_from_leading_char(leadingChar: c_char) u32; - extern fn oc_utf8_codepoint_size(codePoint: Utf32) u32; + extern fn oc_utf8_codepoint_size(code_point: Utf32) u32; extern fn oc_utf8_codepoint_count_for_string(string: Str8) u64; - extern fn oc_utf8_byte_count_for_codepoints(codePoints: Str32) u64; + extern fn oc_utf8_byte_count_for_codepoints(code_points: Str32) u64; extern fn oc_utf8_next_offset(string: Str8, byteOffset: u64) u64; extern fn oc_utf8_prev_offset(string: Str8, byteOffset: u64) u64; @@ -218,11 +479,11 @@ const Utf8 = struct { // encoding / decoding extern fn oc_utf8_decode(string: Str8) Utf8Dec; //NOTE: decode a single oc_utf8 sequence at start of string extern fn oc_utf8_decode_at(string: Str8, offset: u64) Utf8Dec; //NOTE: decode a single oc_utf8 sequence starting at byte offset - extern fn oc_utf8_encode(dst: [*]u8, codePoint: Utf32) Str8; //NOTE: encode codepoint into backing buffer dst + extern fn oc_utf8_encode(dst: [*]u8, code_point: Utf32) Str8; //NOTE: encode codepoint into backing buffer dst extern fn oc_utf8_to_codepoints(maxCount: u64, backing: [*]Utf32, string: Str8) Str32; - extern fn oc_utf8_from_codepoints(maxBytes: u64, backing: [*]c_char, codePoints: Str32) Str8; + extern fn oc_utf8_from_codepoints(maxBytes: u64, backing: [*]c_char, code_points: Str32) Str8; extern fn oc_utf8_push_to_codepoints(arena: *Arena, string: Str8) Str32; - extern fn oc_utf8_push_from_codepoints(arena: *Arena, codePoints: Str32) Str8; + extern fn oc_utf8_push_from_codepoints(arena: *Arena, code_points: Str32) Str8; pub const decode = oc_utf8_decode; pub const decodeAt = oc_utf8_decode_at; @@ -233,6 +494,479 @@ const Utf8 = struct { pub const pushFromCodepoints = oc_utf8_push_from_codepoints; }; +//------------------------------------------------------------------------------------------ +// [UTF8] Unicode +//------------------------------------------------------------------------------------------ + +pub const UnicodeRange = extern struct { + first_code_point: Utf32, + count: u32, + + extern const OC_UNICODE_BASIC_LATIN: UnicodeRange; + extern const OC_UNICODE_C1_CONTROLS_AND_LATIN_1_SUPPLEMENT: UnicodeRange; + extern const OC_UNICODE_LATIN_EXTENDED_A: UnicodeRange; + extern const OC_UNICODE_LATIN_EXTENDED_B: UnicodeRange; + extern const OC_UNICODE_IPA_EXTENSIONS: UnicodeRange; + extern const OC_UNICODE_SPACING_MODIFIER_LETTERS: UnicodeRange; + extern const OC_UNICODE_COMBINING_DIACRITICAL_MARKS: UnicodeRange; + extern const OC_UNICODE_GREEK_COPTIC: UnicodeRange; + extern const OC_UNICODE_CYRILLIC: UnicodeRange; + extern const OC_UNICODE_CYRILLIC_SUPPLEMENT: UnicodeRange; + extern const OC_UNICODE_ARMENIAN: UnicodeRange; + extern const OC_UNICODE_HEBREW: UnicodeRange; + extern const OC_UNICODE_ARABIC: UnicodeRange; + extern const OC_UNICODE_SYRIAC: UnicodeRange; + extern const OC_UNICODE_THAANA: UnicodeRange; + extern const OC_UNICODE_DEVANAGARI: UnicodeRange; + extern const OC_UNICODE_BENGALI_ASSAMESE: UnicodeRange; + extern const OC_UNICODE_GURMUKHI: UnicodeRange; + extern const OC_UNICODE_GUJARATI: UnicodeRange; + extern const OC_UNICODE_ORIYA: UnicodeRange; + extern const OC_UNICODE_TAMIL: UnicodeRange; + extern const OC_UNICODE_TELUGU: UnicodeRange; + extern const OC_UNICODE_KANNADA: UnicodeRange; + extern const OC_UNICODE_MALAYALAM: UnicodeRange; + extern const OC_UNICODE_SINHALA: UnicodeRange; + extern const OC_UNICODE_THAI: UnicodeRange; + extern const OC_UNICODE_LAO: UnicodeRange; + extern const OC_UNICODE_TIBETAN: UnicodeRange; + extern const OC_UNICODE_MYANMAR: UnicodeRange; + extern const OC_UNICODE_GEORGIAN: UnicodeRange; + extern const OC_UNICODE_HANGUL_JAMO: UnicodeRange; + extern const OC_UNICODE_ETHIOPIC: UnicodeRange; + extern const OC_UNICODE_CHEROKEE: UnicodeRange; + extern const OC_UNICODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: UnicodeRange; + extern const OC_UNICODE_OGHAM: UnicodeRange; + extern const OC_UNICODE_RUNIC: UnicodeRange; + extern const OC_UNICODE_TAGALOG: UnicodeRange; + extern const OC_UNICODE_HANUNOO: UnicodeRange; + extern const OC_UNICODE_BUHID: UnicodeRange; + extern const OC_UNICODE_TAGBANWA: UnicodeRange; + extern const OC_UNICODE_KHMER: UnicodeRange; + extern const OC_UNICODE_MONGOLIAN: UnicodeRange; + extern const OC_UNICODE_LIMBU: UnicodeRange; + extern const OC_UNICODE_TAI_LE: UnicodeRange; + extern const OC_UNICODE_KHMER_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_PHONETIC_EXTENSIONS: UnicodeRange; + extern const OC_UNICODE_LATIN_EXTENDED_ADDITIONAL: UnicodeRange; + extern const OC_UNICODE_GREEK_EXTENDED: UnicodeRange; + extern const OC_UNICODE_GENERAL_PUNCTUATION: UnicodeRange; + extern const OC_UNICODE_SUPERSCRIPTS_AND_SUBSCRIPTS: UnicodeRange; + extern const OC_UNICODE_CURRENCY_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_LETTERLIKE_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_NUMBER_FORMS: UnicodeRange; + extern const OC_UNICODE_ARROWS: UnicodeRange; + extern const OC_UNICODE_MATHEMATICAL_OPERATORS: UnicodeRange; + extern const OC_UNICODE_MISCELLANEOUS_TECHNICAL: UnicodeRange; + extern const OC_UNICODE_CONTROL_PICTURES: UnicodeRange; + extern const OC_UNICODE_OPTICAL_CHARACTER_RECOGNITION: UnicodeRange; + extern const OC_UNICODE_ENCLOSED_ALPHANUMERICS: UnicodeRange; + extern const OC_UNICODE_BOX_DRAWING: UnicodeRange; + extern const OC_UNICODE_BLOCK_ELEMENTS: UnicodeRange; + extern const OC_UNICODE_GEOMETRIC_SHAPES: UnicodeRange; + extern const OC_UNICODE_MISCELLANEOUS_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_DINGBATS: UnicodeRange; + extern const OC_UNICODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: UnicodeRange; + extern const OC_UNICODE_SUPPLEMENTAL_ARROWS_A: UnicodeRange; + extern const OC_UNICODE_BRAILLE_PATTERNS: UnicodeRange; + extern const OC_UNICODE_SUPPLEMENTAL_ARROWS_B: UnicodeRange; + extern const OC_UNICODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: UnicodeRange; + extern const OC_UNICODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS: UnicodeRange; + extern const OC_UNICODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS: UnicodeRange; + extern const OC_UNICODE_CJK_RADICALS_SUPPLEMENT: UnicodeRange; + extern const OC_UNICODE_KANGXI_RADICALS: UnicodeRange; + extern const OC_UNICODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS: UnicodeRange; + extern const OC_UNICODE_CJK_SYMBOLS_AND_PUNCTUATION: UnicodeRange; + extern const OC_UNICODE_HIRAGANA: UnicodeRange; + extern const OC_UNICODE_KATAKANA: UnicodeRange; + extern const OC_UNICODE_BOPOMOFO: UnicodeRange; + extern const OC_UNICODE_HANGUL_COMPATIBILITY_JAMO: UnicodeRange; + extern const OC_UNICODE_KANBUN_KUNTEN: UnicodeRange; + extern const OC_UNICODE_BOPOMOFO_EXTENDED: UnicodeRange; + extern const OC_UNICODE_KATAKANA_PHONETIC_EXTENSIONS: UnicodeRange; + extern const OC_UNICODE_ENCLOSED_CJK_LETTERS_AND_MONTHS: UnicodeRange; + extern const OC_UNICODE_CJK_COMPATIBILITY: UnicodeRange; + extern const OC_UNICODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: UnicodeRange; + extern const OC_UNICODE_YIJING_HEXAGRAM_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_CJK_UNIFIED_IDEOGRAPHS: UnicodeRange; + extern const OC_UNICODE_YI_SYLLABLES: UnicodeRange; + extern const OC_UNICODE_YI_RADICALS: UnicodeRange; + extern const OC_UNICODE_HANGUL_SYLLABLES: UnicodeRange; + extern const OC_UNICODE_HIGH_SURROGATE_AREA: UnicodeRange; + extern const OC_UNICODE_LOW_SURROGATE_AREA: UnicodeRange; + extern const OC_UNICODE_PRIVATE_USE_AREA: UnicodeRange; + extern const OC_UNICODE_CJK_COMPATIBILITY_IDEOGRAPHS: UnicodeRange; + extern const OC_UNICODE_ALPHABETIC_PRESENTATION_FORMS: UnicodeRange; + extern const OC_UNICODE_ARABIC_PRESENTATION_FORMS_A: UnicodeRange; + extern const OC_UNICODE_VARIATION_SELECTORS: UnicodeRange; + extern const OC_UNICODE_COMBINING_HALF_MARKS: UnicodeRange; + extern const OC_UNICODE_CJK_COMPATIBILITY_FORMS: UnicodeRange; + extern const OC_UNICODE_SMALL_FORM_VARIANTS: UnicodeRange; + extern const OC_UNICODE_ARABIC_PRESENTATION_FORMS_B: UnicodeRange; + extern const OC_UNICODE_HALFWIDTH_AND_FULLWIDTH_FORMS: UnicodeRange; + extern const OC_UNICODE_SPECIALS: UnicodeRange; + extern const OC_UNICODE_LINEAR_B_SYLLABARY: UnicodeRange; + extern const OC_UNICODE_LINEAR_B_IDEOGRAMS: UnicodeRange; + extern const OC_UNICODE_AEGEAN_NUMBERS: UnicodeRange; + extern const OC_UNICODE_OLD_ITALIC: UnicodeRange; + extern const OC_UNICODE_GOTHIC: UnicodeRange; + extern const OC_UNICODE_UGARITIC: UnicodeRange; + extern const OC_UNICODE_DESERET: UnicodeRange; + extern const OC_UNICODE_SHAVIAN: UnicodeRange; + extern const OC_UNICODE_OSMANYA: UnicodeRange; + extern const OC_UNICODE_CYPRIOT_SYLLABARY: UnicodeRange; + extern const OC_UNICODE_BYZANTINE_MUSICAL_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_MUSICAL_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_TAI_XUAN_JING_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS: UnicodeRange; + extern const OC_UNICODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: UnicodeRange; + extern const OC_UNICODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: UnicodeRange; + extern const OC_UNICODE_TAGS: UnicodeRange; + extern const OC_UNICODE_VARIATION_SELECTORS_SUPPLEMENT: UnicodeRange; + extern const OC_UNICODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A: UnicodeRange; + extern const OC_UNICODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B: UnicodeRange; + + pub const Enum = enum { + BasicLatin, + C1ControlsAndLatin1Supplement, + LatinExtendedA, + LatinExtendedB, + IpaExtensions, + SpacingModifierLetters, + CombiningDiacriticalMarks, + GreekCoptic, + Cyrillic, + CyrillicSupplement, + Armenian, + Hebrew, + Arabic, + Syriac, + Thaana, + Devanagari, + BengaliAssamese, + Gurmukhi, + Gujarati, + Oriya, + Tamil, + Telugu, + Kannada, + Malayalam, + Sinhala, + Thai, + Lao, + Tibetan, + Myanmar, + Georgian, + HangulJamo, + Ethiopic, + Cherokee, + UnifiedCanadianAboriginalSyllabics, + Ogham, + Runic, + Tagalog, + Hanunoo, + Buhid, + Tagbanwa, + Khmer, + Mongolian, + Limbu, + TaiLe, + KhmerSymbols, + PhoneticExtensions, + LatinExtendedAdditional, + GreekExtended, + GeneralPunctuation, + SuperscriptsAndSubscripts, + CurrencySymbols, + CombiningDiacriticalMarksForSymbols, + LetterlikeSymbols, + NumberForms, + Arrows, + MathematicalOperators, + MiscellaneousTechnical, + ControlPictures, + OpticalCharacterRecognition, + EnclosedAlphanumerics, + BoxDrawing, + BlockElements, + GeometricShapes, + MiscellaneousSymbols, + Dingbats, + MiscellaneousMathematicalSymbolsA, + SupplementalArrowsA, + BraillePatterns, + SupplementalArrowsB, + MiscellaneousMathematicalSymbolsB, + SupplementalMathematicalOperators, + MiscellaneousSymbolsAndArrows, + CjkRadicalsSupplement, + KangxiRadicals, + IdeographicDescriptionCharacters, + CjkSymbolsAndPunctuation, + Hiragana, + Katakana, + Bopomofo, + HangulCompatibilityJamo, + KanbunKunten, + BopomofoExtended, + KatakanaPhoneticExtensions, + EnclosedCjkLettersAndMonths, + CjkCompatibility, + CjkUnifiedIdeographsExtensionA, + YijingHexagramSymbols, + CjkUnifiedIdeographs, + YiSyllables, + YiRadicals, + HangulSyllables, + HighSurrogateArea, + LowSurrogateArea, + PrivateUseArea, + CjkCompatibilityIdeographs, + AlphabeticPresentationForms, + ArabicPresentationFormsA, + VariationSelectors, + CombiningHalfMarks, + CjkCompatibilityForms, + SmallFormVariants, + ArabicPresentationFormsB, + HalfwidthAndFullwidthForms, + Specials, + LinearBSyllabary, + LinearBIdeograms, + AegeanNumbers, + OldItalic, + Gothic, + Ugaritic, + Deseret, + Shavian, + Osmanya, + CypriotSyllabary, + ByzantineMusicalSymbols, + MusicalSymbols, + TaiXuanJingSymbols, + MathematicalAlphanumericSymbols, + CjkUnifiedIdeographsExtensionB, + CjkCompatibilityIdeographsSupplement, + Tags, + VariationSelectorsSupplement, + SupplementaryPrivateUseAreaA, + SupplementaryPrivateUseAreaB, + }; + + pub fn range(comptime enums: []const Enum) [enums.len]UnicodeRange { + var r: [enums.len]UnicodeRange = undefined; + for (enums, 0..r.len) |e, i| { + r[i] = switch (e) { + .BasicLatin => OC_UNICODE_BASIC_LATIN, + .C1ControlsAndLatin1Supplement => OC_UNICODE_C1_CONTROLS_AND_LATIN_1_SUPPLEMENT, + .LatinExtendedA => OC_UNICODE_LATIN_EXTENDED_A, + .LatinExtendedB => OC_UNICODE_LATIN_EXTENDED_B, + .IpaExtensions => OC_UNICODE_IPA_EXTENSIONS, + .SpacingModifierLetters => OC_UNICODE_SPACING_MODIFIER_LETTERS, + .CombiningDiacriticalMarks => OC_UNICODE_COMBINING_DIACRITICAL_MARKS, + .GreekCoptic => OC_UNICODE_GREEK_COPTIC, + .Cyrillic => OC_UNICODE_CYRILLIC, + .CyrillicSupplement => OC_UNICODE_CYRILLIC_SUPPLEMENT, + .Armenian => OC_UNICODE_ARMENIAN, + .Hebrew => OC_UNICODE_HEBREW, + .Arabic => OC_UNICODE_ARABIC, + .Syriac => OC_UNICODE_SYRIAC, + .Thaana => OC_UNICODE_THAANA, + .Devanagari => OC_UNICODE_DEVANAGARI, + .BengaliAssamese => OC_UNICODE_BENGALI_ASSAMESE, + .Gurmukhi => OC_UNICODE_GURMUKHI, + .Gujarati => OC_UNICODE_GUJARATI, + .Oriya => OC_UNICODE_ORIYA, + .Tamil => OC_UNICODE_TAMIL, + .Telugu => OC_UNICODE_TELUGU, + .Kannada => OC_UNICODE_KANNADA, + .Malayalam => OC_UNICODE_MALAYALAM, + .Sinhala => OC_UNICODE_SINHALA, + .Thai => OC_UNICODE_THAI, + .Lao => OC_UNICODE_LAO, + .Tibetan => OC_UNICODE_TIBETAN, + .Myanmar => OC_UNICODE_MYANMAR, + .Georgian => OC_UNICODE_GEORGIAN, + .HangulJamo => OC_UNICODE_HANGUL_JAMO, + .Ethiopic => OC_UNICODE_ETHIOPIC, + .Cherokee => OC_UNICODE_CHEROKEE, + .UnifiedCanadianAboriginalSyllabics => OC_UNICODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS, + .Ogham => OC_UNICODE_OGHAM, + .Runic => OC_UNICODE_RUNIC, + .Tagalog => OC_UNICODE_TAGALOG, + .Hanunoo => OC_UNICODE_HANUNOO, + .Buhid => OC_UNICODE_BUHID, + .Tagbanwa => OC_UNICODE_TAGBANWA, + .Khmer => OC_UNICODE_KHMER, + .Mongolian => OC_UNICODE_MONGOLIAN, + .Limbu => OC_UNICODE_LIMBU, + .TaiLe => OC_UNICODE_TAI_LE, + .KhmerSymbols => OC_UNICODE_KHMER_SYMBOLS, + .PhoneticExtensions => OC_UNICODE_PHONETIC_EXTENSIONS, + .LatinExtendedAdditional => OC_UNICODE_LATIN_EXTENDED_ADDITIONAL, + .GreekExtended => OC_UNICODE_GREEK_EXTENDED, + .GeneralPunctuation => OC_UNICODE_GENERAL_PUNCTUATION, + .SuperscriptsAndSubscripts => OC_UNICODE_SUPERSCRIPTS_AND_SUBSCRIPTS, + .CurrencySymbols => OC_UNICODE_CURRENCY_SYMBOLS, + .CombiningDiacriticalMarksForSymbols => OC_UNICODE_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS, + .LetterlikeSymbols => OC_UNICODE_LETTERLIKE_SYMBOLS, + .NumberForms => OC_UNICODE_NUMBER_FORMS, + .Arrows => OC_UNICODE_ARROWS, + .MathematicalOperators => OC_UNICODE_MATHEMATICAL_OPERATORS, + .MiscellaneousTechnical => OC_UNICODE_MISCELLANEOUS_TECHNICAL, + .ControlPictures => OC_UNICODE_CONTROL_PICTURES, + .OpticalCharacterRecognition => OC_UNICODE_OPTICAL_CHARACTER_RECOGNITION, + .EnclosedAlphanumerics => OC_UNICODE_ENCLOSED_ALPHANUMERICS, + .BoxDrawing => OC_UNICODE_BOX_DRAWING, + .BlockElements => OC_UNICODE_BLOCK_ELEMENTS, + .GeometricShapes => OC_UNICODE_GEOMETRIC_SHAPES, + .MiscellaneousSymbols => OC_UNICODE_MISCELLANEOUS_SYMBOLS, + .Dingbats => OC_UNICODE_DINGBATS, + .MiscellaneousMathematicalSymbolsA => OC_UNICODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A, + .SupplementalArrowsA => OC_UNICODE_SUPPLEMENTAL_ARROWS_A, + .BraillePatterns => OC_UNICODE_BRAILLE_PATTERNS, + .SupplementalArrowsB => OC_UNICODE_SUPPLEMENTAL_ARROWS_B, + .MiscellaneousMathematicalSymbolsB => OC_UNICODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B, + .SupplementalMathematicalOperators => OC_UNICODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS, + .MiscellaneousSymbolsAndArrows => OC_UNICODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS, + .CjkRadicalsSupplement => OC_UNICODE_CJK_RADICALS_SUPPLEMENT, + .KangxiRadicals => OC_UNICODE_KANGXI_RADICALS, + .IdeographicDescriptionCharacters => OC_UNICODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS, + .CjkSymbolsAndPunctuation => OC_UNICODE_CJK_SYMBOLS_AND_PUNCTUATION, + .Hiragana => OC_UNICODE_HIRAGANA, + .Katakana => OC_UNICODE_KATAKANA, + .Bopomofo => OC_UNICODE_BOPOMOFO, + .HangulCompatibilityJamo => OC_UNICODE_HANGUL_COMPATIBILITY_JAMO, + .KanbunKunten => OC_UNICODE_KANBUN_KUNTEN, + .BopomofoExtended => OC_UNICODE_BOPOMOFO_EXTENDED, + .KatakanaPhoneticExtensions => OC_UNICODE_KATAKANA_PHONETIC_EXTENSIONS, + .EnclosedCjkLettersAndMonths => OC_UNICODE_ENCLOSED_CJK_LETTERS_AND_MONTHS, + .CjkCompatibility => OC_UNICODE_CJK_COMPATIBILITY, + .CjkUnifiedIdeographsExtensionA => OC_UNICODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A, + .YijingHexagramSymbols => OC_UNICODE_YIJING_HEXAGRAM_SYMBOLS, + .CjkUnifiedIdeographs => OC_UNICODE_CJK_UNIFIED_IDEOGRAPHS, + .YiSyllables => OC_UNICODE_YI_SYLLABLES, + .YiRadicals => OC_UNICODE_YI_RADICALS, + .HangulSyllables => OC_UNICODE_HANGUL_SYLLABLES, + .HighSurrogateArea => OC_UNICODE_HIGH_SURROGATE_AREA, + .LowSurrogateArea => OC_UNICODE_LOW_SURROGATE_AREA, + .PrivateUseArea => OC_UNICODE_PRIVATE_USE_AREA, + .CjkCompatibilityIdeographs => OC_UNICODE_CJK_COMPATIBILITY_IDEOGRAPHS, + .AlphabeticPresentationForms => OC_UNICODE_ALPHABETIC_PRESENTATION_FORMS, + .ArabicPresentationFormsA => OC_UNICODE_ARABIC_PRESENTATION_FORMS_A, + .VariationSelectors => OC_UNICODE_VARIATION_SELECTORS, + .CombiningHalfMarks => OC_UNICODE_COMBINING_HALF_MARKS, + .CjkCompatibilityForms => OC_UNICODE_CJK_COMPATIBILITY_FORMS, + .SmallFormVariants => OC_UNICODE_SMALL_FORM_VARIANTS, + .ArabicPresentationFormsB => OC_UNICODE_ARABIC_PRESENTATION_FORMS_B, + .HalfwidthAndFullwidthForms => OC_UNICODE_HALFWIDTH_AND_FULLWIDTH_FORMS, + .Specials => OC_UNICODE_SPECIALS, + .LinearBSyllabary => OC_UNICODE_LINEAR_B_SYLLABARY, + .LinearBIdeograms => OC_UNICODE_LINEAR_B_IDEOGRAMS, + .AegeanNumbers => OC_UNICODE_AEGEAN_NUMBERS, + .OldItalic => OC_UNICODE_OLD_ITALIC, + .Gothic => OC_UNICODE_GOTHIC, + .Ugaritic => OC_UNICODE_UGARITIC, + .Deseret => OC_UNICODE_DESERET, + .Shavian => OC_UNICODE_SHAVIAN, + .Osmanya => OC_UNICODE_OSMANYA, + .CypriotSyllabary => OC_UNICODE_CYPRIOT_SYLLABARY, + .ByzantineMusicalSymbols => OC_UNICODE_BYZANTINE_MUSICAL_SYMBOLS, + .MusicalSymbols => OC_UNICODE_MUSICAL_SYMBOLS, + .TaiXuanJingSymbols => OC_UNICODE_TAI_XUAN_JING_SYMBOLS, + .MathematicalAlphanumericSymbols => OC_UNICODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS, + .CjkUnifiedIdeographsExtensionB => OC_UNICODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B, + .CjkCompatibilityIdeographsSupplement => OC_UNICODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT, + .Tags => OC_UNICODE_TAGS, + .VariationSelectorsSupplement => OC_UNICODE_VARIATION_SELECTORS_SUPPLEMENT, + .SupplementaryPrivateUseAreaA => OC_UNICODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A, + .SupplementaryPrivateUseAreaB => OC_UNICODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B, + }; + } + + return r; + } +}; + +//------------------------------------------------------------------------------------------ +// [FONT]: fonts +//------------------------------------------------------------------------------------------ + +pub const Font = extern struct { + h: u64, + + extern fn oc_font_nil() Font; + extern fn oc_font_is_nil(font: Font) bool; + + extern fn oc_font_create_from_memory(mem: Str8, range_count: u32, ranges: [*]const UnicodeRange) Font; + extern fn oc_font_create_from_file(file: File, range_count: u32, ranges: [*]const UnicodeRange) Font; + extern fn oc_font_create_from_path(path: Str8, range_count: u32, ranges: [*]const UnicodeRange) Font; + + extern fn oc_font_get_glyph_indices(font: Font, code_points: Str32, backing: Str32) Str32; + extern fn oc_font_push_glyph_indices(font: Font, arena: *Arena, code_points: Str32) Str32; + extern fn oc_font_get_glyph_index(font: Font, code_point: Utf32) u32; + extern fn oc_font_destroy(font: Font) void; + + extern fn oc_font_get_metrics(font: Font) FontMetrics; + extern fn oc_font_get_metrics_unscaled(font: Font, em_size: f32) FontMetrics; + extern fn oc_font_get_scale_for_em_pixels(font: Font, em_size: f32) f32; + extern fn oc_font_text_metrics_utf32(font: Font, font_size: f32, code_points: Str32) TextMetrics; + extern fn oc_font_text_metrics(font: Font, font_size: f32, text: Str8) TextMetrics; + + pub const nil = oc_font_nil; + pub const isNil = oc_font_is_nil; + pub fn createFromMemory(mem: []const u8, ranges: []const UnicodeRange) Font { + return oc_font_create_from_memory(Str8.fromSlice(mem), @intCast(ranges.len), ranges.ptr); + } + pub fn createFromFile(file: File, ranges: []const UnicodeRange) Font { + return oc_font_create_from_file(file, @intCast(ranges.len), ranges.ptr); + } + pub fn createFromPath(path: []const u8, ranges: []const UnicodeRange) Font { + return oc_font_create_from_path(Str8.fromSlice(path), @intCast(ranges.len), ranges.ptr); + } + pub const getGlyphIndices = oc_font_get_glyph_indices; + pub const pushGlyphIndices = oc_font_push_glyph_indices; + pub const getGlyphIndex = oc_font_get_glyph_index; + pub const destroy = oc_font_destroy; + pub const getMetrics = oc_font_get_metrics; + pub const getMetricsUnscaled = oc_font_get_metrics_unscaled; + pub const getScaleForEmPixels = oc_font_get_scale_for_em_pixels; + pub const textMetricsUtf32 = oc_font_text_metrics_utf32; + pub const textMetrics = oc_font_text_metrics; +}; + +pub const JointType = enum(c_uint) { + Miter, + Bevel, + None, +}; + +pub const CapType = enum(c_uint) { + None, + Square, +}; + +pub const FontMetrics = extern struct { + ascent: f32, // the extent above the baseline (by convention a positive value extends above the baseline) + descent: f32, // the extent below the baseline (by convention, positive value extends below the baseline) + line_gap: f32, // spacing between one row's descent and the next row's ascent + x_height: f32, // height of the lower case letter 'x' + cap_height: f32, // height of the upper case letter 'M' + width: f32, // maximum width of the font +}; + +pub const GlyphMetrics = extern struct { + ink: Rect, + advance: Vec2, +}; + +pub const TextMetrics = extern struct { + ink: Rect, + logical: Rect, + advance: Vec2, +}; + //------------------------------------------------------------------------------------------ // [APP] //------------------------------------------------------------------------------------------ @@ -255,152 +989,279 @@ const MouseCursor = enum(c_uint) { extern fn oc_set_cursor(cursor: MouseCursor) void; pub const setCursor = oc_set_cursor; +pub const ScanCode = enum(c_uint) { + Unknown = 0, + Space = 32, + Apostrophe = 39, + Comma = 44, + Minus = 45, + Period = 46, + Slash = 47, + Num0 = 48, + Num1 = 49, + Num2 = 50, + Num3 = 51, + Num4 = 52, + Num5 = 53, + Num6 = 54, + Num7 = 55, + Num8 = 56, + Num9 = 57, + Semicolon = 59, + Equal = 61, + LeftBracket = 91, + Backslash = 92, + RightBracket = 93, + GraveAccent = 96, + A = 97, + B = 98, + C = 99, + D = 100, + E = 101, + F = 102, + G = 103, + H = 104, + I = 105, + J = 106, + K = 107, + L = 108, + M = 109, + N = 110, + O = 111, + P = 112, + Q = 113, + R = 114, + S = 115, + T = 116, + U = 117, + V = 118, + W = 119, + X = 120, + Y = 121, + Z = 122, + World1 = 161, + World2 = 162, + Escape = 256, + Enter = 257, + Tab = 258, + Backspace = 259, + Insert = 260, + Delete = 261, + Right = 262, + Left = 263, + Down = 264, + Up = 265, + PageUp = 266, + PageDown = 267, + Home = 268, + End = 269, + CapsLock = 280, + ScrollLock = 281, + NumLock = 282, + PrintScreen = 283, + Pause = 284, + F1 = 290, + F2 = 291, + F3 = 292, + F4 = 293, + F5 = 294, + F6 = 295, + F7 = 296, + F8 = 297, + F9 = 298, + F10 = 299, + F11 = 300, + F12 = 301, + F13 = 302, + F14 = 303, + F15 = 304, + F16 = 305, + F17 = 306, + F18 = 307, + F19 = 308, + F20 = 309, + F21 = 310, + F22 = 311, + F23 = 312, + F24 = 313, + F25 = 314, + Kp0 = 320, + Kp1 = 321, + Kp2 = 322, + Kp3 = 323, + Kp4 = 324, + Kp5 = 325, + Kp6 = 326, + Kp7 = 327, + Kp8 = 328, + Kp9 = 329, + KpDecimal = 330, + KpDivide = 331, + KpMultiply = 332, + KpSubtract = 333, + KpAdd = 334, + KpEnter = 335, + KpEqual = 336, + LeftShift = 340, + LeftControl = 341, + LeftAlt = 342, + LeftSuper = 343, + RightShift = 344, + RightControl = 345, + RightAlt = 346, + RightSuper = 347, + Menu = 348, +}; + pub const KeyCode = enum(c_uint) { - Unknown = orca_c.OC_KEY_UNKNOWN, - Space = orca_c.OC_KEY_SPACE, - Apostrophe = orca_c.OC_KEY_APOSTROPHE, - Comma = orca_c.OC_KEY_COMMA, - Minus = orca_c.OC_KEY_MINUS, - Period = orca_c.OC_KEY_PERIOD, - Slash = orca_c.OC_KEY_SLASH, - Num0 = orca_c.OC_KEY_0, - Num1 = orca_c.OC_KEY_1, - Num2 = orca_c.OC_KEY_2, - Num3 = orca_c.OC_KEY_3, - Num4 = orca_c.OC_KEY_4, - Num5 = orca_c.OC_KEY_5, - Num6 = orca_c.OC_KEY_6, - Num7 = orca_c.OC_KEY_7, - Num8 = orca_c.OC_KEY_8, - Num9 = orca_c.OC_KEY_9, - Semicolon = orca_c.OC_KEY_SEMICOLON, - Equal = orca_c.OC_KEY_EQUAL, - A = orca_c.OC_KEY_A, - B = orca_c.OC_KEY_B, - C = orca_c.OC_KEY_C, - D = orca_c.OC_KEY_D, - E = orca_c.OC_KEY_E, - F = orca_c.OC_KEY_F, - G = orca_c.OC_KEY_G, - H = orca_c.OC_KEY_H, - I = orca_c.OC_KEY_I, - J = orca_c.OC_KEY_J, - K = orca_c.OC_KEY_K, - L = orca_c.OC_KEY_L, - M = orca_c.OC_KEY_M, - N = orca_c.OC_KEY_N, - O = orca_c.OC_KEY_O, - P = orca_c.OC_KEY_P, - Q = orca_c.OC_KEY_Q, - R = orca_c.OC_KEY_R, - S = orca_c.OC_KEY_S, - T = orca_c.OC_KEY_T, - U = orca_c.OC_KEY_U, - V = orca_c.OC_KEY_V, - W = orca_c.OC_KEY_W, - X = orca_c.OC_KEY_X, - Y = orca_c.OC_KEY_Y, - Z = orca_c.OC_KEY_Z, - LeftBracket = orca_c.OC_KEY_LEFT_BRACKET, - Backslash = orca_c.OC_KEY_BACKSLASH, - RightBracket = orca_c.OC_KEY_RIGHT_BRACKET, - GraveAccent = orca_c.OC_KEY_GRAVE_ACCENT, - World1 = orca_c.OC_KEY_WORLD_1, - World2 = orca_c.OC_KEY_WORLD_2, - Escape = orca_c.OC_KEY_ESCAPE, - Enter = orca_c.OC_KEY_ENTER, - Tab = orca_c.OC_KEY_TAB, - Backspace = orca_c.OC_KEY_BACKSPACE, - Insert = orca_c.OC_KEY_INSERT, - Delete = orca_c.OC_KEY_DELETE, - Right = orca_c.OC_KEY_RIGHT, - Left = orca_c.OC_KEY_LEFT, - Down = orca_c.OC_KEY_DOWN, - Up = orca_c.OC_KEY_UP, - PageUp = orca_c.OC_KEY_PAGE_UP, - PageDown = orca_c.OC_KEY_PAGE_DOWN, - Home = orca_c.OC_KEY_HOME, - End = orca_c.OC_KEY_END, - CapsLock = orca_c.OC_KEY_CAPS_LOCK, - ScrollLock = orca_c.OC_KEY_SCROLL_LOCK, - NumLock = orca_c.OC_KEY_NUM_LOCK, - PrintScreen = orca_c.OC_KEY_PRINT_SCREEN, - Pause = orca_c.OC_KEY_PAUSE, - F1 = orca_c.OC_KEY_F1, - F2 = orca_c.OC_KEY_F2, - F3 = orca_c.OC_KEY_F3, - F4 = orca_c.OC_KEY_F4, - F5 = orca_c.OC_KEY_F5, - F6 = orca_c.OC_KEY_F6, - F7 = orca_c.OC_KEY_F7, - F8 = orca_c.OC_KEY_F8, - F9 = orca_c.OC_KEY_F9, - F10 = orca_c.OC_KEY_F10, - F11 = orca_c.OC_KEY_F11, - F12 = orca_c.OC_KEY_F12, - F13 = orca_c.OC_KEY_F13, - F14 = orca_c.OC_KEY_F14, - F15 = orca_c.OC_KEY_F15, - F16 = orca_c.OC_KEY_F16, - F17 = orca_c.OC_KEY_F17, - F18 = orca_c.OC_KEY_F18, - F19 = orca_c.OC_KEY_F19, - F20 = orca_c.OC_KEY_F20, - F21 = orca_c.OC_KEY_F21, - F22 = orca_c.OC_KEY_F22, - F23 = orca_c.OC_KEY_F23, - F24 = orca_c.OC_KEY_F24, - F25 = orca_c.OC_KEY_F25, - Kp0 = orca_c.OC_KEY_KP_0, - Kp1 = orca_c.OC_KEY_KP_1, - Kp2 = orca_c.OC_KEY_KP_2, - Kp3 = orca_c.OC_KEY_KP_3, - Kp4 = orca_c.OC_KEY_KP_4, - Kp5 = orca_c.OC_KEY_KP_5, - Kp6 = orca_c.OC_KEY_KP_6, - Kp7 = orca_c.OC_KEY_KP_7, - Kp8 = orca_c.OC_KEY_KP_8, - Kp9 = orca_c.OC_KEY_KP_9, - KpDecimal = orca_c.OC_KEY_KP_DECIMAL, - KpDivide = orca_c.OC_KEY_KP_DIVIDE, - KpMultiply = orca_c.OC_KEY_KP_MULTIPLY, - KpSubtract = orca_c.OC_KEY_KP_SUBTRACT, - KpAdd = orca_c.OC_KEY_KP_ADD, - KpEnter = orca_c.OC_KEY_KP_ENTER, - KpEqual = orca_c.OC_KEY_KP_EQUAL, - LeftShift = orca_c.OC_KEY_LEFT_SHIFT, - LeftControl = orca_c.OC_KEY_LEFT_CONTROL, - LeftAlt = orca_c.OC_KEY_LEFT_ALT, - LeftSuper = orca_c.OC_KEY_LEFT_SUPER, - RightShift = orca_c.OC_KEY_RIGHT_SHIFT, - RightControl = orca_c.OC_KEY_RIGHT_CONTROL, - RightAlt = orca_c.OC_KEY_RIGHT_ALT, - RightSuper = orca_c.OC_KEY_RIGHT_SUPER, - Menu = orca_c.OC_KEY_MENU, - Count = orca_c.OC_KEY_COUNT, + Unknown = 0, + Space = ' ', + Apostrophe = '\'', + Comma = ',', + Minus = '-', + Period = '.', + Slash = '/', + Num0 = '0', + Num1 = '1', + Num2 = '2', + Num3 = '3', + Num4 = '4', + Num5 = '5', + Num6 = '6', + Num7 = '7', + Num8 = '8', + Num9 = '9', + Semicolon = ';', + Equal = '=', + LeftBracket = '[', + Backslash = '\\', + RightBracket = ']', + GraveAccent = '`', + A = 'a', + B = 'b', + C = 'c', + D = 'd', + E = 'e', + F = 'f', + G = 'g', + H = 'h', + I = 'i', + J = 'j', + K = 'k', + L = 'l', + M = 'm', + N = 'n', + O = 'o', + P = 'p', + Q = 'q', + R = 'r', + S = 's', + T = 't', + U = 'u', + V = 'v', + W = 'w', + X = 'x', + Y = 'y', + Z = 'z', + World1 = 161, + World2 = 162, + Escape = 256, + Enter = 257, + Tab = 258, + Backspace = 259, + Insert = 260, + Delete = 261, + Right = 262, + Left = 263, + Down = 264, + Up = 265, + PageUp = 266, + PageDown = 267, + Home = 268, + End = 269, + CapsLock = 280, + ScrollLock = 281, + NumLock = 282, + PrintScreen = 283, + Pause = 284, + F1 = 290, + F2 = 291, + F3 = 292, + F4 = 293, + F5 = 294, + F6 = 295, + F7 = 296, + F8 = 297, + F9 = 298, + F10 = 299, + F11 = 300, + F12 = 301, + F13 = 302, + F14 = 303, + F15 = 304, + F16 = 305, + F17 = 306, + F18 = 307, + F19 = 308, + F20 = 309, + F21 = 310, + F22 = 311, + F23 = 312, + F24 = 313, + F25 = 314, + Kp0 = 320, + Kp1 = 321, + Kp2 = 322, + Kp3 = 323, + Kp4 = 324, + Kp5 = 325, + Kp6 = 326, + Kp7 = 327, + Kp8 = 328, + Kp9 = 329, + KpDecimal = 330, + KpDivide = 331, + KpMultiply = 332, + KpSubtract = 333, + KpAdd = 334, + KpEnter = 335, + KpEqual = 336, + LeftShift = 340, + LeftControl = 341, + LeftAlt = 342, + LeftSuper = 343, + RightShift = 344, + RightControl = 345, + RightAlt = 346, + RightSuper = 347, + Menu = 348, + Count = 349, }; pub const MouseButton = enum(c_uint) { - Left = orca_c.OC_MOUSE_LEFT, - Right = orca_c.OC_MOUSE_RIGHT, - Middle = orca_c.OC_MOUSE_MIDDLE, - Ext1 = orca_c.OC_MOUSE_EXT1, - Ext2 = orca_c.OC_MOUSE_EXT2, + Left = 0x00, + Right = 0x01, + Middle = 0x02, + Ext1 = 0x03, + Ext2 = 0x04, }; //------------------------------------------------------------------------------------------ // [APP] windows //------------------------------------------------------------------------------------------ +extern fn oc_window_set_title(title: Str8) void; + pub fn windowSetTitle(title: [:0]const u8) void { - var title_str8: Str8 = .{ - .ptr = @constCast(title.ptr), - .len = title.len, - }; - orca_c.oc_window_set_title(title_str8); + // var title_str8: Str8 = .{ + // .ptr = @constCast(title.ptr), + // .len = title.len, + // }; + oc_window_set_title(Str8.fromSlice(title)); } extern fn oc_window_set_size(size: Vec2) void; +// pub const windowSetTitle = oc_window_set_title; pub const windowSetSize = oc_window_set_size; //------------------------------------------------------------------------------------------ @@ -429,19 +1290,6 @@ const FileDialogDesc = extern struct { filters: Str8List, }; -// typedef struct oc_file_dialog_desc -// { -// oc_file_dialog_kind kind; -// oc_file_dialog_flags flags; -// oc_str8 title; -// oc_str8 okLabel; -// oc_file startAt; -// oc_str8 startPath; -// oc_str8_list filters; - -// //... later customization options with checkboxes / radiobuttons -// } oc_file_dialog_desc; - const FileDialogButton = enum(c_uint) { Cancel, Ok, @@ -453,20 +1301,6 @@ const FileDialogResult = extern struct { selection: Str8List, }; -// typedef enum -// { -// OC_FILE_DIALOG_CANCEL = 0, -// OC_FILE_DIALOG_OK, -// } oc_file_dialog_button; - -// typedef struct oc_file_dialog_result -// { -// oc_file_dialog_button button; -// oc_str8 path; -// oc_str8_list selection; - -// } oc_file_dialog_result; - //------------------------------------------------------------------------------------------ // [CLOCK] //------------------------------------------------------------------------------------------ @@ -480,6 +1314,77 @@ pub const ClockKind = enum(c_uint) { extern fn oc_clock_time(clock: ClockKind) f64; pub const clockTime = oc_clock_time; +//------------------------------------------------------------------------------------------ +// [MATH] Vec2 +//------------------------------------------------------------------------------------------ + +pub const Vec2 = extern struct { + x: f32, + y: f32, + + pub fn mul(self: Vec2, scalar: f32) Vec2 { + return .{ + .x = self.x * scalar, + .y = self.y * scalar, + }; + } + + pub fn add(a: Vec2, b: Vec2) Vec2 { + return .{ + .x = a.x + b.x, + .y = a.y + b.y, + }; + } +}; + +//------------------------------------------------------------------------------------------ +// [MATH] Matrix +//------------------------------------------------------------------------------------------ + +pub const Mat2x3 = extern struct { + m: [6]f32, + + extern fn oc_mat2x3_mul(m: Mat2x3, p: Vec2) Vec2; + extern fn oc_mat2x3_mul_m(lhs: Mat2x3, rhs: Mat2x3) Mat2x3; + extern fn oc_mat2x3_inv(x: Mat2x3) Mat2x3; + extern fn oc_mat2x3_rotate(radians: f32) Mat2x3; + extern fn oc_mat2x3_translate(x: f32, y: f32) Mat2x3; + + extern fn oc_matrix_push(matrix: Mat2x3) void; + extern fn oc_matrix_pop() void; + extern fn oc_matrix_top() Mat2x3; + + pub const mul = oc_mat2x3_mul; + pub const mul_m = oc_mat2x3_mul_m; + pub const inv = oc_mat2x3_inv; + pub const rotate = oc_mat2x3_rotate; + pub const translate = oc_mat2x3_translate; + pub fn scale(x: f32, y: f32) Mat2x3 { + return .{ .m = .{ x, 0, 0, 0, y, 0 } }; + } + pub fn scaleUniform(s: f32) Mat2x3 { + return .{ .m = .{ s, 0, 0, 0, s, 0 } }; + } + + pub const push = oc_matrix_push; + pub const pop = oc_matrix_pop; + pub const top = oc_matrix_top; +}; + +//------------------------------------------------------------------------------------------ +// [GRAPHICS] Clip stack +//------------------------------------------------------------------------------------------ + +pub const clip = struct { + extern fn oc_clip_push(x: f32, y: f32, w: f32, h: f32) void; + extern fn oc_clip_pop() void; + extern fn oc_clip_top() Rect; + + pub const push = oc_clip_push; + pub const pop = oc_clip_pop; + pub const top = oc_clip_top; +}; + //------------------------------------------------------------------------------------------ // [GRAPHICS]: resources //------------------------------------------------------------------------------------------ @@ -487,6 +1392,8 @@ pub const clockTime = oc_clock_time; pub const Surface = extern struct { h: u64, + extern fn oc_surface_nil(void) Surface; + extern fn oc_surface_is_nil(surface: Surface) bool; extern fn oc_surface_canvas() Surface; extern fn oc_surface_gles() Surface; extern fn oc_surface_select(surface: Surface) void; @@ -503,8 +1410,9 @@ pub const Surface = extern struct { // elt_count: u32, // elements: [*]PathElt, // ) void; - extern fn oc_render(surface: Surface, canvas: Canvas) void; + pub const nil = oc_surface_nil; + pub const isNil = oc_surface_is_nil; pub const canvas = oc_surface_canvas; pub const gles = oc_surface_gles; pub const select = oc_surface_select; @@ -514,7 +1422,6 @@ pub const Surface = extern struct { pub const bringToFront = oc_surface_bring_to_front; pub const sendToBack = oc_surface_send_to_back; // pub const renderCommands = oc_surface_render_commands; - pub const render = oc_render; }; pub const Canvas = extern struct { @@ -524,31 +1431,40 @@ pub const Canvas = extern struct { extern fn oc_canvas_is_nil(canvas: Canvas) bool; extern fn oc_canvas_create() Canvas; extern fn oc_canvas_destroy(canvas: Canvas) void; - extern fn oc_canvas_set_current(canvas: Canvas) Canvas; + extern fn oc_canvas_select(canvas: Canvas) Canvas; + extern fn oc_render(canvas: Canvas) void; pub const nil = oc_canvas_nil; pub const isNil = oc_canvas_is_nil; pub const create = oc_canvas_create; pub const destroy = oc_canvas_destroy; - pub const setCurrent = oc_canvas_set_current; + pub const select = oc_canvas_select; + pub const render = oc_render; }; pub const Image = extern struct { h: u64, - pub const create = oc_image_create; - pub const destroy = oc_image_destroy; - pub const uploadRegionRGBA = oc_image_upload_region_rgba8; - pub const size = oc_image_size; - + extern fn oc_image_nil(void) Image; + extern fn oc_image_is_nil(image: Image) bool; extern fn oc_image_create(surface: Surface, width: u32, height: u32) Image; + extern fn oc_image_create_from_rgba8(surface: Surface, width: u32, height: u32, pixels: [*]u8) Image; + extern fn oc_image_create_from_memory(surface: Surface, mem: Str8, flip: bool) Image; + extern fn oc_image_create_from_file(surface: Surface, file: File, flip: bool) Image; + extern fn oc_image_create_from_path(surface: Surface, path: Str8, flip: bool) Image; extern fn oc_image_destroy(image: Image) void; extern fn oc_image_upload_region_rgba8(image: Image, region: Rect, pixels: [*]u8) void; extern fn oc_image_size(image: Image) Vec2; extern fn oc_image_draw(image: Image, rect: Rect) void; extern fn oc_image_draw_region(image: Image, srcRegion: Rect, dstRegion: Rect) void; + pub const nil = oc_image_nil; + pub const isNil = oc_image_is_nil; pub const create = oc_image_create; + pub const createFromRgba8 = oc_image_create_from_rgba8; + pub const createFromMemory = oc_image_create_from_memory; + pub const createFromFile = oc_image_create_from_file; + pub const createFromPath = oc_image_create_from_path; pub const destroy = oc_image_destroy; pub const uploadRegionRgba8 = oc_image_upload_region_rgba8; pub const size = oc_image_size; @@ -568,6 +1484,10 @@ pub const Rect = extern union { wh: Vec2, }, Array: [4]f32, + + pub fn xywh(x: f32, y: f32, w: f32, h: f32) Rect { + return .{ .Flat = .{ .x = x, .y = y, .w = w, .h = h } }; + } }; pub const Color = extern union { @@ -580,104 +1500,6 @@ pub const Color = extern union { Array: [4]f32, }; -//------------------------------------------------------------------------------------------ -// [GRAPHICS]: fonts -//------------------------------------------------------------------------------------------ - -//NOTE(martin): the following int valued functions return -1 if font is invalid or codepoint is not present in font// -//TODO(martin): add enum error codes -//NOTE(martin): if you need to process more than one codepoint, first convert your codepoints to glyph indices, then use the -// glyph index versions of the functions, which can take an array of glyph indices. - -const Font = extern struct { - h: u64, - - extern fn oc_font_nil() Font; - extern fn oc_font_create_from_memory(mem: Str8, rangeCount: u32, ranges: [*]UnicodeRange) Font; - extern fn oc_font_destroy(font: Font) void; - extern fn oc_font_get_extents(font: Font) FontExtents; - extern fn oc_font_get_scaled_extents(font: Font, emSize: f32) FontExtents; - extern fn oc_font_get_scale_for_em_pixels(font: Font, emSize: f32) f32; - extern fn oc_font_get_glyph_indices(font: Font, codePoints: Str32, backing: Str32) Str32; - extern fn oc_font_push_glyph_indices(font: Font, arena: *Arena, codePoints: Str32) Str32; - extern fn oc_font_get_glyph_index(font: Font, codePoint: Utf32) u32; - extern fn oc_font_get_codepoint_extents(font: Font, codePoint: Utf32, outExtents: *TextExtents) c_int; - extern fn oc_font_get_glyph_extents(font: Font, glyphIndices: Str32, outExtents: *TextExtents) c_int; - extern fn oc_text_bounding_box_utf32(font: Font, fontSize: f32, text: Str32) Rect; - extern fn oc_text_bounding_box(font: Font, fontSize: f32, text: Str8) Rect; - - pub const nil = oc_font_nil; - pub fn createFromMemory(mem: Str8, ranges: []UnicodeRange) Font { - return oc_font_create_from_memory(mem, @intCast(ranges.len), ranges.ptr); - } - pub const destroy = oc_font_destroy; - pub const getExtents = oc_font_get_extents; - pub const getScaledExtents = oc_font_get_scaled_extents; - pub const getScaleForEmPixels = oc_font_get_scale_for_em_pixels; - pub const getGlyphIndices = oc_font_get_glyph_indices; - pub const pushGlyphIndices = oc_font_push_glyph_indices; - pub const getGlyphIndex = oc_font_get_glyph_index; - pub const getCodepointExtents = oc_font_get_codepoint_extents; - pub const getGlyphExtents = oc_font_get_glyph_extents; - pub const boundingBoxUtf32 = oc_text_bounding_box_utf32; - pub const boundingBox = oc_text_bounding_box; -}; - -const JointType = enum(c_uint) { - Miter, - Bevel, - None, -}; - -const CapType = enum(c_uint) { - None, - Square, -}; - -const FontExtents = extern struct { - ascent: f32, // the extent above the baseline (by convention a positive value extends above the baseline) - descent: f32, // the extent below the baseline (by convention, positive value extends below the baseline) - leading: f32, // spacing between one row's descent and the next row's ascent - x_height: f32, // height of the lower case letter 'x' - cap_height: f32, // height of the upper case letter 'M' - width: f32, // maximum width of the font -}; - -const TextExtents = extern struct { - x_bearing: f32, - y_bearing: f32, - width: f32, - height: f32, - x_advance: f32, - y_advance: f32, -}; - -//------------------------------------------------------------------------------------------ -// [GRAPHICS] Matrix / Clip stack -//------------------------------------------------------------------------------------------ - -pub const Mat2x3 = extern struct { - m: [6]f32, - - extern fn oc_matrix_push(matrix: Mat2x3) void; - extern fn oc_matrix_pop() void; - extern fn oc_matrix_top() Mat2x3; - - pub const push = oc_matrix_push; - pub const pop = oc_matrix_pop; - pub const top = oc_matrix_top; -}; - -pub const clip = struct { - extern fn oc_clip_push(x: f32, y: f32, w: f32, h: f32) void; - extern fn oc_clip_pop() void; - extern fn oc_clip_top() Rect; - - pub const push = oc_clip_push; - pub const pop = oc_clip_pop; - pub const top = oc_clip_top; -}; - //------------------------------------------------------------------------------------------ // [GRAPHICS]: graphics attributes setting/getting //------------------------------------------------------------------------------------------ @@ -687,7 +1509,7 @@ extern fn oc_set_color_rgba(r: f32, g: f32, b: f32, a: f32) void; extern fn oc_set_width(width: f32) void; extern fn oc_set_tolerance(tolerance: f32) void; extern fn oc_set_joint(joint: JointType) void; -extern fn oc_set_max_joint_excursion(maxJointExcursion: f32) void; +extern fn oc_set_max_joint_excursion(max_joint_excursion: f32) void; extern fn oc_set_cap(cap: CapType) void; extern fn oc_set_font(font: Font) void; extern fn oc_set_font_size(size: f32) void; @@ -743,7 +1565,7 @@ extern fn oc_quadratic_to(x1: f32, y1: f32, x2: f32, y2: f32) void; extern fn oc_cubic_to(x1: f32, y1: f32, x2: f32, y2: f32, x3: f32, y3: f32) void; extern fn oc_close_path() void; -extern fn oc_glyph_outlines(glyphIndices: Str32) Rect; +extern fn oc_glyph_outlines(glyph_indices: Str32) Rect; extern fn oc_codepoints_outlines(string: Str32) void; extern fn oc_text_outlines(string: Str8) void; @@ -782,7 +1604,7 @@ extern fn oc_ellipse_fill(x: f32, y: f32, rx: f32, ry: f32) void; extern fn oc_ellipse_stroke(x: f32, y: f32, rx: f32, ry: f32) void; extern fn oc_circle_fill(x: f32, y: f32, r: f32) void; extern fn oc_circle_stroke(x: f32, y: f32, r: f32) void; -extern fn oc_arc(x: f32, y: f32, r: f32, arcAngle: f32, startAngle: f32) void; +extern fn oc_arc(x: f32, y: f32, r: f32, arc_angle: f32, start_angle: f32) void; pub const rectangleFill = oc_rectangle_fill; pub const rectangleStroke = oc_rectangle_stroke; @@ -815,6 +1637,9 @@ const File = extern struct { extern fn oc_file_get_status(file: File) FileStatus; extern fn oc_file_size(file: File) u64; + extern fn oc_file_open_with_request(path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; + extern fn oc_file_open_with_dialog(arena: *Arena, rights: FileAccessFlags, flags: FileOpenFlags, desc: *FileDialogDesc) FileOpenWithDialogResult; + pub const nil = oc_file_nil; pub const isNil = oc_file_is_nil; pub const open = oc_file_open; @@ -826,8 +1651,11 @@ const File = extern struct { pub const write = oc_file_write; pub const read = oc_file_read; - const getStatus = oc_file_get_status; - const size = oc_file_size; + pub const getStatus = oc_file_get_status; + pub const size = oc_file_size; + + pub const openWithRequest = oc_file_open_with_request; + pub const openWithDialog = oc_file_open_with_dialog; }; const FileOpenFlags = packed struct(u16) { @@ -967,18 +1795,6 @@ const FileStatus = extern struct { modification_date: DateStamp, }; -//------------------------------------------------------------------------------------------ -// [FILE IO] complete io queue api -//------------------------------------------------------------------------------------------ - -extern fn oc_io_wait_single_req(req: *IoReq) IoCmp; - -pub const ioWaitSingleReq = oc_io_wait_single_req; - -//------------------------------------------------------------------------------------------ -// [FILE IO] Asking users for file capabilities -//------------------------------------------------------------------------------------------ - const FileOpenWithDialogElt = extern struct { list_elt: ListElt, file: File, @@ -990,5 +1806,10 @@ const FileOpenWithDialogResult = extern struct { selection: List, }; -extern fn oc_file_open_with_request(path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; -extern fn oc_file_open_with_dialog(arena: *Arena, rights: FileAccessFlags, flags: FileOpenFlags, desc: *FileDialogDesc) FileOpenWithDialogResult; +//------------------------------------------------------------------------------------------ +// [FILE IO] complete io queue api +//------------------------------------------------------------------------------------------ + +extern fn oc_io_wait_single_req(req: *IoReq) IoCmp; + +pub const ioWaitSingleReq = oc_io_wait_single_req; -- 2.25.1 From db2828141f0948613ca669b0b9b7855c63e80400 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Thu, 21 Sep 2023 22:44:23 -0700 Subject: [PATCH 10/24] adding more orca zig bindings --- samples/zig-sample/build.bat | 13 -- samples/zig-sample/src/main.zig | 8 +- src/orca.zig | 386 +++++++++++++++++--------------- 3 files changed, 211 insertions(+), 196 deletions(-) diff --git a/samples/zig-sample/build.bat b/samples/zig-sample/build.bat index c2eebff..fb08934 100644 --- a/samples/zig-sample/build.bat +++ b/samples/zig-sample/build.bat @@ -1,19 +1,6 @@ @echo off :: compile wasm module -rem set wasmFlags=--target=wasm32^ -rem --no-standard-libraries ^ -rem -fno-builtin ^ -rem -Wl,--no-entry ^ -rem -Wl,--export-dynamic ^ -rem -Wl,--relocatable ^ -rem -g ^ -rem -O2 ^ -rem -mbulk-memory ^ -rem -D__ORCA__ ^ -rem -isystem ..\..\src\libc-shim\include ^ -rem -I..\..\ext -I ..\..\src - set ORCA_DIR=..\.. set STDLIB_DIR=%ORCA_DIR%\src\libc-shim diff --git a/samples/zig-sample/src/main.zig b/samples/zig-sample/src/main.zig index 5a9540e..eb47cc6 100644 --- a/samples/zig-sample/src/main.zig +++ b/samples/zig-sample/src/main.zig @@ -54,6 +54,10 @@ export fn oc_on_mouse_up(button: oc.MouseButton) void { oc.log.info("mouse up! {}", .{button}, @src()); } +export fn oc_on_mouse_wheel(dx: f32, dy: f32) void { + oc.log.info("mouse wheel! dx: {d:.2}, dy: {d:.2}", .{ dx, dy }, @src()); +} + export fn oc_on_key_down(scan: oc.ScanCode, key: oc.KeyCode) void { oc.log.info("key down: {} {}", .{ scan, key }, @src()); } @@ -132,10 +136,6 @@ export fn oc_on_frame_refresh() void { const center_x = frame_size.x / 2; const text_begin_x = center_x - text_rect.Flat.w / 2; - oc.log.info("text rect width: {d}", .{text_rect.Flat.w}, @src()); - oc.log.info("center_x: {d}", .{center_x}, @src()); - oc.log.info("text_begin_x: {d}", .{text_begin_x}, @src()); - Mat2x3.push(Mat2x3.translate(text_begin_x, 150)); defer Mat2x3.pop(); diff --git a/src/orca.zig b/src/orca.zig index dbad795..9be2ad6 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -90,6 +90,109 @@ pub const ListElt = extern struct { pub const List = extern struct { first: ?*ListElt, last: ?*ListElt, + + pub fn init() List { + return .{ + .first = null, + .last = null, + }; + } + + pub fn begin(self: *List) ?*ListElt { + return self.first; + } + + pub fn end() ?*ListElt { + return null; + } + + pub fn last(self: *List) ?*ListElt { + return self.last; + } + + pub fn insert(self: *List, after_elt: *ListElt, elt: *ListElt) void { + elt.prev = after_elt; + elt.next = after_elt.next; + if (after_elt.next != null) { + after_elt.next.prev = elt; + } else { + self.last = elt; + } + after_elt.next = elt; + } + + pub fn insertBefore(self: *List, before_elt: *ListElt, elt: *ListElt) void { + elt.next = before_elt; + elt.prev = before_elt.prev; + if (before_elt.prev != null) { + before_elt.prev.next = elt; + } else { + self.first = elt; + } + before_elt.prev = elt; + } + + pub fn remove(self: *List, elt: *ListElt) void { + if (elt.prev != null) { + elt.prev.next = elt.next; + } else { + self.first = elt.next; + } + if (elt.next != null) { + elt.next.prev = elt.prev; + } else { + self.last = elt.prev; + } + elt.prev = blk: { + const tmp = null; + elt.next = tmp; + break :blk tmp; + }; + } + + pub fn push(self: *List, elt: *ListElt) void { + elt.next = self.first; + elt.prev = null; + if (self.first != null) { + self.first.prev = elt; + } else { + self.last = elt; + } + self.first = elt; + } + + pub fn pop(self: *List) ListElt { + var elt: *ListElt = begin(self); + if (elt != end(self)) { + remove(self, elt); + return elt; + } + return null; + } + + pub fn pushBack(self: *List, elt: *ListElt) void { + elt.prev = self.last; + elt.next = null; + if (self.last != null) { + self.last.next = elt; + } else { + self.first = elt; + } + self.last = elt; + } + + pub fn popBack(self: *List) ListElt { + var elt: *ListElt = last(self); + if (elt != end(self)) { + remove(self, elt); + return elt; + } + return null; + } + + pub fn empty(self: *const List) bool { + return (self.first == null) or (self.last == null); + } }; //------------------------------------------------------------------------------------------ @@ -198,87 +301,129 @@ pub const ArenaOptions = extern struct { fn stringType(comptime CharType: type) type { return extern struct { - const Self = @This(); + pub const StrListElt = extern struct { + list_elt: ListElt, + string: Str, + }; + + pub const StrList = extern struct { + list: List, + elt_count: u64, + len: u64, + + pub fn init() StrList { + return .{ + .list = List.init(), + .elt_count = 0, + .len = 0, + }; + } + + pub fn push(list: *StrList, str: *Str, arena: *Arena) void { + var elt: *StrListElt = arena.pushType(ListElt); + elt.string = str; + list.append(elt.list_elt); + list.elt_count += 1; + list.len += str.len; + } + + pub fn pushf(list: *StrList, arena: *Arena, comptime format: []const u8, args: anytype) Str { + var str = Str.pushf(arena, format, args); + list.push(str, arena); + } + + // TODO + // pub fn join(list: *const StrList, arena: *Arena) Str; + // const empty = Str{ .ptr = null, .len = 0 }; + // return list.collate(arena, empty, empty, empty)); + // } + // pub fn collate(list: *StrList, arena: *Arena, prefix: Str, separator: Str, postfix: Str) Str; + }; + + const Str = @This(); ptr: ?[*]CharType, len: usize, extern fn strncmp(a: ?[*]u8, b: ?[*]u8, len: usize) c_int; - // extern fn oc_str8_push_buffer(arena: *Arena, len: u64, buffer: [*]u8) oc_str8; - // extern fn oc_str8_push_cstring(arena: *Arena, str: [*]const u8) oc_str8; - // extern fn oc_str8_push_copy(arena: *Arena, s: oc_str8) oc_str8; - // extern fn oc_str8_push_slice(arena: *Arena, s: oc_str8, start: u64, end: u64) oc_str8; - // // extern fn oc_str8_pushfv(arena: oc_arena*, char: const* format, args: va_list) oc_str8; - // // extern fn oc_str8_pushf(arena: oc_arena*, char: const* format, ...) oc_str8; - // extern fn oc_str8_cmp(s1: oc_str8, s2: oc_str8) c_int; - - // extern fn oc_str8_list_push(oc_arena* arena, oc_str8_list* list, oc_str8 str) void; - // extern fn oc_str8_list_pushf(oc_arena* arena, oc_str8_list* list, const char* format, ...) void; - - // extern fn oc_str8_list_collate(oc_arena* arena, oc_str8_list list, oc_str8 prefix, oc_str8 separator, oc_str8 postfix) oc_str8; - // extern fn oc_str8_list_join(oc_arena* arena, oc_str8_list list) oc_str8; - // extern fn oc_str8_split(oc_arena* arena, oc_str8 str, oc_str8_list separators) oc_str8_list; - - // extern fn oc_str16_from_buffer(u64 len, u16* buffer) oc_str16; - // extern fn oc_str16_slice(oc_str16 s, u64 start, u64 end) oc_str16; - - // extern fn oc_str16_push_buffer(oc_arena* arena, u64 len, u16* buffer) oc_str16; - // extern fn oc_str16_push_copy(oc_arena* arena, oc_str16 s) oc_str16; - // extern fn oc_str16_push_slice(oc_arena* arena, oc_str16 s, u64 start, u64 end) oc_str16; - // extern fn oc_str16_list_push(oc_arena* arena, oc_str16_list* list, oc_str16 str) void; - // extern fn oc_str16_list_join(oc_arena* arena, oc_str16_list list) oc_str16; - // extern fn oc_str16_split(oc_arena* arena, oc_str16 str, oc_str16_list separators) oc_str16_list; - // extern fn oc_str32_from_buffer(u64 len, u32* buffer) oc_str32; - // extern fn oc_str32_slice(oc_str32 s, u64 start, u64 end) oc_str32; - - // extern fn oc_str32_push_buffer(oc_arena* arena, u64 len, u32* buffer) oc_str32; - // extern fn oc_str32_push_copy(oc_arena* arena, oc_str32 s) oc_str32; - // extern fn oc_str32_push_slice(oc_arena* arena, oc_str32 s, u64 start, u64 end) oc_str32; - // extern fn oc_str32_list_push(oc_arena* arena, oc_str32_list* list, oc_str32 str) void; - // extern fn oc_str32_list_join(oc_arena* arena, oc_str32_list list) oc_str32; - // extern fn oc_str32_split(oc_arena* arena, oc_str32 str, oc_str32_list separators) oc_str32_list; - - pub fn fromSlice(str: []const CharType) Self { + pub fn fromSlice(str: []const CharType) Str { return .{ .ptr = @constCast(str.ptr), .len = str.len, }; } - pub fn slice(self: *const Self) []CharType { - if (self.ptr) |p| { - return p[0..self.len]; + pub fn slice(str: *const Str) []CharType { + if (str.ptr) |p| { + return p[0..str.len]; } return &[_]CharType{}; } - pub fn sliceInner(self: *const Self, start: u64, end: u64) []CharType { - if (self.ptr) |p| { + pub fn sliceInner(str: *const Str, start: u64, end: u64) []CharType { + if (str.ptr) |p| { assert(start <= end, "{}.sliceLen: start <= end", .{typename()}, @src()); - assert(end <= self.len, "{}.sliceLen: end <= self.len", .{typename()}, @src()); + assert(end <= str.len, "{}.sliceLen: end <= str.len", .{typename()}, @src()); return p[start..end]; } return &[_]CharType{}; } - pub fn fromBuffer(len: u64, buffer: ?[]CharType) Self { + pub fn fromBuffer(len: u64, buffer: ?[]CharType) Str { return .{ .ptr = buffer, .len = @intCast(len), }; } - // pub fn cmp(a: *const Self, b: *const Self) std.math.Order { - // if (CharType != u8) { - // @compileError("cmp() is only supported for Str8"); - // } - // const value = strncmp(a.ptr, b.ptr, std.math.min(a.len, b.len)); + pub fn pushBuffer(arena: *Arena, buffer: []u8) Str { + var str: Str = undefined; + str.len = buffer.len; + str.ptr = arena.pushArray(CharType, buffer.len + 1); + @memcpy(str.ptr[0..buffer.len], buffer); + str.ptr[buffer.len] = 0; + return str; + } + + pub fn pushCopy(str: *const Str, arena: *Arena) Str { + return pushBuffer(arena, str.ptr[0..str.len]); + } + + pub fn pushSlice(str: *const Str, arena: *Arena, start: usize, end: usize) Str { + return pushBuffer(arena, str.ptr[start..end]); + } + + pub fn pushf(arena: *Arena, format: []const u8, args: anytype) Str { + if (CharType != u8) { + @compileError("pushf() is only supported for Str8"); + } + + var str: Str = undefined; + str.len = @intCast(std.fmt.count(format, args)); + str.ptr = arena.pushArray(CharType, str.len + 1); + _ = std.fmt.bufPrintZ(str.ptr[0 .. str.len + 1], format, args) catch unreachable; + return str; + } - // } // TODO + // pub fn split() void; + + pub fn cmp(a: *const Str, b: *const Str) std.math.Order { + if (CharType != u8) { + @compileError("cmp() is only supported for Str8"); + } + const value = strncmp(a.ptr, b.ptr, std.math.min(a.len, b.len)); + if (value < 0) { + return .lt; + } else if (value == 0) { + return .eq; + } else { + return .gt; + } + } fn typename() []const u8 { return switch (CharType) { @@ -318,136 +463,6 @@ pub const Str8List = stringListType(Str8); pub const Str16List = stringListType(Str8); pub const Str32List = stringListType(Str8); -// pub const Str8 = extern struct { -// ptr: ?[*:0]u8, -// len: usize, - -// pub fn fromSlice(slice: [:0]const u8) Str8 { -// return .{ -// ptr: @constCast(slice.ptr), -// len: slice.len, -// }; -// } -// }; - -// typedef struct oc_str8 -// { -// char* ptr; -// size_t len; -// } oc_str8; - -// #define OC_STR8(s) ((oc_str8){ .ptr = (char*)s, .len = (s) ? strlen(s) : 0 }) - -//NOTE: this only works with string literals, but is sometimes necessary to generate compile-time constants -// #define OC_STR8_LIT(s) \ -// { \ -// (char*)(s), sizeof(s) - 1 \ -// } - -// #define oc_str8_lp(s) ((s).len), ((s).ptr) -// #define oc_str8_ip(s) (int)oc_str8_lp(s) - -// ORCA_API oc_str8 oc_str8_from_buffer(u64 len, char* buffer); -// ORCA_API oc_str8 oc_str8_slice(oc_str8 s, u64 start, u64 end); - -// ORCA_API oc_str8 oc_str8_push_buffer(oc_arena* arena, u64 len, char* buffer); -// ORCA_API oc_str8 oc_str8_push_cstring(oc_arena* arena, const char* str); -// ORCA_API oc_str8 oc_str8_push_copy(oc_arena* arena, oc_str8 s); -// ORCA_API oc_str8 oc_str8_push_slice(oc_arena* arena, oc_str8 s, u64 start, u64 end); - -// ORCA_API oc_str8 oc_str8_pushfv(oc_arena* arena, const char* format, va_list args); -// ORCA_API oc_str8 oc_str8_pushf(oc_arena* arena, const char* format, ...); - -// ORCA_API int oc_str8_cmp(oc_str8 s1, oc_str8 s2); - -// ORCA_API char* oc_str8_to_cstring(oc_arena* arena, oc_str8 string); - -// typedef struct oc_str8_elt -// { -// oc_list_elt listElt; -// oc_str8 string; -// } oc_str8_elt; - -// typedef struct oc_str8_list -// { -// oc_list list; -// u64 eltCount; -// u64 len; -// } oc_str8_list; - -// ORCA_API void oc_str8_list_push(oc_arena* arena, oc_str8_list* list, oc_str8 str); -// ORCA_API void oc_str8_list_pushf(oc_arena* arena, oc_str8_list* list, const char* format, ...); - -// ORCA_API oc_str8 oc_str8_list_collate(oc_arena* arena, oc_str8_list list, oc_str8 prefix, oc_str8 separator, oc_str8 postfix); -// ORCA_API oc_str8 oc_str8_list_join(oc_arena* arena, oc_str8_list list); -// ORCA_API oc_str8_list oc_str8_split(oc_arena* arena, oc_str8 str, oc_str8_list separators); - -// //---------------------------------------------------------------------------------- -// // [STRINGS] u16 strings -// //---------------------------------------------------------------------------------- -// typedef struct oc_str16 -// { -// u16* ptr; -// size_t len; -// } oc_str16; - -// ORCA_API oc_str16 oc_str16_from_buffer(u64 len, u16* buffer); -// ORCA_API oc_str16 oc_str16_slice(oc_str16 s, u64 start, u64 end); - -// ORCA_API oc_str16 oc_str16_push_buffer(oc_arena* arena, u64 len, u16* buffer); -// ORCA_API oc_str16 oc_str16_push_copy(oc_arena* arena, oc_str16 s); -// ORCA_API oc_str16 oc_str16_push_slice(oc_arena* arena, oc_str16 s, u64 start, u64 end); - -// typedef struct oc_str16_elt -// { -// oc_list_elt listElt; -// oc_str16 string; -// } oc_str16_elt; - -// typedef struct oc_str16_list -// { -// oc_list list; -// u64 eltCount; -// u64 len; -// } oc_str16_list; - -// ORCA_API void oc_str16_list_push(oc_arena* arena, oc_str16_list* list, oc_str16 str); -// ORCA_API oc_str16 oc_str16_list_join(oc_arena* arena, oc_str16_list list); -// ORCA_API oc_str16_list oc_str16_split(oc_arena* arena, oc_str16 str, oc_str16_list separators); - -// //---------------------------------------------------------------------------------- -// // [STRINGS] u32 strings -// //---------------------------------------------------------------------------------- -// typedef struct oc_str32 -// { -// u32* ptr; -// size_t len; -// } oc_str32; - -// ORCA_API oc_str32 oc_str32_from_buffer(u64 len, u32* buffer); -// ORCA_API oc_str32 oc_str32_slice(oc_str32 s, u64 start, u64 end); - -// ORCA_API oc_str32 oc_str32_push_buffer(oc_arena* arena, u64 len, u32* buffer); -// ORCA_API oc_str32 oc_str32_push_copy(oc_arena* arena, oc_str32 s); -// ORCA_API oc_str32 oc_str32_push_slice(oc_arena* arena, oc_str32 s, u64 start, u64 end); - -// typedef struct oc_str32_elt -// { -// oc_list_elt listElt; -// oc_str32 string; -// } oc_str32_elt; - -// typedef struct oc_str32_list -// { -// oc_list list; -// u64 eltCount; -// u64 len; -// } oc_str32_list; - -// ORCA_API void oc_str32_list_push(oc_arena* arena, oc_str32_list* list, oc_str32 str); -// ORCA_API oc_str32 oc_str32_list_join(oc_arena* arena, oc_str32_list list); -// ORCA_API oc_str32_list oc_str32_split(oc_arena* arena, oc_str32 str, oc_str32_list separators); - //------------------------------------------------------------------------------------------ // [UTF8] //------------------------------------------------------------------------------------------ @@ -1402,6 +1417,7 @@ pub const Surface = extern struct { extern fn oc_surface_contents_scaling(surface: Surface) Vec2; extern fn oc_surface_bring_to_front(surface: Surface) void; extern fn oc_surface_send_to_back(surface: Surface) void; + // TODO // extern fn oc_surface_render_commands( // surface: Surface, // color: Color, @@ -1616,6 +1632,18 @@ pub const circleFill = oc_circle_fill; pub const circleStroke = oc_circle_stroke; pub const arc = oc_arc; +//------------------------------------------------------------------------------------------ +// [GRAPHICS]: GLES +//------------------------------------------------------------------------------------------ + +// TODO + +//------------------------------------------------------------------------------------------ +// [UI]: GLES +//------------------------------------------------------------------------------------------ + +// TODO + //------------------------------------------------------------------------------------------ // [FILE IO] basic API //------------------------------------------------------------------------------------------ -- 2.25.1 From 7a91ba471ed1828aac35d44cc8efc0134209a714 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Mon, 25 Sep 2023 21:55:45 -0400 Subject: [PATCH 11/24] zig-sample: fix build.zig to use correct cpu feature set --- samples/zig-sample/build.bat | 22 ------- samples/zig-sample/build.zig | 119 ++++++++++++++++++----------------- 2 files changed, 62 insertions(+), 79 deletions(-) delete mode 100644 samples/zig-sample/build.bat diff --git a/samples/zig-sample/build.bat b/samples/zig-sample/build.bat deleted file mode 100644 index fb08934..0000000 --- a/samples/zig-sample/build.bat +++ /dev/null @@ -1,22 +0,0 @@ -@echo off - -:: compile wasm module -set ORCA_DIR=..\.. -set STDLIB_DIR=%ORCA_DIR%\src\libc-shim - -set wasmFlags=--target=wasm32^ - --no-standard-libraries ^ - -mbulk-memory ^ - -g -O2 ^ - -D__ORCA__ ^ - -Wl,--no-entry ^ - -Wl,--export-dynamic ^ - -Wl,--relocatable ^ - -isystem %STDLIB_DIR%\include ^ - -I%ORCA_DIR%\src ^ - -I%ORCA_DIR%\src\ext - -clang %wasmFlags% -o .\liborca.a ..\..\src\orca.c ..\..\src\libc-shim\src\*.c -IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL% - -zig build bundle diff --git a/samples/zig-sample/build.zig b/samples/zig-sample/build.zig index 1ee8cd3..b346daa 100644 --- a/samples/zig-sample/build.zig +++ b/samples/zig-sample/build.zig @@ -1,4 +1,5 @@ const std = @import("std"); +const builtin = @import("builtin"); fn addSourceString(str: []const u8, strings: *std.ArrayList(u8), sources: *std.ArrayList([]const u8)) !void { var begin = strings.items.len; @@ -9,67 +10,63 @@ fn addSourceString(str: []const u8, strings: *std.ArrayList(u8), sources: *std.A pub fn build(b: *std.Build) !void { const optimize = b.standardOptimizeOption(.{}); - const wasm_target = std.zig.CrossTarget{ + var wasm_target = std.zig.CrossTarget{ .cpu_arch = .wasm32, .os_tag = .freestanding, }; + wasm_target.cpu_features_add.addFeature(@intFromEnum(std.Target.wasm.Feature.bulk_memory)); - //NOTE(reuben) - Ideally we would build the orca wasm lib and link it all within build.zig, but there - // seems to be a bug where the -mbulk-memory flag is ignored and memory.copy and - // memory.fill instructions aren't generated, leading the memcpy and memset instructions - // to become infinitely recursive, crashing the program. So for now we build the orca - // wasm lib with clang and link it in here. + var orca_source_strings = try std.ArrayList(u8).initCapacity(b.allocator, 1024 * 4); + var orca_sources = try std.ArrayList([]const u8).initCapacity(b.allocator, 128); + defer orca_source_strings.deinit(); + defer orca_sources.deinit(); - // var orca_source_strings = try std.ArrayList(u8).initCapacity(b.allocator, 1024 * 4); - // var orca_sources = try std.ArrayList([]const u8).initCapacity(b.allocator, 128); - // defer orca_source_strings.deinit(); - // defer orca_sources.deinit(); + { + try addSourceString("../../src/orca.c", &orca_source_strings, &orca_sources); - // { - // try addSourceString("../../src/orca.c", &orca_source_strings, &orca_sources); + var libc_shim_dir = try std.fs.cwd().openIterableDir("../../src/libc-shim/src", .{}); + var walker = try libc_shim_dir.walk(b.allocator); + defer walker.deinit(); - // var libc_shim_dir = try std.fs.cwd().openIterableDir("../../src/libc-shim/src", .{}); - // var walker = try libc_shim_dir.walk(b.allocator); - // defer walker.deinit(); + while (try walker.next()) |entry| { + const extension = std.fs.path.extension(entry.path); + if (std.mem.eql(u8, extension, ".c")) { + var path_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; + var abs_path = try libc_shim_dir.dir.realpath(entry.path, &path_buffer); + try addSourceString(abs_path, &orca_source_strings, &orca_sources); + } + } + } - // while (try walker.next()) |entry| { - // const extension = std.fs.path.extension(entry.path); - // if (std.mem.eql(u8, extension, ".c")) { - // var path_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; - // var abs_path = try libc_shim_dir.dir.realpath(entry.path, &path_buffer); - // try addSourceString(abs_path, &orca_source_strings, &orca_sources); - // // std.debug.print("adding libc shim source: {s}\n", .{abs_path}); - // } - // } - // } + const orca_compile_opts = [_][]const u8{ + "-D__ORCA__", + "--no-standard-libraries", + "-fno-builtin", + "-g", + "-O2", + "-mexec-model=reactor", + "-fno-sanitize=undefined", + "-isystem ../../src/libc-shim/include", + "-I../../src", + "-I../../src/ext", + "-Wl,--export-dynamic", + }; - // const orca_compile_opts = [_][]const u8{ - // "-D__ORCA__", - // "--no-standard-libraries", - // "-fno-builtin", - // "-isystem ../../src/libc-shim/include", - // "-I../../src", - // "-I../../ext", - // "-O2", - // "-mbulk-memory", - // "-Wl,--no-entry", - // "-Wl,--export-all", - // "-g", - // }; - - // var orca_lib = b.addStaticLibrary(.{ - // .name = "orca", - // .target = wasm_target, - // .optimize = optimize, - // }); - // orca_lib.rdynamic = true; - // orca_lib.addIncludePath(.{ .path = "../../src" }); - // orca_lib.addIncludePath(.{ .path = "../../src/libc-shim/include" }); - // orca_lib.addIncludePath(.{ .path = "../../ext" }); - // orca_lib.addCSourceFiles(orca_sources.items, &orca_compile_opts); - // b.installArtifact(orca_lib); + var orca_lib = b.addStaticLibrary(.{ + .name = "orca", + .target = wasm_target, + .optimize = optimize, + }); + orca_lib.rdynamic = true; + orca_lib.addIncludePath(.{ .path = "../../src" }); + orca_lib.addIncludePath(.{ .path = "../../src/libc-shim/include" }); + orca_lib.addIncludePath(.{ .path = "../../src/ext" }); + orca_lib.addCSourceFiles(orca_sources.items, &orca_compile_opts); // builds the wasm module out of the orca C sources and main.zig + const orca_module: *std.Build.Module = b.createModule(.{ + .source_file = .{ .path = "../../src/orca.zig" }, + }); const wasm_lib = b.addSharedLibrary(.{ .name = "module", .root_source_file = .{ .path = "src/main.zig" }, @@ -77,17 +74,11 @@ pub fn build(b: *std.Build) !void { .optimize = optimize, }); wasm_lib.rdynamic = true; - - const orca_module: *std.Build.Module = b.createModule(.{ - .source_file = .{ .path = "../../src/orca.zig" }, - }); wasm_lib.addIncludePath(.{ .path = "../../src" }); wasm_lib.addIncludePath(.{ .path = "../../src/libc-shim/include" }); wasm_lib.addIncludePath(.{ .path = "../../ext" }); wasm_lib.addModule("orca", orca_module); - // wasm_lib.linkLibrary(orca_lib); - wasm_lib.addLibraryPath(.{ .path = "." }); - wasm_lib.linkSystemLibrary("orca"); + wasm_lib.linkLibrary(orca_lib); // copies the wasm module into zig-out/wasm_lib b.installArtifact(wasm_lib); @@ -99,4 +90,18 @@ pub fn build(b: *std.Build) !void { const bundle_step = b.step("bundle", "Runs the orca toolchain to bundle the wasm module into an orca app."); bundle_step.dependOn(&bundle_cmd.step); + + // Runs the app + const run_cmd_windows = [_][]const u8{"Sample/bin/Sample.exe"}; + const run_cmd_macos = [_][]const u8{ "open", "Sample.app" }; + const run_cmd_str: []const []const u8 = switch (builtin.os.tag) { + .windows => &run_cmd_windows, + .macos => &run_cmd_macos, + else => @compileError("unsupported platform"), + }; + var run_cmd = b.addSystemCommand(run_cmd_str); + run_cmd.step.dependOn(&bundle_cmd.step); + + const run_step = b.step("run", "Runs the bundled app using the Orca runtime."); + run_step.dependOn(&run_cmd.step); } -- 2.25.1 From 1af327d35355839e680cd60d043606d6f640fc43 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Mon, 25 Sep 2023 22:07:46 -0400 Subject: [PATCH 12/24] zig-sample: add README --- samples/zig-sample/README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 samples/zig-sample/README.md diff --git a/samples/zig-sample/README.md b/samples/zig-sample/README.md new file mode 100644 index 0000000..51ac4f2 --- /dev/null +++ b/samples/zig-sample/README.md @@ -0,0 +1,16 @@ +### Build and run +Zig version `0.11.0` or greater is required for this sample. To build and run: +``` +orca dev build-runtime +zig build run +``` + +These two commands build the runtime - the native host executable - and the sample as a loadable wasm library, then runs it. To only build the sample without running it, use `zig build bundle`. + +### Warning +Zig integration is still in-progress and experimental. You may encounter bugs since not all the bound APIs have been tested extensively - this sample is currently the only code doing so! Additionally, not all APIs have zig coverage yet, notably: +* `oc_str8`, `oc_str16`, `oc_str32`: partial coverage +* `oc_ui`: none +* `gles`: none + +Please report any bugs you find on the Handmade discord in the #orca channel. -- 2.25.1 From d46c00f0ec91567781d785a31803b61e037062de Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Mon, 25 Sep 2023 22:57:56 -0400 Subject: [PATCH 13/24] zig bindings: fixup some string list types --- src/orca.zig | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/src/orca.zig b/src/orca.zig index 9be2ad6..dff51f7 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -436,32 +436,17 @@ fn stringType(comptime CharType: type) type { }; } -fn stringListEltType(comptime StringType: type) type { - return extern struct { - list_elt: ListElt, - string: StringType, - }; -} - -fn stringListType() type { - return extern struct { - list: List, - elt_count: u64, - len: u64, - }; -} - pub const Str8 = stringType(u8); pub const Str16 = stringType(u16); pub const Str32 = stringType(u32); -pub const Str8ListElt = stringListEltType(Str8); -pub const Str16ListElt = stringListEltType(Str16); -pub const Str32ListElt = stringListEltType(Str32); +pub const Str8ListElt = Str8.StrListElt; +pub const Str16ListElt = Str16.StrListElt; +pub const Str32ListElt = Str32.StrListElt; -pub const Str8List = stringListType(Str8); -pub const Str16List = stringListType(Str8); -pub const Str32List = stringListType(Str8); +pub const Str8List = Str8.StrList; +pub const Str16List = Str16.StrList; +pub const Str32List = Str32.StrList; //------------------------------------------------------------------------------------------ // [UTF8] -- 2.25.1 From 9c4e2125c18f963168e8a7a715bc6d6a988e508f Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Thu, 28 Sep 2023 22:57:06 -0400 Subject: [PATCH 14/24] fleshing out oc_str* zig bindings --- samples/zig-sample/README.md | 10 +- samples/zig-sample/src/main.c | 190 ----------------- samples/zig-sample/src/main.zig | 55 ++++- src/orca.zig | 367 +++++++++++++++++++++++++------- 4 files changed, 346 insertions(+), 276 deletions(-) delete mode 100644 samples/zig-sample/src/main.c diff --git a/samples/zig-sample/README.md b/samples/zig-sample/README.md index 51ac4f2..99b973c 100644 --- a/samples/zig-sample/README.md +++ b/samples/zig-sample/README.md @@ -8,9 +8,7 @@ zig build run These two commands build the runtime - the native host executable - and the sample as a loadable wasm library, then runs it. To only build the sample without running it, use `zig build bundle`. ### Warning -Zig integration is still in-progress and experimental. You may encounter bugs since not all the bound APIs have been tested extensively - this sample is currently the only code doing so! Additionally, not all APIs have zig coverage yet, notably: -* `oc_str8`, `oc_str16`, `oc_str32`: partial coverage -* `oc_ui`: none -* `gles`: none - -Please report any bugs you find on the Handmade discord in the #orca channel. +Zig bindings for Orca are in-progress and experimental. You may encounter bugs since not all the bound APIs have been tested extensively - this sample is currently the only code doing so! Additionally, not all APIs have zig coverage yet, notably: +* `oc_ui` +* `gles` +As more APIs get tested, there is a possibility of breaking changes. Please report any bugs you find on the Handmade discord in the #orca channel. diff --git a/samples/zig-sample/src/main.c b/samples/zig-sample/src/main.c deleted file mode 100644 index fefd5ee..0000000 --- a/samples/zig-sample/src/main.c +++ /dev/null @@ -1,190 +0,0 @@ -#include - -#include - -#define ARRAYSIZE(array) (sizeof(array) / sizeof(array[0])) - -oc_vec2 frameSize = { 100, 100 }; - -oc_surface surface; -oc_canvas canvas; -oc_font font; - -f64 lastSeconds = 0; - -oc_mat2x3 mat_rotation(f32 radians); -oc_mat2x3 mat_translation(f32 x, f32 y); -oc_mat2x3 mat_transform(f32 x, f32 y, f32 radians); -f32 minf(f32 a, f32 b); - -ORCA_EXPORT void oc_on_init(void) -{ - oc_window_set_title(OC_STR8("clock")); - oc_runtime_window_set_size((oc_vec2){ .x = 400, .y = 400 }); - - surface = oc_surface_canvas(); - canvas = oc_canvas_create(); - - { - oc_str8 filename = OC_STR8("/segoeui.ttf"); - oc_file file = oc_file_open(filename, OC_FILE_ACCESS_READ, 0); - if(oc_file_last_error(file) != OC_IO_OK) - { - oc_log_error("Couldn't open file %s\n", oc_str8_to_cstring(oc_scratch(), filename)); - } - u64 size = oc_file_size(file); - char* buffer = oc_arena_push(oc_scratch(), size); - oc_file_read(file, size, buffer); - oc_file_close(file); - - oc_unicode_range ranges[5] = { OC_UNICODE_BASIC_LATIN, - OC_UNICODE_C1_CONTROLS_AND_LATIN_1_SUPPLEMENT, - OC_UNICODE_LATIN_EXTENDED_A, - OC_UNICODE_LATIN_EXTENDED_B, - OC_UNICODE_SPECIALS }; - font = oc_font_create_from_memory(oc_str8_from_buffer(size, buffer), 5, ranges); - } - - oc_arena_clear(oc_scratch()); -} - -ORCA_EXPORT void oc_on_resize(u32 width, u32 height) -{ - frameSize.x = width; - frameSize.y = height; -} - -ORCA_EXPORT void oc_on_frame_refresh(void) -{ - const oc_str8 clock_number_strings[] = { - OC_STR8("12"), - OC_STR8("1"), - OC_STR8("2"), - OC_STR8("3"), - OC_STR8("4"), - OC_STR8("5"), - OC_STR8("6"), - OC_STR8("7"), - OC_STR8("8"), - OC_STR8("9"), - OC_STR8("10"), - OC_STR8("11"), - }; - - oc_canvas_set_current(canvas); - oc_surface_select(surface); - oc_set_color_rgba(.05, .05, .05, 1); - oc_clear(); - - const f64 timestampSecs = oc_clock_time(OC_CLOCK_DATE); - const f64 secs = fmod(timestampSecs, 60); - const f64 minutes = fmod(timestampSecs, 60 * 60) / 60; - const f64 hours = fmod(timestampSecs, 60 * 60 * 24) / (60 * 60); - const f64 hoursAs12Format = fmod(hours, 12.0); - - if(lastSeconds != floor(secs)) - { - lastSeconds = floor(secs); - oc_log_info("current time: %.0f:%.0f:%.0f", floor(hours), floor(minutes), floor(secs)); - } - - const f32 secondsRotation = (M_PI * 2) * (secs / 60.0) - (M_PI / 2); - const f32 minutesRotation = (M_PI * 2) * (minutes / 60.0) - (M_PI / 2); - const f32 hoursRotation = (M_PI * 2) * (hoursAs12Format / 12.0) - (M_PI / 2); - - const f32 centerX = frameSize.x / 2; - const f32 centerY = frameSize.y / 2; - const f32 clockRadius = minf(frameSize.x, frameSize.y) * 0.5f * 0.85f; - - const f32 DEFAULT_CLOCK_RADIUS = 260; - const f32 uiScale = clockRadius / DEFAULT_CLOCK_RADIUS; - - const f32 fontSize = 26 * uiScale; - oc_set_font(font); - oc_set_font_size(fontSize); - - // clock backing - oc_set_color_rgba(1, 1, 1, 1); - oc_circle_fill(centerX, centerY, clockRadius); - - // clock face - for(int i = 0; i < ARRAYSIZE(clock_number_strings); ++i) - { - const f32 rot = -i * ((M_PI * 2) / 12.0f) + (M_PI / 2); - const f32 sinRot = sinf(rot); - const f32 cosRot = cosf(rot); - - oc_rect textRect = oc_text_bounding_box(font, fontSize, clock_number_strings[i]); - textRect.h -= 10 * uiScale; // oc_text_bounding_box height doesn't seem to be a tight fit around the glyph - - const f32 x = cosRot * clockRadius * 0.8f - (textRect.w / 2) + centerX; - const f32 y = -sinRot * clockRadius * 0.8f + (textRect.h / 2) + centerY; - - oc_set_color_rgba(0.2, 0.2, 0.2, 1); - oc_move_to(x, y); - oc_text_outlines(clock_number_strings[i]); - oc_fill(); - } - - oc_matrix_push(mat_transform(centerX, centerY, hoursRotation)); - { - oc_set_color_rgba(.2, 0.2, 0.2, 1); - oc_rounded_rectangle_fill(0, -7.5 * uiScale, clockRadius * 0.5f, 15 * uiScale, 5 * uiScale); - - oc_matrix_pop(); - } - - oc_matrix_push(mat_transform(centerX, centerY, minutesRotation)); - { - oc_set_color_rgba(.2, 0.2, 0.2, 1); - oc_rounded_rectangle_fill(0, -5 * uiScale, clockRadius * 0.7f, 10 * uiScale, 5 * uiScale); - - oc_matrix_pop(); - } - - oc_matrix_push(mat_transform(centerX, centerY, secondsRotation)); - { - oc_set_color_rgba(1, 0.2, 0.2, 1); - oc_rounded_rectangle_fill(0, -2.5 * uiScale, clockRadius * 0.8f, 5 * uiScale, 5 * uiScale); - - oc_matrix_pop(); - } - - oc_set_color_rgba(.2, 0.2, 0.2, 1); - oc_circle_fill(centerX, centerY, 10 * uiScale); - - oc_render(surface, canvas); - oc_surface_present(surface); -} - -oc_mat2x3 mat_rotation(f32 radians) -{ - const f32 sinRot = sinf(radians); - const f32 cosRot = cosf(radians); - oc_mat2x3 rot = { - cosRot, -sinRot, 0, - sinRot, cosRot, 0 - }; - return rot; -} - -oc_mat2x3 mat_translation(f32 x, f32 y) -{ - oc_mat2x3 translation = { - 1, 0, x, - 0, 1, y - }; - return translation; -} - -oc_mat2x3 mat_transform(f32 x, f32 y, f32 radians) -{ - oc_mat2x3 rotation = mat_rotation(radians); - oc_mat2x3 translation = mat_translation(x, y); - return oc_mat2x3_mul_m(translation, rotation); -} - -f32 minf(f32 a, f32 b) -{ - return (a < b) ? a : b; -} diff --git a/samples/zig-sample/src/main.zig b/samples/zig-sample/src/main.zig index eb47cc6..8297124 100644 --- a/samples/zig-sample/src/main.zig +++ b/samples/zig-sample/src/main.zig @@ -3,6 +3,7 @@ const oc = @import("orca"); const Vec2 = oc.Vec2; const Mat2x3 = oc.Mat2x3; +const Str8 = oc.Str8; var surface: oc.Surface = undefined; var canvas: oc.Canvas = undefined; @@ -27,7 +28,7 @@ export fn oc_on_init() void { oc.assert(oc.Canvas.nil().isNil() == true, "nil canvas should be nil", .{}, @src()); oc.assert(canvas.isNil() == false, "created canvas should not be nil", .{}, @src()); - var ranges = oc.UnicodeRange.range(&[_]oc.UnicodeRange.Enum{ + const ranges = oc.UnicodeRange.range(&[_]oc.UnicodeRange.Enum{ .BasicLatin, .C1ControlsAndLatin1Supplement, .LatinExtendedA, @@ -37,7 +38,7 @@ export fn oc_on_init() void { font = oc.Font.createFromPath("/zig.ttf", &ranges); oc.assert(font.isNil() == false, "created font should not be nil", .{}, @src()); - orca_image = oc.Image.createFromPath(surface, oc.Str8.fromSlice("/orca_jumping.jpg"), false); + orca_image = oc.Image.createFromPath(surface, Str8.fromSlice("/orca_jumping.jpg"), false); oc.assert(orca_image.isNil() == false, "created image should not be nil", .{}, @src()); } @@ -129,14 +130,28 @@ export fn oc_on_frame_refresh() void { } { - const str = oc.Str8.fromSlice("Hello from Zig!"); + var scratch_scope = oc.Arena.scratchBegin(); + defer scratch_scope.end(); + + var scratch: *oc.Arena = scratch_scope.arena; + + var str1: Str8 = Str8.collate(scratch, &[_][]const u8{ "Hello", "from", "Zig!" }, ">> ", " ", " <<") catch |e| fatal(e, @src()); + + var str2_list = oc.Str8List.init(); + var tmp = Str8.fromSlice("All"); + str2_list.push(tmp, scratch) catch |e| fatal(e, @src()); + str2_list.pushSlice("your", scratch) catch |e| fatal(e, @src()); + str2_list.pushSlice("base!!", scratch) catch |e| fatal(e, @src()); + var str2: Str8 = str2_list.collate(scratch, Str8.fromSlice("<< "), Str8.fromSlice("-"), Str8.fromSlice(" >>")) catch |e| fatal(e, @src()); + const font_size = 18; - const text_rect = font.textMetrics(font_size, str).ink; + const text_metrics = font.textMetrics(font_size, str1); + const text_rect = text_metrics.ink; const center_x = frame_size.x / 2; const text_begin_x = center_x - text_rect.Flat.w / 2; - Mat2x3.push(Mat2x3.translate(text_begin_x, 150)); + Mat2x3.push(Mat2x3.translate(text_begin_x, 100)); defer Mat2x3.pop(); oc.setColorRgba(1.0, 0.05, 0.05, 1.0); @@ -144,7 +159,30 @@ export fn oc_on_frame_refresh() void { oc.setFont(font); oc.setFontSize(font_size); oc.moveTo(0, 0); - oc.textOutlines(str); + oc.textOutlines(str1); + oc.moveTo(0, 35); + oc.textOutlines(str2); + oc.fill(); + } + + { + var scratch_scope = oc.Arena.scratchBegin(); + defer scratch_scope.end(); + + var scratch: *oc.Arena = scratch_scope.arena; + + var separators = oc.Str8List.init(); + separators.pushSlice(" ", scratch) catch |e| fatal(e, @src()); + separators.pushSlice("|", scratch) catch |e| fatal(e, @src()); + separators.pushSlice("-", scratch) catch |e| fatal(e, @src()); + + const big_string = Str8.fromSlice("This is |a one-word string that | has no spaces in it"); + var strings: oc.Str8List = big_string.split(scratch, separators) catch |e| fatal(e, @src()); + var collated = strings.join(scratch) catch |e| fatal(e, @src()); + + oc.setFontSize(12); + oc.moveTo(0, 170); + oc.textOutlines(collated); oc.fill(); } @@ -171,3 +209,8 @@ export fn oc_on_frame_refresh() void { export fn oc_on_terminate() void { oc.log.info("byebye {}", .{counter}, @src()); } + +fn fatal(err: anyerror, source: std.builtin.SourceLocation) noreturn { + oc.abort("Caught fatal {}", .{err}, source); + unreachable; +} diff --git a/src/orca.zig b/src/orca.zig index dff51f7..566aea4 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -1,4 +1,5 @@ const std = @import("std"); +const AllocError = std.mem.Allocator.Error; //------------------------------------------------------------------------------------------ // [PLATFORM] @@ -23,14 +24,21 @@ pub const log = struct { Info, }; - pub const Output = opaque {}; + pub const Output = opaque { + extern var OC_LOG_DEFAULT_OUTPUT: ?*Output; + extern fn oc_log_set_output(output: *Output) void; + + pub inline fn default() ?*Output { + return OC_LOG_DEFAULT_OUTPUT; + } + + const set = oc_log_set_output; + }; - extern var OC_LOG_DEFAULT_OUTPUT: ?*Output; extern fn oc_log_set_level(level: Level) void; - extern fn oc_log_set_output(output: *Output) void; extern fn oc_log_ext(level: Level, function: [*]const u8, file: [*]const u8, line: c_int, fmt: [*]const u8, ...) void; - const DEFAULT_OUTPUT = OC_LOG_DEFAULT_OUTPUT; + const setLevel = oc_log_set_level; pub fn info(comptime fmt: []const u8, args: anytype, source: std.builtin.SourceLocation) void { ext(Level.Info, fmt, args, source); @@ -66,7 +74,7 @@ pub fn assert(condition: bool, comptime fmt: []const u8, args: anytype, source: _ = std.fmt.bufPrintZ(&format_buf, fmt, args) catch 0; var line: c_int = @intCast(source.line); - oc_assert_fail(source.file.ptr, source.fn_name.ptr, line, "", format_buf[0..].ptr); + oc_assert_fail(source.file.ptr, source.fn_name.ptr, line, "assertion failed", format_buf[0..].ptr); } } @@ -85,6 +93,28 @@ pub fn abort(comptime fmt: []const u8, args: anytype, source: std.builtin.Source pub const ListElt = extern struct { prev: ?*ListElt, next: ?*ListElt, + + pub fn entry(self: *ListElt, comptime ParentType: type, comptime field_name_in_parent: []const u8) *ParentType { + return @fieldParentPtr(ParentType, field_name_in_parent, self); + } + + pub fn nextEntry(comptime ParentType: type, comptime field_name_in_parent: []const u8, elt_parent: *ParentType) ?*ParentType { + const elt: ?*ListElt = @field(elt_parent, field_name_in_parent); + if (elt.next) |next| { + return next.entry(ParentType, field_name_in_parent); + } + + return null; + } + + pub fn prevEntry(comptime ParentType: type, comptime field_name_in_parent: []const u8, elt_parent: *ParentType) ?*ParentType { + const elt: ?*ListElt = @field(elt_parent, field_name_in_parent); + if (elt.prev) |prev| { + return prev.entry(ParentType, field_name_in_parent); + } + + return null; + } }; pub const List = extern struct { @@ -110,22 +140,72 @@ pub const List = extern struct { return self.last; } - pub fn insert(self: *List, after_elt: *ListElt, elt: *ListElt) void { + pub fn firstEntry(self: *List, comptime EltParentType: type, comptime field_name_in_parent: []const u8) ?*EltParentType { + if (self.first) |elt| { + return elt.entry(EltParentType, field_name_in_parent); + } + return null; + } + + pub fn lastEntry(self: *List, comptime EltParentType: type, comptime field_name_in_parent: []const u8) ?*EltParentType { + if (self.last) |elt| { + return elt.entry(EltParentType, field_name_in_parent); + } + return null; + } + + const IterDirection = enum { + Forward, + Backward, + }; + + pub fn makeIter(comptime direction: IterDirection, comptime EltParentType: type, comptime field_name_in_parent: []const u8) type { + return struct { + const Self = @This(); + + item: ?*ListElt, + + pub fn next(self: *Self) ?*EltParentType { + if (self.item) |elt| { + var entry: *EltParentType = elt.entry(EltParentType, field_name_in_parent); + self.item = if (direction == .Forward) elt.next else elt.prev; + return entry; + } + return null; + } + }; + } + + pub fn iter(self: *const List, comptime EltParentType: type, comptime field_name_in_parent: []const u8) makeIter(.Forward, EltParentType, field_name_in_parent) { + const Iter = makeIter(.Forward, EltParentType, field_name_in_parent); + return Iter{ + .item = self.first, + }; + } + + pub fn iterReverse(self: *const List, comptime EltParentType: type, comptime field_name_in_parent: []const u8) makeIter(.Backward, EltParentType, field_name_in_parent) { + const Iter = makeIter(.Backward, EltParentType, field_name_in_parent); + return Iter{ + .item = self.last, + }; + } + + pub fn insert(self: *List, after_elt: ?*ListElt, elt: *ListElt) void { elt.prev = after_elt; elt.next = after_elt.next; - if (after_elt.next != null) { - after_elt.next.prev = elt; + if (after_elt.next) |elt_next| { + after_elt.next.prev = elt_next; } else { self.last = elt; } after_elt.next = elt; } - pub fn insertBefore(self: *List, before_elt: *ListElt, elt: *ListElt) void { + pub fn insertBefore(self: *List, before_elt: ?*ListElt, elt: *ListElt) void { elt.next = before_elt; elt.prev = before_elt.prev; - if (before_elt.prev != null) { - before_elt.prev.next = elt; + if (before_elt.prev) |elt_prev| { + before_elt.prev.next = elt_prev; } else { self.first = elt; } @@ -153,19 +233,25 @@ pub const List = extern struct { pub fn push(self: *List, elt: *ListElt) void { elt.next = self.first; elt.prev = null; - if (self.first != null) { - self.first.prev = elt; + if (self.first) |elt_first| { + elt_first.prev = elt; } else { self.last = elt; } self.first = elt; } - pub fn pop(self: *List) ListElt { - var elt: *ListElt = begin(self); - if (elt != end(self)) { - remove(self, elt); - return elt; + pub fn pop(self: *List) ?*ListElt { + if (self.begin()) |elt_begin| { + remove(self, elt_begin); + return elt_begin; + } + return null; + } + + pub fn popEntry(self: *List, comptime EltParentType: type, comptime field_name_in_parent: []const u8) ?*EltParentType { + if (self.pop()) |elt| { + return elt.entry(EltParentType, field_name_in_parent); } return null; } @@ -173,19 +259,18 @@ pub const List = extern struct { pub fn pushBack(self: *List, elt: *ListElt) void { elt.prev = self.last; elt.next = null; - if (self.last != null) { - self.last.next = elt; + if (self.last) |last_elt| { + last_elt.next = elt; } else { self.first = elt; } self.last = elt; } - pub fn popBack(self: *List) ListElt { - var elt: *ListElt = last(self); - if (elt != end(self)) { - remove(self, elt); - return elt; + pub fn popBack(self: *List) ?*ListElt { + if (self.last()) |last_elt| { + remove(self, last_elt); + return last_elt; } return null; } @@ -220,6 +305,20 @@ pub const ArenaChunk = extern struct { cap: u64, }; +pub const ArenaScope = extern struct { + arena: *Arena, + chunk: *ArenaChunk, + offset: u64, + + extern fn oc_arena_scope_end(scope: ArenaScope) void; + pub const end = oc_arena_scope_end; +}; + +pub const ArenaOptions = extern struct { + base: ?*BaseAllocator, + reserve: u64, +}; + pub const Arena = extern struct { base: ?*BaseAllocator, chunks: List, @@ -229,11 +328,10 @@ pub const Arena = extern struct { extern fn oc_arena_init_with_options(arena: *Arena, options: *ArenaOptions) void; extern fn oc_arena_cleanup(arena: *Arena) void; extern fn oc_arena_push(arena: *Arena, size: u64) ?[*]u8; + extern fn oc_arena_push_aligned(arena: *Arena, size: u64, alignment: u32) ?[*]u8; extern fn oc_arena_clear(arena: *Arena) void; extern fn oc_arena_scope_begin(arena: *Arena) ArenaScope; - extern fn oc_arena_scope_end(scope: ArenaScope) void; - extern fn oc_scratch() *Arena; extern fn oc_scratch_next(used: *Arena) *Arena; extern fn oc_scratch_begin() ArenaScope; extern fn oc_scratch_begin_next(used: *Arena) ArenaScope; @@ -249,50 +347,38 @@ pub const Arena = extern struct { return arena; } pub const deinit = oc_arena_cleanup; - pub fn push(arena: *Arena, size: u64) ?[]u8 { - if (oc_arena_push(arena, size)) |mem| { - return mem[0..size]; - } - return null; - } + pub const clear = oc_arena_clear; pub const scopeBegin = oc_arena_scope_begin; - pub const scopeEnd = oc_arena_scope_end; - pub fn pushType(arena: *Arena, comptime T: type) ?*T { - if (arena.push(@sizeOf(T))) |mem| { - std.debug.assert(mem.len >= @sizeOf(T)); - return @alignCast(@ptrCast(mem.ptr)); - } - - return null; + pub fn push(arena: *Arena, size: usize) AllocError![]u8 { + return arena.pushAligned(size, 1); } - pub fn pushArray(arena: *Arena, comptime T: type, count: u64) ?[]T { - if (arena.push(@sizeOf(T) * count)) |mem| { - std.debug.assert(mem.len >= @sizeOf(T) * count); - var items: [*]T = @alignCast(@ptrCast(mem.ptr)); - return items[0..count]; + pub fn pushAligned(arena: *Arena, size: usize, alignment: u32) AllocError![]u8 { + if (oc_arena_push_aligned(arena, size, alignment)) |mem| { + return mem[0..size]; } - return null; + return AllocError.OutOfMemory; + } + + pub fn pushType(arena: *Arena, comptime T: type) AllocError!*T { + var mem: []u8 = try arena.pushAligned(@sizeOf(T), @alignOf(T)); + assert(mem.len >= @sizeOf(T), "need at least {} bytes, but got {}", .{ mem.len, @sizeOf(T) }, @src()); + var p: *T = @alignCast(@ptrCast(mem.ptr)); + return p; + } + + pub fn pushArray(arena: *Arena, comptime T: type, count: usize) AllocError![]T { + var mem: []u8 = try arena.pushAligned(@sizeOf(T) * count, @alignOf(T)); + std.debug.assert(mem.len >= @sizeOf(T) * count); + var items: [*]T = @alignCast(@ptrCast(mem.ptr)); + return items[0..count]; } - pub const scratch = oc_scratch; pub const scratchNext = oc_scratch_next; pub const scratchBegin = oc_scratch_begin; pub const scratchBeginNext = oc_scratch_begin_next; - pub const scratchEnd = scopeEnd; -}; - -pub const ArenaScope = extern struct { - arena: ?*Arena, - chunk: ?*ArenaChunk, - offset: u64, -}; - -pub const ArenaOptions = extern struct { - base: ?*BaseAllocator, - reserve: u64, }; //------------------------------------------------------------------------------------------ @@ -319,25 +405,82 @@ fn stringType(comptime CharType: type) type { }; } - pub fn push(list: *StrList, str: *Str, arena: *Arena) void { - var elt: *StrListElt = arena.pushType(ListElt); + pub fn push(list: *StrList, str: Str, arena: *Arena) AllocError!void { + var elt: *StrListElt = try arena.pushType(StrListElt); elt.string = str; - list.append(elt.list_elt); + list.list.pushBack(&elt.list_elt); list.elt_count += 1; list.len += str.len; } - pub fn pushf(list: *StrList, arena: *Arena, comptime format: []const u8, args: anytype) Str { - var str = Str.pushf(arena, format, args); - list.push(str, arena); + pub fn pushSlice(list: *StrList, str: []const CharType, arena: *Arena) AllocError!void { + try list.push(Str.fromSlice(str), arena); } - // TODO - // pub fn join(list: *const StrList, arena: *Arena) Str; - // const empty = Str{ .ptr = null, .len = 0 }; - // return list.collate(arena, empty, empty, empty)); - // } - // pub fn collate(list: *StrList, arena: *Arena, prefix: Str, separator: Str, postfix: Str) Str; + pub fn pushf(list: *StrList, arena: *Arena, comptime format: []const u8, args: anytype) AllocError!Str { + var str = try Str.pushf(arena, format, args); + try list.list.push(str, arena); + } + + pub fn iter(list: *const StrList) List.makeIter(.Forward, StrListElt, "list_elt") { + return list.list.iter(StrListElt, "list_elt"); + } + + pub fn iterReverse(list: *const StrList) List.makeIter(.Backward, StrListElt, "list_elt") { + return list.list.iterReverse(StrListElt, "list_elt"); + } + + pub fn find(list: *const StrList, needle: *const Str) ?*StrListElt { + return list.findSlice(needle.slice()); + } + + pub fn findSlice(list: *const StrList, needle: []const CharType) ?*StrListElt { + var iterator = list.iter(); + while (iterator.next()) |elt_string| { + if (std.mem.eql(CharType, elt_string.string.slice(), needle)) { + return elt_string; + } + } + return null; + } + + pub fn contains(list: *const StrList, needle: *const Str) bool { + return list.findSlice(needle.slice()) != null; + } + + pub fn containsSlice(list: *const StrList, needle: []const CharType) bool { + return list.findSlice(needle) != null; + } + + pub fn join(list: *const StrList, arena: *Arena) AllocError!Str { + const empty = Str{ .ptr = null, .len = 0 }; + return try list.collate(arena, empty, empty, empty); + } + + pub fn collate(list: *const StrList, arena: *Arena, prefix: Str, separator: Str, postfix: Str) AllocError!Str { + var str: Str = undefined; + str.len = @intCast(prefix.len + list.len + (list.elt_count - 1) * separator.len + postfix.len); + str.ptr = (try arena.pushArray(CharType, str.len + 1)).ptr; + @memcpy(str.ptr.?[0..prefix.len], prefix.slice()); + + var offset = prefix.len; + + var iterator = list.iter(); + var index: usize = 0; + while (iterator.next()) |list_str| { + if (index > 0) { + @memcpy(str.ptr.?[offset .. offset + separator.len], separator.slice()); + offset += separator.len; + } + @memcpy(str.ptr.?[offset .. offset + list_str.string.len], list_str.string.slice()); + offset += list_str.string.len; + index += 1; + } + + @memcpy(str.ptr.?[offset .. offset + postfix.len], postfix.slice()); + str.ptr.?[str.len] = 0; + return str; + } }; const Str = @This(); @@ -408,8 +551,84 @@ fn stringType(comptime CharType: type) type { return str; } - // TODO - // pub fn split() void; + pub fn join(arena: *Arena, strings: []const []const CharType) AllocError!Str { + const empty = &[_]CharType{}; + return collate(arena, strings, empty, empty, empty); + } + + pub fn collate( + arena: *Arena, + strings: []const []const CharType, + prefix: []const CharType, + separator: []const CharType, + postfix: []const CharType, + ) AllocError!Str { + var strings_total_len: usize = 0; + for (strings) |s| { + strings_total_len += s.len; + } + + var str: Str = undefined; + str.len = prefix.len + strings_total_len + (strings.len - 1) * separator.len + postfix.len; + str.ptr = (try arena.pushArray(CharType, str.len + 1)).ptr; + @memcpy(str.ptr.?[0..prefix.len], prefix); + + var offset = prefix.len; + + for (strings, 0..) |list_str, index| { + if (index > 0) { + @memcpy(str.ptr.?[offset .. offset + separator.len], separator); + offset += separator.len; + } + @memcpy(str.ptr.?[offset .. offset + list_str.len], list_str); + offset += list_str.len; + } + + @memcpy(str.ptr.?[offset .. offset + postfix.len], postfix); + offset += postfix.len; + str.ptr.?[str.len] = 0; + return str; + } + + pub fn split(str: *const Str, arena: *Arena, separators: StrList) AllocError!StrList { + var list = StrList.init(); + if (str.ptr == null) { + return list; + } + + const ptr = str.ptr.?; + + var offset: usize = 0; + var offset_substring: usize = 0; + + while (offset < str.len) { + const haystack = ptr[offset..str.len]; + var separator_iter = separators.iter(); + while (separator_iter.next()) |list_sep| { + if (std.mem.startsWith(CharType, haystack, list_sep.string.slice()) and list_sep.string.len > 0) { + var substr = ptr[offset_substring..offset]; + if (separators.containsSlice(substr)) { + substr = ptr[offset..offset]; + } + try list.pushSlice(substr, arena); + + // -1 / +1 to account for offset += 1 at the end of the loop + offset += list_sep.string.len - 1; + offset_substring = offset + 1; + break; + } + } + + offset += 1; + } + + if (offset_substring != offset) { + var substr = ptr[offset_substring..offset]; + try list.pushSlice(substr, arena); + } + + return list; + } pub fn cmp(a: *const Str, b: *const Str) std.math.Order { if (CharType != u8) { -- 2.25.1 From eb60729721e5c6eb7fcd6880569d80efe4aacead Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Fri, 29 Sep 2023 23:03:14 -0400 Subject: [PATCH 15/24] zig bindings: string refinements/bugfixes --- samples/zig-sample/src/main.zig | 30 ++++++++++++++++++++------- src/orca.zig | 36 +++++++++++---------------------- 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/samples/zig-sample/src/main.zig b/samples/zig-sample/src/main.zig index 8297124..8fcb0e3 100644 --- a/samples/zig-sample/src/main.zig +++ b/samples/zig-sample/src/main.zig @@ -138,10 +138,26 @@ export fn oc_on_frame_refresh() void { var str1: Str8 = Str8.collate(scratch, &[_][]const u8{ "Hello", "from", "Zig!" }, ">> ", " ", " <<") catch |e| fatal(e, @src()); var str2_list = oc.Str8List.init(); - var tmp = Str8.fromSlice("All"); - str2_list.push(tmp, scratch) catch |e| fatal(e, @src()); - str2_list.pushSlice("your", scratch) catch |e| fatal(e, @src()); - str2_list.pushSlice("base!!", scratch) catch |e| fatal(e, @src()); + str2_list.push(scratch, Str8.fromSlice("All")) catch |e| fatal(e, @src()); + str2_list.pushf(scratch, "your", .{}) catch |e| fatal(e, @src()); + str2_list.pushSlice(scratch, "base!!") catch |e| fatal(e, @src()); + + oc.assert(str2_list.containsSlice("All"), "str2_list should have the string we just pushed", .{}, @src()); + + { + var elt_first = str2_list.list.first; + var elt_last = str2_list.list.last; + oc.assert(elt_first != null, "list checks", .{}, @src()); + oc.assert(elt_last != null, "list checks", .{}, @src()); + oc.assert(elt_first != elt_last, "list checks", .{}, @src()); + oc.assert(elt_first.?.next != null, "list checks", .{}, @src()); + oc.assert(elt_first.?.prev == null, "list checks", .{}, @src()); + oc.assert(elt_last.?.next == null, "list checks", .{}, @src()); + oc.assert(elt_last.?.prev != null, "list checks", .{}, @src()); + oc.assert(elt_first.?.next != elt_last, "list checks", .{}, @src()); + oc.assert(elt_last.?.prev != elt_first, "list checks", .{}, @src()); + } + var str2: Str8 = str2_list.collate(scratch, Str8.fromSlice("<< "), Str8.fromSlice("-"), Str8.fromSlice(" >>")) catch |e| fatal(e, @src()); const font_size = 18; @@ -172,9 +188,9 @@ export fn oc_on_frame_refresh() void { var scratch: *oc.Arena = scratch_scope.arena; var separators = oc.Str8List.init(); - separators.pushSlice(" ", scratch) catch |e| fatal(e, @src()); - separators.pushSlice("|", scratch) catch |e| fatal(e, @src()); - separators.pushSlice("-", scratch) catch |e| fatal(e, @src()); + separators.pushSlice(scratch, " ") catch |e| fatal(e, @src()); + separators.pushSlice(scratch, "|") catch |e| fatal(e, @src()); + separators.pushSlice(scratch, "-") catch |e| fatal(e, @src()); const big_string = Str8.fromSlice("This is |a one-word string that | has no spaces in it"); var strings: oc.Str8List = big_string.split(scratch, separators) catch |e| fatal(e, @src()); diff --git a/src/orca.zig b/src/orca.zig index 566aea4..4c1d075 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -128,18 +128,6 @@ pub const List = extern struct { }; } - pub fn begin(self: *List) ?*ListElt { - return self.first; - } - - pub fn end() ?*ListElt { - return null; - } - - pub fn last(self: *List) ?*ListElt { - return self.last; - } - pub fn firstEntry(self: *List, comptime EltParentType: type, comptime field_name_in_parent: []const u8) ?*EltParentType { if (self.first) |elt| { return elt.entry(EltParentType, field_name_in_parent); @@ -242,7 +230,7 @@ pub const List = extern struct { } pub fn pop(self: *List) ?*ListElt { - if (self.begin()) |elt_begin| { + if (self.first) |elt_begin| { remove(self, elt_begin); return elt_begin; } @@ -268,7 +256,7 @@ pub const List = extern struct { } pub fn popBack(self: *List) ?*ListElt { - if (self.last()) |last_elt| { + if (self.last) |last_elt| { remove(self, last_elt); return last_elt; } @@ -405,7 +393,7 @@ fn stringType(comptime CharType: type) type { }; } - pub fn push(list: *StrList, str: Str, arena: *Arena) AllocError!void { + pub fn push(list: *StrList, arena: *Arena, str: Str) AllocError!void { var elt: *StrListElt = try arena.pushType(StrListElt); elt.string = str; list.list.pushBack(&elt.list_elt); @@ -413,13 +401,13 @@ fn stringType(comptime CharType: type) type { list.len += str.len; } - pub fn pushSlice(list: *StrList, str: []const CharType, arena: *Arena) AllocError!void { - try list.push(Str.fromSlice(str), arena); + pub fn pushSlice(list: *StrList, arena: *Arena, str: []const CharType) AllocError!void { + try list.push(arena, Str.fromSlice(str)); } - pub fn pushf(list: *StrList, arena: *Arena, comptime format: []const u8, args: anytype) AllocError!Str { + pub fn pushf(list: *StrList, arena: *Arena, comptime format: []const u8, args: anytype) AllocError!void { var str = try Str.pushf(arena, format, args); - try list.list.push(str, arena); + try list.push(arena, str); } pub fn iter(list: *const StrList) List.makeIter(.Forward, StrListElt, "list_elt") { @@ -539,15 +527,15 @@ fn stringType(comptime CharType: type) type { return pushBuffer(arena, str.ptr[start..end]); } - pub fn pushf(arena: *Arena, format: []const u8, args: anytype) Str { + pub fn pushf(arena: *Arena, comptime format: []const u8, args: anytype) AllocError!Str { if (CharType != u8) { @compileError("pushf() is only supported for Str8"); } var str: Str = undefined; str.len = @intCast(std.fmt.count(format, args)); - str.ptr = arena.pushArray(CharType, str.len + 1); - _ = std.fmt.bufPrintZ(str.ptr[0 .. str.len + 1], format, args) catch unreachable; + str.ptr = (try arena.pushArray(CharType, str.len + 1)).ptr; + _ = std.fmt.bufPrintZ(str.ptr.?[0 .. str.len + 1], format, args) catch unreachable; return str; } @@ -610,7 +598,7 @@ fn stringType(comptime CharType: type) type { if (separators.containsSlice(substr)) { substr = ptr[offset..offset]; } - try list.pushSlice(substr, arena); + try list.pushSlice(arena, substr); // -1 / +1 to account for offset += 1 at the end of the loop offset += list_sep.string.len - 1; @@ -624,7 +612,7 @@ fn stringType(comptime CharType: type) type { if (offset_substring != offset) { var substr = ptr[offset_substring..offset]; - try list.pushSlice(substr, arena); + try list.pushSlice(arena, substr); } return list; -- 2.25.1 From 3e6cd07b3418fea6f718a94311cf4e835c604cd3 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Fri, 29 Sep 2023 23:14:43 -0400 Subject: [PATCH 16/24] revert const changes to oc_font_create_from_* * Martin has said the orca style is to avoid const, so we will avoid adding it where it isn't already present * Zig bindings doesn't need the corresponding C function to have const-decorated types --- src/graphics/graphics.h | 6 +++--- src/graphics/graphics_common.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/graphics/graphics.h b/src/graphics/graphics.h index 00cd6ab..0b0e970 100644 --- a/src/graphics/graphics.h +++ b/src/graphics/graphics.h @@ -227,9 +227,9 @@ ORCA_API void oc_render(oc_canvas canvas); //DOC: renders all canvas ORCA_API oc_font oc_font_nil(void); ORCA_API bool oc_font_is_nil(oc_font font); -ORCA_API oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, const oc_unicode_range* ranges); -ORCA_API oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, const oc_unicode_range* ranges); -ORCA_API oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, const oc_unicode_range* ranges); +ORCA_API oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, oc_unicode_range* ranges); +ORCA_API oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, oc_unicode_range* ranges); +ORCA_API oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, oc_unicode_range* ranges); ORCA_API void oc_font_destroy(oc_font font); diff --git a/src/graphics/graphics_common.c b/src/graphics/graphics_common.c index 9658ddd..2ce3900 100644 --- a/src/graphics/graphics_common.c +++ b/src/graphics/graphics_common.c @@ -369,7 +369,7 @@ oc_font_data* oc_font_data_from_handle(oc_font handle) return (data); } -oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, const oc_unicode_range* ranges) +oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, oc_unicode_range* ranges) { if(!oc_graphicsData.init) { @@ -552,7 +552,7 @@ oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, const oc_unicode return (fontHandle); } -oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, const oc_unicode_range* ranges) +oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, oc_unicode_range* ranges) { oc_font font = oc_font_nil(); oc_arena_scope scratch = oc_scratch_begin(); @@ -574,7 +574,7 @@ oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, const oc_unicode_ return (font); } -oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, const oc_unicode_range* ranges) +oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, oc_unicode_range* ranges) { oc_font font = oc_font_nil(); -- 2.25.1 From 49213353fcac928c59b0589c404c660aa12460eb Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Fri, 29 Sep 2023 23:42:10 -0400 Subject: [PATCH 17/24] zig bindings: namespace clock/canvas functions --- samples/zig-sample/src/main.zig | 65 +++---- src/orca.zig | 323 +++++++++++++++----------------- 2 files changed, 186 insertions(+), 202 deletions(-) diff --git a/samples/zig-sample/src/main.zig b/samples/zig-sample/src/main.zig index 8fcb0e3..7ae8b6e 100644 --- a/samples/zig-sample/src/main.zig +++ b/samples/zig-sample/src/main.zig @@ -36,9 +36,11 @@ export fn oc_on_init() void { .Specials, }); font = oc.Font.createFromPath("/zig.ttf", &ranges); + oc.assert(oc.Font.nil().isNil() == true, "nil font should be nil", .{}, @src()); oc.assert(font.isNil() == false, "created font should not be nil", .{}, @src()); orca_image = oc.Image.createFromPath(surface, Str8.fromSlice("/orca_jumping.jpg"), false); + oc.assert(oc.Image.nil().isNil() == true, "nil image should be nil", .{}, @src()); oc.assert(orca_image.isNil() == false, "created image should not be nil", .{}, @src()); } @@ -79,7 +81,7 @@ export fn oc_on_key_up(scan: oc.ScanCode, key: oc.KeyCode) void { export fn oc_on_frame_refresh() void { counter += 1; - const secs: f64 = oc.clockTime(oc.ClockKind.Date); + const secs: f64 = oc.clock.time(.Date); if (last_seconds != @floor(secs)) { last_seconds = @floor(secs); @@ -87,10 +89,10 @@ export fn oc_on_frame_refresh() void { } _ = canvas.select(); - oc.setColorRgba(0.05, 0.05, 0.05, 1.0); - oc.clear(); + oc.Canvas.setColorRgba(0.05, 0.05, 0.05, 1.0); + oc.Canvas.clear(); - oc.setColorRgba(1.0, 0.05, 0.05, 1.0); + oc.Canvas.setColorRgba(1.0, 0.05, 0.05, 1.0); { const translation: Mat2x3 = .{ .m = [_]f32{ 1, 0, 50, 0, 1, 50 } }; @@ -98,24 +100,24 @@ export fn oc_on_frame_refresh() void { defer Mat2x3.pop(); oc.assert(std.meta.eql(Mat2x3.top(), translation), "top of matrix stack should be what we pushed", .{}, @src()); - oc.setWidth(1); - oc.rectangleFill(50, 0, 10, 10); - oc.rectangleStroke(70, 0, 10, 10); - oc.roundedRectangleFill(90, 0, 10, 10, 3); - oc.roundedRectangleStroke(110, 0, 10, 10, 3); + oc.Canvas.setWidth(1); + oc.Canvas.rectangleFill(50, 0, 10, 10); + oc.Canvas.rectangleStroke(70, 0, 10, 10); + oc.Canvas.roundedRectangleFill(90, 0, 10, 10, 3); + oc.Canvas.roundedRectangleStroke(110, 0, 10, 10, 3); const green = oc.Color{ .Flat = .{ .r = 0.05, .g = 1, .b = 0.05, .a = 1 } }; - oc.setColor(green); - oc.assert(std.meta.eql(oc.getColor().Flat, green.Flat), "color should be green", .{}, @src()); + oc.Canvas.setColor(green); + oc.assert(std.meta.eql(oc.Canvas.getColor().Flat, green.Flat), "color should be green", .{}, @src()); - oc.setTolerance(1); - oc.setJoint(.Bevel); - oc.ellipseFill(140, 5, 10, 5); - oc.ellipseStroke(170, 5, 10, 5); - oc.circleFill(195, 5, 5); - oc.circleStroke(215, 5, 5); + oc.Canvas.setTolerance(1); + oc.Canvas.setJoint(.Bevel); + oc.Canvas.ellipseFill(140, 5, 10, 5); + oc.Canvas.ellipseStroke(170, 5, 10, 5); + oc.Canvas.circleFill(195, 5, 5); + oc.Canvas.circleStroke(215, 5, 5); - oc.arc(230, 5, 5, 0, std.math.pi); + oc.Canvas.arc(230, 5, 5, 0, std.math.pi); } { @@ -126,7 +128,7 @@ export fn oc_on_frame_refresh() void { Mat2x3.push(Mat2x3.mul_m(trans, rot)); defer Mat2x3.pop(); - oc.rectangleFill(-5, -5, 10, 10); + oc.Canvas.rectangleFill(-5, -5, 10, 10); } { @@ -170,15 +172,14 @@ export fn oc_on_frame_refresh() void { Mat2x3.push(Mat2x3.translate(text_begin_x, 100)); defer Mat2x3.pop(); - oc.setColorRgba(1.0, 0.05, 0.05, 1.0); - - oc.setFont(font); - oc.setFontSize(font_size); - oc.moveTo(0, 0); - oc.textOutlines(str1); - oc.moveTo(0, 35); - oc.textOutlines(str2); - oc.fill(); + oc.Canvas.setColorRgba(1.0, 0.05, 0.05, 1.0); + oc.Canvas.setFont(font); + oc.Canvas.setFontSize(font_size); + oc.Canvas.moveTo(0, 0); + oc.Canvas.textOutlines(str1); + oc.Canvas.moveTo(0, 35); + oc.Canvas.textOutlines(str2); + oc.Canvas.fill(); } { @@ -196,10 +197,10 @@ export fn oc_on_frame_refresh() void { var strings: oc.Str8List = big_string.split(scratch, separators) catch |e| fatal(e, @src()); var collated = strings.join(scratch) catch |e| fatal(e, @src()); - oc.setFontSize(12); - oc.moveTo(0, 170); - oc.textOutlines(collated); - oc.fill(); + oc.Canvas.setFontSize(12); + oc.Canvas.moveTo(0, 170); + oc.Canvas.textOutlines(collated); + oc.Canvas.fill(); } { diff --git a/src/orca.zig b/src/orca.zig index 4c1d075..f7ecbbf 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -1458,68 +1458,28 @@ pub const MouseButton = enum(c_uint) { //------------------------------------------------------------------------------------------ extern fn oc_window_set_title(title: Str8) void; +extern fn oc_window_set_size(size: Vec2) void; -pub fn windowSetTitle(title: [:0]const u8) void { - // var title_str8: Str8 = .{ - // .ptr = @constCast(title.ptr), - // .len = title.len, - // }; +pub fn windowSetTitle(title: []const u8) void { oc_window_set_title(Str8.fromSlice(title)); } -extern fn oc_window_set_size(size: Vec2) void; -// pub const windowSetTitle = oc_window_set_title; pub const windowSetSize = oc_window_set_size; -//------------------------------------------------------------------------------------------ -// [APP] file dialogs -//------------------------------------------------------------------------------------------ - -const FileDialogKind = enum(c_uint) { - Save, - Open, -}; - -const FileDialogFlags = packed struct(u32) { - files: bool, - directories: bool, - multiple: bool, - create_directories: bool, -}; - -const FileDialogDesc = extern struct { - kind: FileDialogKind, - flags: FileDialogFlags, - title: Str8, - ok_label: Str8, - start_at: File, - start_path: Str8, - filters: Str8List, -}; - -const FileDialogButton = enum(c_uint) { - Cancel, - Ok, -}; - -const FileDialogResult = extern struct { - button: FileDialogButton, - path: Str8, - selection: Str8List, -}; - //------------------------------------------------------------------------------------------ // [CLOCK] //------------------------------------------------------------------------------------------ -pub const ClockKind = enum(c_uint) { - Monotonic, - Uptime, - Date, -}; +pub const clock = struct { + pub const Kind = enum(c_uint) { + Monotonic, + Uptime, + Date, + }; -extern fn oc_clock_time(clock: ClockKind) f64; -pub const clockTime = oc_clock_time; + extern fn oc_clock_time(clock: Kind) f64; + pub const time = oc_clock_time; +}; //------------------------------------------------------------------------------------------ // [MATH] Vec2 @@ -1545,7 +1505,7 @@ pub const Vec2 = extern struct { }; //------------------------------------------------------------------------------------------ -// [MATH] Matrix +// [MATH] Matrix stack //------------------------------------------------------------------------------------------ pub const Mat2x3 = extern struct { @@ -1632,28 +1592,10 @@ pub const Surface = extern struct { // pub const renderCommands = oc_surface_render_commands; }; -pub const Canvas = extern struct { - h: u64, - - extern fn oc_canvas_nil() Canvas; - extern fn oc_canvas_is_nil(canvas: Canvas) bool; - extern fn oc_canvas_create() Canvas; - extern fn oc_canvas_destroy(canvas: Canvas) void; - extern fn oc_canvas_select(canvas: Canvas) Canvas; - extern fn oc_render(canvas: Canvas) void; - - pub const nil = oc_canvas_nil; - pub const isNil = oc_canvas_is_nil; - pub const create = oc_canvas_create; - pub const destroy = oc_canvas_destroy; - pub const select = oc_canvas_select; - pub const render = oc_render; -}; - pub const Image = extern struct { h: u64, - extern fn oc_image_nil(void) Image; + extern fn oc_image_nil() Image; extern fn oc_image_is_nil(image: Image) bool; extern fn oc_image_create(surface: Surface, width: u32, height: u32) Image; extern fn oc_image_create_from_rgba8(surface: Surface, width: u32, height: u32, pixels: [*]u8) Image; @@ -1709,120 +1651,134 @@ pub const Color = extern union { }; //------------------------------------------------------------------------------------------ -// [GRAPHICS]: graphics attributes setting/getting +// [GRAPHICS]: Canvas //------------------------------------------------------------------------------------------ -extern fn oc_set_color(color: Color) void; -extern fn oc_set_color_rgba(r: f32, g: f32, b: f32, a: f32) void; -extern fn oc_set_width(width: f32) void; -extern fn oc_set_tolerance(tolerance: f32) void; -extern fn oc_set_joint(joint: JointType) void; -extern fn oc_set_max_joint_excursion(max_joint_excursion: f32) void; -extern fn oc_set_cap(cap: CapType) void; -extern fn oc_set_font(font: Font) void; -extern fn oc_set_font_size(size: f32) void; -extern fn oc_set_text_flip(flip: bool) void; -extern fn oc_set_image(image: Image) void; -extern fn oc_set_image_source_region(region: Rect) void; +pub const Canvas = extern struct { + h: u64, -extern fn oc_get_color() Color; -extern fn oc_get_width() f32; -extern fn oc_get_tolerance() f32; -extern fn oc_get_joint() JointType; -extern fn oc_get_max_joint_excursion() f32; -extern fn oc_get_cap() CapType; -extern fn oc_get_font() Font; -extern fn oc_get_font_size() f32; -extern fn oc_get_text_flip() bool; -extern fn oc_get_image() Image; -extern fn oc_get_image_source_region() Rect; + extern fn oc_canvas_nil() Canvas; + extern fn oc_canvas_is_nil(canvas: Canvas) bool; + extern fn oc_canvas_create() Canvas; + extern fn oc_canvas_destroy(canvas: Canvas) void; + extern fn oc_canvas_select(canvas: Canvas) Canvas; + extern fn oc_render(canvas: Canvas) void; -pub const setColor = oc_set_color; -pub const setColorRgba = oc_set_color_rgba; -pub const setWidth = oc_set_width; -pub const setTolerance = oc_set_tolerance; -pub const setJoint = oc_set_joint; -pub const setMaxJointExcursion = oc_set_max_joint_excursion; -pub const setCap = oc_set_cap; -pub const setFont = oc_set_font; -pub const setFontSize = oc_set_font_size; -pub const setTextFlip = oc_set_text_flip; -pub const setImage = oc_set_image; -pub const setImageSourceRegion = oc_set_image_source_region; + pub const nil = oc_canvas_nil; + pub const isNil = oc_canvas_is_nil; + pub const create = oc_canvas_create; + pub const destroy = oc_canvas_destroy; + pub const select = oc_canvas_select; + pub const render = oc_render; -pub const getColor = oc_get_color; -pub const getWidth = oc_get_width; -pub const getTolerance = oc_get_tolerance; -pub const getJoint = oc_get_joint; -pub const getMaxJointExcursion = oc_get_max_joint_excursion; -pub const getCap = oc_get_cap; -pub const getFont = oc_get_font; -pub const getFontSize = oc_get_font_size; -pub const getTextFlip = oc_get_text_flip; -pub const getImage = oc_get_image; -pub const getImageSourceRegion = oc_get_image_source_region; + // vector graphics -//------------------------------------------------------------------------------------------ -// [GRAPHICS]: construction: path -//------------------------------------------------------------------------------------------ + extern fn oc_clear() void; + extern fn oc_fill() void; + extern fn oc_stroke() void; -extern fn oc_get_position() Vec2; -extern fn oc_move_to(x: f32, y: f32) void; -extern fn oc_line_to(x: f32, y: f32) void; -extern fn oc_quadratic_to(x1: f32, y1: f32, x2: f32, y2: f32) void; -extern fn oc_cubic_to(x1: f32, y1: f32, x2: f32, y2: f32, x3: f32, y3: f32) void; -extern fn oc_close_path() void; + pub const clear = oc_clear; + pub const fill = oc_fill; + pub const stroke = oc_stroke; -extern fn oc_glyph_outlines(glyph_indices: Str32) Rect; -extern fn oc_codepoints_outlines(string: Str32) void; -extern fn oc_text_outlines(string: Str8) void; + // attributes setting/getting -pub const getPosition = oc_get_position; -pub const moveTo = oc_move_to; -pub const lineTo = oc_line_to; -pub const quadraticTo = oc_quadratic_to; -pub const cubicTo = oc_cubic_to; -pub const closePath = oc_close_path; + extern fn oc_set_color(color: Color) void; + extern fn oc_set_color_rgba(r: f32, g: f32, b: f32, a: f32) void; + extern fn oc_set_width(width: f32) void; + extern fn oc_set_tolerance(tolerance: f32) void; + extern fn oc_set_joint(joint: JointType) void; + extern fn oc_set_max_joint_excursion(max_joint_excursion: f32) void; + extern fn oc_set_cap(cap: CapType) void; + extern fn oc_set_font(font: Font) void; + extern fn oc_set_font_size(size: f32) void; + extern fn oc_set_text_flip(flip: bool) void; + extern fn oc_set_image(image: Image) void; + extern fn oc_set_image_source_region(region: Rect) void; -pub const glyphOutlines = oc_glyph_outlines; -pub const codepointsOutlines = oc_codepoints_outlines; -pub const textOutlines = oc_text_outlines; + extern fn oc_get_color() Color; + extern fn oc_get_width() f32; + extern fn oc_get_tolerance() f32; + extern fn oc_get_joint() JointType; + extern fn oc_get_max_joint_excursion() f32; + extern fn oc_get_cap() CapType; + extern fn oc_get_font() Font; + extern fn oc_get_font_size() f32; + extern fn oc_get_text_flip() bool; + extern fn oc_get_image() Image; + extern fn oc_get_image_source_region() Rect; -//------------------------------------------------------------------------------------------ -// [GRAPHICS]: vector graphics -//------------------------------------------------------------------------------------------ + pub const setColor = oc_set_color; + pub const setColorRgba = oc_set_color_rgba; + pub const setWidth = oc_set_width; + pub const setTolerance = oc_set_tolerance; + pub const setJoint = oc_set_joint; + pub const setMaxJointExcursion = oc_set_max_joint_excursion; + pub const setCap = oc_set_cap; + pub const setFont = oc_set_font; + pub const setFontSize = oc_set_font_size; + pub const setTextFlip = oc_set_text_flip; + pub const setImage = oc_set_image; + pub const setImageSourceRegion = oc_set_image_source_region; -extern fn oc_clear() void; -extern fn oc_fill() void; -extern fn oc_stroke() void; + pub const getColor = oc_get_color; + pub const getWidth = oc_get_width; + pub const getTolerance = oc_get_tolerance; + pub const getJoint = oc_get_joint; + pub const getMaxJointExcursion = oc_get_max_joint_excursion; + pub const getCap = oc_get_cap; + pub const getFont = oc_get_font; + pub const getFontSize = oc_get_font_size; + pub const getTextFlip = oc_get_text_flip; + pub const getImage = oc_get_image; + pub const getImageSourceRegion = oc_get_image_source_region; -pub const clear = oc_clear; -pub const fill = oc_fill; -pub const stroke = oc_stroke; + // path construction -//------------------------------------------------------------------------------------------ -// [GRAPHICS]: shape helpers -//------------------------------------------------------------------------------------------ + extern fn oc_get_position() Vec2; + extern fn oc_move_to(x: f32, y: f32) void; + extern fn oc_line_to(x: f32, y: f32) void; + extern fn oc_quadratic_to(x1: f32, y1: f32, x2: f32, y2: f32) void; + extern fn oc_cubic_to(x1: f32, y1: f32, x2: f32, y2: f32, x3: f32, y3: f32) void; + extern fn oc_close_path() void; -extern fn oc_rectangle_fill(x: f32, y: f32, w: f32, h: f32) void; -extern fn oc_rectangle_stroke(x: f32, y: f32, w: f32, h: f32) void; -extern fn oc_rounded_rectangle_fill(x: f32, y: f32, w: f32, h: f32, r: f32) void; -extern fn oc_rounded_rectangle_stroke(x: f32, y: f32, w: f32, h: f32, r: f32) void; -extern fn oc_ellipse_fill(x: f32, y: f32, rx: f32, ry: f32) void; -extern fn oc_ellipse_stroke(x: f32, y: f32, rx: f32, ry: f32) void; -extern fn oc_circle_fill(x: f32, y: f32, r: f32) void; -extern fn oc_circle_stroke(x: f32, y: f32, r: f32) void; -extern fn oc_arc(x: f32, y: f32, r: f32, arc_angle: f32, start_angle: f32) void; + extern fn oc_glyph_outlines(glyph_indices: Str32) Rect; + extern fn oc_codepoints_outlines(string: Str32) void; + extern fn oc_text_outlines(string: Str8) void; -pub const rectangleFill = oc_rectangle_fill; -pub const rectangleStroke = oc_rectangle_stroke; -pub const roundedRectangleFill = oc_rounded_rectangle_fill; -pub const roundedRectangleStroke = oc_rounded_rectangle_stroke; -pub const ellipseFill = oc_ellipse_fill; -pub const ellipseStroke = oc_ellipse_stroke; -pub const circleFill = oc_circle_fill; -pub const circleStroke = oc_circle_stroke; -pub const arc = oc_arc; + pub const getPosition = oc_get_position; + pub const moveTo = oc_move_to; + pub const lineTo = oc_line_to; + pub const quadraticTo = oc_quadratic_to; + pub const cubicTo = oc_cubic_to; + pub const closePath = oc_close_path; + + pub const glyphOutlines = oc_glyph_outlines; + pub const codepointsOutlines = oc_codepoints_outlines; + pub const textOutlines = oc_text_outlines; + + // shape helpers + + extern fn oc_rectangle_fill(x: f32, y: f32, w: f32, h: f32) void; + extern fn oc_rectangle_stroke(x: f32, y: f32, w: f32, h: f32) void; + extern fn oc_rounded_rectangle_fill(x: f32, y: f32, w: f32, h: f32, r: f32) void; + extern fn oc_rounded_rectangle_stroke(x: f32, y: f32, w: f32, h: f32, r: f32) void; + extern fn oc_ellipse_fill(x: f32, y: f32, rx: f32, ry: f32) void; + extern fn oc_ellipse_stroke(x: f32, y: f32, rx: f32, ry: f32) void; + extern fn oc_circle_fill(x: f32, y: f32, r: f32) void; + extern fn oc_circle_stroke(x: f32, y: f32, r: f32) void; + extern fn oc_arc(x: f32, y: f32, r: f32, arc_angle: f32, start_angle: f32) void; + + pub const rectangleFill = oc_rectangle_fill; + pub const rectangleStroke = oc_rectangle_stroke; + pub const roundedRectangleFill = oc_rounded_rectangle_fill; + pub const roundedRectangleStroke = oc_rounded_rectangle_stroke; + pub const ellipseFill = oc_ellipse_fill; + pub const ellipseStroke = oc_ellipse_stroke; + pub const circleFill = oc_circle_fill; + pub const circleStroke = oc_circle_stroke; + pub const arc = oc_arc; +}; //------------------------------------------------------------------------------------------ // [GRAPHICS]: GLES @@ -1831,7 +1787,7 @@ pub const arc = oc_arc; // TODO //------------------------------------------------------------------------------------------ -// [UI]: GLES +// [UI] //------------------------------------------------------------------------------------------ // TODO @@ -2015,6 +1971,33 @@ const FileStatus = extern struct { modification_date: DateStamp, }; +const FileDialogKind = enum(c_uint) { + Save, + Open, +}; + +const FileDialogFlags = packed struct(u32) { + files: bool, + directories: bool, + multiple: bool, + create_directories: bool, +}; + +const FileDialogDesc = extern struct { + kind: FileDialogKind, + flags: FileDialogFlags, + title: Str8, + ok_label: Str8, + start_at: File, + start_path: Str8, + filters: Str8List, +}; + +const FileDialogButton = enum(c_uint) { + Cancel, + Ok, +}; + const FileOpenWithDialogElt = extern struct { list_elt: ListElt, file: File, -- 2.25.1 From 23378edfec9d31b9d933d728365f3277b06f7ff2 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Sat, 30 Sep 2023 21:40:30 -0400 Subject: [PATCH 18/24] zig bindings: namespace File data types and Io data/functions --- src/orca.zig | 370 ++++++++++++++++++++++++++------------------------- 1 file changed, 186 insertions(+), 184 deletions(-) diff --git a/src/orca.zig b/src/orca.zig index f7ecbbf..f69b622 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -1797,24 +1797,127 @@ pub const Canvas = extern struct { //------------------------------------------------------------------------------------------ const File = extern struct { + const OpenFlags = packed struct(u16) { + none: bool, + append: bool, + truncate: bool, + create: bool, + + symlink: bool, + no_follow: bool, + restrict: bool, + }; + + const AccessFlags = packed struct(u16) { + none: bool, + read: bool, + write: bool, + }; + + const Whence = enum(c_uint) { + Set, + End, + Current, + }; + + const Type = enum(c_uint) { + Unknown, + Regular, + Directory, + Symlink, + Block, + Character, + Fifo, + Socket, + }; + + const Perm = packed struct(u16) { + other_exec: bool, + other_write: bool, + other_read: bool, + group_exec: bool, + group_write: bool, + group_read: bool, + owner_exec: bool, + owner_write: bool, + owner_read: bool, + sticky_bit: bool, + set_gid: bool, + set_uid: bool, + }; + + const DateStamp = extern struct { + seconds: i64, // seconds relative to NTP epoch. + fraction: u64, // fraction of seconds elapsed since the time specified by seconds. + }; + + const Status = extern struct { + uid: u64, + type: Type, + perm: Perm, + size: u64, + + creation_date: DateStamp, + access_date: DateStamp, + modification_date: DateStamp, + }; + + const DialogKind = enum(c_uint) { + Save, + Open, + }; + + const DialogFlags = packed struct(u32) { + files: bool, + directories: bool, + multiple: bool, + create_directories: bool, + }; + + const DialogDesc = extern struct { + kind: DialogKind, + flags: DialogFlags, + title: Str8, + ok_label: Str8, + start_at: File, + start_path: Str8, + filters: Str8List, + }; + + const DialogButton = enum(c_uint) { + Cancel, + Ok, + }; + + const OpenWithDialogElt = extern struct { + list_elt: ListElt, + file: File, + }; + + const OpenWithDialogResult = extern struct { + button: DialogButton, + file: File, + selection: List, + }; + h: u64, extern fn oc_file_nil() File; extern fn oc_file_is_nil(file: File) bool; - extern fn oc_file_open(path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; - extern fn oc_file_open_at(dir: File, path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; + extern fn oc_file_open(path: Str8, rights: AccessFlags, flags: OpenFlags) File; + extern fn oc_file_open_at(dir: File, path: Str8, rights: AccessFlags, flags: OpenFlags) File; extern fn oc_file_close(file: File) void; - extern fn oc_file_last_error(file: File) IoError; + extern fn oc_file_last_error(file: File) io.Error; extern fn oc_file_pos(file: File) i64; - extern fn oc_file_seek(file: File, offset: i64, whence: FileWhence) i64; + extern fn oc_file_seek(file: File, offset: i64, whence: Whence) i64; extern fn oc_file_write(file: File, size: u64, buffer: ?[*]u8) u64; extern fn oc_file_read(file: File, size: u64, buffer: ?[*]u8) u64; - extern fn oc_file_get_status(file: File) FileStatus; + extern fn oc_file_get_status(file: File) Status; extern fn oc_file_size(file: File) u64; - extern fn oc_file_open_with_request(path: Str8, rights: FileAccessFlags, flags: FileOpenFlags) File; - extern fn oc_file_open_with_dialog(arena: *Arena, rights: FileAccessFlags, flags: FileOpenFlags, desc: *FileDialogDesc) FileOpenWithDialogResult; + extern fn oc_file_open_with_request(path: Str8, rights: AccessFlags, flags: OpenFlags) File; + extern fn oc_file_open_with_dialog(arena: *Arena, rights: AccessFlags, flags: OpenFlags, desc: *DialogDesc) OpenWithDialogResult; pub const nil = oc_file_nil; pub const isNil = oc_file_is_nil; @@ -1834,185 +1937,84 @@ const File = extern struct { pub const openWithDialog = oc_file_open_with_dialog; }; -const FileOpenFlags = packed struct(u16) { - none: bool, - append: bool, - truncate: bool, - create: bool, +//------------------------------------------------------------------------------------------ +// [FILE IO] low-level io queue api +//------------------------------------------------------------------------------------------ - symlink: bool, - no_follow: bool, - restrict: bool, -}; +const io = struct { + const ReqId = u16; + const Op = u32; -const FileAccessFlags = packed struct(u16) { - none: bool, - read: bool, - write: bool, -}; + const OpEnum = enum(c_uint) { + OpenAt = 0, + Close, + FStat, + Seek, + Read, + Write, + Error, + }; -const FileWhence = enum(c_uint) { - Set, - End, - Current, -}; - -const IoReqId = u16; -const IoOp = u32; - -const IoOpEnum = enum(c_uint) { - OpenAt = 0, - Close, - FStat, - Seek, - Read, - Write, - Error, -}; - -const IoReq = extern struct { - id: IoReqId, - op: IoOp, - handle: File, - - offset: i64, - size: u64, - - buffer: extern union { - data: ?[*]u8, - unused: u64, // This is a horrible hack to get the same layout on wasm and on host - }, - - type: extern union { - open: extern struct { - rights: FileAccessFlags, - flags: FileOpenFlags, - }, - whence: FileWhence, - }, -}; - -const IoError = enum(i32) { - Ok = 0, - Unknown, - Op, // unsupported operation - Handle, // invalid handle - Prev, // previously had a fatal error (last error stored on handle) - Arg, // invalid argument or argument combination - Perm, // access denied - Space, // no space left - NoEntry, // file or directory does not exist - Exists, // file already exists - NotDir, // path element is not a directory - Dir, // attempted to write directory - MaxFiles, // max open files reached - MaxLinks, // too many symbolic links in path - PathLength, // path too long - FileSize, // file too big - Overflow, // offset too big - NotReady, // no data ready to be read/written - Mem, // failed to allocate memory - Interrupt, // operation interrupted by a signal - Physical, // physical IO error - NoDevice, // device not found - Walkout, // attempted to walk out of root directory -}; - -const IoCmp = extern struct { - id: IoReqId, - err: IoError, - data: extern union { - result: i64, - size: u64, - offset: i64, + const Req = extern struct { + id: ReqId, + op: Op, handle: File, - }, + + offset: i64, + size: u64, + + buffer: extern union { + data: ?[*]u8, + unused: u64, // This is a horrible hack to get the same layout on wasm and on host + }, + + type: extern union { + open: extern struct { + rights: File.AccessFlags, + flags: File.OpenFlags, + }, + whence: File.Whence, + }, + }; + + const Error = enum(i32) { + Ok = 0, + Unknown, + Op, // unsupported operation + Handle, // invalid handle + Prev, // previously had a fatal error (last error stored on handle) + Arg, // invalid argument or argument combination + Perm, // access denied + Space, // no space left + NoEntry, // file or directory does not exist + Exists, // file already exists + NotDir, // path element is not a directory + Dir, // attempted to write directory + MaxFiles, // max open files reached + MaxLinks, // too many symbolic links in path + PathLength, // path too long + FileSize, // file too big + Overflow, // offset too big + NotReady, // no data ready to be read/written + Mem, // failed to allocate memory + Interrupt, // operation interrupted by a signal + Physical, // physical IO error + NoDevice, // device not found + Walkout, // attempted to walk out of root directory + }; + + const Cmp = extern struct { + id: ReqId, + err: Error, + data: extern union { + result: i64, + size: u64, + offset: i64, + handle: File, + }, + }; + + extern fn oc_io_wait_single_req(req: *Req) Cmp; + + pub const waitSingleReq = oc_io_wait_single_req; }; - -const FileType = enum(c_uint) { - Unknown, - Regular, - Directory, - Symlink, - Block, - Character, - Fifo, - Socket, -}; - -const FilePerm = packed struct(u16) { - other_exec: bool, - other_write: bool, - other_read: bool, - group_exec: bool, - group_write: bool, - group_read: bool, - owner_exec: bool, - owner_write: bool, - owner_read: bool, - sticky_bit: bool, - set_gid: bool, - set_uid: bool, -}; - -const DateStamp = extern struct { - seconds: i64, // seconds relative to NTP epoch. - fraction: u64, // fraction of seconds elapsed since the time specified by seconds. -}; - -const FileStatus = extern struct { - uid: u64, - type: FileType, - perm: FilePerm, - size: u64, - - creation_date: DateStamp, - access_date: DateStamp, - modification_date: DateStamp, -}; - -const FileDialogKind = enum(c_uint) { - Save, - Open, -}; - -const FileDialogFlags = packed struct(u32) { - files: bool, - directories: bool, - multiple: bool, - create_directories: bool, -}; - -const FileDialogDesc = extern struct { - kind: FileDialogKind, - flags: FileDialogFlags, - title: Str8, - ok_label: Str8, - start_at: File, - start_path: Str8, - filters: Str8List, -}; - -const FileDialogButton = enum(c_uint) { - Cancel, - Ok, -}; - -const FileOpenWithDialogElt = extern struct { - list_elt: ListElt, - file: File, -}; - -const FileOpenWithDialogResult = extern struct { - button: FileDialogButton, - file: File, - selection: List, -}; - -//------------------------------------------------------------------------------------------ -// [FILE IO] complete io queue api -//------------------------------------------------------------------------------------------ - -extern fn oc_io_wait_single_req(req: *IoReq) IoCmp; - -pub const ioWaitSingleReq = oc_io_wait_single_req; -- 2.25.1 From c31c81bd9cf6d011c219767b1c3746952712c4f9 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Sat, 30 Sep 2023 21:53:06 -0400 Subject: [PATCH 19/24] zig bindings: minor API cleanup * deleting invalid function binding * minor reorg stuff --- src/orca.zig | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/orca.zig b/src/orca.zig index f69b622..081f820 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -320,7 +320,6 @@ pub const Arena = extern struct { extern fn oc_arena_clear(arena: *Arena) void; extern fn oc_arena_scope_begin(arena: *Arena) ArenaScope; - extern fn oc_scratch_next(used: *Arena) *Arena; extern fn oc_scratch_begin() ArenaScope; extern fn oc_scratch_begin_next(used: *Arena) ArenaScope; @@ -364,13 +363,12 @@ pub const Arena = extern struct { return items[0..count]; } - pub const scratchNext = oc_scratch_next; pub const scratchBegin = oc_scratch_begin; pub const scratchBeginNext = oc_scratch_begin_next; }; //------------------------------------------------------------------------------------------ -// [STRINGS] u8 strings +// [STRINGS] //------------------------------------------------------------------------------------------ fn stringType(comptime CharType: type) type { @@ -647,14 +645,14 @@ pub const Str8 = stringType(u8); pub const Str16 = stringType(u16); pub const Str32 = stringType(u32); -pub const Str8ListElt = Str8.StrListElt; -pub const Str16ListElt = Str16.StrListElt; -pub const Str32ListElt = Str32.StrListElt; - pub const Str8List = Str8.StrList; pub const Str16List = Str16.StrList; pub const Str32List = Str32.StrList; +pub const Str8ListElt = Str8.StrListElt; +pub const Str16ListElt = Str16.StrListElt; +pub const Str32ListElt = Str32.StrListElt; + //------------------------------------------------------------------------------------------ // [UTF8] //------------------------------------------------------------------------------------------ -- 2.25.1 From 024a528afa4ae18d92f4c780a18d68d4e59dc43a Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Sun, 1 Oct 2023 14:56:32 -0400 Subject: [PATCH 20/24] zig sample: * generate a gradient image and draw it * rbga8 color helpers and some const tweaks --- samples/zig-sample/src/main.zig | 78 ++++++++++++++++++++++++++++----- src/orca.zig | 30 ++++++++----- 2 files changed, 87 insertions(+), 21 deletions(-) diff --git a/samples/zig-sample/src/main.zig b/samples/zig-sample/src/main.zig index 7ae8b6e..27ba3db 100644 --- a/samples/zig-sample/src/main.zig +++ b/samples/zig-sample/src/main.zig @@ -1,6 +1,8 @@ const std = @import("std"); const oc = @import("orca"); +const lerp = std.math.lerp; + const Vec2 = oc.Vec2; const Mat2x3 = oc.Mat2x3; const Str8 = oc.Str8; @@ -9,6 +11,7 @@ var surface: oc.Surface = undefined; var canvas: oc.Canvas = undefined; var font: oc.Font = undefined; var orca_image: oc.Image = undefined; +var gradient_image: oc.Image = undefined; var counter: u32 = 0; var last_seconds: f64 = 0; @@ -42,6 +45,41 @@ export fn oc_on_init() void { orca_image = oc.Image.createFromPath(surface, Str8.fromSlice("/orca_jumping.jpg"), false); oc.assert(oc.Image.nil().isNil() == true, "nil image should be nil", .{}, @src()); oc.assert(orca_image.isNil() == false, "created image should not be nil", .{}, @src()); + + // generate a gradient and upload it to an image + { + const width = 256; + const height = 128; + + const tl = oc.Color{ .r = 70.0 / 255.0, .g = 13.0 / 255.0, .b = 108.0 / 255.0 }; + const bl = oc.Color{ .r = 251.0 / 255.0, .g = 167.0 / 255.0, .b = 87.0 / 255.0 }; + const tr = oc.Color{ .r = 48.0 / 255.0, .g = 164.0 / 255.0, .b = 219.0 / 255.0 }; + const br = oc.Color{ .r = 151.0 / 255.0, .g = 222.0 / 255.0, .b = 150.0 / 255.0 }; + + var pixels: [width * height]u32 = undefined; + for (0..height) |y| { + for (0..width) |x| { + const h: f32 = @floatFromInt(height - 1); + const w: f32 = @floatFromInt(width - 1); + const y_norm: f32 = @as(f32, @floatFromInt(y)) / h; + const x_norm: f32 = @as(f32, @floatFromInt(x)) / w; + + const tl_weight = (1 - x_norm) * (1 - y_norm); + const bl_weight = (1 - x_norm) * y_norm; + const tr_weight = x_norm * (1 - y_norm); + const br_weight = x_norm * y_norm; + + const r: f32 = tl_weight * tl.r + bl_weight * bl.r + tr_weight * tr.r + br_weight * br.r; + const g: f32 = tl_weight * tl.g + bl_weight * bl.g + tr_weight * tr.g + br_weight * br.g; + const b: f32 = tl_weight * tl.b + bl_weight * bl.b + tr_weight * tr.b + br_weight * br.b; + const color = oc.Color{ .r = r, .g = g, .b = b, .a = 1.0 }; + pixels[y * width + x] = color.toRgba8(); + } + } + + gradient_image = oc.Image.create(surface, width, height); + gradient_image.uploadRegionRgba8(oc.Rect.xywh(0, 0, width, height), @ptrCast((&pixels).ptr)); + } } export fn oc_on_resize(width: u32, height: u32) void { @@ -106,9 +144,9 @@ export fn oc_on_frame_refresh() void { oc.Canvas.roundedRectangleFill(90, 0, 10, 10, 3); oc.Canvas.roundedRectangleStroke(110, 0, 10, 10, 3); - const green = oc.Color{ .Flat = .{ .r = 0.05, .g = 1, .b = 0.05, .a = 1 } }; + const green = oc.Color{ .r = 0.05, .g = 1, .b = 0.05, .a = 1 }; oc.Canvas.setColor(green); - oc.assert(std.meta.eql(oc.Canvas.getColor().Flat, green.Flat), "color should be green", .{}, @src()); + oc.assert(std.meta.eql(oc.Canvas.getColor(), green), "color should be green", .{}, @src()); oc.Canvas.setTolerance(1); oc.Canvas.setJoint(.Bevel); @@ -204,18 +242,32 @@ export fn oc_on_frame_refresh() void { } { - const trans = Mat2x3.translate(0, 200); - const scale = Mat2x3.scaleUniform(0.25); - Mat2x3.push(Mat2x3.mul_m(trans, scale)); - defer Mat2x3.pop(); + const orca_size = orca_image.size(); - const size = orca_image.size(); + { + const trans = Mat2x3.translate(0, 200); + const scale = Mat2x3.scaleUniform(0.25); + Mat2x3.push(Mat2x3.mul_m(trans, scale)); + defer Mat2x3.pop(); - orca_image.draw(oc.Rect.xywh(0, 0, size.x, size.y)); + orca_image.draw(oc.Rect.xywh(0, 0, orca_size.x, orca_size.y)); - var half_size = orca_image.size(); - half_size.x /= 2; - orca_image.drawRegion(oc.Rect.xywh(0, 0, half_size.x, half_size.y), oc.Rect.xywh(size.x + 10, 0, half_size.x, half_size.y)); + var half_size = orca_size; + half_size.x /= 2; + orca_image.drawRegion(oc.Rect.xywh(0, 0, half_size.x, half_size.y), oc.Rect.xywh(orca_size.x + 10, 0, half_size.x, half_size.y)); + } + + { + const x_offset = orca_size.x * 0.25 + orca_size.x * 0.25 * 0.5 + 5; + const gradient_size = gradient_image.size(); + + const trans = Mat2x3.translate(x_offset, 200); + const scale = Mat2x3.scaleUniform((orca_size.y * 0.25) / gradient_size.y); + Mat2x3.push(Mat2x3.mul_m(trans, scale)); + defer Mat2x3.pop(); + + gradient_image.draw(oc.Rect.xywh(0, 0, gradient_size.x, gradient_size.y)); + } } surface.select(); @@ -231,3 +283,7 @@ fn fatal(err: anyerror, source: std.builtin.SourceLocation) noreturn { oc.abort("Caught fatal {}", .{err}, source); unreachable; } + +fn oneMinusLerp(a: anytype, b: anytype, t: anytype) @TypeOf(a, b, t) { + return 1.0 - lerp(a, b, t); +} diff --git a/src/orca.zig b/src/orca.zig index 081f820..f2ec80a 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -1596,12 +1596,12 @@ pub const Image = extern struct { extern fn oc_image_nil() Image; extern fn oc_image_is_nil(image: Image) bool; extern fn oc_image_create(surface: Surface, width: u32, height: u32) Image; - extern fn oc_image_create_from_rgba8(surface: Surface, width: u32, height: u32, pixels: [*]u8) Image; + extern fn oc_image_create_from_rgba8(surface: Surface, width: u32, height: u32, pixels: [*]const u8) Image; extern fn oc_image_create_from_memory(surface: Surface, mem: Str8, flip: bool) Image; extern fn oc_image_create_from_file(surface: Surface, file: File, flip: bool) Image; extern fn oc_image_create_from_path(surface: Surface, path: Str8, flip: bool) Image; extern fn oc_image_destroy(image: Image) void; - extern fn oc_image_upload_region_rgba8(image: Image, region: Rect, pixels: [*]u8) void; + extern fn oc_image_upload_region_rgba8(image: Image, region: Rect, pixels: [*]const u8) void; extern fn oc_image_size(image: Image) Vec2; extern fn oc_image_draw(image: Image, rect: Rect) void; extern fn oc_image_draw_region(image: Image, srcRegion: Rect, dstRegion: Rect) void; @@ -1638,14 +1638,24 @@ pub const Rect = extern union { } }; -pub const Color = extern union { - Flat: extern struct { - r: f32, - g: f32, - b: f32, - a: f32, - }, - Array: [4]f32, +pub const Color = extern struct { + r: f32 = 1.0, + g: f32 = 1.0, + b: f32 = 1.0, + a: f32 = 1.0, + + pub fn toArray(color: *Color) *[4]f32 { + return @ptrCast(color); + } + + pub fn toRgba8(color: *const Color) u32 { + var c: u32 = 0; + c |= @as(u32, @intFromFloat(color.r * 255.0)); + c |= @as(u32, @intFromFloat(color.g * 255.0)) << 8; + c |= @as(u32, @intFromFloat(color.b * 255.0)) << 16; + c |= @as(u32, @intFromFloat(color.a * 255.0)) << 24; + return c; + } }; //------------------------------------------------------------------------------------------ -- 2.25.1 From 47cba86c03b84ced678c9ef211558097e22172c0 Mon Sep 17 00:00:00 2001 From: Reuben Dunnington Date: Mon, 2 Oct 2023 20:18:33 -0700 Subject: [PATCH 21/24] zig bindings: oc_surface_render_commands --- src/orca.zig | 77 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 10 deletions(-) diff --git a/src/orca.zig b/src/orca.zig index f2ec80a..2d94654 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -1550,6 +1550,62 @@ pub const clip = struct { pub const top = oc_clip_top; }; +//------------------------------------------------------------------------------------------ +// [GRAPHICS]: path primitives +//------------------------------------------------------------------------------------------ + +const PathEltType = enum(c_uint) { + Move, + Line, + Quadratic, + Cubic, +}; + +const PathElt = extern struct { + type: PathEltType, + p: [3]Vec2, +}; + +const PathDescriptor = extern struct { + start_index: u32, + count: u32, + start_point: Vec2, +}; + +const Attributes = extern struct { + width: f32, + tolerance: f32, + color: Color, + joint: JointType, + max_joint_excursion: f32, + cap: CapType, + + font: Font, + font_size: f32, + + image: Image, + src_region: Rect, + + transform: Mat2x3, + clip: Rect, +}; + +const PrimitiveCmd = enum(c_uint) { + Fill, + Stroke, + Jump, +}; + +const Primitive = extern struct { + cmd: PrimitiveCmd, + attributes: Attributes, + data: extern union { + path: PathDescriptor, + rect: Rect, + jump: u32, + }, +}; + //------------------------------------------------------------------------------------------ // [GRAPHICS]: resources //------------------------------------------------------------------------------------------ @@ -1567,15 +1623,14 @@ pub const Surface = extern struct { extern fn oc_surface_contents_scaling(surface: Surface) Vec2; extern fn oc_surface_bring_to_front(surface: Surface) void; extern fn oc_surface_send_to_back(surface: Surface) void; - // TODO - // extern fn oc_surface_render_commands( - // surface: Surface, - // color: Color, - // primitive_count: u32, - // primitives: [*]Primitive, - // elt_count: u32, - // elements: [*]PathElt, - // ) void; + extern fn oc_surface_render_commands( + surface: Surface, + color: Color, + primitive_count: u32, + primitives: [*]Primitive, + elt_count: u32, + elements: [*]PathElt, + ) void; pub const nil = oc_surface_nil; pub const isNil = oc_surface_is_nil; @@ -1587,7 +1642,9 @@ pub const Surface = extern struct { pub const contentsScaling = oc_surface_contents_scaling; pub const bringToFront = oc_surface_bring_to_front; pub const sendToBack = oc_surface_send_to_back; - // pub const renderCommands = oc_surface_render_commands; + pub fn renderCommands(surface: Surface, color: Color, primitives: []Primitive, elements: []PathElt) void { + oc_surface_render_commands(surface, color, @intCast(primitives.len), primitives.ptr, @intCast(elements.len), elements.ptr); + } }; pub const Image = extern struct { -- 2.25.1 From fd308f9a3a55537f9764cb0c94d8127b2188b102 Mon Sep 17 00:00:00 2001 From: Ilia Demianenko Date: Fri, 29 Sep 2023 18:15:04 -0700 Subject: [PATCH 22/24] Zig UI demo --- samples/ui/src/main.c | 58 +- samples/zig-sample/README.md | 1 - samples/zig-sample/src/main.zig | 2 +- samples/zig-ui/.gitignore | 6 + samples/zig-ui/README.md | 13 + samples/zig-ui/build.zig | 107 ++ samples/zig-ui/data/OpenSans-Bold.ttf | Bin 0 -> 130864 bytes samples/zig-ui/data/OpenSans-Regular.ttf | Bin 0 -> 130836 bytes samples/zig-ui/src/main.zig | 870 ++++++++++++ src/orca.zig | 1563 +++++++++++++++++++++- src/ui/ui.c | 107 +- src/ui/ui.h | 14 - 12 files changed, 2633 insertions(+), 108 deletions(-) create mode 100644 samples/zig-ui/.gitignore create mode 100644 samples/zig-ui/README.md create mode 100644 samples/zig-ui/build.zig create mode 100644 samples/zig-ui/data/OpenSans-Bold.ttf create mode 100644 samples/zig-ui/data/OpenSans-Regular.ttf create mode 100644 samples/zig-ui/src/main.zig diff --git a/samples/ui/src/main.c b/samples/ui/src/main.c index 49c2fe8..7bcecdb 100644 --- a/samples/ui/src/main.c +++ b/samples/ui/src/main.c @@ -73,6 +73,12 @@ ORCA_EXPORT void oc_on_raw_event(oc_event* event) oc_ui_process_event(event); } +ORCA_EXPORT void oc_on_resize(u32 width, u32 height) +{ + frameSize.x = width; + frameSize.y = height; +} + void log_push(const char* line) { oc_str8_list_push(&logArena, &logLines, (oc_str8)OC_STR8(line)); @@ -158,12 +164,6 @@ void labeled_slider(const char* label, f32* value) } } -ORCA_EXPORT void oc_on_resize(u32 width, u32 height) -{ - frameSize.x = width; - frameSize.y = height; -} - void reset_next_radio_group_to_dark_theme(oc_arena* arena); ORCA_EXPORT void oc_on_frame_refresh(void) @@ -330,7 +330,7 @@ ORCA_EXPORT void oc_on_frame_refresh(void) radioSelected = result.selectedIndex; if(result.changed) { - log_pushf("Selected Radio %i", result.selectedIndex + 1); + log_pushf("Selected %s", options[result.selectedIndex].ptr); } //----------------------------------------------------------------------------- @@ -359,13 +359,13 @@ ORCA_EXPORT void oc_on_frame_refresh(void) .size.height = { OC_UI_SIZE_TEXT } }, OC_UI_STYLE_SIZE); static oc_str8 text = OC_STR8_LIT("Text box"); - oc_ui_text_box_result res = oc_ui_text_box("text", scratch.arena, text); - if(res.changed) + oc_ui_text_box_result result = oc_ui_text_box("text", scratch.arena, text); + if(result.changed) { oc_arena_clear(&textArena); - text = oc_str8_push_copy(&textArena, res.text); + text = oc_str8_push_copy(&textArena, result.text); } - if(res.accepted) + if(result.accepted) { log_pushf("Entered text \"%s\"", text.ptr); } @@ -465,7 +465,7 @@ ORCA_EXPORT void oc_on_frame_refresh(void) oc_ui_style_next(&(oc_ui_style){ .size.width = { OC_UI_SIZE_PARENT, 1 }, .size.height = { OC_UI_SIZE_PIXELS, 152 }, - .layout.margin.x = 320, + .layout.margin.x = 310, .layout.margin.y = 16, .bgColor = OC_UI_DARK_THEME.bg0, .roundness = OC_UI_DARK_THEME.roundnessSmall }, @@ -527,8 +527,8 @@ ORCA_EXPORT void oc_on_frame_refresh(void) | OC_UI_STYLE_BG_COLOR | OC_UI_STYLE_ROUNDNESS); - oc_ui_pattern labelPattern = { 0 }; oc_ui_tag labelTag = oc_ui_tag_make("label"); + oc_ui_pattern labelPattern = { 0 }; oc_ui_pattern_push(scratch.arena, &labelPattern, (oc_ui_selector){ .kind = OC_UI_SEL_TAG, .tag = labelTag }); oc_ui_style_match_after(labelPattern, &(oc_ui_style){ .color = labelFontColor, @@ -818,32 +818,32 @@ ORCA_EXPORT void oc_on_frame_refresh(void) // You won't need it in a real program as long as your colors come from ui.theme or ui.theme->palette void reset_next_radio_group_to_dark_theme(oc_arena* arena) { - oc_ui_tag defaultTag = oc_ui_tag_make("radio"); - oc_ui_pattern defaultPattern = { 0 }; - oc_ui_pattern_push(arena, &defaultPattern, (oc_ui_selector){ .kind = OC_UI_SEL_TAG, .tag = defaultTag }); - oc_ui_style defaultStyle = { .borderColor = OC_UI_DARK_THEME.text3, - .borderSize = 1 }; - oc_ui_style_mask defaultMask = OC_UI_STYLE_BORDER_COLOR - | OC_UI_STYLE_BORDER_SIZE; - oc_ui_style_match_after(defaultPattern, &defaultStyle, defaultMask); + oc_ui_tag unselectedTag = oc_ui_tag_make("radio"); + oc_ui_pattern unselectedPattern = { 0 }; + oc_ui_pattern_push(arena, &unselectedPattern, (oc_ui_selector){ .kind = OC_UI_SEL_TAG, .tag = unselectedTag }); + oc_ui_style unselectedStyle = { .borderColor = OC_UI_DARK_THEME.text3, + .borderSize = 1 }; + oc_ui_style_mask unselectedMask = OC_UI_STYLE_BORDER_COLOR + | OC_UI_STYLE_BORDER_SIZE; + oc_ui_style_match_after(unselectedPattern, &unselectedStyle, unselectedMask); - oc_ui_pattern hoverPattern = { 0 }; - oc_ui_pattern_push(arena, &hoverPattern, (oc_ui_selector){ .kind = OC_UI_SEL_TAG, .tag = defaultTag }); - oc_ui_pattern_push(arena, &hoverPattern, (oc_ui_selector){ .op = OC_UI_SEL_AND, .kind = OC_UI_SEL_STATUS, .status = OC_UI_HOVER }); + oc_ui_pattern unselectedHoverPattern = { 0 }; + oc_ui_pattern_push(arena, &unselectedHoverPattern, (oc_ui_selector){ .kind = OC_UI_SEL_TAG, .tag = unselectedTag }); + oc_ui_pattern_push(arena, &unselectedHoverPattern, (oc_ui_selector){ .op = OC_UI_SEL_AND, .kind = OC_UI_SEL_STATUS, .status = OC_UI_HOVER }); oc_ui_style hoverStyle = { .bgColor = OC_UI_DARK_THEME.fill0, .borderColor = OC_UI_DARK_THEME.primary }; oc_ui_style_mask hoverMask = OC_UI_STYLE_BG_COLOR | OC_UI_STYLE_BORDER_COLOR; - oc_ui_style_match_after(hoverPattern, &hoverStyle, hoverMask); + oc_ui_style_match_after(unselectedHoverPattern, &hoverStyle, hoverMask); - oc_ui_pattern activePattern = { 0 }; - oc_ui_pattern_push(arena, &activePattern, (oc_ui_selector){ .kind = OC_UI_SEL_TAG, .tag = defaultTag }); - oc_ui_pattern_push(arena, &activePattern, (oc_ui_selector){ .op = OC_UI_SEL_AND, .kind = OC_UI_SEL_STATUS, .status = OC_UI_ACTIVE }); + oc_ui_pattern unselectedActivePattern = { 0 }; + oc_ui_pattern_push(arena, &unselectedActivePattern, (oc_ui_selector){ .kind = OC_UI_SEL_TAG, .tag = unselectedTag }); + oc_ui_pattern_push(arena, &unselectedActivePattern, (oc_ui_selector){ .op = OC_UI_SEL_AND, .kind = OC_UI_SEL_STATUS, .status = OC_UI_ACTIVE }); oc_ui_style activeStyle = { .bgColor = OC_UI_DARK_THEME.fill1, .borderColor = OC_UI_DARK_THEME.primary }; oc_ui_style_mask activeMask = OC_UI_STYLE_BG_COLOR | OC_UI_STYLE_BORDER_COLOR; - oc_ui_style_match_after(activePattern, &activeStyle, activeMask); + oc_ui_style_match_after(unselectedActivePattern, &activeStyle, activeMask); oc_ui_tag selectedTag = oc_ui_tag_make("radio_selected"); oc_ui_pattern selectedPattern = { 0 }; diff --git a/samples/zig-sample/README.md b/samples/zig-sample/README.md index 99b973c..5320304 100644 --- a/samples/zig-sample/README.md +++ b/samples/zig-sample/README.md @@ -9,6 +9,5 @@ These two commands build the runtime - the native host executable - and the samp ### Warning Zig bindings for Orca are in-progress and experimental. You may encounter bugs since not all the bound APIs have been tested extensively - this sample is currently the only code doing so! Additionally, not all APIs have zig coverage yet, notably: -* `oc_ui` * `gles` As more APIs get tested, there is a possibility of breaking changes. Please report any bugs you find on the Handmade discord in the #orca channel. diff --git a/samples/zig-sample/src/main.zig b/samples/zig-sample/src/main.zig index 27ba3db..a0ede41 100644 --- a/samples/zig-sample/src/main.zig +++ b/samples/zig-sample/src/main.zig @@ -205,7 +205,7 @@ export fn oc_on_frame_refresh() void { const text_rect = text_metrics.ink; const center_x = frame_size.x / 2; - const text_begin_x = center_x - text_rect.Flat.w / 2; + const text_begin_x = center_x - text_rect.w / 2; Mat2x3.push(Mat2x3.translate(text_begin_x, 100)); defer Mat2x3.pop(); diff --git a/samples/zig-ui/.gitignore b/samples/zig-ui/.gitignore new file mode 100644 index 0000000..ab6e6a5 --- /dev/null +++ b/samples/zig-ui/.gitignore @@ -0,0 +1,6 @@ +UI +zig-out +zig-cache +liborca.a +profile.dtrace +profile.spall diff --git a/samples/zig-ui/README.md b/samples/zig-ui/README.md new file mode 100644 index 0000000..5320304 --- /dev/null +++ b/samples/zig-ui/README.md @@ -0,0 +1,13 @@ +### Build and run +Zig version `0.11.0` or greater is required for this sample. To build and run: +``` +orca dev build-runtime +zig build run +``` + +These two commands build the runtime - the native host executable - and the sample as a loadable wasm library, then runs it. To only build the sample without running it, use `zig build bundle`. + +### Warning +Zig bindings for Orca are in-progress and experimental. You may encounter bugs since not all the bound APIs have been tested extensively - this sample is currently the only code doing so! Additionally, not all APIs have zig coverage yet, notably: +* `gles` +As more APIs get tested, there is a possibility of breaking changes. Please report any bugs you find on the Handmade discord in the #orca channel. diff --git a/samples/zig-ui/build.zig b/samples/zig-ui/build.zig new file mode 100644 index 0000000..5060e0b --- /dev/null +++ b/samples/zig-ui/build.zig @@ -0,0 +1,107 @@ +const std = @import("std"); +const builtin = @import("builtin"); + +fn addSourceString(str: []const u8, strings: *std.ArrayList(u8), sources: *std.ArrayList([]const u8)) !void { + var begin = strings.items.len; + try strings.appendSlice(str); + var realstring = strings.items[begin..]; + try sources.append(realstring); +} + +pub fn build(b: *std.Build) !void { + const optimize = b.standardOptimizeOption(.{}); + var wasm_target = std.zig.CrossTarget{ + .cpu_arch = .wasm32, + .os_tag = .freestanding, + }; + wasm_target.cpu_features_add.addFeature(@intFromEnum(std.Target.wasm.Feature.bulk_memory)); + + var orca_source_strings = try std.ArrayList(u8).initCapacity(b.allocator, 1024 * 4); + var orca_sources = try std.ArrayList([]const u8).initCapacity(b.allocator, 128); + defer orca_source_strings.deinit(); + defer orca_sources.deinit(); + + { + try addSourceString("../../src/orca.c", &orca_source_strings, &orca_sources); + + var libc_shim_dir = try std.fs.cwd().openIterableDir("../../src/libc-shim/src", .{}); + var walker = try libc_shim_dir.walk(b.allocator); + defer walker.deinit(); + + while (try walker.next()) |entry| { + const extension = std.fs.path.extension(entry.path); + if (std.mem.eql(u8, extension, ".c")) { + var path_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; + var abs_path = try libc_shim_dir.dir.realpath(entry.path, &path_buffer); + try addSourceString(abs_path, &orca_source_strings, &orca_sources); + } + } + } + + const orca_compile_opts = [_][]const u8{ + "-D__ORCA__", + "--no-standard-libraries", + "-fno-builtin", + "-g", + "-O2", + "-mexec-model=reactor", + "-fno-sanitize=undefined", + "-isystem ../../src/libc-shim/include", + "-I../../src", + "-I../../src/ext", + "-Wl,--export-dynamic", + }; + + var orca_lib = b.addStaticLibrary(.{ + .name = "orca", + .target = wasm_target, + .optimize = optimize, + }); + orca_lib.rdynamic = true; + orca_lib.addIncludePath(.{ .path = "../../src" }); + orca_lib.addIncludePath(.{ .path = "../../src/libc-shim/include" }); + orca_lib.addIncludePath(.{ .path = "../../src/ext" }); + orca_lib.addCSourceFiles(orca_sources.items, &orca_compile_opts); + + // builds the wasm module out of the orca C sources and main.zig + const orca_module: *std.Build.Module = b.createModule(.{ + .source_file = .{ .path = "../../src/orca.zig" }, + }); + const wasm_lib = b.addSharedLibrary(.{ + .name = "module", + .root_source_file = .{ .path = "src/main.zig" }, + .target = wasm_target, + .optimize = optimize, + }); + wasm_lib.rdynamic = true; + wasm_lib.addIncludePath(.{ .path = "../../src" }); + wasm_lib.addIncludePath(.{ .path = "../../src/libc-shim/include" }); + wasm_lib.addIncludePath(.{ .path = "../../ext" }); + wasm_lib.addModule("orca", orca_module); + wasm_lib.linkLibrary(orca_lib); + + // copies the wasm module into zig-out/wasm_lib + b.installArtifact(wasm_lib); + + // Runs the orca build command + const bundle_cmd_str = [_][]const u8{ "orca", "bundle", "--orca-dir", "../..", "--name", "UI", "--resource-dir", "data", "zig-out/lib/module.wasm" }; + var bundle_cmd = b.addSystemCommand(&bundle_cmd_str); + bundle_cmd.step.dependOn(b.getInstallStep()); + + const bundle_step = b.step("bundle", "Runs the orca toolchain to bundle the wasm module into an orca app."); + bundle_step.dependOn(&bundle_cmd.step); + + // Runs the app + const run_cmd_windows = [_][]const u8{"UI/bin/UI.exe"}; + const run_cmd_macos = [_][]const u8{ "open", "UI.app" }; + const run_cmd_str: []const []const u8 = switch (builtin.os.tag) { + .windows => &run_cmd_windows, + .macos => &run_cmd_macos, + else => @compileError("unsupported platform"), + }; + var run_cmd = b.addSystemCommand(run_cmd_str); + run_cmd.step.dependOn(&bundle_cmd.step); + + const run_step = b.step("run", "Runs the bundled app using the Orca runtime."); + run_step.dependOn(&run_cmd.step); +} diff --git a/samples/zig-ui/data/OpenSans-Bold.ttf b/samples/zig-ui/data/OpenSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4a5bc3958b164df21ed073620b89b58c1d1e420c GIT binary patch literal 130864 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�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%0DT7>-*+<%js3u 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

n4|U;7DM$wDnY1Ax#u}jKp!>O?~@hdwQoA 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

U6$t8WhBdG7e%? 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 literal 0 HcmV?d00001 diff --git a/samples/zig-ui/src/main.zig b/samples/zig-ui/src/main.zig new file mode 100644 index 0000000..4d8112c --- /dev/null +++ b/samples/zig-ui/src/main.zig @@ -0,0 +1,870 @@ +const std = @import("std"); +const oc = @import("orca"); + +var frame_size: oc.Vec2 = .{ .x = 1200, .y = 838 }; + +var surface: oc.Surface = undefined; +var canvas: oc.Canvas = undefined; +var font_regular: oc.Font = undefined; +var font_bold: oc.Font = undefined; +var ui: oc.UiContext = undefined; +var text_arena: oc.Arena = undefined; +var log_arena: oc.Arena = undefined; +var log_lines: oc.Str8List = undefined; + +const Cmd = enum { + None, + SetDarkTheme, + SetLightTheme, +}; +var cmd: Cmd = .None; + +export fn oc_on_init() void { + oc.windowSetTitle("Orca Zig UI Demo"); + oc.windowSetSize(frame_size); + + surface = oc.Surface.canvas(); + canvas = oc.Canvas.create(); + ui.init(); + + var fonts = [_]*oc.Font{ &font_regular, &font_bold }; + var font_names = [_][]const u8{ "/OpenSans-Regular.ttf", "/OpenSans-Bold.ttf" }; + for (fonts, font_names) |font, name| { + var scratch = oc.Arena.scratchBegin(); + defer scratch.end(); + + var file = oc.File.open(oc.Str8.fromSlice(name), .{ .read = true }, .{}); + if (file.lastError() != oc.io.Error.Ok) { + oc.log.err("Couldn't open file {s}", .{name}, @src()); + } + + var size = file.getSize(); + var buffer = scratch.arena.push(size) catch { + oc.log.err("Out of memory", .{}, @src()); + return; + }; + _ = file.read(size, buffer); + file.close(); + + var ranges = oc.UnicodeRange.range(&[_]oc.UnicodeRange.Enum{ + .BasicLatin, + .C1ControlsAndLatin1Supplement, + .LatinExtendedA, + .LatinExtendedB, + .Specials, + }); + + font.* = oc.Font.createFromMemory(buffer[0..size], &ranges); + } + + text_arena = oc.Arena.init(); + log_arena = oc.Arena.init(); + log_lines = oc.Str8List.init(); +} + +export fn oc_on_raw_event(event: *oc.CEvent) void { + oc.uiProcessCEvent(event); +} + +export fn oc_on_resize(width: u32, height: u32) void { + frame_size.x = @floatFromInt(width); + frame_size.y = @floatFromInt(height); +} + +export fn oc_on_frame_refresh() void { + var scratch = oc.Arena.scratchBegin(); + defer scratch.end(); + + switch (cmd) { + .SetDarkTheme => oc.uiSetTheme(oc.ui_dark_theme), + .SetLightTheme => oc.uiSetTheme(oc.ui_light_theme), + .None => {}, + } + cmd = .None; + + var default_style = oc.UiStyle{ .font = font_regular }; + { + oc.uiBeginFrame(frame_size, &default_style); + defer oc.uiEndFrame(); + + //-------------------------------------------------------------------------------------------- + // Menu bar + //-------------------------------------------------------------------------------------------- + { + oc.uiMenuBarBegin("menu_bar"); + defer oc.uiMenuBarEnd(); + + { + oc.uiMenuBegin("File"); + defer oc.uiMenuEnd(); + + if (oc.uiMenuButton("Quit").pressed) { + oc.requestQuit(); + } + } + + { + oc.uiMenuBegin("Theme"); + defer oc.uiMenuEnd(); + + if (oc.uiMenuButton("Dark theme").pressed) { + cmd = .SetDarkTheme; + } + if (oc.uiMenuButton("Light theme").pressed) { + cmd = .SetLightTheme; + } + } + } + + { + oc.uiPanelBegin("main panel", .{}); + defer oc.uiPanelEnd(); + + { + oc.uiStyleNext(.{ + .size = .{ + .width = .fill_parent, + .height = .{ .custom = .{ .kind = .Parent, .value = 1, .relax = 1 } }, + }, + .layout = .{ + .axis = .X, + .margin = .{ .x = 16, .y = 16 }, + .spacing = 16, + }, + }); + _ = oc.uiBoxBegin("Background", .{ .draw_background = true }); + defer _ = oc.uiBoxEnd(); + + widgets(scratch.arena); + + styling(scratch.arena); + } + } + } + + _ = canvas.select(); + surface.select(); + + oc.Canvas.setColor(ui.theme.bg0); + oc.Canvas.clear(); + + oc.uiDraw(); + canvas.render(); + surface.present(); +} + +var checkbox_checked: bool = false; +var v_slider_value: f32 = 0; +var v_slider_logged_value: f32 = 0; +var v_slider_log_time: f64 = 0; +var radio_selected: usize = 0; +var h_slider_value: f32 = 0; +var h_slider_logged_value: f32 = 0; +var h_slider_log_time: f64 = 0; +var text: []const u8 = "Text box"; +var selected: ?usize = null; + +fn widgets(arena: *oc.Arena) void { + columnBegin("Widgets", 1.0 / 3.0); + defer columnEnd(); + + { + oc.uiStyleNext(.{ + .size = .{ + .width = .fill_parent, + }, + .layout = .{ + .axis = .X, + .spacing = 32, + }, + }); + _ = oc.uiBoxBegin("top", .{}); + defer _ = oc.uiBoxEnd(); + + { + oc.uiStyleNext(.{ + .layout = .{ + .axis = .Y, + .spacing = 24, + }, + }); + _ = oc.uiBoxBegin("top_left", .{}); + defer _ = oc.uiBoxEnd(); + + //----------------------------------------------------------------------------- + // Label + //----------------------------------------------------------------------------- + _ = oc.uiLabel("Label"); + + //----------------------------------------------------------------------------- + // Button + //----------------------------------------------------------------------------- + if (oc.uiButton("Button").clicked) { + logPush("Button clicked"); + } + + { + oc.uiStyleNext(.{ + .layout = .{ + .axis = .X, + .alignment = .{ .y = .Center }, + .spacing = 8, + }, + }); + _ = oc.uiBoxBegin("checkbox", .{}); + defer _ = oc.uiBoxEnd(); + + //------------------------------------------------------------------------- + // Checkbox + //------------------------------------------------------------------------- + if (oc.uiCheckbox("checkbox", &checkbox_checked).clicked) { + if (checkbox_checked) { + logPush("Checkbox checked"); + } else { + logPush("Checkbox unhecked"); + } + } + + _ = oc.uiLabel("Checkbox"); + } + } + + //--------------------------------------------------------------------------------- + // Vertical slider + //--------------------------------------------------------------------------------- + oc.uiStyleNext(.{ .size = .{ .height = .{ .pixels = 130 } } }); + _ = oc.uiSlider("v_slider", &v_slider_value); + + var now = oc.clock.time(.Monotonic); + if ((now - v_slider_log_time) >= 0.2 and v_slider_value != v_slider_logged_value) { + logPushf("Vertical slider moved to {d:.3}", .{v_slider_value}); + v_slider_logged_value = v_slider_value; + v_slider_log_time = now; + } + + { + oc.uiStyleNext(.{ + .layout = .{ + .axis = .Y, + .spacing = 24, + }, + }); + _ = oc.uiBoxBegin("top right", .{}); + defer _ = oc.uiBoxEnd(); + + //----------------------------------------------------------------------------- + // Tooltip + //----------------------------------------------------------------------------- + if (oc.uiLabel("Tooltip").hovering) { + oc.uiTooltip("Hi"); + } + + //----------------------------------------------------------------------------- + // Radio group + //----------------------------------------------------------------------------- + var options = [_][]const u8{ + "Radio 1", + "Radio 2", + }; + var radio_group_info = oc.UiRadioGroupInfo{ + .selected_index = radio_selected, + .options = &options, + }; + var result = oc.uiRadioGroup("radio_group", &radio_group_info); + radio_selected = result.selected_index.?; + if (result.changed) { + logPushf("Selected {s}", .{options[radio_selected]}); + } + + //----------------------------------------------------------------------------- + // Horizontal slider + //----------------------------------------------------------------------------- + oc.uiStyleNext(.{ .size = .{ .width = .{ .pixels = 130 } } }); + _ = oc.uiSlider("h_slider", &h_slider_value); + + if ((now - h_slider_log_time) >= 0.2 and h_slider_value != h_slider_logged_value) { + logPushf("Slider moved to {d:.3}", .{h_slider_value}); + h_slider_logged_value = h_slider_value; + h_slider_log_time = now; + } + } + } + + //------------------------------------------------------------------------------------- + // Text box + //------------------------------------------------------------------------------------- + oc.uiStyleNext(.{ + .size = .{ + .width = .{ .pixels = 305 }, + .height = .text, + }, + }); + var textResult = oc.uiTextBox("text", arena.*, text); + if (textResult.changed) { + text_arena.clear(); + text = text_arena.pushStr(textResult.text) catch { + oc.log.err("Out of memory", .{}, @src()); + oc.requestQuit(); + return; + }; + } + if (textResult.accepted) { + logPushf("Entered text {s}", .{text}); + } + + //------------------------------------------------------------------------------------- + // Select + //------------------------------------------------------------------------------------- + var options = [_][]const u8{ + "Option 1", + "Option 2", + }; + var select_popup_info = oc.UiSelectPopupInfo{ + .selected_index = selected, + .options = &options, + .placeholder = "Select", + }; + var selectResult = oc.uiSelectPopup("select", &select_popup_info); + if (selectResult.selected_index != selected) { + logPushf("Selected {s}", .{options[selectResult.selected_index.?]}); + } + selected = selectResult.selected_index; + + //------------------------------------------------------------------------------------- + // Scrollable panel + //------------------------------------------------------------------------------------- + { + oc.uiStyleNext(.{ + .size = .{ + .width = .fill_parent, + .height = .{ + .custom = .{ .kind = .Parent, .value = 1, .relax = 1, .min_size = 200 }, + }, + }, + .bg_color = ui.theme.bg2, + .border_color = ui.theme.border, + .border_size = 1, + .roundness = ui.theme.roundness_small, + }); + _ = oc.uiPanelBegin("log", .{ .draw_background = true, .draw_border = true }); + defer oc.uiPanelEnd(); + + { + oc.uiStyleNext(.{ + .layout = .{ + .margin = .{ .x = 16, .y = 16 }, + }, + }); + _ = oc.uiBoxBegin("contents", .{}); + defer _ = oc.uiBoxEnd(); + + if (log_lines.list.empty()) { + oc.uiStyleNext(.{ .color = ui.theme.text2 }); + _ = oc.uiLabel("Log"); + } + + var i: i32 = 0; + var log_lines_iter = log_lines.iter(); + while (log_lines_iter.next()) |log_line| { + var buf: [15]u8 = undefined; + var id = std.fmt.bufPrint(&buf, "{d}", .{i}) catch unreachable; + _ = oc.uiBoxBegin(id, .{}); + defer _ = oc.uiBoxEnd(); + + _ = oc.uiLabel(log_line.string.slice()); + + i += 1; + } + } + } +} + +var styling_selected_radio: ?usize = 0; +var unselected_width: f32 = 16; +var unselected_height: f32 = 16; +var unselected_roundness: f32 = 8; +var unselected_bg_color: oc.Color = oc.Color.rgba(0.086, 0.086, 0.102, 1); +var unselected_border_color: oc.Color = oc.Color.rgba(0.976, 0.976, 0.976, 0.35); +var unselected_border_size: f32 = 1; +var unselected_when_status: oc.UiStatus = .{}; +var unselected_status_index: ?usize = 0; +var selected_width: f32 = 16; +var selected_height: f32 = 16; +var selected_roundness: f32 = 8; +var selected_center_color: oc.Color = oc.Color.rgba(1, 1, 1, 1); +var selected_bg_color: oc.Color = oc.Color.rgba(0.33, 0.66, 1, 1); +var selected_when_status: oc.UiStatus = .{}; +var selected_status_index: ?usize = 0; +var label_font_color: oc.Color = oc.Color.rgba(0.976, 0.976, 0.976, 1); +var label_font_color_selected: ?usize = 0; +var label_font: *oc.Font = &font_regular; +var label_font_selected: ?usize = 0; +var label_font_size: f32 = 14; + +fn styling(arena: *oc.Arena) void { + //----------------------------------------------------------------------------------------- + // Styling + //----------------------------------------------------------------------------------------- + // Initial values here are hardcoded from the dark theme and everything is overridden all + // the time. In a real program you'd only override what you need and supply the values from + // ui.theme or ui.theme.palette. + // + // Rule-based styling is described at + // https://www.forkingpaths.dev/posts/23-03-10/rule_based_styling_imgui.html + columnBegin("Styling", 2.0 / 3.0); + defer columnEnd(); + + { + oc.uiStyleNext(.{ + .size = .{ + .width = .fill_parent, + .height = .{ .pixels = 152 }, + }, + .layout = .{ + .margin = .{ .x = 310, .y = 16 }, + }, + .bg_color = oc.ui_dark_theme.bg0, + .roundness = oc.ui_dark_theme.roundness_small, + }); + _ = oc.uiBoxBegin("styled_radios", .{ .draw_background = true, .draw_border = true }); + defer _ = oc.uiBoxEnd(); + + resetNextRadioGroupToDarkTheme(arena); + + var unselected_tag = oc.uiTagMake("radio"); + var unselected_pattern = oc.UiPattern.init(); + unselected_pattern.push(arena, .{ .sel = .{ .tag = unselected_tag } }); + if (!unselected_when_status.empty()) { + unselected_pattern.push(arena, .{ .op = .And, .sel = .{ .status = unselected_when_status } }); + } + oc.uiStyleMatchAfter(unselected_pattern, .{ + .size = .{ + .width = .{ .pixels = unselected_width }, + .height = .{ .pixels = unselected_height }, + }, + .bg_color = unselected_bg_color, + .border_color = unselected_border_color, + .border_size = unselected_border_size, + .roundness = unselected_roundness, + }); + + var selected_tag = oc.uiTagMake("radio_selected"); + var selected_pattern = oc.UiPattern.init(); + selected_pattern.push(arena, .{ .sel = .{ .tag = selected_tag } }); + if (!selected_when_status.empty()) { + selected_pattern.push(arena, .{ .op = .And, .sel = .{ .status = selected_when_status } }); + } + oc.uiStyleMatchAfter(selected_pattern, .{ + .size = .{ + .width = .{ .pixels = selected_width }, + .height = .{ .pixels = selected_height }, + }, + .color = selected_center_color, + .bg_color = selected_bg_color, + .roundness = selected_roundness, + }); + + var label_tag = oc.uiTagMake("label"); + var label_pattern = oc.UiPattern.init(); + label_pattern.push(arena, .{ .sel = .{ .tag = label_tag } }); + oc.uiStyleMatchAfter(label_pattern, .{ + .color = label_font_color, + .font = label_font.*, + .font_size = label_font_size, + }); + + var options = [_][]const u8{ + "I", + "Am", + "Stylish", + }; + var radio_group_info = oc.UiRadioGroupInfo{ + .selected_index = styling_selected_radio, + .options = &options, + }; + var result = oc.uiRadioGroup("radio_group", &radio_group_info); + styling_selected_radio = result.selected_index; + } + + { + oc.uiStyleNext(.{ .layout = .{ .axis = .X, .spacing = 32 } }); + _ = oc.uiBoxBegin("controls", .{}); + defer _ = oc.uiBoxEnd(); + + { + oc.uiStyleNext(.{ .layout = .{ .axis = .Y, .spacing = 16 } }); + _ = oc.uiBoxBegin("unselected", .{}); + defer _ = oc.uiBoxEnd(); + + oc.uiStyleNext(.{ .font_size = 16 }); + _ = oc.uiLabel("Radio style"); + + { + oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); + _ = oc.uiBoxBegin("size", .{}); + defer _ = oc.uiBoxEnd(); + + var width_slider = (unselected_width - 8) / 16; + labeledSlider("Width", &width_slider); + unselected_width = 8 + width_slider * 16; + + var height_slider = (unselected_height - 8) / 16; + labeledSlider("Height", &height_slider); + unselected_height = 8 + height_slider * 16; + + var roundness_slider = (unselected_roundness - 4) / 8; + labeledSlider("Roundness", &roundness_slider); + unselected_roundness = 4 + roundness_slider * 8; + } + + { + oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); + _ = oc.uiBoxBegin("background", .{}); + defer _ = oc.uiBoxEnd(); + + labeledSlider("Background R", &unselected_bg_color.r); + labeledSlider("Background G", &unselected_bg_color.g); + labeledSlider("Background B", &unselected_bg_color.b); + labeledSlider("Background A", &unselected_bg_color.a); + } + + { + oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); + _ = oc.uiBoxBegin("border", .{}); + defer _ = oc.uiBoxEnd(); + + labeledSlider("Border R", &unselected_border_color.r); + labeledSlider("Border G", &unselected_border_color.g); + labeledSlider("Border B", &unselected_border_color.b); + labeledSlider("Border A", &unselected_border_color.a); + } + + var border_size_slider = unselected_border_size / 5; + labeledSlider("Border size", &border_size_slider); + unselected_border_size = border_size_slider * 5; + + { + oc.uiStyleNext(.{ .layout = .{ .spacing = 10 } }); + _ = oc.uiBoxBegin("status_override", .{}); + defer _ = oc.uiBoxEnd(); + + _ = oc.uiLabel("Override"); + + var status_options = [_][]const u8{ + "Always", + "When hovering", + "When active", + }; + var status_info = oc.UiRadioGroupInfo{ + .selected_index = unselected_status_index, + .options = &status_options, + }; + var status_result = oc.uiRadioGroup("status", &status_info); + unselected_status_index = status_result.selected_index; + unselected_when_status = switch (unselected_status_index.?) { + 0 => .{}, + 1 => .{ .hover = true }, + 2 => .{ .active = true }, + else => unreachable, + }; + } + } + + { + oc.uiStyleNext(.{ .layout = .{ .axis = .Y, .spacing = 16 } }); + _ = oc.uiBoxBegin("selected", .{}); + defer _ = oc.uiBoxEnd(); + + oc.uiStyleNext(.{ .font_size = 16 }); + _ = oc.uiLabel("Radio selected style"); + + { + oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); + _ = oc.uiBoxBegin("size", .{}); + defer _ = oc.uiBoxEnd(); + + var width_slider = (selected_width - 8) / 16; + labeledSlider("Width", &width_slider); + selected_width = 8 + width_slider * 16; + + var height_slider = (selected_height - 8) / 16; + labeledSlider("Height", &height_slider); + selected_height = 8 + height_slider * 16; + + var roundness_slider = (selected_roundness - 4) / 8; + labeledSlider("Roundness", &roundness_slider); + selected_roundness = 4 + roundness_slider * 8; + } + + { + oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); + _ = oc.uiBoxBegin("color", .{}); + defer _ = oc.uiBoxEnd(); + + labeledSlider("Center R", &selected_center_color.r); + labeledSlider("Center G", &selected_center_color.g); + labeledSlider("Center B", &selected_center_color.b); + labeledSlider("Center A", &selected_center_color.a); + } + + { + oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); + _ = oc.uiBoxBegin("background", .{}); + defer _ = oc.uiBoxEnd(); + + labeledSlider("Background R", &selected_bg_color.r); + labeledSlider("Background G", &selected_bg_color.g); + labeledSlider("Background B", &selected_bg_color.b); + labeledSlider("Background A", &selected_bg_color.a); + } + + { + oc.uiStyleNext(.{ .layout = .{ .spacing = 10 } }); + _ = oc.uiBoxBegin("status_override", .{}); + defer _ = oc.uiBoxEnd(); + + oc.uiStyleNext(.{ .size = .{ .height = .{ .pixels = 30 } } }); + _ = oc.uiBoxMake("spacer", .{}); + + _ = oc.uiLabel("Override"); + + var status_options = [_][]const u8{ + "Always", + "When hovering", + "When active", + }; + var status_info = oc.UiRadioGroupInfo{ + .selected_index = selected_status_index, + .options = &status_options, + }; + var status_result = oc.uiRadioGroup("status", &status_info); + selected_status_index = status_result.selected_index; + selected_when_status = switch (selected_status_index.?) { + 0 => .{}, + 1 => .{ .hover = true }, + 2 => .{ .active = true }, + else => unreachable, + }; + } + } + + { + oc.uiStyleNext(.{ .layout = .{ .axis = .Y, .spacing = 10 } }); + _ = oc.uiBoxBegin("label", .{}); + defer _ = oc.uiBoxEnd(); + + oc.uiStyleNext(.{ .font_size = 16 }); + _ = oc.uiLabel("Label style"); + + { + oc.uiStyleNext(.{ .layout = .{ .axis = .X, .spacing = 8 } }); + _ = oc.uiBoxBegin("font_color", .{}); + defer _ = oc.uiBoxEnd(); + + oc.uiStyleMatchAfter(oc.UiPattern.owner(), .{ + .size = .{ .width = .{ .pixels = 100 } }, + }); + _ = oc.uiLabel("Font color"); + + var color_names = [_][]const u8{ + "Default", + "Red", + "Orange", + "Amber", + "Yellow", + "Lime", + "Light green", + "Green", + }; + var colors = [_]oc.Color{ + oc.ui_dark_theme.text0, + oc.ui_dark_theme.palette.red5, + oc.ui_dark_theme.palette.orange5, + oc.ui_dark_theme.palette.amber5, + oc.ui_dark_theme.palette.yellow5, + oc.ui_dark_theme.palette.lime5, + oc.ui_dark_theme.palette.light_green5, + oc.ui_dark_theme.palette.green5, + }; + var color_info = oc.UiSelectPopupInfo{ + .selected_index = label_font_color_selected, + .options = &color_names, + }; + var color_result = oc.uiSelectPopup("color", &color_info); + label_font_color_selected = color_result.selected_index; + label_font_color = colors[label_font_color_selected.?]; + } + + { + oc.uiStyleNext(.{ .layout = .{ .axis = .X, .spacing = 8 } }); + _ = oc.uiBoxBegin("font", .{}); + defer _ = oc.uiBoxEnd(); + + oc.uiStyleMatchAfter(oc.UiPattern.owner(), .{ + .size = .{ .width = .{ .pixels = 100 } }, + }); + _ = oc.uiLabel("Font"); + + var font_names = [_][]const u8{ + "Regular", + "Bold", + }; + var fonts = [_]*oc.Font{ + &font_regular, + &font_bold, + }; + var font_info = oc.UiSelectPopupInfo{ + .selected_index = label_font_selected, + .options = &font_names, + }; + var font_result = oc.uiSelectPopup("font_style", &font_info); + label_font_selected = font_result.selected_index; + label_font = fonts[label_font_selected.?]; + } + + var font_size_slider = (label_font_size - 8) / 16; + labeledSlider("Font size", &font_size_slider); + label_font_size = 8 + font_size_slider * 16; + } + } +} + +fn columnBegin(header: []const u8, widthFraction: f32) void { + oc.uiStyleNext(.{ + .size = .{ + .width = .{ + .custom = .{ .kind = .Parent, .value = widthFraction, .relax = 1 }, + }, + .height = .fill_parent, + }, + .layout = .{ + .axis = .Y, + .margin = .{ .y = 8 }, + .spacing = 24, + }, + .bg_color = ui.theme.bg1, + .border_color = ui.theme.border, + .border_size = 1, + .roundness = ui.theme.roundness_small, + }); + _ = oc.uiBoxBegin(header, .{ .draw_background = true, .draw_border = true }); + + { + oc.uiStyleNext(.{ + .size = .{ .width = .fill_parent }, + .layout = .{ .alignment = .{ .x = .Center } }, + }); + _ = oc.uiBoxBegin("header", .{}); + defer _ = oc.uiBoxEnd(); + + oc.uiStyleNext(.{ .font_size = 18 }); + _ = oc.uiLabel(header); + } + + oc.uiStyleNext(.{ + .size = .{ + .width = .fill_parent, + .height = .{ + .custom = .{ .kind = .Parent, .value = 1, .relax = 1 }, + }, + }, + .layout = .{ + .alignment = .{ .x = .Start }, + .margin = .{ .x = 16 }, + .spacing = 24, + }, + }); + _ = oc.uiBoxBegin("contents", .{}); +} + +fn columnEnd() void { + _ = oc.uiBoxEnd(); // contents + _ = oc.uiBoxEnd(); // column +} + +fn labeledSlider(label: []const u8, value: *f32) void { + oc.uiStyleNext(.{ .layout = .{ .axis = .X, .spacing = 8 } }); + _ = oc.uiBoxBegin(label, .{}); + defer _ = oc.uiBoxEnd(); + + oc.uiStyleMatchAfter(oc.UiPattern.owner(), .{ + .size = .{ .width = .{ .pixels = 100 } }, + }); + _ = oc.uiLabel(label); + + oc.uiStyleNext(.{ + .size = .{ .width = .{ .pixels = 100 } }, + }); + _ = oc.uiSlider("slider", value); +} + +fn logPush(line: []const u8) void { + log_lines.push(&log_arena, oc.Str8.fromSlice(line)) catch { + oc.log.err("Out of memory", .{}, @src()); + oc.requestQuit(); + return; + }; +} + +fn logPushf(comptime fmt: []const u8, args: anytype) void { + var str = oc.Str8.pushf(&log_arena, fmt, args) catch { + oc.log.err("Out of memory", .{}, @src()); + oc.requestQuit(); + return; + }; + log_lines.push(&log_arena, str) catch { + oc.log.err("Out of memory", .{}, @src()); + oc.requestQuit(); + return; + }; +} + +/// This makes sure the light theme doesn't break the styling overrides +/// You won't need it in a real program as long as your colors come from ui.theme or ui.theme.palette +fn resetNextRadioGroupToDarkTheme(arena: *oc.Arena) void { + var unselected_tag = oc.uiTagMake("radio"); + var unselected_pattern = oc.UiPattern.init(); + unselected_pattern.push(arena, .{ .sel = .{ .tag = unselected_tag } }); + oc.uiStyleMatchAfter(unselected_pattern, .{ + .border_color = oc.ui_dark_theme.text3, + .border_size = 1, + }); + + var unselected_hover_pattern = oc.UiPattern.init(); + unselected_hover_pattern.push(arena, .{ .sel = .{ .tag = unselected_tag } }); + unselected_hover_pattern.push(arena, .{ .op = .And, .sel = .{ .status = .{ .hover = true } } }); + oc.uiStyleMatchAfter(unselected_hover_pattern, .{ + .bg_color = oc.ui_dark_theme.fill0, + .border_color = oc.ui_dark_theme.primary, + }); + + var unselected_active_pattern = oc.UiPattern.init(); + unselected_active_pattern.push(arena, .{ .sel = .{ .tag = unselected_tag } }); + unselected_active_pattern.push(arena, .{ .op = .And, .sel = .{ .status = .{ .active = true } } }); + oc.uiStyleMatchAfter(unselected_active_pattern, .{ + .bg_color = oc.ui_dark_theme.fill1, + .border_color = oc.ui_dark_theme.primary, + }); + + var selected_tag = oc.uiTagMake("radio_selected"); + var selected_pattern = oc.UiPattern.init(); + selected_pattern.push(arena, .{ .sel = .{ .tag = selected_tag } }); + oc.uiStyleMatchAfter(selected_pattern, .{ + .color = oc.ui_dark_theme.palette.white, + .bg_color = oc.ui_dark_theme.primary, + }); + + var selected_hover_pattern = oc.UiPattern.init(); + selected_hover_pattern.push(arena, .{ .sel = .{ .tag = selected_tag } }); + selected_hover_pattern.push(arena, .{ .op = .And, .sel = .{ .status = .{ .hover = true } } }); + oc.uiStyleMatchAfter(selected_hover_pattern, .{ + .bg_color = oc.ui_dark_theme.primary_hover, + }); + + var selected_active_pattern = oc.UiPattern.init(); + selected_active_pattern.push(arena, .{ .sel = .{ .tag = selected_tag } }); + selected_active_pattern.push(arena, .{ .op = .And, .sel = .{ .status = .{ .active = true } } }); + oc.uiStyleMatchAfter(selected_active_pattern, .{ + .bg_color = oc.ui_dark_theme.primary_active, + }); +} diff --git a/src/orca.zig b/src/orca.zig index 2d94654..5c1263f 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -363,10 +363,23 @@ pub const Arena = extern struct { return items[0..count]; } + pub fn pushStr(arena: *Arena, str: []u8) AllocError![]u8 { + var result = try arena.pushArray(u8, str.len + 1); + @memcpy(result[0..str.len], str); + result[str.len] = 0; + return result; + } + pub const scratchBegin = oc_scratch_begin; pub const scratchBeginNext = oc_scratch_begin_next; }; +pub const Pool = extern struct { + arena: Arena, + free_list: List, + block_size: u64, +}; + //------------------------------------------------------------------------------------------ // [STRINGS] //------------------------------------------------------------------------------------------ @@ -1194,6 +1207,36 @@ const MouseCursor = enum(c_uint) { extern fn oc_set_cursor(cursor: MouseCursor) void; pub const setCursor = oc_set_cursor; +pub const EventType = enum(c_uint) { + none, + keyboard_mods, + keyboard_key, + keyboard_char, + mouse_button, + mouse_move, + mouse_wheel, + mouse_enter, + mouse_leave, + clipboard_paste, + window_resize, + window_move, + window_focus, + window_unfocus, + window_hide, + window_show, + window_close, + pathdrop, + frame, + quit, +}; + +pub const KeyAction = enum(c_uint) { + NoAction, + Press, + Release, + Repeat, +}; + pub const ScanCode = enum(c_uint) { Unknown = 0, Space = 32, @@ -1440,7 +1483,18 @@ pub const KeyCode = enum(c_uint) { RightAlt = 346, RightSuper = 347, Menu = 348, - Count = 349, +}; + +pub const key_code_count: usize = 349; + +pub const KeymodFlags = packed struct(c_uint) { + none: bool, + alt: bool, + shift: bool, + ctrl: bool, + cmd: bool, + main_modified: bool, // cmd on Mac, ctrl on Win32 + _: u26, }; pub const MouseButton = enum(c_uint) { @@ -1451,10 +1505,111 @@ pub const MouseButton = enum(c_uint) { Ext2 = 0x04, }; +pub const mouse_button_count: usize = 5; + +/// Keyboard and mouse buttons input +pub const KeyEvent = extern struct { + action: KeyAction, + scan_code: ScanCode, + key_code: KeyCode, + button: MouseButton, + mods: KeymodFlags, + click_count: u8, +}; + +/// Character input +pub const CharEvent = extern struct { + codepoint: Utf32, + sequence: [8]u8, + sequence_len: u8, +}; + +/// Mouse move/scroll +pub const MouseEvent = extern struct { + x: f32, + y: f32, + delta_x: f32, + delta_y: f32, + mods: KeymodFlags, +}; + +/// Window resize / move +pub const MoveEvent = extern struct { + frame: Rect, + content: Rect, +}; + +pub const CEvent = extern struct { + window: Window, + type: EventType, + data: extern union { + key: KeyEvent, + character: CharEvent, + mouse: MouseEvent, + move: MoveEvent, + paths: Str8List, + }, + + pub fn event(self: *CEvent) Event { + return .{ .window = self.window, .event = switch (self.type) { + .none => .none, + .keyboard_mods => .{ .keyboard_mods = self.data.key }, + .keyboard_key => .{ .keyboard_key = self.data.key }, + .keyboard_char => .{ .keyboard_char = self.data.character }, + .mouse_button => .{ .mouse_button = self.data.key }, + .mouse_move => .{ .mouse_move = self.data.mouse }, + .mouse_wheel => .{ .mouse_wheel = self.data.mouse }, + .mouse_enter => .{ .mouse_enter = self.data.mouse }, + .mouse_leave => .{ .mouse_leave = self.data.mouse }, + .clipboard_paste => .clipboard_paste, + .window_resize => .{ .window_resize = self.data.move }, + .window_move => .{ .window_move = self.data.move }, + .window_focus => .window_focus, + .window_unfocus => .window_unfocus, + .window_hide => .window_hide, + .window_show => .window_show, + .window_close => .window_close, + .pathdrop => .{ .pathdrop = self.data.paths }, + .frame => .frame, + .quit => .quit, + } }; + } +}; + +pub const Event = struct { + window: Window, + event: union(EventType) { + none, + keyboard_mods: KeyEvent, + keyboard_key: KeyEvent, + keyboard_char: CharEvent, + mouse_button: KeyEvent, + mouse_move: MouseEvent, + mouse_wheel: MouseEvent, + mouse_enter: MouseEvent, + mouse_leave: MouseEvent, + clipboard_paste, + window_resize: MoveEvent, + window_move: MoveEvent, + window_focus, + window_unfocus, + window_hide, + window_show, + window_close, + pathdrop: Str8List, + frame, + quit, + }, +}; + //------------------------------------------------------------------------------------------ // [APP] windows //------------------------------------------------------------------------------------------ +pub const Window = extern struct { + h: u64, +}; + extern fn oc_window_set_title(title: Str8) void; extern fn oc_window_set_size(size: Vec2) void; @@ -1677,21 +1832,26 @@ pub const Image = extern struct { pub const drawRegion = oc_image_draw_region; }; -pub const Rect = extern union { - Flat: extern struct { - x: f32, - y: f32, - w: f32, - h: f32, - }, - Pairs: extern struct { - xy: Vec2, - wh: Vec2, - }, - Array: [4]f32, +pub const Rect = extern struct { + x: f32, + y: f32, + w: f32, + h: f32, pub fn xywh(x: f32, y: f32, w: f32, h: f32) Rect { - return .{ .Flat = .{ .x = x, .y = y, .w = w, .h = h } }; + return .{ .x = x, .y = y, .w = w, .h = h }; + } + + pub fn xyArray(rect: *Rect) *[2]f32 { + return @ptrCast(rect); + } + + pub fn whArray(rect: *Rect) *[2]f32 { + return @ptrCast(&rect.w); + } + + pub fn array(rect: *Rect) *[4]f32 { + return @ptrCast(rect); } }; @@ -1701,6 +1861,10 @@ pub const Color = extern struct { b: f32 = 1.0, a: f32 = 1.0, + pub fn rgba(r: f32, g: f32, b: f32, a: f32) Color { + return .{ .r = r, .g = g, .b = b, .a = a }; + } + pub fn toArray(color: *Color) *[4]f32 { return @ptrCast(color); } @@ -1845,6 +2009,1314 @@ pub const Canvas = extern struct { pub const arc = oc_arc; }; +//------------------------------------------------------------------------------------------ +// [UI]: input state +//------------------------------------------------------------------------------------------ + +pub const KeyState = extern struct { + last_update: u64, + transition_count: u32, + repeat_count: u32, + down: bool, + sys_clicked: bool, + sys_double_clicked: bool, + sys_triple_clicked: bool, +}; + +pub const KeyboardState = extern struct { + keys: [key_code_count]KeyState, + mods: KeymodFlags, +}; + +pub const MouseButtonsState = extern struct { + left: KeyState, + right: KeyState, + middle: KeyState, + ext1: KeyState, + ext2: KeyState, + + pub fn array(self: *MouseButtonsState) [mouse_button_count]KeyState { + return .{ + self.left, + self.right, + self.middle, + self.ext1, + self.ext2, + }; + } +}; + +pub const MouseState = extern struct { + last_update: u64, + pos_valid: bool, + pos: Vec2, + delta: Vec2, + wheel: Vec2, + buttons: MouseButtonsState, +}; + +pub const TextState = extern struct { + last_update: u64, + backing: [64]Utf32, + codepoints: Str32, +}; + +pub const ClipboardState = extern struct { + last_update: u64, + pasted_text: Str8, +}; + +pub const InputState = extern struct { + frame_counter: u64, + keyboard: KeyboardState, + mouse: MouseState, + text: TextState, + clipboard: ClipboardState, + + extern fn oc_input_process_event(arena: *Arena, state: *InputState, event: *CEvent) void; + extern fn oc_input_next_frame(state: *InputState) void; + + extern fn oc_key_down(state: *InputState, key: KeyCode) bool; + extern fn oc_key_press_count(state: *InputState, key: KeyCode) u8; + extern fn oc_key_release_count(state: *InputState, key: KeyCode) u8; + extern fn oc_key_repeat_count(state: *InputState, key: KeyCode) u8; + + extern fn oc_key_down_scancode(state: *InputState, key: ScanCode) bool; + extern fn oc_key_press_count_scancode(state: *InputState, key: ScanCode) u8; + extern fn oc_key_release_count_scancode(state: *InputState, key: ScanCode) u8; + extern fn oc_key_repeat_count_scancode(state: *InputState, key: ScanCode) u8; + + extern fn oc_mouse_down(state: *InputState, button: MouseButton) bool; + extern fn oc_mouse_pressed(state: *InputState, button: MouseButton) u8; + extern fn oc_mouse_released(state: *InputState, button: MouseButton) u8; + extern fn oc_mouse_clicked(state: *InputState, button: MouseButton) bool; + extern fn oc_mouse_double_clicked(state: *InputState, button: MouseButton) bool; + extern fn oc_mouse_position(state: *InputState) Vec2; + extern fn oc_mouse_delta(state: *InputState) Vec2; + extern fn oc_mouse_wheel(state: *InputState) Vec2; + + extern fn oc_input_text_utf32(arena: *Arena, state: *InputState) Str32; + extern fn oc_input_text_utf8(arena: *Arena, state: *InputState) Str8; + + extern fn oc_clipboard_pasted(state: *InputState) bool; + extern fn oc_clipboard_pasted_text(state: *InputState) Str8; + + extern fn oc_key_mods(state: *InputState) KeymodFlags; + + pub fn processEvent(self: *InputState, arena: *Arena, event: *CEvent) void { + oc_input_process_event(arena, self, event); + } + + pub const nextFrame = oc_input_next_frame; + + pub const keyDown = oc_key_down; + pub const keyPressCount = oc_key_press_count; + pub const keyReleaseCount = oc_key_release_count; + pub const keyRepeatCount = oc_key_repeat_count; + + pub const keyDownScancode = oc_key_down_scancode; + pub const keyPressCountScancode = oc_key_press_count_scancode; + pub const keyReleaseCountScancode = oc_key_release_count_scancode; + pub const keyRepeatCountScancode = oc_key_repeat_count_scancode; + + pub const mouseDown = oc_mouse_down; + pub const mousePressed = oc_mouse_pressed; + pub const mouseReleased = oc_mouse_released; + pub const mouseClicked = oc_mouse_clicked; + pub const mouseDoubleClicked = oc_mouse_double_clicked; + pub const mousePosition = oc_mouse_position; + pub const mouseDelta = oc_mouse_delta; + pub const mouseWheel = oc_mouse_wheel; + + pub const inputTextUtf32 = oc_input_text_utf32; + pub const inputTextUtf8 = oc_input_text_utf8; + + pub const clipboardPasted = oc_clipboard_pasted; + + pub fn clipboardPastedText(self: *InputState) []u8 { + return oc_clipboard_pasted_text(self).slice(); + } + + pub const keyMods = oc_key_mods; +}; + +//------------------------------------------------------------------------------------------ +// [UI]: structs +//------------------------------------------------------------------------------------------ + +pub const UiKey = extern struct { + hash: u64, +}; + +pub const UiAxis = enum(c_uint) { X, Y }; + +pub const UiLayoutMargin = struct { + x: ?f32 = null, + y: ?f32 = null, + + pub fn array(self: *UiLayoutMargin) *[2]?f32 { + return @ptrCast(self); + } +}; + +pub const UiAlignment = enum(c_uint) { Start, End, Center }; + +pub const UiLayoutAlignment = struct { + x: ?UiAlignment = null, + y: ?UiAlignment = null, + + pub fn array(self: *UiLayoutAlignment) *[2]?UiAlignment { + return @ptrCast(self); + } +}; + +pub const UiLayout = struct { + axis: ?UiAxis = null, + spacing: ?f32 = null, + margin: UiLayoutMargin = .{}, + alignment: UiLayoutAlignment = .{}, +}; + +pub const UiSizeKind = enum(c_uint) { + Text, + Pixels, + Children, + Parent, + ParentMinusPixels, +}; + +pub const UiSizeCustom = struct { + kind: UiSizeKind = .Text, + value: f32 = 0, + relax: f32 = 0, + min_size: f32 = 0, +}; + +pub const UiSize = union(enum) { + text, + pixels: f32, + children, + fill_parent, + parent: f32, + parent_minus_pixels: f32, + custom: UiSizeCustom, +}; + +pub const UiBoxSize = struct { + width: ?UiSize = null, + height: ?UiSize = null, + + pub fn array(self: *UiBoxSize) *[2]?UiSize { + return @ptrCast(self); + } +}; + +pub const UiBoxFloating = struct { + x: ?bool = null, + y: ?bool = null, + + pub fn array(self: *UiBoxFloating) *[2]?bool { + return @ptrCast(self); + } +}; + +pub const FloatTarget = struct { + x: ?f32 = null, + y: ?f32 = null, + + pub fn array(self: *FloatTarget) *[2]f32 { + return @ptrCast(self); + } +}; + +//NOTE: flags for axis-dependent properties (e.g. FloatX/Y) need to be consecutive bits +// in order to play well with axis agnostic functions. Using explicit bit shifts here +// so that arithmetic on flags is possible +pub const UiAnimationMask = enum(c_uint) { + None = 0, + SizeWidth = 1 << 1, + SizeHeight = 1 << 2, + LayoutAxis = 1 << 3, + LayoutAlignX = 1 << 4, + LayoutAlignY = 1 << 5, + LayoutSpacing = 1 << 6, + LayoutMarginX = 1 << 7, + LayoutMarginY = 1 << 8, + FloatX = 1 << 9, + FloatY = 1 << 10, + Color = 1 << 11, + BgColor = 1 << 12, + BorderColor = 1 << 13, + BorderSize = 1 << 14, + Roundness = 1 << 15, + + FontSize = 1 << 17, +}; + +pub const UiStyle = struct { + size: UiBoxSize = .{}, + layout: UiLayout = .{}, + floating: UiBoxFloating = .{}, + float_target: FloatTarget = .{}, + color: ?Color = null, + bg_color: ?Color = null, + border_color: ?Color = null, + font: ?Font = null, + font_size: ?f32 = null, + border_size: ?f32 = null, + roundness: ?f32 = null, + animation_time: ?f32 = null, + animation_mask: UiAnimationMask = .None, +}; + +pub const UiPalette = extern struct { + red0: Color, + red1: Color, + red2: Color, + red3: Color, + red4: Color, + red5: Color, + red6: Color, + red7: Color, + red8: Color, + red9: Color, + orange0: Color, + orange1: Color, + orange2: Color, + orange3: Color, + orange4: Color, + orange5: Color, + orange6: Color, + orange7: Color, + orange8: Color, + orange9: Color, + amber0: Color, + amber1: Color, + amber2: Color, + amber3: Color, + amber4: Color, + amber5: Color, + amber6: Color, + amber7: Color, + amber8: Color, + amber9: Color, + yellow0: Color, + yellow1: Color, + yellow2: Color, + yellow3: Color, + yellow4: Color, + yellow5: Color, + yellow6: Color, + yellow7: Color, + yellow8: Color, + yellow9: Color, + lime0: Color, + lime1: Color, + lime2: Color, + lime3: Color, + lime4: Color, + lime5: Color, + lime6: Color, + lime7: Color, + lime8: Color, + lime9: Color, + light_green0: Color, + light_green1: Color, + light_green2: Color, + light_green3: Color, + light_green4: Color, + light_green5: Color, + light_green6: Color, + light_green7: Color, + light_green8: Color, + light_green9: Color, + green0: Color, + green1: Color, + green2: Color, + green3: Color, + green4: Color, + green5: Color, + green6: Color, + green7: Color, + green8: Color, + green9: Color, + teal0: Color, + teal1: Color, + teal2: Color, + teal3: Color, + teal4: Color, + teal5: Color, + teal6: Color, + teal7: Color, + teal8: Color, + teal9: Color, + cyan0: Color, + cyan1: Color, + cyan2: Color, + cyan3: Color, + cyan4: Color, + cyan5: Color, + cyan6: Color, + cyan7: Color, + cyan8: Color, + cyan9: Color, + light_blue0: Color, + light_blue1: Color, + light_blue2: Color, + light_blue3: Color, + light_blue4: Color, + light_blue5: Color, + light_blue6: Color, + light_blue7: Color, + light_blue8: Color, + light_blue9: Color, + blue0: Color, + blue1: Color, + blue2: Color, + blue3: Color, + blue4: Color, + blue5: Color, + blue6: Color, + blue7: Color, + blue8: Color, + blue9: Color, + indigo0: Color, + indigo1: Color, + indigo2: Color, + indigo3: Color, + indigo4: Color, + indigo5: Color, + indigo6: Color, + indigo7: Color, + indigo8: Color, + indigo9: Color, + violet0: Color, + violet1: Color, + violet2: Color, + violet3: Color, + violet4: Color, + violet5: Color, + violet6: Color, + violet7: Color, + violet8: Color, + violet9: Color, + purple0: Color, + purple1: Color, + purple2: Color, + purple3: Color, + purple4: Color, + purple5: Color, + purple6: Color, + purple7: Color, + purple8: Color, + purple9: Color, + pink0: Color, + pink1: Color, + pink2: Color, + pink3: Color, + pink4: Color, + pink5: Color, + pink6: Color, + pink7: Color, + pink8: Color, + pink9: Color, + grey0: Color, + grey1: Color, + grey2: Color, + grey3: Color, + grey4: Color, + grey5: Color, + grey6: Color, + grey7: Color, + grey8: Color, + grey9: Color, + black: Color, + white: Color, +}; + +/// Visualized in doc/UIColors.md +pub const ui_dark_palette = @extern(*UiPalette, .{ .name = "OC_UI_DARK_PALETTE" }); + +/// Visualized in doc/UIColors.md +pub const ui_light_palette = @extern(*UiPalette, .{ .name = "OC_UI_LIGHT_PALETTE" }); + +pub const UiTheme = extern struct { + white: Color, + primary: Color, + primary_hover: Color, + primary_active: Color, + border: Color, + fill0: Color, + fill1: Color, + fill2: Color, + bg0: Color, + bg1: Color, + bg2: Color, + bg3: Color, + bg4: Color, + text0: Color, + text1: Color, + text2: Color, + text3: Color, + slider_thumb_border: Color, + elevated_border: Color, + + roundness_small: f32, + roundness_medium: f32, + roundness_large: f32, + + palette: *UiPalette, +}; + +pub const ui_dark_theme = @extern(*UiTheme, .{ .name = "OC_UI_DARK_THEME" }); +pub const ui_light_theme = @extern(*UiTheme, .{ .name = "OC_UI_LIGHT_THEME" }); + +pub const UiTag = extern struct { + hash: u64, +}; + +pub const UiSelectorKind = enum(c_uint) { + any, + owner, + text, + tag, + status, + key, +}; + +pub const UiStatus = packed struct(u8) { + _: u1 = 0, + + hover: bool = false, + hot: bool = false, + active: bool = false, + dragging: bool = false, + + __: u3 = 0, + + pub fn empty(self: UiStatus) bool { + return !self.hover and !self.hot and !self.active and !self.dragging; + } +}; + +pub const UiSelectorOp = enum(c_uint) { + Descendant, + And, +}; + +pub const UiSelector = struct { + op: UiSelectorOp = .Descendant, + sel: union(UiSelectorKind) { + any, + owner, + text: []u8, + key: UiKey, + tag: UiTag, + status: UiStatus, + }, +}; + +pub const UiPattern = extern struct { + l: List, + + extern fn oc_ui_pattern_push(arena: *Arena, pattern: *UiPattern, selector: UiSelectorInternal) void; + extern fn oc_ui_pattern_all() UiPattern; + extern fn oc_ui_pattern_owner() UiPattern; + + pub fn init() UiPattern { + return .{ .l = List.init() }; + } + + /// Push the selector onto frame arena and insert it into the pattern's linked list. + /// Underlying UiSelector implementation has a ListElt within it that is not exposed to the Zig interface + /// in order to simplify the conversion. + /// + /// WARN: You can use a pattern in multiple rules, but be aware that a pattern is referencing + /// an underlying list of selectors, hence pushing to a pattern also modifies rules in + /// which the pattern was previously used! + pub fn push(self: *UiPattern, arena: *Arena, selector: UiSelector) void { + oc_ui_pattern_push(arena, self, uiConvertSelector(selector)); + } + + pub const all = oc_ui_pattern_all; + pub const owner = oc_ui_pattern_owner; +}; + +pub const UiStyleRule = struct { + box_elt: ListElt, + build_elt: ListElt, + tmp_elt: ListElt, + + owner: *UiBox, + pattern: UiPattern, + style: *UiStyle, +}; + +pub const UiSig = extern struct { + box: *UiBox, + + mouse: Vec2, + delta: Vec2, + wheel: Vec2, + + pressed: bool, + released: bool, + clicked: bool, + doubleClicked: bool, + tripleClicked: bool, + rightPressed: bool, + + dragging: bool, + hovering: bool, + + pasted: bool, +}; + +pub const UiBoxDrawProc = *fn (box: *UiBox, data: ?*anyopaque) callconv(.C) void; + +pub const UiOverflowAllow = packed struct { + x: bool = false, + y: bool = false, + + pub fn array(self: *UiOverflowAllow) *[2]bool { + return @ptrCast(self); + } +}; + +pub const UiFlags = packed struct(c_uint) { + clickable: bool = false, // 0 + scroll_wheel_x: bool = false, // 1 + scroll_wheel_y: bool = false, // 2 + block_mouse: bool = false, // 3 + hot_animation: bool = false, // 4 + active_animation: bool = false, // 5 + overflow_allow: UiOverflowAllow = .{}, // 6-7 + clip: bool = false, // 8 + draw_background: bool = false, // 9 + draw_foreground: bool = false, // 10 + draw_border: bool = false, // 11 + draw_text: bool = false, // 12 + draw_proc: bool = false, // 13 + _: u2 = 0, // 14-15 + + overlay: bool = false, // 16 + __: u15 = 0, +}; + +pub const UiBox = extern struct { + // hierarchy + list_elt: ListElt, + children: List, + parent: ?*UiBox, + + overlay_elt: ListElt, + + // keying and caching + bucket_elt: ListElt, + key: UiKey, + frame_counter: u64, + + // builder-provided info + flags: UiFlags, + string: Str8, + tags: List, + + draw_proc: UiBoxDrawProc, + draw_data: *anyopaque, + + // styling + before_rules: List, + after_rules: List, + + target_style: ?*UiStyle, + style: UiStyleInternal, + z: u32, + + float_pos: Vec2, + children_sum: [2]f32, + spacing: [2]f32, + min_size: [2]f32, + rect: Rect, + + // signals + sig: ?*UiSig, + + // stateful behavior + fresh: bool, + closed: bool, + parent_closed: bool, + dragging: bool, + hot: bool, + active: bool, + scroll: Vec2, + pressed_mouse: Vec2, + + // animation data + hot_transition: f32, + active_transition: f32, +}; + +pub const UiInputText = extern struct { + count: u8, + codepoints: [64]Utf32, +}; + +const UiCSize = extern struct { + kind: UiSizeKind, + value: f32 = 0, + relax: f32 = 0, + min_size: f32 = 0, + + fn fromUiSize(ui_size: UiSize) UiCSize { + return switch (ui_size) { + .text => .{ .kind = .Text }, + .pixels => |pixels| .{ .kind = .Pixels, .value = pixels }, + .children => .{ .kind = .Children }, + .fill_parent => .{ .kind = .Parent, .value = 1 }, + .parent => |fraction| .{ .kind = .Parent, .value = fraction }, + .parent_minus_pixels => |pixels| .{ .kind = .ParentMinusPixels, .value = pixels }, + .custom => |custom| .{ + .kind = custom.kind, + .value = custom.value, + .relax = custom.relax, + .min_size = custom.min_size, + }, + }; + } +}; + +pub const UiStackElt = extern struct { + parent: ?*UiStackElt, + elt: extern union { + box: *UiBox, + size: UiCSize, + clip: Rect, + }, +}; + +pub const UiTagElt = extern struct { + list_elt: ListElt, + tag: UiTag, +}; + +pub const UiEditMove = enum(c_uint) { + none, + char, + word, + line, +}; + +pub const UiContext = extern struct { + is_init: bool, + + input: InputState, + + frame_counter: u64, + frame_time: f64, + last_frame_duration: f64, + + frame_arena: Arena, + box_pool: Pool, + box_map: [1024]List, + + root: *UiBox, + overlay: *UiBox, + overlay_list: List, + box_stack: *UiStackElt, + clip_stack: *UiStackElt, + + next_box_before_rules: List, + next_box_after_rules: List, + next_box_tags: List, + + z: u32, + hovered: ?*UiBox, + + focus: ?*UiBox, + edit_cursor: i32, + edit_mark: i32, + edit_first_displayed_char: i32, + edit_cursor_blink_start: f64, + edit_selection_mode: UiEditMove, + edit_word_selection_initial_cursor: i32, + edit_word_selection_initial_mark: i32, + + theme: *UiTheme, + + extern fn oc_ui_init(context: *UiContext) void; + pub const init = oc_ui_init; +}; + +const UiLayoutAlignmentInternal = extern struct { + x: UiAlignment, + y: UiAlignment, +}; + +const UiLayoutMarginInternal = extern struct { + x: f32, + y: f32, +}; + +const UiLayoutInternal = extern struct { + axis: UiAxis, + spacing: f32, + margin: UiLayoutMarginInternal, + alignment: UiLayoutAlignmentInternal, +}; + +const UiBoxSizeInternal = extern struct { + width: UiCSize, + height: UiCSize, +}; + +const UiBoxFloatingInternal = extern struct { + x: bool, + y: bool, +}; + +const UiFloatTargetInternal = extern struct { + x: f32, + y: f32, +}; + +const UiStyleInternal = extern struct { + size: UiBoxSizeInternal, + layout: UiLayoutInternal, + floating: UiBoxFloatingInternal, + float_target: UiFloatTargetInternal, + color: Color, + bg_color: Color, + border_color: Color, + font: Font, + font_size: f32, + border_size: f32, + roundness: f32, + animation_time: f32, + animation_mask: UiAnimationMask, +}; + +const UiStyleMaskInternal = packed struct(u64) { + _: u1 = 0, + size_width: bool = false, + size_height: bool = false, + layout_axis: bool = false, + layout_align_x: bool = false, + layout_align_y: bool = false, + layout_spacing: bool = false, + layout_margin_x: bool = false, + layout_margin_y: bool = false, + float_x: bool = false, + float_y: bool = false, + color: bool = false, + bg_color: bool = false, + border_color: bool = false, + border_size: bool = false, + roundness: bool = false, + font: bool = false, + font_size: bool = false, + animation_time: bool = false, + animation_mask: bool = false, + __: u44 = 0, +}; + +//------------------------------------------------------------------------------------------ +// [UI]: context initialization and frame cycle +//------------------------------------------------------------------------------------------ + +extern fn oc_ui_get_context() *UiContext; +extern fn oc_ui_set_context(context: *UiContext) void; + +extern fn oc_ui_process_event(event: *CEvent) void; +extern fn oc_ui_begin_frame(size: Vec2, default_style: *UiStyleInternal, mask: UiStyleMaskInternal) void; +extern fn oc_ui_end_frame() void; +extern fn oc_ui_draw() void; +extern fn oc_ui_set_theme(theme: *UiTheme) void; + +pub const uiGetContext = oc_ui_get_context; +pub const uiSetContext = oc_ui_set_context; +pub const uiProcessCEvent = oc_ui_process_event; + +pub const uiEndFrame = oc_ui_end_frame; +pub const uiDraw = oc_ui_draw; +pub const uiSetTheme = oc_ui_set_theme; + +pub fn uiBeginFrame(size: Vec2, default_style: *UiStyle) void { + var default_style_and_mask = uiConvertStyle(default_style); + oc_ui_begin_frame(size, &default_style_and_mask.style, default_style_and_mask.mask); +} + +const UiStyleAndMaskInternal = struct { + style: UiStyleInternal, + mask: UiStyleMaskInternal, +}; + +fn uiConvertStyle(style: *const UiStyle) UiStyleAndMaskInternal { + var style_internal: UiStyleInternal = std.mem.zeroes(UiStyleInternal); + var mask: UiStyleMaskInternal = .{}; + if (style.size.width) |width| { + style_internal.size.width = UiCSize.fromUiSize(width); + mask.size_width = true; + } + if (style.size.height) |height| { + style_internal.size.height = UiCSize.fromUiSize(height); + mask.size_height = true; + } + if (style.layout.axis) |axis| { + style_internal.layout.axis = axis; + mask.layout_axis = true; + } + if (style.layout.alignment.x) |x| { + style_internal.layout.alignment.x = x; + mask.layout_align_x = true; + } + if (style.layout.alignment.y) |y| { + style_internal.layout.alignment.y = y; + mask.layout_align_y = true; + } + if (style.layout.spacing) |spacing| { + style_internal.layout.spacing = spacing; + mask.layout_spacing = true; + } + if (style.layout.margin.x) |x| { + style_internal.layout.margin.x = x; + mask.layout_margin_x = true; + } + if (style.layout.margin.y) |y| { + style_internal.layout.margin.y = y; + mask.layout_margin_y = true; + } + if (style.floating.x) |x| { + style_internal.floating.x = x; + if (style.float_target.x) |target_x| { + style_internal.float_target.x = target_x; + } + mask.float_x = true; + } + if (style.floating.y) |y| { + style_internal.floating.y = y; + if (style.float_target.y) |target_y| { + style_internal.float_target.y = target_y; + } + mask.float_y = true; + } + if (style.color) |color| { + style_internal.color = color; + mask.color = true; + } + if (style.bg_color) |bg_color| { + style_internal.bg_color = bg_color; + mask.bg_color = true; + } + if (style.border_color) |border_color| { + style_internal.border_color = border_color; + mask.border_color = true; + } + if (style.border_size) |border_size| { + style_internal.border_size = border_size; + mask.border_size = true; + } + if (style.roundness) |roundness| { + style_internal.roundness = roundness; + mask.roundness = true; + } + if (style.font) |font| { + style_internal.font = font; + mask.font = true; + } + if (style.font_size) |font_size| { + style_internal.font_size = font_size; + mask.font_size = true; + } + if (style.animation_time) |animation_time| { + style_internal.animation_time = animation_time; + mask.animation_time = true; + } + if (style.animation_mask != .None) { + style_internal.animation_mask = @enumFromInt( + @intFromEnum(style_internal.animation_mask) | @intFromEnum(style.animation_mask), + ); + mask.animation_mask = true; + } + + return .{ .style = style_internal, .mask = mask }; +} + +//------------------------------------------------------------------------------------------ +// [UI]: box keys +//------------------------------------------------------------------------------------------ + +extern fn oc_ui_key_make_str8(string: Str8) UiKey; +extern fn oc_ui_key_make_path(path: Str8List) UiKey; + +pub fn uiKeyMake(string: []const u8) UiKey { + return oc_ui_key_make_str8(Str8.fromSlice(string)); +} + +pub const uiKeyMakePath = oc_ui_key_make_path; + +//------------------------------------------------------------------------------------------ +// [UI]: box hierarchy building +//------------------------------------------------------------------------------------------ + +extern fn oc_ui_box_make_str8(string: Str8, flags: UiFlags) *UiBox; +extern fn oc_ui_box_begin_str8(string: Str8, flags: UiFlags) *UiBox; +extern fn oc_ui_box_end() *UiBox; + +extern fn oc_ui_box_push(box: *UiBox) void; +extern fn oc_ui_box_pop() void; +extern fn oc_ui_box_top() ?*UiBox; + +extern fn oc_ui_box_lookup_key(key: UiKey) ?*UiBox; +extern fn oc_ui_box_lookup_str8(string: Str8) ?*UiBox; + +extern fn oc_ui_box_set_draw_proc(box: UiBox, proc: UiBoxDrawProc, data: ?*anyopaque) void; + +pub fn uiBoxMake(string: []const u8, flags: UiFlags) *UiBox { + return oc_ui_box_make_str8(Str8.fromSlice(string), flags); +} + +pub fn uiBoxBegin(string: []const u8, flags: UiFlags) *UiBox { + return oc_ui_box_begin_str8(Str8.fromSlice(string), flags); +} + +pub const uiBoxEnd = oc_ui_box_end; + +pub const uiBoxPush = oc_ui_box_push; +pub const uiBoxPop = oc_ui_box_pop; +pub const uiBoxTop = oc_ui_box_top; + +pub const uiBoxLookupKey = oc_ui_box_lookup_key; + +pub fn uiBoxLookupStr(string: []const u8) ?*UiBox { + return oc_ui_box_lookup_str8(Str8.fromSlice(string)); +} + +pub const uiBoxSetDrawProc = oc_ui_box_set_draw_proc; + +//------------------------------------------------------------------------------------------ +// [UI]: box status and signals +//------------------------------------------------------------------------------------------ + +extern fn oc_ui_box_closed(box: *UiBox) bool; +extern fn oc_ui_box_set_closed(box: *UiBox, closed: bool) void; + +extern fn oc_ui_box_active(box: *UiBox) bool; +extern fn oc_ui_box_activate(box: *UiBox) void; +extern fn oc_ui_box_deactivate(box: *UiBox) void; + +extern fn oc_ui_box_hot(box: *UiBox) bool; +extern fn oc_ui_box_set_hot(box: *UiBox, hot: bool) void; + +extern fn oc_ui_box_sig(box: *UiBox) UiSig; + +pub const uiBoxClosed = oc_ui_box_closed; +pub const uiBoxSetClosed = oc_ui_box_set_closed; + +pub const uiBoxActive = oc_ui_box_active; +pub const uiBoxActivate = oc_ui_box_activate; +pub const uiBoxDeactivate = oc_ui_box_deactivate; + +pub const uiBoxHot = oc_ui_box_hot; +pub const uiBoxSetHot = oc_ui_box_set_hot; + +pub const uiBoxSig = oc_ui_box_sig; + +//------------------------------------------------------------------------------------------ +// [UI]: tagging +//------------------------------------------------------------------------------------------ + +extern fn oc_ui_tag_make_str8(string: Str8) UiTag; +extern fn oc_ui_tag_box_str8(box: *UiBox, string: Str8) void; +extern fn oc_ui_tag_next_str8(string: Str8) void; + +pub fn uiTagMake(string: []const u8) UiTag { + return oc_ui_tag_make_str8(Str8.fromSlice(string)); +} + +pub fn uiTagBox(box: *UiBox, string: []const u8) void { + oc_ui_tag_box_str8(box, Str8.fromSlice(string)); +} + +pub fn uiTagNext(string: []const u8) void { + oc_ui_tag_next_str8(Str8.fromSlice(string)); +} + +//------------------------------------------------------------------------------------------ +// [UI]: styling +//------------------------------------------------------------------------------------------ + +const UiSelectorDataInternal = extern union { + text: Str8, + key: UiKey, + tag: UiTag, + status: UiStatus, +}; + +const UiSelectorInternal = extern struct { + list_elt: ListElt, + kind: UiSelectorKind, + op: UiSelectorOp, + data: UiSelectorDataInternal, +}; + +extern fn oc_ui_style_next(style: *UiStyleInternal, mask: UiStyleMaskInternal) void; +extern fn oc_ui_style_match_before(pattern: UiPattern, style: *UiStyleInternal, mask: UiStyleMaskInternal) void; +extern fn oc_ui_style_match_after(patterh: UiPattern, style: *UiStyleInternal, mask: UiStyleMaskInternal) void; + +pub fn uiStyleNext(style: UiStyle) void { + var style_and_mask = uiConvertStyle(&style); + oc_ui_style_next(&style_and_mask.style, style_and_mask.mask); +} + +pub fn uiStyleMatchBefore(pattern: UiPattern, style: UiStyle) void { + var style_and_mask = uiConvertStyle(&style); + oc_ui_style_match_before(pattern, &style_and_mask.style, style_and_mask.mask); +} + +pub fn uiStyleMatchAfter(pattern: UiPattern, style: UiStyle) void { + var style_and_mask = uiConvertStyle(&style); + oc_ui_style_match_after(pattern, &style_and_mask.style, style_and_mask.mask); +} + +pub fn uiApplyStyle(dst: *UiStyle, src: *UiStyle) void { + if (src.size.width) |width| { + dst.size.width = width; + } + if (src.size.height) |height| { + dst.size.height = height; + } + if (src.layout.axis) |axis| { + dst.layout.axis = axis; + } + if (src.layout.alignment.x) |x| { + dst.layout.alignment.x = x; + } + if (src.layout.alignment.y) |y| { + dst.layout.alignment.y = y; + } + if (src.layout.spacing) |spacing| { + dst.layout.spacing = spacing; + } + if (src.layout.margin.x) |x| { + dst.layout.margin.x = x; + } + if (src.layout.margin.y) |y| { + dst.layout.margin.y = y; + } + if (src.floating.x) |x| { + dst.floating.x = x; + } + if (src.float_target.x) |x| { + dst.float_target.x = x; + } + if (src.floating.y) |y| { + dst.floating.y = y; + } + if (src.float_target.y) |y| { + dst.float_target.y = y; + } + if (src.color) |color| { + dst.color = color; + } + if (src.bg_color) |bg_color| { + dst.bg_color = bg_color; + } + if (src.border_color) |border_color| { + dst.border_color = border_color; + } + if (src.border_size) |border_size| { + dst.border_size = border_size; + } + if (src.roudness) |roudness| { + dst.roudness = roudness; + } + if (src.font) |font| { + dst.font = font; + } + if (src.font_size) |font_size| { + dst.font_size = font_size; + } + if (src.animation_time) |animation_time| { + dst.animation_time = animation_time; + } + if (src.animation_mask) |animation_mask| { + dst.animation_mask = animation_mask; + } +} + +fn uiConvertSelector(selector: UiSelector) UiSelectorInternal { + var data: UiSelectorDataInternal = switch (selector.sel) { + .any, .owner => std.mem.zeroes(UiSelectorDataInternal), + .text => |text| .{ .text = Str8.fromSlice(text) }, + .key => |key| .{ .key = key }, + .tag => |tag| .{ .tag = tag }, + .status => |status| .{ .status = status }, + }; + + return UiSelectorInternal{ + .list_elt = .{ .prev = null, .next = null }, + .kind = selector.sel, + .op = selector.op, + .data = data, + }; +} + +//------------------------------------------------------------------------------------------ +// [UI]: basic widget helpers +//------------------------------------------------------------------------------------------ + +extern fn oc_ui_label_str8(label: Str8) UiSig; +extern fn oc_ui_button_str8(label: Str8) UiSig; +extern fn oc_ui_checkbox_str8(label: Str8, checked: *bool) UiSig; +extern fn oc_ui_slider_str8(label: Str8, value: *f32) *UiBox; +extern fn oc_ui_scrollbar_str8(label: Str8, thumbRatio: f32, scrollValue: *f32) *UiBox; +extern fn oc_ui_tooltip_str8(label: Str8) void; + +extern fn oc_ui_panel_begin_str8(name: Str8, flags: UiFlags) void; +extern fn oc_ui_panel_end() void; + +extern fn oc_ui_menu_bar_begin_str8(label: Str8) void; +extern fn oc_ui_menu_bar_end() void; +extern fn oc_ui_menu_begin_str8(label: Str8) void; +extern fn oc_ui_menu_end() void; +extern fn oc_ui_menu_button_str8(name: Str8) UiSig; + +const UiTextBoxResultInternal = extern struct { + changed: bool, + accepted: bool, + text: Str8, +}; +extern fn oc_ui_text_box_str8(name: Str8, arena: Arena, text: Str8) UiTextBoxResultInternal; + +const UiSelectPopupInfoInternal = extern struct { + changed: bool, + selected_index: c_int, + option_count: c_int, + options: [*]Str8, + placeholder: Str8, +}; +extern fn oc_ui_select_popup_str8(name: Str8, info: *UiSelectPopupInfoInternal) UiSelectPopupInfoInternal; + +const UiRadioGroupInfoInternal = extern struct { + changed: bool, + selected_index: c_int, + option_count: c_int, + options: [*]Str8, +}; +extern fn oc_ui_radio_group_str8(name: Str8, info: UiRadioGroupInfoInternal) UiRadioGroupInfoInternal; + +pub fn uiLabel(label: []const u8) UiSig { + return oc_ui_label_str8(Str8.fromSlice(label)); +} + +pub fn uiButton(label: []const u8) UiSig { + return oc_ui_button_str8(Str8.fromSlice(label)); +} + +pub fn uiCheckbox(label: []const u8, checked: *bool) UiSig { + return oc_ui_checkbox_str8(Str8.fromSlice(label), checked); +} + +pub fn uiSlider(label: []const u8, value: *f32) *UiBox { + return oc_ui_slider_str8(Str8.fromSlice(label), value); +} + +pub fn uiScrollbar(label: []const u8, thumbRatio: f32, scrollValue: *f32) *UiBox { + return oc_ui_scrollbar_str8(Str8.fromSlice(label), thumbRatio, scrollValue); +} + +pub fn uiTooltip(label: []const u8) void { + oc_ui_tooltip_str8(Str8.fromSlice(label)); +} + +pub fn uiPanelBegin(name: []const u8, flags: UiFlags) void { + oc_ui_panel_begin_str8(Str8.fromSlice(name), flags); +} + +pub fn uiPanelEnd() void { + oc_ui_panel_end(); +} + +pub fn uiMenuBarBegin(label: []const u8) void { + oc_ui_menu_bar_begin_str8(Str8.fromSlice(label)); +} + +pub fn uiMenuBarEnd() void { + oc_ui_menu_bar_end(); +} + +pub fn uiMenuBegin(label: []const u8) void { + oc_ui_menu_begin_str8(Str8.fromSlice(label)); +} + +pub fn uiMenuEnd() void { + oc_ui_menu_end(); +} + +pub fn uiMenuButton(name: []const u8) UiSig { + return oc_ui_menu_button_str8(Str8.fromSlice(name)); +} + +pub const UiTextBoxResult = struct { + changed: bool, + accepted: bool, + text: []u8, +}; + +pub fn uiTextBox(name: []const u8, arena: Arena, text: []const u8) UiTextBoxResult { + var result_internal = oc_ui_text_box_str8(Str8.fromSlice(name), arena, Str8.fromSlice(text)); + return .{ + .changed = result_internal.changed, + .accepted = result_internal.accepted, + .text = result_internal.text.slice(), + }; +} + +pub const UiSelectPopupInfo = struct { + changed: bool = false, + selected_index: ?usize, + options: [][]const u8, + placeholder: []const u8 = "", +}; + +pub fn uiSelectPopup(name: []const u8, info: *UiSelectPopupInfo) UiSelectPopupInfo { + var info_internal = UiSelectPopupInfoInternal{ + .changed = info.changed, + .selected_index = if (info.selected_index) |selected_index| @intCast(selected_index) else -1, + .option_count = @intCast(info.options.len), + .options = @ptrCast(info.options.ptr), + .placeholder = Str8.fromSlice(info.placeholder), + }; + var result_internal = oc_ui_select_popup_str8(Str8.fromSlice(name), &info_internal); + return .{ + .changed = result_internal.changed, + .selected_index = if (result_internal.selected_index >= 0) @intCast(result_internal.selected_index) else null, + .options = @ptrCast(result_internal.options[0..@intCast(result_internal.option_count)]), + .placeholder = result_internal.placeholder.slice(), + }; +} + +pub const UiRadioGroupInfo = struct { + changed: bool = false, + selected_index: ?usize, + options: [][]const u8, +}; + +pub fn uiRadioGroup(name: []const u8, info: *UiRadioGroupInfo) UiRadioGroupInfo { + var info_internal = UiRadioGroupInfoInternal{ + .changed = info.changed, + .selected_index = if (info.selected_index) |selected_index| @intCast(selected_index) else -1, + .option_count = @intCast(info.options.len), + .options = @ptrCast(info.options.ptr), + }; + var result_internal = oc_ui_radio_group_str8(Str8.fromSlice(name), info_internal); + return .{ + .changed = result_internal.changed, + .selected_index = if (result_internal.selected_index >= 0) @intCast(result_internal.selected_index) else null, + .options = @ptrCast(result_internal.options[0..@intCast(result_internal.option_count)]), + }; +} + //------------------------------------------------------------------------------------------ // [GRAPHICS]: GLES //------------------------------------------------------------------------------------------ @@ -1861,22 +3333,28 @@ pub const Canvas = extern struct { // [FILE IO] basic API //------------------------------------------------------------------------------------------ -const File = extern struct { +pub const File = extern struct { const OpenFlags = packed struct(u16) { - none: bool, - append: bool, - truncate: bool, - create: bool, + _: u1 = 0, - symlink: bool, - no_follow: bool, - restrict: bool, + append: bool = false, + truncate: bool = false, + create: bool = false, + + symlink: bool = false, + no_follow: bool = false, + restrict: bool = false, + + __: u9 = 0, }; const AccessFlags = packed struct(u16) { - none: bool, - read: bool, - write: bool, + _: u1 = 0, + + read: bool = false, + write: bool = false, + + __: u13 = 0, }; const Whence = enum(c_uint) { @@ -1975,8 +3453,8 @@ const File = extern struct { extern fn oc_file_last_error(file: File) io.Error; extern fn oc_file_pos(file: File) i64; extern fn oc_file_seek(file: File, offset: i64, whence: Whence) i64; - extern fn oc_file_write(file: File, size: u64, buffer: ?[*]u8) u64; - extern fn oc_file_read(file: File, size: u64, buffer: ?[*]u8) u64; + extern fn oc_file_write(file: File, size: u64, buffer: [*]u8) u64; + extern fn oc_file_read(file: File, size: u64, buffer: [*]u8) u64; extern fn oc_file_get_status(file: File) Status; extern fn oc_file_size(file: File) u64; @@ -1992,11 +3470,22 @@ const File = extern struct { pub const lastError = oc_file_last_error; pub const pos = oc_file_pos; pub const seek = oc_file_seek; - pub const write = oc_file_write; - pub const read = oc_file_read; + + pub fn write(self: File, size: u64, buffer: []u8) u64 { + assert(size <= buffer.len, "Trying to write more than the buffer length: {d}/{d}", .{ size, buffer.len }, @src()); + return @intCast(oc_file_write(self, size, buffer.ptr)); + } + + pub fn read(self: File, size: u64, buffer: []u8) u64 { + assert(size <= buffer.len, "Trying to read more than the buffer length: {d}/{d}", .{ size, buffer.len }, @src()); + return @intCast(oc_file_read(self, size, buffer.ptr)); + } pub const getStatus = oc_file_get_status; - pub const size = oc_file_size; + + pub fn getSize(self: File) usize { + return @intCast(oc_file_size(self)); + } pub const openWithRequest = oc_file_open_with_request; pub const openWithDialog = oc_file_open_with_dialog; @@ -2006,11 +3495,11 @@ const File = extern struct { // [FILE IO] low-level io queue api //------------------------------------------------------------------------------------------ -const io = struct { - const ReqId = u16; - const Op = u32; +pub const io = struct { + pub const ReqId = u16; + pub const Op = u32; - const OpEnum = enum(c_uint) { + pub const OpEnum = enum(c_uint) { OpenAt = 0, Close, FStat, @@ -2020,7 +3509,7 @@ const io = struct { Error, }; - const Req = extern struct { + pub const Req = extern struct { id: ReqId, op: Op, handle: File, @@ -2042,7 +3531,7 @@ const io = struct { }, }; - const Error = enum(i32) { + pub const Error = enum(i32) { Ok = 0, Unknown, Op, // unsupported operation @@ -2068,7 +3557,7 @@ const io = struct { Walkout, // attempted to walk out of root directory }; - const Cmp = extern struct { + pub const Cmp = extern struct { id: ReqId, err: Error, data: extern union { diff --git a/src/ui/ui.c b/src/ui/ui.c index c526f40..68bcfc6 100644 --- a/src/ui/ui.c +++ b/src/ui/ui.c @@ -1778,7 +1778,7 @@ oc_ui_sig oc_ui_button_behavior(oc_ui_box* box) { oc_ui_box_set_hot(box, false); } - if(!sig.hovering && !sig.dragging) + if(!sig.hovering || !sig.dragging) { oc_ui_box_deactivate(box); } @@ -1873,7 +1873,7 @@ void oc_ui_checkbox_draw(oc_ui_box* box, void* data) oc_matrix_pop(); } -oc_ui_sig oc_ui_checkbox(const char* name, bool* checked) +oc_ui_sig oc_ui_checkbox_str8(oc_str8 name, bool* checked) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; @@ -1918,7 +1918,7 @@ oc_ui_sig oc_ui_checkbox(const char* name, bool* checked) | OC_UI_FLAG_HOT_ANIMATION | OC_UI_FLAG_ACTIVE_ANIMATION; - box = oc_ui_box_make(name, flags); + box = oc_ui_box_make_str8(name, flags); oc_ui_tag_box(box, "checkbox"); oc_ui_box_set_draw_proc(box, oc_ui_checkbox_draw, 0); @@ -1968,7 +1968,7 @@ oc_ui_sig oc_ui_checkbox(const char* name, bool* checked) | OC_UI_FLAG_HOT_ANIMATION | OC_UI_FLAG_ACTIVE_ANIMATION; - box = oc_ui_box_make(name, flags); + box = oc_ui_box_make_str8(name, flags); oc_ui_tag_box(box, "checkbox"); } @@ -1981,16 +1981,21 @@ oc_ui_sig oc_ui_checkbox(const char* name, bool* checked) return (sig); } +oc_ui_sig oc_ui_checkbox(const char* name, bool* checked) +{ + return oc_ui_checkbox_str8(OC_STR8(name), checked); +} + //------------------------------------------------------------------------------ // slider / scrollbar //------------------------------------------------------------------------------ -oc_ui_box* oc_ui_slider(const char* label, f32* value) +oc_ui_box* oc_ui_slider_str8(oc_str8 label, f32* value) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; oc_ui_style_match_before(oc_ui_pattern_all(), &(oc_ui_style){ 0 }, OC_UI_STYLE_LAYOUT); - oc_ui_box* frame = oc_ui_box_begin(label, 0); + oc_ui_box* frame = oc_ui_box_begin_str8(label, 0); { oc_ui_axis trackAxis = (frame->rect.w > frame->rect.h) ? OC_UI_AXIS_X : OC_UI_AXIS_Y; oc_ui_axis secondAxis = (trackAxis == OC_UI_AXIS_Y) ? OC_UI_AXIS_X : OC_UI_AXIS_Y; @@ -2161,12 +2166,17 @@ oc_ui_box* oc_ui_slider(const char* label, f32* value) return (frame); } -oc_ui_box* oc_ui_scrollbar(const char* label, f32 thumbRatio, f32* scrollValue) +oc_ui_box* oc_ui_slider(const char* label, f32* value) +{ + return oc_ui_slider_str8(OC_STR8(label), value); +} + +oc_ui_box* oc_ui_scrollbar_str8(oc_str8 label, f32 thumbRatio, f32* scrollValue) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; oc_ui_style_match_before(oc_ui_pattern_all(), &(oc_ui_style){ 0 }, OC_UI_STYLE_LAYOUT); - oc_ui_box* frame = oc_ui_box_begin(label, 0); + oc_ui_box* frame = oc_ui_box_begin_str8(label, 0); { f32 minThumbRatio = 17. / oc_max(frame->rect.w, frame->rect.h); thumbRatio = oc_min(oc_max(thumbRatio, minThumbRatio), 1.); @@ -2292,10 +2302,15 @@ oc_ui_box* oc_ui_scrollbar(const char* label, f32 thumbRatio, f32* scrollValue) return (frame); } +oc_ui_box* oc_ui_scrollbar(const char* label, f32 thumbRatio, f32* scrollValue) +{ + return oc_ui_scrollbar_str8(OC_STR8(label), thumbRatio, scrollValue); +} + //------------------------------------------------------------------------------ // panels //------------------------------------------------------------------------------ -void oc_ui_panel_begin(const char* str, oc_ui_flags flags) +void oc_ui_panel_begin_str8(oc_str8 str, oc_ui_flags flags) { flags = flags | OC_UI_FLAG_CLIP @@ -2311,7 +2326,7 @@ void oc_ui_panel_begin(const char* str, oc_ui_flags flags) .layout.margin.y = 0 }, OC_UI_STYLE_SIZE | OC_UI_STYLE_LAYOUT_MARGINS); - oc_ui_box_begin(str, flags); + oc_ui_box_begin_str8(str, flags); oc_ui_style_next(&(oc_ui_style){ .size.width = { OC_UI_SIZE_PARENT, 1 }, .size.height = { OC_UI_SIZE_PARENT, 1 } }, @@ -2320,6 +2335,11 @@ void oc_ui_panel_begin(const char* str, oc_ui_flags flags) oc_ui_box_begin("contents", 0); } +void oc_ui_panel_begin(const char* str, oc_ui_flags flags) +{ + oc_ui_panel_begin_str8(OC_STR8(str), flags); +} + void oc_ui_panel_end(void) { oc_ui_box_end(); // contents @@ -2413,7 +2433,7 @@ void oc_ui_tooltip_arrow_draw(oc_ui_box* box, void* data) oc_matrix_pop(); } -void oc_ui_tooltip(const char* label) +void oc_ui_tooltip_str8(oc_str8 label) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; @@ -2424,7 +2444,7 @@ void oc_ui_tooltip(const char* label) .floatTarget.x = p.x, .floatTarget.y = p.y }; oc_ui_style_next(&containerStyle, OC_UI_STYLE_FLOAT); - oc_ui_container(label, OC_UI_FLAG_OVERLAY) + oc_ui_container_str8(label, OC_UI_FLAG_OVERLAY) { oc_ui_style arrowStyle = { .size.width = { OC_UI_SIZE_PIXELS, 24 }, .size.height = { OC_UI_SIZE_PIXELS, 24 }, @@ -2460,17 +2480,22 @@ void oc_ui_tooltip(const char* label) oc_ui_box* contents = oc_ui_box_begin("contents", OC_UI_FLAG_DRAW_BACKGROUND); - oc_ui_label(label); + oc_ui_label_str8(label); oc_ui_box_end(); } } +void oc_ui_tooltip(const char* label) +{ + oc_ui_tooltip_str8(OC_STR8(label)); +} + //------------------------------------------------------------------------------ // Menus //------------------------------------------------------------------------------ -void oc_ui_menu_bar_begin(const char* name) +void oc_ui_menu_bar_begin_str8(oc_str8 name) { oc_ui_style style = { .size.width = { OC_UI_SIZE_PARENT, 1, 0 }, @@ -2481,7 +2506,7 @@ void oc_ui_menu_bar_begin(const char* name) | OC_UI_STYLE_LAYOUT_AXIS; oc_ui_style_next(&style, mask); - oc_ui_box* bar = oc_ui_box_begin(name, OC_UI_FLAG_DRAW_BACKGROUND); + oc_ui_box* bar = oc_ui_box_begin_str8(name, OC_UI_FLAG_DRAW_BACKGROUND); oc_ui_sig sig = oc_ui_box_sig(bar); oc_ui_context* ui = oc_ui_get_context(); @@ -2491,16 +2516,21 @@ void oc_ui_menu_bar_begin(const char* name) } } +void oc_ui_menu_bar_begin(const char* name) +{ + oc_ui_menu_bar_begin_str8(OC_STR8(name)); +} + void oc_ui_menu_bar_end(void) { oc_ui_box_end(); // menu bar } -void oc_ui_menu_begin(const char* label) +void oc_ui_menu_begin_str8(oc_str8 label) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; - oc_ui_box* container = oc_ui_box_make(label, 0); + oc_ui_box* container = oc_ui_box_make_str8(label, 0); oc_ui_box_push(container); oc_ui_style_next(&(oc_ui_style){ .size.width = { OC_UI_SIZE_CHILDREN }, @@ -2525,7 +2555,7 @@ void oc_ui_menu_begin(const char* label) oc_ui_style_next(&(oc_ui_style){ .size.width = { OC_UI_SIZE_TEXT }, .size.height = { OC_UI_SIZE_TEXT } }, OC_UI_STYLE_SIZE); - oc_ui_box* buttonLabel = oc_ui_box_make(label, OC_UI_FLAG_DRAW_TEXT); + oc_ui_box* buttonLabel = oc_ui_box_make_str8(label, OC_UI_FLAG_DRAW_TEXT); oc_ui_box_end(); // button @@ -2592,13 +2622,18 @@ void oc_ui_menu_begin(const char* label) oc_ui_box_push(menu); } +void oc_ui_menu_begin(const char* label) +{ + oc_ui_menu_begin_str8(OC_STR8(label)); +} + void oc_ui_menu_end(void) { oc_ui_box_pop(); // menu oc_ui_box_pop(); // container } -oc_ui_sig oc_ui_menu_button(const char* name) +oc_ui_sig oc_ui_menu_button_str8(oc_str8 name) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; @@ -2627,11 +2662,16 @@ oc_ui_sig oc_ui_menu_button(const char* name) | OC_UI_FLAG_DRAW_TEXT | OC_UI_FLAG_DRAW_BACKGROUND; - oc_ui_box* box = oc_ui_box_make(name, flags); + oc_ui_box* box = oc_ui_box_make_str8(name, flags); oc_ui_sig sig = oc_ui_box_sig(box); return (sig); } +oc_ui_sig oc_ui_menu_button(const char* name) +{ + return oc_ui_menu_button_str8(OC_STR8(name)); +} + //------------------------------------------------------------------------------ // Select //------------------------------------------------------------------------------ @@ -2689,14 +2729,14 @@ void oc_ui_select_popup_draw_checkmark(oc_ui_box* box, void* data) oc_matrix_pop(); } -oc_ui_select_popup_info oc_ui_select_popup(const char* name, oc_ui_select_popup_info* info) +oc_ui_select_popup_info oc_ui_select_popup_str8(oc_str8 name, oc_ui_select_popup_info* info) { oc_ui_select_popup_info result = *info; oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; - oc_ui_container(name, 0) + oc_ui_container_str8(name, 0) { oc_ui_pattern hoverPattern = { 0 }; oc_ui_pattern_push(&ui->frameArena, &hoverPattern, (oc_ui_selector){ .kind = OC_UI_SEL_STATUS, .status = OC_UI_HOVER }); @@ -2908,6 +2948,11 @@ oc_ui_select_popup_info oc_ui_select_popup(const char* name, oc_ui_select_popup_ return (result); } +oc_ui_select_popup_info oc_ui_select_popup(const char* name, oc_ui_select_popup_info* info) +{ + return oc_ui_select_popup_str8(OC_STR8(name), info); +} + //------------------------------------------------------------------------------ // Radio group //------------------------------------------------------------------------------ @@ -2926,7 +2971,7 @@ void oc_ui_radio_indicator_draw(oc_ui_box* box, void* data) oc_matrix_pop(); } -oc_ui_radio_group_info oc_ui_radio_group(const char* name, oc_ui_radio_group_info* info) +oc_ui_radio_group_info oc_ui_radio_group_str8(oc_str8 name, oc_ui_radio_group_info* info) { oc_ui_radio_group_info result = *info; @@ -2937,7 +2982,7 @@ oc_ui_radio_group_info oc_ui_radio_group(const char* name, oc_ui_radio_group_inf .layout.spacing = 12 }, OC_UI_STYLE_LAYOUT_AXIS | OC_UI_STYLE_LAYOUT_SPACING); - oc_ui_container(name, 0) + oc_ui_container_str8(name, 0) { for(int i = 0; i < info->optionCount; i++) { @@ -3036,6 +3081,11 @@ oc_ui_radio_group_info oc_ui_radio_group(const char* name, oc_ui_radio_group_inf return (result); } +oc_ui_radio_group_info oc_ui_radio_group(const char* name, oc_ui_radio_group_info* info) +{ + return oc_ui_radio_group_str8(OC_STR8(name), info); +} + //------------------------------------------------------------------------------ // text box //------------------------------------------------------------------------------ @@ -3817,7 +3867,7 @@ void oc_ui_text_box_render(oc_ui_box* box, void* data) } } -oc_ui_text_box_result oc_ui_text_box(const char* name, oc_arena* arena, oc_str8 text) +oc_ui_text_box_result oc_ui_text_box_str8(oc_str8 name, oc_arena* arena, oc_str8 text) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; @@ -3853,7 +3903,7 @@ oc_ui_text_box_result oc_ui_text_box(const char* name, oc_arena* arena, oc_str8 oc_ui_flags frameFlags = OC_UI_FLAG_CLICKABLE | OC_UI_FLAG_DRAW_BACKGROUND | OC_UI_FLAG_DRAW_BORDER; - oc_ui_box* frame = oc_ui_box_begin(name, frameFlags); + oc_ui_box* frame = oc_ui_box_begin_str8(name, frameFlags); oc_ui_tag_box(frame, "frame"); oc_font font = frame->style.font; f32 fontSize = frame->style.fontSize; @@ -4136,6 +4186,11 @@ oc_ui_text_box_result oc_ui_text_box(const char* name, oc_arena* arena, oc_str8 return (result); } +oc_ui_text_box_result oc_ui_text_box(const char* name, oc_arena* arena, oc_str8 text) +{ + return oc_ui_text_box_str8(OC_STR8(name), arena, text); +} + //------------------------------------------------------------------------------ // Themes // doc/UIColors.md has them visualized diff --git a/src/ui/ui.h b/src/ui/ui.h index e411d4b..93661a5 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -518,7 +518,6 @@ struct oc_ui_box oc_list beforeRules; oc_list afterRules; - //oc_ui_style_tag tag; oc_ui_style* targetStyle; oc_ui_style style; u32 z; @@ -632,8 +631,6 @@ typedef struct oc_ui_context i32 editWordSelectionInitialCursor; i32 editWordSelectionInitialMark; - bool clipboardRegistered; - oc_ui_theme* theme; } oc_ui_context; @@ -731,17 +728,6 @@ ORCA_API void oc_ui_style_match_after(oc_ui_pattern pattern, oc_ui_style* style, //------------------------------------------------------------------------- // Basic widget helpers //------------------------------------------------------------------------- -enum -{ - OC_UI_STYLE_TAG_USER_MAX = 1 << 16, - OC_UI_STYLE_TAG_LABEL, - OC_UI_STYLE_TAG_BUTTON, - OC_UI_STYLE_TAG_SCROLLBAR, - OC_UI_STYLE_TAG_PANEL, - OC_UI_STYLE_TAG_TOOLTIP, - OC_UI_STYLE_TAG_MENU -}; - ORCA_API oc_ui_sig oc_ui_label(const char* label); ORCA_API oc_ui_sig oc_ui_label_str8(oc_str8 label); -- 2.25.1 From 30d45cd7fd069142676f46b3471586dffe41f4a2 Mon Sep 17 00:00:00 2001 From: Ilia Demianenko Date: Tue, 3 Oct 2023 20:22:43 -0700 Subject: [PATCH 23/24] Comptime enum counts, namespace UI, clarify names/labels --- doc/cheatsheets/cheatsheet_ui.h | 12 +- samples/zig-ui/src/main.zig | 407 +++--- src/orca.zig | 2273 ++++++++++++++++--------------- src/ui/ui.c | 24 +- src/ui/ui.h | 10 +- 5 files changed, 1365 insertions(+), 1361 deletions(-) diff --git a/doc/cheatsheets/cheatsheet_ui.h b/doc/cheatsheets/cheatsheet_ui.h index 3487195..733fbe1 100644 --- a/doc/cheatsheets/cheatsheet_ui.h +++ b/doc/cheatsheets/cheatsheet_ui.h @@ -29,15 +29,17 @@ oc_ui_sig oc_ui_label(const char* label); oc_ui_sig oc_ui_label_str8(oc_str8 label); oc_ui_sig oc_ui_button(const char* label); oc_ui_sig oc_ui_checkbox(const char* name, bool* checked); -oc_ui_box* oc_ui_slider(const char* label, f32 thumbRatio, f32* scrollValue); +oc_ui_box* oc_ui_slider(const char* name, f32* value); +oc_ui_box* oc_ui_scrollbar(const char* name, f32 thumbRatio, f32* scrollValue); oc_ui_text_box_result oc_ui_text_box(const char* name, oc_arena* arena, oc_str8 text); oc_ui_select_popup_info oc_ui_select_popup(const char* name, oc_ui_select_popup_info* info); +oc_ui_radio_group_info oc_ui_radio_group(const char* name, oc_ui_radio_group_info* info); void oc_ui_panel_begin(const char* name, oc_ui_flags flags); void oc_ui_panel_end(void); #define oc_ui_panel(s, f) -void oc_ui_menu_bar_begin(const char* label); +void oc_ui_menu_bar_begin(const char* name); void oc_ui_menu_bar_end(void); #define oc_ui_menu_bar(name) @@ -45,11 +47,11 @@ void oc_ui_menu_begin(const char* label); void oc_ui_menu_end(void); #define oc_ui_menu(name) -oc_ui_sig oc_ui_menu_button(const char* name); +oc_ui_sig oc_ui_menu_button(const char* label); -oc_ui_sig oc_ui_tooltip_begin(const char* name); +oc_ui_sig oc_ui_tooltip_begin(const char* label); void oc_ui_tooltip_end(void); -#define oc_ui_tooltip(name) +#define oc_ui_tooltip(label) //------------------------------------------------------------------------------------- // Styling diff --git a/samples/zig-ui/src/main.zig b/samples/zig-ui/src/main.zig index 4d8112c..752bf37 100644 --- a/samples/zig-ui/src/main.zig +++ b/samples/zig-ui/src/main.zig @@ -1,5 +1,6 @@ const std = @import("std"); const oc = @import("orca"); +const ui = oc.ui; var frame_size: oc.Vec2 = .{ .x = 1200, .y = 838 }; @@ -7,7 +8,7 @@ var surface: oc.Surface = undefined; var canvas: oc.Canvas = undefined; var font_regular: oc.Font = undefined; var font_bold: oc.Font = undefined; -var ui: oc.UiContext = undefined; +var ui_ctx: ui.Context = undefined; var text_arena: oc.Arena = undefined; var log_arena: oc.Arena = undefined; var log_lines: oc.Str8List = undefined; @@ -25,7 +26,7 @@ export fn oc_on_init() void { surface = oc.Surface.canvas(); canvas = oc.Canvas.create(); - ui.init(); + ui_ctx.init(); var fonts = [_]*oc.Font{ &font_regular, &font_bold }; var font_names = [_][]const u8{ "/OpenSans-Regular.ttf", "/OpenSans-Bold.ttf" }; @@ -63,7 +64,7 @@ export fn oc_on_init() void { } export fn oc_on_raw_event(event: *oc.CEvent) void { - oc.uiProcessCEvent(event); + ui.processCEvent(event); } export fn oc_on_resize(width: u32, height: u32) void { @@ -76,52 +77,52 @@ export fn oc_on_frame_refresh() void { defer scratch.end(); switch (cmd) { - .SetDarkTheme => oc.uiSetTheme(oc.ui_dark_theme), - .SetLightTheme => oc.uiSetTheme(oc.ui_light_theme), + .SetDarkTheme => ui.setTheme(ui.dark_theme), + .SetLightTheme => ui.setTheme(ui.light_theme), .None => {}, } cmd = .None; - var default_style = oc.UiStyle{ .font = font_regular }; + var default_style = ui.Style{ .font = font_regular }; { - oc.uiBeginFrame(frame_size, &default_style); - defer oc.uiEndFrame(); + ui.beginFrame(frame_size, &default_style); + defer ui.endFrame(); //-------------------------------------------------------------------------------------------- // Menu bar //-------------------------------------------------------------------------------------------- { - oc.uiMenuBarBegin("menu_bar"); - defer oc.uiMenuBarEnd(); + ui.menuBarBegin("menu_bar"); + defer ui.menuBarEnd(); { - oc.uiMenuBegin("File"); - defer oc.uiMenuEnd(); + ui.menuBegin("File"); + defer ui.menuEnd(); - if (oc.uiMenuButton("Quit").pressed) { + if (ui.menuButton("Quit").pressed) { oc.requestQuit(); } } { - oc.uiMenuBegin("Theme"); - defer oc.uiMenuEnd(); + ui.menuBegin("Theme"); + defer ui.menuEnd(); - if (oc.uiMenuButton("Dark theme").pressed) { + if (ui.menuButton("Dark theme").pressed) { cmd = .SetDarkTheme; } - if (oc.uiMenuButton("Light theme").pressed) { + if (ui.menuButton("Light theme").pressed) { cmd = .SetLightTheme; } } } { - oc.uiPanelBegin("main panel", .{}); - defer oc.uiPanelEnd(); + ui.panelBegin("main panel", .{}); + defer ui.panelEnd(); { - oc.uiStyleNext(.{ + ui.styleNext(.{ .size = .{ .width = .fill_parent, .height = .{ .custom = .{ .kind = .Parent, .value = 1, .relax = 1 } }, @@ -132,8 +133,8 @@ export fn oc_on_frame_refresh() void { .spacing = 16, }, }); - _ = oc.uiBoxBegin("Background", .{ .draw_background = true }); - defer _ = oc.uiBoxEnd(); + _ = ui.boxBegin("Background", .{ .draw_background = true }); + defer _ = ui.boxEnd(); widgets(scratch.arena); @@ -145,10 +146,10 @@ export fn oc_on_frame_refresh() void { _ = canvas.select(); surface.select(); - oc.Canvas.setColor(ui.theme.bg0); + oc.Canvas.setColor(ui_ctx.theme.bg0); oc.Canvas.clear(); - oc.uiDraw(); + ui.draw(); canvas.render(); surface.present(); } @@ -169,7 +170,7 @@ fn widgets(arena: *oc.Arena) void { defer columnEnd(); { - oc.uiStyleNext(.{ + ui.styleNext(.{ .size = .{ .width = .fill_parent, }, @@ -178,46 +179,46 @@ fn widgets(arena: *oc.Arena) void { .spacing = 32, }, }); - _ = oc.uiBoxBegin("top", .{}); - defer _ = oc.uiBoxEnd(); + _ = ui.boxBegin("top", .{}); + defer _ = ui.boxEnd(); { - oc.uiStyleNext(.{ + ui.styleNext(.{ .layout = .{ .axis = .Y, .spacing = 24, }, }); - _ = oc.uiBoxBegin("top_left", .{}); - defer _ = oc.uiBoxEnd(); + _ = ui.boxBegin("top_left", .{}); + defer _ = ui.boxEnd(); //----------------------------------------------------------------------------- // Label //----------------------------------------------------------------------------- - _ = oc.uiLabel("Label"); + _ = ui.makeLabel("Label"); //----------------------------------------------------------------------------- // Button //----------------------------------------------------------------------------- - if (oc.uiButton("Button").clicked) { + if (ui.button("Button").clicked) { logPush("Button clicked"); } { - oc.uiStyleNext(.{ + ui.styleNext(.{ .layout = .{ .axis = .X, .alignment = .{ .y = .Center }, .spacing = 8, }, }); - _ = oc.uiBoxBegin("checkbox", .{}); - defer _ = oc.uiBoxEnd(); + _ = ui.boxBegin("checkbox", .{}); + defer _ = ui.boxEnd(); //------------------------------------------------------------------------- // Checkbox //------------------------------------------------------------------------- - if (oc.uiCheckbox("checkbox", &checkbox_checked).clicked) { + if (ui.checkbox("checkbox", &checkbox_checked).clicked) { if (checkbox_checked) { logPush("Checkbox checked"); } else { @@ -225,15 +226,15 @@ fn widgets(arena: *oc.Arena) void { } } - _ = oc.uiLabel("Checkbox"); + _ = ui.makeLabel("Checkbox"); } } //--------------------------------------------------------------------------------- // Vertical slider //--------------------------------------------------------------------------------- - oc.uiStyleNext(.{ .size = .{ .height = .{ .pixels = 130 } } }); - _ = oc.uiSlider("v_slider", &v_slider_value); + ui.styleNext(.{ .size = .{ .height = .{ .pixels = 130 } } }); + _ = ui.slider("v_slider", &v_slider_value); var now = oc.clock.time(.Monotonic); if ((now - v_slider_log_time) >= 0.2 and v_slider_value != v_slider_logged_value) { @@ -243,20 +244,20 @@ fn widgets(arena: *oc.Arena) void { } { - oc.uiStyleNext(.{ + ui.styleNext(.{ .layout = .{ .axis = .Y, .spacing = 24, }, }); - _ = oc.uiBoxBegin("top right", .{}); - defer _ = oc.uiBoxEnd(); + _ = ui.boxBegin("top right", .{}); + defer _ = ui.boxEnd(); //----------------------------------------------------------------------------- // Tooltip //----------------------------------------------------------------------------- - if (oc.uiLabel("Tooltip").hovering) { - oc.uiTooltip("Hi"); + if (ui.makeLabel("Tooltip").hovering) { + ui.tooltip("Hi"); } //----------------------------------------------------------------------------- @@ -266,11 +267,11 @@ fn widgets(arena: *oc.Arena) void { "Radio 1", "Radio 2", }; - var radio_group_info = oc.UiRadioGroupInfo{ + var radio_group_info = ui.RadioGroupInfo{ .selected_index = radio_selected, .options = &options, }; - var result = oc.uiRadioGroup("radio_group", &radio_group_info); + var result = ui.radioGroup("radio_group", &radio_group_info); radio_selected = result.selected_index.?; if (result.changed) { logPushf("Selected {s}", .{options[radio_selected]}); @@ -279,8 +280,8 @@ fn widgets(arena: *oc.Arena) void { //----------------------------------------------------------------------------- // Horizontal slider //----------------------------------------------------------------------------- - oc.uiStyleNext(.{ .size = .{ .width = .{ .pixels = 130 } } }); - _ = oc.uiSlider("h_slider", &h_slider_value); + ui.styleNext(.{ .size = .{ .width = .{ .pixels = 130 } } }); + _ = ui.slider("h_slider", &h_slider_value); if ((now - h_slider_log_time) >= 0.2 and h_slider_value != h_slider_logged_value) { logPushf("Slider moved to {d:.3}", .{h_slider_value}); @@ -293,13 +294,13 @@ fn widgets(arena: *oc.Arena) void { //------------------------------------------------------------------------------------- // Text box //------------------------------------------------------------------------------------- - oc.uiStyleNext(.{ + ui.styleNext(.{ .size = .{ .width = .{ .pixels = 305 }, .height = .text, }, }); - var textResult = oc.uiTextBox("text", arena.*, text); + var textResult = ui.textBox("text", arena.*, text); if (textResult.changed) { text_arena.clear(); text = text_arena.pushStr(textResult.text) catch { @@ -319,12 +320,12 @@ fn widgets(arena: *oc.Arena) void { "Option 1", "Option 2", }; - var select_popup_info = oc.UiSelectPopupInfo{ + var select_popup_info = ui.SelectPopupInfo{ .selected_index = selected, .options = &options, .placeholder = "Select", }; - var selectResult = oc.uiSelectPopup("select", &select_popup_info); + var selectResult = ui.selectPopup("select", &select_popup_info); if (selectResult.selected_index != selected) { logPushf("Selected {s}", .{options[selectResult.selected_index.?]}); } @@ -334,33 +335,33 @@ fn widgets(arena: *oc.Arena) void { // Scrollable panel //------------------------------------------------------------------------------------- { - oc.uiStyleNext(.{ + ui.styleNext(.{ .size = .{ .width = .fill_parent, .height = .{ .custom = .{ .kind = .Parent, .value = 1, .relax = 1, .min_size = 200 }, }, }, - .bg_color = ui.theme.bg2, - .border_color = ui.theme.border, + .bg_color = ui_ctx.theme.bg2, + .border_color = ui_ctx.theme.border, .border_size = 1, - .roundness = ui.theme.roundness_small, + .roundness = ui_ctx.theme.roundness_small, }); - _ = oc.uiPanelBegin("log", .{ .draw_background = true, .draw_border = true }); - defer oc.uiPanelEnd(); + _ = ui.panelBegin("log", .{ .draw_background = true, .draw_border = true }); + defer ui.panelEnd(); { - oc.uiStyleNext(.{ + ui.styleNext(.{ .layout = .{ .margin = .{ .x = 16, .y = 16 }, }, }); - _ = oc.uiBoxBegin("contents", .{}); - defer _ = oc.uiBoxEnd(); + _ = ui.boxBegin("contents", .{}); + defer _ = ui.boxEnd(); if (log_lines.list.empty()) { - oc.uiStyleNext(.{ .color = ui.theme.text2 }); - _ = oc.uiLabel("Log"); + ui.styleNext(.{ .color = ui_ctx.theme.text2 }); + _ = ui.makeLabel("Log"); } var i: i32 = 0; @@ -368,10 +369,10 @@ fn widgets(arena: *oc.Arena) void { while (log_lines_iter.next()) |log_line| { var buf: [15]u8 = undefined; var id = std.fmt.bufPrint(&buf, "{d}", .{i}) catch unreachable; - _ = oc.uiBoxBegin(id, .{}); - defer _ = oc.uiBoxEnd(); + _ = ui.boxBegin(id, .{}); + defer _ = ui.boxEnd(); - _ = oc.uiLabel(log_line.string.slice()); + _ = ui.makeLabel(log_line.string.slice()); i += 1; } @@ -386,14 +387,14 @@ var unselected_roundness: f32 = 8; var unselected_bg_color: oc.Color = oc.Color.rgba(0.086, 0.086, 0.102, 1); var unselected_border_color: oc.Color = oc.Color.rgba(0.976, 0.976, 0.976, 0.35); var unselected_border_size: f32 = 1; -var unselected_when_status: oc.UiStatus = .{}; +var unselected_when_status: ui.Status = .{}; var unselected_status_index: ?usize = 0; var selected_width: f32 = 16; var selected_height: f32 = 16; var selected_roundness: f32 = 8; var selected_center_color: oc.Color = oc.Color.rgba(1, 1, 1, 1); var selected_bg_color: oc.Color = oc.Color.rgba(0.33, 0.66, 1, 1); -var selected_when_status: oc.UiStatus = .{}; +var selected_when_status: ui.Status = .{}; var selected_status_index: ?usize = 0; var label_font_color: oc.Color = oc.Color.rgba(0.976, 0.976, 0.976, 1); var label_font_color_selected: ?usize = 0; @@ -407,15 +408,15 @@ fn styling(arena: *oc.Arena) void { //----------------------------------------------------------------------------------------- // Initial values here are hardcoded from the dark theme and everything is overridden all // the time. In a real program you'd only override what you need and supply the values from - // ui.theme or ui.theme.palette. + // ui_ctx.theme or ui_ctx.theme.palette. // // Rule-based styling is described at - // https://www.forkingpaths.dev/posts/23-03-10/rule_based_styling_imgui.html + // https://www.forkingpaths.dev/posts/23-03-10/rule_based_styling_imgui_ctx.html columnBegin("Styling", 2.0 / 3.0); defer columnEnd(); { - oc.uiStyleNext(.{ + ui.styleNext(.{ .size = .{ .width = .fill_parent, .height = .{ .pixels = 152 }, @@ -423,21 +424,21 @@ fn styling(arena: *oc.Arena) void { .layout = .{ .margin = .{ .x = 310, .y = 16 }, }, - .bg_color = oc.ui_dark_theme.bg0, - .roundness = oc.ui_dark_theme.roundness_small, + .bg_color = ui.dark_theme.bg0, + .roundness = ui.dark_theme.roundness_small, }); - _ = oc.uiBoxBegin("styled_radios", .{ .draw_background = true, .draw_border = true }); - defer _ = oc.uiBoxEnd(); + _ = ui.boxBegin("styled_radios", .{ .draw_background = true, .draw_border = true }); + defer _ = ui.boxEnd(); resetNextRadioGroupToDarkTheme(arena); - var unselected_tag = oc.uiTagMake("radio"); - var unselected_pattern = oc.UiPattern.init(); + var unselected_tag = ui.Tag.make("radio"); + var unselected_pattern = ui.Pattern.init(); unselected_pattern.push(arena, .{ .sel = .{ .tag = unselected_tag } }); if (!unselected_when_status.empty()) { unselected_pattern.push(arena, .{ .op = .And, .sel = .{ .status = unselected_when_status } }); } - oc.uiStyleMatchAfter(unselected_pattern, .{ + ui.styleMatchAfter(unselected_pattern, .{ .size = .{ .width = .{ .pixels = unselected_width }, .height = .{ .pixels = unselected_height }, @@ -448,13 +449,13 @@ fn styling(arena: *oc.Arena) void { .roundness = unselected_roundness, }); - var selected_tag = oc.uiTagMake("radio_selected"); - var selected_pattern = oc.UiPattern.init(); + var selected_tag = ui.Tag.make("radio_selected"); + var selected_pattern = ui.Pattern.init(); selected_pattern.push(arena, .{ .sel = .{ .tag = selected_tag } }); if (!selected_when_status.empty()) { selected_pattern.push(arena, .{ .op = .And, .sel = .{ .status = selected_when_status } }); } - oc.uiStyleMatchAfter(selected_pattern, .{ + ui.styleMatchAfter(selected_pattern, .{ .size = .{ .width = .{ .pixels = selected_width }, .height = .{ .pixels = selected_height }, @@ -464,10 +465,10 @@ fn styling(arena: *oc.Arena) void { .roundness = selected_roundness, }); - var label_tag = oc.uiTagMake("label"); - var label_pattern = oc.UiPattern.init(); + var label_tag = ui.Tag.make("label"); + var label_pattern = ui.Pattern.init(); label_pattern.push(arena, .{ .sel = .{ .tag = label_tag } }); - oc.uiStyleMatchAfter(label_pattern, .{ + ui.styleMatchAfter(label_pattern, .{ .color = label_font_color, .font = label_font.*, .font_size = label_font_size, @@ -478,31 +479,31 @@ fn styling(arena: *oc.Arena) void { "Am", "Stylish", }; - var radio_group_info = oc.UiRadioGroupInfo{ + var radio_group_info = ui.RadioGroupInfo{ .selected_index = styling_selected_radio, .options = &options, }; - var result = oc.uiRadioGroup("radio_group", &radio_group_info); + var result = ui.radioGroup("radio_group", &radio_group_info); styling_selected_radio = result.selected_index; } { - oc.uiStyleNext(.{ .layout = .{ .axis = .X, .spacing = 32 } }); - _ = oc.uiBoxBegin("controls", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .axis = .X, .spacing = 32 } }); + _ = ui.boxBegin("controls", .{}); + defer _ = ui.boxEnd(); { - oc.uiStyleNext(.{ .layout = .{ .axis = .Y, .spacing = 16 } }); - _ = oc.uiBoxBegin("unselected", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .axis = .Y, .spacing = 16 } }); + _ = ui.boxBegin("unselected", .{}); + defer _ = ui.boxEnd(); - oc.uiStyleNext(.{ .font_size = 16 }); - _ = oc.uiLabel("Radio style"); + ui.styleNext(.{ .font_size = 16 }); + _ = ui.makeLabel("Radio style"); { - oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); - _ = oc.uiBoxBegin("size", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .spacing = 4 } }); + _ = ui.boxBegin("size", .{}); + defer _ = ui.boxEnd(); var width_slider = (unselected_width - 8) / 16; labeledSlider("Width", &width_slider); @@ -518,9 +519,9 @@ fn styling(arena: *oc.Arena) void { } { - oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); - _ = oc.uiBoxBegin("background", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .spacing = 4 } }); + _ = ui.boxBegin("background", .{}); + defer _ = ui.boxEnd(); labeledSlider("Background R", &unselected_bg_color.r); labeledSlider("Background G", &unselected_bg_color.g); @@ -529,9 +530,9 @@ fn styling(arena: *oc.Arena) void { } { - oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); - _ = oc.uiBoxBegin("border", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .spacing = 4 } }); + _ = ui.boxBegin("border", .{}); + defer _ = ui.boxEnd(); labeledSlider("Border R", &unselected_border_color.r); labeledSlider("Border G", &unselected_border_color.g); @@ -544,22 +545,22 @@ fn styling(arena: *oc.Arena) void { unselected_border_size = border_size_slider * 5; { - oc.uiStyleNext(.{ .layout = .{ .spacing = 10 } }); - _ = oc.uiBoxBegin("status_override", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .spacing = 10 } }); + _ = ui.boxBegin("status_override", .{}); + defer _ = ui.boxEnd(); - _ = oc.uiLabel("Override"); + _ = ui.makeLabel("Override"); var status_options = [_][]const u8{ "Always", "When hovering", "When active", }; - var status_info = oc.UiRadioGroupInfo{ + var status_info = ui.RadioGroupInfo{ .selected_index = unselected_status_index, .options = &status_options, }; - var status_result = oc.uiRadioGroup("status", &status_info); + var status_result = ui.radioGroup("status", &status_info); unselected_status_index = status_result.selected_index; unselected_when_status = switch (unselected_status_index.?) { 0 => .{}, @@ -571,17 +572,17 @@ fn styling(arena: *oc.Arena) void { } { - oc.uiStyleNext(.{ .layout = .{ .axis = .Y, .spacing = 16 } }); - _ = oc.uiBoxBegin("selected", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .axis = .Y, .spacing = 16 } }); + _ = ui.boxBegin("selected", .{}); + defer _ = ui.boxEnd(); - oc.uiStyleNext(.{ .font_size = 16 }); - _ = oc.uiLabel("Radio selected style"); + ui.styleNext(.{ .font_size = 16 }); + _ = ui.makeLabel("Radio selected style"); { - oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); - _ = oc.uiBoxBegin("size", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .spacing = 4 } }); + _ = ui.boxBegin("size", .{}); + defer _ = ui.boxEnd(); var width_slider = (selected_width - 8) / 16; labeledSlider("Width", &width_slider); @@ -597,9 +598,9 @@ fn styling(arena: *oc.Arena) void { } { - oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); - _ = oc.uiBoxBegin("color", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .spacing = 4 } }); + _ = ui.boxBegin("color", .{}); + defer _ = ui.boxEnd(); labeledSlider("Center R", &selected_center_color.r); labeledSlider("Center G", &selected_center_color.g); @@ -608,9 +609,9 @@ fn styling(arena: *oc.Arena) void { } { - oc.uiStyleNext(.{ .layout = .{ .spacing = 4 } }); - _ = oc.uiBoxBegin("background", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .spacing = 4 } }); + _ = ui.boxBegin("background", .{}); + defer _ = ui.boxEnd(); labeledSlider("Background R", &selected_bg_color.r); labeledSlider("Background G", &selected_bg_color.g); @@ -619,25 +620,25 @@ fn styling(arena: *oc.Arena) void { } { - oc.uiStyleNext(.{ .layout = .{ .spacing = 10 } }); - _ = oc.uiBoxBegin("status_override", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .spacing = 10 } }); + _ = ui.boxBegin("status_override", .{}); + defer _ = ui.boxEnd(); - oc.uiStyleNext(.{ .size = .{ .height = .{ .pixels = 30 } } }); - _ = oc.uiBoxMake("spacer", .{}); + ui.styleNext(.{ .size = .{ .height = .{ .pixels = 30 } } }); + _ = ui.boxMake("spacer", .{}); - _ = oc.uiLabel("Override"); + _ = ui.makeLabel("Override"); var status_options = [_][]const u8{ "Always", "When hovering", "When active", }; - var status_info = oc.UiRadioGroupInfo{ + var status_info = ui.RadioGroupInfo{ .selected_index = selected_status_index, .options = &status_options, }; - var status_result = oc.uiRadioGroup("status", &status_info); + var status_result = ui.radioGroup("status", &status_info); selected_status_index = status_result.selected_index; selected_when_status = switch (selected_status_index.?) { 0 => .{}, @@ -649,22 +650,22 @@ fn styling(arena: *oc.Arena) void { } { - oc.uiStyleNext(.{ .layout = .{ .axis = .Y, .spacing = 10 } }); - _ = oc.uiBoxBegin("label", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .axis = .Y, .spacing = 10 } }); + _ = ui.boxBegin("label", .{}); + defer _ = ui.boxEnd(); - oc.uiStyleNext(.{ .font_size = 16 }); - _ = oc.uiLabel("Label style"); + ui.styleNext(.{ .font_size = 16 }); + _ = ui.makeLabel("Label style"); { - oc.uiStyleNext(.{ .layout = .{ .axis = .X, .spacing = 8 } }); - _ = oc.uiBoxBegin("font_color", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .axis = .X, .spacing = 8 } }); + _ = ui.boxBegin("font_color", .{}); + defer _ = ui.boxEnd(); - oc.uiStyleMatchAfter(oc.UiPattern.owner(), .{ + ui.styleMatchAfter(ui.Pattern.owner(), .{ .size = .{ .width = .{ .pixels = 100 } }, }); - _ = oc.uiLabel("Font color"); + _ = ui.makeLabel("Font color"); var color_names = [_][]const u8{ "Default", @@ -677,33 +678,33 @@ fn styling(arena: *oc.Arena) void { "Green", }; var colors = [_]oc.Color{ - oc.ui_dark_theme.text0, - oc.ui_dark_theme.palette.red5, - oc.ui_dark_theme.palette.orange5, - oc.ui_dark_theme.palette.amber5, - oc.ui_dark_theme.palette.yellow5, - oc.ui_dark_theme.palette.lime5, - oc.ui_dark_theme.palette.light_green5, - oc.ui_dark_theme.palette.green5, + ui.dark_theme.text0, + ui.dark_theme.palette.red5, + ui.dark_theme.palette.orange5, + ui.dark_theme.palette.amber5, + ui.dark_theme.palette.yellow5, + ui.dark_theme.palette.lime5, + ui.dark_theme.palette.light_green5, + ui.dark_theme.palette.green5, }; - var color_info = oc.UiSelectPopupInfo{ + var color_info = ui.SelectPopupInfo{ .selected_index = label_font_color_selected, .options = &color_names, }; - var color_result = oc.uiSelectPopup("color", &color_info); + var color_result = ui.selectPopup("color", &color_info); label_font_color_selected = color_result.selected_index; label_font_color = colors[label_font_color_selected.?]; } { - oc.uiStyleNext(.{ .layout = .{ .axis = .X, .spacing = 8 } }); - _ = oc.uiBoxBegin("font", .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .axis = .X, .spacing = 8 } }); + _ = ui.boxBegin("font", .{}); + defer _ = ui.boxEnd(); - oc.uiStyleMatchAfter(oc.UiPattern.owner(), .{ + ui.styleMatchAfter(ui.Pattern.owner(), .{ .size = .{ .width = .{ .pixels = 100 } }, }); - _ = oc.uiLabel("Font"); + _ = ui.makeLabel("Font"); var font_names = [_][]const u8{ "Regular", @@ -713,11 +714,11 @@ fn styling(arena: *oc.Arena) void { &font_regular, &font_bold, }; - var font_info = oc.UiSelectPopupInfo{ + var font_info = ui.SelectPopupInfo{ .selected_index = label_font_selected, .options = &font_names, }; - var font_result = oc.uiSelectPopup("font_style", &font_info); + var font_result = ui.selectPopup("font_style", &font_info); label_font_selected = font_result.selected_index; label_font = fonts[label_font_selected.?]; } @@ -730,7 +731,7 @@ fn styling(arena: *oc.Arena) void { } fn columnBegin(header: []const u8, widthFraction: f32) void { - oc.uiStyleNext(.{ + ui.styleNext(.{ .size = .{ .width = .{ .custom = .{ .kind = .Parent, .value = widthFraction, .relax = 1 }, @@ -742,26 +743,26 @@ fn columnBegin(header: []const u8, widthFraction: f32) void { .margin = .{ .y = 8 }, .spacing = 24, }, - .bg_color = ui.theme.bg1, - .border_color = ui.theme.border, + .bg_color = ui_ctx.theme.bg1, + .border_color = ui_ctx.theme.border, .border_size = 1, - .roundness = ui.theme.roundness_small, + .roundness = ui_ctx.theme.roundness_small, }); - _ = oc.uiBoxBegin(header, .{ .draw_background = true, .draw_border = true }); + _ = ui.boxBegin(header, .{ .draw_background = true, .draw_border = true }); { - oc.uiStyleNext(.{ + ui.styleNext(.{ .size = .{ .width = .fill_parent }, .layout = .{ .alignment = .{ .x = .Center } }, }); - _ = oc.uiBoxBegin("header", .{}); - defer _ = oc.uiBoxEnd(); + _ = ui.boxBegin("header", .{}); + defer _ = ui.boxEnd(); - oc.uiStyleNext(.{ .font_size = 18 }); - _ = oc.uiLabel(header); + ui.styleNext(.{ .font_size = 18 }); + _ = ui.makeLabel(header); } - oc.uiStyleNext(.{ + ui.styleNext(.{ .size = .{ .width = .fill_parent, .height = .{ @@ -774,28 +775,28 @@ fn columnBegin(header: []const u8, widthFraction: f32) void { .spacing = 24, }, }); - _ = oc.uiBoxBegin("contents", .{}); + _ = ui.boxBegin("contents", .{}); } fn columnEnd() void { - _ = oc.uiBoxEnd(); // contents - _ = oc.uiBoxEnd(); // column + _ = ui.boxEnd(); // contents + _ = ui.boxEnd(); // column } fn labeledSlider(label: []const u8, value: *f32) void { - oc.uiStyleNext(.{ .layout = .{ .axis = .X, .spacing = 8 } }); - _ = oc.uiBoxBegin(label, .{}); - defer _ = oc.uiBoxEnd(); + ui.styleNext(.{ .layout = .{ .axis = .X, .spacing = 8 } }); + _ = ui.boxBegin(label, .{}); + defer _ = ui.boxEnd(); - oc.uiStyleMatchAfter(oc.UiPattern.owner(), .{ + ui.styleMatchAfter(ui.Pattern.owner(), .{ .size = .{ .width = .{ .pixels = 100 } }, }); - _ = oc.uiLabel(label); + _ = ui.makeLabel(label); - oc.uiStyleNext(.{ + ui.styleNext(.{ .size = .{ .width = .{ .pixels = 100 } }, }); - _ = oc.uiSlider("slider", value); + _ = ui.slider("slider", value); } fn logPush(line: []const u8) void { @@ -820,51 +821,51 @@ fn logPushf(comptime fmt: []const u8, args: anytype) void { } /// This makes sure the light theme doesn't break the styling overrides -/// You won't need it in a real program as long as your colors come from ui.theme or ui.theme.palette +/// You won't need it in a real program as long as your colors come from ui_ctx.theme or ui_ctx.theme.palette fn resetNextRadioGroupToDarkTheme(arena: *oc.Arena) void { - var unselected_tag = oc.uiTagMake("radio"); - var unselected_pattern = oc.UiPattern.init(); + var unselected_tag = ui.Tag.make("radio"); + var unselected_pattern = ui.Pattern.init(); unselected_pattern.push(arena, .{ .sel = .{ .tag = unselected_tag } }); - oc.uiStyleMatchAfter(unselected_pattern, .{ - .border_color = oc.ui_dark_theme.text3, + ui.styleMatchAfter(unselected_pattern, .{ + .border_color = ui.dark_theme.text3, .border_size = 1, }); - var unselected_hover_pattern = oc.UiPattern.init(); + var unselected_hover_pattern = ui.Pattern.init(); unselected_hover_pattern.push(arena, .{ .sel = .{ .tag = unselected_tag } }); unselected_hover_pattern.push(arena, .{ .op = .And, .sel = .{ .status = .{ .hover = true } } }); - oc.uiStyleMatchAfter(unselected_hover_pattern, .{ - .bg_color = oc.ui_dark_theme.fill0, - .border_color = oc.ui_dark_theme.primary, + ui.styleMatchAfter(unselected_hover_pattern, .{ + .bg_color = ui.dark_theme.fill0, + .border_color = ui.dark_theme.primary, }); - var unselected_active_pattern = oc.UiPattern.init(); + var unselected_active_pattern = ui.Pattern.init(); unselected_active_pattern.push(arena, .{ .sel = .{ .tag = unselected_tag } }); unselected_active_pattern.push(arena, .{ .op = .And, .sel = .{ .status = .{ .active = true } } }); - oc.uiStyleMatchAfter(unselected_active_pattern, .{ - .bg_color = oc.ui_dark_theme.fill1, - .border_color = oc.ui_dark_theme.primary, + ui.styleMatchAfter(unselected_active_pattern, .{ + .bg_color = ui.dark_theme.fill1, + .border_color = ui.dark_theme.primary, }); - var selected_tag = oc.uiTagMake("radio_selected"); - var selected_pattern = oc.UiPattern.init(); + var selected_tag = ui.Tag.make("radio_selected"); + var selected_pattern = ui.Pattern.init(); selected_pattern.push(arena, .{ .sel = .{ .tag = selected_tag } }); - oc.uiStyleMatchAfter(selected_pattern, .{ - .color = oc.ui_dark_theme.palette.white, - .bg_color = oc.ui_dark_theme.primary, + ui.styleMatchAfter(selected_pattern, .{ + .color = ui.dark_theme.palette.white, + .bg_color = ui.dark_theme.primary, }); - var selected_hover_pattern = oc.UiPattern.init(); + var selected_hover_pattern = ui.Pattern.init(); selected_hover_pattern.push(arena, .{ .sel = .{ .tag = selected_tag } }); selected_hover_pattern.push(arena, .{ .op = .And, .sel = .{ .status = .{ .hover = true } } }); - oc.uiStyleMatchAfter(selected_hover_pattern, .{ - .bg_color = oc.ui_dark_theme.primary_hover, + ui.styleMatchAfter(selected_hover_pattern, .{ + .bg_color = ui.dark_theme.primary_hover, }); - var selected_active_pattern = oc.UiPattern.init(); + var selected_active_pattern = ui.Pattern.init(); selected_active_pattern.push(arena, .{ .sel = .{ .tag = selected_tag } }); selected_active_pattern.push(arena, .{ .op = .And, .sel = .{ .status = .{ .active = true } } }); - oc.uiStyleMatchAfter(selected_active_pattern, .{ - .bg_color = oc.ui_dark_theme.primary_active, + ui.styleMatchAfter(selected_active_pattern, .{ + .bg_color = ui.dark_theme.primary_active, }); } diff --git a/src/orca.zig b/src/orca.zig index 5c1263f..7c66406 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -1485,7 +1485,10 @@ pub const KeyCode = enum(c_uint) { Menu = 348, }; -pub const key_code_count: usize = 349; +pub const key_code_count: usize = blk: { + const enum_fields = @typeInfo(KeyCode).Enum.fields; + break :blk enum_fields[enum_fields.len - 1].value + 1; +}; pub const KeymodFlags = packed struct(c_uint) { none: bool, @@ -1505,7 +1508,10 @@ pub const MouseButton = enum(c_uint) { Ext2 = 0x04, }; -pub const mouse_button_count: usize = 5; +pub const mouse_button_count: usize = blk: { + const enum_fields = @typeInfo(MouseButton).Enum.fields; + break :blk enum_fields[enum_fields.len - 1].value + 1; +}; /// Keyboard and mouse buttons input pub const KeyEvent = extern struct { @@ -2143,1192 +2149,1187 @@ pub const InputState = extern struct { //------------------------------------------------------------------------------------------ // [UI]: structs //------------------------------------------------------------------------------------------ +pub const ui = struct { + pub const Key = extern struct { + hash: u64, -pub const UiKey = extern struct { - hash: u64, -}; + extern fn oc_ui_key_make_str8(string: Str8) Key; + extern fn oc_ui_key_make_path(path: Str8List) Key; -pub const UiAxis = enum(c_uint) { X, Y }; + pub fn make(string: []const u8) Key { + return oc_ui_key_make_str8(Str8.fromSlice(string)); + } -pub const UiLayoutMargin = struct { - x: ?f32 = null, - y: ?f32 = null, + pub const makePath = oc_ui_key_make_path; + }; - pub fn array(self: *UiLayoutMargin) *[2]?f32 { - return @ptrCast(self); - } -}; + pub const Axis = enum(c_uint) { + X, + Y, + }; -pub const UiAlignment = enum(c_uint) { Start, End, Center }; + pub const LayoutMargin = struct { + x: ?f32 = null, + y: ?f32 = null, -pub const UiLayoutAlignment = struct { - x: ?UiAlignment = null, - y: ?UiAlignment = null, + pub fn array(self: *LayoutMargin) *[2]?f32 { + return @ptrCast(self); + } + }; - pub fn array(self: *UiLayoutAlignment) *[2]?UiAlignment { - return @ptrCast(self); - } -}; + pub const Alignment = enum(c_uint) { + Start, + End, + Center, + }; -pub const UiLayout = struct { - axis: ?UiAxis = null, - spacing: ?f32 = null, - margin: UiLayoutMargin = .{}, - alignment: UiLayoutAlignment = .{}, -}; + pub const LayoutAlignment = struct { + x: ?Alignment = null, + y: ?Alignment = null, -pub const UiSizeKind = enum(c_uint) { - Text, - Pixels, - Children, - Parent, - ParentMinusPixels, -}; + pub fn array(self: *LayoutAlignment) *[2]?Alignment { + return @ptrCast(self); + } + }; -pub const UiSizeCustom = struct { - kind: UiSizeKind = .Text, - value: f32 = 0, - relax: f32 = 0, - min_size: f32 = 0, -}; + pub const Layout = struct { + axis: ?Axis = null, + spacing: ?f32 = null, + margin: LayoutMargin = .{}, + alignment: LayoutAlignment = .{}, + }; -pub const UiSize = union(enum) { - text, - pixels: f32, - children, - fill_parent, - parent: f32, - parent_minus_pixels: f32, - custom: UiSizeCustom, -}; + pub const SizeKind = enum(c_uint) { + Text, + Pixels, + Children, + Parent, + ParentMinusPixels, + }; -pub const UiBoxSize = struct { - width: ?UiSize = null, - height: ?UiSize = null, + pub const SizeCustom = struct { + kind: SizeKind = .Text, + value: f32 = 0, + relax: f32 = 0, + min_size: f32 = 0, + }; - pub fn array(self: *UiBoxSize) *[2]?UiSize { - return @ptrCast(self); - } -}; + pub const Size = union(enum) { + text, + pixels: f32, + children, + fill_parent, + parent: f32, + parent_minus_pixels: f32, + custom: SizeCustom, + }; -pub const UiBoxFloating = struct { - x: ?bool = null, - y: ?bool = null, + pub const BoxSize = struct { + width: ?Size = null, + height: ?Size = null, - pub fn array(self: *UiBoxFloating) *[2]?bool { - return @ptrCast(self); - } -}; + pub fn array(self: *BoxSize) *[2]?Size { + return @ptrCast(self); + } + }; -pub const FloatTarget = struct { - x: ?f32 = null, - y: ?f32 = null, + pub const BoxFloating = struct { + x: ?bool = null, + y: ?bool = null, - pub fn array(self: *FloatTarget) *[2]f32 { - return @ptrCast(self); - } -}; + pub fn array(self: *BoxFloating) *[2]?bool { + return @ptrCast(self); + } + }; -//NOTE: flags for axis-dependent properties (e.g. FloatX/Y) need to be consecutive bits -// in order to play well with axis agnostic functions. Using explicit bit shifts here -// so that arithmetic on flags is possible -pub const UiAnimationMask = enum(c_uint) { - None = 0, - SizeWidth = 1 << 1, - SizeHeight = 1 << 2, - LayoutAxis = 1 << 3, - LayoutAlignX = 1 << 4, - LayoutAlignY = 1 << 5, - LayoutSpacing = 1 << 6, - LayoutMarginX = 1 << 7, - LayoutMarginY = 1 << 8, - FloatX = 1 << 9, - FloatY = 1 << 10, - Color = 1 << 11, - BgColor = 1 << 12, - BorderColor = 1 << 13, - BorderSize = 1 << 14, - Roundness = 1 << 15, + pub const FloatTarget = struct { + x: ?f32 = null, + y: ?f32 = null, - FontSize = 1 << 17, -}; + pub fn array(self: *FloatTarget) *[2]f32 { + return @ptrCast(self); + } + }; -pub const UiStyle = struct { - size: UiBoxSize = .{}, - layout: UiLayout = .{}, - floating: UiBoxFloating = .{}, - float_target: FloatTarget = .{}, - color: ?Color = null, - bg_color: ?Color = null, - border_color: ?Color = null, - font: ?Font = null, - font_size: ?f32 = null, - border_size: ?f32 = null, - roundness: ?f32 = null, - animation_time: ?f32 = null, - animation_mask: UiAnimationMask = .None, -}; + //NOTE: flags for axis-dependent properties (e.g. FloatX/Y) need to be consecutive bits + // in order to play well with axis agnostic functions. Using explicit bit shifts here + // so that arithmetic on flags is possible + pub const AnimationMask = enum(c_uint) { + None = 0, + SizeWidth = 1 << 1, + SizeHeight = 1 << 2, + LayoutAxis = 1 << 3, + LayoutAlignX = 1 << 4, + LayoutAlignY = 1 << 5, + LayoutSpacing = 1 << 6, + LayoutMarginX = 1 << 7, + LayoutMarginY = 1 << 8, + FloatX = 1 << 9, + FloatY = 1 << 10, + Color = 1 << 11, + BgColor = 1 << 12, + BorderColor = 1 << 13, + BorderSize = 1 << 14, + Roundness = 1 << 15, -pub const UiPalette = extern struct { - red0: Color, - red1: Color, - red2: Color, - red3: Color, - red4: Color, - red5: Color, - red6: Color, - red7: Color, - red8: Color, - red9: Color, - orange0: Color, - orange1: Color, - orange2: Color, - orange3: Color, - orange4: Color, - orange5: Color, - orange6: Color, - orange7: Color, - orange8: Color, - orange9: Color, - amber0: Color, - amber1: Color, - amber2: Color, - amber3: Color, - amber4: Color, - amber5: Color, - amber6: Color, - amber7: Color, - amber8: Color, - amber9: Color, - yellow0: Color, - yellow1: Color, - yellow2: Color, - yellow3: Color, - yellow4: Color, - yellow5: Color, - yellow6: Color, - yellow7: Color, - yellow8: Color, - yellow9: Color, - lime0: Color, - lime1: Color, - lime2: Color, - lime3: Color, - lime4: Color, - lime5: Color, - lime6: Color, - lime7: Color, - lime8: Color, - lime9: Color, - light_green0: Color, - light_green1: Color, - light_green2: Color, - light_green3: Color, - light_green4: Color, - light_green5: Color, - light_green6: Color, - light_green7: Color, - light_green8: Color, - light_green9: Color, - green0: Color, - green1: Color, - green2: Color, - green3: Color, - green4: Color, - green5: Color, - green6: Color, - green7: Color, - green8: Color, - green9: Color, - teal0: Color, - teal1: Color, - teal2: Color, - teal3: Color, - teal4: Color, - teal5: Color, - teal6: Color, - teal7: Color, - teal8: Color, - teal9: Color, - cyan0: Color, - cyan1: Color, - cyan2: Color, - cyan3: Color, - cyan4: Color, - cyan5: Color, - cyan6: Color, - cyan7: Color, - cyan8: Color, - cyan9: Color, - light_blue0: Color, - light_blue1: Color, - light_blue2: Color, - light_blue3: Color, - light_blue4: Color, - light_blue5: Color, - light_blue6: Color, - light_blue7: Color, - light_blue8: Color, - light_blue9: Color, - blue0: Color, - blue1: Color, - blue2: Color, - blue3: Color, - blue4: Color, - blue5: Color, - blue6: Color, - blue7: Color, - blue8: Color, - blue9: Color, - indigo0: Color, - indigo1: Color, - indigo2: Color, - indigo3: Color, - indigo4: Color, - indigo5: Color, - indigo6: Color, - indigo7: Color, - indigo8: Color, - indigo9: Color, - violet0: Color, - violet1: Color, - violet2: Color, - violet3: Color, - violet4: Color, - violet5: Color, - violet6: Color, - violet7: Color, - violet8: Color, - violet9: Color, - purple0: Color, - purple1: Color, - purple2: Color, - purple3: Color, - purple4: Color, - purple5: Color, - purple6: Color, - purple7: Color, - purple8: Color, - purple9: Color, - pink0: Color, - pink1: Color, - pink2: Color, - pink3: Color, - pink4: Color, - pink5: Color, - pink6: Color, - pink7: Color, - pink8: Color, - pink9: Color, - grey0: Color, - grey1: Color, - grey2: Color, - grey3: Color, - grey4: Color, - grey5: Color, - grey6: Color, - grey7: Color, - grey8: Color, - grey9: Color, - black: Color, - white: Color, -}; + FontSize = 1 << 17, + }; -/// Visualized in doc/UIColors.md -pub const ui_dark_palette = @extern(*UiPalette, .{ .name = "OC_UI_DARK_PALETTE" }); + pub const Style = struct { + size: BoxSize = .{}, + layout: Layout = .{}, + floating: BoxFloating = .{}, + float_target: FloatTarget = .{}, + color: ?Color = null, + bg_color: ?Color = null, + border_color: ?Color = null, + font: ?Font = null, + font_size: ?f32 = null, + border_size: ?f32 = null, + roundness: ?f32 = null, + animation_time: ?f32 = null, + animation_mask: AnimationMask = .None, + }; -/// Visualized in doc/UIColors.md -pub const ui_light_palette = @extern(*UiPalette, .{ .name = "OC_UI_LIGHT_PALETTE" }); + pub const Palette = extern struct { + red0: Color, + red1: Color, + red2: Color, + red3: Color, + red4: Color, + red5: Color, + red6: Color, + red7: Color, + red8: Color, + red9: Color, + orange0: Color, + orange1: Color, + orange2: Color, + orange3: Color, + orange4: Color, + orange5: Color, + orange6: Color, + orange7: Color, + orange8: Color, + orange9: Color, + amber0: Color, + amber1: Color, + amber2: Color, + amber3: Color, + amber4: Color, + amber5: Color, + amber6: Color, + amber7: Color, + amber8: Color, + amber9: Color, + yellow0: Color, + yellow1: Color, + yellow2: Color, + yellow3: Color, + yellow4: Color, + yellow5: Color, + yellow6: Color, + yellow7: Color, + yellow8: Color, + yellow9: Color, + lime0: Color, + lime1: Color, + lime2: Color, + lime3: Color, + lime4: Color, + lime5: Color, + lime6: Color, + lime7: Color, + lime8: Color, + lime9: Color, + light_green0: Color, + light_green1: Color, + light_green2: Color, + light_green3: Color, + light_green4: Color, + light_green5: Color, + light_green6: Color, + light_green7: Color, + light_green8: Color, + light_green9: Color, + green0: Color, + green1: Color, + green2: Color, + green3: Color, + green4: Color, + green5: Color, + green6: Color, + green7: Color, + green8: Color, + green9: Color, + teal0: Color, + teal1: Color, + teal2: Color, + teal3: Color, + teal4: Color, + teal5: Color, + teal6: Color, + teal7: Color, + teal8: Color, + teal9: Color, + cyan0: Color, + cyan1: Color, + cyan2: Color, + cyan3: Color, + cyan4: Color, + cyan5: Color, + cyan6: Color, + cyan7: Color, + cyan8: Color, + cyan9: Color, + light_blue0: Color, + light_blue1: Color, + light_blue2: Color, + light_blue3: Color, + light_blue4: Color, + light_blue5: Color, + light_blue6: Color, + light_blue7: Color, + light_blue8: Color, + light_blue9: Color, + blue0: Color, + blue1: Color, + blue2: Color, + blue3: Color, + blue4: Color, + blue5: Color, + blue6: Color, + blue7: Color, + blue8: Color, + blue9: Color, + indigo0: Color, + indigo1: Color, + indigo2: Color, + indigo3: Color, + indigo4: Color, + indigo5: Color, + indigo6: Color, + indigo7: Color, + indigo8: Color, + indigo9: Color, + violet0: Color, + violet1: Color, + violet2: Color, + violet3: Color, + violet4: Color, + violet5: Color, + violet6: Color, + violet7: Color, + violet8: Color, + violet9: Color, + purple0: Color, + purple1: Color, + purple2: Color, + purple3: Color, + purple4: Color, + purple5: Color, + purple6: Color, + purple7: Color, + purple8: Color, + purple9: Color, + pink0: Color, + pink1: Color, + pink2: Color, + pink3: Color, + pink4: Color, + pink5: Color, + pink6: Color, + pink7: Color, + pink8: Color, + pink9: Color, + grey0: Color, + grey1: Color, + grey2: Color, + grey3: Color, + grey4: Color, + grey5: Color, + grey6: Color, + grey7: Color, + grey8: Color, + grey9: Color, + black: Color, + white: Color, + }; -pub const UiTheme = extern struct { - white: Color, - primary: Color, - primary_hover: Color, - primary_active: Color, - border: Color, - fill0: Color, - fill1: Color, - fill2: Color, - bg0: Color, - bg1: Color, - bg2: Color, - bg3: Color, - bg4: Color, - text0: Color, - text1: Color, - text2: Color, - text3: Color, - slider_thumb_border: Color, - elevated_border: Color, + /// Visualized in doc/UIColors.md + pub const dark_palette = @extern(*Palette, .{ .name = "OC_UI_DARK_PALETTE" }); - roundness_small: f32, - roundness_medium: f32, - roundness_large: f32, + /// Visualized in doc/UIColors.md + pub const light_palette = @extern(*Palette, .{ .name = "OC_UI_LIGHT_PALETTE" }); - palette: *UiPalette, -}; + pub const Theme = extern struct { + white: Color, + primary: Color, + primary_hover: Color, + primary_active: Color, + border: Color, + fill0: Color, + fill1: Color, + fill2: Color, + bg0: Color, + bg1: Color, + bg2: Color, + bg3: Color, + bg4: Color, + text0: Color, + text1: Color, + text2: Color, + text3: Color, + slider_thumb_border: Color, + elevated_border: Color, -pub const ui_dark_theme = @extern(*UiTheme, .{ .name = "OC_UI_DARK_THEME" }); -pub const ui_light_theme = @extern(*UiTheme, .{ .name = "OC_UI_LIGHT_THEME" }); + roundness_small: f32, + roundness_medium: f32, + roundness_large: f32, -pub const UiTag = extern struct { - hash: u64, -}; + palette: *Palette, + }; -pub const UiSelectorKind = enum(c_uint) { - any, - owner, - text, - tag, - status, - key, -}; + pub const dark_theme = @extern(*Theme, .{ .name = "OC_UI_DARK_THEME" }); + pub const light_theme = @extern(*Theme, .{ .name = "OC_UI_LIGHT_THEME" }); -pub const UiStatus = packed struct(u8) { - _: u1 = 0, + pub const Tag = extern struct { + hash: u64, - hover: bool = false, - hot: bool = false, - active: bool = false, - dragging: bool = false, + extern fn oc_ui_tag_make_str8(string: Str8) Tag; - __: u3 = 0, + pub fn make(string: []const u8) Tag { + return oc_ui_tag_make_str8(Str8.fromSlice(string)); + } + }; - pub fn empty(self: UiStatus) bool { - return !self.hover and !self.hot and !self.active and !self.dragging; - } -}; - -pub const UiSelectorOp = enum(c_uint) { - Descendant, - And, -}; - -pub const UiSelector = struct { - op: UiSelectorOp = .Descendant, - sel: union(UiSelectorKind) { + pub const SelectorKind = enum(c_uint) { any, owner, + text, + tag, + status, + key, + }; + + pub const Status = packed struct(u8) { + _: u1 = 0, + + hover: bool = false, + hot: bool = false, + active: bool = false, + dragging: bool = false, + + __: u3 = 0, + + pub fn empty(self: Status) bool { + return !self.hover and !self.hot and !self.active and !self.dragging; + } + }; + + pub const SelectorOp = enum(c_uint) { + Descendant, + And, + }; + + pub const Selector = struct { + op: SelectorOp = .Descendant, + sel: union(SelectorKind) { + any, + owner, + text: []u8, + key: Key, + tag: Tag, + status: Status, + }, + }; + + pub const Pattern = extern struct { + l: List, + + extern fn oc_ui_pattern_push(arena: *Arena, pattern: *Pattern, selector: SelectorInternal) void; + extern fn oc_ui_pattern_all() Pattern; + extern fn oc_ui_pattern_owner() Pattern; + + pub fn init() Pattern { + return .{ .l = List.init() }; + } + + /// Push the selector onto frame arena and insert it into the pattern's linked list. + /// Underlying Selector implementation has a ListElt within it that is not exposed to the Zig interface + /// in order to simplify the conversion. + /// + /// WARN: You can use a pattern in multiple rules, but be aware that a pattern is referencing + /// an underlying list of selectors, hence pushing to a pattern also modifies rules in + /// which the pattern was previously used! + pub fn push(self: *Pattern, arena: *Arena, selector: Selector) void { + oc_ui_pattern_push(arena, self, convertSelector(selector)); + } + + pub const all = oc_ui_pattern_all; + pub const owner = oc_ui_pattern_owner; + }; + + pub const StyleRule = struct { + box_elt: ListElt, + build_elt: ListElt, + tmp_elt: ListElt, + + owner: *Box, + pattern: Pattern, + style: *Style, + }; + + pub const Sig = extern struct { + box: *Box, + + mouse: Vec2, + delta: Vec2, + wheel: Vec2, + + pressed: bool, + released: bool, + clicked: bool, + doubleClicked: bool, + tripleClicked: bool, + rightPressed: bool, + + dragging: bool, + hovering: bool, + + pasted: bool, + }; + + pub const BoxDrawProc = *fn (box: *Box, data: ?*anyopaque) callconv(.C) void; + + pub const OverflowAllow = packed struct { + x: bool = false, + y: bool = false, + + pub fn array(self: *OverflowAllow) *[2]bool { + return @ptrCast(self); + } + }; + + pub const Flags = packed struct(c_uint) { + clickable: bool = false, // 0 + scroll_wheel_x: bool = false, // 1 + scroll_wheel_y: bool = false, // 2 + block_mouse: bool = false, // 3 + hot_animation: bool = false, // 4 + active_animation: bool = false, // 5 + overflow_allow: OverflowAllow = .{}, // 6-7 + clip: bool = false, // 8 + draw_background: bool = false, // 9 + draw_foreground: bool = false, // 10 + draw_border: bool = false, // 11 + draw_text: bool = false, // 12 + draw_proc: bool = false, // 13 + _: u2 = 0, // 14-15 + + overlay: bool = false, // 16 + __: u15 = 0, + }; + + pub const Box = extern struct { + // hierarchy + list_elt: ListElt, + children: List, + parent: ?*Box, + + overlay_elt: ListElt, + + // keying and caching + bucket_elt: ListElt, + key: Key, + frame_counter: u64, + + // builder-provided info + flags: Flags, + string: Str8, + tags: List, + + draw_proc: BoxDrawProc, + draw_data: *anyopaque, + + // styling + before_rules: List, + after_rules: List, + + target_style: ?*Style, + style: StyleInternal, + z: u32, + + float_pos: Vec2, + children_sum: [2]f32, + spacing: [2]f32, + min_size: [2]f32, + rect: Rect, + + // signals + sig: ?*Sig, + + // stateful behavior + fresh: bool, + closed: bool, + parent_closed: bool, + dragging: bool, + hot: bool, + active: bool, + scroll: Vec2, + pressed_mouse: Vec2, + + // animation data + hot_transition: f32, + active_transition: f32, + + // status and signals + extern fn oc_ui_box_closed(box: *Box) bool; + extern fn oc_ui_box_set_closed(box: *Box, closed: bool) void; + + extern fn oc_ui_box_active(box: *Box) bool; + extern fn oc_ui_box_activate(box: *Box) void; + extern fn oc_ui_box_deactivate(box: *Box) void; + + extern fn oc_ui_box_hot(box: *Box) bool; + extern fn oc_ui_box_set_hot(box: *Box, hot: bool) void; + + extern fn oc_ui_box_sig(box: *Box) Sig; + + pub const closed = oc_ui_box_closed; + pub const setClosed = oc_ui_box_set_closed; + + pub const active = oc_ui_box_active; + pub const activate = oc_ui_box_activate; + pub const deactivate = oc_ui_box_deactivate; + + pub const hot = oc_ui_box_hot; + pub const setHot = oc_ui_box_set_hot; + + pub const sig = oc_ui_box_sig; + }; + + pub const InputText = extern struct { + count: u8, + codepoints: [64]Utf32, + }; + + const CSize = extern struct { + kind: SizeKind, + value: f32 = 0, + relax: f32 = 0, + min_size: f32 = 0, + + fn fromSize(size: Size) CSize { + return switch (size) { + .text => .{ .kind = .Text }, + .pixels => |pixels| .{ .kind = .Pixels, .value = pixels }, + .children => .{ .kind = .Children }, + .fill_parent => .{ .kind = .Parent, .value = 1 }, + .parent => |fraction| .{ .kind = .Parent, .value = fraction }, + .parent_minus_pixels => |pixels| .{ .kind = .ParentMinusPixels, .value = pixels }, + .custom => |custom| .{ + .kind = custom.kind, + .value = custom.value, + .relax = custom.relax, + .min_size = custom.min_size, + }, + }; + } + }; + + pub const StackElt = extern struct { + parent: ?*StackElt, + elt: extern union { + box: *Box, + size: CSize, + clip: Rect, + }, + }; + + pub const TagElt = extern struct { + list_elt: ListElt, + tag: Tag, + }; + + pub const EditMove = enum(c_uint) { + none, + char, + word, + line, + }; + + pub const Context = extern struct { + is_init: bool, + + input: InputState, + + frame_counter: u64, + frame_time: f64, + last_frame_duration: f64, + + frame_arena: Arena, + box_pool: Pool, + box_map: [1024]List, + + root: *Box, + overlay: *Box, + overlay_list: List, + box_stack: *StackElt, + clip_stack: *StackElt, + + next_box_before_rules: List, + next_box_after_rules: List, + next_box_tags: List, + + z: u32, + hovered: ?*Box, + + focus: ?*Box, + edit_cursor: i32, + edit_mark: i32, + edit_first_displayed_char: i32, + edit_cursor_blink_start: f64, + edit_selection_mode: EditMove, + edit_word_selection_initial_cursor: i32, + edit_word_selection_initial_mark: i32, + + theme: *Theme, + + extern fn oc_ui_init(context: *Context) void; + pub const init = oc_ui_init; + }; + + const LayoutAlignmentInternal = extern struct { + x: Alignment, + y: Alignment, + }; + + const LayoutMarginInternal = extern struct { + x: f32, + y: f32, + }; + + const LayoutInternal = extern struct { + axis: Axis, + spacing: f32, + margin: LayoutMarginInternal, + alignment: LayoutAlignmentInternal, + }; + + const BoxSizeInternal = extern struct { + width: CSize, + height: CSize, + }; + + const BoxFloatingInternal = extern struct { + x: bool, + y: bool, + }; + + const FloatTargetInternal = extern struct { + x: f32, + y: f32, + }; + + const StyleInternal = extern struct { + size: BoxSizeInternal, + layout: LayoutInternal, + floating: BoxFloatingInternal, + float_target: FloatTargetInternal, + color: Color, + bg_color: Color, + border_color: Color, + font: Font, + font_size: f32, + border_size: f32, + roundness: f32, + animation_time: f32, + animation_mask: AnimationMask, + }; + + const StyleMaskInternal = packed struct(u64) { + _: u1 = 0, + size_width: bool = false, + size_height: bool = false, + layout_axis: bool = false, + layout_align_x: bool = false, + layout_align_y: bool = false, + layout_spacing: bool = false, + layout_margin_x: bool = false, + layout_margin_y: bool = false, + float_x: bool = false, + float_y: bool = false, + color: bool = false, + bg_color: bool = false, + border_color: bool = false, + border_size: bool = false, + roundness: bool = false, + font: bool = false, + font_size: bool = false, + animation_time: bool = false, + animation_mask: bool = false, + __: u44 = 0, + }; + + //------------------------------------------------------------------------------------------ + // [UI]: context initialization and frame cycle + //------------------------------------------------------------------------------------------ + + extern fn oc_ui_get_context() *Context; + extern fn oc_ui_set_context(context: *Context) void; + + extern fn oc_ui_process_event(event: *CEvent) void; + extern fn oc_ui_begin_frame(size: Vec2, default_style: *StyleInternal, mask: StyleMaskInternal) void; + extern fn oc_ui_end_frame() void; + extern fn oc_ui_draw() void; + extern fn oc_ui_set_theme(theme: *Theme) void; + + pub const getContext = oc_ui_get_context; + pub const setContext = oc_ui_set_context; + pub const processCEvent = oc_ui_process_event; + + pub const endFrame = oc_ui_end_frame; + pub const draw = oc_ui_draw; + pub const setTheme = oc_ui_set_theme; + + pub fn beginFrame(size: Vec2, default_style: *Style) void { + var default_style_and_mask = convertStyle(default_style); + oc_ui_begin_frame(size, &default_style_and_mask.style, default_style_and_mask.mask); + } + + const StyleAndMaskInternal = struct { + style: StyleInternal, + mask: StyleMaskInternal, + }; + + fn convertStyle(style: *const Style) StyleAndMaskInternal { + var style_internal: StyleInternal = std.mem.zeroes(StyleInternal); + var mask: StyleMaskInternal = .{}; + if (style.size.width) |width| { + style_internal.size.width = CSize.fromSize(width); + mask.size_width = true; + } + if (style.size.height) |height| { + style_internal.size.height = CSize.fromSize(height); + mask.size_height = true; + } + if (style.layout.axis) |axis| { + style_internal.layout.axis = axis; + mask.layout_axis = true; + } + if (style.layout.alignment.x) |x| { + style_internal.layout.alignment.x = x; + mask.layout_align_x = true; + } + if (style.layout.alignment.y) |y| { + style_internal.layout.alignment.y = y; + mask.layout_align_y = true; + } + if (style.layout.spacing) |spacing| { + style_internal.layout.spacing = spacing; + mask.layout_spacing = true; + } + if (style.layout.margin.x) |x| { + style_internal.layout.margin.x = x; + mask.layout_margin_x = true; + } + if (style.layout.margin.y) |y| { + style_internal.layout.margin.y = y; + mask.layout_margin_y = true; + } + if (style.floating.x) |x| { + style_internal.floating.x = x; + if (style.float_target.x) |target_x| { + style_internal.float_target.x = target_x; + } + mask.float_x = true; + } + if (style.floating.y) |y| { + style_internal.floating.y = y; + if (style.float_target.y) |target_y| { + style_internal.float_target.y = target_y; + } + mask.float_y = true; + } + if (style.color) |color| { + style_internal.color = color; + mask.color = true; + } + if (style.bg_color) |bg_color| { + style_internal.bg_color = bg_color; + mask.bg_color = true; + } + if (style.border_color) |border_color| { + style_internal.border_color = border_color; + mask.border_color = true; + } + if (style.border_size) |border_size| { + style_internal.border_size = border_size; + mask.border_size = true; + } + if (style.roundness) |roundness| { + style_internal.roundness = roundness; + mask.roundness = true; + } + if (style.font) |font| { + style_internal.font = font; + mask.font = true; + } + if (style.font_size) |font_size| { + style_internal.font_size = font_size; + mask.font_size = true; + } + if (style.animation_time) |animation_time| { + style_internal.animation_time = animation_time; + mask.animation_time = true; + } + if (style.animation_mask != .None) { + style_internal.animation_mask = @enumFromInt( + @intFromEnum(style_internal.animation_mask) | @intFromEnum(style.animation_mask), + ); + mask.animation_mask = true; + } + + return .{ .style = style_internal, .mask = mask }; + } + + //------------------------------------------------------------------------------------------ + // [UI]: box hierarchy building + //------------------------------------------------------------------------------------------ + extern fn oc_ui_box_make_str8(string: Str8, flags: Flags) *Box; + extern fn oc_ui_box_begin_str8(string: Str8, flags: Flags) *Box; + extern fn oc_ui_box_end() *Box; + + extern fn oc_ui_box_push(box: *Box) void; + extern fn oc_ui_box_pop() void; + extern fn oc_ui_box_top() ?*Box; + + extern fn oc_ui_box_lookup_key(key: Key) ?*Box; + extern fn oc_ui_box_lookup_str8(string: Str8) ?*Box; + + extern fn oc_ui_box_set_draw_proc(box: Box, proc: BoxDrawProc, data: ?*anyopaque) void; + + pub fn boxMake(string: []const u8, flags: Flags) *Box { + return oc_ui_box_make_str8(Str8.fromSlice(string), flags); + } + + pub fn boxBegin(string: []const u8, flags: Flags) *Box { + return oc_ui_box_begin_str8(Str8.fromSlice(string), flags); + } + + pub const boxEnd = oc_ui_box_end; + + pub const boxPush = oc_ui_box_push; + pub const boxPop = oc_ui_box_pop; + pub const boxTop = oc_ui_box_top; + + pub const boxLookupKey = oc_ui_box_lookup_key; + + pub fn boxLookupStr(string: []const u8) ?*Box { + return oc_ui_box_lookup_str8(Str8.fromSlice(string)); + } + + pub const boxSetDrawProc = oc_ui_box_set_draw_proc; + + //------------------------------------------------------------------------------------------ + // [UI]: tagging + //------------------------------------------------------------------------------------------ + + extern fn oc_ui_tag_box_str8(box: *Box, string: Str8) void; + extern fn oc_ui_tag_next_str8(string: Str8) void; + + pub fn tagBox(box: *Box, string: []const u8) void { + oc_ui_tag_box_str8(box, Str8.fromSlice(string)); + } + + pub fn tagNext(string: []const u8) void { + oc_ui_tag_next_str8(Str8.fromSlice(string)); + } + + //------------------------------------------------------------------------------------------ + // [UI]: styling + //------------------------------------------------------------------------------------------ + + const SelectorDataInternal = extern union { + text: Str8, + key: Key, + tag: Tag, + status: Status, + }; + + const SelectorInternal = extern struct { + list_elt: ListElt, + kind: SelectorKind, + op: SelectorOp, + data: SelectorDataInternal, + }; + + extern fn oc_ui_style_next(style: *StyleInternal, mask: StyleMaskInternal) void; + extern fn oc_ui_style_match_before(pattern: Pattern, style: *StyleInternal, mask: StyleMaskInternal) void; + extern fn oc_ui_style_match_after(patterh: Pattern, style: *StyleInternal, mask: StyleMaskInternal) void; + + pub fn styleNext(style: Style) void { + var style_and_mask = convertStyle(&style); + oc_ui_style_next(&style_and_mask.style, style_and_mask.mask); + } + + pub fn styleMatchBefore(pattern: Pattern, style: Style) void { + var style_and_mask = convertStyle(&style); + oc_ui_style_match_before(pattern, &style_and_mask.style, style_and_mask.mask); + } + + pub fn styleMatchAfter(pattern: Pattern, style: Style) void { + var style_and_mask = convertStyle(&style); + oc_ui_style_match_after(pattern, &style_and_mask.style, style_and_mask.mask); + } + + pub fn applyStyle(dst: *Style, src: *Style) void { + if (src.size.width) |width| { + dst.size.width = width; + } + if (src.size.height) |height| { + dst.size.height = height; + } + if (src.layout.axis) |axis| { + dst.layout.axis = axis; + } + if (src.layout.alignment.x) |x| { + dst.layout.alignment.x = x; + } + if (src.layout.alignment.y) |y| { + dst.layout.alignment.y = y; + } + if (src.layout.spacing) |spacing| { + dst.layout.spacing = spacing; + } + if (src.layout.margin.x) |x| { + dst.layout.margin.x = x; + } + if (src.layout.margin.y) |y| { + dst.layout.margin.y = y; + } + if (src.floating.x) |x| { + dst.floating.x = x; + } + if (src.float_target.x) |x| { + dst.float_target.x = x; + } + if (src.floating.y) |y| { + dst.floating.y = y; + } + if (src.float_target.y) |y| { + dst.float_target.y = y; + } + if (src.color) |color| { + dst.color = color; + } + if (src.bg_color) |bg_color| { + dst.bg_color = bg_color; + } + if (src.border_color) |border_color| { + dst.border_color = border_color; + } + if (src.border_size) |border_size| { + dst.border_size = border_size; + } + if (src.roudness) |roudness| { + dst.roudness = roudness; + } + if (src.font) |font| { + dst.font = font; + } + if (src.font_size) |font_size| { + dst.font_size = font_size; + } + if (src.animation_time) |animation_time| { + dst.animation_time = animation_time; + } + if (src.animation_mask) |animation_mask| { + dst.animation_mask = animation_mask; + } + } + + fn convertSelector(selector: Selector) SelectorInternal { + var data: SelectorDataInternal = switch (selector.sel) { + .any, .owner => std.mem.zeroes(SelectorDataInternal), + .text => |text| .{ .text = Str8.fromSlice(text) }, + .key => |key| .{ .key = key }, + .tag => |tag| .{ .tag = tag }, + .status => |status| .{ .status = status }, + }; + + return SelectorInternal{ + .list_elt = .{ .prev = null, .next = null }, + .kind = selector.sel, + .op = selector.op, + .data = data, + }; + } + + //------------------------------------------------------------------------------------------ + // [UI]: basic widget helpers + //------------------------------------------------------------------------------------------ + + extern fn oc_ui_label_str8(label: Str8) Sig; + extern fn oc_ui_button_str8(label: Str8) Sig; + extern fn oc_ui_checkbox_str8(label: Str8, checked: *bool) Sig; + extern fn oc_ui_slider_str8(label: Str8, value: *f32) *Box; + extern fn oc_ui_scrollbar_str8(label: Str8, thumbRatio: f32, scrollValue: *f32) *Box; + extern fn oc_ui_tooltip_str8(label: Str8) void; + + extern fn oc_ui_panel_begin_str8(name: Str8, flags: Flags) void; + extern fn oc_ui_panel_end() void; + + extern fn oc_ui_menu_bar_begin_str8(label: Str8) void; + extern fn oc_ui_menu_bar_end() void; + extern fn oc_ui_menu_begin_str8(label: Str8) void; + extern fn oc_ui_menu_end() void; + extern fn oc_ui_menu_button_str8(name: Str8) Sig; + + const TextBoxResultInternal = extern struct { + changed: bool, + accepted: bool, + text: Str8, + }; + extern fn oc_ui_text_box_str8(name: Str8, arena: Arena, text: Str8) TextBoxResultInternal; + + const SelectPopupInfoInternal = extern struct { + changed: bool, + selected_index: c_int, + option_count: c_int, + options: [*]Str8, + placeholder: Str8, + }; + extern fn oc_ui_select_popup_str8(name: Str8, info: *SelectPopupInfoInternal) SelectPopupInfoInternal; + + const RadioGroupInfoInternal = extern struct { + changed: bool, + selected_index: c_int, + option_count: c_int, + options: [*]Str8, + }; + extern fn oc_ui_radio_group_str8(name: Str8, info: RadioGroupInfoInternal) RadioGroupInfoInternal; + + pub fn makeLabel(label: []const u8) Sig { + return oc_ui_label_str8(Str8.fromSlice(label)); + } + + pub fn button(label: []const u8) Sig { + return oc_ui_button_str8(Str8.fromSlice(label)); + } + + pub fn checkbox(name: []const u8, checked: *bool) Sig { + return oc_ui_checkbox_str8(Str8.fromSlice(name), checked); + } + + pub fn slider(name: []const u8, value: *f32) *Box { + return oc_ui_slider_str8(Str8.fromSlice(name), value); + } + + pub fn scrollbar(name: []const u8, thumbRatio: f32, scrollValue: *f32) *Box { + return oc_ui_scrollbar_str8(Str8.fromSlice(name), thumbRatio, scrollValue); + } + + pub fn tooltip(label: []const u8) void { + oc_ui_tooltip_str8(Str8.fromSlice(label)); + } + + pub fn panelBegin(name: []const u8, flags: Flags) void { + oc_ui_panel_begin_str8(Str8.fromSlice(name), flags); + } + + pub fn panelEnd() void { + oc_ui_panel_end(); + } + + pub fn menuBarBegin(label: []const u8) void { + oc_ui_menu_bar_begin_str8(Str8.fromSlice(label)); + } + + pub fn menuBarEnd() void { + oc_ui_menu_bar_end(); + } + + pub fn menuBegin(label: []const u8) void { + oc_ui_menu_begin_str8(Str8.fromSlice(label)); + } + + pub fn menuEnd() void { + oc_ui_menu_end(); + } + + pub fn menuButton(label: []const u8) Sig { + return oc_ui_menu_button_str8(Str8.fromSlice(label)); + } + + pub const TextBoxResult = struct { + changed: bool, + accepted: bool, text: []u8, - key: UiKey, - tag: UiTag, - status: UiStatus, - }, -}; + }; -pub const UiPattern = extern struct { - l: List, - - extern fn oc_ui_pattern_push(arena: *Arena, pattern: *UiPattern, selector: UiSelectorInternal) void; - extern fn oc_ui_pattern_all() UiPattern; - extern fn oc_ui_pattern_owner() UiPattern; - - pub fn init() UiPattern { - return .{ .l = List.init() }; + pub fn textBox(name: []const u8, arena: Arena, text: []const u8) TextBoxResult { + var result_internal = oc_ui_text_box_str8(Str8.fromSlice(name), arena, Str8.fromSlice(text)); + return .{ + .changed = result_internal.changed, + .accepted = result_internal.accepted, + .text = result_internal.text.slice(), + }; } - /// Push the selector onto frame arena and insert it into the pattern's linked list. - /// Underlying UiSelector implementation has a ListElt within it that is not exposed to the Zig interface - /// in order to simplify the conversion. - /// - /// WARN: You can use a pattern in multiple rules, but be aware that a pattern is referencing - /// an underlying list of selectors, hence pushing to a pattern also modifies rules in - /// which the pattern was previously used! - pub fn push(self: *UiPattern, arena: *Arena, selector: UiSelector) void { - oc_ui_pattern_push(arena, self, uiConvertSelector(selector)); + pub const SelectPopupInfo = struct { + changed: bool = false, + selected_index: ?usize, + options: [][]const u8, + placeholder: []const u8 = "", + }; + + pub fn selectPopup(name: []const u8, info: *SelectPopupInfo) SelectPopupInfo { + var info_internal = SelectPopupInfoInternal{ + .changed = info.changed, + .selected_index = if (info.selected_index) |selected_index| @intCast(selected_index) else -1, + .option_count = @intCast(info.options.len), + .options = @ptrCast(info.options.ptr), + .placeholder = Str8.fromSlice(info.placeholder), + }; + var result_internal = oc_ui_select_popup_str8(Str8.fromSlice(name), &info_internal); + return .{ + .changed = result_internal.changed, + .selected_index = if (result_internal.selected_index >= 0) @intCast(result_internal.selected_index) else null, + .options = @ptrCast(result_internal.options[0..@intCast(result_internal.option_count)]), + .placeholder = result_internal.placeholder.slice(), + }; } - pub const all = oc_ui_pattern_all; - pub const owner = oc_ui_pattern_owner; -}; + pub const RadioGroupInfo = struct { + changed: bool = false, + selected_index: ?usize, + options: [][]const u8, + }; -pub const UiStyleRule = struct { - box_elt: ListElt, - build_elt: ListElt, - tmp_elt: ListElt, - - owner: *UiBox, - pattern: UiPattern, - style: *UiStyle, -}; - -pub const UiSig = extern struct { - box: *UiBox, - - mouse: Vec2, - delta: Vec2, - wheel: Vec2, - - pressed: bool, - released: bool, - clicked: bool, - doubleClicked: bool, - tripleClicked: bool, - rightPressed: bool, - - dragging: bool, - hovering: bool, - - pasted: bool, -}; - -pub const UiBoxDrawProc = *fn (box: *UiBox, data: ?*anyopaque) callconv(.C) void; - -pub const UiOverflowAllow = packed struct { - x: bool = false, - y: bool = false, - - pub fn array(self: *UiOverflowAllow) *[2]bool { - return @ptrCast(self); - } -}; - -pub const UiFlags = packed struct(c_uint) { - clickable: bool = false, // 0 - scroll_wheel_x: bool = false, // 1 - scroll_wheel_y: bool = false, // 2 - block_mouse: bool = false, // 3 - hot_animation: bool = false, // 4 - active_animation: bool = false, // 5 - overflow_allow: UiOverflowAllow = .{}, // 6-7 - clip: bool = false, // 8 - draw_background: bool = false, // 9 - draw_foreground: bool = false, // 10 - draw_border: bool = false, // 11 - draw_text: bool = false, // 12 - draw_proc: bool = false, // 13 - _: u2 = 0, // 14-15 - - overlay: bool = false, // 16 - __: u15 = 0, -}; - -pub const UiBox = extern struct { - // hierarchy - list_elt: ListElt, - children: List, - parent: ?*UiBox, - - overlay_elt: ListElt, - - // keying and caching - bucket_elt: ListElt, - key: UiKey, - frame_counter: u64, - - // builder-provided info - flags: UiFlags, - string: Str8, - tags: List, - - draw_proc: UiBoxDrawProc, - draw_data: *anyopaque, - - // styling - before_rules: List, - after_rules: List, - - target_style: ?*UiStyle, - style: UiStyleInternal, - z: u32, - - float_pos: Vec2, - children_sum: [2]f32, - spacing: [2]f32, - min_size: [2]f32, - rect: Rect, - - // signals - sig: ?*UiSig, - - // stateful behavior - fresh: bool, - closed: bool, - parent_closed: bool, - dragging: bool, - hot: bool, - active: bool, - scroll: Vec2, - pressed_mouse: Vec2, - - // animation data - hot_transition: f32, - active_transition: f32, -}; - -pub const UiInputText = extern struct { - count: u8, - codepoints: [64]Utf32, -}; - -const UiCSize = extern struct { - kind: UiSizeKind, - value: f32 = 0, - relax: f32 = 0, - min_size: f32 = 0, - - fn fromUiSize(ui_size: UiSize) UiCSize { - return switch (ui_size) { - .text => .{ .kind = .Text }, - .pixels => |pixels| .{ .kind = .Pixels, .value = pixels }, - .children => .{ .kind = .Children }, - .fill_parent => .{ .kind = .Parent, .value = 1 }, - .parent => |fraction| .{ .kind = .Parent, .value = fraction }, - .parent_minus_pixels => |pixels| .{ .kind = .ParentMinusPixels, .value = pixels }, - .custom => |custom| .{ - .kind = custom.kind, - .value = custom.value, - .relax = custom.relax, - .min_size = custom.min_size, - }, + pub fn radioGroup(name: []const u8, info: *RadioGroupInfo) RadioGroupInfo { + var info_internal = RadioGroupInfoInternal{ + .changed = info.changed, + .selected_index = if (info.selected_index) |selected_index| @intCast(selected_index) else -1, + .option_count = @intCast(info.options.len), + .options = @ptrCast(info.options.ptr), + }; + var result_internal = oc_ui_radio_group_str8(Str8.fromSlice(name), info_internal); + return .{ + .changed = result_internal.changed, + .selected_index = if (result_internal.selected_index >= 0) @intCast(result_internal.selected_index) else null, + .options = @ptrCast(result_internal.options[0..@intCast(result_internal.option_count)]), }; } }; -pub const UiStackElt = extern struct { - parent: ?*UiStackElt, - elt: extern union { - box: *UiBox, - size: UiCSize, - clip: Rect, - }, -}; - -pub const UiTagElt = extern struct { - list_elt: ListElt, - tag: UiTag, -}; - -pub const UiEditMove = enum(c_uint) { - none, - char, - word, - line, -}; - -pub const UiContext = extern struct { - is_init: bool, - - input: InputState, - - frame_counter: u64, - frame_time: f64, - last_frame_duration: f64, - - frame_arena: Arena, - box_pool: Pool, - box_map: [1024]List, - - root: *UiBox, - overlay: *UiBox, - overlay_list: List, - box_stack: *UiStackElt, - clip_stack: *UiStackElt, - - next_box_before_rules: List, - next_box_after_rules: List, - next_box_tags: List, - - z: u32, - hovered: ?*UiBox, - - focus: ?*UiBox, - edit_cursor: i32, - edit_mark: i32, - edit_first_displayed_char: i32, - edit_cursor_blink_start: f64, - edit_selection_mode: UiEditMove, - edit_word_selection_initial_cursor: i32, - edit_word_selection_initial_mark: i32, - - theme: *UiTheme, - - extern fn oc_ui_init(context: *UiContext) void; - pub const init = oc_ui_init; -}; - -const UiLayoutAlignmentInternal = extern struct { - x: UiAlignment, - y: UiAlignment, -}; - -const UiLayoutMarginInternal = extern struct { - x: f32, - y: f32, -}; - -const UiLayoutInternal = extern struct { - axis: UiAxis, - spacing: f32, - margin: UiLayoutMarginInternal, - alignment: UiLayoutAlignmentInternal, -}; - -const UiBoxSizeInternal = extern struct { - width: UiCSize, - height: UiCSize, -}; - -const UiBoxFloatingInternal = extern struct { - x: bool, - y: bool, -}; - -const UiFloatTargetInternal = extern struct { - x: f32, - y: f32, -}; - -const UiStyleInternal = extern struct { - size: UiBoxSizeInternal, - layout: UiLayoutInternal, - floating: UiBoxFloatingInternal, - float_target: UiFloatTargetInternal, - color: Color, - bg_color: Color, - border_color: Color, - font: Font, - font_size: f32, - border_size: f32, - roundness: f32, - animation_time: f32, - animation_mask: UiAnimationMask, -}; - -const UiStyleMaskInternal = packed struct(u64) { - _: u1 = 0, - size_width: bool = false, - size_height: bool = false, - layout_axis: bool = false, - layout_align_x: bool = false, - layout_align_y: bool = false, - layout_spacing: bool = false, - layout_margin_x: bool = false, - layout_margin_y: bool = false, - float_x: bool = false, - float_y: bool = false, - color: bool = false, - bg_color: bool = false, - border_color: bool = false, - border_size: bool = false, - roundness: bool = false, - font: bool = false, - font_size: bool = false, - animation_time: bool = false, - animation_mask: bool = false, - __: u44 = 0, -}; - -//------------------------------------------------------------------------------------------ -// [UI]: context initialization and frame cycle -//------------------------------------------------------------------------------------------ - -extern fn oc_ui_get_context() *UiContext; -extern fn oc_ui_set_context(context: *UiContext) void; - -extern fn oc_ui_process_event(event: *CEvent) void; -extern fn oc_ui_begin_frame(size: Vec2, default_style: *UiStyleInternal, mask: UiStyleMaskInternal) void; -extern fn oc_ui_end_frame() void; -extern fn oc_ui_draw() void; -extern fn oc_ui_set_theme(theme: *UiTheme) void; - -pub const uiGetContext = oc_ui_get_context; -pub const uiSetContext = oc_ui_set_context; -pub const uiProcessCEvent = oc_ui_process_event; - -pub const uiEndFrame = oc_ui_end_frame; -pub const uiDraw = oc_ui_draw; -pub const uiSetTheme = oc_ui_set_theme; - -pub fn uiBeginFrame(size: Vec2, default_style: *UiStyle) void { - var default_style_and_mask = uiConvertStyle(default_style); - oc_ui_begin_frame(size, &default_style_and_mask.style, default_style_and_mask.mask); -} - -const UiStyleAndMaskInternal = struct { - style: UiStyleInternal, - mask: UiStyleMaskInternal, -}; - -fn uiConvertStyle(style: *const UiStyle) UiStyleAndMaskInternal { - var style_internal: UiStyleInternal = std.mem.zeroes(UiStyleInternal); - var mask: UiStyleMaskInternal = .{}; - if (style.size.width) |width| { - style_internal.size.width = UiCSize.fromUiSize(width); - mask.size_width = true; - } - if (style.size.height) |height| { - style_internal.size.height = UiCSize.fromUiSize(height); - mask.size_height = true; - } - if (style.layout.axis) |axis| { - style_internal.layout.axis = axis; - mask.layout_axis = true; - } - if (style.layout.alignment.x) |x| { - style_internal.layout.alignment.x = x; - mask.layout_align_x = true; - } - if (style.layout.alignment.y) |y| { - style_internal.layout.alignment.y = y; - mask.layout_align_y = true; - } - if (style.layout.spacing) |spacing| { - style_internal.layout.spacing = spacing; - mask.layout_spacing = true; - } - if (style.layout.margin.x) |x| { - style_internal.layout.margin.x = x; - mask.layout_margin_x = true; - } - if (style.layout.margin.y) |y| { - style_internal.layout.margin.y = y; - mask.layout_margin_y = true; - } - if (style.floating.x) |x| { - style_internal.floating.x = x; - if (style.float_target.x) |target_x| { - style_internal.float_target.x = target_x; - } - mask.float_x = true; - } - if (style.floating.y) |y| { - style_internal.floating.y = y; - if (style.float_target.y) |target_y| { - style_internal.float_target.y = target_y; - } - mask.float_y = true; - } - if (style.color) |color| { - style_internal.color = color; - mask.color = true; - } - if (style.bg_color) |bg_color| { - style_internal.bg_color = bg_color; - mask.bg_color = true; - } - if (style.border_color) |border_color| { - style_internal.border_color = border_color; - mask.border_color = true; - } - if (style.border_size) |border_size| { - style_internal.border_size = border_size; - mask.border_size = true; - } - if (style.roundness) |roundness| { - style_internal.roundness = roundness; - mask.roundness = true; - } - if (style.font) |font| { - style_internal.font = font; - mask.font = true; - } - if (style.font_size) |font_size| { - style_internal.font_size = font_size; - mask.font_size = true; - } - if (style.animation_time) |animation_time| { - style_internal.animation_time = animation_time; - mask.animation_time = true; - } - if (style.animation_mask != .None) { - style_internal.animation_mask = @enumFromInt( - @intFromEnum(style_internal.animation_mask) | @intFromEnum(style.animation_mask), - ); - mask.animation_mask = true; - } - - return .{ .style = style_internal, .mask = mask }; -} - -//------------------------------------------------------------------------------------------ -// [UI]: box keys -//------------------------------------------------------------------------------------------ - -extern fn oc_ui_key_make_str8(string: Str8) UiKey; -extern fn oc_ui_key_make_path(path: Str8List) UiKey; - -pub fn uiKeyMake(string: []const u8) UiKey { - return oc_ui_key_make_str8(Str8.fromSlice(string)); -} - -pub const uiKeyMakePath = oc_ui_key_make_path; - -//------------------------------------------------------------------------------------------ -// [UI]: box hierarchy building -//------------------------------------------------------------------------------------------ - -extern fn oc_ui_box_make_str8(string: Str8, flags: UiFlags) *UiBox; -extern fn oc_ui_box_begin_str8(string: Str8, flags: UiFlags) *UiBox; -extern fn oc_ui_box_end() *UiBox; - -extern fn oc_ui_box_push(box: *UiBox) void; -extern fn oc_ui_box_pop() void; -extern fn oc_ui_box_top() ?*UiBox; - -extern fn oc_ui_box_lookup_key(key: UiKey) ?*UiBox; -extern fn oc_ui_box_lookup_str8(string: Str8) ?*UiBox; - -extern fn oc_ui_box_set_draw_proc(box: UiBox, proc: UiBoxDrawProc, data: ?*anyopaque) void; - -pub fn uiBoxMake(string: []const u8, flags: UiFlags) *UiBox { - return oc_ui_box_make_str8(Str8.fromSlice(string), flags); -} - -pub fn uiBoxBegin(string: []const u8, flags: UiFlags) *UiBox { - return oc_ui_box_begin_str8(Str8.fromSlice(string), flags); -} - -pub const uiBoxEnd = oc_ui_box_end; - -pub const uiBoxPush = oc_ui_box_push; -pub const uiBoxPop = oc_ui_box_pop; -pub const uiBoxTop = oc_ui_box_top; - -pub const uiBoxLookupKey = oc_ui_box_lookup_key; - -pub fn uiBoxLookupStr(string: []const u8) ?*UiBox { - return oc_ui_box_lookup_str8(Str8.fromSlice(string)); -} - -pub const uiBoxSetDrawProc = oc_ui_box_set_draw_proc; - -//------------------------------------------------------------------------------------------ -// [UI]: box status and signals -//------------------------------------------------------------------------------------------ - -extern fn oc_ui_box_closed(box: *UiBox) bool; -extern fn oc_ui_box_set_closed(box: *UiBox, closed: bool) void; - -extern fn oc_ui_box_active(box: *UiBox) bool; -extern fn oc_ui_box_activate(box: *UiBox) void; -extern fn oc_ui_box_deactivate(box: *UiBox) void; - -extern fn oc_ui_box_hot(box: *UiBox) bool; -extern fn oc_ui_box_set_hot(box: *UiBox, hot: bool) void; - -extern fn oc_ui_box_sig(box: *UiBox) UiSig; - -pub const uiBoxClosed = oc_ui_box_closed; -pub const uiBoxSetClosed = oc_ui_box_set_closed; - -pub const uiBoxActive = oc_ui_box_active; -pub const uiBoxActivate = oc_ui_box_activate; -pub const uiBoxDeactivate = oc_ui_box_deactivate; - -pub const uiBoxHot = oc_ui_box_hot; -pub const uiBoxSetHot = oc_ui_box_set_hot; - -pub const uiBoxSig = oc_ui_box_sig; - -//------------------------------------------------------------------------------------------ -// [UI]: tagging -//------------------------------------------------------------------------------------------ - -extern fn oc_ui_tag_make_str8(string: Str8) UiTag; -extern fn oc_ui_tag_box_str8(box: *UiBox, string: Str8) void; -extern fn oc_ui_tag_next_str8(string: Str8) void; - -pub fn uiTagMake(string: []const u8) UiTag { - return oc_ui_tag_make_str8(Str8.fromSlice(string)); -} - -pub fn uiTagBox(box: *UiBox, string: []const u8) void { - oc_ui_tag_box_str8(box, Str8.fromSlice(string)); -} - -pub fn uiTagNext(string: []const u8) void { - oc_ui_tag_next_str8(Str8.fromSlice(string)); -} - -//------------------------------------------------------------------------------------------ -// [UI]: styling -//------------------------------------------------------------------------------------------ - -const UiSelectorDataInternal = extern union { - text: Str8, - key: UiKey, - tag: UiTag, - status: UiStatus, -}; - -const UiSelectorInternal = extern struct { - list_elt: ListElt, - kind: UiSelectorKind, - op: UiSelectorOp, - data: UiSelectorDataInternal, -}; - -extern fn oc_ui_style_next(style: *UiStyleInternal, mask: UiStyleMaskInternal) void; -extern fn oc_ui_style_match_before(pattern: UiPattern, style: *UiStyleInternal, mask: UiStyleMaskInternal) void; -extern fn oc_ui_style_match_after(patterh: UiPattern, style: *UiStyleInternal, mask: UiStyleMaskInternal) void; - -pub fn uiStyleNext(style: UiStyle) void { - var style_and_mask = uiConvertStyle(&style); - oc_ui_style_next(&style_and_mask.style, style_and_mask.mask); -} - -pub fn uiStyleMatchBefore(pattern: UiPattern, style: UiStyle) void { - var style_and_mask = uiConvertStyle(&style); - oc_ui_style_match_before(pattern, &style_and_mask.style, style_and_mask.mask); -} - -pub fn uiStyleMatchAfter(pattern: UiPattern, style: UiStyle) void { - var style_and_mask = uiConvertStyle(&style); - oc_ui_style_match_after(pattern, &style_and_mask.style, style_and_mask.mask); -} - -pub fn uiApplyStyle(dst: *UiStyle, src: *UiStyle) void { - if (src.size.width) |width| { - dst.size.width = width; - } - if (src.size.height) |height| { - dst.size.height = height; - } - if (src.layout.axis) |axis| { - dst.layout.axis = axis; - } - if (src.layout.alignment.x) |x| { - dst.layout.alignment.x = x; - } - if (src.layout.alignment.y) |y| { - dst.layout.alignment.y = y; - } - if (src.layout.spacing) |spacing| { - dst.layout.spacing = spacing; - } - if (src.layout.margin.x) |x| { - dst.layout.margin.x = x; - } - if (src.layout.margin.y) |y| { - dst.layout.margin.y = y; - } - if (src.floating.x) |x| { - dst.floating.x = x; - } - if (src.float_target.x) |x| { - dst.float_target.x = x; - } - if (src.floating.y) |y| { - dst.floating.y = y; - } - if (src.float_target.y) |y| { - dst.float_target.y = y; - } - if (src.color) |color| { - dst.color = color; - } - if (src.bg_color) |bg_color| { - dst.bg_color = bg_color; - } - if (src.border_color) |border_color| { - dst.border_color = border_color; - } - if (src.border_size) |border_size| { - dst.border_size = border_size; - } - if (src.roudness) |roudness| { - dst.roudness = roudness; - } - if (src.font) |font| { - dst.font = font; - } - if (src.font_size) |font_size| { - dst.font_size = font_size; - } - if (src.animation_time) |animation_time| { - dst.animation_time = animation_time; - } - if (src.animation_mask) |animation_mask| { - dst.animation_mask = animation_mask; - } -} - -fn uiConvertSelector(selector: UiSelector) UiSelectorInternal { - var data: UiSelectorDataInternal = switch (selector.sel) { - .any, .owner => std.mem.zeroes(UiSelectorDataInternal), - .text => |text| .{ .text = Str8.fromSlice(text) }, - .key => |key| .{ .key = key }, - .tag => |tag| .{ .tag = tag }, - .status => |status| .{ .status = status }, - }; - - return UiSelectorInternal{ - .list_elt = .{ .prev = null, .next = null }, - .kind = selector.sel, - .op = selector.op, - .data = data, - }; -} - -//------------------------------------------------------------------------------------------ -// [UI]: basic widget helpers -//------------------------------------------------------------------------------------------ - -extern fn oc_ui_label_str8(label: Str8) UiSig; -extern fn oc_ui_button_str8(label: Str8) UiSig; -extern fn oc_ui_checkbox_str8(label: Str8, checked: *bool) UiSig; -extern fn oc_ui_slider_str8(label: Str8, value: *f32) *UiBox; -extern fn oc_ui_scrollbar_str8(label: Str8, thumbRatio: f32, scrollValue: *f32) *UiBox; -extern fn oc_ui_tooltip_str8(label: Str8) void; - -extern fn oc_ui_panel_begin_str8(name: Str8, flags: UiFlags) void; -extern fn oc_ui_panel_end() void; - -extern fn oc_ui_menu_bar_begin_str8(label: Str8) void; -extern fn oc_ui_menu_bar_end() void; -extern fn oc_ui_menu_begin_str8(label: Str8) void; -extern fn oc_ui_menu_end() void; -extern fn oc_ui_menu_button_str8(name: Str8) UiSig; - -const UiTextBoxResultInternal = extern struct { - changed: bool, - accepted: bool, - text: Str8, -}; -extern fn oc_ui_text_box_str8(name: Str8, arena: Arena, text: Str8) UiTextBoxResultInternal; - -const UiSelectPopupInfoInternal = extern struct { - changed: bool, - selected_index: c_int, - option_count: c_int, - options: [*]Str8, - placeholder: Str8, -}; -extern fn oc_ui_select_popup_str8(name: Str8, info: *UiSelectPopupInfoInternal) UiSelectPopupInfoInternal; - -const UiRadioGroupInfoInternal = extern struct { - changed: bool, - selected_index: c_int, - option_count: c_int, - options: [*]Str8, -}; -extern fn oc_ui_radio_group_str8(name: Str8, info: UiRadioGroupInfoInternal) UiRadioGroupInfoInternal; - -pub fn uiLabel(label: []const u8) UiSig { - return oc_ui_label_str8(Str8.fromSlice(label)); -} - -pub fn uiButton(label: []const u8) UiSig { - return oc_ui_button_str8(Str8.fromSlice(label)); -} - -pub fn uiCheckbox(label: []const u8, checked: *bool) UiSig { - return oc_ui_checkbox_str8(Str8.fromSlice(label), checked); -} - -pub fn uiSlider(label: []const u8, value: *f32) *UiBox { - return oc_ui_slider_str8(Str8.fromSlice(label), value); -} - -pub fn uiScrollbar(label: []const u8, thumbRatio: f32, scrollValue: *f32) *UiBox { - return oc_ui_scrollbar_str8(Str8.fromSlice(label), thumbRatio, scrollValue); -} - -pub fn uiTooltip(label: []const u8) void { - oc_ui_tooltip_str8(Str8.fromSlice(label)); -} - -pub fn uiPanelBegin(name: []const u8, flags: UiFlags) void { - oc_ui_panel_begin_str8(Str8.fromSlice(name), flags); -} - -pub fn uiPanelEnd() void { - oc_ui_panel_end(); -} - -pub fn uiMenuBarBegin(label: []const u8) void { - oc_ui_menu_bar_begin_str8(Str8.fromSlice(label)); -} - -pub fn uiMenuBarEnd() void { - oc_ui_menu_bar_end(); -} - -pub fn uiMenuBegin(label: []const u8) void { - oc_ui_menu_begin_str8(Str8.fromSlice(label)); -} - -pub fn uiMenuEnd() void { - oc_ui_menu_end(); -} - -pub fn uiMenuButton(name: []const u8) UiSig { - return oc_ui_menu_button_str8(Str8.fromSlice(name)); -} - -pub const UiTextBoxResult = struct { - changed: bool, - accepted: bool, - text: []u8, -}; - -pub fn uiTextBox(name: []const u8, arena: Arena, text: []const u8) UiTextBoxResult { - var result_internal = oc_ui_text_box_str8(Str8.fromSlice(name), arena, Str8.fromSlice(text)); - return .{ - .changed = result_internal.changed, - .accepted = result_internal.accepted, - .text = result_internal.text.slice(), - }; -} - -pub const UiSelectPopupInfo = struct { - changed: bool = false, - selected_index: ?usize, - options: [][]const u8, - placeholder: []const u8 = "", -}; - -pub fn uiSelectPopup(name: []const u8, info: *UiSelectPopupInfo) UiSelectPopupInfo { - var info_internal = UiSelectPopupInfoInternal{ - .changed = info.changed, - .selected_index = if (info.selected_index) |selected_index| @intCast(selected_index) else -1, - .option_count = @intCast(info.options.len), - .options = @ptrCast(info.options.ptr), - .placeholder = Str8.fromSlice(info.placeholder), - }; - var result_internal = oc_ui_select_popup_str8(Str8.fromSlice(name), &info_internal); - return .{ - .changed = result_internal.changed, - .selected_index = if (result_internal.selected_index >= 0) @intCast(result_internal.selected_index) else null, - .options = @ptrCast(result_internal.options[0..@intCast(result_internal.option_count)]), - .placeholder = result_internal.placeholder.slice(), - }; -} - -pub const UiRadioGroupInfo = struct { - changed: bool = false, - selected_index: ?usize, - options: [][]const u8, -}; - -pub fn uiRadioGroup(name: []const u8, info: *UiRadioGroupInfo) UiRadioGroupInfo { - var info_internal = UiRadioGroupInfoInternal{ - .changed = info.changed, - .selected_index = if (info.selected_index) |selected_index| @intCast(selected_index) else -1, - .option_count = @intCast(info.options.len), - .options = @ptrCast(info.options.ptr), - }; - var result_internal = oc_ui_radio_group_str8(Str8.fromSlice(name), info_internal); - return .{ - .changed = result_internal.changed, - .selected_index = if (result_internal.selected_index >= 0) @intCast(result_internal.selected_index) else null, - .options = @ptrCast(result_internal.options[0..@intCast(result_internal.option_count)]), - }; -} - //------------------------------------------------------------------------------------------ // [GRAPHICS]: GLES //------------------------------------------------------------------------------------------ // TODO -//------------------------------------------------------------------------------------------ -// [UI] -//------------------------------------------------------------------------------------------ - -// TODO - //------------------------------------------------------------------------------------------ // [FILE IO] basic API //------------------------------------------------------------------------------------------ diff --git a/src/ui/ui.c b/src/ui/ui.c index 68bcfc6..d577820 100644 --- a/src/ui/ui.c +++ b/src/ui/ui.c @@ -1989,13 +1989,13 @@ oc_ui_sig oc_ui_checkbox(const char* name, bool* checked) //------------------------------------------------------------------------------ // slider / scrollbar //------------------------------------------------------------------------------ -oc_ui_box* oc_ui_slider_str8(oc_str8 label, f32* value) +oc_ui_box* oc_ui_slider_str8(oc_str8 name, f32* value) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; oc_ui_style_match_before(oc_ui_pattern_all(), &(oc_ui_style){ 0 }, OC_UI_STYLE_LAYOUT); - oc_ui_box* frame = oc_ui_box_begin_str8(label, 0); + oc_ui_box* frame = oc_ui_box_begin_str8(name, 0); { oc_ui_axis trackAxis = (frame->rect.w > frame->rect.h) ? OC_UI_AXIS_X : OC_UI_AXIS_Y; oc_ui_axis secondAxis = (trackAxis == OC_UI_AXIS_Y) ? OC_UI_AXIS_X : OC_UI_AXIS_Y; @@ -2166,17 +2166,17 @@ oc_ui_box* oc_ui_slider_str8(oc_str8 label, f32* value) return (frame); } -oc_ui_box* oc_ui_slider(const char* label, f32* value) +oc_ui_box* oc_ui_slider(const char* name, f32* value) { - return oc_ui_slider_str8(OC_STR8(label), value); + return oc_ui_slider_str8(OC_STR8(name), value); } -oc_ui_box* oc_ui_scrollbar_str8(oc_str8 label, f32 thumbRatio, f32* scrollValue) +oc_ui_box* oc_ui_scrollbar_str8(oc_str8 name, f32 thumbRatio, f32* scrollValue) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; oc_ui_style_match_before(oc_ui_pattern_all(), &(oc_ui_style){ 0 }, OC_UI_STYLE_LAYOUT); - oc_ui_box* frame = oc_ui_box_begin_str8(label, 0); + oc_ui_box* frame = oc_ui_box_begin_str8(name, 0); { f32 minThumbRatio = 17. / oc_max(frame->rect.w, frame->rect.h); thumbRatio = oc_min(oc_max(thumbRatio, minThumbRatio), 1.); @@ -2302,9 +2302,9 @@ oc_ui_box* oc_ui_scrollbar_str8(oc_str8 label, f32 thumbRatio, f32* scrollValue) return (frame); } -oc_ui_box* oc_ui_scrollbar(const char* label, f32 thumbRatio, f32* scrollValue) +oc_ui_box* oc_ui_scrollbar(const char* name, f32 thumbRatio, f32* scrollValue) { - return oc_ui_scrollbar_str8(OC_STR8(label), thumbRatio, scrollValue); + return oc_ui_scrollbar_str8(OC_STR8(name), thumbRatio, scrollValue); } //------------------------------------------------------------------------------ @@ -2633,7 +2633,7 @@ void oc_ui_menu_end(void) oc_ui_box_pop(); // container } -oc_ui_sig oc_ui_menu_button_str8(oc_str8 name) +oc_ui_sig oc_ui_menu_button_str8(oc_str8 label) { oc_ui_context* ui = oc_ui_get_context(); oc_ui_theme* theme = ui->theme; @@ -2662,14 +2662,14 @@ oc_ui_sig oc_ui_menu_button_str8(oc_str8 name) | OC_UI_FLAG_DRAW_TEXT | OC_UI_FLAG_DRAW_BACKGROUND; - oc_ui_box* box = oc_ui_box_make_str8(name, flags); + oc_ui_box* box = oc_ui_box_make_str8(label, flags); oc_ui_sig sig = oc_ui_box_sig(box); return (sig); } -oc_ui_sig oc_ui_menu_button(const char* name) +oc_ui_sig oc_ui_menu_button(const char* label) { - return oc_ui_menu_button_str8(OC_STR8(name)); + return oc_ui_menu_button_str8(OC_STR8(label)); } //------------------------------------------------------------------------------ diff --git a/src/ui/ui.h b/src/ui/ui.h index 93661a5..cde5ddf 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -733,23 +733,23 @@ ORCA_API oc_ui_sig oc_ui_label_str8(oc_str8 label); ORCA_API oc_ui_sig oc_ui_button(const char* label); ORCA_API oc_ui_sig oc_ui_checkbox(const char* name, bool* checked); -ORCA_API oc_ui_box* oc_ui_slider(const char* label, f32* value); -ORCA_API oc_ui_box* oc_ui_scrollbar(const char* label, f32 thumbRatio, f32* scrollValue); +ORCA_API oc_ui_box* oc_ui_slider(const char* name, f32* value); +ORCA_API oc_ui_box* oc_ui_scrollbar(const char* name, f32 thumbRatio, f32* scrollValue); ORCA_API void oc_ui_tooltip(const char* label); ORCA_API void oc_ui_panel_begin(const char* name, oc_ui_flags flags); ORCA_API void oc_ui_panel_end(void); #define oc_ui_panel(s, f) oc_defer_loop(oc_ui_panel_begin(s, f), oc_ui_panel_end()) -ORCA_API void oc_ui_menu_bar_begin(const char* label); +ORCA_API void oc_ui_menu_bar_begin(const char* name); ORCA_API void oc_ui_menu_bar_end(void); #define oc_ui_menu_bar(name) oc_defer_loop(oc_ui_menu_bar_begin(name), oc_ui_menu_bar_end()) ORCA_API void oc_ui_menu_begin(const char* label); ORCA_API void oc_ui_menu_end(void); -#define oc_ui_menu(name) oc_defer_loop(oc_ui_menu_begin(name), oc_ui_menu_end()) +#define oc_ui_menu(label) oc_defer_loop(oc_ui_menu_begin(label), oc_ui_menu_end()) -ORCA_API oc_ui_sig oc_ui_menu_button(const char* name); +ORCA_API oc_ui_sig oc_ui_menu_button(const char* label); typedef struct oc_ui_text_box_result { -- 2.25.1 From f1727dbc8dde3679c7de798ba9fbde524258978c Mon Sep 17 00:00:00 2001 From: Ilia Demianenko Date: Wed, 4 Oct 2023 19:40:02 -0700 Subject: [PATCH 24/24] Text box arena, ui init func --- samples/zig-ui/src/main.zig | 4 ++-- src/orca.zig | 19 +++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/samples/zig-ui/src/main.zig b/samples/zig-ui/src/main.zig index 752bf37..b81f558 100644 --- a/samples/zig-ui/src/main.zig +++ b/samples/zig-ui/src/main.zig @@ -26,7 +26,7 @@ export fn oc_on_init() void { surface = oc.Surface.canvas(); canvas = oc.Canvas.create(); - ui_ctx.init(); + ui.init(&ui_ctx); var fonts = [_]*oc.Font{ &font_regular, &font_bold }; var font_names = [_][]const u8{ "/OpenSans-Regular.ttf", "/OpenSans-Bold.ttf" }; @@ -300,7 +300,7 @@ fn widgets(arena: *oc.Arena) void { .height = .text, }, }); - var textResult = ui.textBox("text", arena.*, text); + var textResult = ui.textBox("text", arena, text); if (textResult.changed) { text_arena.clear(); text = text_arena.pushStr(textResult.text) catch { diff --git a/src/orca.zig b/src/orca.zig index 7c66406..2f2d994 100644 --- a/src/orca.zig +++ b/src/orca.zig @@ -2795,9 +2795,6 @@ pub const ui = struct { edit_word_selection_initial_mark: i32, theme: *Theme, - - extern fn oc_ui_init(context: *Context) void; - pub const init = oc_ui_init; }; const LayoutAlignmentInternal = extern struct { @@ -2875,7 +2872,7 @@ pub const ui = struct { //------------------------------------------------------------------------------------------ // [UI]: context initialization and frame cycle //------------------------------------------------------------------------------------------ - + extern fn oc_ui_init(context: *Context) void; extern fn oc_ui_get_context() *Context; extern fn oc_ui_set_context(context: *Context) void; @@ -2885,19 +2882,21 @@ pub const ui = struct { extern fn oc_ui_draw() void; extern fn oc_ui_set_theme(theme: *Theme) void; + pub const init = oc_ui_init; pub const getContext = oc_ui_get_context; pub const setContext = oc_ui_set_context; - pub const processCEvent = oc_ui_process_event; - pub const endFrame = oc_ui_end_frame; - pub const draw = oc_ui_draw; - pub const setTheme = oc_ui_set_theme; + pub const processCEvent = oc_ui_process_event; pub fn beginFrame(size: Vec2, default_style: *Style) void { var default_style_and_mask = convertStyle(default_style); oc_ui_begin_frame(size, &default_style_and_mask.style, default_style_and_mask.mask); } + pub const endFrame = oc_ui_end_frame; + pub const draw = oc_ui_draw; + pub const setTheme = oc_ui_set_theme; + const StyleAndMaskInternal = struct { style: StyleInternal, mask: StyleMaskInternal, @@ -3192,7 +3191,7 @@ pub const ui = struct { accepted: bool, text: Str8, }; - extern fn oc_ui_text_box_str8(name: Str8, arena: Arena, text: Str8) TextBoxResultInternal; + extern fn oc_ui_text_box_str8(name: Str8, arena: *Arena, text: Str8) TextBoxResultInternal; const SelectPopupInfoInternal = extern struct { changed: bool, @@ -3269,7 +3268,7 @@ pub const ui = struct { text: []u8, }; - pub fn textBox(name: []const u8, arena: Arena, text: []const u8) TextBoxResult { + pub fn textBox(name: []const u8, arena: *Arena, text: []const u8) TextBoxResult { var result_internal = oc_ui_text_box_str8(Str8.fromSlice(name), arena, Str8.fromSlice(text)); return .{ .changed = result_internal.changed, -- 2.25.1