From b39555bb23c4a7dbd9f38da66d92f539bad8f1ec Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 23 Apr 2020 19:15:17 +0200 Subject: [PATCH] Add support for hyperlinks --- Cargo.lock | 17 +++++++++++ docs/example_wasm.js | 16 ++++++++--- docs/example_wasm_bg.wasm | Bin 581001 -> 601286 bytes docs/index.html | 21 +++++++++++++- emigui/README.md | 5 ++-- emigui/src/color.rs | 1 + emigui/src/context.rs | 31 +++++++++----------- emigui/src/emigui.rs | 22 ++++++++++----- emigui/src/example_app.rs | 5 ++++ emigui/src/font.rs | 2 +- emigui/src/lib.rs | 2 +- emigui/src/region.rs | 14 +++++++-- emigui/src/types.rs | 22 +++++++++++++++ emigui/src/widgets.rs | 58 +++++++++++++++++++++++++++++++++++++- emigui/src/window.rs | 10 ++++--- example_glium/Cargo.toml | 1 + example_glium/src/main.rs | 18 ++++++++---- example_wasm/src/lib.rs | 21 ++++++++------ 18 files changed, 211 insertions(+), 55 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 149f5684..a538eae9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -187,6 +187,7 @@ dependencies = [ "emigui 0.1.0", "emigui_glium 0.1.0", "glium 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)", + "webbrowser 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -827,6 +828,20 @@ dependencies = [ "wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "webbrowser" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "widestring 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "widestring" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "winapi" version = "0.3.8" @@ -994,6 +1009,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum wayland-scanner 0.21.13 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3828c568714507315ee425a9529edc4a4aa9901409e373e9e0027e7622b79e" "checksum wayland-sys 0.21.13 (registry+https://github.com/rust-lang/crates.io-index)" = "520ab0fd578017a0ee2206623ba9ef4afe5e8f23ca7b42f6acfba2f4e66b1628" "checksum web-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)" = "2d6f51648d8c56c366144378a33290049eafdd784071077f6fe37dae64c1c4cb" +"checksum webbrowser 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "97d468a911faaaeb783693b004e1c62e0063e646b0afae5c146cd144e566e66d" +"checksum widestring 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effc0e4ff8085673ea7b9b2e3c73f6bd4d118810c9009ed8f1e16bd96c331db6" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-util 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "fa515c5163a99cc82bab70fd3bfdd36d827be85de63737b40fcef2ce084a436e" diff --git a/docs/example_wasm.js b/docs/example_wasm.js index b8e80a13..7cfe67cc 100644 --- a/docs/example_wasm.js +++ b/docs/example_wasm.js @@ -196,12 +196,20 @@ function _assertClass(instance, klass) { /** * @param {State} state * @param {string} raw_input_json +* @returns {string} */ __exports.run_gui = function(state, raw_input_json) { - _assertClass(state, State); - var ptr0 = passStringToWasm0(raw_input_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - wasm.run_gui(state.ptr, ptr0, len0); + try { + _assertClass(state, State); + var ptr0 = passStringToWasm0(raw_input_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.run_gui(8, state.ptr, ptr0, len0); + var r0 = getInt32Memory0()[8 / 4 + 0]; + var r1 = getInt32Memory0()[8 / 4 + 1]; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_free(r0, r1); + } }; function isLikeNone(x) { diff --git a/docs/example_wasm_bg.wasm b/docs/example_wasm_bg.wasm index 130efd1f29a29406e3f14704926908465690ee78..6e75f2f517fff174f95ba3735ba5f019a195181b 100644 GIT binary patch delta 116608 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%0Dr4sN22|(A0zV;#7UDz- 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 delta 96153 zcmeEv34ByVws%)mcc+u?BsXN=Z+8MDVP6bkliaX~8-k+_IwGjJgaptckN6?L$bi)sg5(CE^+DZXgmI+u_(Qc1$xmq^Lbfz+ zZsu~uy0QzRTv6>^qJyiayD^H%5^a0tT%>h#I3lBZrnx*IFxutP+O}<*(9GqEcIRIp zTH#4}^kP>pRl!Jw+-0|WM5McAq&;7_FLArtM7rHVbaboQx;Zj+k8@q-a$OkN8cY!$ z(WJN8B__-KQ%ovzo14DRFrsMZDV{85z^Lb0pXh z?JkLpiH^P8?u?{Ak0-jbSseR7iV!wIe>Rs8_Q_>vS~ikRVw21_V$+jYEfyxY_o- zXcPv#^A-!b$es`ey=Bbsfp?7_apx_zpY4&;Cs5%wgSjWNFC8yBY8?|DTOC^*+a22+ z$NY}JiY@l{9Us|`+n;cJYhUX4%JEnGi{eM|wc~64l~^to@NXR7h#I~_%(Wk|SBO*M zxZ{1X)&7BFt$nrq3H#&r$LuTY%k3-eNBIK#llE^NW%eq^&te-t;doPg=lDQuw;y!; z&3;ULYCq|iU_T=MCSJ5ZYkxuf;P_DZU$TGV_|b7t?64nlJnneRQRX=1I3YIhm&Nmr z366D+@s20hX~%f`pY1CgRrX1ahaC?&%A7wr9=31dJH=;?#rB>2Bfi&u*zu95vmbGc zcTTY{cI*<99qYxP`AdA6;~V<~=NFFe*c<#+QR&#^ctvb>M6G>dHg&dx=DfHT>|t|f z+`!D)cHLFLTYDSRqrJC@?lSU9@iUK?Y7dzujh6DCx%o+>IqY!tees7Ff75Pi`6=d} zCQ;@9J&Cq~XC7bxAr~V1AX9$tIey$(sCf9qaiJfpp`L0@;yf*OuLsBg)DV2(e!YA*K0YUMmzBo4>HRD$t|5&ru*@ zZ%~~1c79Vf)%+dyVh^UN-HfcdQMK6*)L&4pD4nb9x+Cyngwh0(gktmv-DMSZR+1=#Ya1OX z+a7oc;WZ8swOL`6QB>tn*=M4u=YWe?VcOfDPCwRw!3}bl85ew*UPd(vH9&*->ZHPs zjFp*vJIurHkq*<m6lr^BK6B-7uyMI*)41{lq)oi7hd zRMe%73K60lb48cV5V3<@{H)R()U_GJWLnn(w%Dxc>SLdn?{&S9tua$CEbL1y&y0jp zUxe{-vi6iik1!@UjfqZeI$jZzQR?$(YwQ5mKEkypDgL8$z*9=KN;ITVi~b&=dyJDy z(LdeVDs$8REnbI_=N zRxg?)^sO!I>nM8^vXAN(!d`1-U)HT)JaNqy1-!K8_1Ua==(8C8cw z*rn}sr~r7(Y{3sb&E)Ft9rfEeKqt zQfe6HorWt67=dsdSme+f>xe7h9_=S#HZJMND$Ic;Gg!I#kCJLM&hqZ<@%v8qt1+dw z=+Q_0CYxrD&PcHrVft-i_UPF-(THZEo)Bm95?i%tjY^V?K2h@}msY9YvMqn8rn3#~y(8n6bT+&2bk+Wb6tgu#)Jy z!S3-fo$1-7+AMR~MZP9WiCN|>^mwC=l^O?UaqS3o?K3bRxyZ}*nC{*M>{YX{ca~!| z@a{MJT%6IRk)}{oC=~lcC@`i{J07KWbZB4Leax`+iMAPE5kNO)FN07$YOd)WpY}c| z(3$o$cz{7*H*rTEh zZcNN0$-xl&%Y{3gl1XicU%%fCJ@bD1Y z;T5y*C8>~%(o1}~VZv(^@K!V$jVj}YDck}=$&AGbIJ7R4=J(F zn6zB+ZTh9Rb+slP5VeE(Tr|z#wHCA*Y&0Y(6uYiIwu)l8H4(MBEIu%8Wl`RAJu48S zrmYNuW$GD*-AX;|vL1;RMpY6Ao&-sRnmkzn&NV~Z%tHh0qrhQ|a@snY*1#;)`Lwsp zoGW^x_@P&%xj-nUZ1+WGzsnQZ)an&iq%gGRmcC;WPYQ3OVM9~fjg^t55THt?RhXCb zyCUJFNIN@Xb-ydvN%M5Sw2Lb2X}p+3$guSWXYFdp(T=e+yl!9^X#(#DdEni{Xx^J* zMt&M+H@>ItYt$Lg;Il|oj+mT%rFk&VJ!rX6Cl%={c{ko0&hrB z8v@i3pwO67_G%!@JiHkljJgnD&l3RT8F^NL{)WMZp@WpSg;5Totnw)ugOHUMvXN&k zX0U>@7DXzaLbL`#ZQuwSR3S~49V!qN=Fp-Q8Lp@sIWm=KDyVu(1kK07NW zNUbVB;igirs;@;TYr|Tm2Qexzg;Xsv8-OXKz^W8;$DsGHRatstQN|ngB8~+)Wn1N-V*dT6EZ6*((50faL#B4~O>BmF#bBRS ziJqpFYIV$QI3SlN%*Su0)PKG?%k>1McBs@vX5+#6Do2w@N}8;ajvGu#D+gz}o}r}4 zDrpDv^x&=uGdL(C+%HnhqfC2*rI~#PH)eIFHj*|ppWo876)@?xJZ|#}gL?M~yU*S; z+OG2wR|oFFIu`xFWmV8-xU?mvacjD3^UJ{JLP>*f9mz%oP%avpYi8eeHyBemtZnKU zjKO-MAy?9GuK-t`y`6}!yFJUbXGfr(CvJZb>wvkX1?G}FB0%XAcQi%9*YBW&$L`2- zy+H|`C_AatuM)OIqL)i4(HEsbZ0`iIC6(T0E*g>&N_c3E zN)cz4jmTpw%%?_lv)U0!f-RAo1R28mGSnV+1OJeP?IROW_&X!Ba+e6S2hZc0&u%zM z3%RDFo$@&HIgB0DBqS%Pqtf}Qt!Ck<%h`3*GI=B_kygu!p3&HvltfxBE5cef5-t12 zsC3sWgeDSbj*l9J%HDb>)nd+_ZT>_%3niTDg+x!i1Sf?0C}%K=B)MT4s!u~aMAt^s zdsjbk{KwtZci)vkGe^bf%~7f|sv*VffA>8D0zqCH?1%OS-IGG9d;S6#N(gHtqv_lm zL(^EPHx?5R_;zZy$?o%sJ$UxLXHRZ@!L&P4ArZtLiKQRS0%q~OS*)UZ;JtUTR%cQ6 zD`im`RMvrirmUp)>u>moO3ABjC12yfLb0>^rZ<~n|dteW8-Nc2?w}sd3 z;pV`Jnbj$iIx)ok;i0GSd-|bN{3bu#n7wCqefSorJ5BZRz>Iy6 z(a7=h1YxgvarxuO`epfu zek!ZSja|vQ2_U-?v};wwSEz5qnXo9Rbk2lD(m)oL*L-ePYv4XOD-pjZW_3o*+E!e~ zzzDy2KR`d2>Fj`+H2Wzi^J-_8cqR*)FkN1^TaPyD=5zq~kvVzh@HuJftuuaKo>LNl zww^lyHOP}C=C^a(s<)BQ#m$!|@LoReD)pOeo|<>5dTVNqnBN0A*UhK=->KhD3pz&y zi;Q=h#=>;-!}-aGUb}!2eY=1PY_pKws}?4jk1TAW-UwPB&RazBvz9k8XDwNI#B^^|mXm+e5f(BI*LG|JNmBIMd z%P9Vj%P3s6Fi7_23TlP>ET_0x%P)(r+=~|PXiUNb`@p|1zn-0tBMVqc^}xsaJJ@!4 ztR+i~qV=KfhE{dEjBUkI*+bP|tt@9)sMkG{P(Al)2fJX`Mrcu!^cZVlszQl@ke-Ye z(mG*F!>mcescU+IcCxzenPgy*2ivkt)3Lf8tC4Nmv8)dJ30W|^v9lHwW*YPGuvWR~ z7j_R+i@GB)`)T_~m$A>Bu{wixojR6Vv=^r6snwfSkLS=Icd3#X>-JTR0o9kUNyGc? zYnozTQND(DNC(%|6YJ_sjFqvTIV~({z@c^yF{)l!sPd=aS#75?&7kc{3CxmZgDk;Ry z*vQm|HWGo2OkD^N*vK3V0RkJDV<7+yzxDf;z_z9g#aL|g2Z!;n;gwn`2(I5vsBt{B zNeN9szr3gT<(RM?%JpY#UV?ayvo<237)1z$)Y2ptFVtuj{S*q@P~5boG1_>_7ClOd zo(9I&R)xrqjoOX-eSM0 zawkyk6mJCO+CZ}lo|~CB3Aw9O?)$qV_x;@|H=@=tZ!$e|tC%+hia(nki%x+Vsh7{0 z?u$hiO49M7Y2&#!#@w){MZ$Cj#k(*nv4yuAyPz$M(OxjW-;;4kBRx)g8%QzZmg)(5 z3RYdf;z;);>hb8FcmWXwd?m!MfUjcOK1zE`l%hm1u7H->_+7!YdFH^^3R@AytGKEY zDnaF8x2E_*O97RXdt-@|Qz$RV-0@n=xWpoU5?FMth##kCta;;s>~^2fRte`>lsO4+ z?bRDGytRc;w}An~!#v&`>M&u z+ut37p-nMNn{9ruw>A60jIFy0`;ozQElLgoIYv7)l{dj^!E|a@Vy||Z_`K2%^b|zn zmvz&gBiMfM-im3YZ8F<@Sin}AKh^ot2pRS#Hmo8k0XVNc2~rR=JH4U%sn*6xG(3na zQzTAe+9Ab?Qw$;l@K^}U8+H(4Yhmj|0-$Mc+Px~+#Y@?-(x7xFnNKzS7+(sdhvc`g zb%eC(DM;^2fea~7=X6L9u#srm`>Q~_o}}$3Omu_?Oe5)MG&qo~y`xAOihcyp?bHK| zgEp$Styr;J$tWEaf-Fihh<*lRWN-Cmva3G@t_R2aym>)OOVkTUIU0*Tfd=)t0!>O1 zsJMHIh^U1+^h0yao4r}A`NNy{uv6x!w=&~vuqe0Fp@2$>7hj~g?5#u=WyXD+nC#9M zwhmA_*hyJ$rAWc?h1vDv{G{k$oG$XkF@a=Q@F3cVXjf?Qh3bHyxG#}? z6|qPOrLl{ewt)8r5AnFnm#U)X*>y%L0~;1V&+W_i2jq#WWYkWrrTzIlrmctiG+0a3 zRwzr=l4K|aYA`f0)fm5!AnjA8N8%Nc7>kH*Vbh}mfRrGBM4wVes2&{eJdxzFpL8&15>xqia6QW=kUQ9M_Z`W_aF~&s;E~ ztAWKUvlZV@|?<|!W+WYrcm({Fo$G&GxsJYjr z+9UjI9D9(D&9PxaHNP?5j{4(t`?v0jx zHFn`;9<|>mdj;gv4yhNc`I$By2cZfVegROw+Shh$29I^ej#HZ!h{w|Qb%z0kg?2)| zr!g;EBu{B9%e4<{QrND1EPZjTko_R9jbnY;3|ZNT`QorUpwnOUUgHC-p^@|bIF^H) ztP!?Ef2Eus*pO9AV0T-2nnY3JkFCUYja1^}lz8KGB>wn}#0ix6h)N8zB0Ai)mmHC` z2`tHe#HKBhpT#5R!Wqbk;Mv8zY!$OUK^5~}0uoP}iNr5cVv)%115FPmvH}kcKVS@2 zHK*-zYa+{sibgJL#IlndR5^=*7K7qdHM5cwgNl>DpjQZGe8b|K*5^7v(H?Cfv3U

Z;Z@OX5(3mgnl-&>9le>Zrvb|kQefG^gM;kg}jPhQ(*rE9D0oWGMVM4 ztss21&g_(GKBb8|2K|uGR15jIkIM(*Sj#|5{jt8Kkc|SXP#6w^_fmFie?}^`xk@Q! zH-O4Yr`zfL8$Y?)97P3f<>q$B&n`+Te@bD=o##>vkm8qw?==TrsH%M}u(6KHinYqp z2*EBwpvsbcQ(3ZKp>~C06zUL4MN0vW@ts-#Qye@P-J$jip z2760ptbpX3%+AcY)?Ro$gnL^>YYrV_LA z_&$s~eT{k4wVQ#T7*dQK6gYr3R+d(32vKL{YDiFTs=uo@)tS|s>YVD0x)i-^N#^p& z64tdlEIDxAkF(nncL&~uI6_Bw92yB6=DM|@F+nl-;f66mF*t?>MXcM{{XA%KYlmdh z?(8o1fo2HE=cW?5{T9NC*S zle>DNlV2w*FJVox$rM2uH7L^1%sT0+!5gn0YQLF4=)OUqT@h#@%ebf>+4%MU6f)?xfGkBJ zBO8emGM2csM7Hb=%H|Peuxbfo-DMWnbl+Jugw_M7Tw!$mY@t$>oOK3WgDz$PR81N; zY=CHm$5W3-+5W`HR=rf4Ds0Ps8JjXfQhb+tFJXx!a8M9w5V%H`z`=AVByf$w1kP?W zLYYt}1q7~~|K`4p1^Eyh?TDIXV-EUEgz6SL)b$WEEfGteO z1cn4&_1j;8kjynqb2cPoZWF?z8Grh(vo-n+sEH+1{Mtm}_KR`R4`N|eE;nDm+PbRO zfDLYKjy!PzyTCf9AhkY5Ra(hRs_9b5;u!lx_UXW$W^c&vJFxC}bS+|O>`mFfh_%B5 z#sdd1n%vQmWksHP0{Cj8wBvGpN7m%ZldxGMjU|no+;|w%D9>ZHSU6GeQ3{gY7(KHU z!{iO19^FCUl!Mb;K8dW})UwY29=zw3YBOZZPAnfoSpQD!HuqMd-mcBz+IqRW6Km$2 z0v)7HmtP(dSu(XVi(%7cUT4+{73klYt#-Xg>0PL8bQg9-M?wl)IXZ5Nu}UgodNj1% zkZ6d2$A?`L+DYx3posOR5WI!$Q7-3nVVAS@@{=xXbo85coFOEc>b$}y7jetf&vUQt{v!@I_t-_mzq^Yxm2~*A472Z@{ z94rkrg03G2EXS6O^O8E-IJE2CvBu_;wf7S_Q+T=;OCPVm5e->k`y8b7CH@{nAWFAc zfddFQ^#ls|xt>(S4=XM!D|(Jg17%|h*_#BK$UCz-yy)>od_U6(M5~x@80N@S)WWCg zQ(IwG0Vg?Wif~k?!k17%_@h+)%0fxN4n3*D7q22ggI`ZHEuxO$Knz8fjiw`l5LHNS zLjn}8raGAUW5v>tx_YYI;6A704*c{sv4Y2`T`~nOqn{oMlE8_Xtc7hXEh2O|z+n9$ zx9bh&bE5fh(j-4HF!xWFKN&DH*dtR)7*y7>8y+r`o&V%ae z8r8w%pgydbYscrX>y6YNt}*+tuA=RpPhnHwphb|&+Fu_aK#U$=s>6;N;0OzRN~NQa zFPOIvH^dYtBBE?XO`MAXIt{8;#J1*RX427k!56v^I|7LC5#f zxQ68+$;dylzMZjahhTCK2ZOK%gYAR%vE9eX2qHKr%|3+exyF7x)agGjHWJWbPsktt z$a;8aOnM|yMEUtRkG!-$dkT&6ZGYA|b}Q>3`s02V&XcfiUL?C+3qgEF4!RaAvmfQB z*Rr0CwI4Z2V6ke88j40^8yCuFuScKmR>-dhaKkp*fk4GYdy@8e ztlTD{j_Jr&NZ$bV1-o5pH$Zll)^xZ5qa5lpd?4$?C6`+VvOD6hBSlQE4}%nk5iJLo zrpiu(SUDu`)j?R%M)_ZE$AOp<@#ILm8e_ft*j-Hh0%wG zs7M`qQlYybc0%cJ@!;&Q@{2pz z8no@wQp_wr%1x!LOTh+Od}D6#q9+(*O9{X3L_HvIZlhuS^&u=lwTp8iEGXv zOVAmwV)a!+*a*JXP<0x7wZH0zxys$ zf}%Fu#R{;L{^Ty^V~3=3v=W@+(QJ^LtR*bod@i3E&6>r$Pi2BvkP2L9syQ?o2yXvG zcwBCyOb-q~4KBi-bu;$20npK0YW<`Pz98LLP1Ve}hizlLYJ$9C47-nSm>_qLVR!LO z6KcBM$Nnz-RWo2_lxi%(Lk)b!9=u_d8n`}kfI>JivYIV$edN@%VB&z))wJnBK)~v1 zQ3w#Qx>^+i1njIfTYxK|$qifz*%M0g@(&n{GmWwz1A{TfgWOWsZCKmd9T@ItFASX$ z%nRBhat{&~;vCy<0;wpI2hW1l#;3a`x*2lLAewp3m+p7q3|d_3!g$2(RibAkfiY(1W`9$#9I z3nsF*7*KDY$W{Vj+$2c!RyiAw2!%J=E%#2s6w%=!)&dc?JjB`~^@4}62HGlzJk0L1 zijS7H6IqFDJ{fDut+MlEHW`nXCbQ2$#B)=a&;K`0qo5~BEfz2^cp}xC2X8Lg<^`@3 zi=ZAI*Xu2#M4G^BX|fJQo&Dle+kcESxWJ@6rdE17rUBjNE|238e$TiZyUnP@BopUo zd}}dH`_|GLlc$>XI2px28^erK(3o;%k%9FgV0OTchruxEVFAgEqhTmy1Owl5$0lkMe=?i5710jdY%&2&+7yPZX8hP6x8K;su>KKh;$qt z(XN4B$gYpk%Ds}~s*Gj8QpvHPwq0bnMtdC)KV`~7^NUc(a26kq4BAFWE$R~w zlvUPif|URO=LS>;&GI37i9ed;)n>e_5JVI8`8FlCHshlp4Ax3P*pVO%q7{UF6@)H=it7=WRCtNUO@$78`O3`R1B0R0iYHXWSg>gM8?WM#&RW~=p^Cwou`1TQr6C7t^ILPEFQx==pjecHZWWHBHUtbSe2)TJ{fEd@ExyCTHYU*i6w0&B;#S=cFl^GeF^dip z>T8dKCjd{P#4zLt27qBrhu%Y^qVFm`O;Z`s-2$X40wxhKUmRu@1&dUg{VEOme+dl$ zHtKhjXg>x4k{Cy4HieXjXf<>Qo3TP=q8=GW<}w22+2+anX0e>+=n3KE)~Xx?3?mmE zf=XE_x6fkDumSmE78Yrr$PH`k^e`$|lL%`eR$DW?g6(F}<6p+2BHK9l5|#$jYkJOR zDRy`H4q7-se`xHLx6fl){&@gslWDb8iR47RTKGV3C@dcslXe1&ZX8FfwOl$20K58M zNb35f7*!4(Df*4y1Dz4|O9dI8Uy1<zirjaHo5 zGFqUnC=nMkXyM|4(u`Ix#!57^@vbc(475(9=|9&dCoEv;{Irlu7cgJYyT&fF7HutG zU%+y(Df}9bGh%!TvH0I8uU}XnvpE0<3rk?SzPxH9>q{Cpw1q*=gw$1#%43)-`jvQI6t_*-q^z#%VDH{lK80k?LVNeKC69 zR9Ul_HH%uY015Zmkx(98thPl>maxwJRlA%O%TndoC9GTHzXxao{!^+HjC5K3MQVjej}&lKbAEvwEA2^gdBgq(M_d+EiGu zhax0ym?ej&i-0B#1fH3$=9S0U$1FTy6q20-Va;n#vY{+`-k%}fc}C?fHPrQb3j2y= z>!<{qCa~N($5Hpb<;o`Z9Fa=K8c!{$E&(M`tGzDUvLI;3OZHZj=42qdb#n8#q*~Qe~ zMGh1r2d-l3oCgPsSjm+{pN%&6BrVt=I9k{aLVayOB?hDJgBU$@wM(?qN*Gfjt>dvxcLjEUSTP5) zSa*3MR4$~$!hz(^2?P-sB^`ds8Q99zm$jec42|hFN#wx}&;OYaoMo;5Y#t z{yDPN@g}H2(`NWDBhpb@V;^n{*r4%a708E8Oa-ocC~koqSo7#qZ&ibcU#Nkf_DS)2 zLIv*4B+|&@uka?Jc35*_E$xdym9Ubwwpq zs0-G6NQ-qCxA|$I7-%lg?4c{yy?h=;Hssl+GFCBg%cJTH-UnLCuGa22+Cj_Enq3|C z*lE|Q4uq(IXg3f@&^(j?U_F#(pC1!P{Y{hu*!#n)8m*NT+Czwq426y&B0-l#k6Zw;JB6=<5-f(PZ^D(5jtA5ORan(t2CBq2K*)A+R(<3Rl7REtHnDpsl?s^ z`!ed5R8)zcM2{CMaP25bPYjTe7)AyT5EJ#3K{zc{=?A9!eZedQDZ65T6=NHu{1+rX zaf=Y`6IF;ygLp=g^1Ysvga9dY`!HTlM49n{GJUFW zPziuvm8oI^WyUuslL}j@uv&F1QMvw$OltIKKH>b2$iDqr~(bI zA&ill@ChKP#9Y*x+vu#yVbC^MV4^(DF%RVNMdYciXeh*vMl_58 zcT(fSrzaX+V5CNi@04F9^6Q%I#Of`NXVCRfy1?w9(fEk8QGS!c9|uA6Q~7O3z|wd+ zN6}{Es$$j9)rJ4K*tO>u)k9t7UY(x z)8}Z&xAvyY$mYGVX1pbvZ;62CCXDvQa{FUEHIlA=qJ~t z@n;bXT!!6-+sdc#+2GBGLrV%2!|_3nm@)@rOazT{*m*&ps#}x!~&Y z523Q50}MheSLgGq?naT9B+Y}1&J$D_J2e@nxeituP;d4Tc6rk$2^oABj` z?AR1l+$uL)k8XMVDuia^b~O%Lwv!pi!1mNiVD4`#V}E!j!fk11-u!@0p*Vcd|(u=;-jmnZaKIazn7h?InWGuKiRCB z*IMvBT*U{v?PIMWBPXT14L{;mD|VG{qx`uIFNc7Xw?zkeyJkaMeko(`NPBxe0}r!3 zuS$J~H~}+J_!`1UqDL7&|13uNoUmrN{sR60Hrx9z;NGSx6`Zax1B)T(C~!QaKyWh= z4w8ByPhop&Iu`Pe8S-Wn@xS1t{_7&h_9L=mN8S^}_&f5B=x!T3s_yoF$6$9$PYLxi zG`fy{rWQri&sG)l>yTweC!QQ1=vHJT5b9QKjI+AcC_{Ct%FYm0NKA3}K)2e2F7!fI z>QNFsDxs#T2VYI2)(yS5S2~M%vwus{wnNXMU&Q-@i=!^$-SODihhLbzXFR%3&>>9} zEjXAF2CGTBf%j#r=3LvTVHsr=$%+4ya5)>t7psqTP&yn3!u%}1TQ6Iis+57<|PchI5nCe zYp&*FaK>NL<{Au-(Sfu5Lo?}gUheoKoEEIF+0vhT7*qtiujK=-JB}y}nStZ|N#*A_ z>@QcjNo!h(HzU{B5dxfXM1B-!v%tT!A-o`Sw>PLZbAbtmD6CAagLxt8q_&U2IzYy;aHszM6J(v9-;?ZEoqo$fQ`t~+?Q-(k+bUcO$+ zFJluVCjPl{%@E8@Q)RoMyi>!;KYtj8stGl-hVhv+N@4Q9;@^Pw8qhwNhSjqOt^vW{ z1t|6UPe=18f7Cdrh3cRd;xGl^wBg1^naptL^rehm)fpl7)L02H+DsYRUkR*^6A6sv z0>I?~FlKB{J8%Q*1%MA)-~db*wA1Ws!Te+oO*1^yfiQls%zNqFsEqk=L^m>!2Wkza zA_8@ECxj@ZS1JOU6o<8aw8GGqI1P|(RRnmD&Z-D@7r|F->M%hT@k&2lNQqERakW4P zQUXMv_*#OZ5Gzi*9?v{V0^JQZK5EaZAkf9Ya9!<+u#Ht9kOAk%;fbK!!R3+Qd8JB} zR|=2$mK{SdA3S+LjjHq*K~NDXPOQom1y5dacuzd)fc0!~{XcHmSgTrf%R`imhefQ` z0eGNp%@=uc+x7gWro=QYz(Qw`lS>s-Z5Gqe652De_W-cy8F`2Gc+`44V?Fi^;B8_W zcSd@f@fNlo+-NFeZs3dkAPJnOD;xoel_tu9(LTy3hfx4m&4;0i0NDSB0L=&hQbNbu z9SHEHjn3~oQDJljIi%3m4kZK*nbnCh$&fm%jJA$iJ0e@2ZKNz3$S=f3L5>;7yVG+^ z;K>K^YbiWn5bx-NefSgsggEiExS?=Ya)4m!jPh$`)gYeO3&!TEzJa6AJS$|KmO?7R z4oi2DB8?=FOleBtH5DyjGd2T?G7E0xP5n^I2COeti>dYC%8j))SofhoVB56`ferYv zuKxVaaarWK+4x1Ivg~f2-{3$ZgZ8e0JB+n=W3?H)DzpK8)`&nXR0T?>k9|AR{rob> zkAOzpbq~)bjd=b&Sc_jL{r6y%TPL5qhY!Nu$aSyU8%@2J4~Rd697+oTm#Ab9i--L2 zUaSaL$o69}2KOe zBgkpX4#oV3_#6*zQaG%e6eG67X4jM>UV%0ALtK8aoh7l}(%8gu+u`sKt8Lg@D9>2h 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 Ujsgh|$F%Adte0aNl@+w=AI-b`!~g&Q diff --git a/docs/index.html b/docs/index.html index 45923f5d..f9ad9482 100644 --- a/docs/index.html +++ b/docs/index.html @@ -56,8 +56,27 @@ if (g_wasm_app === null) { g_wasm_app = wasm_bindgen.new_webgl_gui("canvas", pixels_per_point()); } - wasm_bindgen.run_gui(g_wasm_app, JSON.stringify(input)); + + let output = JSON.parse(wasm_bindgen.run_gui(g_wasm_app, JSON.stringify(input))); + // console.log(`output: ${JSON.stringify(output)}`); + document.body.style.cursor = from_emigui_cursor(output.cursor_icon); + if (output.open_url) { + window.open(output.open_url, "_self"); + } } + + function from_emigui_cursor(cursor) { + if (cursor == "no_drop") { return "no-drop"; } + else if (cursor == "not_allowed") { return "not-allowed"; } + else if (cursor == "resize_nw_se") { return "nwse-resize"; } + else if (cursor == "pointing_hand") { return "pointer"; } + // TODO: more + else { + // default, help, pointer, progress, wait, cell, crosshair, text, alias, copy, move, grab, grabbing, + return cursor; + } + } + // ---------------------------------------------------------------------------- var g_mouse_pos = null; var g_mouse_down = false; diff --git a/emigui/README.md b/emigui/README.md index fc99a07e..39cf9b83 100644 --- a/emigui/README.md +++ b/emigui/README.md @@ -19,6 +19,7 @@ This is the core library crate Emigui. It is fully platform independent without * [x] Scroll-wheel input * [x] Drag background to scroll * [ ] Kinetic scrolling +* [x] Add support for clicking links * [ ] Menu bar (File, Edit, etc) * [ ] One-line TextField * [ ] Clipboard copy/paste @@ -28,8 +29,7 @@ This is the core library crate Emigui. It is fully platform independent without ### Web version: * [x] Scroll input -* [ ] Add support for clicking links -* [ ] Change to resize cursor on hover +* [x] Change to resize cursor on hover ### Animations Add extremely quick animations for some things, maybe 2-3 frames. For instance: @@ -44,6 +44,7 @@ Add extremely quick animations for some things, maybe 2-3 frames. For instance: ### Other * [ ] Generalize Layout so we can create grid layouts etc * [ ] Persist UI state in external storage +* [ ] Pixel-perfect rendering (round positions to nearest pixel). * [ ] Build in a profiler which tracks which region in which window takes up CPU. * [ ] Draw as flame graph * [ ] Draw as hotmap diff --git a/emigui/src/color.rs b/emigui/src/color.rs index ec2cccb8..31b70818 100644 --- a/emigui/src/color.rs +++ b/emigui/src/color.rs @@ -36,3 +36,4 @@ pub const BLACK: Color = srgba(0, 0, 0, 255); pub const RED: Color = srgba(255, 0, 0, 255); pub const GREEN: Color = srgba(0, 255, 0, 255); pub const BLUE: Color = srgba(0, 0, 255, 255); +pub const LIGHT_BLUE: Color = srgba(140, 160, 255, 255); diff --git a/emigui/src/context.rs b/emigui/src/context.rs index 7444fa61..10670344 100644 --- a/emigui/src/context.rs +++ b/emigui/src/context.rs @@ -4,18 +4,6 @@ use parking_lot::Mutex; use crate::{layout::align_rect, *}; -#[derive(Clone, Copy)] -pub enum CursorIcon { - Default, - ResizeNorthWestSouthEast, -} - -impl Default for CursorIcon { - fn default() -> Self { - CursorIcon::Default - } -} - /// Contains the input, style and output of all GUI commands. pub struct Context { /// The default style for new regions @@ -25,8 +13,7 @@ pub struct Context { pub(crate) memory: Mutex, pub(crate) graphics: Mutex, - /// Set each frame to what the mouse cursor should look like. - pub cursor_icon: Mutex, + pub output: Mutex, /// Used to debug name clashes of e.g. windows used_ids: Mutex>, @@ -41,7 +28,7 @@ impl Clone for Context { input: self.input, memory: Mutex::new(self.memory.lock().clone()), graphics: Mutex::new(self.graphics.lock().clone()), - cursor_icon: Mutex::new(self.cursor_icon.lock().clone()), + output: Mutex::new(self.output.lock().clone()), used_ids: Mutex::new(self.used_ids.lock().clone()), } } @@ -55,11 +42,16 @@ impl Context { input: Default::default(), memory: Default::default(), graphics: Default::default(), - cursor_icon: Default::default(), + output: Default::default(), used_ids: Default::default(), } } + /// Useful for pixel-perfect rendering + pub fn round_to_pixel(&self, point: f32) -> f32 { + (point * self.input.pixels_per_point).round() / self.input.pixels_per_point + } + pub fn input(&self) -> &GuiInput { &self.input } @@ -73,10 +65,13 @@ impl Context { } // TODO: move - pub fn new_frame(&mut self, gui_input: GuiInput) { + pub fn begin_frame(&mut self, gui_input: GuiInput) { self.used_ids.lock().clear(); self.input = gui_input; - *self.cursor_icon.lock() = CursorIcon::Default; + } + + pub fn end_frame(&self) -> Output { + std::mem::take(&mut self.output.lock()) } pub fn drain_paint_lists(&self) -> Vec<(Rect, PaintCmd)> { diff --git a/emigui/src/emigui.rs b/emigui/src/emigui.rs index 9aee0c70..34287bff 100644 --- a/emigui/src/emigui.rs +++ b/emigui/src/emigui.rs @@ -32,7 +32,7 @@ impl Emigui { self.ctx.fonts.texture() } - pub fn new_frame(&mut self, new_input: RawInput) { + pub fn begin_frame(&mut self, new_input: RawInput) { if !self.last_input.mouse_down || self.last_input.mouse_pos.is_none() { self.ctx.memory.lock().active_id = None; } @@ -42,17 +42,17 @@ impl Emigui { // TODO: avoid this clone let mut new_ctx = (*self.ctx).clone(); - new_ctx.new_frame(gui_input); + new_ctx.begin_frame(gui_input); self.ctx = Arc::new(new_ctx); } - /// A region for the entire screen, behind any windows. - pub fn background_region(&mut self) -> Region { - let rect = Rect::from_min_size(Default::default(), self.ctx.input.screen_size); - Region::new(self.ctx.clone(), Layer::Background, Id::background(), rect) + pub fn end_frame(&mut self) -> (Output, PaintBatches) { + let output = self.ctx.end_frame(); + let paint_batches = self.paint(); + (output, paint_batches) } - pub fn paint(&mut self) -> PaintBatches { + fn paint(&mut self) -> PaintBatches { self.mesher_options.aa_size = 1.0 / self.last_input.pixels_per_point; let paint_commands = self.ctx.drain_paint_lists(); let batches = mesh_paint_commands(&self.mesher_options, &self.ctx.fonts, paint_commands); @@ -65,6 +65,14 @@ impl Emigui { batches } + /// A region for the entire screen, behind any windows. + pub fn background_region(&mut self) -> Region { + let rect = Rect::from_min_size(Default::default(), self.ctx.input.screen_size); + Region::new(self.ctx.clone(), Layer::Background, Id::background(), rect) + } +} + +impl Emigui { pub fn ui(&mut self, region: &mut Region) { region.collapsing("Style", |region| { region.add(Checkbox::new( diff --git a/emigui/src/example_app.rs b/emigui/src/example_app.rs index 1a615ae3..165edf9a 100644 --- a/emigui/src/example_app.rs +++ b/emigui/src/example_app.rs @@ -43,6 +43,11 @@ impl ExampleApp { region.add(label!( "Emigui is an experimental immediate mode GUI written in Rust." )); + + region.horizontal(Align::Min, |region| { + region.add_label("Project home page:"); + region.add_hyperlink("https://github.com/emilk/emigui/"); + }); }); CollapsingHeader::new("Widgets") diff --git a/emigui/src/font.rs b/emigui/src/font.rs index 066fe842..efaa5b49 100644 --- a/emigui/src/font.rs +++ b/emigui/src/font.rs @@ -158,7 +158,7 @@ impl Font { (point * self.pixels_per_point).round() / self.pixels_per_point } - /// In points + /// Height of one line of text. In points pub fn line_spacing(&self) -> f32 { self.scale_in_pixels / self.pixels_per_point } diff --git a/emigui/src/lib.rs b/emigui/src/lib.rs index 1b605a84..a38db2d4 100644 --- a/emigui/src/lib.rs +++ b/emigui/src/lib.rs @@ -31,7 +31,7 @@ pub use { crate::emigui::Emigui, collapsing_header::CollapsingHeader, color::Color, - context::{Context, CursorIcon}, + context::Context, fonts::{FontDefinitions, Fonts, TextStyle}, id::Id, layers::*, diff --git a/emigui/src/region.rs b/emigui/src/region.rs index ccc0c174..af092d67 100644 --- a/emigui/src/region.rs +++ b/emigui/src/region.rs @@ -109,6 +109,10 @@ impl Region { .extend(cmds.drain(..).map(|cmd| (clip_rect, cmd))); } + pub fn round_to_pixel(&self, point: f32) -> f32 { + self.ctx.round_to_pixel(point) + } + /// Options for this region, and any child regions we may spawn. pub fn style(&self) -> &Style { &self.style @@ -183,7 +187,7 @@ impl Region { // draw a grey line on the left to mark the region let line_start = child_rect.min() - indent * 0.5; - let line_start = line_start.round(); + let line_start = line_start.round(); // TODO: round to pixel instead let line_end = pos2(line_start.x, line_start.y + size.y - 8.0); self.add_paint_cmd(PaintCmd::Line { points: vec![line_start, line_end], @@ -272,7 +276,7 @@ impl Region { Rect::from_min_max(pos, pos2(pos.x + column_width, self.desired_rect.bottom())); Region { - id: self.make_child_region_id(&("column", col_idx)), + id: self.make_child_id(&("column", col_idx)), dir: Direction::Vertical, ..self.child_region(child_rect) } @@ -303,6 +307,10 @@ impl Region { self.add(Label::new(text)) } + pub fn add_hyperlink(&mut self, url: impl Into) -> GuiResponse { + self.add(Hyperlink::new(url)) + } + pub fn collapsing(&mut self, text: S, add_contents: F) -> GuiResponse where S: Into, @@ -365,7 +373,7 @@ impl Region { self.id.with(&Id::from_pos(self.cursor)) } - pub fn make_child_region_id(&self, child_id: &H) -> Id { + pub fn make_child_id(&self, child_id: &H) -> Id { self.id.with(child_id) } diff --git a/emigui/src/types.rs b/emigui/src/types.rs index 3d26e809..841d7ea1 100644 --- a/emigui/src/types.rs +++ b/emigui/src/types.rs @@ -84,6 +84,28 @@ impl GuiInput { } } +#[derive(Clone, Default, Serialize)] +pub struct Output { + pub cursor_icon: CursorIcon, + /// If set, open this url. + pub open_url: Option, +} + +#[derive(Clone, Copy, Serialize)] +#[serde(rename_all = "snake_case")] +pub enum CursorIcon { + Default, + /// Pointing hand, used for e.g. web links + PointingHand, + ResizeNwSe, +} + +impl Default for CursorIcon { + fn default() -> Self { + CursorIcon::Default + } +} + // ---------------------------------------------------------------------------- #[derive(Clone, Copy, Debug, Default, Serialize)] diff --git a/emigui/src/widgets.rs b/emigui/src/widgets.rs index 8ba6b6c6..8f3ce342 100644 --- a/emigui/src/widgets.rs +++ b/emigui/src/widgets.rs @@ -59,6 +59,62 @@ impl Widget for Label { // ---------------------------------------------------------------------------- +pub struct Hyperlink { + url: String, + text: String, +} + +impl Hyperlink { + pub fn new(url: impl Into) -> Self { + let url = url.into(); + Self { + text: url.clone(), + url, + } + } +} + +impl Widget for Hyperlink { + fn add_to(self, region: &mut Region) -> GuiResponse { + let color = color::LIGHT_BLUE; + let text_style = TextStyle::Body; + let id = region.make_child_id(&self.url); + let font = ®ion.fonts()[text_style]; + let line_spacing = font.line_spacing(); + // TODO: underline + let (text, text_size) = font.layout_multiline(&self.text, region.available_width()); + let interact = region.reserve_space(text_size, Some(id)); + if interact.hovered { + region.ctx().output.lock().cursor_icon = CursorIcon::PointingHand; + } + if interact.clicked { + region.ctx().output.lock().open_url = Some(self.url.clone()); + } + + if interact.hovered { + // Underline: + for fragment in &text { + let pos = interact.rect.min(); + let y = pos.y + fragment.y_offset + line_spacing; + let y = region.round_to_pixel(y); + let min_x = pos.x + fragment.min_x(); + let max_x = pos.x + fragment.max_x(); + region.add_paint_cmd(PaintCmd::Line { + points: vec![pos2(min_x, y), pos2(max_x, y)], + color, + width: region.style().line_width, + }); + } + } + + region.add_text(interact.rect.min(), text_style, text, Some(color)); + + region.response(interact) + } +} + +// ---------------------------------------------------------------------------- + pub struct Button { text: String, text_color: Option, @@ -416,7 +472,7 @@ impl<'a> Widget for Slider<'a> { let value = self.get_value_f32(); let rect = interact.rect; - let rail_radius = (height / 8.0).round().max(2.0); + let rail_radius = region.round_to_pixel((height / 8.0).max(2.0)); let rail_rect = Rect::from_min_max( pos2(interact.rect.left(), rect.center().y - rail_radius), pos2(interact.rect.right(), rect.center().y + rail_radius), diff --git a/emigui/src/window.rs b/emigui/src/window.rs index f566ade5..a47534d8 100644 --- a/emigui/src/window.rs +++ b/emigui/src/window.rs @@ -139,6 +139,8 @@ impl Window { } }; + state.outer_pos = state.outer_pos.round(); // TODO: round to pixel + let min_inner_size = self.min_size; let max_inner_size = self .max_size @@ -227,16 +229,16 @@ impl Window { state.outer_pos += ctx.input().mouse_move; } + if corner_interact.hovered || corner_interact.active { + ctx.output.lock().cursor_icon = CursorIcon::ResizeNwSe; + } + state = State { outer_pos: state.outer_pos, inner_size: new_inner_size, outer_rect: outer_rect, }; - if corner_interact.hovered || corner_interact.active { - *ctx.cursor_icon.lock() = CursorIcon::ResizeNorthWestSouthEast; - } - if win_interact.active || corner_interact.active || mouse_pressed_on_window(ctx, id) { ctx.memory.lock().move_window_to_top(id); } diff --git a/example_glium/Cargo.toml b/example_glium/Cargo.toml index 99ba60fb..2e55e886 100644 --- a/example_glium/Cargo.toml +++ b/example_glium/Cargo.toml @@ -9,3 +9,4 @@ emigui = { path = "../emigui" } emigui_glium = { path = "../emigui_glium" } glium = "0.24" +webbrowser = "0.5" diff --git a/example_glium/src/main.rs b/example_glium/src/main.rs index aec2aaf7..5ef9b720 100644 --- a/example_glium/src/main.rs +++ b/example_glium/src/main.rs @@ -102,7 +102,7 @@ fn main() { _ => (), }); - emigui.new_frame(raw_input); + emigui.begin_frame(raw_input); let mut region = emigui.background_region(); let mut region = region.centered_column(region.available_width().min(480.0)); region.set_align(Align::Min); @@ -127,13 +127,21 @@ fn main() { emigui.ui(region); }); - painter.paint_batches(&display, emigui.paint(), emigui.texture()); + let (output, paint_batches) = emigui.end_frame(); + painter.paint_batches(&display, paint_batches, emigui.texture()); - let cursor = *emigui.ctx.cursor_icon.lock(); - let cursor = match cursor { + let cursor = match output.cursor_icon { CursorIcon::Default => glutin::MouseCursor::Default, - CursorIcon::ResizeNorthWestSouthEast => glutin::MouseCursor::NwseResize, + CursorIcon::PointingHand => glutin::MouseCursor::Hand, + CursorIcon::ResizeNwSe => glutin::MouseCursor::NwseResize, }; + + if let Some(url) = output.open_url { + if let Err(err) = webbrowser::open(&url) { + eprintln!("Failed to open url: {}", err); // TODO show error in imgui + } + } + display.gl_window().set_cursor(cursor); } } diff --git a/example_wasm/src/lib.rs b/example_wasm/src/lib.rs index c749acbc..ce5a1dc9 100644 --- a/example_wasm/src/lib.rs +++ b/example_wasm/src/lib.rs @@ -38,10 +38,10 @@ impl State { }) } - fn run(&mut self, raw_input: RawInput) -> Result<(), JsValue> { + fn run(&mut self, raw_input: RawInput) -> Result { let everything_start = now_sec(); - self.emigui.new_frame(raw_input); + self.emigui.begin_frame(raw_input); let mut region = self.emigui.background_region(); let mut region = region.centered_column(region.available_width().min(480.0)); @@ -53,6 +53,10 @@ impl State { ); region.add_label("This is not JavaScript. This is Rust, running at 60 FPS. This is the web page, reinvented with game tech."); region.add_label("This is also work in progress, and not ready for production... yet :)"); + region.horizontal(Align::Min, |region| { + region.add_label("Project home page:"); + region.add_hyperlink("https://github.com/emilk/emigui/"); + }); region.add(Separator::new()); region.set_align(Align::Min); @@ -88,20 +92,20 @@ impl State { }); let bg_color = srgba(16, 16, 16, 255); - let batches = self.emigui.paint(); - let result = self.webgl_painter.paint_batches( + let (output, batches) = self.emigui.end_frame(); + self.webgl_painter.paint_batches( bg_color, batches, self.emigui.texture(), raw_input.pixels_per_point, - ); + )?; self.frame_times.push_back(now_sec() - everything_start); while self.frame_times.len() > 30 { self.frame_times.pop_front(); } - result + Ok(output) } } @@ -111,8 +115,9 @@ pub fn new_webgl_gui(canvas_id: &str, pixels_per_point: f32) -> Result Result<(), JsValue> { +pub fn run_gui(state: &mut State, raw_input_json: &str) -> Result { // TODO: nicer interface than JSON let raw_input: RawInput = serde_json::from_str(raw_input_json).unwrap(); - state.run(raw_input) + let output = state.run(raw_input)?; + Ok(serde_json::to_string(&output).unwrap()) }