From 3961720ef0cb617deb6d13312314263dce8188d3 Mon Sep 17 00:00:00 2001 From: Nic Barker Date: Tue, 11 Feb 2025 17:11:03 +1300 Subject: [PATCH] [Core & Documentation] Cleanup public / private API and internal document public API via comments --- bindings/odin/clay-odin/linux/clay.a | Bin 171948 -> 171804 bytes bindings/odin/clay-odin/macos-arm64/clay.a | Bin 256088 -> 255904 bytes bindings/odin/clay-odin/macos/clay.a | Bin 142936 -> 142912 bytes bindings/odin/clay-odin/wasm/clay.o | Bin 261490 -> 261329 bytes bindings/odin/clay-odin/windows/clay.lib | Bin 173067 -> 172642 bytes clay.h | 251 +++++++++++++++--- .../build/clay/index.wasm | Bin 117847 -> 117823 bytes 7 files changed, 217 insertions(+), 34 deletions(-) diff --git a/bindings/odin/clay-odin/linux/clay.a b/bindings/odin/clay-odin/linux/clay.a index 6ae034a469495f3c77cad80e14f3051a2171e2b8..45ce5d9e9f154172f42a2547f420ed8b58c460de 100644 GIT binary patch delta 24514 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 delta 26114 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 diff --git a/bindings/odin/clay-odin/macos-arm64/clay.a b/bindings/odin/clay-odin/macos-arm64/clay.a index d87c76c89fb0a29938748d9b418b6524b45c3e98..848fab3c5c8c23bcf68b75628bd1465d416adab5 100644 GIT binary patch delta 58974 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 Y{lTk$>tDPu=>DCb2+p4JPfhav4{Cky2LJ#7 delta 59303 zcmb4M3!F{W_ur3m?%aFlUNd)?X}mJRaEGE&^g{A0CYAb?^!Sw`6cgnUVU9eCQe#3_ zrJ__q2t|`nsSM*ykwlRYB}ppP|GU=SXYNSp^PkUW&RKiy?^=89wby=}eI9qp+O#d} z(#F+v&pErC7oXEo?jFDXoGW6>Zo^}aUrY$m>TlTM(o!)(X3E1b{VbEig;fH&S51-c}_D&bW-q*{p$B)11yq2+P>kPMj zCBq#u{xxt9ePOtRt})yd<9|7?WzDa z`S_>LZ&|a!U52}}mf?zCiYu3Mmll5}*3Va!#|N9`)C`U?u$F@jZ0BPpon4@XG_X$1 zax$)9Ss^wV6Gg3*@sBoZ5zhhYJ+PXL(PGP)LZm`T2V34)oaw&_@)ytlp;?#Fi3VrO z==}5Edp0=!`ek3v-(Fg}s?Ok?`|s}Fqu+%&VsK8s-hKFdXYYRfdKZ9f-TVHocio>@ zGC^h~8b2jd7M4zw87lF4Lgu_RNxmYzEYYsAu6JSTMJPB}S*E5MG87fMUc1VaXpWq4 zT_jtirh-g$WV^~fEYbk{8fijAn?euJuF4jok_1GEwA$b`gGf3_r>3?58A}6Ch>To5 zRdzzYGI!xw&&cPb{5nzgtgP2{d^q?noUF7754Cw?#RJzr; zN|jJ#O{UVMa!+R}T{>IUGm10CFF_@ahUyGOLi{X34H85g zlOkmli2C9iYs0QcT@k4#Be_bXyx<|LkvM3x_C?|%k|!e#k@Yrm&K6(VoG&7cMFiog z&gHPa6AdI&J_n?^SR70jC84HV>vu%xJVQ94^9>OUH8Vs+s0(7$W4b_CrBnskLU?N- zy)twmLsp5y%Xg<$_9)PF2^FcCiw4 zMBOleaH~K^Qwl-eDpmw@#0Q~{uM&T`2;IcQhfc`5nW>M0p_lc_Uh z6}JmhXUQzLYmNh5jis0E-p!S2BC84=2eXH$FDskgQb$Ja5|M5)(p?GFvn@%iLFwuG zT9CcP1=2|u=S#O&Ps(YA(hGVK)g0|xC8Zz8d&L6u&3T~|j-mM?bebU?q532Ux|Z5M zrl)`|5?!e_w@UY>1C;eY=)0fw-6n%>Uv|^&s8_#K7rC8Ln+HxK>JHRqR1c!=#E3NJ zA)>mVGAT!(qTpUBkxFkK}Ctxq-pUPXsMJ}t(QtH(%plE;zr zDDWxVyC0JX^Jh2|Hv*rjp1p`7gK(h_9v7L2Q@q)TNYz6@>fJA&r%g2mpV4mmIiI4EyWb`3k2qicV(c7cuTs|E=qx>g(&=$ z+dz3@5y+YAiHQ-{eI4O~0RhyU^N4x})EjpawHS`qZGd}OOqNcLc-r^CGk_QmJPYUP z?tsh?3F$Nul7QiMdU#AZB1R(EvVw>L;Hps}EBJ!4uEL4$2I`Xy?DRCq31R{%5gj%{7V6g|m zl&wDmxk2n!7<|4|ZrTpY`3mE7X)pw8m%_T>8}L?$&+Oc}KC(DdGXpoChkB(7~jZr_0QHN3+#}fLW^3>F-dLrmg#J39Tq`k`B z#Dm^GsNBr`a6f9KK7EJqN8x~KdO67L;)p_Pf3MtE7<35mEiCwhN_V&NymVM)yPq8< zxgQmpbfz=y&^?Bt;Fxj-O++_ zq!xj6@rQDEK1Rtup<>s3qG;i5%~v|z-OcuBo$Y?Th_W4>Kou;o9F>%_u9f)~$aE>r*J$&z zbyg))g>z7C6U*mn$2AL$raG9FX0p%I5m6&1e~4b+x8-S=86UB!3Wr8-;G$dcDap`kt0*Ur2JWVRIf8lCxa zKgzCvk;Xr5q5Cw+u4<>#MGdd2e4K#S^fk_lk6%YT1f0%u=6T; z46CVU)~IC?3W>97SuSSetgTce&y1d(W3BUkc@JA}k}HR?+mctjY9 z^P??rB`zw1Y?d@HMMQ5Pb``LjC)uuu_9AvB*cT+(0TCSmwkNW{zc9%U38VZpurD%X zHpq(&Srz0ZMqdq(EutTh>T^N1OsY5?F+l95V7E%Lt0D%7eI3}B`fLx)CZeh7;NJj# zYoAY-#HKxN0sFEf*(TbYz}>+8PZAsz(QAm^6YR^A?69r-5U{T>HFyYQTchqNkY2m! zBP94V==`LhBcjg}`(3cFOtNc>=$ph|0(Sc(JI{LlL$I$h`aTAEb@VF&mx8<|3C30a z61q}b4R(j9$8EC~^tI8n7}y&?UYA5`TZ2!){;v_-3i5i>1_waiV94)4b~NN6kT)9g zFvw0u@eznXcAiJ5W7lQ0=$YCIRm;f0L^6uyZq-`X~d%UE&RAFoy1Ab3a;A0?r zCCLI4LXU%cuW8#NkiEGhiSZ!&7;XaOebH@H$Rv>WC(Ag)^g8i0*nP<&#Q(FP`x(LK zK=wD*y#R86v3VNE2aNw;1v$`k^BEuq8G~kle9%;NHpsyy1m}SqVgPS}9BOK}9Au%X z(#Ie@&y=w)RZkrzjTIX~KO{}4d;)s7G$notdW1Cbu@&@4X=FbKJxZGLw}XDz;&*_4 zL>ljW33{|NRr?zB7#aPQc4@r>NIWW&9;z#%8C8(+9r%w`;Ahyb_dWPyZNY~?KW>fw z8T1pjFcHyHi>wh6^f+rA(Z$vX4f;tL^>`$WATeGVUuA-xV3nQ@dZOjm2K|(b&L-pH zpc560t0#;{^T3~EjXMkU(^gLt(9hU{&jJ0cG~wDT;_0cAr3sbR$aqegaioET2@kU& zWjuk5mn&r4C8AFee{)n%eWe1wn~2UP{-@x-T7iF&sF^1}rktDf)akMsZQwMNDYa@e zl3x(_C8ejnCS$umS37{i1Sw{mK0)rp`oELTI@2sPZo(SqEJNOml}2N;2D$}HmL{?b zwwuMRSOm3{$B6u&&dK_ZY+4oMZMs2LTS+TJ(HYCkc4k3!hi;RVFL^1ycyI!ET*W#|FAiOlIH?<4#`-AdNlGlj@Ox`WKQTdpPg zLETyA^pt-PJy`dVIR)~}>Y#_{VKS$;ycM)3hU#%L=RWxuWfbZuGN-RBA==Y(Wln#& zkLY1~nap`WX4e2cT(6TkgJgT6N9dh0XRsVh^hkY3<_wi{h#rNFq#RG~BKl#Su5unS zHb0_sRL*dDT21gr>n18^q-Qe5=vFFcl%XHh9aPT4@=5|draP;g(S|=(_fa`x4E?ws zrg9#Y9$}u)<5bRAIiKhvJw@d_A-^GdoSv(4#>wiZgD%#~RL+w!pXev`Iwdj-5JWAc z@M_W}Ts4(-wj51iRUOxGW)rCfUBf*N-f7trC@1rI950a~n>J{xsH}73a%L-$b+P1Y z;4BrivZvwZNah-3UnE6_vb&ifRrOpcsy3Cf>Up^OIA7|j&1B-a1v1T32#_{X%vX*h zW~;1LCKBgB^`(ZKt7KMdL%yL@)@6pAhh62&7LdI{ie*%f#VYG^(|_Kjt5?3pTB00x zTNjGJrBtI@xQeQFAClL};2G7gl_|k$o`>X3Qq09Z&#c-VO_aYbYF{p2B(d4S+MVP~ zqUOL;BzmI^WyEOVoLPd@EfUx2C_JS7!b9cPM96Tr@r7YjrY*he$ zv>bl49F7ck8*djJCHP>#z3viQ+`yNW&xNmX%og+j~sU!Z!WDT{6ygIm)H#k zeqA{p-N(X_;cnwysdWTj4tPI_jb6Yvl*2ca!;#@`;|;3~1pg860TO$=9`KvW@tex= zn+VU_TAK)e28NS?Qfwsk8_VGv%i+jyw_QPF&PKpv)F(4LBKe^7cb)v^I#@1)?I`%a zd;=*e#B!@}tr$DB$S1#1JTnIVtwhS7_8j}$1zGT)$a)iV_0)*O>%d{z%L592S za*}C7GPLQCc>|Kz_is)z&C6w)m&+i-^|n1oLd{8tHas%NAo-ZY4I~JyD);oNa<3r+ zU5;c{k*8^r&3qTh$0fG9AXBZpplam>A;aDF70Fbia%f*H^9Ll0FbJ=pf>x9lw4%Hq zWVqY1Xw+Uo1<{^JW<4aap}mr1R+h_PII=;B40jukS1T!Mt_OU)6t&5&+U0iDF1HIA zp1X}Vn`*P85vc4+r{1W>A0}&eQk?J%}iGdMb=;Y3kUD<+XsZeSKhz@+23Ox;?RKhEi z;Atjzu3X08$x=KVp@t$b@*idk8UWnR(kP|Jt4cf;;gw}KTj zomDQEyU2#fOEf*w($a=VX~hsJwITAhtD(okOKidFXf3Z}!izM0FcZ)ea@LyJi3+m$|;y5CCc z+xKjpW)hgj9$U^z)i+rsBPnv!!Lntkh|Kd|P%o>a}gEeBJ; z8$BX-xwT_<63nh$sRo{G$A@wj+c5|0FQWi2Y3K>a}yHbwi zI?X3A%}b{Ouaa{a>@7&DW(Qc+x+oZcbB!XATV@S;Gl^#Bu2Qd@Y{+UmCcO3UhQz%! z91#uisEJ>g$Xjb$2e*n>`L6w&D%aCR*#Y?0H*%fz?IK#z(#4?-+p>zTEwip&FME*# zyaL>ME>pC~weBiYYm-$nq9S*L9K!Cx-RUw#o6)BNZ?xv)2DY!6U28R4*BU*Z$lYWt zDZpKBAI`olQ=3jUWV0+|L*D&&L*k#ve!w=AaIGm!h`dj&ZA(ZVmGEd%`_>)WliM#~6H>jvws)#~?Tjf^Df|Ct=iReF!mwCn%RXpy_k zPHXQcRkLrcYU^90N92BP4f!C6X4m3Dp1Zl6ejYlIu|(u&Hq@LkJt*aXepX?^<Di60Y~u7+$uYg9v9 zCDh1BirlYk{Z|l}?utV*jkZ3x$f5fC=v{WWElsK}5*5)wj0i@L$lY!2SeXQ~YuBhI zC)@G0oyk_6WQS+0=3(F15#J-*!?hT0)8SlOoXGpe4!32b;-qSn*8({-llfNewXR)F z7mBn2WL>+~cdbWL*;?z{eb!xT2u+uc*0*cbP02bLQIWgfhV5Dc)58X*0)J~mV_i}+ zhbT_lkND)_K2@aIP&*$d5{l(Vla{|*2 zhV|`w^=7h4MpESdYC~%~f!Diee`}SGX5aeg-)yh@BB`2v>w}92z_+9aJvR5awPQyT z%&uLpN=~-pcR8H~Td!cJG2~Qs#Q%_;ct|KNgl}zeBJWQ-s(eWr{<#+LMj>45TRBX% zrGg8-qTQMjFX`J26@9zG`t~8k%Y=emgr@x)>)Q=#SF%nz#@O4r(2f0;khXkWY`9{8xf|5plMNZA%uM#pzZ&9+_``~)G6$};g^9dJ z*f?3RmlXVSE&L(DH*&P~?LOM7qAhb9wi_$DcB6Ie7}XW^M@#G{G;Lnlf;OtyJ)EG` ztq~QukJ|cwOJLgHf@+$|d@#=-KKL;;iQD)Ep= zzTH&Ox0|eQi>&=_AsI88M%K#6L`Fu#SZu}shY#q zs)W3to|>gwR@S$hEBbb`_3hKPO2-IH8}_!K&8i^jTO%oQpRum} zg}}6@{}-^SzmI;_+W%`(HT%}8w!SrrMDAp3$ZttB`*yRs|71g+v#vdUq9Gp4I?3$# z^TxLU_|_IC@?NmE{Z0!0QVVWG>nwXw<{LT1y7mvcaX`1}tZVle*Lr3zZ;$ouRNEE* zBs4uwXbS>5StTPXa$mId$9oBT6g_fihXfzYLxK-}$qosUz(z9-2_8~LbrFpTMvusy zX6;Z(G`kj6IN6Su?U0~-`G2+}{z}Cm0i}5`8)L$&c1*xihswc0m!IxRBA>QN4^|A@gVwdLS#JdhOuPQo3_F#jP(D4H zY8&Ej!87e_5lpJ)u(e(9aJ+;Hsp0Xm4*M^koasflcgYR zZDAsBj(6_9Hg0_@=UU%J@M4joJJZ&;M=SdFsP*j|wn|X~(+xIT&`~uf zStBDUa_8A0p%Q^Tdam|V==rwWr6pCfZ>?(U+oOu~h};F%kn|*)U3*k5IN6XlF(hF8 zmj!r-z$o}o*ZsN+U~Z}l|x9I z?ftiHSFA!Tx}Rzb3hC|1Dj7*^-LjRkAd|rKu|3ka`qn5Cxr?nK zrzO$s+mQb1WJBJyVVC_chS2_de2Kahjn^;)-`c{kb*rX8pNV|Sf>Ji zU_+y3QZu{OYPPPeragX0Ja@T`+tZV9_H8wtezGAS+NrG8zZ(+&$b@Yet~Ewuu>IKD zmII#W`}S|D?EBUV=B}{5t*vl3jh?5lzO7x+x3#TrOKr5AL14PYX1!HgUy!U(ZS7IS zWAE11zYd}4`D>`A3tk`17iFd#k-N%H7Il-VdBX6)d{Ji9VCUA_Q7;K*&(_v0$PV0p zpf>hZuSS=kfXF4*sqKibQ57!AY;oATwUc3e((uo)Z9#TX6!@jbiKD#=3jbw?-0Mw>E6^2u$~qPXJ^6%?|L<8*OYfOseLF zu&Qm`8b#Q;wT3iGqS?8Pb+3~R*=)o1%!-D1Xym^!JN}7@Te?$b3&Y;6we2k8oluJt zD&dE%Z{!y1+QtgEx#`g&>)PhzTE724!)xs!Ku_(g!Gh6?& z2~4-op_-O1KA2ZvK6sm5ft{1oTqLOet{~3W4jHyroQ|? z+Y$ew;tH&}$7W+t*kL;r-kWbuar+O|Kn|_Id@FZa-=44V+yOn?g?w6pwW%1kZLDj* zwBBk)V0u;ouI2srHu{5Pos1~wf474 zs%GC>)z-I054LWtA(tl69JlTD(UT3q`qymKv?lba4T*ned>e&tZDH8DwYFVGynn8Q zKP31@9c&BoD%lFdisZcPW)HZ8CWQAK2qW(t`bJ) z-&6>CT*gof1nl z-M#V}U_dQJf?sjZeMlSm|0=Om(;XNqzf|)(>$$@UQo3 zZFcf*P~tsJJK=cfrLYvV*`OY2wRcqFeNCIW4YbGRzmL}{p*MGw9?0tPiG>d|ZJXKR zKhXRtcJ9M^0_S&9;zLb44$$AD6g0j63c7n5XnHFaZp((JKVrAht*npn2mrT%$bCdl zW+gY_9*p*kWKsG+BEroC8R?U8ZXkQ6$z1(6!VbI9jDFE z`adNaI%XkLl#QoJ8#;EOl8$FZ8+x2&qr8zrogiLp?JsihxaV0`VeXT<4{VbKw<&Rf zL$fzb?)(a9YksFv(ANA8X!{FU*;%@Htk+Ro!CLC;;?drECEEI_k)DUG^L7qh1OPeA z+bZ%o0px^2l-|=%9UF>=J$pH{4nW?ap?FfXfUQ94z>v*K47bRlN%|8dM);`-`coxF zI`n>QeO&~fC^5=Ujn!K*{y*#|M{B%k{fM8MtF|dIntcVq=?cyo!@i1-*P{_IDEC<5 zc1$~LMSOw|8s?Egj8)hBX74Tp`xZ{cC+a3_Me*LkofuMCnegII>AHqJsc?r9cd$Az z;t9PMUP0MAB;NL(=pZCTd=kB<3s)6wk?ll+^&+uOZW5CmewS3lpVqq}4(?vDNzAs~ zM$d5I$lkYOWN_>wdf8uM{(sM*M;8(E!LKNbzmJgntUiunWI<>2bB8W4Fb;GM97e)+ ztxo$v+s%mU!x9NISQfXXUe7HL2kkAKj&ASJMF5(@qe3{V&EEZl_$FC4!9L+0m& zyYVD}-)fWO*XUtMrx<@1biwCzT=F-K^ZP+3$G8+1V;t^3O||`(2f3h2eF5w7 z7j-L4FS4Mk66r3=9EdVwF7;0`0M=x(s#fv>?yVz*c#dAHVyTn%~8qL%_P^RpCml98KCGkk@A?$b}^*bDj)L!wOpF%Y6 z7VVH_>OV^_f=LL%b@-@(80Rj>)&>mD`9X%RQ^gy3;;i(>hqeNY2CdMUMS_?r?xy0mJD zzoBuB$Q~Vxfg~EB#S1K2F&J%;7N9N=pNCg{!1Q$S^1;=mhy{2qo3E!BM=u)u2Vyb6 zPr(DdKu@BO(nX{7pGve0&|Y2qO+A{yMI$xhrB#4>PW&xiApv=eKIC>OBY_gR3-u

i-sCe8js)M7&6Py!YtVcr~ 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 z zr>G-|_XmH$Ow(Wfp??R7$35kr9XA-9^OXPlxb~gL_4&VCupl=+Sg_Oo&VrQq;K7~# zCq#ar-~Z)`Zp(Ah+MR#c?DtLg?7Z_?f90CE<90ssmR}yf;JD8QfBB=|EUfzv|JeTx DnP$=N diff --git a/bindings/odin/clay-odin/macos/clay.a b/bindings/odin/clay-odin/macos/clay.a index c5b96ef8668cb9e88fca16c7263808e9262078b8..c5988c7ab8e5b675b731099e623322617cbeb6dc 100644 GIT binary patch delta 1519 zcmXw&e@vBC7{||Z03!xouFVB9`1@cH{i3^qM)Ya-Fh%si{MV^ocYC(ccltY?r|p$ZR-I6^E9isO~+g?<8C)f#r6hv-+m zwBQeFH*yM_h$kJ;Hy1u*OcpiQQn|7B+}U+T$~8{E3zBFH@%|0fj*%+k#mqPQ`8(jNRM;+!i;aGQ$%G#4^RzX(9Aml zs^%0iOIs+ANmU|xp0eqz`R94Mlxlu{nS5M~^^lX8xzt0kyx@`d8S^ui`vy1#E}mfQ z2k;;8CB`y81AhYB!Czp{0@1FuHpRIP#Afzp2GJ;rjN$3TsOEVmXDS#bd(I*GBBJM(k4 zr9;Z!qja~@Th>|rUZr;ZFM9 z&r%*Windt_t_dHqVoNtzYZn4y%^dYmrHIZ^7GG!27glo;rD` zMeMjsEtDvtcPVejxH{%Z^ja3KeR#k1tPLMr>JYxEd_w50)ZIHR{q9OJO(K7RCMhJG zi#Wg@vt*HM@#GTzB?{WNt1mf$MY0Vw;&+&_ciladvT#Vu+@t5IR+KE$7!_T0@*z$G lVw&?V>J_Ks_%iaIj^{(pGS$D2)wY#N*C}0Ywk7ak*Z(LkXTksg delta 1473 zcmXxje@v8h90&04=gVQh$h)g<2?jhDnSe3wxE}~@N`H{ET!gFCmW8ecGzuz2;DAFz zfri3*+`c;J(0(jwj=?VWplyb&KftxvY>kUy@&`@Uz<}e2*pS{|p0Bsv^Sbxv`*}Xk z_nv3Z;CM`UJf<@#I@_J&bM-y@pUa6~UZ1AiyCd)c3tY2~$(yTt`9;L88oLxe#y4$mpCiPD|yX@t)X18WGvu1tRv(wS8s`0A& z4Q6uvCEsR!yH}%L{eZVH;jHS(S3SMxiNfzr{f0Lup?8qjCM1rpbO`xHT&gBy_j!o! z>jnNvx)jRDsU^Pkh`udncj(^sx?(B~m7P12sIUG|Lo<4He;STm{mC>Jy54`-g5bP% z0mq-N?V;&V{Ey{P_DRMfR{M#x)wQ*V)fRnqGSqgxnL?`}P9f{y%Q18}^wv<*K_1s; zgtyRCA;0MtKOdp@_-B5RS`8EZqPd#BrACo)l&;WU#^_Ocfz$7XrH)P$eIWDz?dJ}+ zF%zJDoNgNhjTA_t3UT8+rBa{q_j&5JJrmGAEh{Ol%F|dttE#A6_i#m3RmDennsMq1 z`MLO|hcsiVhi0>aC0{VM!dT`W_$p+u1J1Xt->sy(%5mi_Cgp7ni=~N^{?Ot7G#cqD!jQ~V2*Ss8;#Fp19O~& zr*XmoDC;xF8OuPv17$9Ta>IToH25U)fi*%=csmp^{qywrfo z8&rFxXhSP*~(HP!@HHvIPo0(OYkxTkxEDuB~1?SfCy%72S)tge@R$E>e#( zUyUrEPSf)nOME5dfaaJeBmT~1q@nD&fxvfql-luzXS;VfO z+GM1!kkvx@B6pR7_WkMsOyeQQ8&)ZXQO2m<4>8%+AjTfjYg8lB*XRzt-XF_HI8BH@ lIq#w&Q5(hAFt^siN1Vm#Zhfu(QmM*^RDRzmi{_(g{{uQbZ&UyP diff --git a/bindings/odin/clay-odin/wasm/clay.o b/bindings/odin/clay-odin/wasm/clay.o index 24a5132c7f5780b04c28243df0c6f7f020b6bd80..5b8178bce8bc4a44b62686e10d2dd941019b3e29 100644 GIT binary patch delta 2248 zcmZ9Mc~DeW7RK*A=iP1^8W$D?j1x$yIEs`=RL0cAU}`2w#TcWhQKN}r0tSuC1PLic z0i&`=!VU8pZB(}KGKv_H;Ao05BV@>EL^fd@nq8J=(K)xRsiLO;IKTUy^WAgL zyRWppLxu6pF0;y zOMb*@z^hZ5MHw$GN!MK=ad4eMTW8?Ay|q>AID&R_DQ|P(ceKLQJX5E=vw=^Z%1hON zZTx>-=TX;rOTdM?&Uc?rUA4?@{EZS`tF_Mr6B1KAAXiWH`z-`3#8V5vAZhY}>$1LU zF@ylIc`1xa-S84zvL&Yf5z2JL)o;Njx&QpT5Gb|7MsVQ7*_$AT{OZlkFh;2U5aOge z0P3WB_Exw{)v_IsDP>kDyeFGmJ_jy2x)%y13nCy@4iW=U>|fgfaZuQ-_MOnf;D z{w96;YS<*#PilV+rpt%h@KwuFL)F>!Dc?U%C(3 z@=_XFV3pjrpdFq_zgIV$k^Y~1AWF{jrvYe?dhrmb(pNL`tiR0|bV&X9DZDTHtkI$M z+^_Wb2M%>qhi{7tTQFQ^IO zI8EIbj+1DT_;8#vrOVaMur45E=hmGc?+OD;q*k|Es&R&?9@X6=QV`5^_8O{t76TWBv&++0pt)T#Kawngq z7dYE8(d&0nyL^c6{GU;hz-Puf2*bGxthU zUB6P#mG1|X5zcg12NmX2HK^#=@Tl^Dv(7Q4kt+wsl~K-E#<()T*_|&$Bvo!46pfr^ z#0pv`#>sW@5pkEZw0OC`7cZu<^9jP4l_!W)&YF^FS(Pk$x$^DTVvJ6@lOmW?eTvYr z@>JohoJjP+C)EUH%^?S2*V}u#!Q}UeI zI^%6Kt|v9O6aP$z@5G&ikxqP<@OGEg653_$dAf`KFD&YuZmU|~jrF7!_TZa@eLWaN zXzsz=gyLTOmJr;B9}sTzVF#h4A73W)_2VJJ=a1!8s#TA1FJbwBwdbb;*4p3z-lF8S zL2I&q5WV05s2)Q&eMTd_)aWGR5NEfNj4{BXl4-4^CL5bTT|0z+{E+(P5IyB#wPpyP zrzV|4=<6Acj6KRW(iiYZt}%?|M$rF4fel|aKIIr)Zu|-vo+vja zsDH6wtE*I%_l*h2xT(R&SmguiQTxD{rtTQQy^it+Q*E-R=G}$%VeD{`J-vkyTxgSy zOu12JpP?-pMPF_s+Z?E|Pf&M^;fp*$%^pJ^R}(TZ=6sQ2%5#MjtDY;OI5@LdHIHHR Fe*u@|PNe_< delta 2377 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 OUZ6&5wfTWxoc{yH_p3z! delta 23119 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 diff --git a/clay.h b/clay.h index 0326a8a..bf3bd04 100644 --- a/clay.h +++ b/clay.h @@ -482,190 +482,373 @@ typedef struct { CLAY__WRAPPER_STRUCT(Clay_BorderElementConfig); +// Render Command Data ----------------------------- + +// Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_TEXT typedef struct { + // A string slice containing the text to be rendered. + // Note: this is not guaranteed to be null terminated. Clay_StringSlice stringContents; + // Conventionally represented as 0-255 for each channel, but interpretation is up to the renderer. Clay_Color textColor; + // An integer representing the font to use to render this text, transparently passed through from the text declaration. uint16_t fontId; uint16_t fontSize; + // Specifies the extra whitespace gap in pixels between each character. uint16_t letterSpacing; + // The height of the bounding box for this line of text. uint16_t lineHeight; } Clay_TextRenderData; +// Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_RECTANGLE typedef struct { + // The solid background color to fill this rectangle with. Conventionally represented as 0-255 for each channel, but interpretation is up to the renderer. Clay_Color backgroundColor; + // Controls the "radius", or corner rounding of elements, including rectangles, borders and images. + // The rounding is determined by drawing a circle inset into the element corner by (radius, radius) pixels. Clay_CornerRadius cornerRadius; } Clay_RectangleRenderData; +// Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_IMAGE typedef struct { + // The tint color for this image. Note that the default value is 0,0,0,0 and should likely be interpreted + // as "untinted". + // Conventionally represented as 0-255 for each channel, but interpretation is up to the renderer. Clay_Color backgroundColor; + // Controls the "radius", or corner rounding of this image. + // The rounding is determined by drawing a circle inset into the element corner by (radius, radius) pixels. Clay_CornerRadius cornerRadius; + // The original dimensions of the source image, used to control aspect ratio. Clay_Dimensions sourceDimensions; + // A pointer transparently passed through from the original element definition, typically used to represent image data. void* imageData; } Clay_ImageRenderData; +// Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_CUSTOM typedef struct { + // Passed through from .backgroundColor in the original element declaration. + // Conventionally represented as 0-255 for each channel, but interpretation is up to the renderer. Clay_Color backgroundColor; + // Controls the "radius", or corner rounding of this custom element. + // The rounding is determined by drawing a circle inset into the element corner by (radius, radius) pixels. Clay_CornerRadius cornerRadius; + // A pointer transparently passed through from the original element definition. void* customData; } Clay_CustomRenderData; +// Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_SCISSOR_START || commandType == CLAY_RENDER_COMMAND_TYPE_SCISSOR_END typedef struct { bool horizontal; bool vertical; } Clay_ScrollRenderData; +// Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_BORDER typedef struct { + // Controls a shared color for all this element's borders. + // Conventionally represented as 0-255 for each channel, but interpretation is up to the renderer. Clay_Color color; + // Specifies the "radius", or corner rounding of this border element. + // The rounding is determined by drawing a circle inset into the element corner by (radius, radius) pixels. Clay_CornerRadius cornerRadius; + // Controls individual border side widths. Clay_BorderWidth width; } Clay_BorderRenderData; +// A struct union containing data specific to this command's .commandType typedef union { + // Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_RECTANGLE Clay_RectangleRenderData rectangle; + // Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_TEXT Clay_TextRenderData text; + // Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_IMAGE Clay_ImageRenderData image; + // Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_CUSTOM Clay_CustomRenderData custom; + // Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_BORDER Clay_BorderRenderData border; + // Render command data when commandType == CLAY_RENDER_COMMAND_TYPE_SCROLL Clay_ScrollRenderData scroll; } Clay_RenderData; // Miscellaneous Structs & Enums --------------------------------- + +// Data representing the current internal state of a scrolling element. typedef struct { // Note: This is a pointer to the real internal scroll position, mutating it may cause a change in final layout. // Intended for use with external functionality that modifies scroll position, such as scroll bars or auto scrolling. Clay_Vector2 *scrollPosition; + // The bounding box of the scroll element. Clay_Dimensions scrollContainerDimensions; + // The outer dimensions of the inner scroll container content, including the padding of the parent scroll container. Clay_Dimensions contentDimensions; + // The config that was originally passed to the scroll element. Clay_ScrollElementConfig config; // Indicates whether an actual scroll container matched the provided ID or if the default struct was returned. bool found; } Clay_ScrollContainerData; -typedef struct -{ +// Bounding box and other data for a specific UI element. +typedef struct { + // The rectangle that encloses this UI element, with the position relative to the root of the layout. Clay_BoundingBox boundingBox; // Indicates whether an actual Element matched the provided ID or if the default struct was returned. bool found; } Clay_ElementData; +// Used by renderers to determine specific handling for each render command. typedef CLAY_PACKED_ENUM { + // This command type should be skipped. CLAY_RENDER_COMMAND_TYPE_NONE, + // The renderer should draw a solid color rectangle. CLAY_RENDER_COMMAND_TYPE_RECTANGLE, + // The renderer should draw a colored border inset into the bounding box. CLAY_RENDER_COMMAND_TYPE_BORDER, + // The renderer should draw text. CLAY_RENDER_COMMAND_TYPE_TEXT, + // The renderer should draw an image. CLAY_RENDER_COMMAND_TYPE_IMAGE, + // The renderer should begin clipping all future draw commands, only rendering content that falls within the provided boundingBox. CLAY_RENDER_COMMAND_TYPE_SCISSOR_START, + // The renderer should finish any previously active clipping, and begin rendering elements in full again. CLAY_RENDER_COMMAND_TYPE_SCISSOR_END, + // The renderer should provide a custom implementation for handling this render command based on its .customData CLAY_RENDER_COMMAND_TYPE_CUSTOM, } Clay_RenderCommandType; typedef struct { + // A rectangular box that fully encloses this UI element, with the position relative to the root of the layout. Clay_BoundingBox boundingBox; + // A struct union containing data specific to this command's commandType. Clay_RenderData renderData; - // A pointer passed through from the element declaration + // A pointer transparently passed through from the original element declaration. void *userData; + // The id of this element, transparently passed through from the original element declaration. uint32_t id; + // The z order required for drawing this command correctly. + // Note: the render command array is already sorted in ascending order, and will produce correct results if drawn in naive order. + // This field is intended for use in batching renderers for improved performance. int16_t zIndex; + // Specifies how to handle rendering of this command. + // CLAY_RENDER_COMMAND_TYPE_RECTANGLE - The renderer should draw a solid color rectangle. + // CLAY_RENDER_COMMAND_TYPE_BORDER - The renderer should draw a colored border inset into the bounding box. + // CLAY_RENDER_COMMAND_TYPE_TEXT - The renderer should draw text. + // CLAY_RENDER_COMMAND_TYPE_IMAGE - The renderer should draw an image. + // CLAY_RENDER_COMMAND_TYPE_SCISSOR_START - The renderer should begin clipping all future draw commands, only rendering content that falls within the provided boundingBox. + // CLAY_RENDER_COMMAND_TYPE_SCISSOR_END - The renderer should finish any previously active clipping, and begin rendering elements in full again. + // CLAY_RENDER_COMMAND_TYPE_CUSTOM - The renderer should provide a custom implementation for handling this render command based on its .customData Clay_RenderCommandType commandType; } Clay_RenderCommand; +// A sized array of render commands. typedef struct { + // The underlying max capacity of the array, not necessarily all initialized. int32_t capacity; + // The number of initialized elements in this array. Used for loops and iteration. int32_t length; + // A pointer to the first element in the internal array. Clay_RenderCommand* internalArray; } Clay_RenderCommandArray; +// Represents the current state of interaction with clay this frame. typedef CLAY_PACKED_ENUM { + // A left mouse click, or touch occurred this frame. CLAY_POINTER_DATA_PRESSED_THIS_FRAME, + // The left mouse button click or touch happened at some point in the past, and is still currently held down this frame. CLAY_POINTER_DATA_PRESSED, + // The left mouse button click or touch was released this frame. CLAY_POINTER_DATA_RELEASED_THIS_FRAME, + // The left mouse button click or touch is not currently down / was released at some point in the past. CLAY_POINTER_DATA_RELEASED, } Clay_PointerDataInteractionState; +// Information on the current state of pointer interactions this frame. typedef struct { + // The position of the mouse / touch / pointer relative to the root of the layout. Clay_Vector2 position; + // Represents the current state of interaction with clay this frame. + // CLAY_POINTER_DATA_PRESSED_THIS_FRAME - A left mouse click, or touch occurred this frame. + // CLAY_POINTER_DATA_PRESSED - The left mouse button click or touch happened at some point in the past, and is still currently held down this frame. + // CLAY_POINTER_DATA_RELEASED_THIS_FRAME - The left mouse button click or touch was released this frame. + // CLAY_POINTER_DATA_RELEASED - The left mouse button click or touch is not currently down / was released at some point in the past. Clay_PointerDataInteractionState state; } Clay_PointerData; typedef struct { - Clay_ElementId id; // Primarily created via the CLAY_ID(), CLAY_IDI(), CLAY_ID_LOCAL() and CLAY_IDI_LOCAL() macros. Represents a hashed string ID used for identifying and finding specific clay UI elements, required by functions such as Clay_PointerOver() and Clay_GetElementData(). - Clay_LayoutConfig layout; // Controls various settings that affect the size and position of an element, as well as the sizes and positions of any child elements. - Clay_Color backgroundColor; // Controls the background color of the resulting element. By convention specified as 0-255, but interpretation is up to the renderer. If no other config is specified, .backgroundColor will generate a RECTANGLE render command, otherwise it will be passed as a property to IMAGE or CUSTOM render commands. - Clay_CornerRadius cornerRadius; // Controls the "radius", or corner rounding of elements, including rectangles, borders and images. - Clay_ImageElementConfig image; // Controls settings related to image elements. + // Primarily created via the CLAY_ID(), CLAY_IDI(), CLAY_ID_LOCAL() and CLAY_IDI_LOCAL() macros. + // Represents a hashed string ID used for identifying and finding specific clay UI elements, required by functions such as Clay_PointerOver() and Clay_GetElementData(). + Clay_ElementId id; + // Controls various settings that affect the size and position of an element, as well as the sizes and positions of any child elements. + Clay_LayoutConfig layout; + // Controls the background color of the resulting element. + // By convention specified as 0-255, but interpretation is up to the renderer. + // If no other config is specified, .backgroundColor will generate a RECTANGLE render command, otherwise it will be passed as a property to IMAGE or CUSTOM render commands. + Clay_Color backgroundColor; + // Controls the "radius", or corner rounding of elements, including rectangles, borders and images. + Clay_CornerRadius cornerRadius; + // Controls settings related to image elements. + Clay_ImageElementConfig image; // Controls whether and how an element "floats", which means it layers over the top of other elements in z order, and doesn't affect the position and size of siblings or parent elements. // Note: in order to activate floating, .floating.attachTo must be set to something other than the default value. Clay_FloatingElementConfig floating; - Clay_CustomElementConfig custom; // Used to create CUSTOM render commands, usually to render element types not supported by Clay. - Clay_ScrollElementConfig scroll; // Controls whether an element should clip its contents and allow scrolling rather than expanding to contain them. - Clay_BorderElementConfig border; // Controls settings related to element borders, and will generate BORDER render commands. - void *userData; // A pointer that will be transparently passed through to resulting render commands. + // Used to create CUSTOM render commands, usually to render element types not supported by Clay. + Clay_CustomElementConfig custom; + // Controls whether an element should clip its contents and allow scrolling rather than expanding to contain them. + Clay_ScrollElementConfig scroll; + // Controls settings related to element borders, and will generate BORDER render commands. + Clay_BorderElementConfig border; + // A pointer that will be transparently passed through to resulting render commands. + void *userData; } Clay_ElementDeclaration; CLAY__WRAPPER_STRUCT(Clay_ElementDeclaration); +// Represents the type of error clay encountered while computing layout. typedef CLAY_PACKED_ENUM { + // A text measurement function wasn't provided using Clay_SetMeasureTextFunction(), or the provided function was null. CLAY_ERROR_TYPE_TEXT_MEASUREMENT_FUNCTION_NOT_PROVIDED, + // Clay attempted to allocate its internal data structures but ran out of space. + // The arena passed to Clay_Initialize was created with a capacity smaller than that required by Clay_MinMemorySize(). CLAY_ERROR_TYPE_ARENA_CAPACITY_EXCEEDED, + // Clay ran out of capacity in its internal array for storing elements. This limit can be increased with Clay_SetMaxElementCount(). CLAY_ERROR_TYPE_ELEMENTS_CAPACITY_EXCEEDED, + // Clay ran out of capacity in its internal array for storing elements. This limit can be increased with Clay_SetMaxMeasureTextCacheWordCount(). CLAY_ERROR_TYPE_TEXT_MEASUREMENT_CAPACITY_EXCEEDED, + // Two elements were declared with exactly the same ID within one layout. CLAY_ERROR_TYPE_DUPLICATE_ID, + // A floating element was declared using CLAY_ATTACH_TO_ELEMENT_ID and either an invalid .parentId was provided or no element with the provided .parentId was found. CLAY_ERROR_TYPE_FLOATING_CONTAINER_PARENT_NOT_FOUND, + // An element was declared that using CLAY_SIZING_PERCENT but the percentage value was over 1. Percentage values are expected to be in the 0-1 range. CLAY_ERROR_TYPE_PERCENTAGE_OVER_1, + // Clay encountered an internal error. It would be wonderful if you could report this so we can fix it! CLAY_ERROR_TYPE_INTERNAL_ERROR, } Clay_ErrorType; +// Data to identify the error that clay has encountered. typedef struct { + // Represents the type of error clay encountered while computing layout. + // CLAY_ERROR_TYPE_TEXT_MEASUREMENT_FUNCTION_NOT_PROVIDED - A text measurement function wasn't provided using Clay_SetMeasureTextFunction(), or the provided function was null. + // CLAY_ERROR_TYPE_ARENA_CAPACITY_EXCEEDED - Clay attempted to allocate its internal data structures but ran out of space. The arena passed to Clay_Initialize was created with a capacity smaller than that required by Clay_MinMemorySize(). + // CLAY_ERROR_TYPE_ELEMENTS_CAPACITY_EXCEEDED - Clay ran out of capacity in its internal array for storing elements. This limit can be increased with Clay_SetMaxElementCount(). + // CLAY_ERROR_TYPE_TEXT_MEASUREMENT_CAPACITY_EXCEEDED - Clay ran out of capacity in its internal array for storing elements. This limit can be increased with Clay_SetMaxMeasureTextCacheWordCount(). + // CLAY_ERROR_TYPE_DUPLICATE_ID - Two elements were declared with exactly the same ID within one layout. + // CLAY_ERROR_TYPE_FLOATING_CONTAINER_PARENT_NOT_FOUND - A floating element was declared using CLAY_ATTACH_TO_ELEMENT_ID and either an invalid .parentId was provided or no element with the provided .parentId was found. + // CLAY_ERROR_TYPE_PERCENTAGE_OVER_1 - An element was declared that using CLAY_SIZING_PERCENT but the percentage value was over 1. Percentage values are expected to be in the 0-1 range. + // CLAY_ERROR_TYPE_INTERNAL_ERROR - Clay encountered an internal error. It would be wonderful if you could report this so we can fix it! Clay_ErrorType errorType; + // A string containing human-readable error text that explains the error in more detail. Clay_String errorText; + // A transparent pointer passed through from when the error handler was first provided. void *userData; } Clay_ErrorData; +// A wrapper struct around Clay's error handler function. typedef struct { + // A user provided function to call when Clay encounters an error during layout. void (*errorHandlerFunction)(Clay_ErrorData errorText); + // A pointer that will be transparently passed through to the error handler when it is called. void *userData; } Clay_ErrorHandler; // Function Forward Declarations --------------------------------- -// Public API functions --- + +// Public API functions ------------------------------------------ + +// Returns the size, in bytes, of the minimum amount of memory Clay requires to operate at its current settings. uint32_t Clay_MinMemorySize(void); -Clay_Arena Clay_CreateArenaWithCapacityAndMemory(uint32_t capacity, void *offset); +// Creates an arena for clay to use for its internal allocations, given a certain capacity in bytes and a pointer to an allocation of at least that size. +// Intended to be used with Clay_MinMemorySize in the following way: +// uint32_t minMemoryRequired = Clay_MinMemorySize(); +// Clay_Arena clayMemory = Clay_CreateArenaWithCapacityAndMemory(minMemoryRequired, malloc(minMemoryRequired)); +Clay_Arena Clay_CreateArenaWithCapacityAndMemory(uint32_t capacity, void *memory); +// Sets the state of the "pointer" (i.e. the mouse or touch) in Clay's internal data. Used for detecting and responding to mouse events in the debug view, +// as well as for Clay_Hovered() and scroll element handling. void Clay_SetPointerState(Clay_Vector2 position, bool pointerDown); +// Initialize Clay's internal arena and setup required data before layout can begin. Only needs to be called once. +// - arena can be created using Clay_CreateArenaWithCapacityAndMemory() +// - layoutDimensions are the initial bounding dimensions of the layout (i.e. the screen width and height for a full screen layout) +// - errorHandler is used by Clay to inform you if something has gone wrong in configuration or layout. Clay_Context* Clay_Initialize(Clay_Arena arena, Clay_Dimensions layoutDimensions, Clay_ErrorHandler errorHandler); +// Returns the Context that clay is currently using. Used when using multiple instances of clay simultaneously. Clay_Context* Clay_GetCurrentContext(void); +// Sets the context that clay will use to compute the layout. +// Used to restore a context saved from Clay_GetCurrentContext when using multiple instances of clay simultaneously. void Clay_SetCurrentContext(Clay_Context* context); +// Updates the state of Clay's internal scroll data, updating scroll content positions if scrollDelta is non zero, and progressing momentum scrolling. +// - enableDragScrolling when set to true will enable mobile device like "touch drag" scroll of scroll containers, including momentum scrolling after the touch has ended. +// - scrollDelta is the amount to scroll this frame on each axis in pixels. +// - deltaTime is the time in seconds since the last "frame" (scroll update) void Clay_UpdateScrollContainers(bool enableDragScrolling, Clay_Vector2 scrollDelta, float deltaTime); +// Updates the layout dimensions in response to the window or outer container being resized. void Clay_SetLayoutDimensions(Clay_Dimensions dimensions); +// Called before starting any layout declarations. void Clay_BeginLayout(void); +// Called when all layout declarations are finished. +// Computes the layout and generates and returns the array of render commands to draw. Clay_RenderCommandArray Clay_EndLayout(void); +// Calculates a hash ID from the given idString. +// Generally only used for dynamic strings when CLAY_ID("stringLiteral") can't be used. Clay_ElementId Clay_GetElementId(Clay_String idString); +// Calculates a hash ID from the given idString and index. +// - index is used to avoid constructing dynamic ID strings in loops. +// Generally only used for dynamic strings when CLAY_IDI("stringLiteral", index) can't be used. Clay_ElementId Clay_GetElementIdWithIndex(Clay_String idString, uint32_t index); -Clay_ElementData Clay_GetElementData (Clay_ElementId id); +// Returns layout data such as the final calculated bounding box for an element with a given ID. +// The returned Clay_ElementData contains a `found` bool that will be true if an element with the provided ID was found. +// This ID can be calculated either with CLAY_ID() for string literal IDs, or Clay_GetElementId for dynamic strings. +Clay_ElementData Clay_GetElementData(Clay_ElementId id); +// Returns true if the pointer position provided by Clay_SetPointerState is within the current element's bounding box. +// Works during element declaration, e.g. CLAY({ .backgroundColor = Clay_Hovered() ? BLUE : RED }); bool Clay_Hovered(void); +// Bind a callback that will be called when the pointer position provided by Clay_SetPointerState is within the current element's bounding box. +// - onHoverFunction is a function pointer to a user defined function. +// - userData is a pointer that will be transparently passed through when the onHoverFunction is called. void Clay_OnHover(void (*onHoverFunction)(Clay_ElementId elementId, Clay_PointerData pointerData, intptr_t userData), intptr_t userData); +// An imperative function that returns true if the pointer position provided by Clay_SetPointerState is within the element with the provided ID's bounding box. +// This ID can be calculated either with CLAY_ID() for string literal IDs, or Clay_GetElementId for dynamic strings. bool Clay_PointerOver(Clay_ElementId elementId); +// Returns data representing the state of the scrolling element with the provided ID. +// The returned Clay_ScrollContainerData contains a `found` bool that will be true if a scroll element was found with the provided ID. +// An imperative function that returns true if the pointer position provided by Clay_SetPointerState is within the element with the provided ID's bounding box. +// This ID can be calculated either with CLAY_ID() for string literal IDs, or Clay_GetElementId for dynamic strings. Clay_ScrollContainerData Clay_GetScrollContainerData(Clay_ElementId id); -Clay_TextElementConfig * Clay__StoreTextElementConfig(Clay_TextElementConfig config); +// Binds a callback function that Clay will call to determine the dimensions of a given string slice. +// - measureTextFunction is a user provided function that adheres to the interface Clay_Dimensions (Clay_StringSlice text, Clay_TextElementConfig *config, void *userData); +// - userData is a pointer that will be transparently passed through when the measureTextFunction is called. void Clay_SetMeasureTextFunction(Clay_Dimensions (*measureTextFunction)(Clay_StringSlice text, Clay_TextElementConfig *config, void *userData), void *userData); +// Experimental - Used in cases where Clay needs to integrate with a system that manages its own scrolling containers externally. +// Please reach out if you plan to use this function, as it may be subject to change. void Clay_SetQueryScrollOffsetFunction(Clay_Vector2 (*queryScrollOffsetFunction)(uint32_t elementId, void *userData), void *userData); +// A bounds-checked "get" function for the Clay_RenderCommandArray returned from Clay_EndLayout(). Clay_RenderCommand * Clay_RenderCommandArray_Get(Clay_RenderCommandArray* array, int32_t index); +// Enables and disables Clay's internal debug tools. +// This state is retained and does not need to be set each frame. void Clay_SetDebugModeEnabled(bool enabled); +// Returns true if Clay's internal debug tools are currently enabled. bool Clay_IsDebugModeEnabled(void); +// Enables and disables visibility culling. By default, Clay will not generate render commands for elements whose bounding box is entirely outside the screen. void Clay_SetCullingEnabled(bool enabled); +// Returns the maximum number of UI elements supported by Clay's current configuration. int32_t Clay_GetMaxElementCount(void); +// Modifies the maximum number of UI elements supported by Clay's current configuration. +// This may require reallocating additional memory, and re-calling Clay_Initialize(); void Clay_SetMaxElementCount(int32_t maxElementCount); +// Returns the maximum number of measured "words" (whitespace seperated runs of characters) that Clay can store in its internal text measurement cache. int32_t Clay_GetMaxMeasureTextCacheWordCount(void); +// Modifies the maximum number of measured "words" (whitespace seperated runs of characters) that Clay can store in its internal text measurement cache. +// This may require reallocating additional memory, and re-calling Clay_Initialize(); void Clay_SetMaxMeasureTextCacheWordCount(int32_t maxMeasureTextCacheWordCount); +// Resets Clay's internal text measurement cache, useful if memory to represent strings is being re-used. +// Similar behaviour can be achieved on an individual text element level by using Clay_TextElementConfig.hashStringContents void Clay_ResetMeasureTextCache(void); -// Internal API functions required by macros +// Internal API functions required by macros ---------------------- + void Clay__OpenElement(void); void Clay__ConfigureOpenElement(const Clay_ElementDeclaration config); void Clay__CloseElement(void); -Clay_LayoutConfig * Clay__StoreLayoutConfig(Clay_LayoutConfig config); -Clay_ElementId Clay__AttachId(Clay_ElementId id); Clay_ElementId Clay__HashString(Clay_String key, uint32_t offset, uint32_t seed); void Clay__OpenTextElement(Clay_String text, Clay_TextElementConfig *textConfig); +Clay_TextElementConfig *Clay__StoreTextElementConfig(Clay_TextElementConfig config); uint32_t Clay__GetParentElementId(void); extern Clay_Color Clay__debugViewHighlightColor; @@ -1613,6 +1796,19 @@ void Clay__OpenTextElement(Clay_String text, Clay_TextElementConfig *textConfig) parentElement->childrenOrTextContent.children.length++; } +Clay_ElementId Clay__AttachId(Clay_ElementId elementId) { + Clay_Context* context = Clay_GetCurrentContext(); + if (context->booleanWarnings.maxElementsExceeded) { + return Clay_ElementId_DEFAULT; + } + Clay_LayoutElement *openLayoutElement = Clay__GetOpenLayoutElement(); + uint32_t idAlias = openLayoutElement->id; + openLayoutElement->id = elementId.id; + Clay__AddHashMapItem(elementId, openLayoutElement, idAlias); + Clay__StringArray_Add(&context->layoutElementIdStrings, elementId.stringId); + return elementId; +} + void Clay__ConfigureOpenElement(const Clay_ElementDeclaration declaration) { Clay_Context* context = Clay_GetCurrentContext(); Clay_LayoutElement *openLayoutElement = Clay__GetOpenLayoutElement(); @@ -2651,19 +2847,6 @@ void Clay__CalculateFinalLayout(void) { } } -Clay_ElementId Clay__AttachId(Clay_ElementId elementId) { - Clay_Context* context = Clay_GetCurrentContext(); - if (context->booleanWarnings.maxElementsExceeded) { - return Clay_ElementId_DEFAULT; - } - Clay_LayoutElement *openLayoutElement = Clay__GetOpenLayoutElement(); - uint32_t idAlias = openLayoutElement->id; - openLayoutElement->id = elementId.id; - Clay__AddHashMapItem(elementId, openLayoutElement, idAlias); - Clay__StringArray_Add(&context->layoutElementIdStrings, elementId.stringId); - return elementId; -} - #pragma region DebugTools Clay_Color CLAY__DEBUGVIEW_COLOR_1 = {58, 56, 52, 255}; Clay_Color CLAY__DEBUGVIEW_COLOR_2 = {62, 60, 58, 255}; @@ -3361,10 +3544,10 @@ uint32_t Clay_MinMemorySize(void) { } CLAY_WASM_EXPORT("Clay_CreateArenaWithCapacityAndMemory") -Clay_Arena Clay_CreateArenaWithCapacityAndMemory(uint32_t capacity, void *offset) { +Clay_Arena Clay_CreateArenaWithCapacityAndMemory(uint32_t capacity, void *memory) { Clay_Arena arena = { .capacity = capacity, - .memory = (char *)offset + .memory = (char *)memory }; return arena; } diff --git a/examples/clay-official-website/build/clay/index.wasm b/examples/clay-official-website/build/clay/index.wasm index 75af79303e654f9a4809f2a56d1ebdb1f007c09b..e406707172fd967ab1aef805c39ce43d2b602868 100755 GIT binary patch delta 14028 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 Mz@K(he;!W!Kl`}kHvj+t delta 14022 zcmcgTdt6l2*0av=(m@~v1_5OT5fueR6cAAu$dG&>nyBF`H6P?#%Wfi!`3RK|-RQ;y zgVZEL9T*K%N_-V2DcSX^Sw70!t+c{EOX`|_YwtNTaK_<`-@U)z#~)|*UVELj*K4n} z_TGnMh0d1>o%25u6waG!N4VYi&_R{0(B(w4=MAGDOi+S>yzH<8pBJ5yg`C4=isL-& z=v;UQRBF=OX*VAo&PKa9r(-AE`M8LadxYe=WScsWzggu+F1q$1^)7KD$go*8l`{Q35Joe02l@y0m*5pR?N~3#*S3W4jRSTx;j=cI&WS zuh0rYyiU%uz^yG(G?*GR;FF=#A~9}P-o$WC2nVP}3< zrZ;2P6s9+a;7~z-m_!6$KrK0Si)Ew}yEBy<^STdYy-#~^#JukQ#;A~P$eM9V=nyur zJ8UvO9eSrSI^%l(!RUDjMRS6$71 z9n5Ch60sIajQ;(Wfm`(vHsU0X7)$&22e?5lMFzl4azFA-t8r4=KWXQcDD!JB=GXoe zeVsA+NlY4(C1Btw)^pdX$-iSW-5R-%m?t-`859g|xqMnjGed_5Z-HWx5*O>1FCEwx z_YP8ujUR)anIE6Usj~KT-DPMbu?YcimrP9P?N-2Fv&^wAArQ#8zMThfMFc8C6`nds zYNyaBbRHSZRf`x;kpcs_AfSg(zyMJkfW6$qWPjiN#-oWL4mf4Db4TN&q?=5po5?x& z)DH6|`ez3)QyhJkIk|S&9ua(f*d=UL4d?4b7{Ls5d&GWx?n_mZiji?}huj^Rf_+^I z(-qm4!WJbPY)rYz+~%`U%-i>+@=?dp4dUoeqX#qe&@qQh0OOxyrXfSdNn>X)zD}f# zWy2lEeJ=Ejn~8Uk+TSOIF>1;w zuj6y=l%e=MKP3&_D|qSx-d2-+Q{&iMKTka`0xrIA2V2)Ne8`v62IIo*IDHyY%ADSb zQCc`xZLFA~X3g_c)W#bxI*Cp4a3-e{H|q?JHDvk_?d-v*oT;-}_-V*glMAysLgY&W zO#tJ}Im_6~*D|+NYO?O7?-0CjE(iZLPff1RJECk8tA zx|%$-k~18h#+MiSBqhjnk>%CXMl}nfN}B0f3g|IZ{jl;HZ2gQtY(2jr_im{>pdcc zU8Y_FE{q~^KpCSb6rp;3?Z(x5ebaFq&Sx-FDPOZWu_)32xC^kA~t2? zmNe9A($;8f>$m>oTEyZMdoM;&PX0zWx|dXm%h8`L&O)Lt9Mp*;DdQ0h5RK9F*k*b! z6yI7@*ump5U_s$HK7$W&*v8h6@#$^jKv?}DDSj(OGO4lYtpsSERc)FzxhP(OMYa^h zy4CS;79t=cEahD<%EKw<7yCdN=~b#Db;Z8EoDUsj*kJQP@lq+t%pGy<3(eAciP5Np ze758L|3u*Gx2cqTdWqlT91kWZN=88m=eiKNPM71jw6uFOgY7L0UM-F5-_mT%9?E!) zQumJnY@z)_u-zt7$O+L|X)NWPycTooNc2uwjm_N|=4zr4WYYM%J9qfjF^y@1TtTG? z(ey%9M+y&s8Lfm&-sJ;@WZ(W^QoL)kXDv(nfnhANx8uBb7wSmj?%h%?-P_$~q{-#5 zKu~hybCW2myR#`Ufp*UjB{!G`M6@z9n#x+r>qUc!;oakMn%%G`v?YISE&SE*vEpw< zSs&3kE&P$1GM{cXnQ08R$;^QFWSQ~YJ8VGhAyigIh@jAhYl3uTmR=w1+HapmZg~E_Oh3_e zgm_KQA?*~R*+kcJ+@I&m{XiS0>DgV-3+P+^b29>Qm_?y|``1f_Ogu2c&MMt^;1@ZD zJ}@Lh(dLTI%`42=vcmdQghLUTRuO~G;)-gF>1maTEPB3WOv4Jr_^WY{mCgqqTHpQ_ z_ega2o+6<;_)VNT+Jz02gy!v?APl8-cMACDoTNgT`(wy`FOlpY=B%bi`@P6OO9&fG8# z%rIp{RU;e1^fj^lWU~hgUg!*Fk83e?f#?r5rY$5pJ{&7&+;$($l**g^(HXc%l8=oQ zwpWspW6wb;`R&+P*h7ZZeqzT$y^q(pn^rrT*2N_CpU0!+-=g7N!A4eGeBv>_Hj*VL z+rtsE_T(5SAYYzLg^x+EQ>n;c)+xQ5j6SD>&?5((o`TQf)64Mb^)d5KGVkMIT5%hq zVkUc4>&$-c30fD?z-@GOar`Bh~7X9ZG{A?N1Go5E;3 z7h<(qe>mSmOwCHOt7{rqF>#=QNnO{FKB)CVf_ZG9zHaTQ$O$099M!Yab?Tr z3G%#>d!L_|ig*6P)8YAMJ!qNtnYF^KrWHx+B^XWQ=`W;;H!k_2qm>Q{|2|$i(}TZv z8et{12J5Vv=~^fDTRmN?Y*F<+i56yFv|}3b%f+rQu4cUJ3fL111y~d)_-UPWTp}Hp zT!Vm6-2)cjbh#W20b#l(4&d5g7y{};cZv<;+qL{RR9C})!*tc;Z~r)9NA=?`X(O!5 z*e8*){89^Bce2>}<|TW!j=wyi*~R^vUA+8qTC?-`S_pbxNstbe+V#k~o$1g3Cz39D)2B#ojjOt{{mwC%_|8jL&b$eSAJ3so$)Z zqxIW2wNf=4|8^wU3lT~&L?~^Ch~fV{DWOUHzB?nw!^7`hkl-6%`d79f_kzQZg_0LY z*^k?8TjPyN^89UX&r7#u?OBYQc)Qs=(2n2>f07D9zW(V)IXQ0rY=uAa7b~ay=$C#V zN5S>(%vJ?ocb5z9^sB7k^}kljO|avCtW=$FZ(3{4cjR6LTqSdV8;|E_r+-@~M|Sq_ zbL56^{~oC20ZXe?>DaEwW-1E1pVAy~t#pk==>ma)Lll&WXm!j}`9D z8Yi7YhVBmi(g{itA=4Qu@F&a#!tiI33%rIumt7zQ%B#A!foXU~MK`D*6)V81Ybvp zo{-F-FL=Uy>^69EsM-sXp`5`am}DHk-*YOlZ~YBIAEy@+1zA2X@g05z184_ z!VXcxyVClH-uHodZ4WYB_EI&S-w`INs(If9&orv(#g35qf7-j4U8ZV{F9>o0iI)0- zLC{yzG5#Rk575*8(7RoskySB{tP;*QQs@M~OO^yxc7{ADq_{KqixsVz3wl@sNmXtE zXkGawNAon$$;QjO(cn|G;0x9CH7z8`EJAu!3xyh+$u=L%M-7)L2?X5M(ldeRJ$1B0 z7wpy2NS5#GaMj%LC=kg%bdFdqI&2v^fiA@U~53V~evCJO1vO*FM9H_=|! ztED%3auapy#Z5G+7dO#P)+?b`dT|r^hnh?@CKRIW)kQ91UF2djU(vcyD3Ut&!Z64a z*Myt6CRDxQa_iZvgJ_Q`hdxkZwd@Vy&>$tB+ZW6SwO(dJ9_kCbp^>IXfUnS0NwtyC zi|)jZocmphfDF0u^nP$bI`e@3HfK(v@AZdtJhG<~BcLNL4oxH!O|{yZS#QNWMXlm( zn~lS79unnIsDBjH;%fUk3c3jxcATO?x`(9wqajO-6YgdWACHEj$2IItvt!_htwU;s z&bWoIq7s&F-6Mq}^O?j`X5Ax6Pug=ZM9@P6VY1LzNskUjH8j!QvGOjSA1iMF&p~ib zYJi^ySq$*l^mrUVj|@ipR~u=cShT+o2Mg@^wufj151Uq?`|-w+#r>)A)=}p|JPZ?k zoE}c)JY&ywR#cP+JgP!h(nM52cTufl9f>a5f2Yq{88q=QAzy@qwW* zOOlVZ$&i_CSFAvlXabc@6Yz!bpQAYIv0A`8FWTiqJtGLOJoO6IDt|}Fc3wf>9s`q6 zX%ELh%2Q&_FY(0Fc12GmF7e6FSvy9c<3Y=-CH!eg@|rEtVM$#oe5p&?eT!0G*JX4(UJ*pQnaK67bpBv zZtbo~w_dv)C&Ce_AlE0toz@d{%c+uR#AMipMc-$W!C!7#<&-BUIc_R!MUp>H1$DNa z#OWnEiC61R@?W7i@OY8)0`Auesd8Ggv(z>_%k*hBoMjmuJ{{6TkMS^h%>L=HMXKnO z88$seOXtl3=c@rl~1Tt)b}`Y;j5#oYCcpC*-N>zj8gZJOP37Wa#S) zAh>M~(+l4~)5-;KvTvDryTQ+TO2i(&D>CP!mKdyL*|QL)hcxf0xdh6LK!Japf(J1x zg@J(O4IWjw@-241MG(}w67!@#nkpKt~grSrP|P66I3Rvcwm>6ngZ2 z+@W==Ob+d_pSzkVGdl?JCUs{mg?n<5FBeZ_SlKxE73(lzcm*_K*~so=nGL>v#ky=f zvJCQUS0shF&amcdaMLJs{*gkxo0vAtA0<|;col0&J88%1HA}5wuI0_|)0o$I+ByCj zj~duZqT80k2{CF|&~Tcev?5bJR;*Y7(o~cq|n2L$(D`A>62#$CiUYA0yzHU(lh>m5xxa~)WuQJtT@2}#8-qkm-jQn+# z-7<3fYKv)=qH9QKw^@q?qW2n}8Pe96YRThoG*5AQ4XY(N8;H7zEs*BnuJr0!2p3&J zLKg3ut#DL`; z3#mhHb5&6Cl*Q_}OZ1|D%Y_kA;V$IDH7TU#O^diKcVS7iS00MmNH^q}gC<>>i0j~s zJiC_9+-NBZ9@_{W*vJ<(?g0b&8D%4#lrNoNcRoL)<~v5eO`HcQik2SP1Q+cDmh#P( zgRquj4W$7DCgJj4K`hIgi$#;<4`^`D89;psV2)IKZx%>5o?jPO?KW`Z=|yL3fmzf4 zA9kNKY%6NFi5}VtNocyiw!&lyyH&F&mbPNd4-sR2+ilQehMs*GrtQOWTn=xBvt}a; zf7-sR*~FU>ta*bs`?2QtyxE^M8+bF4H81mK6l>P@K4tCM!NTHNVhGn7mY80 zNLx8ssjD|}x=V}2h;yV+q7?(LR1v?H$a8eA6ylpX;@^!RN1fk+berm_&v{HeZ@&Y> zY;$YRVdtpjy>)Q!l8_VmUxfsy^elCf(R9KEgy$=OYPwU@@(HH^)$^rjV zfX*%l_T^VqZ8^9Jc2shEKLo=;+Wr7^^KN3F$Ka9>jt;;x3*N>Lt7*ys@WFLC`v82! zrhLW#5lIF%ta05OC`1dUwveb$=;J1%85sraC~7y0V|eX~bQu3yHz8ib&f7G2bRVi{ zptT0@a%*5iDhA>*eQSU~uRA7Q67>4It$4lh-bpNhZc*O~h;grH=(zDtC zqm>YW7ahM;f|q|C8$m(vLa|+_q6RN=*?+IN>l7hE4b>R2xH&~*jIbJG^f4o7R9qH6 zHf*3j8lhL4V}0;Le7%e6R#m`3c*WCsxn}X4S+keY&2=!P^K#A71q)*|ieBRHygBo+ ww_G!A!P2D*=Ftarkm&FT|Eh+b!E&no_mQf4z*|p+B3_{Y{0XD_vvBNx0e}Y-J^%m!