From a0d2a33d04a0f383d2d04051bb7378121208c57d Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sat, 28 Oct 2006 09:55:50 +0000 Subject: [PATCH] remove test/example stuff SVN revision: 26835 --- legacy/ecore/Makefile.am | 3 +- legacy/ecore/configure.in | 5 - legacy/ecore/data/.cvsignore | 2 - legacy/ecore/data/Makefile.am | 2 - legacy/ecore/data/fonts/.cvsignore | 2 - legacy/ecore/data/fonts/Makefile.am | 10 - legacy/ecore/data/fonts/Vera.ttf | Bin 65932 -> 0 bytes legacy/ecore/data/fonts/VeraBI.ttf | Bin 63208 -> 0 bytes legacy/ecore/data/fonts/VeraBd.ttf | Bin 58716 -> 0 bytes legacy/ecore/data/fonts/VeraIt.ttf | Bin 63684 -> 0 bytes legacy/ecore/data/fonts/VeraMoBI.ttf | Bin 55032 -> 0 bytes legacy/ecore/data/fonts/VeraMoBd.ttf | Bin 49052 -> 0 bytes legacy/ecore/data/fonts/VeraMoIt.ttf | Bin 54508 -> 0 bytes legacy/ecore/data/fonts/VeraMono.ttf | Bin 49224 -> 0 bytes legacy/ecore/data/fonts/VeraSe.ttf | Bin 60280 -> 0 bytes legacy/ecore/data/fonts/VeraSeBd.ttf | Bin 58736 -> 0 bytes legacy/ecore/data/fonts/fonts.alias | 11 - legacy/ecore/data/fonts/fonts.dir | 51 - legacy/ecore/data/images/.cvsignore | 2 - legacy/ecore/data/images/Makefile.am | 10 - legacy/ecore/data/images/ball.png | Bin 2204 -> 0 bytes legacy/ecore/data/images/bar.png | Bin 4385 -> 0 bytes legacy/ecore/data/images/bar_shad_above.png | Bin 136 -> 0 bytes legacy/ecore/data/images/bar_shad_below.png | Bin 142 -> 0 bytes legacy/ecore/data/images/bg.png | Bin 60786 -> 0 bytes legacy/ecore/data/images/crosshair.png | Bin 875 -> 0 bytes legacy/ecore/data/images/e_logo.png | Bin 46481 -> 0 bytes legacy/ecore/data/images/evas_logo.png | Bin 19736 -> 0 bytes legacy/ecore/data/images/shadow.png | Bin 1169 -> 0 bytes legacy/ecore/data/pointers/.cvsignore | 2 - legacy/ecore/data/pointers/Makefile.am | 8 - legacy/ecore/data/pointers/mouse_pointer.png | Bin 1360 -> 0 bytes legacy/ecore/examples/.cvsignore | 16 - legacy/ecore/examples/Makefile.am | 79 - legacy/ecore/examples/args_example.c | 28 - legacy/ecore/examples/con_client_example.c | 53 - legacy/ecore/examples/con_server_example.c | 59 - legacy/ecore/examples/config_basic_example.c | 98 - .../ecore/examples/config_listener_example.c | 26 - legacy/ecore/examples/event_handler_example.c | 45 - legacy/ecore/examples/exe_example.c | 205 - legacy/ecore/examples/list_destroy_example.c | 26 - legacy/ecore/examples/list_example.c | 31 - legacy/ecore/examples/output_tester.c | 130 - legacy/ecore/examples/timer_example.c | 43 - legacy/ecore/examples/x_window_example.c | 20 - legacy/ecore/src/Ecore.h | 916 ----- legacy/ecore/src/Makefile.am | 11 +- legacy/ecore/src/bin/.cvsignore | 10 - legacy/ecore/src/bin/Makefile.am | 219 - legacy/ecore/src/bin/ecore_config.c | 336 -- legacy/ecore/src/bin/ecore_dbus_hal_test.c | 170 - .../ecore/src/bin/ecore_dbus_receiver_test.c | 152 - legacy/ecore/src/bin/ecore_dbus_test.c | 192 - legacy/ecore/src/bin/ecore_dbus_test.h | 18 - legacy/ecore/src/bin/ecore_evas_test.c | 27 - legacy/ecore/src/bin/ecore_evas_test.h | 39 - legacy/ecore/src/bin/ecore_evas_test_app.c | 184 - legacy/ecore/src/bin/ecore_evas_test_bg.c | 453 --- .../ecore/src/bin/ecore_evas_test_calibrate.c | 291 -- legacy/ecore/src/bin/ecore_test.c | 903 ----- legacy/ecore/src/e_ev_filter.c | 132 - legacy/ecore/src/e_ev_signal.c | 320 -- legacy/ecore/src/e_ev_x.c | 1234 ------ legacy/ecore/src/e_events.c | 430 -- legacy/ecore/src/e_ipc.c | 187 - legacy/ecore/src/e_util.c | 10 - legacy/ecore/src/e_x.c | 3610 ----------------- 68 files changed, 2 insertions(+), 10809 deletions(-) delete mode 100644 legacy/ecore/data/.cvsignore delete mode 100644 legacy/ecore/data/Makefile.am delete mode 100644 legacy/ecore/data/fonts/.cvsignore delete mode 100644 legacy/ecore/data/fonts/Makefile.am delete mode 100644 legacy/ecore/data/fonts/Vera.ttf delete mode 100644 legacy/ecore/data/fonts/VeraBI.ttf delete mode 100644 legacy/ecore/data/fonts/VeraBd.ttf delete mode 100644 legacy/ecore/data/fonts/VeraIt.ttf delete mode 100644 legacy/ecore/data/fonts/VeraMoBI.ttf delete mode 100644 legacy/ecore/data/fonts/VeraMoBd.ttf delete mode 100644 legacy/ecore/data/fonts/VeraMoIt.ttf delete mode 100644 legacy/ecore/data/fonts/VeraMono.ttf delete mode 100644 legacy/ecore/data/fonts/VeraSe.ttf delete mode 100644 legacy/ecore/data/fonts/VeraSeBd.ttf delete mode 100644 legacy/ecore/data/fonts/fonts.alias delete mode 100644 legacy/ecore/data/fonts/fonts.dir delete mode 100644 legacy/ecore/data/images/.cvsignore delete mode 100644 legacy/ecore/data/images/Makefile.am delete mode 100644 legacy/ecore/data/images/ball.png delete mode 100644 legacy/ecore/data/images/bar.png delete mode 100644 legacy/ecore/data/images/bar_shad_above.png delete mode 100644 legacy/ecore/data/images/bar_shad_below.png delete mode 100644 legacy/ecore/data/images/bg.png delete mode 100644 legacy/ecore/data/images/crosshair.png delete mode 100644 legacy/ecore/data/images/e_logo.png delete mode 100644 legacy/ecore/data/images/evas_logo.png delete mode 100644 legacy/ecore/data/images/shadow.png delete mode 100644 legacy/ecore/data/pointers/.cvsignore delete mode 100644 legacy/ecore/data/pointers/Makefile.am delete mode 100644 legacy/ecore/data/pointers/mouse_pointer.png delete mode 100644 legacy/ecore/examples/.cvsignore delete mode 100644 legacy/ecore/examples/Makefile.am delete mode 100644 legacy/ecore/examples/args_example.c delete mode 100644 legacy/ecore/examples/con_client_example.c delete mode 100644 legacy/ecore/examples/con_server_example.c delete mode 100644 legacy/ecore/examples/config_basic_example.c delete mode 100644 legacy/ecore/examples/config_listener_example.c delete mode 100644 legacy/ecore/examples/event_handler_example.c delete mode 100644 legacy/ecore/examples/exe_example.c delete mode 100644 legacy/ecore/examples/list_destroy_example.c delete mode 100644 legacy/ecore/examples/list_example.c delete mode 100644 legacy/ecore/examples/output_tester.c delete mode 100644 legacy/ecore/examples/timer_example.c delete mode 100644 legacy/ecore/examples/x_window_example.c delete mode 100644 legacy/ecore/src/Ecore.h delete mode 100644 legacy/ecore/src/bin/.cvsignore delete mode 100644 legacy/ecore/src/bin/Makefile.am delete mode 100644 legacy/ecore/src/bin/ecore_config.c delete mode 100644 legacy/ecore/src/bin/ecore_dbus_hal_test.c delete mode 100644 legacy/ecore/src/bin/ecore_dbus_receiver_test.c delete mode 100644 legacy/ecore/src/bin/ecore_dbus_test.c delete mode 100644 legacy/ecore/src/bin/ecore_dbus_test.h delete mode 100644 legacy/ecore/src/bin/ecore_evas_test.c delete mode 100644 legacy/ecore/src/bin/ecore_evas_test.h delete mode 100644 legacy/ecore/src/bin/ecore_evas_test_app.c delete mode 100644 legacy/ecore/src/bin/ecore_evas_test_bg.c delete mode 100644 legacy/ecore/src/bin/ecore_evas_test_calibrate.c delete mode 100644 legacy/ecore/src/bin/ecore_test.c delete mode 100644 legacy/ecore/src/e_ev_filter.c delete mode 100644 legacy/ecore/src/e_ev_signal.c delete mode 100644 legacy/ecore/src/e_ev_x.c delete mode 100644 legacy/ecore/src/e_events.c delete mode 100644 legacy/ecore/src/e_ipc.c delete mode 100644 legacy/ecore/src/e_util.c delete mode 100644 legacy/ecore/src/e_x.c diff --git a/legacy/ecore/Makefile.am b/legacy/ecore/Makefile.am index 4e31f17484..398fa41e78 100644 --- a/legacy/ecore/Makefile.am +++ b/legacy/ecore/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -SUBDIRS = data src examples +SUBDIRS = src MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \ config.h.in config.sub configure install-sh \ @@ -24,7 +24,6 @@ EXTRA_DIST = AUTHORS COPYING COPYING-PLAIN ecore.c.in gendoc ecore.supp ecore.m4 debian/control \ debian/copyright \ debian/ecore0-bin.install \ - debian/ecore0-debug.install \ debian/libecore0-con.install \ debian/libecore0-config.install \ debian/libecore0-dbus.install \ diff --git a/legacy/ecore/configure.in b/legacy/ecore/configure.in index 552ce6cf98..fcab0df267 100644 --- a/legacy/ecore/configure.in +++ b/legacy/ecore/configure.in @@ -1253,10 +1253,6 @@ AC_SUBST(requirements) AC_OUTPUT([ Makefile ecore.pc -data/Makefile -data/fonts/Makefile -data/images/Makefile -data/pointers/Makefile src/Makefile src/bin/Makefile src/lib/Makefile @@ -1273,7 +1269,6 @@ src/lib/ecore_file/Makefile src/lib/ecore_dbus/Makefile src/lib/ecore_desktop/Makefile src/lib/ecore_directfb/Makefile -examples/Makefile ecore-config README ecore.spec diff --git a/legacy/ecore/data/.cvsignore b/legacy/ecore/data/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/legacy/ecore/data/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/legacy/ecore/data/Makefile.am b/legacy/ecore/data/Makefile.am deleted file mode 100644 index 0eb6a4e411..0000000000 --- a/legacy/ecore/data/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in -SUBDIRS = fonts images pointers diff --git a/legacy/ecore/data/fonts/.cvsignore b/legacy/ecore/data/fonts/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/legacy/ecore/data/fonts/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/legacy/ecore/data/fonts/Makefile.am b/legacy/ecore/data/fonts/Makefile.am deleted file mode 100644 index c4d04b7f67..0000000000 --- a/legacy/ecore/data/fonts/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in -FILES = Vera.ttf VeraBI.ttf VeraBd.ttf VeraIt.ttf VeraMoBI.ttf \ - VeraMoBd.ttf VeraMoIt.ttf VeraMono.ttf VeraSe.ttf VeraSeBd.ttf \ - fonts.alias fonts.dir - -fontsdir = $(pkgdatadir)/fonts -fonts_DATA = $(FILES) - -EXTRA_DIST = $(FILES) - diff --git a/legacy/ecore/data/fonts/Vera.ttf b/legacy/ecore/data/fonts/Vera.ttf deleted file mode 100644 index 58cd6b5e61eff273e920942e28041f8ddcf1e1b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65932 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

B-* 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

1$W7r@e0!HPu@g0mkJPQ3hhEb-G4zU50u9!$ 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 W_YF69v_ymE68(IXMraZLEdC#Jb*K;k diff --git a/legacy/ecore/data/fonts/VeraBd.ttf b/legacy/ecore/data/fonts/VeraBd.ttf deleted file mode 100644 index 51d6111d722981a86766cc99c53f1956e5c0a229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58716 zcmdqKd3+Q_`Y>MA)!j4Gb7y8UnVd5TlK_DvB!n0a86XJ>2_c36;WQx!36R4aAOeEA z-U2Fu5m63ZL_~~$h{&Zz*8>(^K}AGl0d+N^>&vOrZ*S>(~Bj?wZl@|Yc+jK%+Z3BElYD#ad z*FXqWQo8vYLOe4F z(L4vw1XB}14&lF{@KMhxvB8yk&H?B0{pXB?bl>NDoeRW33jK9N5=>_K&ov~8yzD>M z5|g&xf37DXx_kZSMxBi`5k@GlgZ7(r8~o>##7Z{*IY+e8F#kCtN!|DPUgrV{k;eGz zh-82?-G8njC3@;V*OKtiW&U$LNeX|_e{KwlmF^u=SHGyCdQMf7yKh-PcXCovihK4V z_vq@T#-@gf(wYJ8oZ7Mk_o(^v-Gx}I(Op>4SkbVcqCBCyj(c)NL#caWX>Fr>blv>& z!ixD7rHvKtK?#GBy6a#StT7O4{Eyl+O25~rQR)V%He223E_F9Gl$KZ2ls3$B*HvDR zyHPSq1r-f7)s2nSb+vA&Uscgi0W{8OD6MU(C?DXiY^bQf2g|BT8|G9Da5vStOKTUo z>nj=>;eoo@O{LYf)wOe=oibn+)@-V(a97sV0yj#_%Ia$Bp*mJ*ssiZqtIH~Cf&9MF zSy&^w9{?+Nmo_%ml~tEQd+zeOvgVqK+NRPb#HX@)enq3ZFG5rva8InOY+6{_P!Ziv z!331Ip{~5StU>`(UJYWYp55G3q2PcmbU!e_U0qu?zquSSSyI4aRR`2EcVks4kTtu)&o@A% zy4H=idMK@{1aDKwN2K^&IF`z;ZCM^;K}zplE4n831X-CjuBX zy02?V)w*((X{GajAAtXv03JQi0KMAzi`>=Ms51=C+}Z^F z#$8%p51p)Z_I&6Bb&5O`#$3zzrmE5=cU5U4aKECqoBs+(Xs$=c%iYbj<$jcVkX39; zwBlO+i)0(YoF3m{jD3 z8ik|si>A6KWVuJ>Pj%wo>1t{8DEf>lL_~7^2g*&%E-wd>mCiy z2&pmH+dxh(hi%)&9*0D08toV=W(sRP_uIYs#hGYf!@auK>05oPo!PLT>vDrlf;GrV8Ilx_1 zI4UD^{HVg*0f^y*qU_89zJ z3rFP*a8E4A9Fv15z{i}z%rSs1)CArGC*UqX8Z#k(V&+Yg;0DwSGyww1&Q$0C0!G2# z7zHzh{Cpr6;S^0M1cvxgnUXUxbAWqPVa`O9NLJwlKo{i+PautxfS*t`C*O}R$_Vda z*|pjMweV>_7c(+P_$fEPAYH-SlUmo|gDY^c7? z?~gL^lOMOSm(;Rh8jQVij6F58X5>2n%r}c zQ{eZS0P38Cs-~v;p^1qL7cNYg9f-XWz!Z`(q>j{+MWlgLlR2acf<`y#OUg(;_)UgD zGl`_Y*=(rcCZnNF6KRA`1F0aTq=pQDyE&v5>LvF>lN>`iU8LMhUXTrCA^D}b-1a6S+2)saet5C4hp*am(I;K>Gf79lpmcO7ui ztz5Z5u2@##m*X6zrCMka<$*G+R7#PzYKvv?1mZ9UYG8R2+;_vBT15})6=;qA7U}?M z6O>g$DSqZCHQk^Ss%8aXHYr$OTZkFz5kf3e>eYY_s?Y-vu(ryZ`S4o?Euu~!hJ8si z$?Ap?t!OGfTdu%E+UuZxHNaEpb3+NQCbV<2u2W#Sp|o0&_q7xS;P>=sq)nAzv%*7!ACL~7BVT%CT@TP_E3g}(EiC^% zI`F>A^+dp@0j^LwYX4VZSHm^7tZGyMtN%=OK#nT5s-B@nqgCpybv+a@kH%1Uh!H3ccDQ|N9~I58J$lqndfbpq|69wWVVpcw(JMaoeV5o1-u z8ewQ3=%GbQYsk0RP!FwPj~sfW72qr4^jnKi3r`|!>=DR?9*zb2OApt2+kxKCA%)n# zRcXyu@aU~?Do5}R!vABLBCSY+D*qbgSG`8772wk!OC0MgQsi0*?Whzb{Dxcq>3Ou2 z=$TX+5Ch~r_UV9SL;SJdVLw%Eor*15TC}wR+4tzP+V@c3u)nLkZU!iL)k76Ni&l0H z@SsP_=RiHAsLFp2p9t7eq)^2K>#N+oo<~^npK0omxJp5frXi(nz~_I8!L{vN&yOBT z1N?7P`UJ`xTR;kWOBs7Zk5xx*yA__-0^iWS1o-TRTIwC7Rn(TXx9S~LNvq>z5Au=Yx1DQ-o6I)3i~utpyG>~ zfP4=0y9H2M-HW!l(c>V8(c1LzH-LBG&Tl<~Di!o!=+iMC zQgt8w8fwn9`rm`4O5N|-ag<9lJdOI?o6En)*`BxsdE6t%YdMLO{U-{p)jPDc7~>(X zNKK&E1^fm^Mrz-~SOhV|Cwlv1^_en=mr6lvuyxhfs@m0KVFM8V|FBxu_u3w+)W{k2 zSoM#U*XUg~$pn0}$OK3R7s1&?ILm^wDG*^6DrGrv&keC%A(TvpSUUsmX26|jsDUL| z9>LFi;*afTDRA?Zr|>!C9AY{OJ_Yby2(9J-gh}ueUg6zI@LK@&Cc;xH9>_n$ zHXrKd1B^oDcPx}62C5`fUX6iT1<*Fu7z=n6DOg}jNFCNhtcsv~6mSHe$5wNdyDDbL z6O=OI(gOuYOW3xG2l9WiA0Fxe(w_$h@)r3xQE4F)?v96hDqIz+8?Zu35O0+mli)f7 zY9b$yLWF^3C>7*qUUyBEZ>lb!Oh-YD@e1bnJW_%j>CuMXlmwt%E1lodj)1lyER-8^ zDo<%;B5*bnWQBOCckp@CE7bfkKtYejsd|t64%Ah-fbz*#BzqIcS(S(i&#iEwhYEx> zMUh00JX8rFhNu_VVt{8o(#JLt=Kwya&8TGoIrMM^`yc8UwuD-MSJ(pf5!5l15|#z} zr`kq9j+2yU15oj~YqcM>4Es@_Uf{X^WII$I1=>c~J+z~?A}>`8QOYVe{yW?rYo7@| z4!vc)-^Voq6g2`4j0aV}-xKSoeyDdWiW~{}%pQ*tu+?M1%c$PBcfFpw$XOf>q5tX` z)nVO$fBwDEcMjCYj0M)~9SH}b5jC1r$4cm#RQxeQ!kAr+2{HClqZBpPz^GguW#ec- z9jOLJF*rIz-+b-(uMu#>H~_Iw+Y0#q9#}Z`!n_AY4%ixUSj7fgQ@Qz{eC_okMjWZ) zxTFE#EL6^$6s&6Dx)iWLs90J}ZiDN<7)H$xAPqgT`foA_(DL8-kC9>{XplO_s#Z9R z@nr(Eg_I$t>Ub@{UzG!uN*Try0W6V^J=%w{_E6>7-f=0$O&GDOI;Ca?@E*1^2inB^ zR})|}lqABjP&pDHo>2XFPu?p*X{mRdpcWjz z2yfA!gmf;Q6!SIw2!1Dj2fq_)H1n1G9i$b$)47lM_55P~7{8blBW5%YKZpleN5|0^ zvW{CvGpLJZa7W1-fO91sN!QU~!Uw_!uYNLH7a1 zgxpPc@Fkkrd>C0LuH%czMdS_nh&u}WC{XzEAbC(6M1J8#@)OIWCHz+881V{kP(nSL zabgfzOUG&M0!j!=Ba4Y0O5dYIctbs)mR5`)Yxy|#G~mv0O9OnPi^x$foy{iem18yC zOIDM;&#0BSJBoe+ul{+rwJ4E?*D&N7%w}aY=30iU}S9s2-O*s!zzRlD`mO{B% zxx#ZsjnqIMf_p~go{=0TJT*`~1Wkfc!r*&3+|yHu#KJu+VesvPdw7RYo${ns`PRUi z2Szo@6XMRt6NFJVDk^jd$~UjnVhTl^a)&D4#CLTmyLuy&W!8CRfY2$kD+5@E%znK* zR`_)(yF8ZtyMz5Avwz9#lFa_k>+ENl{ZnQ?$?V5Sc2Qp9Zr}PFRFb?CgYv9sgJ_9Cx#i_3Up@ z<8K}8BY^*rmwot{LHIC+9s8?YI2OzPdNfG*tDPMUVn?9(NCf-9&fb6Tb>V%Pz4z`+ z;l0<{d&~KEeOLeD72ci6-u3Z+@v?Vh_I5dId)Okh$?UCg_NL6;;)^i)GKtY^%(kli3!T{aIqq z%IulVCgB;GZ8ovZK7JE0YEuW>2#;)xWE}HA0lG#idtesVuA+zbz!i4EEn+8|Y!q`-q6?d>HGMfz7zN?dEHc4hh zk!+%!72f0$3Om?MP;irr6-;mm1s!ZczEzmuV)<4!K9c3-+J!s^%N=JGa_wwfj!772 zWjQ96-ND9Y*@dwVmSty|9V}yvNysp>F(x*8lvfzt!A1ehQC{X7X%>7k8+oHi7-?oV zn%IcpMqxxS8*XI7%GpqvrQ6vJGE1|uA*rFl5HCv|Y!^~PS?Xbauw)bl+u7jdd`hxG zNU^gNAD?VsgOauggJhNj@RPQ%L<38(v4I1I3IjXX0Ebr?FqFlYv;O6*pUnC?Se(-; z#6_}LH}giaJ~6<6_&$*=#>%3JQHbtf9y9a!c(mJGs6!yvm^s< zPArBN;16#@bD0?fA;PPa*YcIZv#|C~L!$PBbB%>?M5M8Ms8+b2<4I!M@%BN)a=iU` zdy>uSv3fmLPbE(}8(CQA1$nK;bou87u^+~xQSfyy#BKu7ktm;;JtRIzR%m&qp`1u0 z%kkmu$?55XNaFd<_9W`DG7kfA9taStQe-)WR>>{GiLSTgS#)#P5qUkvu5YnztO_6^ zZjnB-Kv(hrk?&GYutNP)C9{>)7k@!I<4+1^?go7lEM3G$I zAeTTN4R>m6X8og)4jm(_tj4Iwi14t`5NEJ0$Z9d0j0Q=kRfQBP+TE7pN1TZF@bk&X zheKQb?QO!vZn9M+R9kwwlse=+nKWE(Eje8xUoJUQBL9PC zXUP|6VF@jeFJ}Rx56a8v9rCgh^2JZ(JLod}d`g2(&^x-e$rm9^Bpc{QQ!nSs}eW~5@uZz}nID(vbAO3>U)01cn zi;a!51_wK>aj~(fgNLN0r8wZqfp?w3!4A8qVOCLe*n@4>AwyCJ$Fi`^bm@0>jo&Zw z{P^C#&e6@~?^eK{TRwW}-fX6mpp^2_pfboA(qF`#9mub$Jq1tS7Iae{2)V8KC|FEvab z8tQWCLqfv5lJ9c1$#~gT~MlPp@ld zuXz=6*{KXBmW)+G&%OP4k_EJ3YaeD$38EKnaylIRfMR0B2Y z%{r}Q*6Oqa1|}r(@kwS%NnhG8&J1gNy-9Ie%JcexIy>PbABh;a$>iA(@pR~VQwy() z>reX72+(+aQlAKW|31bDCr<^Pv%k@57-Z>eZ##ax-SW;wMHN(au!2f}zPxk(m#;5c z;IO7En&M1Xd1d;+>P**I{6D}s0dGu=-l>hFWTx*=A~7>FuhW?&lU^66PYNb5V&h%9 z2q{7zp5!HoQlj1)J5m~{_i1vaTzzh0ZqhV5jhm#ICQZ{%>N_K0MpAL|&B-t^!OhW> zXsV@ZeR=Hir=y%B9bCgqkP;reNJ3X-zjtoH$y)?ZVo&$U+-s-&g*4`rGqnZ7mo-Y0%@NMsHg#z-oet zqpg1P2K8IzpBWG1Nh8`@@~q|=lZNtIqPOxE6IjQ#Wazl?q+)MlxzxcyNUg&j#CZAB zCmvnhLi;UWzD)l4-xPF>zVWXg0Jtp?NjAgw`SI?>7~x^O$IF7dDFW`gL2o162 zQd=_ofkq`!LC|=CDMFmrn4k`UpPz=I8m_F0IAJ*T5v1T9a3I7u{M%bmm9K+!J^hhJbn7<*_9 zjJ%b7#7SMhTruX3PS9HA_+O%dd! zBT10-iQ!CNcK!3TaN<`;9dTs#)pJ6k-@3;5Y`X1cw%xJb+!8{94NfsQ$Q}aZD2jO= zO=l9d#6owmTF^973-P##RrzK+s+TO8J9o+Ax!~ar%b&|9<-^oR<7h1PaqTqZ!Ug$T z`NFr~(hzxtTtipWM%qMI%YXwVus1^B0cVNy^*PuMp4%a;(2yNEZHO2OyB{Da0K92$ zLo5>8lP@VDiU&e%j8UwfpJ3944 zGz=n&FnV_M?HSd}$LG=P_<`*o-}dp#$jAGyp5re9wS7sRFP=EI+jMKCmyO#+_u8nJ z!?)X7W7dl;{eo>SJF&QeV=cif${yv`MfS6Fo(JY0Z&xipDB<}_=P^Ez{{=Q5dLMdy z-V?2a1*%7kiAnXJAkssIs7SMYk3S`Em-jV(bIbe_bDntSxo6gGeq`kXx6eE{tKqBp z;5j`HFmK!&Yrg!(>!tmMq|Gg>tiC*b=HyxZ`_WLh`_SRLo&$}9T{1!nXafiKZj8@O zJw|3E9>$Db!t|OQ0%a?7)F6>iQOg_bU;v@}wkIp1I*-9;kY7-Iz>{N;1~vmaG#uQ| z@-(`|N4K9iAwSkNmv8A>#ddTS%Kwmmq82(1xcD^m2*^5;2r|MK&1)jogl^YZ)>_xt zw`+D9xtGWaV@o8AA*nN1iXxUsRF?KO%SDB4?Ut{RY4UkM0(+(dSwkFlaxM3OX(!o% zt_1_8CQ&O*l3$TOU-s+b+fJ1}v}w~r6Zg*-PRJL&F&O0^Fa0cE9F$BGv$F1QUT|Oh zKuXN0M%p#Rkcee2XhxH;9q4$1zm9S)`IPaEu+^>zd&8`JMv}u zwEPBbrkQiz$Rt)>n1IX7x1^uvq5Q;}r)oPvvE z9PeU`^9sOD1|c|%aW$4N)c6}5;5CuhP7R}UrcbY7p+YQ6Wm!y^Y4bR!hkEYkE4uc{ z_j7SwgM;EZjU6b1EIG^wj_l(bOzQZ)Z9PR z5vvOgi({eYSWllM=mucvkVXDL893Gsyn{Y)EyuhV829n09aZfd?miGs*a86~bYM_$9FK(}fN~xb+KaYnz*E>zbGK z+qUe$J8vIcwyj_P0}p?B?%bCTAE1+_mXu7LdUFZNelE~v0@;VCve&q_OORz=!*2&& z+-_MP+~N)QYC>&J5*=z(WZ%}=d0y4bwm^4IgWw)IZ<+`ZErdb=6CNE)m0(v5hK|nI zTDbkNHDleh3-UKKooZ+w>XRRk_f;RJ%PJ~CDJm;H)E*D=PEMx!&;LoIwqr#tVu3owSKhIaVPjG00*Ae5AZU0 zUxe!Sz`O~eVpK3fIK}@3v@*(P5imp%*el|0fJk@^20%&_(hdQLj&smdDxB&Z&e}R; zfn!JI-SVCedaRuuL;OzCIN=mK<)_j}p5yk2&+%G;@O=fq#YW)`-9;z-4$_H!ikRipVGs*xT%AhdiiV9@GK03;aFwvnbI0 z2;w2xzPN}`f#XG&nLHF}dBnWNu*tR}@fF}bDu*k#TfqtyAO}W)}(E@flSsm*t17D!6SC^&OBXEp|!-CWlb#xmS z+Xrb@;%R3vfB;>~I4*4Q%2l^5TCqZ&Hg>|V@4nknF!rvlT-$q3mA{m8+n+`Zn=QZh${P7f`RqBf z3O1L{xohcCnsWdG;-yROdtuY;3%ASvl#iocN{|zY1G}ps61DhzBtjH45hA1-Bealh z6m)pbMer~c#4~LKF($65$@66 zuX}=DE3DD3)9ul|ru%@rP2c7|(7dTVsyj(Op`UOkH7B&6>k^gNi-8ZpgYj8iTW*$@ za{cHBTt9hf*H-$(5o(ct5>9l)b6&0xb2IxPF1a6gsfBS3EFAKAgUD;Z#`qOawRe}=)02EU5^af2j4p`g=}gu7 z##5_JF~e{|BVjT=tJ2C9$FpkdjD&uF2_yZ$n9A{#u5N6E%da3-N zoJV)l=A~cHo%dnmU)$UN+W6tT!n7OcCRzb=$(wFSlRwDGkS~AxjeI#H2lNwoDyAzu zb&>?1gB;eapofFCT(CrhftCaktYhl<11yo>FtsP`EO0?UK&{X$hRqb%<5WkcB5;cv z@j&~pmw)K`7hMa}>EjnxS5{WvD!0Nhm*3fW%XeqK{FcVRPFVT!bI;5Fu4pPnPXKuE zX8{k`pX{^qhsA^3VaPxpmLNR>(j?5Fh_MaFh~TThTkWwJ3yk%Uk%v%3^;`J8pEq|k zaC5qz;GVs53WB)P@^|prrjFvUjSrv=9f|i@yW0?`(g64`&=Z932d^*C*XyqV-wj+| z769Fa`?*oF9g5A*^?6;P!2#ihz82ms-tfpU*C0a*Nwf_V<0GLh2=Fl^Y*PkxU@ZND z25~3tyg3Tk>jfj{4+MENM-q@U2GT;u!}9xoR>ZxZ-noWa7cKqwlCOXL>Gbe9{l4dl z>$0*Gkyq2FQRHK@|_c%-RBD3GjY{QM!)%^bYO@%&&I6i!AE;3zrVPcM&j2l`uB~T4W^c zRq_Uht#pr}!AhBna$7A$)4^2nim8H(jNer4u?Rk)KwyfX_ak^T3WQ!=Ay+C8^)TA9 z={ce~EWAlp7zC|IgCTTo4-fgrg6q`$=opQXf9V< z#7z~7wKr=^xJsc$ThHAJ=60F(0bzyq1+5JdY|sU$M+b%!dH~2Eo*wEN#9VS@*A7Jv zXE;ySh|Y^#Uf1s4eN7-vpC0=ePlFj@kTz+<0si?wD2SkxZgeFdI*`&wHE1gg4k#UIA$Bpn?hNjk5j;TX{ZGxUN^3-d36Bo5-GK?JNF4spQ@LmR-6Hq0w^ zk2BC^scs9hmu6+WQK{q1TC*;Sb7-Os!imnaEUF`(&*(hGyjQ@CD7;YmkB%(y zMQDHxlp6v;iWiB0Lo0|>!wup!KsDMGC6%F49Y|u}*qDbb_fE40Gqr;yk?39G4RkCW zCr+kQ#RB~tS|yg~_t8C~$;E|gZsbxlIY7KmGl`p~spP6PdPVSnu~n7(4lat;$c0^J z6^x<#0LG+~U=#utN~}~yWKNRovxz%`$PUB$pq3EbKyw-!=!m~A$K=x!m(yl(CAvn! zEY3_Ct(qRpL9#%;349Q%Y<=_1)|cOW^JQ8^TV%+A$xq00=o9=&xwHLyxs&qWw^N=v z<#KtAyjCu!>*-uNkFHn!j^fKDc<06-U$9|^M!$os(AkU{sw7I{-AtwO?mlz zLgyp9fU%Es%8$*ETSXoi`_omG zuYT`Mphv4Bs)r{m^?f8)?n%34 z78^NjPGzxthx|(y_~>^&dF=-?6e9eC$Bb;5hP}uRpBBvxitEePk5x zpl|Vxw?cMU`5oT%)|S4Jl0GU-L&97pyT%pW*YX8SsQj4X=x+i>!;Pa@VEnzi`W*qEoz&4o2M@bo_5b`M5%G42Zk(GWdH*~QzFIr zk3ODcp8sI+cU2GkX=?Mczy3`=C4an9{`;y`RKMi*d#2yF=Bs1WO-+j_FKm(9(r(Br z7(OP%lYC_VzyCQTm1gFRFUrr#i}WP@ZReSvyuc+GZ3uHgA2j4fpGj0r`wb92-5|gq zSVC7<7^*glZOThNM? zr1+dxy%q+@!eLX3j;sjM221Ja{eqOvgPs?%#c1gF_-ysI4K_8NQiptCxWLaszW_h8 z=>7*5fvbHJ#$K<>Z-T+S3>4@k>0}LZ8^gPPIT^%sNl=$yE8$U0s3NJJYFYw(){!!8Z!dW;s*UCYbL(7~r zgoW@m8(TFh2ytpQI$Jrcc(K13g+cXfR#rwS*o?Bw$?Vj&|4 z(Skc6270S+oEQNfQ~)x-gGxj6640X?0@Ub-Kz2?VqLUy$$3-xh>o6c?2CoD`hKP<; zYk(OYt-8EHuOY_niF24U|9z+0GcF7`S)f}7Iv^EI&u!J?mqFoxQQ?3QGQWNf9AT0J zcwiSSf<^L5Za9X5A08@<6jG!lIDE=6i<>2sN_)ANrB*l~>mh;n*XabkXb9#)n3H!2 z4y|1mst+~9aeY}F-&cT%*lWO(VhC0JSworSkZh`(*!+n~& zwf7rd<@T{X{9fT@?Lk9sKtdQQq0b*dZvoFuU@C;bZ>_vh&VYgYB{>6R_7*<^Kj1{` zt~>&=iv#7tthAn7@n!N6sA3Ty4;;$Fuv!%&kEDYzKpUaah@heHekTGtO1v<3 zC%mM2gQv=wMo%>YOnbF`fl-he8TbWO?w|6&zH3I2sY-i&AnPmEGBXo( zL>I*@xf;+kLcCLgM3r@ zRP9iyz*s@%igm``88`;T>UqFg6G13AJPI5W{lA$-ZAk8vGcB9 z>)=kwQS>a>jH~Tnna%+Bv}B{N@3noGabSE;7XuBOEA6#=Ml=hv_DIwLs^nEL8_Bb-Iza; zw%X~RArdU2Te|+DgwgGsy>nyNgIqI6bq3Ib(Z7x?^o26)$y(3`&Z~uRnjID({)Nn= z2#ax0#N7kuUOrVx&G>sDU@a+FOJKqM{VqyidaZ+nYQ3zVb_h$?j?`zdZ0!X7WOlQ@ zPH%=72r}?6MM^!5{5PFv*bN=uGfyXs>Hg7~CZGNXdk?V0dFu#R%>pZqd=|bwD>Hv{0t;*pj~i7N0jsi##WfuL<&6I<*wB*t?>=C z{qtF&1Y14Ewh9-3zak0oL5`V{6)*`QKpyspl21GW=A1&f4u9+fXZfdGDbM+t125GD z>s;iIIhdyb%;gAJj*K~B({2<8mxv?o<1h*9@T6jBET1}f5bDk1FLJBJN~o9rDt(8% z%~KeeDig>s@Fl99RDI?3LsP|w{?3qfcPJOiIOr^Z;UXH^Ca)4J<@@NZ7>gIf9O2ur z23{htaK_hPClXhbp8U;uOx$4l(CR)C^+EWCnD?zM1`^|BAx521KO%}5?ZaY0P;KD7 zVWLgZCv`IEYgkJI;Ton5e0hm+BitiABjd)q$9rbFXL@QOWVzjayQeh$@RLiMl&-dDQC2hod$}Zj9O)*&1cR2qrK`HG+CU zOptlPm^k_RV$$vjktLCs80$56!eA0N8K=bo;W$`H;9;b3 z(V|9J@w0f`?&f1ul7BhYynCFyj#hrNb>qgZ&u`f9Ja=ODO!-y03yxQ3&fW~@fM%eq zQbATOnCA;6N9b|hbi{aE+GOQ7IYC6Bn$bpLA9iid?$SkA)|IsT=CEa$uj`2dF-K?Z zmA&Irb5>7S``mMDiyrqCy*LHZ4BKGTnOOV+KSKT@Iq9XRo_Z;HkbEjC3bKn1IMQ(0 zADIEXG68ZHl~>M9UXhS_;y0Wx18_c6~!^5 zB2Q!zB->eU=54{n4C8h-ACrHf(y^vpn~`@7ix#o{T=B2%o6Ba<91813XwJ;e_mF$| zQT1AofLC@HSB>#`h~qP=JEA=;PIcK zB~^D?xRlD*`b1h00JULqdJhYJ#U$_N!L1;ILbOU+D z1k+iZ4Wd7tU^Hf$^>)h_!`op!N}D<*b3Pg8wQ#8q2GGXt0NSpYZaWa}H{Ci5xbWqg z^mEhGOb>D*4bGS!~!(b7CY9Fw7 zoL6NIQ{g!DflkuDq`yCVtV}s76D&&njf)BtKBuxkcZcrHwtxa0l`m1l(dM1wKp|d` z_gA--&DuS^_1X5iCAT)#FIjSM_6$0v;|d)$qijp3RsLB%=k`$Nkkob0GV$59>oz>Q zX6>`U?d{+xgMiyklIjaF@`OsKf zm(qhgsa9A52*XD}5H%OqXe0*b>@UydF5raiT9zQ=9rnp{VpSX~<$6Zhg1 zT_;6**VfrHFQScs&VyLsENDL%8=Zz(&}TT<6$39wy=E5Frz_Bv=<0RLbuc9mNG)%t zmDq;7jxV{gQMAin5bo-JIZJ`4CuUfu;KKal2Ehbyh0hJoSRe^$q(%d=Sd@8Db^Q+r z1vCgVkY0l`|JJD% zvAg+ug$Feo*cw>f`lRMH78=Y23q!RT+*o0pb}~0pI|l-%3Sl8v&n*y^Xz%6j6CTt) z$~`VTsl_#Zy;6{XKV*6~cEOCXoG<6f>qL9!%k)Vwt()n`@<5dazceCWCC_lMH_6hS z3kKE*B|^QhT<{A(VZLbp6+%c#w!s@*cY~Gjk|tljFh`J%*ATa;2{E5?!-kyqBX@;E z2et)8ZVbwf3NuDnz;$*G$A|;{Bu3lA&*Q37@T716gP=Q`agr=n>B+IM)YIRS z%~5elaRqVpam(W#j(aIiGZPjHf$E_a_N*B4fOZB{)1j2}`!Zgyf8%{v5=OJ~E9*G9 z#aB3|9xkg!zc8n1C)-k0bMai)WG>qn9=dSe)(u^sbJ_dmJ^xhKNxtOSn@jM0u}ZH2 zIy%E49>3{MF=tbfe(zHXOB5{4!u{MGB%us}p!>NK{m$SIy=rF_!&^<9NshE5E@D zF;*a>H!-XbQhEi^0pvVuQ%w8 zI)EIQ=+7wvyl7r`@O9 zC+*YkGwd^ZO`=I-(wcN8$*4~=j_h}HKOH72dZqmM?j?JX7{zp_{BUgp?`-_!=E}0% z(vj455Y}>a)cvq@-r1(=xj8i>e>{Atv+Q$-0e^y5F{j2S=yfq0U)Z%fCWcxD4<4GH zlxWmOZvOL5SWE?c4TDJLS>b7jWN!6^ngp$xZL-o`+D$~#>UEqBx`QRiR0Mf+Wqqwb zj)5ikF#UpFNU?j$w40Jk$ZZW$M$o?rXhKGkkv81n%*+vv`2X2sf3*tJ3g z7vLk3Z?DfUvTO2-Xa4v3MU}I^$uBMerb2cNbBvgqn9Nmj%ejZSjgX;GkHg$y?n5}f zQjVXvpE#F5z+p0pcMuy5XQ6y7Y$}Ln{rDkdFimIae3CYcWKnSRe2Ml}@m_i#yH~hR zTno$8o?uV#YlL;;R(mC>2c_ClY*}=ps8$m+Z;B6y-BL=$S zx_sqeHD5Ux^OZ0u#7TqyFkgA*|5m;d^IrccRr$38l9R9nUPzM0DoM$krTNk_NnxbW zDzr+#OyMKxLkXBE{3tntIXeuPf&`0*0eg_nE(PmjX&=}Z-%sqXjo0c0~p#6vLYyEeI>5ACGs0aS2M^8Q3bjJPzG#)-PU}@u`1N-Gg zAi_?@ckx{3m5q$+l(Dy=c1s{jJ^hm}>yL7lz4Mwq`O828lc#4Sjgr8GR1DQ)0`vH9 z5}4g9kOG;@Kt{7y=D9nA3Ed*M)vj2b-=r}=2Xmvduqd6ICF)YxaNQV|rz>PLbhFuf zT_d|qcL!SzE0I^}9w!g8huP!edff)yM)s1fmEmznhsR-dm>ts{(|yQ3WM_0|bYHQr z*pIp&b^nHU2K-yRs!N9aIuF|-BpVmbhih$8lo1qwkJt8*Kgr{qKK4F8#UM*E@k z4f%@uk^ffwQTvtjEBQqn3L=CoDhLq1L4x!z@_f4Z!nbrW{BD)+?)+80n;XH!$h&D? z*O{(2=xq6Eke~}jg+U-eGacm{V~!wZ=z9huGvR9b>r<*`s0Ariv)3d+T8u~=w4XDw z3-;XUVaFZJjeu{k_!pC@b2OMl`rRoKoH~F_Mq1pGrOq4m5}HMcm@N>N`6Fg{b4I|R zVXC!)YvS$!llGWm)OPnWYRCOXEd)~HOc21LY6NXCbqEg8q3I*^5&LMc=iR`Dh(k2# zrgU>A$)w}hIGAwB6z6ai;yoNJHWTkN-e-E8TMJ{BCyY;+wsPCpHvW0j^X6CRezuoy z)wN28^sgCTGrh}wVEn-Jp7|5*0+-%x_)JtCc8!ELZdB5N;Fv1qeq#?jd8~f=L??8X zE-iQY%8=LBd_Oc7x{s3e<+DHnI`XtHR7vR(0 z^WXjaWaf%V(`xIcPFhiOw)Ks}Yn#tBtv&k2OJ}F7-15{)SJ=w+TUJd03V1n!egp6D zfPFc8U;__sScN$Qf07qM5&F$JG2${zI$T3-i7z?I8y0LZYs2&omzfvbjD)qhfZCX^ z%x%_Zyy31;t;0-Xf_M@d<$x5Ko>$0C?i_wZ4LcR`uAvvng+s~23K;MKk!i3@JwUZe zWH;3i&ylQ$CQYlWn>Oj8tlpH@Oj)&M{mL-c%BQxhoO1T1H;%4tI@7%N@Efh5e<$fq zSmj(uB1nu6lp@Rk`;eXsGdyRDB<4uy&PaLt7wwkAh$W=CaXoEZEFQpYO)4%McEa)i zC#*jhBAlALt7P6PlU8GXa#r#7+4FY7m05#Vlb>gWmkKh6ij0XP#!u`%%_Uc_;vBOW zr77>IsMko(mBgk%v!I1Wc59 zBHSLBD)V|YupDwnRQTVG!Kan?r%Mzur!RSB)Yvr0`p|(j96=9_`#Qv7!ut7jk zI+fwTcO2Ef^Ytf?L4*>&9rHV&|GY3ZTCrfTJ1Ahm4ig8w!Nr;AN%Rc$)OnV%W&Et0DVb`$7+e9ST1bu`lwF=a45%gsD9zb%{|iZk=0l>l4k1 zmPD)D=C&t>B)Sqq-I38z@oslaCdt)IBGWV_x)O*G>dbYPI%|oo#9kLt=c)@WiL8vO zc9+C7k!H4tzfH3^s>yvfc|db_)C2A{WSs^rTC2X*aL9DXe8_Uh+G=aH9|}3-Iu!b9 zL~G=(sQvB?)w#g7XpgeS00$h<&Ah$VSwk7G<)Y-Jv(!bmQO@A!7Bp=QmKTm6GGu&y z>X7l{VEL`Ew1F z{6n3KQ%aQC6tNPZWvC^v0)L-^!EZ~({9(zb*OUzE1#RUuCF#9NKI>hg3F}qzMW95k z!`TBU$@1fN8r~v=+yUHRSsY>w5jOnO0M;k}pk&M+mVA0m31S_9w$fh$StRCC+W92V z&eet3&Q*Bl5@g^IgFwj`e+dMO+)vk(e5#g^;ZU+u#C8JDtn`;C*(wpabCbWF&)`i{ z0ZQW(XoUd`;C)lSUoz$oOFq4(1ThFeTX{_hVh||#%wM96G8GJpyD?C4`)$b>Ki0o3 z`Sh9+#2^4|C6<73OT9Xb;i?!t>F*2H@)tPq94x8j&KuYiflk&W%W|^IE5?q#Eh%x(pn*wC zGFBXVLzq#Xojtp3YfU|bwSruY&<>{iiY zBzg_Z?&z&YEXR$T>{0qnp2+v@Ex~>4dX3v*&{#B)PQpfq^|2g>?ST*`s1uh!I;^A{ z4%_u`wg)mc{um(%wtnCcUfBv40~W~m@2x|xn$&87`lJ-_C${w!VoA}P76nkFa8ry||*dFt*9rjWZt z!RtoJXBh;>6yA+R_-|lESs3y8Ji!oX;Wn-y2$cEluJsnfcDvR@j5@t0)NFHD!*K%; z?on1&h$A(M{1ghn(W)Ex9JsRxWr=$oQ&UncLtv3Ue=6&-@e6LD&GLg>=#{nS-h5N0 zwi&Mo`{cjJ#V);T+mEp13Fg^o){on$`7$JQIAXdwf?Wp8QpiX$&v!$p&q)UHLkH`v z-grKY@?nwRI{9x0t%t?CBRuh;-n79(JsRr>qM4E4nPDF>otP5Rrib?R;mZ~PUs%rv za}Elll^7pRQ3`;+{5GsQcdFqV+=X~S*@x(`V}yV{14A?AwF_~n%8s?v!5B*51|5uS zlx;eGxvB4=XfAs?JvVQEsPS(bZfPE$`}2uOuT(bfNgtKJyN~UIjdi!=j=Jz((QbKN z#+b!>MrA!9>^T<~Hz;w;1idiz#ih*~lKS0}^T=}%5kK^cPwtyF&ZM2P>&~imDJgZi z4{wg>x;s2CdCct5&IyCZ%*A*vjy}SEfmqxLJGg`X0b7w~k`RCJ2P+EzMT~X=ged9{ zsM9!*%bhtncO?%_g&6d%aXEKFD8zM)yE8c@bx88yJ95U|m68Harrd=(a>vzSd^z-K zBZ>6|!G?d>jsve>(`)D~rkN$c7JXzcq}7n2uvH#b7T_!&9>||Q@J>7J!2<`6dqfoJ`{JBDX(0B z%^1CQobhDQhg0z1L+sbq?{Cyp+6NRHN!bk*?qYjY#yFLG$zUOHtcv^sqagcVRMTS+aJ-PFj3)fu zKJE{=8TSVa6XMhB(r;OIdxNhrVbonWek{u$XD+|^J4{^k2i)Q-KlR2eZ)m)|Pt1v6 z=XYkD7GS%zhmLTbKCCEyMOyFJGO5ZPMkZ}b&$St6>Nl@ z%Z*+okEgpB)gMRr1-w$!}>M!tK5E#e89JV2woBeueRb~qR33_=!KINZsUeo+`F7$Ijju1Z62Fblj87bzy-6ow3t*+n&%{Q zcCLBkdwJFluAuX~&b5!W)2*#tTiGc(Xz6a)^eZ1*w(|#=Q|B-))Ve@37~rwVmj;_L zZSbxN-WCKW)(9JK^AeGVq@HC56%R`X`4xu4G{_VLllMfh={3P-PS6=`iO1X85HCd^ z692!-z68FCBKf~(-psp?d3Uatmy;x5NJt1F2jPK;+;|`YBA49vDRKr>JeK9Bcp{4e z$|~!cfB{7bqO4#xigNGjiU*6XZgA0E6&1+K|64Whg#hmF^ZQSjdc#alcXf4jb$3lw zbtS&DP-G(>d|P!uqzvT+=@s^WSABCyG+-6#mlBnB(yh{c;y!7I*de{*e#K)a)gjz{ zc%l)5SkNs2zbuL_Q`a`nlP5N>C&!(r=h5gIUF;!!=&3MJR@}BuAdl(7s)2lA*Spqc&+nyLH!exTd`?sHLT5auQ=+ zPzxEu#{A4uEkD@d8jMC4zj=$N8K{4obvfJIpVi*d@Q|8{pHd$wjLa7KL6K5BRR4s;NhuT3r)E#hO-x7#X61zP^16h& z=JogW4qcblH*bV*l>g?Gp`oE^L(+$4+?G4lGQm65H{Cxr1)F-NPs_c_@|0zr^+ii6 z8MVg6z|Ul7j3BL(VTz8~LTS(hpHEz4Of==lBRk)7^UHs7X#&XLV@Zk66fc9^T-ReInfDlH&0?{*)34iNki^xh){H~mI|M&UHKe)b6|4*SE zw>-va?LE^{3wg2uy3#05#I9sD50M(e1`$H^Q4FKD8k@z@onU<4Pg5bD5a|;-!=4Uz z_8l>2(tth-qyO$OzyF9i69-W=H58U5P>+kSi76LP0(drcTT zaKeP7Yp)%T-zj77UjF@#Jxy~Sx_9}1cD`{2;}5*=@ohnm?&E?NX@dGA0{n;{5hUaV zr$e5OC_i@dbgK~x=UA_$!3Ni;1Ln>&Y1U)?NYr^R#rtVK$3FT>^qFs>&q(9Gk;YwU zqSX+WrfdZrts*DlV@r6|Y7#G4&q?^8D9keaq#-DZcs_LTAene%!{ie|jPxJ^&`^Ce~$n{6rV<@iy&nZ#Lh@hE#&sNNr~^FAI)WV*qtGV z!=CMO*c9M5xRXvj~EdBwe4&Mggb9RmDv}!(QvX;^jW{VR+=(? z;-vA?VE&vr^X1je-s`(s?dOAm{x=UETu>PG zfYT~kzCtty(zoWpGBru$q+61WIew!nJ=x{|rM*2X!5~sSSqbf7E`0JJi#I|J*V+f# z2WS9l11TQ2fz4;TK>FyGsR$E>UTGrZp_ogU9Q6k(ax(vPb75q6_0b=r^)0V9eY<1A zYH#0OV^;R0WQf9`ruvflFj+@;ZPkIugfp`St5 zyy!ypQFR~W%iu_YRk6$J1(SS1oHyC6D*RLxurX;PV4JRgzS9svhsP-h;Hi@2%X6KYCyYcpIg)qOv| zYRvlu$|9-d6ZD*ZN-x;36u{2GVX&wOS7UHcXoQ#-jK?jUh+uXw?#2c)bKS(jl!@q( zd}7LKf(TUm>AOt zuD!@aINCbV650(7wnGw;fVagI&DVm~_PMZcQmk`=bJON1`S3S`&mawPyePa#YZDk| z6{HG zKs$*)BP}re6WRn=!Gnu8MzpM)G>26QWhQ$xt1DTNUz5yrLP_r7luSaC5J8kZ#8s%l zVO%fL@ISw#M1naRK!pU!8*B9WOtq!w>$4r5s%ST zQbk61+YR{_k4eW?P3~Dfe6D2wvGlj2)^0ia_XmgHa_jShNB*Jz=O4=5{w(kBTvc2? z_twCWXry{TpZn&ox!2dVA~SPmO3F4+WC3FHJ3$+=;Y=1~J*>h>JwsBlL%a-!GJGVJ zH89?*a={L15c>Rj~jkM}|x7+J%CYw$=dcEcZO|)49L=<)@$CF_d0x zlr{{x?Y1E|-*%h&-KTr^o;6Yjxl2{}Kw&3xi=>5@#Ezu^>5;|=}j9mgPp<7gmgOQ$HtGa06RAD;W zMSK{}IoR%arekB5L;3AJ2dmzzFl-F}H6hvmZeja%-Lcv-iu{DME}FHSaHN)Mjx?*o zQ(V!V?9z^7Fk>@u3~ww?Nx(w*?}sK8%8&j3h*px_I5>@FLd0Q%sytQR?va6>f!@K9 zQJzuW(UF;+nci8E>c|?;8t>Ddr@aqHYCJXGH#~2614Z2mt9o{eRNd6=hN^Mh##G(Y zZAH~1-5##m(rr^!UAOI3>%QWXv*>C<{& zUI#~763^=$o7)*SC%xNlU55_W1XI&8HB9dHiG3(j%L^LATF=Y@#-727*vwwXqIn?>7I?(2(?7a;J!C z{)wRp=@W7TC86@X>q7nVZV8RbonoC3nvrXv`G&58()CpO>^A4W&D0IULj4OCE;E_> zga;QcSZXpgS6tf*-e?(9cl3XB#+u%2X*&JYfsf5L^h!zo#i^M5xAkc25T~s-y8WuiyqR618Ge$eB9~A<>SkXM;7$Hp;yo7I|%8t z_m1BUEAKWS|7~eJOvK1tq)n7)8BwB5YXnx(3T)Y|LZDo!$o?=AN*XJ<4KCclJH^QpC00C+6z}!JY;3`xQnr0frF_Xs> z_{@cW8rC#FBCVwN2DJQD9bv4)Y<*^=Jv`-T!Vcd#mUoC?J+rEwl^g64P#B$~2-8}%7(T*X4as;+J^lePu=2Do6Eaa#{@QG5@@K}n$A8&v7*x8lx_K30XoLlCDaQItu`tpX8V7Q(jm<3JLzJGzajO%O zQcQMJFhLF^rr7PK>_ofQYDzVWm!!uO&r9CN0!jFI5ZLHaHl{!4`ZUFyMM`0gg@!LZ z_)?&MEI>zTot9(NWb2wDpsMTMO{~Ar=dHTVz0^y(3|_jar5%T~A2B{TT?$2auFCuJ z%^s_Ib-X2S_#L4I|B=#*+n?Us^Ir9vXeedgnyqJ>M}Kh8=jZ>(1J7Rk;5{F&oK7L$ zS|<3p0@lFk9m8eq$%??0+6lqnbW4Ja7s}ed(8*hwD)L>Gyo^HIVuXiP!P%4O>V$v% zgo2PzrH=wRG_+h{Vc`8=pI&KyFlEQsnU7jkvypW4Hd%9ef+y-EF{-SPHeOKWdGGXTxAvkyZzF>1!B9ZHDuDqF@cRd z5tmc8s}^B3EwUTLBKkl;qZj!Z@N^JM7W6q#O<#!WKl1A6$55g_oB~%hPMFN*y*nl7D*`cd#nB`3OOcl04DG=4#&$+P%8J&I%BnlMkwjJUA^-fA@>;0XfQ z!T&_DYbP)2ib6P6;4>e8)TAW>o$5LACOiKULHR|36ec%*(s$si?MX;0OZEWz6S5SD zTbf|n-^Nmao)l5*!X7{+O99YnVoTJ#PyH(tl3_#$%LsZy7ROtzy*3JLhvi2NgdMYD+<(h6t$F9D;#Z>zV2aAD~#Agx|ZHOeQ^5dbc%zLN%1U{bOfWP z8I=B)Va(M18}O}f!xZ>4{2h_@)2572Cbw$hRyqpo(caN^(%+=rwnC-u?_YfRg;IA( zBPUC%5UF#rbPp`7c^*Zc4n|nZ7sJb?C?jkLXm*qM(5xMF9k*}nxY?V#+5A_-#_aIB ziQaXcjUtfI$s!ysQzwU|L(i0o&Qzz1kjK2uSGyLAr_DdWBmZoH}CewZ2eJby>b3q+sZENq?2+<5DdA#t~ln}*(cWAvT!xL*j# zX(4S_V1ocEd0)ra;NK}IaC5;s5K*wRqxK-TUb!yH7OzNc{*}}RFQqn%pJSq5Ya4#HFkp{+>!;>M{X1G`oZG|wdnB=C>O9haXWS=(4mqZed+Xx z@lhlH7=}s7WV(rX!69i(bQAUCJt$??rBW=AMkvLIuvHeT$!&z^F-ARr6H(r90!sYABmwDV`_0l z@}iJ-x(I@rvJ{NC1q@})&)Y4FRcVQNvBDM+q`{&bDdIDQw~loy70W1jpHv)upU!9k zsRE_d(f5>L(f3w<143YfcZ?ptpX{K`<*!Cm^9Pod7iuSi>O0#uUN9 zB@_I`pa3ytV-jSBPT$B|guwU|+6aymf*`o)9r_U6c3N@u_3#XfNjguVhA1YP^h4Ah zwW}*H9=g~7BmC?OA7418Vof9gUU6_5aHWbAS%DtQZwRGJUR#!-hgC`xl9T|OJp}WlZw{~#Pl&X0 z6{h&Sp=7_3;E@ZhsdkSITU#g)OP*!Er3uUP#WL$sV<9*KUt(~Q)OOzbXbz| zqsx{DG-<<>Ot&B?%_-H@(xiFUZ4QE_9G?G_w(&`p>JB}1C?zE|^~h6)3a5ALGQI53 zxd-w6sd)a_Xt%WUA)Sj4w(%xwcBJBbe+2h^k#r3fsZCW?(^lm}pj)<$0QRtRn6HP(2#y#84l@{eN^F#qB)gZK__ zE4}$`9`{;Dq^tnO{s8Ud7Z{WDFyXwjOnlx;lOD7UwZ}Q=hl(y2mTgsZmu)Z8W=?b2eF#@W z8#Q0sZD%YEw6Dzd0|s2b`@~;f-~HiVe?Ab~Xa+ZU;~D9G+K0v++m&W_Y?qo}*@i~$ z8sB?nYkW7FU%odwn$zO@)NGCKT=VO5XH#s3yyq(WTT{&b_UidIrck<-?N#p>F4^o} zVa;p2^hB=XG3=Vy7^bw0r`%f3fVn=o?1@Q#0xh(VH(vI{5PK59lWvziF~*);Z5yn_ zY=f_UV*0O7jIk$suCgaqV)n#WKQaB+Cq{aL{s-$nkyX$X*-b|jQjWh2cIVz8tTZZf0lwh!hwOsZvVB|VRi z?so-TL05t+(UoLL#Rw!(q#WH9H`$e}CA*V7$=+mNvOgRM2g3>B#BfqlYOdeL%aWLy zAtYt8?IGE(L3h?oDrO@^SuRzK1&LYhR!_P;t8ZSnK(;F@m#(i>hh)o2xT?bZz+=g& z9b8(Z3|9%D(gAfCtY2u%z3vr~v++G(AZ26bF0r^jB7)TLFS%so;v^%NE8_vt*NX%4 zoz1^7`p^Lpe@P7)ZZP(SreI3Mt{_yK)3nkIrI>CxNHe6$OGU9!jUEEm$>lj=3HlaC z>jpAxRD=H`SKN=2+D(356p z_wLuP_rp&i9<{Vkt&ksN%b)hU|~e8JJ`_A<;;`7HA=uYah-YE zhJ!b8E9)Q3q-6uUln$VC{R?;A`2wA4lx~nmg8u&(Kye8H$>jGSi7;!9V0Sr(QFtvv zGgx3cL>~u9XMG$CIC6dF3SMbu)Qe8N)vs83*dU=ly`BhU3 zM&IUetkYZ_bCYhup1t*!X!v_496>-3i6?87QbDR%+Q$!D3~GppFyV5#;{bRJnpJ@$~4iFNCk*Y`!g!-D-2**lt$s<6YVyO|Ku4}f+=Pn9@)Kk)7`#S(_Z^wY~cqE)Ey`EwaZ#mYeZzb7{NlwI< zv*i0aB63?G*>Nw_bI6#i6Z9~in92R65>vUzFp+*k`j~V>fm9$D7z&hvl!8z}YC(9g zG*}*N7_1CV85|m%IygL98ZD1Dj8;acj1G-X9Ua~%ZIm|}HYyuaHikB)ZVbOEy(zzG zfa@+Cx!z2DGpt8$B^yosi&LhQepzsPdLZ9$=FEc};{KfUxO9s&;I7G&CQV+%A?~Nu z)`^k8;SHLNS0-g!aw-E$W#bv(CVYHPfhe97E# zP}bh)>TIcak2GeMbXR8dfc#Z*@~TCTZT;is{E^aQ4@6rYi${_9O0qbdA1_=v_TBk& zSC090-HSrHmsWiZc}Afp;2__u4fy4~5;$hH9i|b#jU+g0g`-wAtdaaKyHR-ZEr=x* zkfE!+2qicXUe_nHm2g~EBFHMsdy1~2ugNisxN7+z>~4~Ivi4tgY2v`zl-=f&;5FQop1E`I&EUuaC{vO(DnZrU&pkU zLUsLGfE`fcBYal*SpFIGz0+xp`R8viG76EW?o>X8{4R*3Sn(N; zwiSZUyUjwM^{|zSK{CtG{gF4;!J?QkFb4?$)u63X9RsOO zDaQYA*eY#jz>lRmV7ElxU~sCR;d@2tP8r+qioH@AKE50930A>OC^ceN*W1jijQ1JD zD%wd8d%ckl*bn49!n@%VdW+qr5?F@AfO*ZKQ(yl5U~{#hOty61)Tw#I(B%7y$lqIe9YWn9qb_7B^uer^mrLu0F`&Lx_&yZW6>;KHo>n9j` zZGB3zmfVnARFz+_J2`pftUik{&`4s0yv9H~faStp%$Am!Lh~@c*Xnpp%BVAjQ}zH+ zuapS`o79Lmb3=Sbya(E84;Xx5OCCIz@I|K0c6dL)jtVYg2ec0eYeJm2#KX5oxURIC zzP8;GkA0m9b@_&o6W?jP@v&Y#S5%IkJZ)~jA>&32x}o!u-aVeY^@W#5C}TV`Z(O-D z7^uz4j#NatJy=kjpP!WcyxTK-%5`Hf6pHcK{dOzrLc8I)5#i}~ktDZG(_Ai_)9FSa z7Kfmn@q7WlNLKM>FnW%eD*$euvr=1 zBb%Ck`Q5Y6ZjC+#ZA0Hy-ZOChzeN2LQ1=}1QY0w#3AgHk^o2%Z0!J*wWGV znv_-N$qEq-+KDv4bkR;qt;^VeFZyBO0Tt2`*ClU|lQL5i{3+0wI?WIGvsY!_7h08; zN(`HtOY;cKB=&z1#qMul&e#W3q6EzVm=N$%VIIDUjW3ZS`@gdD6_lAH&2PS4s;DaN zS6Q|CmSLOwZQRlKjtehdMx?D<*Gu-2K{-X;^9$>fld5O+Svn;8_+`Wbw?K2x++qc{ zbP?rZUnH&ER#w)vtF5%O9D62OZ9-VHJ9cUxOt$%CXJ)z`_IKf(N@jXOG7-*~-+qsj zC43UO&}Y6<)@eiOI`r?5Jk^Gw48{NFe&+>=jX65I zN%w#I?ZxcdCpNV9!>RMo4{sYhxMcD5J=P6HKg=gu8+z$HD3wO{7&8C2j(K5@(SflV zx*zpC&tltSgr=FVMe3x_Vkv^Au{TEXe)<#fHvubByt4;G`QO|xcB!Oaf~sz`WiNMQtk4J2-M9M;wa-c_Ho$tiZ&$vDhb zV_i5TYIIh=6+MD$K^msx*<4Sz1gkpIu6E(S;|mu}wYGP3gMZAue>! zL)AR`&}{fEKh^)EVdEqmyN9hDC{2)zvk#5F@wGducjU{-L!(}q9@Pwwo+#S3{Ek0-Biw6%TPB{RHTA`kctf|8~UY^9D82Mk3lwy@XK&)7_K^HsQ(g;p177 z!)i`WT9FDxB%H@F3!wEhnuC>*K%7i9*uI(-5R6Y2E0MC$HDVgbk#P;A&1KVUZkxyE zwfJn%Uuno{FJoZ)$+7kv-{;#_;a-E9QseY-fB2gR+1`Oy;4~XfS zkt^*0i|9`(!tArAnfJAXyUZnWUa887cv;J+Py>e*YT^O~2AVLdC)M*rsq<%~dZvOl zZ>F|p-4U16KVqTS?J>=fUJ@K?VE+=VK35iL` z_(~p5OV7y6%7&sLuYHGW@;eq3b}A}{1AJ-Mvhs?`ZdKhQJ$hc->$=|8_vzcO|A2vm z2H$YwO*ap@W$3NLhL5;y`o>=ggfqf5Dv#?^?8Y z$YN`<{DO-FN>35B_HLZ`b_KLl3Wgsit<@_Lu8+?0n_bU9Y{qyME6bd*6I(-=E&zf8d>lKR3Sn-of`jICS`k zIC|{(iNE~y!;k*<@ySm<{p@qZcB(>!%S9SySxI8KXu+1aFjvKR-&49-8Vh^%<s>xx@HP(pep&NHN6{y)C(#ttb>;)pp?&)AKZ#B<_a zu}Zulp1?ls_rZE(wRl?mL2N;z{|44J_lQTuzY&9Ejd)T#0MEit#CNc4cu{X zUX5rJ4WbtFl{>`4V!U`yOb~w-?}|g>pm<+=Aifq8#Zhq>d)#jmlf<`TtvG=>$8j-P zG>LDpZ}e0FOKmYjOcyi7CNWFQ5wpcyF;6TI^TnNFq4=k`ODq>In?*HR zXN6cP&WL{@5>B&-#%j_6YpcJAUr^`M;tND)`5beykHtyxnfOqA3h$a7v2?GBU1C43 zcZyfU0sP)A{v_^?J^Q0r7rWXj*5m3afe+?5Fsq{j%m3f&SK<)?r)fSO6OSwJqn0@2 zM*TEA4@uTRylvbmR;z2pCa5uc8qZ@TKTo`E*ebT;+yY6Lhvy#|tYU`YCNT@YM`W_u zSu4ij{0ir@I3L7066Z5Gt7HF%8?KmYC>CGhTuFJvPh|_#*+Sfp?=DtjqSyni!9?R0 z{4Uf_<68W`PVAA-)7i4dSd9BfXF4bL(0wE7p?;$O8uRe%ZSknO0C`p89`ZCF6Wxp* zM2`Ai%QuLxFp}y*IOBIUa5$uZ1~^Bl6U8ufw|Gg}%fBPl8Df|L@p*A?q*^CllK0Zt zvIo9zd~F^oUZneKwf-KZGyDhdzm0kx!^*c#Y*I@_*fd`BQS(F?*NMtj$_r{N>;Xr= zOarPnPO3N6IbJ8ipK&6*t~eP-;72&d&lr9ufMXQbm94lDer->}tIdhJW9JW1hxVz( zxeV7%H6-PzL9r5EYA<1+Opcv72vt7=&kqpZ=2~d2-xvAD7nx^T+Y@;ts;5P*GD1|S zd%-UQ#1m>x%O}byQLNk}p24}mm?KKf;~1|&)c(YKl&3mW48Z$FzJ3&Z)d4)z0lNnZ z<}1NGLi9qLTZW2>=6zxq@PTP7Sqh0`IQM`jkKtq@*OI`uOQ5YOP; zhaJm1;6$B7G4V0ZNAdonwpHMJY7c6Q*e_kj`0osU^Kb?Tht`vLEp}2nAkX`8Zozo~ zCoD9jh4?*j<~l z$+*Wy*A{Fp22x*jNLa!{qO*1ub60FUj3$B6H#CmejR9JH7qqBu;lZ~#pB_sNtF}au z1dUJ%EbmkC-6IV;kqpd*vqUy@Bsn4%HWBS%0d|eZ7ad`(S13Bcvbk7v7A07VmWr;T z3?pBKs1)5qmFO-aqKD`yu0_nV>kwP)dc^(ei*;^)L{b?j28qGq2E^gIN!%=kh+D)^ zaVug~4HqNCZO~}nE=GybVvN9mj`3hT#)65E`ja8!r$Wk4hn$}Y89y6Ro@6|t(6Nla z3-Wz2B>Ymy_~nrAB;D`E$V21OeUQx$V4V03#--n46#5^?-G?!XJc4lvk{6@alaSd@ zL0bO~di19;Hf_W>vKb@Ob7Bjm_4DEdu@&Rli{g*4q^QA2wM}dnFY|anBLIyCuZh>i zZcz^@|AyEr-V|@a>h4b%>-J-Ocn71~pE1V0i;+zq(GKxwMq}6sj5mM9=<-o)r1=En z%x4&PPKm$s81$w12gcN|F@`l^wE70))me;y-w7H|zsKnLgE)sVi$<&q7^i6@Yk^{3 zf;}cIAz^clZ9cKe)bN91 zR|Y9dl>ex=sE?~(8oL`87*CrjvAe@>OxsL{P2Zabn=e>4L-Ew#`jB;>^p|h$Th*W8F5BGcUQZ=@|1fm_h z^v(7i@CW=${crle4rB%H3p^JL21f)p2LF{%nXo*ued2?ON0LS)M^e&L{vPTZdNK4? zYDVh#)H&g);f3LQ!)wFOg#Q?REqow+H2hikoA57b#x!qQT3SBlY1gL>NgJCsGi^!Q z18I+^J)5>IZBJTb+F#O6r+t^6ntprwpELX!TQmNaY0kVat7F!_?DXvZ*{icZXxAsl zm@_ly_c_ONrQF}-{w=Rd-jcj$@;+=|+5X)Q{tmORDY@ov`CaqJ<}b_tpkvRDZ*=^k zAY3rA;J5gDs^Iy89fiKaXA561Jlx69sY|C@I?eC2wbR8SOHrVxtf;Z*n_{i_&f=q; z1D*3b59qwSq^8F7_f;=e?W)>eb)@RksxwtTcUQZ6x`(@0cYmULO{8;VNTj-lACABaderpzuBVr! zkMJj9DR8%4AZiVE84;z?V}NBX(*VoyeO-g^`f$KXzF*I<2`~%N2?4_)p9qE+rZOyT z8H+nzTlN8#wJZRne6mDkOC{j&mR*1&8BXRjue9{Som~uf^Zj~GxgU}v3;mMdF;01$ z;R%LKoaPMDXQPxF!19)d0V^5SGi(BE2iyw)yWngGDbOEq7sJzh=NG^nq#;;|TIYy* zhWlGi;`#u?CfvyruIMg64W;J^Hz<%NLdZW)q%zEE@#DHz%L9OYfKQ&diQz3R%Wyrc zWj)|XPC1TKPT`bO8BSw3o#70IGa1h29Of{b%WxjUMGO}+T*7cE!(|MYb6M34S1?@3 za1-abnbXuT4z&zl<~zGUfjqIBG29;|{0}f};53a4&){i$Q3{&02d$0))-!AZ>TH84CgYO$8ZtD#SE7)T*`16 z!{rRC8LnWslHuBxM&!SlueWh2+d+qp;$^dd)t-k>~{ls3|?2%y2EkZ49?Fd?o6~ z(_PU#z}=j_p5HypPmeG>%J3M&;|xzQY~qw>@K%vG3(%dnpBH}G{M!zSD*2IoHjsDT2-;C#ByLT@bww>JU~<@+N+!(!w~_owjv zsSKwvoX&6t!F|6VAwG3b39Cl%bQj9U0a@!vr3wVHG1E*Gpq8U6xTiu#@e)X>LEQQt;D z>glE2(@RnJvA8ZpJC%xF&>NMC-qG&>`!KwT;Vms;+!@N(!}xjx!;vix+#km|OyPH@ zGMvV6I>Q+ZXEL0{Im~7_hv8g?^B68-xR~J*hD#YPW4N44tY)}^;Yx;^AUR9XFQ^tZ z3~L#_%y2hjxSvZuz_5YuH!}Q!b3Vgq&hzy}hEc$-pv*qNaSUr1)-r5h*a%n#+Wriv zL86v{wsai=&0$~4Fbh0fhCX!?uoq}v2I)a?0N=TZuZMvr%TNlXoW%F1@cpR_r!kz) za0bJf3}-W(!*DLcc?=gZT+DC@!=((DFWH_7Q9ENil&SSWU;bMkM7%pYFjNvARn;F({S+xvb z<~t31-3V9#{D%X!!~F`DkQKnT5!d7S4oSiaF`MtqVK|rJJccA2D+I~L3PG~50<-gW zfFz|WAf@RJ$-@dk@~}c&VAu>;3GS)^q@G&|?xO1uMx{znk6;!!zml=4WUMN|W4&;v z55t=n4g+Uag1aasVOz;^yAm>uQch(!jp1~LGZ@ZfIGf=dhI1LtW4MUnVuni?E@ilk z;c_mqn&AqDD;W}xRbp=&Dt9x(8pf)YAr_2VwFs> zN~TyPQ>;=D#k#Rn?*$3D4{N~P49@`e1s^^PNHV`K_>it&!3wZ1=1yy{GNjfV1l}V^ z?TB>+Lu$uCg4%JASj2EK!zB!tGF--RGsdPtz`PMFOBZmy1?_bbkVb)9P|8rOG^sBP z=Uy-Z*UPZ-bOVmW^;keRYCVo+{y3KT<9HT24(sA}xKFdtaXbqh$FtCJJPRF%5dp2s zv(Ry<^)6h~EOeZpS?D;Pg^mLq=swLt$AS0e0@5sW9M3|>37UnD6Eq7QhjE0`&@6O3 z&ojsKJaatHGsp8hb3E3E?eLW5nUjF|F+iGaP6GaPO{4Q99-Sxg=sbx>=Sko|x=*9? zBtfI|B;d0PkVfZ8f=1^_D18@J+$41;v(%l8^mI*9cQR5EB&j=v+jk1L?-XFW4{LO4 z@u_@gD&LvLcc$^3X?$lo-9( zE$}>v)qEMl3Shn#HKjY_7}hYXWmwO!fng)VCcqkQ>l$wB8gAl$wB8gA@v`!7Tbq(;`g==c-8gAbta=uRcp zT(1HLy8kdzz6wm}n${q%LL);@X|3@pFd^84JG;53@8+If&$7LqWqUo#_Ij4>^(@=# zQDP->p%JH^WqUo#_Ij4>^^jD(aGzv*J#e6uB-`s*w%4<4uV>j_FG#l63zF^if@FKW zAlY6IDMyfGd%YmpUJofpkYszkAlY6oNVeAtlI`_^WP80J*`+Y_Dh8 zz8|ZSvEU?HkL(8@<^fhl*8|owYyv#MX%29j1Dxgnr#ZlB4hTxqz}()z+}^<4-oV`6 zz}()z+}^<4-oV`6z}()z+}^<4-oV`6z}()z+}^<4-oV`60F36M6q2zG%P! z=6-jW``uygcZa#(9pOBWaGpmv&m)}Y5zg}n=Xr$lJi>V%;XIFUo<}&(Bb?_E&hrT8 zd6e@!%6T5;JdbjoM>)@6Fk8++zInSeu2+?P-B`uY^w zcNa9S#LuVDzGDGteSHcoy8w`8m8a0Y1ZfU=iu=(ioB=!uq-fkk;3yz~S^R z&5llS4?4v?=oH$W?$G-B6xy92t*=j^-4|dir`6(VL94~nf>w)P@_6?(Q}}C8avHS2 zq(S;xkOt{%)*yWix=n*bquFT_ORy%EU`;H+nplE0ff|)~N)oJzYu&^WtcfL96HBlr zmS9bw7^Nf$*2J}LVhPs760C_OSQAUICYE4LEWw&sf;F)OYhnr3#1gEDC0G+nuqKvZ zO)SBhSb{aN1Z!dm*2EI5i6vMQORy%EU`;H+n$UuT6-lrrrhF4iuqKvZO)SBhSb{a7 zeJKq|uqLK|6Vtzm>EFZ>tcfMq8J7QNSpJ_wA3q5#I_aIxfx-ky@AM0|$S>R?zi^9O zKwA_*&rTY@3p^9Mz%#K6JQKUXGqGk))68j_IZZRCY34M|oQA&52z;X%gzqxf;bW(a zcOtkJFp_-%|0BzKVVV&Q31M4>0KSuLL+MW218+;pM24y??493<&QOstuieOn3S$z+0ql^Fq#5P!?47-@Sa143@$TE+j& zblX5L&>P5r4kV;>Z3~ILZ^U-0h>L4Ap-8jQ1nUzcwsAxFbQMuGC^I9rnl+iMRux4U z3@~3c$woynnGk{0=s*#AzDR*?44*a+iVC`Yyx6v@(*p&WO-vv>!OLyvVbe?kYys|oHys+vf|ezoh#gEzBb?fR2mtfP z;DpJgA>bSFl-Z8pZx#?0^`We-4u=sL0}~KTMpf`Giq$wf$`_Tz`(V%bVFD@4CNKrH zBe9^0g5Z;fxN`VI4Vdnf8vJ2*>-4ai5&H!6Kno#3>!GU1-egAsAc55iERYTqLFQJA z69DwEq7um2q7uE#3MICHy)B3Zhw>FljD&D4;R6XN9TQr=!}J76EbxW~4>)Wn(h6cw z1wbVyTvDiT;ABU2Y%ZtKj&?w?W;5(IQ7ZV|>;}oX?G;oO@3*0c8Aw~r3N;9-K@~(n zRv<=Yn5c`!DF=Euyk-G1pw$s&8a!(w-ihIfAEu?*fdXtm#Rlq|9Vm~&;aROt+=e_r zYZ1#>(5+BQ#Yu${J%BziP%VTW-i^@%I9*8(ypMLGmUn;$oTw1m4}Ak9fVglWIv^E} z>Nt=yJS|KPMhsm^rw5qCf=HDpfan~fM{92cixNFlpaGnT1&t^O-lTLFe|R~b7W8oX zbb8pWP6yG$j-F3E5j%`V(9-M#1%Q$r^dP#~t#&-N*<1jihn?s_G+_Qwh)T3cD)A3U zqr$ZnFT=f+2!Vqh6W;WzA0#6|606hcG@0NmPX{57H_QlkXoahi1w~r0*)%qxB?S)F!=jd;XvcRLUjQ8ht~a8algYN=>cNiZVl0iLj_ zlo+WUL_-|ELJxYMnht1!2Q-xEfQzshMS>o7H>5cjlz7wydN@2DGa3SoY_i%7__f)< z@7Tx}OpE_<3 zs6g!C>@6A!Ae5LMn!|~Z2Otmv9)KQ3rUx;QiTaaG(dbn$q7CSS9!49eX1C%cCI|5q zrDMLPOB`SVyg)qxQqkdd5oubYAZ8|dfT198jkX{& zEztv9b`?FWc8ihu+Q#&7yWI{T1_FUZCJYy`1N3kw5IxKmr`?V1#_>y|H1dlbCKIx^ zx)H`6g*ctS!sbSKh^UGGc>&EvY?_YV0Cq9iA$)AA8%W!U9x&5Jkwzru)Vf?CzOvg% zNKrCoZR&}rJ$i!MjXvQ)i73Kh0Uv^d4g|SEhvg=4+Z_(4&uc-(s5cmh26wy*dL%f& zfz%g>9yr>_KpV4$5fwnwP?t1$JRT2 zU^h*d%L)`7=+-U`nrMRphl9GL+3UsL>~xp@kV8Br=;2Ma36h7J!|O&K zRt-aS8+w?{$lK;cmC&sr*^#SP)126r7&-fK8v_;uhQn!dI?P0Shso~*)}V)z`V%a> zkr=7rf2UIz9Lqdw;%@b_b#CB>jbQ8@DED&SL?Q#==5Gcjz0zKSlM6{065~l~=1uHro z9_nT$ryFlO-EK|K5($}S+Z00YgCtI%X|=ioDADb9!g~=U06qLpyT$Erl34LMfk!Z4 z^?@(VZnS~{zu;d;oe*%*^To>`NgH}NOcde8gbILFsY_b?em~IzcU^WTDB6Y|{#3** zH(AjO{2mNlHV;i}P=VNCHiL=nXfmRQ+XHrS_&pw%2MprYf@lZ~3?7>eP3dx4&?+V; z_TB;37!F)cFUaIFBQa8AQ;jR=0rYWDIjFP?Y~uo&Hk&7i5>bT9h9bceS^$#R<8*nD z-tW>hPh!yKccK;^FpvUP2mhiLtwlEJpx|P)P4m$EEeGAK$B^}5F?%0?F@Lln%9k--3e$2ogOaDp}DNY zi!L*$1Qcn!@}WgEv*y9uE{_)(&;gd`K5Qng2K(b+dVt}8Cg_piWqN3Kjp^YIx*S$2 z9P|jd+-`4Df-S)G00YtFPp3y3F)hgk5)Q}!;yivh(TJME>~Vo)n#TiXfZ3P_h~X~& zE~iH@-AVL-R0#S&Q$*dzpifBZhsA>I9cVH)#D>=k^045Z)}{TWg?-J^jINid?<;e9hpYX&Zh+v#?gk);cGKtx#+ z5)!-`-Nm0~<>>^c1b-xC5)4_a&i3 zpU>@axV?}&PEVrdwD~l*59t%!Uav1D3E_TFb011oFvUTC29sohY5zBRI1!)+Oz!si zz&44Ai9R5Pq1}Uh>?}Y)KR}PfEEf#kY!1IWF#sNO_(8tQ=z&h{N<@wPZnxhLdT5D$ zzsK)I&fXM|3H0zgs3|>g3Pay?Tar9(py;xDAYaf=EJ%#h*pXbPFj$^tngz^-gZc*E zcVhtZ08NL(pNtayem8LSLGC!cNp6>o3I{zBK@Wc@*^vllwEFFuhbF_|UyMpwUIa)X zSxLeY^u!PzKQu74$7Mm5U@sC;wxpyaKM=!R{6U1rQ-U5z*%}!DLMkK$!DG$ob$Q_;hyLWYBzrwT5#uuCi`(V3 zA~8}UG^d^;q!7zA3-xjjk|HtY;2?Ngkgs zkecF1a$`&jfPoau%$OeTY+_oH4TLaA(uN*xbT_ZdiY!4+5>aqJPew2Sx{E)X6%C>v zpht3!PLH5BIf3XABzh2%`eC!7Q)_54ALtPXqE+0SdH@0a06kK2-2(F=NXe80(9{*gLi8$nq=4cy|8>SClE4T(Ix*a}Gk_U3bip^pJes3@V8PI_?Vwq-Tv5BNeO!R<+0-B&l zY65B$^!i`XyFwFS|kR80B&eyjvMxnNp7Uq~UmPmAT) z;Q>>}=z*PUi5{U)CKAPHiB2=W7C?>hWXw0tMTXjkQrB21nYLhOG1 ZpvJ#@o~VOmV^XC5<&}%wE!WpVGW@^4nRBwBZSQ?Q|7$qO zoOx!R=eIq-eMZI^V`2CuGk5udoZJ^`uVgXy+aowzT`{w?%KN8fyBYfwU)iLFRrPD0 zeEkoH8GEyaF;Ua7w%hwH%ds%VlHwWTt<7s%R{eg(f1YA2^#NSJtEIkc4Kv|~eYpkS z?Jezn%}4(D@*9l#as3kot&OYJwVH}2VgAXCMHaU<)i<`@e|I;ozYo_>YQ+gxo9Q=z z=PrCtZC%y9&bqe!2aNs8F#tSnWmD(sr(>sK{>5izF{uwwm$fi)dn-7l2q{Ft$S#TwH6YdV|Od~=VKj7zbe zY{xxO+{uVS^j`r!#xZB%_+}hSz^^QLELhy&d3o5e!t88e@EVoHvijh$iH&0~29M3m zXvvn83LbNoW{nLVOU!AV9y}Io(%^Y{*s;Q5tmVOL zRF-RP2_BnRoh>|gY-aJJ_5_b@Y+U@S!DELf&3a&F$C|#*wwBgz@92gMZ|=BpdEVuH z-WhG(UEQ5c^{d8uOI9~zd#AUzdn@UxE^lR1S5xQOrpD~SYrNG>o%P-Y^{czQ<;&aK zZtrQTY-(?+?`ran&mKQ+@G`oJF3JjC^xs<9Vg0(L9oE5Fjm6u#y!GDh&icltRrQ@K zy&cUrV&JektQAe2tJ=D{+B#NyaeZr3XA>}O>8xMf-PAbN+uYgIL^n3H)_1lvjrDeS zc`cHxGO<=ypdtJ_w$V4Vh#jIQi%ZSppEtOiZ$8yY%Rt-^}PaA!wjPeYSFO=BCF)3&^)yGe(ERv5fttha4-LwipnLDJjS-P+O94PaKa z1s9?fbar}nnB9a>{7t(nu&>FsKQ6yWMMfEq;qhNTHd zObeP}!651Mg?d{%R(%y#VncIJ=V~knir~h^4sTb-SZ`O)@)b=D-E_vFaeI45FCo;> zvAVI12-a0V46On(^~*cfHt9GRQmlh8Cfj;HWIe_ z_HKwD4lr$fW226}PG?$tO?@Yz?rE>@)X{Hj>S}Aj-U7*?YS*;ls8g5H`UXtWMR$ZC z>hj*Ok|A}C2GQ!w_2AiyYc{?^iht3b3Fe3@y-CE!6ZLRMD^_x}?(qEqv%MHnRqqk>uV-VyaV0GP+ ztQ(kr!r88lcG}%K>xfbHUU07k6LtmnF-96z*0(fyv1>stU0~_L|GsF2SgS7u#RU!B z)ZT2+uDH-!R9;r)T~Jrs@6?yPA^;Rom)~iYpl1hrlPWN!2)l2rMF~WMQKSP&XttSEL}LOq-?f#2JR~> zukx0b%qywFq*dkmt-+~E3UObNcV1!T%wo(ueMU)XN!8-9-lCGKGMcjplTP&MFD>=XD5+XdRarQF9$kw|y|c^8=Mjw- zmd%=8RZ?E&olyu>rq3v)lYk9Wm{~f#WZqcstm*Tn&n9$2i_m33bcV=5H_R?9E3BMe zI@Y_OqHtyj9e|D{m4!0_Ev^LZK?$72Of$>N78K53h!eOjv;-JZT&Uv#1g7KPOdT>E z{W73S^Hh~rf*?Uq7L_b09P6E4S+amQQdC(EaEYI|gK%63dg9WOvLL*~BRWT8Bc%gZ z(cM8R&MKTf3Q!P&s0&k5mgG!?>oi4HNfvwsk|LcNuv$OFrUDr7TR2V2AXSSM>^Ev%JwGcOy>8dwJY=EB_^$MSHr99MYR z3|!OAy71{_O>jzAv9UN?!dBz@Y#dEz?fCJs%E7t1^lweLrwRA0#qUO3`PF&6tXjXK z9@j6x%&T#Smz87PcFc7<>%nLxKJEC_>$7>;c+4~&@O^c*&|IOJvTm5^|391^%=+KP zny&pStiv&H)3GKR5QXbOt0vI69>*(ju7fq>_g7~a&I4M5J{7pL6Zg`LUHIJrihA{L zUhtU4nu0uS(N|iH6^S=ASF=9aG`L~|?jRUia0QKbV>U0&tkz{>jXqmfaD@)c+KsU` zjMAq?ztRi&Fr+MmMYj$GtwoTLOwo)D`gN-ykH+kw8R%+*HY5!VSdrv|ARNt-S<&De z$-30iy^Z>OgnI|BZ^L{BeqM~wnI6!FW+7O+F>cVO8Al{x1kGriCrWvTtw6F#TE^X>q4*} z+M!kYYDBl?xQ;aA5FduP6{0Jx_f?Is8h6s%v?GWLLlg_`mm#VR*8{`vBMfPO8{As1 z!!cam42sYhn*Z12^yz$U#ySQ@*?H`0hk{xMEN95*l+k~G593wZv!5R6>sMtTfk8lr!f zz9)$1v;tu;oXfNuhO|0S+pE)jHRwkAB}8X0t}@OLu7*?^yTH)QL>Kyy6=}keL80N4 z@73k3QKxY7*Vx8n+-dMQMBUIGq}M}!LNYvw;rr6CHKkZ_xUC_%qCHI*81RxL5S>H& zZY@UJhG7?4vx%+KxlLHn)obu$STfrEWO0bXq-}=i8-hD@=Bt*$;0oCx$r*Xd_q6WVnl zyFs3jvG>RqAqeS?;r7_rsSWU#>LE3>x?yV#=^E0op&9=-wAPKgb_grOizYcX>|^r? zxhrOcIOSdZqOhqI;lOKZ|~ zbjM7bS%~j+JR9d`1lKFWU4#Q&KM$X(Af#0|KeXydsAy(mJ%Vf=zExuW;vme^F?WeR zAHh%S7wPks>37k6ML|fXm%prJ4nn}t+d>En%?LU$+T8X59zR?P_M@YtqOEebRpT-&?J}%Vn z4b4jTjg)?pGTKL>>q7U@4lpG4tGdIWQD|+NdkA-uR-&Z=A#vHD#y_8TNZS{}#*wvL z6SQ$%n8ombL-C+t_lJBP!wwDiMTsIIn>l1rLb`f3tc+oOhhH~zmMBZn5ZSMxsE)1; z+2^mu&V;Fvy`bxcd%_`a#PBAKSc&YT0Y7<2NR{G}PR!G* zA9w3et;Y9yKtZ$8XdB9jL-aKA1BAm6ul^YiLb&`h`je;F1qm`@tTvs(iEEy9c- zHR81peGLjU>tp0ggd#1X`m!Sc9`Ykr;@$GcSuAZI(7j6+rz>a%44|WkEwYsJ`p@TVGur?q@T7WD zjo|073Si@}^GobAz^WN11i%-F%kGMe4b;+S(ez3 z`*mE@W_Czw##&zhlDEYyq*|IG9xQ^Ll(qz}e_s>F{Nnjs@!Wp#J*RlK%c(q@E556V zqki#>QylS&@9Y;(UlmVX6;Ep7+XdnYO+20}4nMX)IlNyyHgCG}*aGoruJ~4jIJ93p zVigB9alj)U-Y6dWvDmMPeYj%ZMzL2D-`q1>`Q}EkXSR4?cbxKoCU(b(`!(?mP28u6 zU7FarBT?C@i5-dJ-dwR=6L&?4ZJM}K6I(U0MH8Dfu}Kpf=lYe6jp7bXYzPzU`+lsf z*F@jCrAptAMc)>AU9VqRw^XbP$i05CRuet@MR%jbNRa2d-;kl_uIXu`)`mXe&@wG>SH?(N-W@%WO((jA&_gDlNI9*(sVDMI&x&+%Fn5 zvAo`{EZ0Q6UDVwctJF1$+m^YN+hWBsw^(WwOKx>2OEht-L)7Aq+Wlg2jZ;}XTGTkj zqN}2M;g6MSO)RWhsx17mShz*5THsfzmWrx?yudFiH8H;;TbZwkifmC1Aj%^|nN7?C zRP&~bQv4~^#N0Vy%3Qyg6DCSDQ9L_LDb~d7Fj1t5LQTxl#LO8Rm6@8Du~AIdMBu8p z<*Jx=RZN{ULz$|Hn|>||a8$5BOwj^s#N>@4A73ZQS<0jtVxlG{Xd>@`K zS(+HDiA)S9j1)0CQKY9imGnlD<`jNzRs6Xk)gGgyZWJj>fs&$$WPD5h zvGCz~U!3qJ*%Yr!cu!t`EpSjyvWY~CNDRmcZV`{m`xD+F}Rq%k!;srm+8}I%G&-~y0kNxjX|398R z;e@KlpamQ2bsv-bC5^`d^J~06U+l{od&5_++vGjQDvmk&z{u+rHFBJ?_?QxZO!&>m zWPi#he{b-Utg&+|YP`pOP&g|%Yhm3ioLf+X1@MnfW3|FrXoHeiv$kJuR-Qy3jERj3 z*yZmt_50kc%#vi5bLzcI%)ApO3U;d?2&A=Q_ zV4~g7k_xl1&4DbSr$~yz6s|C)m=%j^F)6C0K&Zv6$SkX7lMpl}smx+^zjyJ!%P0F84?x9au^pwTPeC{zz)!bv&s$1tC3!`72s#|M*g3>_%eMDAf zz5d$du>8r3d7h1@go`{=3P1fXn`@uQz5VR?x0Uk)w`-5^rh$_h;e1*gl|BQ!gmYrR zrSKA&05hq~B&lY1fB&xu?<-R;<&NWFDZo4>jCUNBQjcPu^HL^#FblfI)Ewm%bU`Jt zvcQD+Xj7?Ru?kO&w3LRsY+;V1#Dw^`QL!=6QIX-EFt^L;u-mK_v&rCpq8j0KzxP%& zp*{7zsZ;x>((hBbmvXVH@P+3IpUJ0xQo?-#pM0PG;W#O_w(``r!!5ibT{~9Et5UUR zS`W8qAGSQ+s-5ujIaS)RbY9WSCu<*7ali74R?i>P>JMti4`|Ezqx3nz%MS9#2Hw<; zg9@{>bMkK3LKR7+999>YqB_D;Wv^?lv)p5vmpR5eHz|e9%Nmn3Dn2$YeQf3^2azhv z6CRtAIwsz16)vYRM_JA3<8)zp?X@uQGsw}Yr%s*9?LXzd?0(~N?iZKA%5nZllO|3` zOAlAo$cU(DZc0l_7g14>5wZzr;!A#1R5bohoRFHIpJ$4Sl4^E6(cI;}YyWNSQgU+j zcgm|y{#5(zpKfZrsr#)3$xD8|qUI;h^6*b`8pqatcaOTYrD{pIRO{T*SX3U)Fa0n( zSJDSHQkcsv05x*0uaYGxdb#X zhk2&p9|Y)P?v<$*aq0`49LJM^kS8w}cuL_D(o&KM`MlgoeE9M3Yv7sjPwsu}4?n`E zxNP2 zxgByIj~(lb&r_`NvNOst!F}Ztbcp-%lqul5X9}bO!hY)F7ni^ISI~*R_?BaZBpvLBo<)hqVc!9lyb@O}q{bBprgO)>Kb{DfbtuCwE;0?IBN*(G@dWs)T;Y7e)s-mFG{Pk_O`s+ zzhcFeyFb$Y_R@)@gzU`1U#u&8bbiX*2aE1_B(0D?GCrk1*e76>U6)?e`*Ri0I7tAM~7{9(%`-@bj z&+ZGjn7YKNVt!5m^P)VFSYb1_a(ON-p#4$1r2U1@l@{=b zM|u8%?`f|b(%v8Vq4pcbvtb6P_>w3Nj8h6N|=4Al{>3FX1i5b z)G)z?#9S`fW^p-GkNdr;7ju7&50s8BWbP~PL3^LNgcBrTTv1GZXmKUo@6T7l^1}S$ zb?pFeDbS8}YR3wAi*}%ZS9J0U`Qx9xzWl7Vo%fwx{`$`v&hkEO`&mHt0SwuPiVXdb z5(r}!US|@D zQ93w^xQa9Nx`*##8nn+nf!N_T6JFDDR;+Rv=2L}zJoOr}?b0yAh#fNAAi@l)x*1e4 zsbK~Ku?jq}ND(RfgH+TbywhP76&RRN6w8ur@`Ly>npC$5G(Y3lpP3{Xdx^kVLL(N8S9*Kzou`FD?#_; z4BU@1SSXLDNGFf?fB*Z+`M<4#&TPK^seDYA&=fW+;E8Lrcp6!?Wqzv9EMm;|@Kk6# z-D$db1!|9IGw8F}bay3Hr&20Q4Y@119vB1@sT_$^&NLpKteRBGP)PZcJg}6)dG z_eoD|zy03TxBcNR{~f=rJN4&I>D_?~M~+G}dcME3e*LWJKOdj_i)T9D0md?9W-l<# zWcve|mZU~s)ZECL*hWw0Tvju>QB-^8`&!2Oyh%~AB{`GHk@04`->gQCC4_-8c~aPE zmmpCjQ{+rQp^+mDB**GV0-=yN%{}ITlk6n_*sTj3MgRk@U;%xT2b}e+nKzHA&y=HB zRHg)Efu`=4sHQ|1LRA+=cwvb+OO9G5&o>T;5Pa6^cN*XL!;6n^THDoLdGWzzuQm9W zz1n#CzYgtrF6rdcuim%0?o7LK%{3vA3RH`=jfRfpYVmMt~~ zdsh{z#4WHr?_Jab2;IB5NQ&PxC>9h+P#|HZPiR-qJ!S`y97H6YQm!DmLfXWs)6B`7 zA)2KY*ti7}mC45N3|j%4%%|8U*_-W#D-|i+#=276GJL?ws>9=dIp7))f zd1ltYvUHI@(9AXEe1F~%?J%!oF);?wcZJLZ;fO`-%p9wllfyH0rAko+Z3JT<{7(0@hc-f{z7aB6 zW@xw9t(P|_(j5C7#~kOJF}3zuN3FAV%nJJo#|r0)G3)K?9qXNap7mpP+IKp3I(Lpa zU_anE;5;zq8T&JiXPnQBdCC5g<0a=yW6s#mILLUgpl&1 zZ&3F^=?!gO=)iG0jMVsPz&M;M!y_$SyD*%S#%LA;zbfV zhIpgYnD`)jkUuCrm}pyi3nvxt3D2=(7Suvdbxu4HH`#7(L|qsftN9DT*wc3Q!(smy6*ONO1IFDVWI&XApW` z*YPlfA+tX`O%xRDkQO)V(rsqukaUx3ro7M;IEL-#a?i;r+Q0`IAd;?oq!d6z`K!kR z*`bV;Y8md8Go`>>tP1kX+pT79vM`k#bV^{I0${qFUhF5Yj}llxUp45J&{xE=CK<8p z3yM%>iJb63*AVF}$nlMttUzRhi1>>8Ze6Oo>2VyGyl^h%ldZd7B|lep*TuUUSpNZA zrhF(r4c#y=Fh;6F2A0?1;X3*warj%T4z3m~4QGm2t*$b0iABm0CPWyyB!*Wm1w(Q< zWH#|v2KW{!l27Eyhu6N8%~v&W=5uY2w)X^o_i6qv$^8esPWezgq4PC9;9zx2IP&??5s;S$GSxb!0(PYikh3~2akWlS;gc4q z3PL|cUd>mLpN!c7`qWD!K-bMZ!EfNOI5~VGC*buJ;WvDKLd$tt%Q?Zxr|*Y+MPt7T z*uTSpB99Ut5pJ_PoG!O&4O1c_!a39*(<3i@b#Z%y%-ZJE>a&7$C@t)?hD<1#R%D&dB$)4C(l00P{E2?I# zs;fBNs%e_Mb;{)ZTU%aOUNvLck_`u!ZCkRqXvLJ$>e(|ujb80h(?R7hn*cCs19^5f z(Ut6*aFeS;bovrI{1ZDImd?lyfA;ig$Y;uSU-AT|cqT`yp6K!FsJQ6yqo+fA(>8z_ z3%aiO-hb*6e3606xu@N4K)WFasH(aqW|UjW&l42rFkdoquo5x`zT8Rq(NIEOWDz|1 zFrYYag9D+Y8I+RzyTZp8?fogwcyq~~^tj!-zkg9Xp9) zw6YeZSGm{h(j8Qug7k3;yi@5fzvGeTrVZ4cJ1>rCOQlrh{MAgpS=*{O2V%)`=flT< zC5IOr4ezu)Ff~?T&KRgXC$fUf>7t_oldCp1rj`}CYh$|{NOgy~lnA$zn;fIO3X6!h zCdA83a>n`GSAdZo&4ki`m-KLE2*==l0CLz1KHV}S_Zu0(d_FE95M+o%=z!Ns@-Kh! zgFScLq5VMnc;G*I)e2tt;v3ucyj{by9{=I`dzABszV*PnQSp!7^@(;>Iy3OmkppYn zrDko~eRtF^CcnEH+0WhB^+{|&V3a$|Q5(UVShrl8P#rPf>*it18qcB~UiXz#6lDhO zGX-Gpzd^Q{Y%t6(_N!O7w_cFQa6gWB_#l6}Hz*^N(gXR_dVqF^#xsh)EH zJo0hCV?pjC3wxBI9>pwx$3pN}Lh#64W^)i0WFnYkiL;J?MNjF3jC*ho8qyjn)Bung z-@xtFQiX5e*se1KMDfu9ERQ@I|NuI5DYi~TJ{a$(^ z^;zvdCtmw)h3}T__W|&$d$s@k>(PS<6Ak*4rm(WV24<_Wi3*UiVx}rAq!8$!Rx4W+ zBw);n$;_-kS7KJ;gtfp7*GI4-RB){@Q*a;Qic8iw+wgs%r`-oBfJ6)BT8R83|57bS zkgZywAo&<2rGmgI=1Ee%GSOVD)F>;ZHf5c%&U{dEBf}3zAR5gAF=~t{O-WPzrgU?@ zG+E>;H>*=kC1SQ*q%0OS$`bWfQ>)ahELWGC){AxWI%Si($#l2aF7HtGiBuyc!+jPo zL}&U2;pUG19ny|32A=%}aebH6GmzhZMY=GM5u}y43R)>_N+52ihFw7FN|qF)iv^RE zI912rD5&II91)D@>?fU6bM`uuF8KPFfg9(J7<^EVVQxE52+RjrC5zRr9m&^PRZmlyDZUCgel3KWXUk)OXI9_q?y)rrd`r@({}5_(qqy- z(}ULUNzY4B3O7kk5y_*aMB#R(@eDBPm4&{a-e8X^Q(AW zi=_Yr1vwRou7K7@9R#F=ele8(l`E7wF;Z%VKb9LxHHT;!`a48JPSRcBF{PWlrdy;* zref(Lv`TexMk(x_3UWS*g>nI`fA>1H+GRH828i`Cm~tt; zcBUc_ZmIRK+BjsGQ(f_iUNt^aw<1@le5hv##~mN%2hi|moS}qhD5n6==0>~0k@_2S zX!O)LA9QI#u7h~`X$?Njnbf;sw6jX-<4?6+ zTK9|Je*5wEKdpV|)2k2hA|Ceyue|G#1KLlt&z{v@*na5YpqC@RqwB74c3U6^4i56e zP)x8F&{j}caCb~LY)(r!nk&qT+hWD0aFfSljf=pZ(1Wm$$1|dE5!?%UVE%k0Q9*Y) znGg9}E`k|v(EHq5?`x;D-)cQ)`P=QeNS?8AoklTS2XfqKgH>Ni|A1BLx`|I`=|K~JqS~{btq(`tbhzIMCLxLn zPYM4DBc)GmF)`X7v{QZU8~K!<5T_7MeR1};(IeRz2N|Ev@C`V zs8u658sZ(-dc%;f_=+1%R`SU7p}`JSw`>p$Lb7OLpY zcRqRT)cIE-#ZWS zMLc}vFO?@xPs)FETk*WHi4(uQ_qW=`oN>P>EIP8ic4=DDq;G8gm?xxxB6yD$GQ|`j zcLjVhIeZ*06nTIJs%}-8NruCLLJ#~qJ;@i;yrg!opaU!Da7X8cl4ugCSwC)&Ou{5b zi)h);{n9ix%~a0HO~6vBL#FF__PoiX*POvQU!VME@4z3gv$LEHd=9t#>UqjeqXrFq z`2wJeWWGzXOGz| z2Os?Dh3sQzU$_Z7`IFyh*Q^N1`g?9JPu#ity+4ax{Y$i8YQOp9rzwkai4upwCr}1i z!@B}$I-iie5MUGRqrf<9C}(Kr#NAst(t8aWD zo&RY=p`=-Fl5SG+ ztaFtj>rQE_b&K^e>45T>;zC=IFj-Bu7%AEuYfnc{CH0v1qB$?dc zN!CfW$@aNowldRPY@KbZHdotPq&Cs2w%A(iePW$@7x_){J?6VDcUd2j4v0sTqvDA2 z9rJj23E@OBB3g>zDW^{rOL?Enk+R+%Xw?b_-bLl{npOUSK36m4kFKSF=hyKLJmoOx zXyfw&CBq3e+-oA@AwnbKAxr~-DM|o=3t(;~hz5cKn;E->w6H;GHThYKy7a++=C8Hrv*V_40bP&(ve-v2JJg@LgiJ*e&lc zZ8zU(d5}HCA5spe51SveJZ6289Z|lkK5u#6TB64s7M_QggTf9T`xa;Xol64;s3GFq zz{h`-euTK=cT$`lck~SG62uF(HK-@e?D;_cjr2!ikLZsOY)GgJ$bnT=3E`rN$!0S% zS&(@p+UssB(SLAbem(Vx>fqYaKmj?yqopaL1WChMu~^<9`sDk>0qG$bRFFw z0=9`#wX{OnChe8JseDIzS~+4yGZEwt*us2k} zpaS*sBjT-m_{Vm6U&6Hw;-vT5%?a||{k_WhgV#Ea9+dZhzLn^WTY?@}6S|FjvOo?N zfh`iTa)&B)uq9?_JK4mrf`Zmo*r8MCdwHL7)w;8R;s^>Cq1=xi=EP7xBXRNJkmE&j=1(K?b+Q#D}J~9xroDaG=i->0n9?JW_0meb@B!z zbu)Qvpiyt%RwA4rt<5f39r%lWtyCZWW{iD`MBjtdHFlvm@4)8#Oa35M32j z5#1P77u_ATCVE@cmS`L8B`P9=U|(q(3V+Ia*ml@{*m2l*IQekOQ>lkDEr`@bN`A0- zoSMN=hBAu9L)}s)bc+N#+2qoVCzI#Dvw8Q6cql6zr7}s{v#s_gjo#Kbm%j0i_1%-d z{h(v{{@Fl++ZY6iqUoLPU#u;wYHXmV+c;YW zTFrqZC$YJK_^`R|GDm3yo6F1O(uDP)N(U-D$s;QrBzUM;Ql&%3)VLPuW3v;)!wNrcGJ&9~&Rq zmz{mW=ll4b=eWP8qA~@%1-wcEAP)y`zZ)n`N|d|_iYF{4c2t}k9giakDikHhuyDnL zhbnO3a7uQU66OgjaIt7_sXe+>%(t(1FYzRVBLa7^2#-H3!l@>MwU^$zh<$_rlAQFf za@N>Rdh&AEelqy`&p7K3ZUk!Kq?#sWnz`OVF|;q7T-40@mkmc=U%O_`kDA+`%3Al5 z_U=mqf7sSty?63Wv%u*66AKED)HnX_&8K-*Z~21OdTIIJF7ab~o>(xy>enlG9jctS z;MWve6Ib_us}@Ms?m#N*utv^}C<`l%vEHGU`qszHPq(Jp&?4rHh!iQQ&Xl-h$}%8a zHUemhP_A6MNGwLb!tpi1%!1D98&e5^u^rIb)W_Ry?yz)NJ8T`P9sZ8Ao#8tp4ul_w zaP1D?9kDxdchte~gApouKZANe@eRs2)xUIv@4=pr190)mn;Xf=m5Z=kQ28tVRDFJXjkdyotYb)k?>bWxuy zJSHUXNnFIagkz1jMn&+PIPKk6UV8P|sAI0QSKn464wSbw?C#GI@9r*p0|A=EW@y#& zX?-_mv!4cPl6eZ*psZ|ZEXu7M=^e>~$C;SjA=zN8I7`Bp_yj2~kwyz#i7DJU)?=D$ zww1~$Fi2xd<;`r9$D72=kxo}4Y;%T_MJDIyRZl(BqHmOo7pYdOou^{ca6>e-Uxo}( zFwWKY5A7NF2ZLrMN7sh*aB{FyOAlE?&4st1n_;+&MCXeUiqa#Wel=e^qy4S^>Eh&B z4_80`NveC^TWgQLzINs8pS0Y5B*VL8%i5B=a!MC&?R)+|E3+>6RJPEW9L48Gx=!6s1R<49L2I92Ii4m$cTG!UXOYm zipy!WNfx`}bUDL4QbZU|xFK530@PR;x0FV#cP(*nhYO0-ZAW5W33KuEXqVraIx1*S zhNZ12**79JaHBl|35`4fS#o6DmL9K*8zSN;ort5@s6mrLgAk^{ZHG)&-e8Z2+_UYa zZ5Hc_+xC6n?IWAfTl8=1_I=wTJvp#M`c_VHWYw~tKRvKljTktzY}MgCsg;m2P(#WA zHK;@DcJvUz%`|%R5q}JJXf?1U@+K7)7kdcKj$byVnjtq=s1-{0nbGz#!e!R=s^K~Z zEW@M%{aK(iLY$CPptH%82PAq=W}Qqw`5~V6{_O0v!|1k%)vBd@z~y8f@M(IO;&FM1 z4<4OkLbXWLm_U(|vp|?7r-b5ngUhq3(ofDShsc==eE5a%~b*?&h zU09t5(Ndl;k<~PMs`IIdi)Wnti2KK7eQ#}HVov+5Njwi|%XQc8Q(m1tv-nW$VRiIp zK?(gGaJRBg0>#7QK#@UJyo_KKZ+H<8>2ab(u!^^dEkPO2jKm1iR&a^^un-VVqts63 zaO$OtH>5ofHX4}@gLQ*x9fX|7dQ4NKC~1e!7-`#&jSHT z`dCX|0a@tp;THz}FmO^z8TiPcOHfu9j;z!!F)FowkvgnWJ3=6_y#i2@*j~!e_WDX( zL3X_Nr1mbB{@bOXt}xvK9h}Lo1iGm6%dJGZ6uZOjR2&Ywp**OuAgDcJl~Hk{qN1h9 z7$t6$;m*X3idW*|Mis=k>_SdJCnU!sqiNptahqZtJa$xk46@)#oI^+{Dss8@l!Q1( zdJ0chm5jJisR$JCOda*okRxNn`qcKVKR-Kl>cuPQe}_6A#>(NoOi+Z0p`^2eUvWsf zCJV$k5y+~`T9bur@!yFBZcsJD)lPVx$#8!3-}ER!&bE_V&F041dw!X;;p8?P)!a)* zAD&E^d!}psx7<}9ZFt~YW?dIOnmH}1w(-p41G}Y1{kO#4+C+zP-E+%Zwsfw&ncW!EZB9N1p@Yi3iAE>@(%jMVZ*1lYH&lZ06;fMIlFZb-LZuJ+CK@{1fn&>Z0i%}CvQ&Ol$M<4x1dTF3fa=AF&Lbpa7~Zc+!rtY(~vDF z{yHypb#4vSKX1$(AaaA;A%Y8P_Y-yLYtkP}$NmVBCK%v;HHy>i@RwWGRX$iSW!9Fp ziyoYaDDI6pXEr?h%G!=OKWgcHVszI@o^?_>zV}d7Mfq=5-}g{uS>?a;w))0T&OWW3 zLjcgQeBe119RTq7wOaX2&@dbgqQ?WJ@jM|;4~wMeQ55_9!>A|$AyGo9eZ83P+3enw zLSYe$aE%JaMJak*WQ0XVBl=h9XSjE|wipzDQYIKZb=laP@8s zk0|MMgNTXhIcL@%{b_GU@sC^XIGpNzNjv|NR&Ynpb6;%kU9=B@Fa<_up5WQ*%Bq$( z9Qj+nsNDAmpLh9z1M|x&5f$lPoOnT(vu6SmOp4iJhI2yY0kgv{Ic@lhehQ1ZKt;Mg zOq4p;TQ-?&R`hX)nJi%zbE*fb^(|;rBM89mc?$|)&zbPU!UVH{}3;1vw|gG5LfW$4(V_87u;w3m5#PGnA0Ms$s(208W`dre|Z zk}Xu8oWthu#cZ+uxLq)v5E&62EKJG>1O}f#%aKA)Ysf66Rw!Tlj8RG zE&IVQ6G6Rgh#QwHkHU^T9hjyEg0gBAiYMBGf}bZApBN=N+Ed^WmT=w?9mzIXHrgUW z?{c8R5w+hSa&(QNa!06J@yb*@ay(LIbPp=1XO73{0%MDnV!~Tu`l9+`QR*5NO6t1D za4O;5159}NL2`1$i+V796Gs54Kf*%MBdUI4dAzo#S5@aN{87@eCm&bU-a`oork%W5 zuG>9u82>|wK*7N+cShrR#k$>mn)Wl2ogT=}3Aql~zaA(Z5zsg&#DNL5Q*`qcS7tEW zneX76T*Jd1?s6jF8AXDG@-2}g7y|s$I_Qv6(e?1)GZCQ&eDpTk(8G*3QbiAp@F>KH zGU#AVa?%cjK2}TXZTo&@m{g<{_C9IlFT>wx7+(~rCCVmNEriSE6!Mja90=Y@+r>^uyuFlu+Gpu-X#xnFsx4JZlR* zF?OAFx3onPCdn+IoYW}AujES;l@d`Rx1fiuTk2AJ)a}v^u}kq7dW5K<6JjX8fTub` z54ha;_|^;K%nz6)qYlVZ_P+k46!ZGPwl5J07mJe!pn%_V0RJ1n&(7Bc=BSxeO#+fA zky?e#3T)xGq7pN#j7oS@=@fVmmQFYQKb20uN)^3!`tU?+p)$+5K&i5}NR7%`rQ3R^ zvK_V4z19b;P7Aa*N*cCU5v4?!BW+_vnt8M(1EI?#>1K2TPBKrn=HXGyQc?>ueTQq9_voq zz4k}&+}0!NBc=x}2W>Zp;uG4RgIdm^Z%YSrgtT1tccrJ4$E}C0C#6@Vz9pp0qw=J0ZQOoG>4^zG$~&(h+6a=T7ACC(cjf-@uD$F63)fAAngK#NG6{ zc32$luS5OhEM)R+@XW?{1d8QMG$A73&P3~|jcVc6Otd`FADb22v}A&ps4Sz2J5$K$ ze?#Y>%w;p=m7X*}dK|r{b~K6%mf41NZ+?B1(1;QAXAKbdp{(#86?C=jG7-&fQ>-`H=Af=PTP{=z)!C*J>l|A(tL6)pYPH6+ z$U>#pW~o^;Da~q&r5R<{wXBD)m3y!mdaY}1JJ8IzRk;fdardBIaHs7-wx2&N9+JPQ z>{lPMKE~rlj@3QQ$-etSXzQb{^b3gdA zU)pcoXWM7r@6a1M4HNgZI?Sz8*Uj7^I~R;P@g2gA^FjX+eQZX~SSwu$zMj)~5Ru3}rUokXeFHP<`WH#d21%G}hs{#tLXuQs_hr8c$J@5d7~dY&AQ z66r4`phw*hXbpNlx9|!1LoX+w$KNQCE?-EPcki;KJa1n|$$YaZM^P5mmnF=8`3aLL zOR_G%{pR>-4{Y}4jGCRFz4LBV=*#!_AKnw`X_*@{BkfAk#F$&AJg{nmcb5N;!jhY{ zaPHn!4_(=?J3To8m1$W^;LoWE$ccJhlgUm}YM*<()a zxVTKbWY7H%d6_ja!|RT+WVn*jqZBn;@br!h-oY}!&m~|ayMdD)@Hc(T=pkMjFIhsr z0+K|i9P17|C5rx=tPIy5C&-^PDW6`zH7OrQlmnor4Cq;DlPSWaS9FoMMATwJ{#R8~ zoC#(3E=$bwt?MYMFqv{x8B~v(^W$%u%sSPlB}{u@Q^LeiMH6#&-mM*fK&N^{cynoN zAnmWoxv_yMyW2M;%}NK=$7fZ~*}HoGl}+DBOC~@41AY$Al#XW!EG6LP?l?OOm+Ruf z>+Fflm57=R$p2nH5T&LUv?4?TnB?>{`XTTpPMVaL8y!VI=;u{FZ2Lj|>TjZh-u1|` znrD~Ox4l-y?0jTd^)q7p@$y+W(d!qc&0BE1yl|?1Sjw(nH=gk`l}YI=6}&~y2p52> zhl$|GD&#E_nUDQjpdtw|SWIk;Pl=6*!)KHd8yn+Q677jeiZ97-PfSqkiShKkASuS~ zwFpmKt=F=^lMtKWjmJA2UFxVvUs9ZiVXBKo#wO}dk)jc0(4#gY)2XMB@GzdE98&fn z_lo}FWBh{!pxx;u_j7WzJo%~$ves(Gb$!-w0%m<A4Og(VrM zCj$qJ=gCYfF)}*H0ht}zd} z#t6Hrk5Jdg9<>>>%`!&VH|V`NSV!*%88I^R?~Ys;G2$LJ+x^2vHmmu=Mt(JHqz;|1 zLlFErII>LZp*lWBih{6xL~l?6Y?KE)q{D`~4gNC$>W;w?1E0{y%)dKwVZ;bQ9lGcK z;0V5pOnsgAL+jA%l>h-oq}UN7Glz}5Gh*bzu#wMIS|>Ey{X--2lR9O(FTSw-o*z-h^I`2xIR5()i~HDC zQP8&q*15JaC*GP<<|E$v`5t z2V3f9{_s5Mi{qcK-@-FXwoXgQxnuE>8T%HbO#kM*sf{? zLiC$_@hALQ_Wmc7tT89zeTsIG$2&g$8PDa9Me_ub66ic77JP}rGo^)gB`hk;rbLCA z@ljNCGvZ;3umV#Q_gFh3%yztlL~e|&cH0}Bp2#qFxGO63K2kg*92prF5gz7>hwwmr zbOC}zHF7xg+Rpbc;}v`VupmC6$HjuBIr#Clv=p8FcY|72s0(+8?+{qfc}6W++0z?DA~-KV^8V)U5DesN*9mUHwde|Ps~uKp#FWFYqX&3J3s=Xj&x z40dN=PHtY-1pVcssyDA7R(6ezOT92_XUB31QHSgxr80UDuhLhAp{T+!YV>UKtxbPp>Bu~ky01Rq7+eyrCLD> zxZzT@;zH5-Gg51nS_N|R|31&$8v<(kd;g#J^A60DxifQS&OGNl%Q@#+Zk8^j4!*r? z#;t3T-4m9MyLEnE-gid^Y#x(ZwV~JC+x9uD8po`-;fkE^ng?x^Hg{_%EuME(QPJF< zg;TCn-q@a#GiAugNj_`&xJ3h}?dy>-spR2Tl9IM(=Uy|iZi%I6?7X41yDG9r7u|E1 zbk`#3gtAIa1O0lQRaTpAhOPo^f^=6HwMsEzj%rIqyBnA8+OxEAr+lt)=dPto_h78UDHk*S)+p|{>8?fc>~tj;N*on1C|5+2gde41Opo0(hF8%lHFDN@>b=%jo6Tr#nqt$X}X zh|}moAC|0oXG`Y8yFV}(w*9G7LAS+YA}xQZy0aps@47)ZZO$K2G^O7=yJUG@{pzjp zA3m?nJN)s1dqTalOlzj(4$jJ{Sv6|sr=hs*Ny+oC>N29=6=NFu-Fz&||+nUV51BwdNZk6Q~ zrNu+K6%H#d>{njk$xj|uV8~DI)@iuwBt_eav>pNp)0{gx7q8oV{e9%`uD=%|Py@Nq zVNig9fKIPWlKOxq2mBdM?+8z-2Rum6%t0_zjy2-VaO=*05MG2laPwdW?$5};AWs#m z{#sL0TU%4}*HyQkuDSZ^n#nb%Z`~vrXV1R=`q{H1KW^F-`B6WXjLRAu=Zv2){i)qE zYvcNLy?y7(UPFp2AJV4R)YN=_%gWO=HP>8IbM;?Wtv-EqP0frsD1C18rpWo(v*+Mg z(l%|D3^Q(?aGNTS-y>-US7n@(uk9lJgCop|IX2%n^>zSAnlq;_n0sq+dV^2c;yr z4n7C$v?DR-XSS~k{1P61(XbJWP8Gj^l}$f`!N)6asl4y;-#!#xTG{XRf$yI`|NfA* z+H1drk{LgTz<;ewOWpJEBfC@5mnS8jee=Y(iI5*sj&hG-AUKx|Q8N035u?oLvZx-K zR$gO={^Un=mhOtVyVc&q+1=a2?Z;a31q`leJsI5bYB|`zs z@KbNd=%EhXy?w{LmrIV%pLcvd;ytv13$-4UK8u`?@*|0IWlbbe`m6@LNmkXb)h=w= zzWN!sPw6pKi39)d?Am#0h#5c!2i?o<+Idxu?cGZ*-ZInDp z8D$t{M72?IV@4L)O>KQG@3^%4c+PQy>)5el#Q#4KIf#7q5!T52gwyQ^6fEDVBHESh zPKTw|gFwAL4^$o#g&KjCDBN>TA}AH>eD9RMT8J1@t_b2t;rkGwN(vegp^A1Xrv!0) zOVU0d_lIS>(XNAEmK!gei$s>~j=U@Ff4OyyvQ6qW{awVciX55#_Kt60@vt3A`dRcl z1$Ai-SHYtYQJ6KwVZ@GwBdk|x99`V49P_N&*Fd$f`Z-zcsv(eNugz6T!K4zwLKEHMN@i6K!Uso~0! zp6=Z241AwZ^LoT1$wYBsPKJ9@p)x6>x^Q&QoX)w$J(Kb}2ji3Y9&>i*V2>noZs(F< zV&_zIVv@Zl>=w?RX}8`Z3CzNnMKXFP8-ci9B)x;=aC9;=oM;dMfynYbx|bA`8qC>R zkN9kVj~rVb<`c<#6#e<Ci(XoO&1@I0d28(PNhfl1Zy>_i>f|K#?egB+w$1)}ewXo`5= zrijcq)$hzn^Cvjd3T*i0F?8}IQ}jlfveHcncs#)^z|B&C!I3UqX|T{ib_8kWE-E^L zG;J3hH7fUXyKU^W6*o*Av-(iC)#Iiw$I)#Y20mP~_Q2z}UGw1J{#&Np_QK=0)!ZlN zPnfi3=Cs?^luVd#>vhv^TN_xj{FBG_ynpi@cdR<~_?|y6#%SULjFgfT8dwa%KteM-(85rR|`*Z1miQRJ}ZT^D=Z{3M<0(Wkv|`hk7}cR zcp% zLPUP;q+7Fx;%9|qV9E&XFsBq9+t43f0!2?uOot&aoXDg4A*@x}kD-$j!86QJ5~MEA zuT>3;X5YI%b@_9Tt4b)rl98I&c~o}gu$~Xiyn0>W`bf3G(mKfBJ^t$YC!UbkU--2* z(VCKEvELgAjvYE`MD@Vd_o$y=+xCU>lGX()26>`591=Nc<^)5I-{4G3aQc7M$(E^z zWKU*XCn#QUV&vhP>oXj>UU$7tLpgK`eUuLd72`-S@zvwTQvMDj&4ugn**)@Er*p{Q zk`0-e1skUA`*Y-zcQ+mXXxp?~tm8+{USBWiNHOrvA=Xq5 zy@Q&flBEUVuH%$Z%4oG(8>Q7LwaN@QEKbvEwS~%DWiD3F=V~`v+|^bJzCTx+Yapk3 z3cLx44*E1pC2GrszVg=Ap~^qbeJsD*Iz)TvrPiWW^~L*?H2E~usR?zOhdObN9D{tH zdat<0q?AZniGU`ko0eWUgSka7=Q?m_G^y`?(`xyL_RV>VdD(m$nhl!54QNY_>i2Cl#rZ|!a*)FE}8>j=&Ltk3Fpuup_74i!ZdZw{+Ui^ zeu=wlR&sJl{0&R|>7ybC{`kzxdBx@Ct%-O4Mp>e4jD&_x4wQA%wDl&_^!lzF9+hsq z(4cG#4|r@D;U_<`UO8uQh%AvE_N6{3;_VN5<2M^uWLrvuWl5!Kc5GVo!kLqwxjz03 zgDY=wiAT=?Lw$<|mFWt2tQ_lTG`x~Zu5-we?clLd_2H6EJ#7ZFYnB7E0>3{ra$5i1 zX$4M;1rZIOy1rCaq!-5aEw0GUa1L(0@1;4Bv`F2ReS20UC3>zTsXaz|SJ{ZUGYc%$ z^Tqsd*lZA?bZgLI5KY0ZO`S8gq(7WuGc3zR)rJ8RV!Z|;}ntLq1D91=HjQ~&!P z)GnNqpANQ;Qb!HDve&>hjY++cRjqI3()v3eQN4cSz`p6}%M%lCx-p@o^)aOG({Zpj zI&+;Yx`z{zni9-So`;ksTXhQhi$BqsWDvcahF<;@{quAsl14Z9tTQKRehjS?HUxt1GU%;X-XA`p*bR!8f!o;F%c?r<=Eisy$A)q;Ey+$<%wKst5F+;V|gHF8=cvAP5V)f-I0UM^Md37k*@R!Ot|zXCRQO9+ydbqxFfWUy1zi z{`--CAKBabgjBI*BeJq|lk%mNcRjjy@7^g=)v<4+^vFm5I2PGAW$)f~Qm5yzrhZ3c zapd?PBk!*#Tw)E(*aVAHv*-hJo?v)vk3L16GE#?Bgj{_L6%9qAA(S~RW5mGJsvOI( zK8?K$RiT@__N85NMi&ho67JWdd%RL%4h1m&=u>1-`t?k5by6$L8JPja?5I$*KtD%8 z`cSr6=U&FWi;14Q6M7u4XCSN@vMOCb@E?rUqCJkWq2r_=T-XZ+N5ilPFxfKMI?FQ4 z+GuICuCuJO+KPG?^y%L_+-Gd>QGKTNuI;n1_uM|Kdavk1K@6bvvvvGXR`X$-8dLKx z^?nRA1RLTSLJjf1>9)0SYth#3TPwDPxAy%_rT6~y2Qy?+>f7hiaD>hsjM~&2jF&q@ z=0thZC9czC3>=k~hSQ32*G+Jcyzo!>NN+gMrTWub5B}9|i+W4GcU5}*+q0iI-E;cM zTX(;7sZ+H)z1^KU=0hoM&dHfHdD3KZoGicSPq|>;4Rf~Nd(qcA@>JBzT4_7owoN^! zK8NG<|eoC_k7OmtAPj%SCj} ze2d)>$WP3&8{+aEi3UfGJ-v|p3OnQ~Agw}gHr?(VZHn1=eKDWMa?u+K!u^LLV8?*a zp!n*naoH2{W(8-(&B&_Do}RNHdvVU(qT52QA(kQ5fuVu%wi;(+$ef<-!WDxYTc5RAq|p@Iamyr zMOEA9h)qKC32DfgFywy|qdE=2sgZSw<5Z892Bt@&R7=8aPrwvN8sb!ErW3in(;=uR z+kKPO`^9-{T_f&b_6|~UaiD6(VLAn@)-#J_)Vu24^`3ffy|3P1A6PDyOQd})wJotP zbuD!-^)2ops?Nnewhr(F%Fqq~R<@&;7-Mll7&3g3tSvSrYSLzNOO!khL zGiz+W+1HFdbghaNyOu9URHI^*oCg6&qxzEB#hXRe5$;OoY2o1&qh-cMqNf?Q!DsOrWIISxq6=wGYaz6 zX&GdROv_%#9)-+<-R2(a_L_XRG%fOwJQxe*WX+NSYnB?+EEu+^wK9fa(0dH7llofB zAqtI-X+;W*{>1sml$zF;*m6+xZhKD)8J0nkcM8Xm8K*&mvLuUG=v+jHF;VPjmd2Fz z0d!R$75Qla#h8;Nsgr-dpmld;J;)lqV%+HR$_=`cOA)q2a5MHgo|CJEXj+Mk38QhS%7@A@y6NZ$XAosz|9 z=wPR0)#z9ClQYC$T!wrHw;Qf~O&hylGo+lJm%W9bmx+|YZN^cUDOMNeP3m+p`i zoF>04Xdt!F@X--P3UazBh**x|h-HEhy=2$U4VMqkczh8S4Jsw+^z_`A?nu)L zc)C&Y8l{rxA9-I+WXpxD$TFAm*PO`1bmUeujz+$XeE*EJZH%<7{V?|ChK_GGifvZ4 zF?-DtN7q{QH)oYd7}L5p8RBTc=KBdv5^NXe0E&t*v~9qW&RH(B>Z zYQ{ur+7H2rS7RmX6V6{|#JKGSL{Vz@jz%N`_!xudAgHlIv**yCV6!0xTR7l5`Ip0d z8zEy5jn^s^8r{Vv%9!s&Sr5&*Tr}P2zF~$ITGy!lgcnQtJhN zUDzokysgYL$>qSL=s=%kl4}83e{l31hs`1hyFHj;HySZ{n+eI&ZgYV!-_T+)qKol@ zi}Nw;6w)4?w8PTEPlA(X=*a_MBPvT5XRK+I70be-9=P$bNbC63ceMVy+e#G?!;>b+ zN77nLDPs8fgWH}S@$kdX?`)K6PH9(E4Ve>p`v@4?X*eMwUCHaLD(!w=$Q_%LX zxiWsj-dBa9uXrw8nhJStG3GT0sGcK=ja3eDQ+a+>24bu@MpsIud4-~Lwp&eAN((L4 z&e?^I(#~3Tkt3L1dAY(1T{bq;f{B(w#OPox7d-<1+vBlRvh1ydRYX+w7E+LoYuydm z4LJ?D4S5Zn8m?&QJgZwnA-t{4cUT@YKWK5^ZNA%bxAhJrzuauzY%!9m^GiBuEQ(1? zdCh6pYBh>!a?vl;c;vzpsT?Ta;k_^PTBuA;XbDW3Z6U4J-b z+ewi=?l@6$;ZE`zUAdgSMrAdj(9cmla`NU(oq6roFW!#uD7URxbp70Uq@<3G2LJdR z&ZOZV@6nw}rM7RSFI9)U1Z@xsTjd7vYskUqYMMSkfC&<18gwAV^aUX=*#HTLGA6wY zqFABKQ z?8?k#7V;A!Bm9X7&^FOL(Gqtx;&x$5O=Bp1!pUHy#r#M4a+g#Qd1)6ze2ouZQ`G)7 zU4Qv&v@)|&XFxD=7zG(G{S=aL9Y5rfnLgr3{2hCZa7Vd1+>PQ!BJ;C_QczNKK1xHG zWzMn`E5&ND8Gac^M>!C2_{J&Y)N$r<^fjD*5{wL!rP2|6#w{D97x-(mcR9Vy&S*|b zY8x3z#?Urn!||83g{V^o8YF50q|Q8q^k+PhzYOye)59UFVpR#%gyvGER3-EhYB3t@ zh|nk|q2~dI@@9T(bvUl$TRC4RUK)Gnix*$njw8|)IcfqjeO}DVNys2XRO@*;W1pUO z`j!pRZ$>}=K-`a2%?2EioXHFO#CF-RU6oC>ss(Ycq&`@tMG8_*J&HFY+X`pSVg=Am zN+2fu2h@h|Bc6ZBeQAxt5Xpd@I&7Ko?DVi3E^d^c+kmfwnh3@DqEgA8 zC5V%KF0x!&DXj!N8?i-f+R6)WTsQ*sWu5=<{M%|5NEP;TVara;^OL+0cahY9CFDxz z8`rYsZMl9$QZPnXB&60a+DEg3m6t7cC>Qd$Xjq|abs-)kf z6(rkWsM9IaSCHsW=#=D5j58~lRtr+nW(MU7L%35gu_CSj1}bOHes%^LM|3cu|A{I- z@9;%^aWZ-x{EHQLj5OJ3(ik-6==0;ooTxc|PKmxa)-kV{()h;w*RwLSb5G2Fqu0XT zWjFSIW8NECS=rfdEO?`2VYqzJcx6ANDNwYX2kf>PX)o1K;Q#)8-T z+)x%?*z@%TZ{%cUMsAwBdGp-)O%Ky(1sa{akM*jAuw7QSiR;OI46(Oj9*+=R?V6js zFDuf-Dq9Cd?Wa!>+f@B2uw;$(EqY3cu6`}gk?JpGNUJ*NTr~5v4*ez#BNXbT3F3=z z9ml67PE1MWqj`2PCJuVtTF~pj4)++vY=;Z4x6B@A@VOdsTTrEpRNN6^Mdktj@ClRAmPxFV*OZm@tdH&j;4IPE} zF;f?nJ9 z5iA~E;PqbQW*#DIHmLA6#iJ>R_k;rnc00zzN}0z{C0wQ|hsB1lmMd)oS=S|-4R~Za z5sK4d_920_qBu=h#3a)Vm@811B6GDUBlzs>p+YvUMYn1fQ;-|F=+HIciRoFNWW$-WSD71Kf={sXxj&&6M z^}42^S0but=yi$e8AfrS?X<lbfP$f&5{fMq$k1W-Sd>glno?k?Fc0Wt!8&ABbPk{8GfYHj4n$X~Xi^*O zg~mY0+KP_A0a^5=BDo{8m&i!s=gxOnrMToC5QJ&L?OVQRUi0u5gNF}qxOvpDSu1~- zv-XkyIe>leh~aZ@9zAT7`+;K`C<`+{m1W+g1&te zI=jOt)EFIWB0Z93G18UXs8(Rqy?dhmRUJpJ>Lq2!Co5J4D<|y3qd%>quaM#56~)C~ zM4hAWQQLaO$|xqTLF|gL!}40Ht?0G>M1hp-t?#K>@* z!LrC?g5+IH*J6({D6nA)V-Q;?`DvUiNUIElEFsYYZF!9PwQ>UXjt0<+4PjUi<{#5b zGEXZ-=P3(IFAeEy0bgS2>s|3YWW2iiRi?s z!&pU84OlKhR0Ed~*|E`g9MUFP%vQ6_>2Z3UKBwOqa0V?F0d&Ozd|b5P##hiYE))CV zw2(-&Bw7<~iS|TCB3v;N-HDz=Z;CI)pAtw3h7vd#0B8M96f5-iN9{XdR_TP1xc6rt zEah~Sa-!?rg&bZbh)MP$Ud52NbwP@|oFezKM<)xIEgRu{Z)om%-fN8|{1aq57~{A5H7lth_!)9t9mjnp})t(V_7!w_A>B#L;tnbs>1hX+`LUH!%Gb*W}{c^|`#dV#3!aj}|FyL%nsm*0kocRlW_j$^DK zNlo*|R*##LvM}}FuU6bD8wNZ3_Zu>N-MuT988GuKA!$H=C7&&C*Win2!jJ|(G)*BX z2oDZ=)KUAYF4JPc!T(Ru9CnaBE!onlpCBFbUami$^P0i+D#l3C zPW6;>0zOk@0r+m%>NG#;SK=@TG9d8<@J$NCs|a4ssAg{kJQJxZfIg(Gh*60ZnU_ph zl(87B9QTHZ`x2bTVhLTI>>@m*yWCyrt`=woh5}=E6Q{}G1Q`YH0#AXryRW;ydw@P} zm^@4wrVcX=GY_+jw2rimv=4I(a}IM2^9`doNWo0qypw9jG(-tCR`BYT6mwFGnfSz( z{7*cxaKR&wELiwRgLJuyyN#gNJ@b~v#j}@giRz1`+PVaVJa^z<`~!RE0moheUzDg&x$LmuL$Oh>{LD| zlu|UlQ~d&)ZI#Q_yGPRCQnbWM*pc7PcH~CHHNbo_M*kO$v#B9q%d9s9zVh} zBFqYeg3t<_kt!8Yno{Ld1#6*Fpy2Hjo!V-lF&(x?CLbf!PLdeH~x9d`<{MD!w0=9le0R3kU@e?V81k=c7 zD}Qj$&h^W`xKsUFx{;+&8%)!XbB{cz>cS-$wVDxThw@ND1k1uq>jUO8jH)ocHV6Z9 zBA9?JcsSBL46R*IS~3R(>+DK{Q7jR#cs_$4?IQ+?^TCFUq^v7hL5;=;UQ8TFb;p-U zwLK$4>M0xDHS@QZUO;^QHBHN2YW?~Nc|uj=JhT*guDlK-Y^%5~T!e`q@;AkF7H3Y0 z`J7^$%=MdWz_b(6&rw!JMHM2;m`OQ1ISLjHZP1=)F0Ggzg9IAHTst&~{nM0swbsr9 zTugOfwvTGL`niScdwjCxx!c$D_z=Npw}lr^zwm|pLhr?OG;_pxl~_Y7Mt`C;3={lI z$OD|>pcSx3F36Csh)=n#GGF z_nwPXtvQK+8kH1zYC7_|j+GX)=XE_8d1UELOXU|fNT(x78(Lc=J-e$+nM^tQ zev0TSUJTbJA;VQ-LL%~8h2ldnV2gtt1^%F#81vo2_#ZxFNxMosX z1R{nQ1(16#IvUdeoa`VZP0`&!nKYvIJwFLS&Cx~LIZD*lBS*{0$|(whio9K6krTD{ zgwdMvL;nFIhmHN$hF8vvshaTZI$v4tO_4`ar9taHsFg-#M2^H=F~0M$$g1W0&&I2Z zrhjz9+SdAoH+}W;jc2AUyh+pc&8nI5>c-jE)J5vuuE^W}xZ`fA-`W1xUz{5yojo=; zs?ywO`+O=zC5X+ZuBZ7_^fQcg)Gg>|HsKfZ!o3|DVxHTvsEE}G3Vx1Xl-&rF3=d7m zBw?Rq*rg7Xq3_xan!y9=MdBDwq6HHa34v&wYT_>XY}eUKQl7N;u-HJFdK%47AtN){ z#IS1vC)#2foGUJG0wXlp);hTV9E?TVtYgn~5n&(sAjyT7};wOQhqG9!sR7((xsc9@25tXpP(?AJIO6J|C0l8Z1@=BK~D&t_b*1Rx{5_9QbP?CE*US(qkmfU(}sA_Gv@xicK8F_X79BFLV z>fGXf>6wj*iSsA+AzdU*UN3(OT;;-gtCKmgDcRfP*^?Y-a^^OPJy}i8-AZ*HWQZ4y zk_-M7>Ss&uXYe41DVrygs~3&^^vvO}&}f!S}uA0HixA=Wa65=P1=~Hq2;Bb!~;FQo=*1&pT2fi>zd;>l% z@b?9!2mTr*v%0ReK6=L^KX-@tXY`J=_Gf(i3(w$;3Q6s41CRd^~cF#v|uwyx)ag&lls5_sbHkX2tsx=nf>0$xR7( zHpID}%B`}ca1I&Y6-Pd^T!cX$fz;jFbMBXH?g0u->?q{k#MFD{WPa4*Y*^XkF zoRHFbT3)rCIN$%ZHHWqj&}TjbOfl$T}PkYdj;=T*m# z?wry&D>EZC$!WJJF0;dwodk7I3IySK;&7RgGeuHo2!TUbCMQQ)n%`p(9ayoV@Y!c1 z&tkLje}09;L)hP7Yp^#s8k`NThNOn%hLncXhBV}og_STC=!{^12v!HkTtiQYB;fZ@ zgwS+=9)XDk^~1C)AFsXp{Xw#+M+A%Zs`NrhWU={?2WG!GJ*VcCDW61sw7gQXQFB>$ z^?YE86#i_+^IF}z(`sIRv9WM^N#o0Ztgih>QFkd*k{U~9bZeA+l5-G7Ee&ul{zChJ zM=g89URA8aaOJ;yZimyu6pk7W*Q01wNE>z0;rbeJjdYEA4T%mC9%O(O^E;i>?wQAEAR4L;~$?v z-Z-9TWaZ{iLD-BDm1LEz@XMw;lBULyS~(#PB2%LpmrrYj%@Ax7^5G~dO?}yT>Wiri z94t0Xh0GvMDMh46okS-jH7}Nm#a(C5@#8yAV6H!bTWRfn z0f#odnV2ISqN%8#$FomCeiG<9z^MXsE5NDppKyvVA|=NC^DS#%C>Bb$iM2ra8hQ++ z^jmZ9od*fk82F=>v?B4E_5Xogbez}O9@ z!#0zKNW5m%My9@pUZmj{%SG2&>br>4(qZfc3CN=?a=7Q2V8%M*-$#vr3HDfY8wcy9 zNbeKVOW~lJEF~BcjCsh>m@joPbTQ`J^6kaSK=|(M6i(s^L;=jVc=V>PFF3>sh$VWE zKJiN-4oG{?FlN9*SDqAEER~FT>^h{(&RU-psSRm$ktuRw>u0kM99V@mS*;nAAJ8Ut zte_!{fck{hVKm`+kb(L<_=Q6}{d$oyFRwY*3(N^$qE{r!c%&j-a_D3ztzK*!QB{3? z(&F^zRxG(w`=NJnN%_2$ONc9W1HaGGK13h9KJ3xg3$S1S{`m6?2JPuYV=ey^Ze_Vr zx>A;j>B~C9xBlXyz$7dRXdk}DdLv%Pf5|cjM^Zd?%zEo5@mFE(jBjZNxTsK~Mx-jB z5VlU2+vD~51Bl=jpOA>TBvRTkv$At?^EzG8xl7mlf^LOH-Fp<5^eipwRo=T#MYwNe zzy1RT4jMdU=&-8cBSwxIJ?6@>^Ti{ z=gnWRaM2BmZ(Opp@up=rFJH0pmQ}Z|zHQCg+wWL+=lZ+u-mvjk_uPBm{SRz!aI#z5O?jJ^sX#JAS)!*X}(}J-zpL`<~hV>~qf_Xnx`M2mkQmOMiU%(BW5( z{ORbiz@>g&W*u>qrt<6@fllQ<^c5U+~Y#OvaJ#B}kNcvGAZ zd&CU!53y0aE8Z6Gh-*cQID;6G*NK^8mY6NB7jwi`M6H}B=8E}<+_*?A6gOb3@TIs> zEEP*cqgWZ81rmdS9jp{ziNA{jq7~LB`qn0XKwQcn@$IL@XW~7~5C27cC{Bt` z#QWl7u~+;qdf$HWtT=?@ec~B$7=LdOe-vw?*M2KDMUS2kn{o7@_?myepr4f_@tf%N zUkN0?8SNMuZc}!P!-jq0ZX~1cZ`>>n7r$`)z+}xt1w5?Qy z=#A?i;C_RAT1>{@#q!>^>u~>c?Dg19*j4OV*z>Tj#C{Naf9#Xwz2Z9TGCd=Sj@5C=!zmswj~s(;j(BtHAk1IR6Fixq!b_u&aEV z|Blt}#yOv`si(yR@GU%3Y&Cu<4r`5VPvG22{CykWG6r?njqlk@bx=jy8K@Gg)i1qn;5p@(HmH$CU_}HdrpDy)6U-MLsqj7lY}%`Z?X-c8zL9o$A$bN1Ik-e;M`JguNS%L+W!<5stTN7Ex;wQbKgkp`6OV)e@?= z@p#*ILsi=W!w&ILtS$L_f?~23Z2KG*o!4shA_UL%CUt+?Dc~hvIV{G|Zb%X%jNjwi zKF3(ALR6ve?dGx}(Hmt?@bRR!bLux@Iqm2lt5F{j!xgo;>26VDD#f>nwr@??)hy)Y z&XRocI?0CJN6&zlm4We&wwJ0~zrZtUlp?X5cI^tZEq0Xu2>tj=>eFf#l7qh{4)A-Z zEvQ}SFLu5EUHnURi0$0hsJ~&Sb^wmXU>}8j8TQSFVWFaKEJ%}J-JF` zpzqkI-%$UgK0^Hi{a&EmCR4xVZ}^D%cH24nF2g=41e~qGJ`{VJ@g=b)x~CDnP@kpx zwm%nri~Du#FZybfe!m31K?71lv~8`)2pkxC)`dSNA_H+;n_pt<#h zr%FFWRUUxo#e-mlgxE>2q^lCc;RQcZj1r>}gZD}?R*b_O(s)F}MN}nm71leh#!AOE zqE|fF$`9WD~eAB-aDr+Yf?cKO~wUy|#!)AWI&Fbo#Z} z4vzhpK<;_Sv>oENkaxSpZpfmi#M6Rg0!aaq2+xVE76Ya9!M_xNky(Lm$Rp6aQYqDi~K)C%%(ZoAhAv z_~egL3RB)mot}C!tugIf`kM5AXPn4Myz;yudDVGS^XBF)%ey1*fxPW`Pv;%X zJKo9DX?UlPuNZm7x1Bwmr+4Yu<>RgmUH4&NHa-8h1>L)Oy4}!iSGTi;WrZIVU0d{W zcYF8z?hkkWdyj@5zc2Qe*h}8-IkV^fo^O>(rK?LLWtnAD${sHJC;mlxS$oCxdZ>It z`TX)b%fIVAsrP-oPxNl!XPrp7ZE9?~o6=N#?9bOmyzHdU`0e$bP>|WWoazy1- zmDg4-LXgF~E1N2xtlVGua^;(qA62$g{<~l2eslYW`cLft#{u2}+XuWquQ)T1dGq4lL7SA#~&1ZfD%o9$`(Bz@)20%9-C!tn( zBAH=k+gcn?K%MhM9UtG!$IBV6V7QXuF21^(;Sq*M0lVVKg@D;@M*#~N_C&3^ivDSTuX3}-OBmhYd*_gu$t7Q^cq&Sp4=;arCE7|v(7fZ-B`OBpsYyoup5 zhBxzDmNQ(za3#Zy47c*zA4R0Yu3`_Ld5YoFeC7Zjzsc|f!?zf|&86O9_%6e*`22Z> zt$_K!%oM=FwwC})+7Ji+iShAn*lE8J5koOoBEa5JQyRtPyruor4rgud}NKrN9GSoyk|PV>pZ9^$ce-oWpP~mzu|LKEnkJmoQw)u#w?S43{yyncuRU;R=Q; z8E!=%E)|dRJ-fILyBR*sXO8gkQNS{M-9$j5f--y^9aE1g!xwD;9EYcsaqlX_SJ0X3 z7|vpNJ;T`y=P=yLkosYnpng~ejz>>;mLc`YGC_T^7v9((FdOH4f%={Wtmoqye7up5 z_wX@MdN1)NAD>|O7Q^#=Pb*+K^UrehqB7{(!`b#^KKX(449N zOyr(33CGKzNxK0j<9G_73oSJnXGo(ad0NNvw2tLz9do%lmdJH1PwQBo*0DUTV|iN7 zaPck$I-T(@0Zw_RMfU0kF<#k+R>}vg<1-r~Z{v6uAMa+^%vX=_@ll2? zB!Tz|`}qm``3d{^3Ht>-VLv}%KWNjAV|v1V^cFg%C+vr&pO3KwwcP=3y93;I%}ig- zOkd4RU(HNk%}ig-c;gg2i)gu->8qLPtC{Jmndz$;TrmY#iN2aqAG)9DtC{Jmndz$; zyoIh3eKiZBuVz8?)hvj|~65`8rbqOWE_^wrGt)y(wO42;p8 zL|@H<=&M-}eKiZBuV$vNL%<2m*b#p_B)T&!!P5?jQt+rl=o_;D%Okr0hw#;jpsYiX zq;&se=r)IdB|0XqcnEbq3P@b>5b8$o0N>NhPk52fyu^^WqJ{7Iitj(q zXIcRda}5u34G(h-52N>{;5^mvFxT)f*YGgc@UWPOIv?g59!3o};FxN7m}_{LYj~Jz zc$jN=7&WAOsD_6H)$p*O8XjhTewb@`m}_{LYj{|E#rIPU4+DqKV*E<9d4#F#2-C|E zrk5j3Wk;CGjxd!SVJbVqRCbh09pzF-xztfEb(Bj%ZiDX~;HxM2>RWvEEx!5|Uww zP={TBq-UODJ@XVWN%xSRc?y^$NP6Ze^uYdrq-UODJ@XXmOvj{Wo)V;Io&r|sPSP_^ z0jmT_&pZXJJ`27{8sKTx08b0j06#~qHe-ZO`e6&xcni~b3)6TD(|8Nhcni~b3)6TD z(|8Nhcni~b3)6TD(|8Nhcni~b3)6TD(|8Nhcni~b3)6TD(|8Nhcni~b3)6TD(|8Nh zcni~b3)6TD(|8Nhcni~b3)6TD(|8Nhcni~b3)6TD(|8Nhcni~b3)6TD(|8Nhcni~b z3)6TD(|8Nhcni~b3)6TD(|8Nhcni~b3)6TD)A(1+Ex%%J`4w}^GdME~^Cd3u@H03w z3$ltZ|084mN5=elmTTu(uAOJOcAn+hd6sLfe6^LYw(`|hzS_!HX?{&$o^3eh*5FHv zxi(5`X~f*UL$&eR7_J*_f>z5V}ud_sF=;#khOR7WKfEhYf8>GVNCQ_;Y zm9G?c%hM5?%xX~J4TQj7D}>nN5~;fF7Rpx6T(|(wOFb_ed=a0t**IIm>QDO{@a{^H zv=`z0YlW0C752iSdfNOcS5BF;U}PQc!-n;uw&J$7NO57$Aq52jmFEqsMUo27_~qc-`Iu(N+zuM;wS7!jYeG3OhzMRhrvdtRdOaLSABy4#S}$T=qv(s zsJLIl6$Jq&uu(EW-f$z`*YPD>9_P(wI8K<%M!XVbu!=~w%|@iOMD6$~Tn~#`!)>S- z)){4ks^U((*2WK~=NkD{u#0ZrP-)zQ3gAU1ld7tCkr5TcS^T4K;tgR3(1M7c3Va}e zv&96o03S%0%+HR#fbe0#JE%%PmeF9sA#7*yg^1e)2NWG2xEnP?QH0~CW8i~6f$>2# zMASNdpbmZpAGlz#Sbz@;p@WLzJ*cP262%9~Tkuj7f@0$~-~$-Ehz|!|q2n2a@xl)H zpf5+J0z48M;{z{(#|O?*88R!sh!3mN$oMcD5#tNUHUoVyCXQ{4OM{ha2&(|bhZ!x1 zAa-a)D^Nq&=GHeFQH=0mrLr3AmyBk@0~(kLo2UqF_$0cI+mQ~j>AlBjv|6p`Bv!N@ z+7CApQZy5ieIYq8JuflGr8zwtfvEacwC5q{${ zZ8(764LSts0<&xrzSBtfK$ikt!FUy~RP_cYEMD9$;)C8qt%gUKY&P_Ii_L^rqLUa< z0u?nQP?3h8u;(^XJxqxCjoVN$U{(gL;!fbhMVF{`sPaHb2YkS&x*Z>QHu?fy1n(f~ z=J-dvf;aRxA?zL#;{!>QCK1?=L7UuQ{4dp<5D8e@NLevz+fJ)Ut zMS&08Pamb3Z76L<@@V~$)Obvk`cHyX9t34}I2`B$4lA0^hBIc+Bk#xJjY!)(D|yv)vAS;6*l=P@%!Bzz0zyZRl_C84XyX z_;5z?0Uj2^1`!+TW_IBP2r*%^X~43>MzK&(F{{gpkX?)qpvM9)RH7#pSTe)a!$9-| zIsrbY#jv`fKb31mbguUoIvK@>#pMDQu)7Eygb&~ywY0g+X2u6z=>jPsD2xfWp<+Pc zMSKKM7v>FAVW6Y~KJ+iws0~pk!UtZ2VE4o_t<<6&@!<{>jrnw`rOKy^5GO zUZQE{pbb5cctaE)9cUimB0+70Q@oBy(g=Lmt$fyo3gUn_^fw_qaaLpmFq)iJw}bG3 zB=U$z*S>MzvUpGp*yA}IU=|h^4&h>Gwc9+X1MuO*_t@|`1}plHMWeGY;bVN@qYPFj zA=6GpXk!dey{T908{-3q9*+k!;c=ilJAn^y65s=NtZ=fh;wiWR_;7f=X55B~0gHqW z@ES0YxORL1ndl-v#RnnOYI8b)4oQm#i)j9}->I9CokWW(Pi8pdIuS8)}AD*Su8JWHAywp%=lsiFz>7YUq!| zjdUL~YW)m44$9+Gy0Qm9REGGPP;gw#n7N^f=!ELA*T7iTa?gSHw zM_rg#5_14bI?z1Qs^hy2XcoMKNYVtvJ5e#5wNnp|_FVKgA$&-ZP55xzy)G~miyQbb z;sc@^76a&5tge5x|815%JG1}eK zVooHJ=M8nz>rGUSo`Vg{67{m%efU(1+v`H}xrr#96c)$nvsq2}>Bjv&kdn*qx8OE| z!3``b;N`dz_(*V|2NG`}<^YtCvK!s3AQhx=MQ!jpHxj*=fOwak&pJ>+osx)w10ViG zyMX++cx4{Jxe-|q)a_}qA<2WK2Ea4Cz+Z?~H86UoW!a87Z! z0|6^;L&bnX75D(JffPz?#|Mx}_|Qp_X#|Z(_~3VYJirGKPxt^0LYSG1QA&nBAw(dV z@L{%i9DX-Mq>c|XXmn$I*aCQg+X37XKG1%^hr{kdR1>=sY69T{J;i~V;VTVe{_9*YfH{mFNPqiW&E#U)aoNf|h?ttB9#!sZ_bp*g# z+;KrGZbQX@MN)Qjd?Y&^xPhJve4vY5f)6~)W<(#u>xe~}fq1vWKxduQ!5t z-s7aR5bhZGL@62igb;D54gt1d^*MuH2ppS_)ZQ32NIyc~vd6h#w~O!dKvdcN92ge4akw+oSiP!W^MPd(V{i{gWO1hpe^JtxZ& zyB+!fjzXajcmz^iW5XG@m&BMi1bpD9A59PftMw(s+i@EzhE`A^+i)kCYPuT~iT4|g zKqldXs6*czXhb*T1Fr)&wpf68uZzw)+|q_@D#cAUx1cZdZJKyxkrM`OuvMIOFk=jP}L592Wcx;B(`_T6~EKcHCw%1%N^o zvJH0v9~r0%%Tnsl=pr5P;WWAt57CTn3iI?p0QdmneQtaT2p<(B=|vmkBO%izNS_M2 zs6vGDTi|AX91due6Zu@}`k2C1=yZl}>lqbRK_JRuq!SvBn+^8A4mMNY} zgQ2@!0en615%hSxZlB+$KNUB!%rogf2~v45Tz5i30(e9`%;|$coIw+iOi6(5gr7lh z1$Z-h{7H!p+=hyw6`%}5t0ktI=>dl#SxOxmC;@YiZBBf-*I`CCMN0*P5II1+pYY)Y zSAzN*LCm{fVqvHb&8r>Kl&P1=*7x1_Oe&E9u=MT7%mEG<4CSJsc z2jpWRS>`e&pk^MM)9P{KE1Vv)Cy3G>e}KpaTRT38>$#({1o8w&iHV88M*^V(ICOaZ zF34zqqT6Z3Pecnvge|W(keq~gTi~NXU{Ql?!<}HN*Q*^l;|15L1K?Y;ciBq=PoyO9H<{8~lE+ahCr}q+q~@?ZDn@wz5C) V!o5>kzlbDRJjU5v3Ujx#{eMf40U-bY diff --git a/legacy/ecore/data/fonts/VeraMoBI.ttf b/legacy/ecore/data/fonts/VeraMoBI.ttf deleted file mode 100644 index 8624542ed208db88b2d1e99bcce1e1acc7e6c28b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55032 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 L*;UZpvd{ko7U7TT diff --git a/legacy/ecore/data/fonts/VeraMono.ttf b/legacy/ecore/data/fonts/VeraMono.ttf deleted file mode 100644 index 139f0b4311ad2e0369a347b3be6c46e6c2b730d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49224 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 diff --git a/legacy/ecore/data/fonts/VeraSe.ttf b/legacy/ecore/data/fonts/VeraSe.ttf deleted file mode 100644 index 4b4ecc66671e45e9dac162aa85dab558cebc191c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60280 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≥bJuX{8p&NFshzP1oAVxb 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 p;Cj(=cT_i_GvC*1n(ty_$@ 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 J59PO!{{vrYW~%@I diff --git a/legacy/ecore/data/images/crosshair.png b/legacy/ecore/data/images/crosshair.png deleted file mode 100644 index 612d1179977c5895bb7409f34f50357401d0f54a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmV-x1C;!UP)rtts(0_aIZK~#9!?U&0=8etU2e_TcsrZR{HHVW~waAgR4;#+iK7rJ3- z;tMp557326Hn`A*k6_Y;>DCa!stYf{Ha4I|2a6)2(8U~vp$dYS7?Xa<2@~d=^FR0V z4ZPtK8ARCrAN)1Ioqch~5(?k~h5#p-)Ev>}0B{G~0#(w<+RK8+5>7w`+`xzl4pTtT z0$w4OxCY9klXruMJ(d^-{J=QyUMK(rY1AhKJYab@4){fG0B}Qr4;T{zTEGybaUV3F zTL$=r-}jUO_9sH^1+)$Z1cWp2D6k>t6+M0DTm{|%qhiDu;6*>4p^#nRx;P6!Cbfp! zzfW*}7cG2X(RmNlfGVK(?zvIbZot!Kz{y^m!<|(ii+3^(Air4-cUC#si;JP7BIg0z zqOWJqT~gH}VuXr*JVQS70WIP< zgl(2F*&@3#2TakZPe?mG@7Np#Z1$hP5%t=4AZI08hk^@O`q${;Oll49WL$FGJPnHj z;G2$8`tgnE@+aUFD43K^p7t8{JE59MZvQ^DtCg;v)~;4?`}f=ATDp49`K`Gq;0CA= zoZqFKUqXv4J}RL_7AfbK2+r?HrQe8rQ&-R6%~q)Z#-h-|2ZW;A=($bQPzv94)C{#6 zN}=aA2}QSM(3C~4siWGh;2z7nW-bY1x;>n5^_q%ZDgQI!O2D~L5%^6ysrNfx%hIO` z;4o`J3s=#?M}R^)`9+GWCLWf7OEKUQ_#^-Ixmb*ST#~tbVe#ZlD!Ey`&F3?De=htw zQ0lhVyRX!A@}>i@(LOdu!O~6-4KU;fxJ(!djNBQ@TLu^d#0q>Se8s1Ld%s2*q0@;a zuG;Q!a3tW*y2A~6KELMGIrnD49WM}i{Y`#l{sooc7{_&F9?k#&002ovPDHLkV1n|b BgNgtE diff --git a/legacy/ecore/data/images/e_logo.png b/legacy/ecore/data/images/e_logo.png deleted file mode 100644 index 54100d5b65776e3ff1a13de913369caa2480717e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46481 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 KMNUMnLSTZ;UlY0j diff --git a/legacy/ecore/data/images/evas_logo.png b/legacy/ecore/data/images/evas_logo.png deleted file mode 100644 index 932555eb0e82b7dad63211371afcfa57fa97e27f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19736 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 Si)VNM0000 - -#include -#include - -int timer_once(void *data) -{ - int argc; - char **argv; - int i; - - ecore_app_args_get(&argc, &argv); - for (i = 0; i < argc; i++) printf("ARG %i: %s\n", i, argv[i]); - ecore_main_loop_quit(); - return 1; -} - -int main(int argc, char **argv) -{ - ecore_init(); - ecore_app_args_set(argc, (const char **) argv); - ecore_timer_add(0.1, timer_once, NULL); - ecore_main_loop_begin(); - ecore_shutdown(); - return 0; -} diff --git a/legacy/ecore/examples/con_client_example.c b/legacy/ecore/examples/con_client_example.c deleted file mode 100644 index a4e42ad67d..0000000000 --- a/legacy/ecore/examples/con_client_example.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Ecore_Con Usage Example - */ - -#include -#include - -#include -#include -#include - -Ecore_Con_Server *svr; - -#define SOCKET_NAME "con_example" -#define SOCKET_PORT 0 - -char *msg = "get http://www.enlightenment.org\n"; - -typedef int (*Handler_Func) (void *data, int type, void *event); - -int -server_data (void *data, - int ev_type, - Ecore_Con_Event_Server_Data *ev) { - printf("Data received from the server! Data was:\n"); - printf(" %*s\n", ev->size, (char *)ev->data); - ecore_main_loop_quit(); - return 0; -} - -int -main (int argc, - char *argv[]) { - ecore_con_init(); - - // Try to conect to server. - svr = ecore_con_server_connect(ECORE_CON_REMOTE_SYSTEM, "www.enlightenment.org", - 80, NULL); - if (NULL == svr) { - printf("*** ERROR: Unable to connect to server.\n"); - printf("*** Start con_server_example before running this program.\n"); - return 0; - } - ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, - (Handler_Func)server_data, NULL); - ecore_con_server_send(svr, msg, strlen(msg)); - - ecore_main_loop_begin(); - - ecore_con_server_del(svr); - - ecore_con_shutdown(); - return 0; -} diff --git a/legacy/ecore/examples/con_server_example.c b/legacy/ecore/examples/con_server_example.c deleted file mode 100644 index 6b710ad051..0000000000 --- a/legacy/ecore/examples/con_server_example.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Ecore_Con Usage Example - */ - -#include -#include - -//#include -#include -#include -#include - -Ecore_Con_Server *svr; -char *msg = "Hello client! Received your message"; - -typedef int (*Handler_Func) (void *data, int type, void *event); - -int -client_connect (Ecore_Con_Client *client, - int ev_type, - Ecore_Con_Event_Client_Add *ev) { - printf("Client connected.\n"); - return 0; -} - -int -client_disconnect (Ecore_Con_Client *client, - int ev_type, - Ecore_Con_Event_Client_Del *ev){ - printf("Client disconnected.\n"); - return 0; -} - -int -client_data (void *data, - int ev_type, - Ecore_Con_Event_Client_Data *ev) { - printf("Client sent data! Replying..."); - ecore_con_client_send(ev->client, msg, strlen(msg)); - printf("done! Data was:\n"); - printf(" %*s\n", ev->size, (char *)ev->data); - return 0; -} - -int main (int argc, char *argv[]) { - ecore_con_init(); - - printf("Server is running: waiting for connections\n"); - svr = ecore_con_server_add(ECORE_CON_LOCAL_USER, "con_example", 0, NULL); - ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, - (Handler_Func)client_connect, NULL); - ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, - (Handler_Func)client_disconnect, NULL); - ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, - (Handler_Func)client_data, NULL); - ecore_main_loop_begin(); - - ecore_con_shutdown(); - return 0; -} diff --git a/legacy/ecore/examples/config_basic_example.c b/legacy/ecore/examples/config_basic_example.c deleted file mode 100644 index 824cc6958e..0000000000 --- a/legacy/ecore/examples/config_basic_example.c +++ /dev/null @@ -1,98 +0,0 @@ -/* Shows how to handle the Enlightened Properties Library. - */ - -#include -#include -#include -#include - -#define INT_VAL_KEY "/example/integer" -#define FLT_VAL_KEY "/example/float" -#define STR_VAL_KEY "/example/string" -#define RGB_VAL_KEY "/example/colour" -#define THM_VAL_KEY "/example/theme" - -long int_val; -float flt_val; -int a_val; -int r_val; -int g_val; -int b_val; -char *str_val; -char *thm_val; - -void set_defaults (void) { - ecore_config_int_default(INT_VAL_KEY, 0); - ecore_config_float_default(FLT_VAL_KEY, 0.0); - ecore_config_string_default(STR_VAL_KEY, "test1"); - ecore_config_argb_default(RGB_VAL_KEY, 255, 0, 0, 0); - ecore_config_theme_default(THM_VAL_KEY, "default"); -} - -void get_settings (void) { - /* Note the order here. Defaults are to be set before load, so that the - * types are definitely right. - */ - set_defaults(); - ecore_config_load(); - int_val = ecore_config_int_get(INT_VAL_KEY); - flt_val = ecore_config_float_get(FLT_VAL_KEY); - str_val = ecore_config_string_get(STR_VAL_KEY); - ecore_config_argb_get(RGB_VAL_KEY, &a_val, &r_val, &g_val, &b_val); - thm_val = ecore_config_theme_get(THM_VAL_KEY); -} - -void change_settings(void) { - int_val += 1; - flt_val += 0.1; - if('9' == str_val[4]) { - str_val[4] = '0'; - } else { - str_val[4] += 1; - } - - a_val = (a_val + 1) % 256; - r_val = (r_val + 1) % 256; - g_val = (g_val + 1) % 256; - b_val = (b_val + 1) % 256; - - if(!strcmp(thm_val, "default")) { - if(thm_val) free(thm_val); - thm_val = strdup("winter"); - } else { - if(thm_val) free(thm_val); - thm_val = strdup("default"); - } -} - -void save_settings (void) { - ecore_config_int_set(INT_VAL_KEY, int_val); - ecore_config_float_set(FLT_VAL_KEY, flt_val); - ecore_config_string_set(STR_VAL_KEY, str_val); - ecore_config_argb_set(RGB_VAL_KEY, a_val, r_val, g_val, b_val); - ecore_config_theme_set(THM_VAL_KEY, thm_val); - ecore_config_save(); -} - -void dump_settings (void) { - printf(" Int Value: %li\n", int_val); - printf(" Float Value: %f\n", flt_val); - printf(" String Value: %s\n", str_val); - printf(" ARGB Value: %i %i %i %i\n", a_val, r_val, g_val, b_val); - printf(" Theme Value: %s\n", thm_val); -} - -int main (int argc, char **argv) { - ecore_config_init("config_basic_example"); - get_settings(); - printf("--- Original Values ---\n"); - dump_settings(); - change_settings(); - printf("--- Values to be Saved ---\n"); - dump_settings(); - save_settings(); - if(str_val) free(str_val); - if(thm_val) free(thm_val); - ecore_config_shutdown(); - return 0; -} diff --git a/legacy/ecore/examples/config_listener_example.c b/legacy/ecore/examples/config_listener_example.c deleted file mode 100644 index 1ca4ecb10a..0000000000 --- a/legacy/ecore/examples/config_listener_example.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Demonstrates how to use listeners. - */ - -#include -#include -#include - -#define INT_PROPERTY_KEY "/example/integer" -#define CALLBACK_NAME "change listener" - -int change_listener (const char *key, const Ecore_Config_Type type, - const int tag, void *data) { - printf("Callback called when property '%s' is %li\n", key, ecore_config_int_get(key)); - return 0; -} - -int main (int argc, char *argv[]) { - /* We'll use the same config as config_basic_example.c */ - ecore_config_init("config_basic_example"); - ecore_config_int_default (INT_PROPERTY_KEY, -1); - ecore_config_listen(CALLBACK_NAME, INT_PROPERTY_KEY, change_listener, 1, NULL); - ecore_config_load(); - ecore_config_int_set(INT_PROPERTY_KEY, ecore_config_int_get(INT_PROPERTY_KEY) + 1); - ecore_config_shutdown(); - return 0; -} diff --git a/legacy/ecore/examples/event_handler_example.c b/legacy/ecore/examples/event_handler_example.c deleted file mode 100644 index 09bc3e7697..0000000000 --- a/legacy/ecore/examples/event_handler_example.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Ecore Event Handler Example. */ -#include - -#include -#include - -Ecore_Event_Handler *handler1 = NULL, *handler2 = NULL; - -int event_hup(void *data, int ev_type, void *ev) -{ - printf("Hup signal! Remove the exit handler.\n"); - if (handler1) - { - ecore_event_handler_del(handler1); - handler1 = NULL; - } - return 0; -} - -int event_exit(void *data, int ev_type, void *ev) -{ - Ecore_Event_Signal_Exit *e; - - e = (Ecore_Event_Signal_Exit *)ev; - printf("This callback handles event type: %i\n", ECORE_EVENT_SIGNAL_EXIT); - printf("Event type recieved: %i\n", ev_type); - if (e->interrupt) printf("Exit: interrupt\n"); - if (e->quit) printf("Exit: quit\n"); - if (e->terminate) printf("Exit: terminate\n"); - ecore_main_loop_quit(); - return 1; -} - -int main(int argc, char **argv) -{ - ecore_init(); - ecore_app_args_set(argc, (const char **) argv); - handler1 = ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, - event_exit, NULL); - handler2 = ecore_event_handler_add(ECORE_EVENT_SIGNAL_HUP, - event_hup, NULL); - ecore_main_loop_begin(); - ecore_shutdown(); - return 0; -} diff --git a/legacy/ecore/examples/exe_example.c b/legacy/ecore/examples/exe_example.c deleted file mode 100644 index e5eccf5b0d..0000000000 --- a/legacy/ecore/examples/exe_example.c +++ /dev/null @@ -1,205 +0,0 @@ -/* Timer example. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include - -int size = 0; -int exe_count = 0; -int data_count = 0; -int line_count = 0; -double then = 0.0, now = 0.0; -Ecore_Exe *exe0 = NULL; -Ecore_Exe *exe1 = NULL; -Ecore_Exe *exe2 = NULL; -Ecore_Exe *exe3 = NULL; -Ecore_Exe *exe4 = NULL; - -static int -exe_data(void *data, int type, void *event) -{ - Ecore_Exe_Event_Data *ev; - int i; - - ev = event; - printf(" [*] DATA RET EXE %p - %p [%i bytes]\n", ev->exe, ev->data, - ev->size); - - if (ev->lines) - { - int i; - - for (i = 0; ev->lines[i].line != NULL; i++) - { - printf("%d %s\n", ev->lines[i].size, ev->lines[i].line); - } - } - else - { - for (i = 0; i < ev->size; i++) - putchar(((unsigned char *)ev->data)[i]); - } - printf("\n"); - return 1; -} - -static int -exe_data_count(void *data, int type, void *event) -{ - Ecore_Exe_Event_Data *ev; - int i; - - ev = event; - - if (ev->lines) - { - for (i = 0; ev->lines[i].line != NULL; i++) - line_count++; - /* printf("%d ", i); This is for testing the number of lines per event. */ - } - - data_count += ev->size; - if (data_count >= size) - { - now = ecore_time_get(); - printf - ("\n\nApproximate data rate - %f bytes/second (%d lines and %d bytes (x2) in %f seconds).\n", - ((double)data_count * 2.0) / (now - then), line_count, data_count, - now - then); - if (data_count != size) - printf("Size discrepency of %d bytes.\n", size - data_count); - printf("\n"); - - /* Since there does not seem to be anyway to convince /bin/cat to finish... */ - ecore_exe_terminate(exe0); - } - - return 1; -} - -static int -exe_exit(void *data, int type, void *event) -{ - Ecore_Exe_Event_Del *ev; - - ev = event; - printf(" [*] EXE EXIT: %p\n", ev->exe); - exe_count--; - if (exe_count <= 0) - ecore_main_loop_quit(); - return 1; -} - -int -timer_once(void *data) -{ - int argc; - char **argv; - int i = 1; - - ecore_app_args_get(&argc, &argv); - ecore_event_handler_add(ECORE_EXE_EVENT_DATA, exe_data_count, NULL); - ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, exe_data_count, NULL); - printf("FILE : %s\n", argv[i]); - exe0 = - ecore_exe_pipe_run("/bin/cat", - ECORE_EXE_PIPE_WRITE | ECORE_EXE_PIPE_READ | - ECORE_EXE_PIPE_READ_LINE_BUFFERED, NULL); - - if (exe0) - { - struct stat s; - - exe_count++; - if (stat(argv[i], &s) == 0) - { - int fd; - - size = s.st_size; - if ((fd = open(argv[i], O_RDONLY)) != -1) - { - char buf[1024]; - int length; - - then = ecore_time_get(); - while ((length = read(fd, buf, 1024)) > 0) - ecore_exe_send(exe0, buf, length); - close(fd); - } - } - /* FIXME: Fuckit, neither of these will actually cause /bin/cat to shut down. What the fuck does it take? */ - ecore_exe_send(exe0, "\004", 1); /* Send an EOF. */ - ecore_exe_close_stdin(exe0); /* /bin/cat should stop when it's stdin closes. */ - } - - return 0; -} - -int -main(int argc, char **argv) -{ - ecore_app_args_set(argc, (const char **)argv); - - ecore_init(); - ecore_event_handler_add(ECORE_EXE_EVENT_DEL, exe_exit, NULL); - - if (argc == 1) - { - ecore_event_handler_add(ECORE_EXE_EVENT_DATA, exe_data, NULL); - ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, exe_data, NULL); - exe0 = ecore_exe_run("/bin/uname -a", NULL); - if (exe0) - exe_count++; - - exe1 = ecore_exe_pipe_run("/bin/sh", - ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_WRITE, - NULL); - if (exe1) - { - exe_count++; - ecore_exe_send(exe1, "ls\n", 3); - ecore_exe_send(exe1, "exit\n", 5); - } - - exe2 = ecore_exe_pipe_run("/usr/bin/find . -print", - ECORE_EXE_PIPE_READ | - ECORE_EXE_PIPE_READ_LINE_BUFFERED, NULL); - if (exe2) - exe_count++; - - exe3 = ecore_exe_pipe_run("/bin/cat", ECORE_EXE_PIPE_WRITE, NULL); - if (exe3) - { - exe_count++; - ecore_exe_send(exe3, "ls\n", 3); - } - exe4 = ecore_exe_pipe_run(".libs/output_tester", - ECORE_EXE_PIPE_READ | - ECORE_EXE_PIPE_READ_LINE_BUFFERED | - ECORE_EXE_PIPE_ERROR | - ECORE_EXE_PIPE_ERROR_LINE_BUFFERED, NULL); - if (exe4) - exe_count++; - - printf(" [*] exe0 = %p (/bin/uname -a)\n", exe0); - printf(" [*] exe1 = %p (echo \"ls\" | /bin/sh)\n", exe1); - printf(" [*] exe2 = %p (/usr/bin/find / -print)\n", exe2); - printf(" [*] exe3 = %p (echo \"ls\" | /bin/cat)\n", exe3); - printf(" [*] exe4 = %p (.libs/output_tester)\n", exe4); - } - else - ecore_timer_add(0.5, timer_once, NULL); - - if ((exe_count > 0) || (argc > 1)) - ecore_main_loop_begin(); - - ecore_shutdown(); - return 0; -} diff --git a/legacy/ecore/examples/list_destroy_example.c b/legacy/ecore/examples/list_destroy_example.c deleted file mode 100644 index ccf00ffd34..0000000000 --- a/legacy/ecore/examples/list_destroy_example.c +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include -#include -#include - -void alloc_data (Ecore_List *list) { - ecore_list_append(list, strdup("first")); - ecore_list_append(list, strdup("second")); - ecore_list_append(list, strdup("third")); -} - -void destroy_cb (void *data) { - printf("Destroying \"%s\".\n", (char *)data); - free(data); -} - -int main (int argc, char *argv[]) { - Ecore_List *list; - - list = ecore_list_new(); - alloc_data(list); - ecore_list_set_free_cb(list, destroy_cb); - ecore_list_destroy(list); - - return 0; -} diff --git a/legacy/ecore/examples/list_example.c b/legacy/ecore/examples/list_example.c deleted file mode 100644 index 2aa606aff8..0000000000 --- a/legacy/ecore/examples/list_example.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include - -void print_list (Ecore_List *list) { - char *list_item; - - printf("--- Current List ---\n"); - ecore_list_goto_first(list); - while((list_item = (char*)ecore_list_next(list)) != NULL) { - printf("\t%s\n", list_item); - } -} - -int main (int argc, char *argv[]) { - Ecore_List *list; - char *first = "first"; - char *second = "second"; - char *last = "last"; - - list = ecore_list_new(); - - ecore_list_append(list, last); // Insert - ecore_list_prepend(list, first); // Add to front - ecore_list_goto_index(list, 1); // counted from 0 - ecore_list_insert(list, second); // Insert before item at index 2 - print_list(list); - - ecore_list_destroy(list); - - return 0; -} diff --git a/legacy/ecore/examples/output_tester.c b/legacy/ecore/examples/output_tester.c deleted file mode 100644 index a8a97cefbf..0000000000 --- a/legacy/ecore/examples/output_tester.c +++ /dev/null @@ -1,130 +0,0 @@ -/* output and error tester. - */ - -#include - -#include -#include - -Ecore_Timer *timer1 = NULL; - -char *data1 = "data1"; - -int -timer1_tick(void *data) -{ - printf("Once only timer called at %3.2f seconds, data %p\n", - ecore_time_get(), data); - fprintf(stderr, "This is an error message from the timer callback.\n"); - fprintf(stdout, "This is an output message from the timer callback.\n"); - fprintf(stderr, - "Some text for testing the various problems that may occur. It should all be to stderr.\n"); - fprintf(stderr, "!@#$%%^&*(){}|[]\\/\\\\=?+',.\"<>`~-_;:\n"); - fprintf(stderr, "1234567890\n"); - fprintf(stderr, "abcdefghijklmnopqrstuvwxyz\n"); - fprintf(stderr, "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n"); - fprintf(stderr, - "This is a really long line that is used to test the systems response to really long lines. Having said that, if I hadn't added this extra sentence it would not have been as long as the introduction line that is five lines above this one. If you got this far, then you may actually have no life, as this is just a really long test line that says nothing important, and the only parts that have any actual relevance are the beginning and the end.\n"); - fprintf(stderr, - "This line is almost identical to the one above, only \\n's ae added to test multiline.\nThis is a really long line that is used to test the systems response to really long lines.\nHaving said that, if I hadn't added this extra sentence it would not have been as long as the introduction line that is five lines above this one.\nIf you got this far, then you may actually have no life, as this is just a really long test line that says nothing important, and the only parts that have any actual relevance are the beginning and the\nend.\n"); - fprintf(stderr, ">&< == <&>\n"); - fprintf(stderr, "This -
- is a HTML line break.\n"); - fprintf(stderr, ">br< ==
\n"); - fprintf(stderr, - "The rest is just some lines cut and paste from http://matrix-rad.net/ coz I need a big lump of text, and it was handy. Used with the permission of the author, coz I (David 'onefang' Seikel) am the author, apply the standard E17 license to this part when it is part of E17 cvs.\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "NAWS stands for Not A Widget Set, it will not be a widget set, it will be a\n"); - fprintf(stderr, - "single, generalised widget and a single generalized widget container.\n"); - fprintf(stderr, "

\n"); - fprintf(stderr, "

\n"); - fprintf(stderr, "The idea is roughly this -

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "NAWS should allow pixel perfect layout on any OS/JVM combination. This is very\n"); - fprintf(stderr, - "important, it gives the GUI designers the freedom from differences that has been\n"); - fprintf(stderr, "sorely lacking on the web.

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "All widgets should be shaped, so that you can have two roundish widgets\n"); - fprintf(stderr, - "snuggling up to each other. All widgets should be font sensitive, this could\n"); - fprintf(stderr, - "break pixel perfection though. The shape should be definable by a mask graphic,\n"); - fprintf(stderr, "or a combination of graphics primitives.

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "Labels should be able to display multiline flowed text or a graphic, with the\n"); - fprintf(stderr, - "graphic being a .png, .jpg, .gif (in that order of preference), and with\n"); - fprintf(stderr, - "animation support. Labels should be able to be attached to all other widgets as\n"); - fprintf(stderr, - "prompts. Labels should have automatic disabled graphics (ghosting) created and\n"); - fprintf(stderr, - "the option of supplying one. So that a widgets prompt gets ghosted when the\n"); - fprintf(stderr, - "widget gets ghosted, and to provide ghosting support for the other widget types.\n"); - fprintf(stderr, - "Labels can have a different text / graphic for the mouse hover state. Label\n"); - fprintf(stderr, "graphics should naturally be paintable.

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "Borders are shaped outlines that can be put around anything. Not really a\n"); - fprintf(stderr, - "widget, just a decoration. When using graphics, the border could be part of the\n"); - fprintf(stderr, - "graphic, so no actual border is needed. Might be able to make Labels as\n"); - fprintf(stderr, "containers do the job of Borders.

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "Buttons are Labels that can be clicked. Alternate text / graphics for the\n"); - fprintf(stderr, - "clicked state should be catered for. Radio buttons can be handled by widget\n"); - fprintf(stderr, - "notification. Checkboxes are buttons that are sticky. The difference between\n"); - fprintf(stderr, - "Checkboxes and toggled Buttons is purely cosmetic.

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, "Icons are movable Buttons.

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "Text editing fields are Labels that allow the text to be edited. Masks and\n"); - fprintf(stderr, "validation should be built in.

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "Progress indicators are Labels with two graphics where the first graphic is\n"); - fprintf(stderr, - "slowly revealed by chipping away at the second overlayed graphic. Default\n"); - fprintf(stderr, "graphics should be supplied.

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "Containers should be automatically scrollable if needed. Actually, Containers\n"); - fprintf(stderr, - "could be just Labels that allow sub widgets, but I don't think I will go that\n"); - fprintf(stderr, "far B-). On second thoughts, I might.

\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "All else is really just a Container with several of the basic widgets in them. A\n"); - fprintf(stderr, - "List is just a collection of Buttons. A Menu is not very different from a List\n"); - fprintf(stderr, - "with sub Lists. Choices are Lists where the selected item is usually all that is\n"); - fprintf(stderr, "\n"); - ecore_main_loop_quit(); - return 0; -} - -int -main(int argc, char **argv) -{ - ecore_init(); - timer1 = ecore_timer_add(5.0, timer1_tick, data1); - fprintf(stdout, "This is an output message from the main function.\n"); - fprintf(stderr, "This is an error message from the main function.\n"); - ecore_main_loop_begin(); - ecore_shutdown(); - return 123; -} diff --git a/legacy/ecore/examples/timer_example.c b/legacy/ecore/examples/timer_example.c deleted file mode 100644 index d50d13095c..0000000000 --- a/legacy/ecore/examples/timer_example.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Timer example. - */ - -#include - -#include -#include - -Ecore_Timer *timer1 = NULL; -Ecore_Timer *timer2 = NULL; -Ecore_Timer *timer3 = NULL; - -char *data1 = "data1"; -char *data2 = "data2"; -char *data3 = "data3"; - -int timer3_tick(void *data) { - printf("Tick timer %3.2f\n", ecore_time_get()); - return 1; -} - -int timer2_tick(void *data) { - printf("Repeat timer called at %3.2f seconds, data %p\n", - ecore_time_get(), data); - return 1; -} - -int timer1_tick(void *data) { - printf("Once only timer called at %3.2f seconds, data %p\n", - ecore_time_get(), data); - ecore_timer_del(timer2); - return 0; -} - -int main(int argc, char **argv) { - ecore_init(); - timer1 = ecore_timer_add(5.0, timer1_tick, data1); - timer2 = ecore_timer_add(0.5, timer2_tick, data2); - timer3 = ecore_timer_add(1.0, timer3_tick, data3); - ecore_main_loop_begin(); - ecore_shutdown(); - return 0; -} diff --git a/legacy/ecore/examples/x_window_example.c b/legacy/ecore/examples/x_window_example.c deleted file mode 100644 index 33ef63ab22..0000000000 --- a/legacy/ecore/examples/x_window_example.c +++ /dev/null @@ -1,20 +0,0 @@ -/* X Windows Example - */ - -#include -#include -#include - -int main (int argc, char *argv[]) { - Ecore_X_Window win; - - ecore_x_init(NULL); - - win = ecore_x_window_new(0, 20, 20, 200, 200); - ecore_x_window_show(win); - ecore_x_flush(); // Ensure requests are sent to the server. - usleep(3000000); // Sleep for 3 seconds. - - ecore_x_shutdown(); - return 0; -} diff --git a/legacy/ecore/src/Ecore.h b/legacy/ecore/src/Ecore.h deleted file mode 100644 index 9bdd679614..0000000000 --- a/legacy/ecore/src/Ecore.h +++ /dev/null @@ -1,916 +0,0 @@ -#ifndef E_CORE_H -#define E_CORE_H 1 - -#include -#include -#include -#include -#include - -#define XK_MISCELLANY 1 - -#include -#include -#include -#include -#include -#include -#include -#ifdef WITH_DMALLOC -#include -#endif - -#define XEV_NONE NoEventMask -#define XEV_KEY KeyPressMask | KeyReleaseMask -#define XEV_BUTTON ButtonPressMask | ButtonReleaseMask -#define XEV_KEY_PRESS KeyPressMask -#define XEV_KEY_RELEASE KeyReleaseMask -#define XEV_BUTTON_PRESS ButtonPressMask -#define XEV_BUTTON_RELEASE ButtonReleaseMask -#define XEV_IN_OUT EnterWindowMask | LeaveWindowMask -#define XEV_MOUSE_MOVE PointerMotionMask | ButtonMotionMask -#define XEV_EXPOSE ExposureMask -#define XEV_VISIBILITY VisibilityChangeMask -#define XEV_CONFIGURE StructureNotifyMask -#define XEV_CHILD_CHANGE SubstructureNotifyMask -#define XEV_CHILD_REDIRECT SubstructureRedirectMask | ResizeRedirectMask -#define XEV_FOCUS FocusChangeMask -#define XEV_PROPERTY PropertyChangeMask -#define XEV_COLORMAP ColormapChangeMask - - -#define ECORE_ATOM(atom, name) \ - if (!atom) (atom) = ecore_atom_get(name); -#define MEMCPY(src, dst, type, num) \ - memcpy(dst, src, sizeof(type) * (num)) -#define NEW(type, num) \ - malloc(sizeof(type) * (num)) -#define ZERO(ptr, type, num) \ - memset((ptr), 0, sizeof(type) * (num)) -#define NEW_PTR(num) \ - malloc(sizeof(void *) * (num)) -#define FREE(ptr) \ - { \ - free(ptr); \ - (ptr) = NULL; \ - } -#define IF_FREE(ptr) \ - {if (ptr) FREE(ptr);} -#define REALLOC(ptr, type, num) \ - { \ - if ((ptr) && (num == 0)) {free(ptr); ptr = NULL;} \ - else if (ptr) ptr = realloc((ptr), sizeof(type) * (num)); \ - else ptr = malloc(sizeof(type) * (num)); \ - } -#define REALLOC_PTR(ptr, num) \ - { \ - if ((ptr) && (num == 0)) {free(ptr); ptr = NULL;} \ - else if (ptr) ptr = realloc(ptr, sizeof(void *) * (num)); \ - else ptr = malloc(sizeof(void *) * (num)); \ - } - -#define START_LIST_DEL(type, base, cmp) \ - type *_p, *_pp; _pp = NULL; \ - _p = (base); \ - while(_p) \ - { \ - if (cmp) \ - { \ - if (_pp) _pp->next = _p->next; \ - else (base) = _p->next; -#define END_LIST_DEL \ - return; \ - } \ - _pp = _p; \ - _p = _p->next; \ - } - -#define DND_TYPE_URI_LIST 0 -#define DND_TYPE_PLAIN_TEXT 1 -#define DND_TYPE_MOZ_URL 2 -#define DND_TYPE_NETSCAPE_URL 3 - -#ifdef __cplusplus -extern "C" -{ -#endif - - extern XContext xid_context; - - typedef void (*Ecore_Error_Function) (Display * d, XErrorEvent * ev); - - typedef struct _ecore_keygrab Ecore_KeyGrab; - - typedef enum _ecore_ev_modifiers - { - ECORE_EVENT_KEY_MODIFIER_NONE = 0, - ECORE_EVENT_KEY_MODIFIER_SHIFT = (1 << 0), - ECORE_EVENT_KEY_MODIFIER_CTRL = (1 << 1), - ECORE_EVENT_KEY_MODIFIER_ALT = (1 << 2), - ECORE_EVENT_KEY_MODIFIER_WIN = (1 << 3) - } Ecore_Event_Key_Modifiers; - - typedef enum _ecore_event_stack_detail - { - ECORE_EVENT_STACK_ABOVE = Above, - ECORE_EVENT_STACK_BELOW = Below, - ECORE_EVENT_STACK_TOP_IF = TopIf, - ECORE_EVENT_STACK_BOTTOM_IF = BottomIf, - ECORE_EVENT_STACK_OPPOSITE = Opposite - } Ecore_Event_Stack_Detail; - - typedef enum _ecore_event_value_mask - { - ECORE_EVENT_VALUE_X = CWX, - ECORE_EVENT_VALUE_Y = CWY, - ECORE_EVENT_VALUE_W = CWWidth, - ECORE_EVENT_VALUE_H = CWHeight, - ECORE_EVENT_VALUE_BORDER = CWBorderWidth, - ECORE_EVENT_VALUE_SIBLING = CWSibling, - ECORE_EVENT_VALUE_STACKING = CWStackMode - } Ecore_Event_Value_Mask; - - typedef enum _ecore_event_type - { - ECORE_EVENT_MOUSE_MOVE, - ECORE_EVENT_MOUSE_DOWN, - ECORE_EVENT_MOUSE_UP, - ECORE_EVENT_MOUSE_IN, - ECORE_EVENT_MOUSE_OUT, - ECORE_EVENT_MOUSE_WHEEL, - ECORE_EVENT_KEY_DOWN, - ECORE_EVENT_KEY_UP, - ECORE_EVENT_WINDOW_MAP, - ECORE_EVENT_WINDOW_UNMAP, - ECORE_EVENT_WINDOW_CREATE, - ECORE_EVENT_WINDOW_DESTROY, - ECORE_EVENT_WINDOW_CONFIGURE, - ECORE_EVENT_WINDOW_CONFIGURE_REQUEST, - ECORE_EVENT_WINDOW_MAP_REQUEST, - ECORE_EVENT_WINDOW_PROPERTY, - ECORE_EVENT_WINDOW_CIRCULATE, - ECORE_EVENT_WINDOW_CIRCULATE_REQUEST, - ECORE_EVENT_WINDOW_REPARENT, - ECORE_EVENT_WINDOW_EXPOSE, - ECORE_EVENT_WINDOW_VISIBILITY, - ECORE_EVENT_WINDOW_SHAPE, - ECORE_EVENT_WINDOW_FOCUS_IN, - ECORE_EVENT_WINDOW_FOCUS_OUT, - ECORE_EVENT_MESSAGE, - ECORE_EVENT_WINDOW_DELETE, - ECORE_EVENT_COLORMAP, - - ECORE_EVENT_DND_DROP_REQUEST, - ECORE_EVENT_DND_DROP_END, - ECORE_EVENT_DND_DROP_POSITION, - ECORE_EVENT_DND_DROP, - ECORE_EVENT_DND_DROP_STATUS, - ECORE_EVENT_DND_DATA_REQUEST, - ECORE_EVENT_PASTE_REQUEST, - ECORE_EVENT_CLEAR_SELECTION, - - ECORE_EVENT_CHILD, - ECORE_EVENT_USER, - - ECORE_EVENT_MAX - } Ecore_Event_Type; - - typedef struct _ecore_event - { - Ecore_Event_Type type; - char ignore; - void *event; - void (*ev_free) (void *evnt); - struct _ecore_event *next; - } Ecore_Event; - - typedef struct _ecore_event_fd_handler - { - int fd; - void (*func) (int fd); - struct _ecore_event_fd_handler *next; - } Ecore_Event_Fd_Handler; - - typedef struct _ecore_event_pid_handler - { - pid_t pid; - void (*func) (pid_t pid); - struct _ecore_event_pid_handler *next; - } Ecore_Event_Pid_Handler; - - typedef struct _ecore_event_ipc_handler - { - int ipc; - void (*func) (int ipc); - struct _ecore_event_ipc_handler *next; - } Ecore_Event_Ipc_Handler; - - typedef struct _ecore_event_timer - { - char *name; - void (*func) (int val, void *data); - int val; - void *data; - double in; - char just_added; - struct _ecore_event_timer *next; - } Ecore_Event_Timer; - - typedef struct _ecore_event_key_down - { - Window win, root; - Ecore_Event_Key_Modifiers mods; - char *key; - char *compose; - Time time; - } Ecore_Event_Key_Down; - - typedef struct _ecore_event_key_up - { - Window win, root; - Ecore_Event_Key_Modifiers mods; - char *key; - char *compose; - Time time; - } Ecore_Event_Key_Up; - - typedef struct _ecore_event_mouse_down - { - Window win, root; - Ecore_Event_Key_Modifiers mods; - int button; - int x, y; - int rx, ry; - int double_click, triple_click; - Time time; - } Ecore_Event_Mouse_Down; - - typedef struct _ecore_event_mouse_up - { - Window win, root; - Ecore_Event_Key_Modifiers mods; - int button; - int x, y; - int rx, ry; - Time time; - } Ecore_Event_Mouse_Up; - - typedef struct _ecore_event_wheel - { - Window win, root; - Ecore_Event_Key_Modifiers mods; - int x, y, z; - int rx, ry; - Time time; - } Ecore_Event_Wheel; - - typedef struct _ecore_event_mouse_move - { - Window win, root; - Ecore_Event_Key_Modifiers mods; - int x, y; - int rx, ry; - Time time; - } Ecore_Event_Mouse_Move; - - typedef struct _ecore_event_window_enter - { - Window win, root; - int x, y; - int rx, ry; - Ecore_Event_Key_Modifiers mods; - Time time; - } Ecore_Event_Window_Enter; - - typedef struct _ecore_event_window_leave - { - Window win, root; - int x, y; - int rx, ry; - Ecore_Event_Key_Modifiers mods; - Time time; - } Ecore_Event_Window_Leave; - - typedef struct _ecore_event_window_focus_in - { - Window win, root; - int key_grab; - Time time; - } Ecore_Event_Window_Focus_In; - - typedef struct _ecore_event_window_focus_out - { - Window win, root; - int key_grab; - Time time; - } Ecore_Event_Window_Focus_Out; - - typedef struct _ecore_event_window_expose - { - Window win, root; - int x, y, w, h; - } Ecore_Event_Window_Expose; - - typedef struct _ecore_event_window_visibility - { - Window win, root; - int fully_obscured; - } Ecore_Event_Window_Visibility; - - typedef struct _ecore_event_window_create - { - Window win, root; - int override; - } Ecore_Event_Window_Create; - - typedef struct _ecore_event_window_destroy - { - Window win, root; - } Ecore_Event_Window_Destroy; - - typedef struct _ecore_event_window_map - { - Window win, root; - } Ecore_Event_Window_Map; - - typedef struct _ecore_event_window_unmap - { - Window win, root; - } Ecore_Event_Window_Unmap; - - typedef struct _ecore_event_window_map_request - { - Window win, root; - } Ecore_Event_Window_Map_Request; - - typedef struct _ecore_event_window_reparent - { - Window win, root; - Window parent_from, parent; - } Ecore_Event_Window_Reparent; - - typedef struct _ecore_event_window_configure - { - Window win, root; - int x, y, w, h; - int wm_generated; - } Ecore_Event_Window_Configure; - - typedef struct _ecore_event_window_configure_request - { - Window win, root; - int x, y, w, h; - int border; - Window stack_win; - Ecore_Event_Stack_Detail detail; - Ecore_Event_Value_Mask mask; - } Ecore_Event_Window_Configure_Request; - - typedef struct _ecore_event_window_circulate - { - Window win, root; - int lower; - } Ecore_Event_Window_Circulate; - - typedef struct _ecore_event_window_circulate_request - { - Window win, root; - int lower; - } Ecore_Event_Window_Circulate_Request; - - typedef struct _ecore_event_window_property - { - Window win, root; - Atom atom; - Time time; - } Ecore_Event_Window_Property; - - typedef struct _ecore_event_window_shape - { - Window win, root; - Time time; - } Ecore_Event_Window_Shape; - - typedef struct _ecore_event_message - { - Window win; - int format; - Atom atom; - union - { - char b[20]; - short s[10]; - long l[5]; - } - data; - } Ecore_Event_Message; - - typedef struct _ecore_event_colormap - { - Window win, root; - Colormap cmap; - int installed; - } Ecore_Event_Colormap; - - typedef struct _ecore_event_window_delete - { - Window win, root; - } Ecore_Event_Window_Delete; - - typedef struct _ecore_event_paste_request - { - Window win, root, source_win; - char *string; - } Ecore_Event_Paste_Request; - - typedef struct _ecore_event_clear_selection - { - Window win, root; - Atom selection; - } Ecore_Event_Clear_Selection; - - typedef struct _ecore_event_dnd_drop_request - { - Window win, root, source_win; - int num_files; - char **files; - int copy, link, move; - } Ecore_Event_Dnd_Drop_Request; - - typedef struct _ecore_event_dnd_drop_end - { - Window win, root, source_win; - } Ecore_Event_Dnd_Drop_End; - - typedef struct _ecore_event_dnd_drop_position - { - Window win, root, source_win; - int x, y; - } Ecore_Event_Dnd_Drop_Position; - - typedef struct _ecore_event_dnd_drop - { - Window win, root, source_win; - } Ecore_Event_Dnd_Drop; - - typedef struct _ecore_event_dnd_drop_status - { - Window win, root, source_win; - int x, y, w, h; - int copy, link, move, e_private; - int all_position_msgs; - int ok; - } Ecore_Event_Dnd_Drop_Status; - - typedef struct _ecore_event_dnd_data_request - { - Window win, root, source_win; - Atom destination_atom; - int plain_text; - int uri_list; - int moz_url; - int netscape_url; - } Ecore_Event_Dnd_Data_Request; - - typedef struct _ecore_event_child - { - pid_t pid; - int exit_code; - } Ecore_Event_Child; - - typedef struct _ecore_event_user - { - int num; - int hup; - } Ecore_Event_User; - - typedef struct _ecore_event_ipc_service - { - int service; - void (*func) (int fd); - struct _ecore_event_ipc_service *next; - } Ecore_Event_Ipc_Service; - - - typedef struct _ecore_xid - { - Window win; - Window parent; - Window root; - int children_num; - Window *children; - int x, y, w, h; - int mapped; - int mouse_in; - int depth; - int gravity; - int coords_invalid; - int bw; - int (*grab_button_auto_replay) (Ecore_Event_Mouse_Down *ev); - } Ecore_XID; - - - /* ---------------- API CALLS BELOW --------------------*/ - - /* ---------------- X WRAPPER CALLS */ - - int ecore_x_get_fd(void); - void ecore_set_error_handler(Ecore_Error_Function func); - void ecore_reset_error_handler(void); - - /** - * ecore_display_init - Establishes a connection to the X server - * @display: The name of the display to connect to - * - * This function creates a connection to the X server. If - * @display is NULL, the name is taken from the $DISPLAY - * environment variable. - */ - int ecore_display_init(char *display); - - int ecore_events_pending(void); - void ecore_get_next_event(XEvent * event); - int ecore_event_shape_get_id(void); - void ecore_sync(void); - void ecore_flush(void); - - /* ---------------- WINDOW CHILD HANDLING */ - - void ecore_del_child(Window win, Window child); - void ecore_add_child(Window win, Window child); - void ecore_raise_child(Window win, Window child); - void ecore_lower_child(Window win, Window child); - Ecore_XID *ecore_add_xid(Window win, int x, int y, int w, int h, - int depth, Window parent); - Ecore_XID *ecore_validate_xid(Window win); - void ecore_unvalidate_xid(Window win); - - /* ---------------- WINDOWS-RELATED CALLS */ - - Window ecore_window_new(Window parent, int x, int y, int w, - int h); - Window ecore_window_override_new(Window parent, int x, int y, - int w, int h); - Window ecore_window_input_new(Window parent, int x, int y, int w, - int h); - void ecore_window_set_events_propagate(Window win, - int propagate); - void ecore_window_show(Window win); - void ecore_window_hide(Window win); - void ecore_window_set_background_pixmap(Window win, - Pixmap pmap); - void ecore_window_set_shape_mask(Window win, Pixmap mask); - void ecore_window_add_shape_mask(Window win, Pixmap mask); - void ecore_window_set_shape_window(Window win, Window src, - int x, int y); - void ecore_window_add_shape_window(Window win, Window src, - int x, int y); - void ecore_window_set_shape_rectangle(Window win, int x, int y, - int w, int h); - void ecore_window_add_shape_rectangle(Window win, int x, int y, - int w, int h); - void ecore_window_set_shape_rectangles(Window win, - XRectangle * rect, - int num); - void ecore_window_add_shape_rectangles(Window win, - XRectangle * rect, - int num); - void ecore_window_clip_shape_by_rectangle(Window win, int x, - int y, int w, int h); - XRectangle *ecore_window_get_shape_rectangles(Window win, int *num); - void ecore_window_select_shape_events(Window win); - void ecore_window_unselect_shape_events(Window win); - void ecore_window_clear(Window win); - void ecore_window_clear_area(Window win, int x, int y, int w, - int h); - void ecore_window_set_events(Window win, long mask); - void ecore_window_remove_events(Window win, long mask); - void ecore_window_add_events(Window win, long mask); - void ecore_window_move(Window win, int x, int y); - void ecore_window_resize(Window win, int w, int h); - void ecore_window_move_resize(Window win, int x, int y, int w, - int h); - void ecore_window_destroy(Window win); - void ecore_window_reparent(Window win, Window parent, int x, - int y); - void ecore_window_raise(Window win); - void ecore_window_lower(Window win); - void ecore_window_get_geometry(Window win, int *x, int *y, - int *w, int *h); - int ecore_window_get_depth(Window win); - int ecore_window_exists(Window win); - Window ecore_window_get_parent(Window win); - Window *ecore_window_get_children(Window win, int *num); - int ecore_window_mouse_in(Window win); - void ecore_window_mouse_set_in(Window win, int in); - Window ecore_window_get_root(Window win); - void ecore_window_set_delete_inform(Window win); - void ecore_window_property_set(Window win, Atom type, - Atom format, int size, - void *data, int number); - void *ecore_window_property_get(Window win, Atom type, - Atom format, int *size); - void ecore_window_dnd_advertise(Window win); - void ecore_window_ignore(Window win); - void ecore_window_no_ignore(Window win); - int ecore_window_is_ignored(Window win); - Window ecore_window_get_at_xy(int x, int y); - - int ecore_window_dnd_capable(Window win); - void ecore_window_dnd_handle_motion(Window source_win, int x, - int y, int dragging); - void ecore_window_dnd_ok(int ok); - void ecore_window_dnd_finished(void); - void ecore_window_dnd_send_status_ok(Window source_win, - Window win, int x, int y, - int w, int h); - void ecore_window_dnd_send_finished(Window source_win, - Window win); - void ecore_window_set_title(Window win, char *title); - void ecore_window_set_name_class(Window win, char *name, - char *); - void ecore_window_get_name_class(Window win, char **name, - char **name_class); - char *ecore_window_get_machine(Window win); - char *ecore_window_get_command(Window win); - char *ecore_window_get_icon_name(Window win); - void ecore_window_get_hints(Window win, int *accepts_focus, - int *initial_state, - Pixmap * icon_pixmap, - Pixmap * icon_mask, - Window * icon_window, - Window * window_group); - void ecore_window_set_min_size(Window win, int w, int h); - void ecore_window_set_max_size(Window win, int w, int h); - void ecore_window_set_xy_hints(Window win, int x, int y); - void ecore_window_get_frame_size(Window win, int *l, int *r, - int *t, int *b); - int ecore_window_save_under(Window win); - void ecore_window_hint_set_layer(Window win, int layer); - void ecore_window_hint_set_sticky(Window win, int sticky); - void ecore_window_hint_set_borderless(Window win); - int ecore_window_get_gravity(Window win); - void ecore_window_gravity_reset(Window win); - void ecore_window_gravity_set(Window win, int gravity); - void ecore_window_bit_gravity_set(Window win, int gravity); - void ecore_window_get_root_relative_location(Window win, - int *x, int *y); - void ecore_window_send_event_move_resize(Window win, int x, - int y, int w, int h); - void ecore_window_send_client_message(Window win, Atom type, - int format, void *data); - void ecore_window_add_to_save_set(Window win); - void ecore_window_del_from_save_set(Window win); - void ecore_window_kill_client(Window win); - void ecore_window_set_border_width(Window win, int bw); - int ecore_window_get_border_width(Window win); - int ecore_window_get_wm_size_hints(Window win, - XSizeHints * hints, - int *mask); - int ecore_window_is_visible(Window win); - int ecore_window_is_normal(Window win); - - /** - * ecore_window_is_manageable - Returns 1 if a window can be managed by the wm. - * @win: the window for which to query. - * - * This function returns 0 if the window is unmapped, should be ignored - * by the window manager or is of the InputOnly class, 1 otherwise. - */ - int ecore_window_is_manageable(Window win); - - void ecore_windows_restack(Window * wins, int num); - void ecore_window_stack_above(Window win, Window above); - void ecore_window_stack_below(Window win, Window below); - char *ecore_window_get_title(Window win); - void ecore_window_button_grab_auto_replay_set(Window win, - int (*func) (Ecore_Event_Mouse_Down *ev)); - void *ecore_window_button_grab_auto_replay_get(Window win); - Window ecore_window_root(void); - void ecore_window_get_virtual_area(Window win, int *area_x, - int *area_y); - - /* ---------------- PIXMAP CALLS */ - - Pixmap ecore_pixmap_new(Window win, int w, int h, int dep); - void ecore_pixmap_free(Pixmap pmap); - - /* ---------------- POINTER CALLS */ - - void ecore_pointer_xy(Window win, int *x, int *y); - void ecore_pointer_xy_set(int x, int y); - void ecore_pointer_xy_get(int *x, int *y); - void ecore_pointer_warp_by(int dx, int dy); - void ecore_pointer_warp_to(int x, int y); - void ecore_pointer_replay(Time t); - void ecore_pointer_grab(Window win, Time t); - void ecore_pointer_ungrab(Time t); - - /* ---------------- KEYBOARD-RELATED CALLS */ - - KeySym ecore_key_get_keysym_from_keycode(KeyCode keycode); - char *ecore_key_get_string_from_keycode(KeyCode keycode); - void ecore_key_grab(char *key, Ecore_Event_Key_Modifiers mods, - int anymod, int sync); - void ecore_key_ungrab(char *key, - Ecore_Event_Key_Modifiers mods, - int anymod); - KeyCode ecore_key_get_keycode(char *key); - char *ecore_keypress_translate_into_typeable(Ecore_Event_Key_Down * e); - - void ecore_event_allow(int mode, Time t); - - /* ---------------- LOCKS AND MODIFIER CALLS */ - - int ecore_lock_mask_scroll_get(void); - int ecore_lock_mask_num_get(void); - int ecore_lock_mask_caps_get(void); - void ecore_lock_scroll_set(int onoff); - int ecore_lock_scroll_get(void); - void ecore_lock_num_set(int onoff); - int ecore_lock_num_get(void); - void ecore_lock_caps_set(int onoff); - int ecore_lock_caps_get(void); - - int ecore_mod_mask_shift_get(void); - int ecore_mod_mask_ctrl_get(void); - int ecore_mod_mask_alt_get(void); - int ecore_mod_mask_win_get(void); - void ecore_mod_shift_set(int onoff); - int ecore_mod_shift_get(void); - void ecore_mod_ctrl_set(int onoff); - int ecore_mod_ctrl_get(void); - void ecore_mod_alt_set(int onoff); - int ecore_mod_alt_get(void); - void ecore_mod_win_set(int onoff); - int ecore_mod_win_get(void); - - int ecore_lock_mask_get(void); - int ecore_modifier_mask_get(void); - Window ecore_get_key_grab_win(void); - Display *ecore_display_get(void); - void ecore_focus_window_set(Window win); - Window ecore_focus_window_get(void); - void ecore_focus_to_window(Window win); - void ecore_focus_mode_reset(void); - Atom ecore_atom_get(char *name); - - - /* ---------------- GRABBING/UNGRABBING CALLS */ - - /** - * ecore_grab - Grabs the X server connection - * - * This function wraps XGrabServer, which prevents all other - * clients from receiving events. Calls are reference-counted. - */ - void ecore_grab(void); - - /** - * ecore_ungrab - Ungrabs the X server connection - * - * This function releases the server, provided that ecore_grab() - * has been called the same number of times as ecore_ungrab(). - */ - void ecore_ungrab(void); - - void ecore_grab_mouse(Window win, int confine, Cursor cursor); - void ecore_ungrab_mouse(void); - Window ecore_grab_window_get(void); - - void ecore_button_grab(Window win, int button, int events, - Ecore_Event_Key_Modifiers mod, - int any_mod); - void ecore_button_ungrab(Window win, int button, - Ecore_Event_Key_Modifiers mod, - int any_mod); - void ecore_keyboard_grab(Window win); - void ecore_keyboard_ungrab(void); - Window ecore_keyboard_grab_window_get(void); - - - /* ----------------- GRAPHICS CONTEXT AND DRAWING CALLS */ - - GC ecore_gc_new(Drawable d); - void ecore_gc_free(GC gc); - void ecore_gc_set_fg(GC gc, int val); - void ecore_gc_set_include_inferiors(GC gc); - void ecore_fill_rectangle(Drawable d, GC gc, int x, int y, - int w, int h); - void ecore_draw_rectangle(Drawable d, GC gc, int x, int y, - int w, int h); - void ecore_draw_line(Drawable d, GC gc, int x1, int y1, int x2, - int y2); - void ecore_draw_point(Drawable d, GC gc, int x, int y); - void ecore_area_copy(Drawable src, Drawable dest, GC gc, - int sx, int sy, int sw, int sh, int dx, - int dy); - - - /* ---------------- DRAG AND DROP CALLS */ - - - int ecore_dnd_selection_convert(Window win, Window req, - Atom type); - void *ecore_dnd_selection_get(Window win, Window req, Atom type, - int *size); - void ecore_dnd_set_data(Window win); - void ecore_dnd_set_action(Window win); - - void ecore_dnd_send_data(Window win, Window source_win, - void *data, int size, Atom dest_atom, - int type); - void ecore_dnd_set_mode_copy(void); - void ecore_dnd_set_mode_link(void); - void ecore_dnd_set_mode_move(void); - void ecore_dnd_set_mode_ask(void); - void ecore_dnd_own_selection(Window win); - void ecore_dnd_send_drop(Window win, Window source_win); - void ecore_get_virtual_area(int *area_x, int *area_y); - void ecore_clear_target_status(void); - - - /* ---------------- IPC CALLS */ - - void ecore_event_ipc_init(char *path); - void ecore_event_ipc_cleanup(void); - void ecore_add_ipc_service(int service, void (*func) (int fd)); - void ecore_del_ipc_service(int service); - - /* ---------------- SELECTION CALLS */ - - char *ecore_selection_get_data(Window win, Atom prop); - Window ecore_selection_request(void); - Window ecore_selection_set(char *string); - - /* ---------------- CURSOR LOOK CALLS */ - - void ecore_set_blank_pointer(Window w); - Cursor ecore_cursor_new(Pixmap pmap, Pixmap mask, int x, int y, - int fr, int fg, int fb, int br, int bg, - int bb); - void ecore_cursor_free(Cursor c); - void ecore_cursor_set(Window win, Cursor c); - - /* ---------------- EVENT-HANDLING CALLS */ - - void ecore_add_event(Ecore_Event_Type type, void *event, - void (*ev_free) (void *event)); - void ecore_del_event(void *event); - void ecore_del_all_events(void); - Ecore_Event *ecore_get_last_event(void); - void ecore_add_event_fd(int fd, void (*func) (int fd)); - void ecore_del_event_fd(int fd); - void ecore_add_event_pid(pid_t pid, void (*func) (pid_t pid)); - void ecore_del_event_pid(pid_t pid); - void ecore_add_event_ipc(int ipc, void (*func) (int ipc)); - void ecore_del_event_ipc(int ipc); - void ecore_event_loop(void); - void ecore_event_loop_quit(void); - void ecore_add_event_timer(char *name, double in, - void (*func) (int val, void *data), - int val, void *data); - void *ecore_del_event_timer(char *name); - void ecore_event_filter(Ecore_Event * ev); - void ecore_event_filter_events_handle(Ecore_Event * ev); - void ecore_event_filter_idle_handle(void); - - /** - * ecore_event_filter_init - Setup event handlers - * - * This function initializes all ECORE_EVENT_MAX - * event handler to be empty. - */ - void ecore_event_filter_init(void); - - void ecore_event_filter_handler_add(Ecore_Event_Type type, - void (*func) (Ecore_Event *ev)); - void ecore_event_filter_idle_handler_add(void (*func) (void *data), void *data); - - /** - * ecore_event_signal_init - Setup for default signal handlers - * - * This function initializes signal handlers for various - * signals via sigaction(). - */ - void ecore_event_signal_init(void); - - int ecore_event_signal_events_pending(void); - - /** - * ecore_event_x_init - Ecore X initialization - * - * This function initializes Ecore's X event handling - * callbacks. - */ - void ecore_event_x_init(void); - - /* ---------------- MISCELLANEOUS CALLS */ - - double ecore_get_time(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/legacy/ecore/src/Makefile.am b/legacy/ecore/src/Makefile.am index f8d2f8c4a9..2433e6cc47 100644 --- a/legacy/ecore/src/Makefile.am +++ b/legacy/ecore/src/Makefile.am @@ -1,12 +1,3 @@ MAINTAINERCLEANFILES = Makefile.in -SUBDIRS = lib bin - -EXTRA_DIST = \ - e_ev_filter.c \ - e_ev_signal.c \ - e_ev_x.c \ - e_events.c \ - e_ipc.c \ - e_util.c \ - e_x.c +SUBDIRS = lib diff --git a/legacy/ecore/src/bin/.cvsignore b/legacy/ecore/src/bin/.cvsignore deleted file mode 100644 index 79fccaccf9..0000000000 --- a/legacy/ecore/src/bin/.cvsignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -ecore_config -ecore_evas_test -ecore_test -ecore_dbus_test -ecore_dbus_hal_test -ecore_dbus_receiver_test diff --git a/legacy/ecore/src/bin/Makefile.am b/legacy/ecore/src/bin/Makefile.am deleted file mode 100644 index 556212ab7c..0000000000 --- a/legacy/ecore/src/bin/Makefile.am +++ /dev/null @@ -1,219 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -if BUILD_ECORE_EVAS -ECORE_EVAS_LIB = $(top_builddir)/src/lib/ecore_evas/libecore_evas.la -else -ECORE_EVAS_LIB = -endif - -if BUILD_ECORE_DIRECTFB -ECORE_DIRECTFB_LIB = $(top_builddir)/src/lib/ecore_directfb/libecore_directfb.la -else -ECORE_DIRECTFB_LIB = -endif - -if BUILD_ECORE_X -ECORE_X_LIB = $(top_builddir)/src/lib/ecore_x/libecore_x.la -else -ECORE_X_LIB = -endif - -if BUILD_ECORE_FB -ECORE_FB_LIB = $(top_builddir)/src/lib/ecore_fb/libecore_fb.la -else -ECORE_FB_LIB = -endif - -if BUILD_ECORE_JOB -ECORE_JOB_LIB = $(top_builddir)/src/lib/ecore_job/libecore_job.la -else -ECORE_JOB_LIB = -endif - -if BUILD_ECORE_CON -ECORE_CON_LIB = $(top_builddir)/src/lib/ecore_con/libecore_con.la -else -ECORE_CON_LIB = -endif - -if BUILD_ECORE_IPC -ECORE_IPC_LIB = $(top_builddir)/src/lib/ecore_ipc/libecore_ipc.la -else -ECORE_IPC_LIB = -endif - -if BUILD_ECORE_TXT -ECORE_TXT_LIB = $(top_builddir)/src/lib/ecore_txt/libecore_txt.la -else -ECORE_TXT_LIB = -endif - -if BUILD_ECORE_CONFIG -ECORE_CONFIG_LIB = $(top_builddir)/src/lib/ecore_config/libecore_config.la -else -ECORE_CONFIG_LIB = -endif - -if BUILD_ECORE_DBUS -ECORE_DBUS_LIB = $(top_builddir)/src/lib/ecore_dbus/libecore_dbus.la -else -ECORE_DBUS_LIB = -endif - -INCLUDES = \ --I$(top_srcdir)/src/lib/ecore \ --I$(top_srcdir)/src/lib/ecore_evas \ --I$(top_srcdir)/src/lib/ecore_directfb \ --I$(top_srcdir)/src/lib/ecore_x \ --I$(top_srcdir)/src/lib/ecore_fb \ --I$(top_srcdir)/src/lib/ecore_job \ --I$(top_srcdir)/src/lib/ecore_con \ --I$(top_srcdir)/src/lib/ecore_ipc \ --I$(top_srcdir)/src/lib/ecore_txt @iconv_cflags@ \ --I$(top_srcdir)/src/lib/ecore_config \ --I$(top_srcdir)/src/lib/ecore_dbus \ --I$(top_builddir)/src/lib/ecore \ --I$(top_builddir)/src/lib/ecore_evas \ --I$(top_builddir)/src/lib/ecore_directfb \ --I$(top_builddir)/src/lib/ecore_x \ --I$(top_builddir)/src/lib/ecore_fb \ --I$(top_builddir)/src/lib/ecore_job \ --I$(top_builddir)/src/lib/ecore_con \ --I$(top_builddir)/src/lib/ecore_ipc \ --I$(top_builddir)/src/lib/ecore_txt @iconv_cflags@ \ --I$(top_builddir)/src/lib/ecore_config \ --I$(top_builddir)/src/lib/ecore_dbus \ -@EVAS_CFLAGS@ \ -@x_cflags@ \ -@EET_CFLAGS@ \ --DPACKAGE_BIN_DIR=\"@PACKAGE_BIN_DIR@\" \ --DPACKAGE_LIB_DIR=\"@PACKAGE_LIB_DIR@\" \ --DPACKAGE_DATA_DIR=\"@PACKAGE_DATA_DIR@\" - -bin_PROGRAMS = \ -ecore_test \ -ecore_evas_test \ -ecore_config \ -ecore_dbus_test \ -ecore_dbus_hal_test \ -ecore_dbus_receiver_test - -ecore_test_SOURCES = \ -ecore_test.c - -ecore_test_LDADD = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_X_LIB) \ -$(ECORE_TXT_LIB) \ -$(ECORE_JOB_LIB) \ -$(ECORE_FB_LIB) \ -$(ECORE_EVAS_LIB) \ -$(ECORE_CON_LIB) \ -$(ECORE_IPC_LIB) \ --lm @iconv_libs@ - -ecore_test_CFLAGS = \ -$(CFLAGS) \ -$(INCLUDES) - -ecore_test_DEPENDENCIES = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_X_LIB) \ -$(ECORE_TXT_LIB) \ -$(ECORE_JOB_LIB) \ -$(ECORE_FB_LIB) \ -$(ECORE_EVAS_LIB) \ -$(ECORE_CON_LIB) \ -$(ECORE_IPC_LIB) - -ecore_evas_test_SOURCES = \ -ecore_evas_test.c \ -ecore_evas_test_app.c \ -ecore_evas_test_bg.c \ -ecore_evas_test_calibrate.c \ -ecore_evas_test.h - -ecore_evas_test_LDADD = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_X_LIB) \ -$(ECORE_TXT_LIB) \ -$(ECORE_JOB_LIB) \ -$(ECORE_FB_LIB) \ -$(ECORE_EVAS_LIB) \ -$(ECORE_CON_LIB) \ -$(ECORE_IPC_LIB) \ --lm @iconv_libs@ - -ecore_evas_test_CFLAGS = \ -$(CFLAGS) \ -$(INCLUDES) - -ecore_evas_test_DEPENDENCIES = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_JOB_LIB) \ -$(ECORE_FB_LIB) \ -$(ECORE_X_LIB) \ -$(ECORE_EVAS_LIB) \ -$(ECORE_CON_LIB) \ -$(ECORE_IPC_LIB) \ -$(ECORE_TXT_LIB) - -ecore_config_SOURCES = \ -ecore_config.c - -ecore_config_LDADD = \ -$(ECORE_CONFIG_LIB) - -ecore_config_DEPENDENCIES = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_CONFIG_LIB) - -ecore_dbus_test_SOURCES = \ -ecore_dbus_test.c \ -ecore_dbus_test.h - -ecore_dbus_test_LDADD = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_DBUS_LIB) - -ecore_dbus_test_CFLAGS = \ -$(CFLAGS) \ -$(INCLUDES) - -ecore_dbus_test_DEPENDENCIES = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_DBUS_LIB) - - -ecore_dbus_hal_test_SOURCES = \ -ecore_dbus_hal_test.c \ -ecore_dbus_test.h - -ecore_dbus_hal_test_LDADD = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_DBUS_LIB) - -ecore_dbus_hal_test_CFLAGS = \ -$(CFLAGS) \ -$(INCLUDES) - -ecore_dbus_hal_test_DEPENDENCIES = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_DBUS_LIB) - - -ecore_dbus_receiver_test_SOURCES = \ -ecore_dbus_receiver_test.c \ -ecore_dbus_test.h - -ecore_dbus_receiver_test_LDADD = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_DBUS_LIB) - -ecore_dbus_receiver_test_CFLAGS = \ -$(CFLAGS) \ -$(INCLUDES) - -ecore_dbus_receiver_test_DEPENDENCIES = \ -$(top_builddir)/src/lib/ecore/libecore.la \ -$(ECORE_DBUS_LIB) diff --git a/legacy/ecore/src/bin/ecore_config.c b/legacy/ecore/src/bin/ecore_config.c deleted file mode 100644 index 494087cb84..0000000000 --- a/legacy/ecore/src/bin/ecore_config.c +++ /dev/null @@ -1,336 +0,0 @@ -#include "config.h" -#include "Ecore.h" - -#include -#include -#include - -#ifdef BUILD_ECORE_CONFIG -#include -#include -#include -#include "Ecore_Config.h" -#include "Ecore_Data.h" -#include "ecore_config_private.h" - -// strcmp for paths - for sorting folders before files -int -pathcmp(const char *s1, const char *s2) -{ - char *s1d, *s2d; - - // strip common part of paths - while(*s1 && *s2 && *s1 == *s2) - { - s1++; - s2++; - } - - // handle /foo/bar/baz <> /foo/bar_baz properly - if (*s1 == '/' && *s2 != '/') return -1; - if (*s1 != '/' && *s2 == '/') return 1; - - // skip leading / - if (*s1 == '/') s1++; - if (*s2 == '/') s2++; - - // order folders before files - s1d = strchr(s1, '/'); - s2d = strchr(s2, '/'); - if (s1d != NULL && s2d == NULL) return -1; - if (s1d == NULL && s2d != NULL) return 1; - - return strcmp(s1, s2); -} - -int -del(const char *key) -{ - Ecore_Config_Prop *e; - e = ecore_config_get(key); - if(e == NULL) return -1; - - ecore_config_dst(e); - return 0; -} - -int -get(const char *key) -{ - Ecore_Config_Prop *e; - char *temp = NULL; - - if (!(e = ecore_config_get(key))) - { - fprintf(stderr, "No such property\n"); - return -1; - } - - printf("%-10s", ecore_config_type_get(e)); - - switch (e->type) - { - case ECORE_CONFIG_NIL: - printf("\n"); - break; - case ECORE_CONFIG_INT: - printf("%ld\n", ecore_config_int_get(key)); - break; - case ECORE_CONFIG_BLN: - printf("%d\n", ecore_config_boolean_get(key)); - break; - case ECORE_CONFIG_FLT: - printf("%lf\n", ecore_config_float_get(key)); - break; - case ECORE_CONFIG_STR: - temp = ecore_config_string_get(key); - break; - case ECORE_CONFIG_RGB: - temp = ecore_config_argbstr_get(key); - break; - case ECORE_CONFIG_THM: - temp = ecore_config_theme_get(key); - break; - default: - fprintf(stderr, "Property has unrecognized type"); - return -1; - } - if(temp) - { - printf("\"%s\"\n", temp); - free(temp); - } - return 0; -} - -int -list(const char *file) -{ - char *key; - - Eet_File *ef; - Ecore_Config_Prop *e; - Ecore_Sheap *keys; - - // Get number of keys and create heap for sort - ef = eet_open(file, EET_FILE_MODE_READ); - if (!ef) return -1; - - keys = ecore_sheap_new(ECORE_COMPARE_CB(pathcmp), eet_num_entries(ef)); - - eet_close(ef); - - e = __ecore_config_bundle_local->data; - - do - { - // don't show system settings - if( !(e->flags & ECORE_CONFIG_FLAG_SYSTEM) ) - ecore_sheap_insert(keys, e->key); - } - while((e = e->next)); - - while((key = ecore_sheap_extract(keys))) - { - printf("%-28s\t", key); - get(key); - } - - ecore_sheap_destroy(keys); - - return 0; -} - -void -usage_and_exit(const char *prog, int ret, const char *msg) -{ - if (msg) fprintf(stderr, "%s\n\n", msg); - fprintf(stderr, "Usage: %s \n", prog); - fprintf(stderr, "Modify ecore_config files\n\n"); - fprintf(stderr, "Options:\n"); - fprintf(stderr, " -c, --file=FILE config file\n"); - fprintf(stderr, " -k, --key=KEY must be given for all commands except -a\n\n"); - fprintf(stderr, "Commands:\n"); - fprintf(stderr, " -a, --list get all keys\n"); - fprintf(stderr, " -g, --get get key\n"); - fprintf(stderr, " -d, --del delete key\n"); - fprintf(stderr, " -b, --bool=VALUE set boolean\n"); - fprintf(stderr, " -f, --float=VALUE set float\n"); - fprintf(stderr, " -i, --int=VALUE set integer\n"); - fprintf(stderr, " -r, --rgb=VALUE set RGBA\n"); - fprintf(stderr, " -s, --string=VALUE set string\n"); - fprintf(stderr, " -t, --theme=VALUE set theme\n\n"); - exit(ret); -} - -int -main(int argc, char * const argv[]) -{ - char *prog, *file, *key; - void *value = (void *)NULL; - char cmd = 's'; - int type = -1; - int ret = 0; - long i; - float f; - - file = key = prog = NULL; - - prog = strdup(argv[0]); - - if(argc < 4) - usage_and_exit(prog, 2, NULL); - - while(1) - { - static struct option long_options[] = { - {"file", 1, 0, 'c'}, - {"list", 0, 0, 'a'}, - {"get", 0, 0, 'g'}, - {"del", 0, 0, 'd'}, - {"bool", 1, 0, 'b'}, - {"float", 1, 0, 'f'}, - {"int", 1, 0, 'i'}, - {"rgb", 1, 0, 'r'}, - {"string", 1, 0, 's'}, - {"theme", 1, 0, 't'}, - {"key", 1, 0, 'k'}, - {0, 0, 0, 0} - }; - - ret = getopt_long(argc, argv, "c:agdb:f:i:r:s:t:k:", long_options, NULL); - if(ret == -1) - break; - - switch(ret) - { - case 'k': - key = strdup(optarg); - break; - case 'n': - if(value) - usage_and_exit(prog, 2, "too many commands"); - type = ECORE_CONFIG_NIL; - value = NULL; - break; - case 'b': - if(value) - usage_and_exit(prog, 2, "too many commands"); - type = ECORE_CONFIG_BLN; - i = atoi(optarg); - value = &i; - break; - case 'i': - if(value) - usage_and_exit(prog, 2, "too many commands"); - type = ECORE_CONFIG_INT; - i = atoi(optarg); - value = &i; - break; - case 'f': - if(value) - usage_and_exit(prog, 2, "too many commands"); - type = ECORE_CONFIG_FLT; - f = atof(optarg); - value = &f; - break; - case 'r': - if(value) - usage_and_exit(prog, 2, "too many commands"); - type = ECORE_CONFIG_RGB; - i = (long) strtoul( (*optarg == '#') ? (optarg + 1) : optarg, NULL, 16 ); - value = &i; - break; - case 's': - if(value) - usage_and_exit(prog, 2, "too many commands"); - type = ECORE_CONFIG_STR; - value = strdup(optarg); - break; - case 't': - if(value) - usage_and_exit(prog, 2, "too many commands"); - type = ECORE_CONFIG_THM; - value = strdup(optarg); - break; - case 'c': - if(file) - free(file); - file = strdup(optarg); - break; - case '?': - case ':': - return 1; - default: - cmd = ret; - break; - } - } - - if(cmd == 's' && type == -1) - usage_and_exit(prog, 2, "You need to specify a command!"); - - if(cmd != 'a' && key == NULL) - usage_and_exit(prog, 2, "You need to specify key!"); - - if(ecore_config_init("econfig") != ECORE_CONFIG_ERR_SUCC) - { - fprintf(stderr, "Couldn't init ecore_config!"); - return 1; - } - - // Load configuration from file - ecore_config_file_load(file); - - ret = 0; - - // Execute command - switch (cmd) - { - case 's': - if (ecore_config_typed_set(key, value, type) != ECORE_CONFIG_ERR_SUCC) - { - fprintf(stderr, "Set failed for %s", key); - ret = 1; - } else { - ecore_config_file_save(file); - } - get(key); // display value after setting it - break; - case 'd': - if(del(key)) - { - fprintf(stderr, "Delete failed for %s", key); - ret = 1; - } else { - ecore_config_file_save(file); - } - break; - case 'g': - if (get(key)) ret = 1; - break; - case 'a': - if (list(file)) ret = 1; - break; - default: - printf("Unhandled command '%c'\n", cmd); - } - - ecore_config_shutdown(); - - if(type == ECORE_CONFIG_STR || type == ECORE_CONFIG_THM) - free(value); - - if(file) - free(file); - - return ret; -} -#else -int -main(int argc, const char **argv) -{ - printf("Ecore_config module not compiled. This program is empty.\n"); - return -1; -} -#endif diff --git a/legacy/ecore/src/bin/ecore_dbus_hal_test.c b/legacy/ecore/src/bin/ecore_dbus_hal_test.c deleted file mode 100644 index 45c41043e2..0000000000 --- a/legacy/ecore/src/bin/ecore_dbus_hal_test.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 - */ -#include "ecore_dbus_test.h" - -#ifdef BUILD_ECORE_DBUS - -static int ecore_dbus_event_server_add(void *udata, int ev_type, void *ev); -static int ecore_dbus_event_server_del(void *udata, int ev_type, void *ev); - -static void ecore_dbus_method_name_has_owner_cb(void *data, Ecore_DBus_Method_Return *reply); -static void ecore_dbus_method_add_match_cb(void *data, Ecore_DBus_Method_Return *reply); -static void ecore_dbus_method_error_cb(void *data, const char *error); - -static int ecore_dbus_event_server_signal(void *udata, int ev_type, void *ev); - -static const char *event_type_get(Ecore_DBus_Message_Type type); - -static Ecore_DBus_Server *svr = NULL; - -int -main(int argc, char **argv) -{ - - ecore_dbus_init(); - svr = ecore_dbus_server_system_connect(NULL); - if (!svr) - { - printf("Couldn't connect to dbus system server!\n"); - } - else - { - int i = 0; - Ecore_Event_Handler *handler[3]; - - printf("Connected!\n"); - - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_ADD, - ecore_dbus_event_server_add, NULL); - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_DEL, - ecore_dbus_event_server_del, NULL); - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SIGNAL, - ecore_dbus_event_server_signal, NULL); - - ecore_main_loop_begin(); - - for (i = 0; i < 3; i++) - ecore_event_handler_del(handler[i]); - - if (svr) ecore_dbus_server_del(svr); - } - ecore_dbus_shutdown(); - return 0; -} - -static int -ecore_dbus_event_server_add(void *udata, int ev_type, void *ev) -{ - Ecore_DBus_Event_Server_Add *event; - - event = ev; - printf("ecore_dbus_event_server_add\n"); - ecore_dbus_method_name_has_owner(event->server, "org.freedesktop.Hal", - ecore_dbus_method_name_has_owner_cb, - ecore_dbus_method_error_cb, NULL); - return 0; -} - -static int -ecore_dbus_event_server_del(void *udata, int ev_type, void *ev) -{ - Ecore_DBus_Event_Server_Del *event; - - event = ev; - printf("ecore_dbus_event_server_del\n"); - svr = NULL; - ecore_main_loop_quit(); - return 0; -} - -static void -ecore_dbus_method_name_has_owner_cb(void *data, Ecore_DBus_Method_Return *reply) -{ - unsigned int *exists; - printf("ecore_dbus_event_server_method_return %s %s.%s\n", event_type_get(reply->type), - reply->header.interface, - reply->header.member); - - exists = reply->args[0].value; - if ((!exists) || (!*exists)) - { - printf("No hal\n"); - ecore_main_loop_quit(); - } - else - { - printf("Add listener for devices\n"); - ecore_dbus_method_add_match(reply->server, - "type='signal'," - "interface='org.freedesktop.Hal.Manager'," - "sender='org.freedesktop.Hal'," - "path='/org/freedesktop/Hal/Manager'", - ecore_dbus_method_add_match_cb, - ecore_dbus_method_error_cb, NULL); - - } -} - -static void -ecore_dbus_method_add_match_cb(void *data, Ecore_DBus_Method_Return *reply) -{ - printf("ecore_dbus_event_server_method_return %s %s.%s\n", event_type_get(reply->type), - reply->header.interface, - reply->header.member); - printf("Should be listening for device changes!\n"); -} - -static void -ecore_dbus_method_error_cb(void *data, const char *error) -{ - printf("Error: %s\n", error); - ecore_main_loop_quit(); -} - -static int -ecore_dbus_event_server_signal(void *udata, int ev_type, void *ev) -{ - Ecore_DBus_Event_Signal *event; - - event = ev; - printf("ecore_dbus_event_server_signal %s %s.%s\n", event_type_get(event->type), - event->header.interface, - event->header.member); - if (!strcmp(event->header.member, "DeviceAdded")) - { - printf("Device added: %s\n", (char *)event->args[0].value); - } - else if (!strcmp(event->header.member, "DeviceRemoved")) - { - printf("Device removed: %s\n", (char *)event->args[0].value); - } - return 0; -} - -static const char * -event_type_get(Ecore_DBus_Message_Type type) -{ - switch (type) - { - case ECORE_DBUS_MESSAGE_TYPE_INVALID: - return "ECORE_DBUS_MESSAGE_TYPE_INVALID"; - case ECORE_DBUS_MESSAGE_TYPE_METHOD_CALL: - return "ECORE_DBUS_MESSAGE_TYPE_CALL"; - case ECORE_DBUS_MESSAGE_TYPE_METHOD_RETURN: - return "ECORE_DBUS_MESSAGE_TYPE_RETURN"; - case ECORE_DBUS_MESSAGE_TYPE_ERROR: - return "ECORE_DBUS_MESSAGE_TYPE_ERROR"; - case ECORE_DBUS_MESSAGE_TYPE_SIGNAL: - return "ECORE_DBUS_MESSAGE_TYPE_SIGNAL"; - } - return "UNKNOWN"; -} -#else -int -main(int argc, const char **argv) -{ - printf("Ecore_DBus module not compiled. This program is empty.\n"); - return -1; -} -#endif diff --git a/legacy/ecore/src/bin/ecore_dbus_receiver_test.c b/legacy/ecore/src/bin/ecore_dbus_receiver_test.c deleted file mode 100644 index 1606927c94..0000000000 --- a/legacy/ecore/src/bin/ecore_dbus_receiver_test.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 - */ -#include "ecore_dbus_test.h" - -#ifdef BUILD_ECORE_DBUS - -static int ecore_dbus_event_server_add(void *udata, int ev_type, void *ev); -static int ecore_dbus_event_server_del(void *udata, int ev_type, void *ev); -static int ecore_dbus_event_method_call(void *udata, int ev_type, void *ev); - -static void ecore_dbus_method_error_cb(void *data, const char *error); - -static void _test_object_init(Ecore_DBus_Server *svr); - - -static Ecore_DBus_Server *svr = NULL; - -int -main(int argc, char **argv) -{ - ecore_dbus_init(); - - svr = ecore_dbus_server_session_connect(NULL); - if (!svr) - { - printf("Couldn't connect to dbus system server!\n"); - } - else - { - int i = 0; - Ecore_Event_Handler *handler[3]; - - printf("Connected!\n"); - - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_ADD, - ecore_dbus_event_server_add, NULL); - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_DEL, - ecore_dbus_event_server_del, NULL); - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_METHOD_CALL, - ecore_dbus_event_method_call, NULL); - - ecore_main_loop_begin(); - - for (i = 0; i < 2; i++) - ecore_event_handler_del(handler[i]); - - if (svr) ecore_dbus_server_del(svr); - } - ecore_dbus_shutdown(); - return 0; -} - -static int -ecore_dbus_event_server_add(void *udata, int ev_type, void *ev) -{ - Ecore_DBus_Event_Server_Add *event; - - event = ev; - printf("ecore_dbus_event_server_add\n"); - - ecore_dbus_method_request_name(event->server, "org.enlightenment.Test", 0, NULL, ecore_dbus_method_error_cb, NULL); - _test_object_init(event->server); - return 0; -} - - -static int -ecore_dbus_event_method_call(void *udata, int ev_type, void *ev) -{ - Ecore_DBus_Event_Method_Call *event; - - event = ev; - printf("ecore_dbus_event_method_call\n"); - - return 1; -} - -static int -ecore_dbus_event_server_del(void *udata, int ev_type, void *ev) -{ - Ecore_DBus_Event_Server_Del *event; - - event = ev; - printf("ecore_dbus_event_server_del\n"); - svr = NULL; - ecore_main_loop_quit(); - return 0; -} - -static void -ecore_dbus_method_error_cb(void *data, const char *error) -{ - printf("Error: %s\n", error); - ecore_main_loop_quit(); -} - - -static void -_test_object_test(void *data, Ecore_DBus_Event_Method_Call *event) -{ - Ecore_DBus_Message *msg; - unsigned int *i; - char *s1, *s2; - Ecore_List *l; - int first; - - printf("received call to test!\n"); - msg = event->message; - - i = (unsigned int *)ecore_dbus_message_body_field_get(msg, 0); - s1 = (char *)ecore_dbus_message_body_field_get(msg, 1); - l = (Ecore_List *)ecore_dbus_message_body_field_get(msg, 2); - s2 = (char *)ecore_dbus_message_body_field_get(msg, 3); - - if (!i || !s1 || !l || !s2) - { - /* XXX reply with error */ - return; - } - - printf(" params: i = %d, s1 = \"%s\", l = (", i ? *i : 0, s1); - ecore_list_goto_first(l); - first = 1; - while((i = ecore_list_next(l))) - { - if (!first) printf(", "); - else first = 0; - - printf("%d", i ? *i : 0); - } - printf("), s2: %s\n", s2); -} - -static void -_test_object_init(Ecore_DBus_Server *svr) -{ - Ecore_DBus_Object *obj; - printf("init object!\n"); - if (!svr) return; - obj = ecore_dbus_object_add(svr, "/org/enlightenment/test"); - ecore_dbus_object_method_add(obj, "org.enlightenment.Test", "Test", _test_object_test, NULL); -} - -#else -int -main(int argc, const char **argv) -{ - printf("Ecore_DBus module not compiled. This program is empty.\n"); - return -1; -} -#endif diff --git a/legacy/ecore/src/bin/ecore_dbus_test.c b/legacy/ecore/src/bin/ecore_dbus_test.c deleted file mode 100644 index a7b54c5463..0000000000 --- a/legacy/ecore/src/bin/ecore_dbus_test.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 - */ -#include "ecore_dbus_test.h" - -#ifdef BUILD_ECORE_DBUS - -static int ecore_dbus_event_server_add(void *udata, int ev_type, void *ev); -static int ecore_dbus_event_server_del(void *udata, int ev_type, void *ev); - -static void ecore_dbus_method_list_names_cb(void *data, Ecore_DBus_Method_Return *reply); -static void ecore_dbus_method_test_cb(void *data, Ecore_DBus_Method_Return *reply); -static void ecore_dbus_method_error_cb(void *data, const char *error); - -static const char *event_type_get(Ecore_DBus_Message_Type type); -static void _test_type_length(); - -static Ecore_DBus_Server *svr = NULL; - -int -main(int argc, char **argv) -{ - ecore_dbus_init(); - - _test_type_length(); - svr = ecore_dbus_server_session_connect(NULL); - if (!svr) - { - printf("Couldn't connect to dbus session server!\n"); - } - else - { - int i = 0; - Ecore_Event_Handler *handler[3]; - - printf("Connected!\n"); - - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_ADD, - ecore_dbus_event_server_add, NULL); - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_DEL, - ecore_dbus_event_server_del, NULL); - - ecore_main_loop_begin(); - - for (i = 0; i < 2; i++) - ecore_event_handler_del(handler[i]); - - if (svr) ecore_dbus_server_del(svr); - } - ecore_dbus_shutdown(); - return 0; -} - -static int -ecore_dbus_event_server_add(void *udata, int ev_type, void *ev) -{ - Ecore_DBus_Event_Server_Add *event; - Ecore_List *ids; - int i; - - event = ev; - printf("ecore_dbus_event_server_add\n"); - ecore_dbus_method_list_names(event->server, - ecore_dbus_method_list_names_cb, - ecore_dbus_method_error_cb, NULL); - - ids = ecore_list_new(); - ecore_list_set_free_cb(ids, free); - for(i = 0; i < 5; i++) - { - unsigned int *id; - id = malloc(sizeof(int)); - *id = i * 2; - ecore_list_append(ids, id); - } - ecore_dbus_message_new_method_call(event->server, - "/org/enlightenment/test" /*path*/, - "org.enlightenment.Test" /*interface*/, - "Test" /*method*/, - "org.enlightenment.Test" /*destination*/, - ecore_dbus_method_test_cb, - ecore_dbus_method_error_cb, NULL, - "usaus" /*fmt*/, - 5, "hello", ids, "goodbye"); - - ecore_list_destroy(ids); - return 0; -} - -static int -ecore_dbus_event_server_del(void *udata, int ev_type, void *ev) -{ - Ecore_DBus_Event_Server_Del *event; - - event = ev; - printf("ecore_dbus_event_server_del\n"); - svr = NULL; - ecore_main_loop_quit(); - return 0; -} - -static void -ecore_dbus_method_test_cb(void *data, - Ecore_DBus_Method_Return *reply) -{ - printf("test reply cb\n"); -} - -static void -ecore_dbus_method_list_names_cb(void *data, - Ecore_DBus_Method_Return *reply) -{ - Ecore_List *names; - - printf("ecore_dbus_event_server_data %s %s.%s\n", event_type_get(reply->type), - reply->header.interface, - reply->header.member); - - names = reply->args[0].value; - printf("Got names %c\n", reply->args[0].type); - if (names) - { - char *name; - ecore_list_goto_first(names); - while ((name = ecore_list_next(names))) - { - printf("Name: %s\n", name); - } - ecore_list_destroy(names); - } - ecore_main_loop_quit(); -} - -static void -ecore_dbus_method_error_cb(void *data, const char *error) -{ - printf("Error: %s\n", error); - ecore_main_loop_quit(); -} - -static const char * -event_type_get(Ecore_DBus_Message_Type type) -{ - switch (type) - { - case ECORE_DBUS_MESSAGE_TYPE_INVALID: - return "ECORE_DBUS_MESSAGE_TYPE_INVALID"; - case ECORE_DBUS_MESSAGE_TYPE_METHOD_CALL: - return "ECORE_DBUS_MESSAGE_TYPE_CALL"; - case ECORE_DBUS_MESSAGE_TYPE_METHOD_RETURN: - return "ECORE_DBUS_MESSAGE_TYPE_RETURN"; - case ECORE_DBUS_MESSAGE_TYPE_ERROR: - return "ECORE_DBUS_MESSAGE_TYPE_ERROR"; - case ECORE_DBUS_MESSAGE_TYPE_SIGNAL: - return "ECORE_DBUS_MESSAGE_TYPE_SIGNAL"; - } - return "UNKNOWN"; -} - -//int _ecore_dbus_complete_type_length(const char *); -static void -_test_type_length() -{ -#define _NUM_TYPES 4 - struct { char *type; int len; } types[_NUM_TYPES] = { - { "us", 1 }, - { "ads", 2 }, - { "a(a(ai))su", 8 }, - { "a{ss}u", 5 } - }; - - int i; - - printf("Test type length\n---------------\n"); - for (i = 0; i < _NUM_TYPES; i++) - { - int len = _ecore_dbus_complete_type_length_get(types[i].type); - printf("\"%s\" => %d (expected %d) %s\n", types[i].type, len, types[i].len, len == types[i].len ? "PASS" : "FAIL"); - } - printf("---------------\n"); -} - -#else -int -main(int argc, const char **argv) -{ - printf("Ecore_DBus module not compiled. This program is empty.\n"); - return -1; -} -#endif - - diff --git a/legacy/ecore/src/bin/ecore_dbus_test.h b/legacy/ecore/src/bin/ecore_dbus_test.h deleted file mode 100644 index 3eab10a41a..0000000000 --- a/legacy/ecore/src/bin/ecore_dbus_test.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 - */ -#ifndef _ECORE_DBUS_TEST_H -#define _ECORE_DBUS_TEST_H - -#include "config.h" -#include -#include -#include - -#ifdef BUILD_ECORE_DBUS -#include "Ecore.h" -#include "Ecore_Data.h" -#include "Ecore_DBus.h" -#endif - -#endif diff --git a/legacy/ecore/src/bin/ecore_evas_test.c b/legacy/ecore/src/bin/ecore_evas_test.c deleted file mode 100644 index 91536e5f2f..0000000000 --- a/legacy/ecore/src/bin/ecore_evas_test.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "ecore_evas_test.h" - -#ifdef BUILD_ECORE_EVAS - -int -main(int argc, const char **argv) -{ - if (app_start(argc, argv) < 1) return -1; - - bg_start(); - - calibrate_start(); - - ecore_main_loop_begin(); - - app_finish(); - - return 0; -} -#else -int -main(int argc, const char **argv) -{ - printf("Ecore_evas module not compiled. This program is empty.\n"); - return -1; -} -#endif diff --git a/legacy/ecore/src/bin/ecore_evas_test.h b/legacy/ecore/src/bin/ecore_evas_test.h deleted file mode 100644 index 1b8c845160..0000000000 --- a/legacy/ecore/src/bin/ecore_evas_test.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef _ECORE_EVAS_TEST_H -#define _ECORE_EVAS_TEST_H - -#include "config.h" -#include "Ecore.h" -#include -#include -#include -#include - -#ifdef BUILD_ECORE_EVAS -#include "Ecore_Evas.h" -#include "Ecore_Fb.h" - -#define IM PACKAGE_DATA_DIR"/images/" -#define PT PACKAGE_DATA_DIR"/pointers/" -#define FN PACKAGE_DATA_DIR"/fonts/" - -extern double start_time; -extern Ecore_Evas *ee; -extern Evas *evas; - - - -void calibrate_pos_set(int pos); -int calibrate_pos_get(void); -void calibrate_finish(void); -void calibrate_start(void); - -void bg_resize(double w, double h); -void bg_start(void); -void bg_go(void); - -int app_start(int argc, const char **argv); -void app_finish(void); - -#endif - -#endif diff --git a/legacy/ecore/src/bin/ecore_evas_test_app.c b/legacy/ecore/src/bin/ecore_evas_test_app.c deleted file mode 100644 index 2ec78c4116..0000000000 --- a/legacy/ecore/src/bin/ecore_evas_test_app.c +++ /dev/null @@ -1,184 +0,0 @@ -#include "ecore_evas_test.h" - -#ifdef BUILD_ECORE_EVAS - -double start_time = 0.0; -Ecore_Evas *ee = NULL; -Evas *evas = NULL; - -Ecore_Idle_Enterer *getpix_handler = NULL; - -static void app_resize(Ecore_Evas *ee); -static int app_signal_exit(void *data, int ev_type, void *ev); -static void app_delete_request(Ecore_Evas *ee); - -static int -getpix_cb(void *data) -{ - const int *pix; - int p; - int w, h; - FILE *f; - int x, y; - static int count = 0; - char buf[256]; - unsigned char *line; - - pix = ecore_evas_buffer_pixels_get(ee); - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - snprintf(buf, sizeof(buf), "out%04i.ppm", count); - count++; - f = fopen(buf, "wb"); - if (f) - { - line = malloc(w * 4); - fprintf(f, "P6\n%i %i\n255\n", w, h); - for (y = 0; y < h; y++) - { - for (x = 0; x < w; x++) - { - p = pix[(y * w) + x]; - line[(x * 3) + 0] = ((p >> 16) & 0xff); - line[(x * 3) + 1] = ((p >> 8 ) & 0xff); - line[(x * 3) + 2] = ((p ) & 0xff); -/* line[(x * 3) + 3] = ((p >> 24) & 0xff);*/ - } - fwrite(line, w * 3, 1, f); - } - free(line); - fclose(f); - } - return 1; -} - -int -app_start(int argc, const char **argv) -{ - /* init the app */ - start_time = ecore_time_get(); - ecore_init(); - ecore_app_args_set(argc, argv); - ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, app_signal_exit, NULL); - - /* create an evas */ - if (!ecore_evas_init()) return -1; - if ((argc > 1) && (!strcmp(argv[1], "-fb"))) - { - ee = ecore_evas_fb_new(NULL, 0, 240, 320); - evas = ecore_evas_get(ee); - } - else if ((argc > 1) && (!strcmp(argv[1], "-x"))) - { - ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 240, 320); - evas = ecore_evas_get(ee); - } - else if ((argc > 1) && (!strcmp(argv[1], "-xr"))) - { - ee = ecore_evas_xrender_x11_new(NULL, 0, 0, 0, 240, 320); - evas = ecore_evas_get(ee); - } - else if ((argc > 1) && (!strcmp(argv[1], "-gl"))) - { - ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 240, 320); - evas = ecore_evas_get(ee); - } - else if ((argc > 1) && (!strcmp(argv[1], "-dfb"))) - { - ee = ecore_evas_directfb_new(NULL, 0, 0, 0, 240, 320); - evas = ecore_evas_get(ee); - } - else if ((argc > 1) && (!strcmp(argv[1], "-buf"))) - { - ee = ecore_evas_buffer_new(240, 320); - evas = ecore_evas_get(ee); - getpix_handler = ecore_idle_enterer_add(getpix_cb, NULL); - } - else if ((argc > 1) && (!strcmp(argv[1], "-buf2"))) - { - Evas_Object *o; - - ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 240, 320); - - o = evas_object_rectangle_add(ecore_evas_get(ee)); - evas_object_move(o, 0, 0); - evas_object_resize(o, 240, 320); - evas_object_color_set(o, 150, 200, 250, 255); - evas_object_show(o); - - o = ecore_evas_object_image_new(ee); - evas = ecore_evas_get(evas_object_data_get(o, "Ecore_Evas")); - evas_object_move(o, 50, 50); - evas_object_resize(o, 120, 160); - evas_object_image_fill_set(o, 0, 0, 120, 160); - evas_object_image_size_set(o, 240, 320); - ecore_evas_resize(evas_object_data_get(o, "Ecore_Evas"), 240, 320); - evas_object_color_set(o, 255, 255, 255, 200); - evas_object_show(o); - } - else if ((argc > 1) && (!strcmp(argv[1], "-h"))) - { - printf("%s -x Test ecore_evas in X (default)\n" - "%s -xr Test ecore_evas in XRender\n" - "%s -gl Test ecore_evas in X GL\n" - "%s -dfb Test ecore_evas in DirectFB\n" - "%s -fb Test ecore_evas in the Framebuffer\n" - "%s -buf Test ecore_evas in the Buffer\n" - "%s -buf2 Test ecore_evas in the Image Buffer\n" - "%s -h Display this help\n", - argv[0], argv[0], argv[0], argv[0], argv[0], argv[0], argv[0], argv[0]); - ecore_evas_shutdown(); - ecore_shutdown(); - return 0; - } - else { -#ifdef BUILD_ECORE_X - ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 240, 320); -#else -#ifdef BUILD_ECORE_FB - ee = ecore_evas_fb_new(NULL, 270, 240, 320); -#endif -#endif - evas = ecore_evas_get(ee); - } - if (!ee) return -1; - ecore_evas_callback_delete_request_set(ee, app_delete_request); - ecore_evas_callback_resize_set(ee, app_resize); - ecore_evas_title_set(ee, "Ecore Evas Test"); - ecore_evas_name_class_set(ee, "ecore_test", "test_evas"); - ecore_evas_show(ee); - evas_image_cache_set(evas, 8192 * 1024); - evas_font_cache_set(evas, 512 * 1024); - evas_font_path_append(evas, FN); - return 1; -} - -void -app_finish(void) -{ - ecore_evas_shutdown(); - ecore_shutdown(); -} - -static void -app_resize(Ecore_Evas *ee) -{ - Evas_Coord w, h; - - evas_output_viewport_get(evas, NULL, NULL, &w, &h); - bg_resize(w, h); -} - -static int -app_signal_exit(void *data, int ev_type, void *ev) -{ - ecore_main_loop_quit(); - return 1; -} - -static void -app_delete_request(Ecore_Evas *ee) -{ - ecore_main_loop_quit(); -} - -#endif diff --git a/legacy/ecore/src/bin/ecore_evas_test_bg.c b/legacy/ecore/src/bin/ecore_evas_test_bg.c deleted file mode 100644 index 71116ba5db..0000000000 --- a/legacy/ecore/src/bin/ecore_evas_test_bg.c +++ /dev/null @@ -1,453 +0,0 @@ -#include "ecore_evas_test.h" - -#ifdef BUILD_ECORE_EVAS - -Evas_Object *o_bg_rect = NULL; -Evas_Object *o_logo = NULL; -Ecore_Timer *anim_timer = NULL; - -#define NUM 32 -#define SIZE 32 -#define SLIDE 80 - -Evas_Object *o_ball[NUM]; -Evas_Object *o_shad[NUM]; - -Evas_Object *o_clip = NULL; -Evas_Object *o_bar[2]; -Evas_Object *o_bar_shad_1[3]; -Evas_Object *o_bar_shad_2[2]; -Evas_Object *o_bg = NULL; - -static int bg_animate_obj_timer(void *data); -static void bg_cb_key_up(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void bg_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info); - -void -bg_resize(double w, double h) -{ - evas_object_resize(o_bg_rect, w, h); - evas_object_move(o_logo, (w - 240) / 2, (h - 280) / 2); - bg_animate_obj_timer(NULL); -} - -void -bg_start(void) -{ - Evas_Object *o; - - /* set up a big white rectangle on the bg */ - o = evas_object_rectangle_add(evas); - evas_object_color_set(o, 255, 255, 255, 255); - evas_object_move(o, 0, 0); - evas_object_resize(o, 240, 320); - evas_object_layer_set(o, -1000000); - evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, bg_cb_key_down, ee); - evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_UP, bg_cb_key_up, ee); - evas_object_focus_set(o, 1); - evas_object_show(o); - o_bg_rect = o; - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"e_logo.png", NULL); - evas_object_resize(o, 240, 280); - evas_object_image_fill_set(o, 0, 0, 240, 280); - evas_object_move(o, (240 - 240) / 2, (320 - 280) / 2); - evas_object_layer_set(o, -999); - evas_object_pass_events_set(o, 1); - evas_object_show(o); - o_logo = o; - - o = evas_object_rectangle_add(evas); - evas_object_color_set(o, 255, 255, 255, 255); - evas_object_resize(o, 240, 0); - evas_object_pass_events_set(o, 1); - evas_object_show(o); - o_clip = o; - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"bg.png", NULL); - evas_object_resize(o, 240, 320); - evas_object_image_fill_set(o, 0, 0, 240, 320); - evas_object_layer_set(o, -9999); - evas_object_move(o, 0, 0); - evas_object_clip_set(o, o_clip); - evas_object_pass_events_set(o, 1); - evas_object_show(o); - o_bg = o; - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"bar.png", NULL); - evas_object_image_border_set(o, 5, 5, 5, 5); - evas_object_resize(o, 240, 32); - evas_object_image_fill_set(o, 0, 0, 240, 32); - evas_object_layer_set(o, 100); - evas_object_pass_events_set(o, 1); - o_bar[0] = o; - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"bar.png", NULL); - evas_object_image_border_set(o, 5, 5, 5, 5); - evas_object_resize(o, 240, 32); - evas_object_image_fill_set(o, 0, 0, 240, 32); - evas_object_layer_set(o, 100); - evas_object_pass_events_set(o, 1); - o_bar[1] = o; - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"bar_shad_above.png", NULL); - evas_object_resize(o, 240, 8); - evas_object_image_fill_set(o, 0, 0, 240, 8); - evas_object_image_smooth_scale_set(o, 0); - evas_object_layer_set(o, 100); - evas_object_pass_events_set(o, 1); - o_bar_shad_1[0] = o; - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"bar_shad_below.png", NULL); - evas_object_resize(o, 240, 32); - evas_object_image_fill_set(o, 0, 0, 240, 32); - evas_object_image_smooth_scale_set(o, 0); - evas_object_layer_set(o, -100); - evas_object_pass_events_set(o, 1); - evas_object_clip_set(o, o_clip); - o_bar_shad_1[1] = o; - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"bar_shad_below.png", NULL); - evas_object_resize(o, 240, 16); - evas_object_image_fill_set(o, 0, 0, 240, 16); - evas_object_image_smooth_scale_set(o, 0); - evas_object_layer_set(o, 100); - evas_object_pass_events_set(o, 1); - evas_object_clip_set(o, o_clip); - o_bar_shad_1[2] = o; - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"bar_shad_above.png", NULL); - evas_object_resize(o, 240, 8); - evas_object_image_fill_set(o, 0, 0, 240, 8); - evas_object_image_smooth_scale_set(o, 0); - evas_object_layer_set(o, 100); - evas_object_pass_events_set(o, 1); - evas_object_clip_set(o, o_clip); - o_bar_shad_2[0] = o; - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"bar_shad_below.png", NULL); - evas_object_resize(o, 240, 8); - evas_object_image_fill_set(o, 0, 0, 240, 8); - evas_object_image_smooth_scale_set(o, 0); - evas_object_layer_set(o, 100); - evas_object_pass_events_set(o, 1); - o_bar_shad_2[1] = o; - - { - int i; - - for (i = 0; i < NUM; i++) - { - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"ball.png", NULL); - evas_object_resize(o, SIZE, SIZE); - evas_object_image_fill_set(o, 0, 0, SIZE, SIZE); - evas_object_move(o, 0, 0); - evas_object_pass_events_set(o, 1); - evas_object_clip_set(o, o_clip); - o_ball[i] = o; - o = evas_object_image_add(evas); - evas_object_image_file_set(o, IM"shadow.png", NULL); - evas_object_resize(o, SIZE, SIZE); - evas_object_image_fill_set(o, 0, 0, SIZE, SIZE); - evas_object_move(o, 0, 0); - evas_object_pass_events_set(o, 1); - evas_object_clip_set(o, o_clip); - evas_object_lower(o); - o_shad[i] = o; - } - } -} - -void -bg_go(void) -{ - /* add a timer to animate them */ - anim_timer = ecore_timer_add(0.01, bg_animate_obj_timer, NULL); -} - -static int -bg_animate_obj_timer(void *data) -{ - Evas_Object *o; - Evas_Coord x, y, sx, sy; - Evas_Coord w, h; - double v; - int ow, oh; - double t; - int l, m, n; - int i; - static double t_first = 0; - static int done = 0; - - t = ecore_time_get() - start_time; - if (t_first == 0) t_first = t; - if (t - t_first > 2.0) done = 1; - evas_output_viewport_get(evas_object_evas_get(o_clip), NULL, NULL, &w, &h); - if (!done) - { - v = ((cos(((t - t_first) / 2) * 3.14159) - 1.0) / -2); - l = (SLIDE) * v; - } - else - { - l = SLIDE; - } - evas_object_move(o_bar[0], 0, (h / 2) - 32 - l); - evas_object_move(o_bar[1], 0, (h / 2) + l); - evas_object_move(o_bar_shad_1[0], 0, (h / 2) - 32 - l - 8); - evas_object_move(o_bar_shad_1[1], 0, (h / 2) - l); - evas_object_move(o_bar_shad_1[2], 0, (h / 2) - l); - evas_object_move(o_bar_shad_2[0], 0, (h / 2) + l - 8); - evas_object_move(o_bar_shad_2[1], 0, (h / 2) + 32 + l); - - evas_object_resize(o_bar[0], w, 32); - evas_object_image_fill_set(o_bar[0], 0, 0, w, 32); - - evas_object_resize(o_bar[1], w, 32); - evas_object_image_fill_set(o_bar[1], 0, 0, w, 32); - - evas_object_resize(o_bar_shad_1[0], w, 8); - evas_object_image_fill_set(o_bar_shad_1[0], 0, 0, w, 8); - - evas_object_resize(o_bar_shad_1[1], w, 32); - evas_object_image_fill_set(o_bar_shad_1[1], 0, 0, w, 32); - - evas_object_resize(o_bar_shad_1[2], w, 16); - evas_object_image_fill_set(o_bar_shad_1[2], 0, 0, w, 16); - - evas_object_resize(o_bar_shad_2[0], w, 8); - evas_object_image_fill_set(o_bar_shad_2[0], 0, 0, w, 8); - - evas_object_resize(o_bar_shad_2[1], w, 8); - evas_object_image_fill_set(o_bar_shad_2[1], 0, 0, w, 8); - - evas_object_move(o_clip, 0, (h / 2) - l); - evas_object_resize(o_clip, w, l * 2); - - evas_object_resize(o_bg, w, h); - evas_object_image_fill_set(o_bg, 0, 0, w, h); - - evas_object_show(o_bar[0]); - evas_object_show(o_bar[1]); - evas_object_show(o_bar_shad_1[0]); - evas_object_show(o_bar_shad_1[1]); - evas_object_show(o_bar_shad_1[2]); - evas_object_show(o_bar_shad_2[0]); - evas_object_show(o_bar_shad_2[1]); - for (i = 0; i < NUM; i++) - { - o = o_ball[i]; - evas_output_viewport_get(evas_object_evas_get(o), NULL, NULL, &w, &h); - l = ((int)o / 179) & 0x0f; - v = (sin(t * (double)l / 12) + 1.0) / 2; - v = 0.25 + (0.75 * v); - m = 1 + (((int)o / 36) & 0x0f); - n = 1 + (((int)o / 763) & 0x0f); - ow = SIZE * v; - oh = SIZE * v; - evas_object_resize(o, ow, oh); - evas_object_image_fill_set(o, 0, 0, ow, oh); - x = sin(t * (double)m / 12) * ((w - ow) / 2); - y = sin(t * (double)n / 12) * ((h - oh) / 2); - evas_object_move(o, (w / 2) - (ow / 2) + x, (h / 2) - (oh / 2) + y); - evas_object_show(o); - o = o_shad[i]; - evas_object_resize(o, ow, oh); - evas_object_image_fill_set(o, 0, 0, ow, oh); - sx = v * (((w - ow) / 2) + x) / 8; - sy = v * (((h - oh) / 2) + y) / 8; - evas_object_move(o, - (w / 2) - (ow / 2) + x + sx, - (h / 2) - (oh / 2) + y + sy); - evas_object_show(o); - } - return 1; -} - -/* NB: on ipaq - * - * "F1" "F2" "F3" "F4" - * "Up" - * "Left" "Return" "Right" - * "Down" - * - */ -static void -bg_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Event_Key_Down *ev; - - ev = event_info; - printf("DOWN %s\n", ev->keyname); - if (!strcmp(ev->keyname, "Escape")) ecore_main_loop_quit(); - if (!strcmp(ev->keyname, "q")) ecore_main_loop_quit(); - if (!strcmp(ev->keyname, "Q")) ecore_main_loop_quit(); - if ((!strcmp(ev->keyname, "f")) || - (!strcmp(ev->keyname, "F1"))) - { - if (!ecore_evas_fullscreen_get(ee)) - ecore_evas_fullscreen_set(ee, 1); - else - ecore_evas_fullscreen_set(ee, 0); - } - if (!strcmp(ev->keyname, "o")) - { - if (!ecore_evas_override_get(ee)) - ecore_evas_override_set(ee, 1); - else - ecore_evas_override_set(ee, 0); - } - if ((!strcmp(ev->keyname, "r")) || - (!strcmp(ev->keyname, "F4"))) - { - int r; - - r = ecore_evas_rotation_get(ee); - if (r == 0) r = 90; - else if (r == 90) r = 270; - else if (r == 270) r = 0; - ecore_evas_rotation_set(ee, r); - } - if (!strcmp(ev->keyname, "b")) - { - if (!ecore_evas_borderless_get(ee)) - ecore_evas_borderless_set(ee, 1); - else - ecore_evas_borderless_set(ee, 0); - } - if (!strcmp(ev->keyname, "d")) - { - if (!ecore_evas_avoid_damage_get(ee)) - ecore_evas_avoid_damage_set(ee, 1); - else - ecore_evas_avoid_damage_set(ee, 0); - } - if (!strcmp(ev->keyname, "s")) - { - if (!ecore_evas_shaped_get(ee)) - { - evas_object_hide(o_bg_rect); - evas_object_hide(o_bg); - ecore_evas_shaped_set(ee, 1); - } - else - { - evas_object_show(o_bg_rect); - evas_object_show(o_bg); - ecore_evas_shaped_set(ee, 0); - } - } - if (!strcmp(ev->keyname, "a")) - { - if (!ecore_evas_alpha_get(ee)) - { - evas_object_hide(o_bg_rect); - evas_object_hide(o_bg); - ecore_evas_alpha_set(ee, 1); - } - else - { - evas_object_show(o_bg_rect); - evas_object_show(o_bg); - ecore_evas_alpha_set(ee, 0); - } - } - if (!strcmp(ev->keyname, "Up")) - { -#ifdef BUILD_ECORE_FB -#if 0 - double br; - - br = ecore_fb_backlight_brightness_get(); - ecore_fb_backlight_brightness_set(br + 0.1); -#endif -#endif - } - if (!strcmp(ev->keyname, "Down")) - { -#ifdef BUILD_ECORE_FB -#if 0 - double br; - - br = ecore_fb_backlight_brightness_get(); - ecore_fb_backlight_brightness_set(br - 0.1); -#endif -#endif - } - if (!strcmp(ev->keyname, "F2")) - { -#ifdef BUILD_ECORE_FB -#if 0 - if (ecore_fb_backlight_get()) - ecore_fb_backlight_set(0); - else - ecore_fb_backlight_set(1); -#endif -#endif - } - if (!strcmp(ev->keyname, "F3")) - { -#ifdef BUILD_ECORE_FB -#if 0 - static int v = 0; - - if (v) ecore_fb_led_set(0); - else ecore_fb_led_set(1); - if (!v) v = 1; - else v = 0; -#endif -#endif - } - if (!strcmp(ev->keyname, "Left")) - { -#ifdef BUILD_ECORE_FB -#if 0 - ecore_fb_led_blink_set(0.1); -#endif -#endif - } - if (!strcmp(ev->keyname, "Right")) - { -#ifdef BUILD_ECORE_FB -#if 0 - ecore_fb_led_blink_set(0.5); -#endif -#endif - } - if ((!strcmp(ev->keyname, "p")) || - (!strcmp(ev->keyname, "Return"))) - { - char *fl; - - ecore_evas_cursor_get(ee, &fl, NULL, NULL, NULL); - if (!fl) - ecore_evas_cursor_set(ee, PT"mouse_pointer.png", 1000000, 2, 2); - else - ecore_evas_cursor_set(ee, NULL, 0, 0, 0); -#ifdef BUILD_ECORE_FB -#if 0 - printf("%3.3f\n", ecore_fb_light_sensor_get()); -#endif -#endif - } -} - -static void -bg_cb_key_up(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Event_Key_Up *ev; - - ev = event_info; - printf("UP %s\n", ev->keyname); -} -#endif diff --git a/legacy/ecore/src/bin/ecore_evas_test_calibrate.c b/legacy/ecore/src/bin/ecore_evas_test_calibrate.c deleted file mode 100644 index 449f7ba37f..0000000000 --- a/legacy/ecore/src/bin/ecore_evas_test_calibrate.c +++ /dev/null @@ -1,291 +0,0 @@ -#include "ecore_evas_test.h" - -#ifdef BUILD_ECORE_EVAS - -static Evas_Object *o_events = NULL; -static Evas_Object *o_crosshair = NULL; -static Evas_Object *o_text = NULL; -static int cal_pos = 0; -static int down = 0; - -static int cal_coords[] = {15, 15, -15, 15, 15, -15, -15, -15}; -static char *cal_lines[] = -{ - "Please click on the crosshair", - "Again please", - "And again", - "Last one, then calibration is complete" -}; -static int cal_input[8]; - -static int tmp_input_count = 0; -static int tmp_input[16]; - -static void calibrate_cb_down(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void calibrate_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void calibrate_cb_move(void *data, Evas *e, Evas_Object *obj, void *event_info); - -void -calibrate_pos_set(int pos) -{ - Evas_Coord w, h, ow, oh; - int x, y; - - cal_pos = pos; - evas_object_geometry_get(o_crosshair, NULL, NULL, &w, &h); - x = cal_coords[(cal_pos * 2) + 0]; - y = cal_coords[(cal_pos * 2) + 1]; - evas_output_viewport_get(evas, NULL, NULL, &ow, &oh); - if (x < 0) x = ow + x - 1; - if (y < 0) y = oh + y - 1; - cal_coords[(cal_pos * 2) + 0] = x; - cal_coords[(cal_pos * 2) + 1] = y; - evas_object_move(o_crosshair, x - (((int)w - 1) / 2), y - (((int)h - 1) / 2)); - evas_object_text_text_set(o_text, cal_lines[cal_pos]); - evas_object_geometry_get(o_text, NULL, NULL, &w, &h); - evas_object_move(o_text, (ow - w) / 2, (oh - h) / 2); -} - -int -calibrate_pos_get(void) -{ - return cal_pos; -} - -void -calibrate_finish(void) -{ - int m0, m1; - int y0, y1; - int x[4], y[4], xi[4], yi[4]; - int i, rot; - - int xscale, xtrans, yscale, ytrans, xyswap; - - rot = ecore_evas_rotation_get(ee); - for (i = 0; i < 4; i++) - { - x[i] = cal_coords[(i * 2) + 0]; - y[i] = cal_coords[(i * 2) + 1]; - xi[i] = cal_input[(i * 2) + 0]; - yi[i] = cal_input[(i * 2) + 1]; - } - xyswap = 0; - - m0 = ((x[1] - x[0]) * 256) / (xi[1] - xi[0]); - y0 = ((x[1] - ((xi[1] * m0) / 256)) + (x[0] - ((xi[0] * m0) >> 8)) ) / 2; - - m1 = ((x[3] - x[2]) * 256) / (xi[3] - xi[2]); - y1 = ((x[3] - ((xi[3] * m1) / 256)) + (x[2] - ((xi[2] * m1) >> 8)) ) / 2; - - xscale = (m0 + m1) / 2; - xtrans = (y0 + y1) / 2; - - m0 = ((y[2] - y[0]) * 256) / (yi[2] - yi[0]); - y0 = ((y[2] - ((yi[2] * m0) / 256)) + (y[0] - ((yi[0] * m0) >> 8)) ) / 2; - - m1 = ((y[3] - y[1]) * 256) / (yi[3] - yi[1]); - y1 = ((y[3] - ((yi[3] * m1) / 256)) + (y[1] - ((yi[1] * m1) >> 8)) ) / 2; - - yscale = (m0 + m1) / 2; - ytrans = (y0 + y1) / 2; - - if (rot == 0) - { -#ifdef BUILD_ECORE_FB -#if 0 - ecore_fb_touch_screen_calibrate_set(xscale, xtrans, yscale, ytrans, xyswap); -#endif -#endif - } - else if (rot == 270) - { - int ow, oh; - - evas_output_size_get(evas, &ow, &oh); - ytrans = oh - (ytrans + ((oh * yscale) / 256)); -#ifdef BUILD_ECORE_FB -#if 0 - ecore_fb_touch_screen_calibrate_set(yscale, ytrans, xscale, xtrans, xyswap); -#endif -#endif - } - - evas_object_del(o_crosshair); - evas_object_del(o_events); - evas_object_del(o_text); - o_crosshair = NULL; - o_events = NULL; - o_text = NULL; - cal_pos = 0; - bg_go(); -} - -void -calibrate_start(void) -{ - Evas_Object *o; - -#ifdef BUILD_ECORE_FB -#if 0 - ecore_fb_touch_screen_calibrate_set(256, 0, 256, 0, 0); -#endif -#endif - - o = evas_object_rectangle_add(evas); - evas_object_layer_set(o, 1000000); - evas_object_color_set(o, 255, 255, 255, 120); - evas_object_move(o, -12000, -16000); - evas_object_resize(o, 24000, 32000); - evas_object_show(o); - evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, calibrate_cb_down, ee); - evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, calibrate_cb_up, ee); - evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, calibrate_cb_move, ee); - o_events = o; - - o = evas_object_image_add(evas); - evas_object_layer_set(o, 1000001); - evas_object_image_file_set(o, IM"crosshair.png", NULL); - evas_object_resize(o, 31, 31); - evas_object_image_fill_set(o, 0, 0, 31, 31); - evas_object_pass_events_set(o, 1); - evas_object_show(o); - o_crosshair = o; - - o = evas_object_text_add(evas); - evas_object_layer_set(o, 1000002); - evas_object_color_set(o, 0, 0, 0, 255); - evas_object_text_font_set(o, "Vera", 10); - evas_object_pass_events_set(o, 1); - evas_object_show(o); - o_text = o; - - calibrate_pos_set(0); -} - - -static void -calibrate_cb_down(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Event_Mouse_Down *ev; - - ev = event_info; - - evas_object_move(o_crosshair, ev->output.x - 15, ev->output.y - 15); - tmp_input_count = 0; - tmp_input[((tmp_input_count & 0x7) * 2) + 0] = ev->output.x; - tmp_input[((tmp_input_count & 0x7) * 2) + 1] = ev->output.y; - tmp_input_count++; - down = 1; -} - -static void -calibrate_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Event_Mouse_Up *ev; - int n, i, avx, avy, c, mx, my; - int dists[8]; - int indexes[8]; - int sorted; - - ev = event_info; - down = 0; - tmp_input[((tmp_input_count & 0x7) * 2) + 0] = ev->output.x; - tmp_input[((tmp_input_count & 0x7) * 2) + 1] = ev->output.y; - tmp_input_count++; - n = 8; - if (tmp_input_count < 8) n = tmp_input_count; - avx = 0; avy = 0; c = 0; - for (i = 0; i < n; i++) - { - dists[i] = tmp_input[(i * 2) + 0]; - indexes[i] = i; - } - sorted = 0; - while (!sorted) - { - sorted = 1; - for (i = 0; i < n - 1; i++) - { - if (dists[i + 1] < dists[i]) - { - int tmp; - - sorted = 0; - tmp = dists[i]; - dists[i] = dists[i + 1]; - dists[i + 1] = tmp; - tmp = indexes[i]; - indexes[i] = indexes[i + 1]; - indexes[i + 1] = tmp; - } - } - } - mx = dists[(n + 1) / 2]; - for (i = 0; i < n; i++) - { - dists[i] = tmp_input[(i * 2) + 1]; - indexes[i] = i; - } - sorted = 0; - while (!sorted) - { - sorted = 1; - for (i = 0; i < n - 1; i++) - { - if (dists[i + 1] < dists[i]) - { - int tmp; - - sorted = 0; - tmp = dists[i]; - dists[i] = dists[i + 1]; - dists[i + 1] = tmp; - tmp = indexes[i]; - indexes[i] = indexes[i + 1]; - indexes[i + 1] = tmp; - } - } - } - my = dists[(n + 1) / 2]; - - for (i = 0; i < n; i++) - { - int x, y, dx, dy; - - x = tmp_input[(i * 2) + 0]; - y = tmp_input[(i * 2) + 1]; - dx = x - mx; - dy = y - my; - if (dx < 0) dx = -dx; - if (dy < 0) dy = -dy; - if ((dx <= 8) && (dy <= 8)) - { - avx += tmp_input[(i * 2) + 0]; - avy += tmp_input[(i * 2) + 1]; - c++; - } - } - cal_input[(cal_pos * 2) + 0] = avx / c; - cal_input[(cal_pos * 2) + 1] = avy / c; - n = calibrate_pos_get(); - if (n < 3) - { - calibrate_pos_set(n + 1); - return; - } - calibrate_finish(); -} - -static void -calibrate_cb_move(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Event_Mouse_Move *ev; - - ev = event_info; - if (!down) return; - tmp_input[((tmp_input_count & 0x7) * 2) + 0] = ev->cur.output.x; - tmp_input[((tmp_input_count & 0x7) * 2) + 1] = ev->cur.output.y; - tmp_input_count++; -} -#endif diff --git a/legacy/ecore/src/bin/ecore_test.c b/legacy/ecore/src/bin/ecore_test.c deleted file mode 100644 index bd0bba7fb7..0000000000 --- a/legacy/ecore/src/bin/ecore_test.c +++ /dev/null @@ -1,903 +0,0 @@ -#include "config.h" -#include "Ecore.h" -#ifdef BUILD_ECORE_JOB -#include "Ecore_Job.h" -#endif -#ifdef BUILD_ECORE_X -#include "Ecore_X.h" -#endif -#ifdef BUILD_ECORE_FB -#include "Ecore_Fb.h" -#endif -#ifdef BUILD_ECORE_EVAS -#include "Ecore_Evas.h" -#endif -#ifdef BUILD_ECORE_CON -#include "Ecore_Con.h" -#endif -#ifdef BUILD_ECORE_IPC -#include "Ecore_Ipc.h" -#endif - -#include -#include -#include -#include -#include -#include - -/* APP GLOBALS */ -double start_time = 0; - -int -handler_signal_exit(void *data, int ev_type, void *ev) -{ - Ecore_Event_Signal_Exit *e; - - e = ev; - if (e->interrupt) printf("exit: interrupt\n"); - if (e->quit) printf("exit: quit\n"); - if (e->terminate) printf("exit: terminate\n"); - ecore_main_loop_quit(); - return 1; -} - - - - - - -int -handler_ipc_client_add(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_IPC - Ecore_Ipc_Event_Client_Add *e; - - e = event; - printf("!!! client %p connected to server!\n", e->client); - return 1; -#endif -} - -int -handler_ipc_client_del(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_IPC - Ecore_Ipc_Event_Client_Del *e; - - e = event; - printf("!!! client %p disconnected from server!\n", e->client); - return 1; -#endif -} - - -int -handler_ipc_client_data(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_IPC - Ecore_Ipc_Event_Client_Data *e; - - e = event; - printf("!!! client sent: [%i] [%i] (%i) \"%s\"\n", e->major, e->minor, e->size, (char*)e->data); - ecore_ipc_client_send(e->client, 1, 2, 0, 0, 0, "ABC", 4); - /* we can disconnect a client like this: */ - /* ecore_ipc_client_del(e->client); */ - /* or we can end a server by: */ - /* ecore_ipc_server_del(ecore_ipc_client_server_get(e->client)); */ - return 1; -#endif -} - - -int -handler_ipc_server_add(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_IPC - Ecore_Ipc_Event_Server_Add *e; - - e = event; - printf("!!! client made successful connect to server %p!\n", e->server); - return 1; -#endif -} - -int -handler_ipc_server_del(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_IPC - Ecore_Ipc_Event_Server_Del *e; - - e = event; - printf("!!! server went away!\n"); - /* clean up our server connection since it went away */ - ecore_ipc_server_del(e->server); - return 1; -#endif -} - -int -handler_ipc_server_data(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_IPC - Ecore_Ipc_Event_Server_Data *e; - static int count = 0; - - e = event; - printf("!!! server sent: [%i] [%i] (%i) \"%s\"\n", e->major, e->minor, e->size, (char*)e->data); - ecore_ipc_server_send(e->server, 3, 4, 0, 0, 0, "EFG", 4); - count++; - if (count > 4) - { - printf("!!! go & disconnect from server!\n"); - ecore_ipc_server_del(e->server); - } - return 1; -#endif -} - -/**** ECORE_CON TEST CODE */ -int -handler_client_add(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_CON - Ecore_Con_Event_Client_Add *e; - - e = event; - printf("!!! client %p connected to server!\n", e->client); - return 1; -#endif -} - -int -handler_client_del(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_CON - Ecore_Con_Event_Client_Del *e; - - e = event; - printf("!!! client %p disconnected from server!\n", e->client); - return 1; -#endif -} - - -int -handler_client_data(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_CON - Ecore_Con_Event_Client_Data *e; - - e = event; - printf("!!! client sent: \"%s\"\n", (char*)e->data); - ecore_con_client_send(e->client, "ABC", 4); - /* we can disconnect a client like this: */ - /* ecore_con_client_del(e->client); */ - /* or we can end a server by: */ - /* ecore_con_server_del(ecore_con_client_server_get(e->client)); */ - return 1; -#endif -} - - -int -handler_server_add(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_CON - Ecore_Con_Event_Server_Add *e; - - e = event; - printf("!!! client made successful connect to server %p!\n", e->server); - return 1; -#endif -} - -int -handler_server_del(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_CON - Ecore_Con_Event_Server_Del *e; - - e = event; - printf("!!! server went away!\n"); - /* clean up our server connection since it went away */ - ecore_con_server_del(e->server); - return 1; -#endif -} - -int -handler_server_data(void *data, int type, void *event) -{ -#ifdef BUILD_ECORE_CON - Ecore_Con_Event_Server_Data *e; - static int count = 0; - - e = event; - printf("!!! server sent: \"%s\"\n", (char*)e->data); - ecore_con_server_send(e->server, "EFG", 4); - count++; - if (count > 4) - { - printf("!!! go & disconnect from server!\n"); - ecore_con_server_del(e->server); - } - return 1; -#endif -} - - -/* NB: also tests ECORE_JOB */ -#ifdef BUILD_ECORE_JOB -void -job_call(void *data) -{ - printf("!! Job done \"%s\"!\n", (char *)data); -} -#endif - -int -idle_enterer(void *data) -{ - printf("-------> Entering idle %3.3f\n", ecore_time_get() - start_time); - return 1; -} - -int -idler(void *data) -{ - printf("oo Idler %3.3f\n", ecore_time_get() - start_time); - return 1; -} - -int -timer(void *data) -{ - printf("Q- Timer tick %3.8f\n", ecore_time_get() - start_time); - /* test ecore_job */ -#ifdef BUILD_ECORE_JOB - ecore_job_add(job_call, "1"); - ecore_job_add(job_call, "2"); - ecore_job_add(job_call, "3"); -#endif - return 1; -} - -void -setup_ecore_test(void) -{ - ecore_idle_enterer_add(idle_enterer, NULL); -/* ecore_idler_add(idler, NULL); */ - ecore_timer_add(2.0, timer, NULL); -} - -#ifdef BUILD_ECORE_X -/**** ECORE_X TEST CODE */ - -Ecore_X_Window win = 0; - -int -handler_x_key_down(void *data, int type, void *event) -{ - Ecore_X_Event_Key_Down *e; - - e = event; - printf("Key down %s\n", e->keyname); - return 1; -} - -int -handler_x_key_up(void *data, int type, void *event) -{ - Ecore_X_Event_Key_Up *e; - - e = event; - printf("Key up %s\n", e->keyname); - return 1; -} - -int -handler_x_mouse_button_down(void *data, int type, void *event) -{ - Ecore_X_Event_Mouse_Button_Down *e; - - e = event; - printf("Mouse down %i [%i][%i]\n", e->button, e->double_click, e->triple_click); - return 1; -} - -int -handler_x_mouse_button_up(void *data, int type, void *event) -{ - Ecore_X_Event_Mouse_Button_Up *e; - - e = event; - printf("Mouse up %i\n", e->button); - return 1; -} - -int -handler_x_mouse_move(void *data, int type, void *event) -{ - Ecore_X_Event_Mouse_Move *e; - - e = event; - printf("Mouse move to %i %i\n", e->x, e->y); - return 1; -} - -int -handler_x_mouse_in(void *data, int type, void *event) -{ - Ecore_X_Event_Mouse_In *e; - - e = event; - printf("Mouse in\n"); - return 1; -} - -int -handler_x_mouse_out(void *data, int type, void *event) -{ - Ecore_X_Event_Mouse_Out *e; - - e = event; - printf("Mouse out\n"); - return 1; -} - -int -handler_x_window_focus_in(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Focus_In *e; - - e = event; - printf("Focus in\n"); - return 1; -} - -int -handler_x_window_focus_out(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Focus_Out *e; - - e = event; - printf("Focus out\n"); - return 1; -} - -int -handler_x_window_damage(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Damage *e; - - e = event; - printf("Damage %i %i, %ix%i\n", e->x, e->y, e->w, e->h); - return 1; -} - -int -handler_x_window_destroy(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Destroy *e; - - e = event; - printf("Destroy\n"); - ecore_main_loop_quit(); - return 1; -} - -int -handler_x_window_configure(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Configure *e; - const int desktop = 0; - - e = event; - printf("Configure %i %i, %ix%i\n", e->x, e->y, e->w, e->h); - printf("Switching desktops to %d\n", desktop); - ecore_x_netwm_desktop_request_send(e->win, 0, desktop); - return 1; -} - -int -handler_x_window_delete_request(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Delete_Request *e; - - e = event; - printf("Delete Request\n"); - ecore_main_loop_quit(); - return 1; -} - -int -handler_x_window_prop_title_change(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Prop_Title_Change *e; - - e = event; - if (e->title) - printf("Title change to \"%s\"\n", e->title); - else - printf("Title deleted\n"); - return 1; -} - -int -handler_x_window_prop_visible_title_change(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Prop_Visible_Title_Change *e; - - e = event; - if (e->title) - printf("Visible title change to \"%s\"\n", e->title); - else - printf("Visible title deleted\n"); - return 1; -} - -int -handler_x_window_prop_icon_name_change(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Prop_Icon_Name_Change *e; - - e = event; - if (e->name) - printf("Icon name change to \"%s\"\n", e->name); - else - printf("Icon name deleted\n"); - return 1; -} - -int -handler_x_window_prop_visible_icon_name_change(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e; - - e = event; - if (e->name) - printf("Visible icon name change to \"%s\"\n", e->name); - else - printf("Visible icon name deleted\n"); - return 1; -} - -int -handler_x_window_prop_client_machine_change(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Prop_Client_Machine_Change *e; - - e = event; - if (e->name) - printf("Client machine change to \"%s\"\n", e->name); - else - printf("Client machine deleted\n"); - return 1; -} - -int -handler_x_window_prop_pid_change(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Prop_Pid_Change *e; - - e = event; - if (e->pid) - { - printf("Pid change to \"%d\" ", e->pid); - if (e->pid == getpid()) - printf("correct.\n"); - else - printf("INCORRECT!\n"); - } - else - printf("Pid deleted\n"); - return 1; -} - -int -handler_x_window_prop_name_class_change(void *data, int type, void *event) -{ - Ecore_X_Event_Window_Prop_Name_Class_Change *e; - - e = event; - if ((e->name) && (e->clas)) - printf("Name & Class change to \"%s\".\"%s\"\n", e->name, e->clas); - else - printf("Name & Class deleted\n"); - return 1; -} - -void -setup_ecore_x_test(void) -{ - char *tmp; - int pid; - unsigned int desktop; - - win = ecore_x_window_new(0, 0, 0, 120, 60); - ecore_x_netwm_name_set(win, "Ecore Test Program"); - ecore_x_icccm_title_set(win, "Ecore Test Program"); - //printf("Title currently: %s\n", tmp); -#if 0 - /* Visibile title should be set by the wm */ - tmp = ecore_x_netwm_visible_name_get(win); - if (!tmp) - { - printf("No visible title, setting it to Ecore ... Program\n"); - ecore_x_window_prop_visible_title_set(win, "Ecore ... Program"); - tmp = ecore_x_window_prop_visible_title_get(win); - } - printf("Visible title: %s\n", tmp); - free(tmp); -#endif - ecore_x_netwm_icon_name_get(win, &tmp); - if (!tmp) - { - printf("No icon name, setting it to Ecore_Test\n"); - ecore_x_netwm_icon_name_set(win, "Ecore_Test"); - ecore_x_netwm_icon_name_get(win, &tmp); - } - printf("Icon Name: %s\n", tmp); - free(tmp); -#if 0 - /* Visibile icon should be set by the wm */ - tmp = ecore_x_window_prop_visible_icon_name_get(win); - if (!tmp) - { - printf("No visible icon name, setting it to Ecore\n"); - ecore_x_window_prop_visible_icon_name_set(win, "Ecore"); - tmp = ecore_x_window_prop_visible_icon_name_get(win); - } - printf("Visible icon Name: %s\n", tmp); - free(tmp); -#endif - tmp = ecore_x_icccm_client_machine_get(win); - if (tmp) - { - printf("Client machine: %s\n", tmp); - free(tmp); - } - ecore_x_netwm_pid_get(win, &pid); - printf("Pid: %d\n", pid); - ecore_x_icccm_name_class_set(win, "ecore_test", "main"); - ecore_x_netwm_desktop_set(win, 1); - ecore_x_netwm_desktop_get(win, &desktop); - printf("Window on desktop %u\n", desktop); - ecore_x_netwm_window_type_set(win, ECORE_X_WINDOW_TYPE_DIALOG); - ecore_x_icccm_protocol_set(win, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, 1); - ecore_x_window_show(win); - ecore_x_flush(); - - ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, handler_x_key_down, NULL); - ecore_event_handler_add(ECORE_X_EVENT_KEY_UP, handler_x_key_up, NULL); - ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, handler_x_mouse_button_down, NULL); - ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, handler_x_mouse_button_up, NULL); - ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE, handler_x_mouse_move, NULL); - ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, handler_x_mouse_in, NULL); - ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT, handler_x_mouse_out, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, handler_x_window_focus_in, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, handler_x_window_focus_out, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DAMAGE, handler_x_window_damage, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, handler_x_window_destroy, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE, handler_x_window_configure, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DELETE_REQUEST, handler_x_window_delete_request, NULL); - /* - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE, handler_x_window_prop_title_change, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE, handler_x_window_prop_visible_title_change, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE, handler_x_window_prop_icon_name_change, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE, handler_x_window_prop_visible_icon_name_change, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE, handler_x_window_prop_name_class_change, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE, handler_x_window_prop_client_machine_change, NULL); - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE, handler_x_window_prop_pid_change, NULL); - */ - -} -#endif - -#ifdef BUILD_ECORE_EVAS -/* choose: TEST_X, TEST_FB */ -#define TEST_X - -/**** ECORE_EVAS TEST CODE */ - -Ecore_Timer *anim_timer = NULL; -Ecore_Evas *ee = NULL; -Evas *evas = NULL; -Evas_Object *objects[64]; - -int -obj_timer(void *data) -{ - Evas_Object *o; - Evas_Coord x, y; - Evas_Coord w, h; - Evas_Coord ow, oh; - double t; - int m, n; - int i; - - t = ecore_time_get() - start_time; - for (i = 0; i < (sizeof(objects) / sizeof(Evas_Object *)); i++) - { - o = objects[i]; - evas_output_viewport_get(evas_object_evas_get(o), NULL, NULL, &w, &h); - evas_object_geometry_get(o, NULL, NULL, &ow, &oh); - m = ((int)o / 36) & 0x3f; - n = ((int)o / 763) & 0x3f; - x = sin(t * (double)m / 12) * ((w - ow) / 2); - y = sin(t * (double)n / 12) * ((h - oh) / 2); - evas_object_move(o, (w / 2) - (ow / 2) + x, (h / 2) - (oh / 2) + y); - } - return 1; -} - -void -del_req(Ecore_Evas *ee) -{ - int i; - - printf("request to go away... nice exit\n"); - for (i = 0; i < (sizeof(objects) / sizeof(Evas_Object *)); i++) - objects[i] = NULL; - ecore_timer_del(anim_timer); - anim_timer = NULL; - ecore_main_loop_quit(); -} - -static void -cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Event_Key_Down *ev; - - ev = event_info; - if (!strcmp(ev->keyname, "Escape")) ecore_main_loop_quit(); - if (!strcmp(ev->keyname, "q")) ecore_main_loop_quit(); - if (!strcmp(ev->keyname, "Q")) ecore_main_loop_quit(); - if (!strcmp(ev->keyname, "f")) - { - if (!ecore_evas_fullscreen_get(ee)) - ecore_evas_fullscreen_set(ee, 1); - else - ecore_evas_fullscreen_set(ee, 0); - } - if (!strcmp(ev->keyname, "o")) - { - if (!ecore_evas_override_get(ee)) - ecore_evas_override_set(ee, 1); - else - ecore_evas_override_set(ee, 0); - } - if (!strcmp(ev->keyname, "r")) - { - int r; - - r = ecore_evas_rotation_get(ee); - if (r == 0) r = 90; - else if (r == 90) r = 270; - else if (r == 270) r = 0; - ecore_evas_rotation_set(ee, r); - } - if (!strcmp(ev->keyname, "b")) - { - if (!ecore_evas_borderless_get(ee)) - ecore_evas_borderless_set(ee, 1); - else - ecore_evas_borderless_set(ee, 0); - } - if (!strcmp(ev->keyname, "d")) - { - if (!ecore_evas_avoid_damage_get(ee)) - ecore_evas_avoid_damage_set(ee, 1); - else - ecore_evas_avoid_damage_set(ee, 0); - } - if (!strcmp(ev->keyname, "s")) - { - if (!ecore_evas_shaped_get(ee)) - ecore_evas_shaped_set(ee, 1); - else - ecore_evas_shaped_set(ee, 0); - } -#if 1 /* no data files shipped yet to test this */ - if (!strcmp(ev->keyname, "p")) - { - char *fl; - - ecore_evas_cursor_get(ee, &fl, NULL, NULL, NULL); - if (!fl) - ecore_evas_cursor_set(ee, "data/pointers/mouse_pointer.png", 1000000, 2, 2); - else - ecore_evas_cursor_set(ee, NULL, 0, 0, 0); - } -#endif -} - -int -setup_ecore_evas_test(void) -{ - Evas_Object *o; - int i; - - /* create a new ecore wrapped evas canvas in X */ -#ifdef TEST_X - ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 240, 320); -#endif -#ifdef TEST_FB - ee = ecore_evas_fb_new(NULL, 270, 240, 320); -#endif - if (!ee) return 0; - ecore_evas_title_set(ee, "Ecore Evas Test"); - ecore_evas_name_class_set(ee, "ecore_test", "test_evas"); - /* callback if clsoe button is pressed and win is asked to be deleted */ - ecore_evas_callback_delete_request_set(ee, del_req); - - /* get the actual evas ecore created for us */ - evas = ecore_evas_get(ee); - - /* image cache set (in bytes) */ - evas_image_cache_set(evas, 0 * 1024); - /* font cache set (in bytes) */ - evas_font_cache_set(evas, 0 * 1024); - /* add a directory to look in for fonts */ - evas_font_path_append(evas, "./"); - - /* set up a big white rectangle on the bg */ - o = evas_object_rectangle_add(evas); - evas_object_color_set(o, 255, 255, 255, 255); - evas_object_move(o, 0, 0); - evas_object_resize(o, 100000, 100000); - evas_object_layer_set(o, -1000000); - evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, cb_key_down, ee); - evas_object_focus_set(o, 1); - evas_object_show(o); - - /* make a bunch of rectangles */ - for (i = 0; i < (sizeof(objects) / sizeof(Evas_Object *)); i++) - { - o = evas_object_rectangle_add(evas); - evas_object_move(o, 10, 10); - evas_object_pass_events_set(o, 1); - evas_object_color_set(o, - ((int)o) & 0xff, - ((int)o / 30) & 0xff, - ((int)o / 65) & 0xff, - ((int)o / 156) & 0xff); - evas_object_resize(o, 4 + (((int)o) % 100), 4 + (((int)o / 50) % 100)); - evas_object_show(o); - objects[i] = o; - } - /* add a timer to animate them */ - anim_timer = ecore_timer_add(0.01, obj_timer, NULL); - - ecore_evas_show(ee); - return 1; -} -#endif - -/**** MAIN */ -int -main(int argc, const char **argv) -{ - /* get the time the program started at */ - start_time = ecore_time_get(); - - /* init ecore */ - ecore_init(); - /* tell ecore what our arguments are */ - ecore_app_args_set(argc, argv); - -#if 1 - /* setup to test ecore module basics */ - setup_ecore_test(); -#endif - -#ifdef BUILD_ECORE_CON -#if 0 - /* init ecore_con */ - ecore_con_init(); - { - Ecore_Con_Server *server; - -/* server = ecore_con_server_add(ECORE_CON_LOCAL_USER, "ecore_test", 0, NULL);*/ - server = ecore_con_server_add(ECORE_CON_LOCAL_SYSTEM, "ecore_test", 0, NULL); -/* server = ecore_con_server_add(ECORE_CON_REMOTE_SYSTEM, "localhost", 7654, NULL); */ - ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, handler_client_add, NULL); - ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, handler_client_del, NULL); - ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, handler_client_data, NULL); - printf("create server %p\n", server); - } - { - Ecore_Con_Server *server; - -/* server = ecore_con_server_connect(ECORE_CON_LOCAL_USER, "ecore_test", 0, NULL);*/ - server = ecore_con_server_connect(ECORE_CON_LOCAL_SYSTEM, "ecore_test", 0, NULL); -/* server = ecore_con_server_connect(ECORE_CON_REMOTE_SYSTEM, "localhost", 7654, NULL); */ -/* server = ecore_con_server_connect(ECORE_CON_REMOTE_SYSTEM, "www.rasterman.com", 80, NULL); */ - ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, handler_server_add, NULL); - ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, handler_server_del, NULL); - ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, handler_server_data, NULL); - printf("connect to server: %p\n", server); - if (server) - { - char data[160 * 1024]; - - strcpy(data, "BLAHPANTS!"); - ecore_con_server_send(server, data, 160 * 1024); - } - } -#endif -#endif - -#ifdef BUILD_ECORE_IPC -#if 1 - /* init ecore_ipc */ - ecore_ipc_init(); - { - Ecore_Ipc_Server *server; - - server = ecore_ipc_server_add(ECORE_IPC_LOCAL_SYSTEM, "ecore_ipc_test", 0, NULL); -/* server = ecore_ipc_server_add(ECORE_IPC_REMOTE_SYSTEM, "localhost", 4567, NULL); */ - ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD, handler_ipc_client_add, NULL); - ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DEL, handler_ipc_client_del, NULL); - ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DATA, handler_ipc_client_data, NULL); - printf("create ipc server %p\n", server); - } - { - Ecore_Ipc_Server *server; - - server = ecore_ipc_server_connect(ECORE_IPC_LOCAL_SYSTEM, "ecore_ipc_test", 0, NULL); -/* server = ecore_ipc_server_connect(ECORE_IPC_REMOTE_SYSTEM, "localhost", 4567, NULL); */ - ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_ADD, handler_ipc_server_add, NULL); - ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DEL, handler_ipc_server_del, NULL); - ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DATA, handler_ipc_server_data, NULL); - printf("connect to ipc server: %p\n", server); - if (server) - { - char data[160 * 1024]; - - strcpy(data, "BLAHPANTS!"); - ecore_ipc_server_send(server, 5, 6, 0, 0, 0, data, 160 * 1024); - } - } -#endif -#endif - -#ifdef BUILD_ECORE_EVAS - /* init ecore_evas */ -/* if (!ecore_evas_init()) return -1; */ -#endif - - /* setup a callback to handle a systsme signal to quit */ - ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, handler_signal_exit, NULL); - -#ifdef BUILD_ECORE_X - /* setup to test ecore_x module things */ - if (!ecore_x_init(NULL)) return -1; - setup_ecore_x_test(); -#endif - -#ifdef BUILD_ECORE_EVAS - /* setup to test ecore_evas module */ -/* if (!setup_ecore_evas_test()) return -1; */ -#endif - - /* run the main loop */ - ecore_main_loop_begin(); - -#ifdef BUILD_ECORE_EVAS - /* shut down ecore_evas */ - ecore_evas_shutdown(); -#endif -#ifdef BUILD_ECORE_IPC - /* shut down ecore_ipc */ - ecore_ipc_shutdown(); -#endif -#ifdef BUILD_ECORE_CON - /* shut down ecore_con */ - ecore_con_shutdown(); -#endif - /* shut down ecore */ - ecore_shutdown(); - return 0; -} diff --git a/legacy/ecore/src/e_ev_filter.c b/legacy/ecore/src/e_ev_filter.c deleted file mode 100644 index 58c7e0f1f4..0000000000 --- a/legacy/ecore/src/e_ev_filter.c +++ /dev/null @@ -1,132 +0,0 @@ -#include "Ecore.h" - -typedef struct _ecore_event_handler Ecore_Event_Handler; -typedef struct _ecore_event_idle_handler Ecore_Event_Idle_Handler; - -struct _ecore_event_handler -{ - void (*func) (Ecore_Event * ev); - Ecore_Event_Handler *next; -}; - -struct _ecore_event_idle_handler -{ - void (*func) (void *data); - void *data; - Ecore_Event_Idle_Handler *next; -}; - -static Ecore_Event_Handler *handler[ECORE_EVENT_MAX]; -static Ecore_Event_Idle_Handler *idle_handlers = NULL; - -void -ecore_event_filter(Ecore_Event * ev) -{ - Ecore_Event *evp; - int motion_events = 0; - int dnd_pos_events = 0; - int dnd_status_events = 0; - - /* count events to only use last events of some types */ - for (evp = ev; evp; evp = evp->next) - { - if (evp->type == ECORE_EVENT_MOUSE_MOVE) - motion_events++; - if (evp->type == ECORE_EVENT_DND_DROP_POSITION) - dnd_pos_events++; - if (evp->type == ECORE_EVENT_DND_DROP_STATUS) - dnd_status_events++; - } - for (evp = ev; evp; evp = evp->next) - { - if (evp->type == ECORE_EVENT_MOUSE_MOVE) - { - if (motion_events > 1) - { - evp->ignore = 1; - motion_events--; - } - } - else if (evp->type == ECORE_EVENT_DND_DROP_POSITION) - { - if (dnd_pos_events > 1) - { - evp->ignore = 1; - dnd_pos_events--; - } - } - else if (evp->type == ECORE_EVENT_DND_DROP_STATUS) - { - if (dnd_status_events > 1) - { - evp->ignore = 1; - dnd_status_events--; - } - } - } -} - -void -ecore_event_filter_events_handle(Ecore_Event * ev) -{ - Ecore_Event *evp; - - for (evp = ev; evp; evp = evp->next) - { - Ecore_Event_Handler *h; - - if (!evp->ignore) - { - for (h = handler[evp->type]; h; h = h->next) - { - if (h->func) - h->func(evp); - } - } - } -} - -void -ecore_event_filter_idle_handle(void) -{ - Ecore_Event_Idle_Handler *h; - - for (h = idle_handlers; h; h = h->next) - h->func(h->data); -} - -extern int __quit_ev_loop; - -void -ecore_event_filter_init(void) -{ - int i; - - __quit_ev_loop = 0; - for (i = 0; i < ECORE_EVENT_MAX; i++) - handler[i] = NULL; -} - -void -ecore_event_filter_handler_add(Ecore_Event_Type type, - void (*func) (Ecore_Event * ev)) -{ - Ecore_Event_Handler *h; - - h = NEW(Ecore_Event_Handler, 1); - h->func = func; - h->next = handler[type]; - handler[type] = h; -} - -void -ecore_event_filter_idle_handler_add(void (*func) (void *data), void *data) -{ - Ecore_Event_Idle_Handler *h; - - h = NEW(Ecore_Event_Idle_Handler, 1); - h->func = func; - h->data = data; - h->next = idle_handlers; - idle_handlers = h; -} diff --git a/legacy/ecore/src/e_ev_signal.c b/legacy/ecore/src/e_ev_signal.c deleted file mode 100644 index b0e34cb021..0000000000 --- a/legacy/ecore/src/e_ev_signal.c +++ /dev/null @@ -1,320 +0,0 @@ -#include "Ecore.h" -#include -#include -#include -#include -#include - -static void ecore_event_signal_free(void *event); -static void ecore_event_signal_handle_sigchld(int num); -static void ecore_event_signal_handle_sigusr1(int num); -static void ecore_event_signal_handle_sigusr2(int num); -static void ecore_event_signal_handle_sighup(int num); -static void ecore_event_signal_handle_sigpipe(int num); -static void ecore_event_signal_handle_sigsegv(int num); -static void ecore_event_signal_handle_sigfpe(int num); -static void ecore_event_signal_handle_sigill(int num); -static void ecore_event_signal_handle_sigbus(int num); - -#ifdef HAVE_SIGSTKFLT -static void ecore_event_signal_handle_sigstkflt(int num); -#endif -#ifdef HAVE_SIGPWR -static void ecore_event_signal_handle_sigpwr(int num); -#endif -static void ecore_event_signal_handle_sigchld(int num); -static void ecore_event_signal_handle_all(pid_t pid); - -static int signal_chld_count = 0; -static int signal_usr1_count = 0; -static int signal_usr2_count = 0; -static int signal_hup_count = 0; - -/* freeing stuff */ -static void -ecore_event_signal_free(void *event) -{ - FREE(event); -} - -/* signal handlers we can return from and add to signal recieved counts */ -static void -ecore_event_signal_handle_sigchld(int num) -{ - signal_chld_count++; - return; - num = 0; -} - -static void -ecore_event_signal_handle_sigusr1(int num) -{ - signal_usr1_count++; - return; - num = 0; -} - -static void -ecore_event_signal_handle_sigusr2(int num) -{ - signal_usr2_count++; - return; - num = 0; -} - -static void -ecore_event_signal_handle_sighup(int num) -{ - signal_hup_count++; - return; - num = 0; -} - -/* signals to ignore */ -static void -ecore_event_signal_handle_sigpipe(int num) -{ - return; - num = 0; -} - -/* signal handlers we cant return from - so handle here */ -static void -ecore_event_signal_handle_sigsegv(int num) -{ - for (;;) - { - fprintf(stderr, "EEEEEEEEK SEGV - waiting 10 seconds\n"); - sleep(10); - } - /* EEK - can't return - bad */ - abort(); - num = 0; -} - -static void -ecore_event_signal_handle_sigfpe(int num) -{ - /* EEK - can't return - bad */ - abort(); - num = 0; -} - -static void -ecore_event_signal_handle_sigill(int num) -{ - /* EEK - can't return - bad */ - abort(); - num = 0; -} - -static void -ecore_event_signal_handle_sigbus(int num) -{ - /* EEK - can't return - bad */ - abort(); - num = 0; -} - -#ifdef HAVE_SIGSTKFLT -static void -ecore_event_signal_handle_sigstkflt(int num) -{ - /* EEK - can't return - bad */ - abort(); - return; - num = 0; -} -#endif - -static void -ecore_event_signal_handle_sigint(int num) -{ - exit(0); - return; - num = 0; -} - -static void -ecore_event_signal_handle_sigquit(int num) -{ - exit(0); - return; - num = 0; -} - -static void -ecore_event_signal_handle_sigabrt(int num) -{ - abort(); - return; - num = 0; -} - -static void -ecore_event_signal_handle_sigalrm(int num) -{ - return; - num = 0; -} - -static void -ecore_event_signal_handle_sigterm(int num) -{ - exit(0); - return; - num = 0; -} - -#ifdef HAVE_SIGPWR -static void -ecore_event_signal_handle_sigpwr(int num) -{ - exit(0); - return; - num = 0; -} -#endif - -static void -ecore_event_signal_handle_all(pid_t pid_pass) -{ - int status; - pid_t pid; - - if (signal_chld_count > 0) - { - while ((pid = waitpid(-1, &status, WNOHANG)) > 0) - { - if (WIFEXITED(status)) - { - Ecore_Event_Child *e; - int code; - - code = WEXITSTATUS(status); - e = NEW(Ecore_Event_Child, 1); - e->pid = pid; - e->exit_code = code; - ecore_add_event(ECORE_EVENT_CHILD, e, ecore_event_signal_free); - } - } - signal_chld_count = 0; - } - while (signal_usr1_count > 0) - { - Ecore_Event_User *e; - - e = NEW(Ecore_Event_User, 1); - e->num = 0; - e->hup = 0; - ecore_add_event(ECORE_EVENT_USER, e, ecore_event_signal_free); - signal_usr1_count--; - } - while (signal_hup_count > 0) - { - Ecore_Event_User *e; - - e = NEW(Ecore_Event_User, 1); - e->num = 0; - e->hup = 1; - ecore_add_event(ECORE_EVENT_USER, e, ecore_event_signal_free); - signal_hup_count--; - } - return; - pid_pass = 0; -} - -int -ecore_event_signal_events_pending(void) -{ - return (signal_chld_count + signal_usr1_count + signal_hup_count); -} - -void -ecore_event_signal_init(void) -{ - struct sigaction sa; - - ecore_add_event_pid(0, ecore_event_signal_handle_all); - - sa.sa_handler = ecore_event_signal_handle_sigchld; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGCHLD, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sigusr1; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGUSR1, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sigusr2; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGUSR2, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sighup; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGHUP, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sigpipe; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGPIPE, &sa, (struct sigaction *)0); -/* - sa.sa_handler = ecore_event_signal_handle_sigsegv; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGSEGV, &sa, (struct sigaction *)0); -*/ - sa.sa_handler = ecore_event_signal_handle_sigfpe; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGFPE, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sigill; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGILL, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sigbus; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGBUS, &sa, (struct sigaction *)0); -#ifdef HAVE_SIGSTKFLT - sa.sa_handler = ecore_event_signal_handle_sigstkflt; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGSTKFLT, &sa, (struct sigaction *)0); -#endif - sa.sa_handler = ecore_event_signal_handle_sigint; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGINT, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sigquit; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGQUIT, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sigabrt; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGABRT, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sigalrm; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGALRM, &sa, (struct sigaction *)0); - - sa.sa_handler = ecore_event_signal_handle_sigterm; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGTERM, &sa, (struct sigaction *)0); -#ifdef HAVE_SIGPWR - sa.sa_handler = ecore_event_signal_handle_sigpwr; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGPWR, &sa, (struct sigaction *)0); -#endif -} diff --git a/legacy/ecore/src/e_ev_x.c b/legacy/ecore/src/e_ev_x.c deleted file mode 100644 index a3ea7bd336..0000000000 --- a/legacy/ecore/src/e_ev_x.c +++ /dev/null @@ -1,1234 +0,0 @@ -#include "Ecore.h" -#include -#include -#include - -/* private funtion prototypes */ -static void ecore_event_x_handle_events(int fd); -static void ecore_event_x_translate_events(XEvent * events, - int num_events); - -static void ecore_event_key_down_free(void *event); -static void ecore_event_key_up_free(void *event); -static void ecore_event_generic_free(void *event); -static void ecore_event_dnd_drop_request_free(void *event); -static void ecore_event_paste_request_free(void *event); - -static void ecore_event_x_handle_keypress(XEvent * xevent); -static void ecore_event_x_handle_keyrelease(XEvent * xevent); -static void ecore_event_x_handle_button_press(XEvent * xevent); -static void ecore_event_x_handle_button_release(XEvent * xevent); -static void ecore_event_x_handle_motion_notify(XEvent * xevent); -static void ecore_event_x_handle_enter_notify(XEvent * xevent); -static void ecore_event_x_handle_leave_notify(XEvent * xevent); -static void ecore_event_x_handle_focus_in(XEvent * xevent); -static void ecore_event_x_handle_focus_out(XEvent * xevent); -static void ecore_event_x_handle_expose(XEvent * xevent); -static void ecore_event_x_handle_visibility_notify(XEvent * xevent); -static void ecore_event_x_handle_create_notify(XEvent * xevent); -static void ecore_event_x_handle_destroy_notify(XEvent * xevent); -static void ecore_event_x_handle_unmap_notify(XEvent * xevent); -static void ecore_event_x_handle_map_notify(XEvent * xevent); -static void ecore_event_x_handle_map_request(XEvent * xevent); -static void ecore_event_x_handle_reparent_notify(XEvent * xevent); -static void ecore_event_x_handle_configure_notify(XEvent * xevent); -static void ecore_event_x_handle_configure_request(XEvent * xevent); -static void ecore_event_x_handle_circulate_notify(XEvent * xevent); -static void ecore_event_x_handle_circulate_request(XEvent * xevent); -static void ecore_event_x_handle_property_notify(XEvent * xevent); -static void ecore_event_x_handle_colormap_notify(XEvent * xevent); -static void ecore_event_x_handle_selection_notify(XEvent * xevent); -static void ecore_event_x_handle_selection_clear(XEvent * xevent); -static void ecore_event_x_handle_selection_request(XEvent * xevent); -static void ecore_event_x_handle_client_message(XEvent * xevent); -static void ecore_event_x_handle_shape_change(XEvent * xevent); - -static int max_event_id = 0; -static void (**event_translator) (XEvent * event) = NULL; - -static int lock_mask_scroll = 0, lock_mask_num = 0, lock_mask_caps = 0; -static int mod_mask_shift = 0, mod_mask_ctrl = 0, mod_mask_alt = - 0, mod_mask_win = 0; - -/* convenience macros */ -#define GETSET_MODS(state, mods) \ -(mods) = ECORE_EVENT_KEY_MODIFIER_NONE;\ -if ((state) & mod_mask_shift) { ecore_mod_shift_set(1); (mods) |= ECORE_EVENT_KEY_MODIFIER_SHIFT; }\ -else ecore_mod_shift_set(0);\ -if ((state) & mod_mask_ctrl) { ecore_mod_ctrl_set(1); (mods) |= ECORE_EVENT_KEY_MODIFIER_CTRL; }\ -else ecore_mod_ctrl_set(0);\ -if ((state) & mod_mask_alt) { ecore_mod_alt_set(1); (mods) |= ECORE_EVENT_KEY_MODIFIER_ALT; }\ -else ecore_mod_alt_set(0);\ -if ((state) & mod_mask_win) { ecore_mod_win_set(1); (mods) |= ECORE_EVENT_KEY_MODIFIER_WIN; }\ -else ecore_mod_win_set(0); - -/* public functions */ - -/* initialise event handling for the fd X is on */ -void -ecore_event_x_init(void) -{ - int i, shape_event_id, current_lock; - - shape_event_id = max_event_id = ecore_event_shape_get_id(); - if (shape_event_id < LASTEvent) - { - max_event_id = LASTEvent; - fprintf(stderr, "ERROR: No shape extension! This is BAD!\n"); - } - event_translator = NEW_PTR(max_event_id + 1); - for (i = 0; i < max_event_id + 1; i++) - event_translator[i] = NULL; - event_translator[KeyPress] = ecore_event_x_handle_keypress; - event_translator[KeyRelease] = ecore_event_x_handle_keyrelease; - event_translator[ButtonPress] = ecore_event_x_handle_button_press; - event_translator[ButtonRelease] = ecore_event_x_handle_button_release; - event_translator[MotionNotify] = ecore_event_x_handle_motion_notify; - event_translator[EnterNotify] = ecore_event_x_handle_enter_notify; - event_translator[LeaveNotify] = ecore_event_x_handle_leave_notify; - event_translator[FocusIn] = ecore_event_x_handle_focus_in; - event_translator[FocusOut] = ecore_event_x_handle_focus_out; - event_translator[Expose] = ecore_event_x_handle_expose; - event_translator[VisibilityNotify] = ecore_event_x_handle_visibility_notify; - event_translator[CreateNotify] = ecore_event_x_handle_create_notify; - event_translator[DestroyNotify] = ecore_event_x_handle_destroy_notify; - event_translator[UnmapNotify] = ecore_event_x_handle_unmap_notify; - event_translator[MapNotify] = ecore_event_x_handle_map_notify; - event_translator[MapRequest] = ecore_event_x_handle_map_request; - event_translator[ReparentNotify] = ecore_event_x_handle_reparent_notify; - event_translator[ConfigureNotify] = ecore_event_x_handle_configure_notify; - event_translator[ConfigureRequest] = ecore_event_x_handle_configure_request; - event_translator[CirculateNotify] = ecore_event_x_handle_circulate_notify; - event_translator[CirculateRequest] = ecore_event_x_handle_circulate_request; - event_translator[PropertyNotify] = ecore_event_x_handle_property_notify; - event_translator[ColormapNotify] = ecore_event_x_handle_colormap_notify; - event_translator[ClientMessage] = ecore_event_x_handle_client_message; - event_translator[SelectionNotify] = ecore_event_x_handle_selection_notify; - event_translator[SelectionClear] = ecore_event_x_handle_selection_clear; - event_translator[SelectionRequest] = ecore_event_x_handle_selection_request; - if (shape_event_id > SelectionRequest) - event_translator[shape_event_id] = ecore_event_x_handle_shape_change; - - lock_mask_scroll = ecore_lock_mask_scroll_get(); - lock_mask_num = ecore_lock_mask_num_get(); - lock_mask_caps = ecore_lock_mask_caps_get(); - - mod_mask_shift = ecore_mod_mask_shift_get(); - mod_mask_ctrl = ecore_mod_mask_ctrl_get(); - mod_mask_alt = ecore_mod_mask_alt_get(); - mod_mask_win = ecore_mod_mask_win_get(); - -/* HRRRMMM lets not do this - ecorecore_keygrab("Num_Lock", ECORE_EVENT_KEY_MODIFIER_NONE, 1, 1); - ecorecore_keygrab("Scroll_Lock", ECORE_EVENT_KEY_MODIFIER_NONE, 1, 1); - ecorecore_keygrab("Caps_Lock", ECORE_EVENT_KEY_MODIFIER_NONE, 1, 1); - */ - current_lock = ecore_modifier_mask_get(); - if (current_lock & lock_mask_scroll) - ecore_lock_scroll_set(1); - if (current_lock & lock_mask_num) - ecore_lock_num_set(1); - if (current_lock & lock_mask_caps) - ecore_lock_caps_set(1); - if (current_lock & mod_mask_shift) - ecore_mod_shift_set(1); - if (current_lock & mod_mask_ctrl) - ecore_mod_ctrl_set(1); - if (current_lock & mod_mask_alt) - ecore_mod_alt_set(1); - if (current_lock & mod_mask_win) - ecore_mod_win_set(1); - ecore_add_event_fd(ecore_x_get_fd(), ecore_event_x_handle_events); -} - -/* private functions */ -/* get all events onthe event queue and translate them */ -static void -ecore_event_x_handle_events(int fd) -{ - int num_events = 0, size_events = 0; - XEvent *events = NULL; - - /* while there are events in the queue */ - while (ecore_events_pending()) - { - /* incriment our event count */ - num_events++; - /* if the numebr fo events is > than our buffer size then */ - if (num_events > size_events) - { - /* increase the buffer size by 64 events */ - size_events += 64; - if (events) - { - REALLOC(events, XEvent, size_events)} - else - events = NEW(XEvent, size_events); - } - /* get the next event into the event buffer */ - ecore_get_next_event(&(events[num_events - 1])); - } - /* call the XEvent -> Eevent translator */ - if (events) - { - ecore_event_x_translate_events(events, num_events); - /* if theres an event buffer - free it */ - FREE(events); - } - return; - fd = 0; -} - -/* take an array of events and translate them into E events */ -static void -ecore_event_x_translate_events(XEvent * events, int num_events) -{ - int i; - - for (i = 0; i < num_events; i++) - { - if ((events[i].type <= max_event_id) && - (event_translator[events[i].type])) - (*(event_translator[events[i].type])) (&(events[i])); - } -} - -static void -ecore_event_key_down_free(void *event) -{ - Ecore_Event_Key_Down *e; - - e = (Ecore_Event_Key_Down *) event; - IF_FREE(e->key); - IF_FREE(e->compose); - FREE(e); -} - -static void -ecore_event_key_up_free(void *event) -{ - Ecore_Event_Key_Up *e; - - e = (Ecore_Event_Key_Up *) event; - IF_FREE(e->key); - IF_FREE(e->compose); - FREE(e); -} - -static void -ecore_event_generic_free(void *event) -{ - FREE(event); -} - -static void -ecore_event_dnd_drop_request_free(void *event) -{ - Ecore_Event_Dnd_Drop_Request *e; - - e = (Ecore_Event_Dnd_Drop_Request *) event; - if (e->files) - { - int i; - - for (i = 0; i < e->num_files; i++) - FREE(e->files[i]); - } - FREE(event); -} - -static void -ecore_event_paste_request_free(void *event) -{ - Ecore_Event_Paste_Request *e; - - e = (Ecore_Event_Paste_Request *) event; - IF_FREE(e->string); - FREE(event); -} - -static void -ecore_event_x_handle_keypress(XEvent * xevent) -{ - Ecore_Event_Key_Down *e; - static KeyCode previous_code = 0; - static Time previous_time = 0; - - /* avoid doubling events up from passive grabs */ - if ((xevent->xkey.keycode == previous_code) && - xevent->xkey.time == previous_time) - return; - previous_code = xevent->xkey.keycode; - previous_time = xevent->xkey.time; -/* - if (ecore_keyget_keysym_from_keycode(xevent->xkey.keycode) == XK_Scroll_Lock) - { - if (ecore_lock_scroll_get()) - ecore_lock_scroll_set(0); - else - ecore_lock_scroll_set(1); - e_event_allow(ReplayKeyboard, xevent->xkey.time); - ecore_flush(); - } - else if (ecore_keyget_keysym_from_keycode(xevent->xkey.keycode) == XK_Num_Lock) - { - if (ecore_lock_num_get()) - ecore_lock_num_set(0); - else - ecore_lock_num_set(1); - e_event_allow(ReplayKeyboard, xevent->xkey.time); - ecore_flush(); - } - else if (ecore_keyget_keysym_from_keycode(xevent->xkey.keycode) == XK_Caps_Lock) - { - if (ecore_lock_caps_get()) - ecore_lock_caps_set(0); - else - ecore_lock_caps_set(1); - e_event_allow(ReplayKeyboard, xevent->xkey.time); - ecore_flush(); - } - */ - e = NEW(Ecore_Event_Key_Down, 1); - e->win = xevent->xkey.window; - e->root = xevent->xkey.root; - GETSET_MODS(xevent->xkey.state, e->mods); - e->time = xevent->xkey.time; - e->key = ecore_key_get_string_from_keycode(xevent->xkey.keycode); - { - int val; - char buf[256]; - KeySym sym; - XComposeStatus stat; - - val = XLookupString((XKeyEvent *) xevent, buf, sizeof(buf), &sym, &stat); - if (val > 0) - { - buf[val] = 0; - e->compose = strdup(buf); - } - else - e->compose = NULL; - } - ecore_add_event(ECORE_EVENT_KEY_DOWN, e, ecore_event_key_down_free); -} - -static void -ecore_event_x_handle_keyrelease(XEvent * xevent) -{ - Ecore_Event_Key_Up *e; - static KeyCode previous_code = 0; - static Time previous_time = 0; - - /* avoid doubling events up from passive grabs */ - if ((xevent->xkey.keycode == previous_code) && - xevent->xkey.time == previous_time) - return; - previous_code = xevent->xkey.keycode; - previous_time = xevent->xkey.time; - - e = NEW(Ecore_Event_Key_Up, 1); - e->win = xevent->xkey.window; - e->root = xevent->xkey.root; - GETSET_MODS(xevent->xkey.state, e->mods); - e->time = xevent->xkey.time; - e->key = ecore_key_get_string_from_keycode(xevent->xkey.keycode); - { - int val; - char buf[256]; - KeySym sym; - XComposeStatus stat; - - val = XLookupString((XKeyEvent *) xevent, buf, sizeof(buf), &sym, &stat); - if (val > 0) - { - buf[val] = 0; - e->compose = strdup(buf); - } - else - e->compose = NULL; - } - ecore_add_event(ECORE_EVENT_KEY_UP, e, ecore_event_key_up_free); -} - -static void -ecore_event_x_handle_button_press(XEvent * xevent) -{ - static Time last_time = 0, last_last_time = 0; - static int last_button = 0, last_last_button = 0; - static Window last_window = 0, last_last_window = 0; - - ecore_pointer_xy_set(xevent->xbutton.x_root, xevent->xbutton.y_root); - if ((xevent->xbutton.button == 4) || (xevent->xbutton.button == 5)) - { - Ecore_Event_Wheel *e; - - e = NEW(Ecore_Event_Wheel, 1); - e->win = xevent->xbutton.window; - e->root = xevent->xbutton.root; - e->x = xevent->xbutton.x; - e->y = xevent->xbutton.y; - e->rx = xevent->xbutton.x_root; - e->ry = xevent->xbutton.y_root; - e->time = xevent->xbutton.time; - if (xevent->xbutton.button == 5) - e->z = 1; - else - e->z = -1; - if (xevent->xbutton.time - last_time < 15) - e->z *= 16; - else if (xevent->xbutton.time - last_time < 30) - e->z *= 4; - GETSET_MODS(xevent->xbutton.state, e->mods); - ecore_add_event(ECORE_EVENT_MOUSE_WHEEL, e, ecore_event_generic_free); - } - else - { - Ecore_Event_Mouse_Down *e; - - e = NEW(Ecore_Event_Mouse_Down, 1); - e->win = xevent->xbutton.window; - e->root = xevent->xbutton.root; - e->button = xevent->xbutton.button; - e->x = xevent->xbutton.x; - e->y = xevent->xbutton.y; - e->rx = xevent->xbutton.x_root; - e->ry = xevent->xbutton.y_root; - e->time = xevent->xbutton.time; - e->double_click = 0; - e->triple_click = 0; - GETSET_MODS(xevent->xbutton.state, e->mods); - if (xevent->xbutton.time - last_last_time < 500) - { - if ((xevent->xbutton.window == (unsigned int)last_window) && - (last_window == last_last_window) && - (xevent->xbutton.button == (unsigned int)last_button) && - (last_button == last_button)) - e->triple_click = 1; - } - else if (xevent->xbutton.time - last_time < 250) - { - if ((xevent->xbutton.window == (unsigned int)last_window) && - (xevent->xbutton.button == (unsigned int)last_button)) - e->double_click = 1; - } - ecore_add_event(ECORE_EVENT_MOUSE_DOWN, e, ecore_event_generic_free); - { - Ecore_XID *xid = NULL; - - if (XFindContext(xevent->xbutton.display, e->win, - xid_context, (XPointer *) & xid) != XCNOENT) - { - if ((xid->grab_button_auto_replay) && - (xid->grab_button_auto_replay(e))) - { - ecore_pointer_replay(e->time); - } - } - } - } - last_last_window = last_window; - last_window = xevent->xbutton.window; - last_last_button = last_button; - last_button = xevent->xbutton.button; - last_last_time = last_time; - last_time = xevent->xbutton.time; -} - -static void -ecore_event_x_handle_button_release(XEvent * xevent) -{ - Ecore_Event_Mouse_Up *e; - - if (xevent->xbutton.button > 3) - return; - - e = NEW(Ecore_Event_Mouse_Up, 1); - e->win = xevent->xbutton.window; - e->root = xevent->xbutton.root; - e->button = xevent->xbutton.button; - e->x = xevent->xbutton.x; - e->y = xevent->xbutton.y; - e->rx = xevent->xbutton.x_root; - e->ry = xevent->xbutton.y_root; - e->time = xevent->xbutton.time; - GETSET_MODS(xevent->xbutton.state, e->mods); - ecore_add_event(ECORE_EVENT_MOUSE_UP, e, ecore_event_generic_free); -} - -static void -ecore_event_x_handle_motion_notify(XEvent * xevent) -{ - Ecore_Event_Mouse_Move *e; - - ecore_pointer_xy_set(xevent->xmotion.x_root, xevent->xmotion.y_root); - e = NEW(Ecore_Event_Mouse_Move, 1); - e->win = xevent->xmotion.window; - e->root = xevent->xmotion.root; - e->x = xevent->xmotion.x; - e->y = xevent->xmotion.y; - e->rx = xevent->xmotion.x_root; - e->ry = xevent->xmotion.y_root; - e->time = xevent->xmotion.time; - GETSET_MODS(xevent->xmotion.state, e->mods); - ecore_add_event(ECORE_EVENT_MOUSE_MOVE, e, ecore_event_generic_free); -} - -static void -ecore_event_x_handle_enter_notify(XEvent * xevent) -{ - Ecore_Event_Window_Enter *e; - -/* if ((xevent->xcrossing.mode == NotifyGrab) || (xevent->xcrossing.mode == NotifyUngrab)) return;*/ - ecore_pointer_xy_set(xevent->xcrossing.x_root, xevent->xcrossing.y_root); - e = NEW(Ecore_Event_Window_Enter, 1); - e->win = xevent->xcrossing.window; - e->root = xevent->xcrossing.root; - e->x = xevent->xcrossing.x; - e->y = xevent->xcrossing.y; - e->rx = xevent->xcrossing.x_root; - e->ry = xevent->xcrossing.y_root; - e->time = xevent->xcrossing.time; - GETSET_MODS(xevent->xcrossing.state, e->mods); - ecore_add_event(ECORE_EVENT_MOUSE_IN, e, ecore_event_generic_free); - ecore_window_mouse_set_in(e->win, 1); - { - Ecore_Event_Mouse_Move *e; - - e = NEW(Ecore_Event_Mouse_Move, 1); - e->win = xevent->xcrossing.window; - e->root = xevent->xcrossing.root; - e->x = xevent->xcrossing.x; - e->y = xevent->xcrossing.y; - e->rx = xevent->xcrossing.x_root; - e->ry = xevent->xcrossing.y_root; - e->time = xevent->xcrossing.time; - GETSET_MODS(xevent->xcrossing.state, e->mods); - ecore_add_event(ECORE_EVENT_MOUSE_MOVE, e, ecore_event_generic_free); - } -} - -static void -ecore_event_x_handle_leave_notify(XEvent * xevent) -{ - Ecore_Event_Window_Leave *e; - -/* if ((xevent->xcrossing.mode == NotifyGrab) || (xevent->xcrossing.mode == NotifyUngrab)) return;*/ - ecore_pointer_xy_set(xevent->xcrossing.x_root, xevent->xcrossing.y_root); - { - Ecore_Event_Mouse_Move *e; - - e = NEW(Ecore_Event_Mouse_Move, 1); - e->win = xevent->xcrossing.window; - e->root = xevent->xcrossing.root; - e->x = xevent->xcrossing.x; - e->y = xevent->xcrossing.y; - e->rx = xevent->xcrossing.x_root; - e->ry = xevent->xcrossing.y_root; - e->time = xevent->xcrossing.time; - GETSET_MODS(xevent->xcrossing.state, e->mods); - ecore_add_event(ECORE_EVENT_MOUSE_MOVE, e, ecore_event_generic_free); - } - e = NEW(Ecore_Event_Window_Leave, 1); - e->win = xevent->xcrossing.window; - e->root = xevent->xcrossing.root; - e->x = xevent->xcrossing.x; - e->y = xevent->xcrossing.y; - e->rx = xevent->xcrossing.x_root; - e->ry = xevent->xcrossing.y_root; - e->time = xevent->xcrossing.time; - GETSET_MODS(xevent->xcrossing.state, e->mods); - ecore_add_event(ECORE_EVENT_MOUSE_OUT, e, ecore_event_generic_free); - ecore_window_mouse_set_in(e->win, 0); -} - -static void -ecore_event_x_handle_focus_in(XEvent * xevent) -{ - Ecore_Event_Window_Focus_In *e; - - e = NEW(Ecore_Event_Window_Focus_In, 1); - e->win = xevent->xfocus.window; - e->root = ecore_window_get_root(e->win); - if (xevent->xfocus.mode != NotifyNormal) - e->key_grab = 1; - else - e->key_grab = 0; - ecore_add_event(ECORE_EVENT_WINDOW_FOCUS_IN, e, ecore_event_generic_free); - ecore_focus_window_set(e->win); -} - -static void -ecore_event_x_handle_focus_out(XEvent * xevent) -{ - Ecore_Event_Window_Focus_Out *e; - - e = NEW(Ecore_Event_Window_Focus_Out, 1); - e->win = xevent->xfocus.window; - e->root = ecore_window_get_root(e->win); - if (xevent->xfocus.mode != NotifyNormal) - e->key_grab = 1; - else - e->key_grab = 0; - ecore_add_event(ECORE_EVENT_WINDOW_FOCUS_OUT, e, ecore_event_generic_free); - ecore_focus_window_set(0); -} - -static void -ecore_event_x_handle_expose(XEvent * xevent) -{ - Ecore_Event_Window_Expose *e; - - e = NEW(Ecore_Event_Window_Expose, 1); - e->win = xevent->xexpose.window; - e->root = ecore_window_get_root(e->win); - e->x = xevent->xexpose.x; - e->y = xevent->xexpose.y; - e->w = xevent->xexpose.width; - e->h = xevent->xexpose.height; - ecore_add_event(ECORE_EVENT_WINDOW_EXPOSE, e, ecore_event_generic_free); -} - -static void -ecore_event_x_handle_visibility_notify(XEvent * xevent) -{ - if (xevent->xvisibility.state != VisibilityPartiallyObscured) - { - Ecore_Event_Window_Visibility *e; - - e = NEW(Ecore_Event_Window_Visibility, 1); - e->win = xevent->xvisibility.window; - e->root = ecore_window_get_root(e->win); - if (xevent->xvisibility.state == VisibilityFullyObscured) - e->fully_obscured = 1; - else - e->fully_obscured = 0; - ecore_add_event(ECORE_EVENT_WINDOW_VISIBILITY, e, - ecore_event_generic_free); - } -} - -static void -ecore_event_x_handle_create_notify(XEvent * xevent) -{ - Ecore_Event_Window_Create *e; - - e = NEW(Ecore_Event_Window_Create, 1); - e->win = xevent->xcreatewindow.window; - ecore_validate_xid(e->win); - e->root = ecore_window_get_root(e->win); - if (xevent->xcreatewindow.override_redirect) - e->override = 1; - else - e->override = 0; - ecore_add_event(ECORE_EVENT_WINDOW_CREATE, e, ecore_event_generic_free); -} - -static void -ecore_event_x_handle_destroy_notify(XEvent * xevent) -{ - Ecore_Event_Window_Destroy *e; - - e = NEW(Ecore_Event_Window_Destroy, 1); - e->win = xevent->xdestroywindow.window; - e->root = ecore_window_get_root(e->win); - ecore_add_event(ECORE_EVENT_WINDOW_DESTROY, e, ecore_event_generic_free); - ecore_unvalidate_xid(e->win); -} - -static void -ecore_event_x_handle_unmap_notify(XEvent * xevent) -{ - Ecore_Event_Window_Unmap *e; - Ecore_XID *xid = NULL; - - e = NEW(Ecore_Event_Window_Unmap, 1); - e->win = xevent->xunmap.window; - e->root = ecore_window_get_root(e->win); - ecore_add_event(ECORE_EVENT_WINDOW_UNMAP, e, ecore_event_generic_free); - xid = ecore_validate_xid(e->win); - if (xid) - xid->mapped = 0; -} - -static void -ecore_event_x_handle_map_notify(XEvent * xevent) -{ - Ecore_Event_Window_Map *e; - Ecore_XID *xid = NULL; - - e = NEW(Ecore_Event_Window_Map, 1); - e->win = xevent->xmap.window; - e->root = ecore_window_get_root(e->win); - ecore_add_event(ECORE_EVENT_WINDOW_MAP, e, ecore_event_generic_free); - xid = ecore_validate_xid(e->win); - if (xid) - xid->mapped = 1; -} - -static void -ecore_event_x_handle_map_request(XEvent * xevent) -{ - Ecore_Event_Window_Map_Request *e; - - e = NEW(Ecore_Event_Window_Map_Request, 1); - e->win = xevent->xmaprequest.window; - e->root = ecore_window_get_root(e->win); - ecore_add_event(ECORE_EVENT_WINDOW_MAP_REQUEST, e, ecore_event_generic_free); - ecore_validate_xid(e->win); -} - -static void -ecore_event_x_handle_reparent_notify(XEvent * xevent) -{ - Ecore_Event_Window_Reparent *e; - Window parent; - Ecore_XID *xid = NULL; - - e = NEW(Ecore_Event_Window_Reparent, 1); - e->win = xevent->xreparent.window; - xid = ecore_validate_xid(e->win); - e->root = ecore_window_get_root(e->win); - parent = ecore_window_get_parent(e->win); - e->parent_from = parent; - e->parent = xevent->xreparent.parent; - ecore_validate_xid(e->parent); - ecore_del_child(parent, e->win); - ecore_add_child(xevent->xreparent.parent, xevent->xreparent.window); - if (xid) - xid->parent = e->parent; - ecore_add_event(ECORE_EVENT_WINDOW_REPARENT, e, ecore_event_generic_free); -} - -static void -ecore_event_x_handle_configure_notify(XEvent * xevent) -{ - Ecore_Event_Window_Configure *e; - Ecore_XID *xid; - - e = NEW(Ecore_Event_Window_Configure, 1); - e->win = xevent->xconfigure.window; - e->root = ecore_window_get_root(e->win); - e->x = xevent->xconfigure.x; - e->y = xevent->xconfigure.y; - e->w = xevent->xconfigure.width; - e->h = xevent->xconfigure.height; - if (!xevent->xconfigure.send_event) - { - xid = ecore_validate_xid(e->win); - if (xid) - { - xid->x = e->x; - xid->y = e->y; - xid->w = e->w; - xid->h = e->h; - } - e->wm_generated = 0; - /* FIXME: don't handle redoing stack for xevent->xconfigure.above */ - /* member (the window is stacked immediately in stack above this) */ - } - else - e->wm_generated = 1; - ecore_add_event(ECORE_EVENT_WINDOW_CONFIGURE, e, ecore_event_generic_free); -} - -static void -ecore_event_x_handle_configure_request(XEvent * xevent) -{ - Ecore_Event_Window_Configure_Request *e; - - e = NEW(Ecore_Event_Window_Configure_Request, 1); - e->win = xevent->xconfigurerequest.window; - e->root = ecore_window_get_root(e->win); - e->x = xevent->xconfigurerequest.x; - e->y = xevent->xconfigurerequest.y; - e->w = xevent->xconfigurerequest.width; - e->h = xevent->xconfigurerequest.height; - e->stack_win = xevent->xconfigurerequest.above; - e->detail = xevent->xconfigurerequest.detail; - e->mask = xevent->xconfigurerequest.value_mask; - ecore_add_event(ECORE_EVENT_WINDOW_CONFIGURE_REQUEST, e, - ecore_event_generic_free); -} - -static void -ecore_event_x_handle_circulate_notify(XEvent * xevent) -{ - Ecore_Event_Window_Circulate *e; - - e = NEW(Ecore_Event_Window_Circulate, 1); - e->win = xevent->xcirculate.window; - e->root = ecore_window_get_root(e->win); - if (xevent->xcirculate.place == PlaceOnBottom) - e->lower = 1; - else - e->lower = 0; - ecore_add_event(ECORE_EVENT_WINDOW_CIRCULATE, e, ecore_event_generic_free); -} - -static void -ecore_event_x_handle_circulate_request(XEvent * xevent) -{ - Ecore_Event_Window_Circulate_Request *e; - - e = NEW(Ecore_Event_Window_Circulate_Request, 1); - e->win = xevent->xcirculaterequest.window; - e->root = ecore_window_get_root(e->win); - if (xevent->xcirculaterequest.place == PlaceOnBottom) - e->lower = 1; - else - e->lower = 0; - ecore_add_event(ECORE_EVENT_WINDOW_CIRCULATE_REQUEST, e, - ecore_event_generic_free); -} - -static void -ecore_event_x_handle_property_notify(XEvent * xevent) -{ - Ecore_Event_Window_Property *e; - - e = NEW(Ecore_Event_Window_Property, 1); - e->win = xevent->xproperty.window; - e->root = ecore_window_get_root(e->win); - e->atom = xevent->xproperty.atom; - e->time = xevent->xproperty.time; - ecore_add_event(ECORE_EVENT_WINDOW_PROPERTY, e, ecore_event_generic_free); -} - -static void -ecore_event_x_handle_colormap_notify(XEvent * xevent) -{ - Ecore_Event_Colormap *e; - - e = NEW(Ecore_Event_Colormap, 1); - e->win = xevent->xcolormap.window; - e->root = ecore_window_get_root(e->win); - e->cmap = xevent->xcolormap.colormap; - if (xevent->xcolormap.state == ColormapInstalled) - e->installed = 1; - else - e->installed = 0; - ecore_add_event(ECORE_EVENT_COLORMAP, e, ecore_event_generic_free); -} - -Ecore_Event_Dnd_Drop_Request *ev_drop_request_pending = NULL; - -static void -ecore_event_x_handle_selection_notify(XEvent * xevent) -{ - Ecore_Event_Dnd_Drop_Request *e; - char *data; - int size; - static Atom atom_xdndactioncopy = 0; - static Atom atom_xdndactionmove = 0; - static Atom atom_xdndactionlink = 0; - static Atom atom_xdndactionask = 0; - static Atom atom_xdndactionlist = 0; - - e = ev_drop_request_pending; - if (!e) - { - Ecore_Event_Paste_Request *e2; - - e2 = NEW(Ecore_Event_Paste_Request, 1); - e2->string = ecore_selection_get_data(xevent->xselection.requestor, - xevent->xselection.property); - if (e2->string) - { - e2->win = xevent->xselection.requestor; - e2->root = ecore_window_get_root(e2->win); - e2->source_win = xevent->xselection.requestor; - ecore_add_event(ECORE_EVENT_PASTE_REQUEST, e2, - ecore_event_paste_request_free); - } - else - { - FREE(e2); - } - return; - } - - ECORE_ATOM(atom_xdndactioncopy, "XdndActionCopy"); - ECORE_ATOM(atom_xdndactionmove, "XdndActionMove"); - ECORE_ATOM(atom_xdndactionlink, "XdndActionLink"); - ECORE_ATOM(atom_xdndactionask, "XdndActionAsk"); - ECORE_ATOM(atom_xdndactionlist, "XdndActionList"); - data = ecore_dnd_selection_get(xevent->xany.window, e->source_win, - xevent->xselection.property, &size); - if (data) - { - char *s, *buf; - int i, is; - Atom *method = NULL; - - method = ecore_window_property_get(e->source_win, - atom_xdndactionlist, XA_ATOM, &is); - if (method) - { - e->copy = 0; - e->link = 0; - e->move = 0; - if (*method == atom_xdndactioncopy) - e->copy = 1; - else if (*method == atom_xdndactionmove) - e->move = 1; - else if (*method == atom_xdndactionlink) - e->link = 1; - FREE(method); - } - else - { - e->copy = 0; - e->link = 0; - e->move = 0; - } - s = data; - buf = NEW(char, size); - - i = 0; - is = 0; - e->files = NULL; - while ((s[is]) && (is < size)) - { - if ((i == 0) && (s[is] == '#')) - { - for (; ((s[is] != 0) && (s[is] != '\n')); is++); - } - else - { - if (s[is] != '\r') - { - buf[i++] = s[is]; - } - else - { - buf[i] = 0; - e->num_files++; - REALLOC_PTR(e->files, e->num_files); - e->files[e->num_files - 1] = strdup(buf); - buf[0] = 0; - i = 0; - is++; - } - is++; - } - } - if (i > 0) - { - buf[i] = 0; - e->num_files++; - REALLOC_PTR(e->files, e->num_files); - e->files[e->num_files - 1] = strdup(buf); - } - FREE(buf); - FREE(data); - } - ecore_add_event(ECORE_EVENT_DND_DROP_REQUEST, e, - ecore_event_dnd_drop_request_free); - ev_drop_request_pending = NULL; -} - -static void -ecore_event_x_handle_selection_clear(XEvent * xevent) -{ - Ecore_Event_Clear_Selection *e; - - e = NEW(Ecore_Event_Clear_Selection, 1); - e->win = xevent->xselectionclear.window; - e->root = ecore_window_get_root(e->win); - e->selection = xevent->xselectionclear.selection; - ecore_add_event(ECORE_EVENT_CLEAR_SELECTION, e, ecore_event_generic_free); -} - -static void -ecore_event_x_handle_selection_request(XEvent * xevent) -{ - static Atom atom_xdndselection = 0; - static Atom atom_text_plain = 0; - static Atom atom_text_uri_list = 0; - static Atom atom_text_moz_url = 0; - static Atom atom_netscape_url = 0; - static Atom atom_text_selection = 0; - Ecore_Event_Dnd_Data_Request *e; - - ECORE_ATOM(atom_xdndselection, "XdndSelection"); - ECORE_ATOM(atom_text_plain, "text/plain"); - ECORE_ATOM(atom_text_uri_list, "text/uri-list"); - ECORE_ATOM(atom_text_moz_url, "text/x-moz-url"); - ECORE_ATOM(atom_netscape_url, "_NETSCAPE_URL"); - ECORE_ATOM(atom_text_selection, "TEXT_SELECTION"); - if (xevent->xselectionrequest.selection == atom_xdndselection) - { - e = NEW(Ecore_Event_Dnd_Data_Request, 1); - e->win = xevent->xselectionrequest.owner; - e->root = ecore_window_get_root(e->win); - e->source_win = xevent->xselectionrequest.requestor; - e->plain_text =0; - e->uri_list = 0; - e->moz_url = 0; - e->netscape_url = 0; - - if (xevent->xselectionrequest.target == atom_text_plain) e->plain_text = 1; - if (xevent->xselectionrequest.target == atom_text_uri_list) e->uri_list = 1; - if (xevent->xselectionrequest.target == atom_text_moz_url) e->moz_url = 1; - if (xevent->xselectionrequest.target == atom_netscape_url) e->netscape_url = 1; - e->destination_atom = xevent->xselectionrequest.property; - ecore_add_event(ECORE_EVENT_DND_DATA_REQUEST, e, - ecore_event_generic_free); - } - else - { - XEvent ev; - Atom target_list[2]; - static Atom xa_targets = None; - - if (xa_targets == None) - xa_targets = XInternAtom(xevent->xselectionrequest.display, - "TARGETS", False); - ev.xselection.type = SelectionNotify; - ev.xselection.property = None; - ev.xselection.display = xevent->xselectionrequest.display; - ev.xselection.requestor = xevent->xselectionrequest.requestor; - ev.xselection.selection = xevent->xselectionrequest.selection; - ev.xselection.target = xevent->xselectionrequest.target; - ev.xselection.time = xevent->xselectionrequest.time; - if (xevent->xselectionrequest.target == xa_targets) - { - target_list[0] = (Atom) xa_targets; - target_list[1] = (Atom) XA_STRING; - XChangeProperty(xevent->xselectionrequest.display, - xevent->xselectionrequest.requestor, - xevent->xselectionrequest.property, - xevent->xselectionrequest.target, - (8 * sizeof(target_list[0])), - PropModeReplace, - (unsigned char *)target_list, - (sizeof(target_list) / sizeof(target_list[0]))); - ev.xselection.property = xevent->xselectionrequest.property; - } - else if (xevent->xselectionrequest.target == XA_STRING) - { - void *data; - int size; - - data = ecore_window_property_get(xevent->xselectionrequest.owner, - atom_text_selection, XA_STRING, - &size); - if (data) - { - XChangeProperty(xevent->xselectionrequest.display, - xevent->xselectionrequest.requestor, - xevent->xselectionrequest.property, - xevent->xselectionrequest.target, - 8, PropModeReplace, data, size); - FREE(data); - } - ev.xselection.property = xevent->xselectionrequest.property; - } - XSendEvent(xevent->xselectionrequest.display, - xevent->xselectionrequest.requestor, False, 0, &ev); - } -} - -static void -ecore_event_x_handle_client_message(XEvent * xevent) -{ - static Atom atom_wm_delete_window = 0; - static Atom atom_wm_protocols = 0; - static Atom atom_xdndstatus = 0; - static Atom atom_xdndenter = 0; - static Atom atom_xdndleave = 0; - static Atom atom_xdndfinished = 0; - static Atom atom_xdndposition = 0; - static Atom atom_xdnddrop = 0; - static Atom atom_text_uri_list = 0; - static Atom atom_xdndactioncopy = 0; - static Atom atom_xdndactionlink = 0; - static Atom atom_xdndactionmove = 0; - static Atom atom_xdndactionprivate = 0; - - /* setup some known atoms to translate this message into a sensible event */ - ECORE_ATOM(atom_wm_delete_window, "WM_DELETE_WINDOW"); - ECORE_ATOM(atom_wm_protocols, "WM_PROTOCOLS"); - ECORE_ATOM(atom_xdndstatus, "XdndStatus"); - ECORE_ATOM(atom_xdndfinished, "XdndFinished"); - ECORE_ATOM(atom_xdndenter, "XdndEnter"); - ECORE_ATOM(atom_xdndleave, "XdndLeave"); - ECORE_ATOM(atom_xdnddrop, "XdndDrop"); - ECORE_ATOM(atom_xdndposition, "XdndPosition"); - ECORE_ATOM(atom_xdndactioncopy, "XdndActionCopy"); - ECORE_ATOM(atom_xdndactionlink, "XdndActionLink"); - ECORE_ATOM(atom_xdndactionmove, "XdndActionMove"); - ECORE_ATOM(atom_xdndactionprivate, "XdndActionPrivate"); - ECORE_ATOM(atom_text_uri_list, "text/uri-list"); - - /* first type = delete event sent to client */ - if ((xevent->xclient.message_type == atom_wm_protocols) && - (xevent->xclient.format == 32) && - (xevent->xclient.data.l[0] == (long)atom_wm_delete_window)) - { - Ecore_Event_Window_Delete *e; - - e = NEW(Ecore_Event_Window_Delete, 1); - e->win = xevent->xclient.window; - e->root = ecore_window_get_root(e->win); - ecore_add_event(ECORE_EVENT_WINDOW_DELETE, e, ecore_event_generic_free); - } - else if ((xevent->xclient.message_type == atom_xdndenter) && - (xevent->xclient.format == 32)) - { -/* if ((xevent->xclient.data.l[2] == (long)atom_text_uri_list) || - * (xevent->xclient.data.l[3] == (long)atom_text_uri_list) || - * (xevent->xclient.data.l[4] == (long)atom_text_uri_list)) - */ { - Ecore_Event_Dnd_Drop_Request *e; - - - if (ev_drop_request_pending) - { - ecore_event_dnd_drop_request_free(ev_drop_request_pending); - ev_drop_request_pending = NULL; - } - e = NEW(Ecore_Event_Dnd_Drop_Request, 1); - e->win = xevent->xclient.window; - e->root = ecore_window_get_root(e->win); - e->source_win = (Window) xevent->xclient.data.l[0]; - if (!ecore_dnd_selection_convert - (e->source_win, e->win, atom_text_uri_list)) - { - FREE(e); - return; - } - e->files = NULL; - e->num_files = 0; - ev_drop_request_pending = e; - } - } - else if ((xevent->xclient.message_type == atom_xdndleave) && - (xevent->xclient.format == 32)) - { - Ecore_Event_Dnd_Drop_End *e; - - e = NEW(Ecore_Event_Dnd_Drop_End, 1); - e->win = xevent->xclient.window; - e->root = ecore_window_get_root(e->win); - e->source_win = (Window) xevent->xclient.data.l[0]; - ecore_add_event(ECORE_EVENT_DND_DROP_END, e, ecore_event_generic_free); - } - else if ((xevent->xclient.message_type == atom_xdndposition) && - (xevent->xclient.format == 32)) - { - Ecore_Event_Dnd_Drop_Position *e; - - e = NEW(Ecore_Event_Dnd_Drop_Position, 1); - e->win = xevent->xclient.window; - e->root = ecore_window_get_root(e->win); - e->source_win = (Window) xevent->xclient.data.l[0]; - e->x = (xevent->xclient.data.l[2] >> 16) & 0xffff; - e->y = xevent->xclient.data.l[2] & 0xffff; - ecore_add_event(ECORE_EVENT_DND_DROP_POSITION, e, - ecore_event_generic_free); - } - else if ((xevent->xclient.message_type == atom_xdndstatus) && - (xevent->xclient.format == 32)) - { - Ecore_Event_Dnd_Drop_Status *e; - - ecore_clear_target_status(); - e = NEW(Ecore_Event_Dnd_Drop_Status, 1); - e->win = xevent->xclient.window; - e->root = ecore_window_get_root(e->win); - e->source_win = (Window) xevent->xclient.data.l[0]; - e->x = (xevent->xclient.data.l[2] >> 16) & 0xffff; - e->y = xevent->xclient.data.l[2] & 0xffff; - e->w = (xevent->xclient.data.l[3] >> 16) & 0xffff; - e->h = xevent->xclient.data.l[3] & 0xffff; - - e->copy = e->link = e->move = e->e_private = 0; - if( xevent->xclient.data.l[4] == atom_xdndactioncopy ) - e->copy = 1; - else if( xevent->xclient.data.l[4] == atom_xdndactionlink ) - e->link = 1; - else if( xevent->xclient.data.l[4] == atom_xdndactionmove ) - e->move = 1; - else if( xevent->xclient.data.l[4] == atom_xdndactionprivate ) - e->e_private = 1; - - if (xevent->xclient.data.l[1] & 0x1) - e->ok = 1; - else - e->ok = 0; - if (xevent->xclient.data.l[1] & 0x2) - e->all_position_msgs = 1; - else - e->all_position_msgs = 0; - ecore_add_event(ECORE_EVENT_DND_DROP_STATUS, e, ecore_event_generic_free); - } - else if ((xevent->xclient.message_type == atom_xdndfinished) && - (xevent->xclient.format == 32)) - { - Ecore_Event_Dnd_Drop_End *e; - - e = NEW(Ecore_Event_Dnd_Drop_End, 1); - e->win = xevent->xclient.window; - e->root = ecore_window_get_root(e->win); - e->source_win = (Window) xevent->xclient.data.l[0]; - ecore_add_event(ECORE_EVENT_DND_DROP_END, e, ecore_event_generic_free); - } - else if ((xevent->xclient.message_type == atom_xdnddrop) && - (xevent->xclient.format == 32)) - { - Ecore_Event_Dnd_Drop *e; - - e = NEW(Ecore_Event_Dnd_Drop, 1); - e->win = xevent->xclient.window; - e->root = ecore_window_get_root(e->win); - e->source_win = (Window) xevent->xclient.data.l[0]; - ecore_add_event(ECORE_EVENT_DND_DROP, e, ecore_event_generic_free); - } - else - { - Ecore_Event_Message *e; - - e = NEW(Ecore_Event_Message, 1); - e->win = xevent->xclient.window; - e->format = xevent->xclient.format; - e->atom = xevent->xclient.message_type; - MEMCPY(xevent->xclient.data.b, e->data.b, char, 20); - - ecore_add_event(ECORE_EVENT_MESSAGE, e, ecore_event_generic_free); - } -} - -static void -ecore_event_x_handle_shape_change(XEvent * xevent) -{ - Ecore_Event_Window_Shape *e; - XShapeEvent *shape_event; - - shape_event = (XShapeEvent *) xevent; - e = NEW(Ecore_Event_Window_Shape, 1); - e->win = shape_event->window; - e->root = ecore_window_get_root(e->win); - e->time = shape_event->time; - ecore_add_event(ECORE_EVENT_WINDOW_SHAPE, e, ecore_event_generic_free); -} - -char * -ecore_keypress_translate_into_typeable(Ecore_Event_Key_Down * e) -{ - /* exceptions */ - if ((!strcmp(e->key, "Delete")) || - (!strcmp(e->key, "BackSpace")) || - (!strcmp(e->key, "Tab")) || - (!strcmp(e->key, "Escape")) || - (!strcmp(e->key, "Return")) || - (!strcmp(e->key, "KP_Enter")) || - (!strcmp(e->key, "Enter")) || - (!strcmp(e->key, "KP_Divide")) || - (!strcmp(e->key, "KP_Multiply")) || - (!strcmp(e->key, "KP_Subtract")) || - (!strcmp(e->key, "KP_Add")) || (!strcmp(e->key, "Enter"))) - return NULL; - return e->compose; -} diff --git a/legacy/ecore/src/e_events.c b/legacy/ecore/src/e_events.c deleted file mode 100644 index 0a8f442e5e..0000000000 --- a/legacy/ecore/src/e_events.c +++ /dev/null @@ -1,430 +0,0 @@ -#include "Ecore.h" -#include -#include -#include -#include -#include - -/* glocal (yes global/local) variabels for events */ -Ecore_Event_Fd_Handler *fd_handlers = NULL; -Ecore_Event_Ipc_Handler *ipc_handlers = NULL; -Ecore_Event_Pid_Handler *pid_handlers = NULL; -Ecore_Event_Timer *timers = NULL; - -Ecore_Event *events = NULL; -Ecore_Event *last_event = NULL; - -int __quit_ev_loop = 0; - -/* local functions for event handling */ -static void ecore_handle_event_timer(void); -static void ecore_handle_zero_event_timer(void); - -/* public functions */ - -/* add an event to the end of the event queue */ -void -ecore_add_event(Ecore_Event_Type type, void *event, - void (*ev_free) (void *event)) -{ - Ecore_Event *ev; - - ev = NEW(Ecore_Event, 1); - ev->type = type; - ev->ignore = 0; - ev->event = event; - ev->next = NULL; - ev->ev_free = ev_free; - if (!events) - events = ev; - else - last_event->next = ev; - last_event = ev; -} - -/* delete an event from the event queue */ -void -ecore_del_event(void *event) -{ - Ecore_Event *ev, *pev; - - pev = NULL; - ev = events; - while (ev) - { - if (ev->event == event) - { - if (pev) - pev->next = ev->next; - else - events = ev->next; - if (!ev->next) - last_event = pev; - if ((ev->event) && (ev->ev_free)) - (*ev->ev_free) (ev->event); - FREE(ev); - return; - } - pev = ev; - ev = ev->next; - } -} - -void -ecore_del_all_events(void) -{ - Ecore_Event *ev, *pev; - - ev = events; - while (ev) - { - pev = ev; - ev = ev->next; - if ((pev->event) && (pev->ev_free)) - pev->ev_free(pev->event); - FREE(pev); - } - events = NULL; - last_event = NULL; -} - -Ecore_Event * -ecore_get_last_event(void) -{ - return last_event; -} - -/* add a callback handler if fd is active for reading */ -void -ecore_add_event_fd(int fd, void (*func) (int fd)) -{ - Ecore_Event_Fd_Handler *fd_h; - - /* new handler struct */ - fd_h = NEW(Ecore_Event_Fd_Handler, 1); - fd_h->next = fd_handlers; - fd_h->fd = fd; - fd_h->func = func; - fd_handlers = fd_h; -} - -/* delete handler for fd */ -void -ecore_del_event_fd(int fd) -{ - START_LIST_DEL(Ecore_Event_Fd_Handler, fd_handlers, (_p->fd == fd)); - FREE(_p); - END_LIST_DEL; -} - -void -ecore_add_event_pid(pid_t pid, void (*func) (pid_t pid)) -{ - Ecore_Event_Pid_Handler *pid_h; - - /* delete the old handler */ - ecore_del_event_pid(pid); - /* new handler struct */ - pid_h = NEW(Ecore_Event_Pid_Handler, 1); - pid_h->next = pid_handlers; - pid_h->pid = pid; - pid_h->func = func; - pid_handlers = pid_h; -} - -void -ecore_del_event_pid(pid_t pid) -{ - START_LIST_DEL(Ecore_Event_Pid_Handler, pid_handlers, (_p->pid == pid)); - FREE(_p); - END_LIST_DEL; -} - -void -ecore_add_event_ipc(int ipc, void (*func) (int ipc)) -{ - Ecore_Event_Ipc_Handler *ipc_h; - - /* delete the old handler */ - ecore_del_event_ipc(ipc); - /* new handler struct */ - ipc_h = NEW(Ecore_Event_Ipc_Handler, 1); - ipc_h->next = ipc_handlers; - ipc_h->ipc = ipc; - ipc_h->func = func; - ipc_handlers = ipc_h; -} - -void -ecore_del_event_ipc(int ipc) -{ - START_LIST_DEL(Ecore_Event_Ipc_Handler, ipc_handlers, (_p->ipc == ipc)); - FREE(_p); - END_LIST_DEL; -} - -/* sit in this loop forever and process events */ -void -ecore_event_loop(void) -{ - int fdcount, fdsize, ipccount, ipcsize; - int timed_out, were_events; - double time1, time2, prev_time = 0.0; - struct timeval tval; - fd_set fdset, ipcset; - Ecore_Event_Fd_Handler *fd_h; - Ecore_Event_Pid_Handler *pid_h; - Ecore_Event_Ipc_Handler *ipc_h; - - /* init some of the time variables */ - time1 = ecore_get_time(); - time2 = time1 - prev_time; - prev_time = time1; - while (__quit_ev_loop == 0) - { - /* state setup */ - timed_out = 0; - were_events = 0; - - /* setup fd array from list of listening fd's */ - fdsize = 0; - FD_ZERO(&fdset); - /* for ever fd handler add the fd to the array and incriment fdsize */ - for (fd_h = fd_handlers; fd_h; fd_h = fd_h->next) - { - FD_SET(fd_h->fd, &fdset); - if (fd_h->fd > fdsize) - fdsize = fd_h->fd; - } - fdcount = 1; - ipcsize = 0; - FD_ZERO(&ipcset); - /* for ever fd handler add the fd to the array and incriment fdsize */ - for (ipc_h = ipc_handlers; ipc_h; ipc_h = ipc_h->next) - { - FD_SET(ipc_h->ipc, &ipcset); - if (ipc_h->ipc > ipcsize) - ipcsize = ipc_h->ipc; - } - ipccount = 1; - /* if there are timers setup adjust timeout value and select */ - if (timers) - { - if (timers->just_added) - { - timers->just_added = 0; - time1 = timers->in; - } - else - { - time1 = timers->in - time2; - if (time1 < 0.0) - time1 = 0.0; - timers->in = time1; - } - tval.tv_sec = (long)time1; - tval.tv_usec = (long)((time1 - ((double)tval.tv_sec)) * 1000000); - if (tval.tv_sec < 0) - tval.tv_sec = 0; - if (tval.tv_usec <= 1000) - tval.tv_usec = 1000; - ecore_handle_zero_event_timer(); - if ((!ecore_events_pending()) && (!ecore_event_signal_events_pending())) - fdcount = select(fdsize + 1, &fdset, NULL, NULL, &tval); - } - /* no timers - just sit and block */ - else - { - if ((!ecore_events_pending()) && (!ecore_event_signal_events_pending())) - fdcount = select(fdsize + 1, &fdset, NULL, NULL, NULL); - } - for (pid_h = pid_handlers; pid_h; pid_h = pid_h->next) - pid_h->func(pid_h->pid); - - /* see if we have any new ipc connections */ - tval.tv_sec = 0; - tval.tv_usec = 0; - ipccount += select(ipcsize + 1, &ipcset, NULL, NULL, &tval); - - /* return < 0 - error or signal interrupt */ - if (fdcount < 0) - { - /* error */ - if ((errno == ENOMEM) || (errno == EINVAL) || (errno == EBADF)) - { - fprintf(stderr, "Lost connection to X display.\n"); - exit(1); - } - } - /* timers are available and its a timeout */ - if ((timers) && (fdcount == 0)) - { - ecore_handle_event_timer(); - timed_out = 1; - } - if (fdcount < 0) - fdcount = 0; - if (ecore_events_pending()) - { - fdcount++; - FD_SET(ecore_x_get_fd(), &fdset); - } - /* fd's are active */ - if (fdcount > 0) - { - /* for every fd handler - if its fd is set - call the func */ - for (fd_h = fd_handlers; fd_h;) - { - Ecore_Event_Fd_Handler *fdh; - - fdh = fd_h; - fd_h = fd_h->next; - if (FD_ISSET(fdh->fd, &fdset)) - fdh->func(fdh->fd); - } - } - - /* ipc clients are active */ - if (ipccount > 0) - { - for (ipc_h = ipc_handlers; ipc_h;) - { - Ecore_Event_Ipc_Handler *ipch; - - ipch = ipc_h; - ipc_h = ipc_h->next; - if (FD_ISSET(ipch->ipc, &ipcset)) - ipch->func(ipch->ipc); - } - } - if (events) - ecore_event_filter(events); - if (events) - { - ecore_event_filter_events_handle(events); - were_events = 1; - } - ecore_del_all_events(); - if ((timed_out) || (were_events)) - ecore_event_filter_idle_handle(); - ecore_flush(); - time1 = ecore_get_time(); - time2 = time1 - prev_time; - prev_time = time1; - } - __quit_ev_loop = 0; -} - -/* set a flag to 0 so that we can quit the event loop and shutdown - * properly */ -void -ecore_event_loop_quit(void) -{ - __quit_ev_loop = 1; -} - -/* add a timeout funcitont o be called in "in" seconds with name name */ -void -ecore_add_event_timer(char *name, double in, void (*func) (int val, void *data), - int val, void *data) -{ - Ecore_Event_Timer *timer, *ptr, *pptr; - double tally; - - if (name) - ecore_del_event_timer(name); - timer = NEW(Ecore_Event_Timer, 1); - timer->next = NULL; - timer->func = func; - timer->data = data; - timer->val = val; - timer->just_added = 1; - timer->in = in; - timer->name = strdup(name); - if (!timers) - timers = timer; - else - { - pptr = NULL; - ptr = timers; - tally = 0.0; - while (ptr) - { - tally += ptr->in; - if (tally > in) - { - tally -= ptr->in; - timer->next = ptr; - if (pptr) - pptr->next = timer; - else - timers = timer; - timer->in -= tally; - if (timer->next) - timer->next->in -= timer->in; - return; - } - pptr = ptr; - ptr = ptr->next; - } - if (pptr) - pptr->next = timer; - else - timers = timer; - timer->in -= tally; - } -} - -/* delete a timer timeout entry named "name" */ -void * -ecore_del_event_timer(char *name) -{ - Ecore_Event_Timer *timer, *ptr, *pptr; - - pptr = NULL; - ptr = timers; - while (ptr) - { - timer = ptr; - if (!strcmp(timer->name, name)) - { - void *data; - - if (pptr) - pptr->next = timer->next; - else - timers = timer->next; - if (timer->next) - timer->next->in += timer->in; - IF_FREE(timer->name); - data = timer->data; - FREE(timer); - return data; - } - pptr = ptr; - ptr = ptr->next; - } - return NULL; -} - -/* private functions */ -static void -ecore_handle_event_timer(void) -{ - Ecore_Event_Timer *timer; - - if (!timers) - return; - timer = timers; - timers = timer->next; - (*(timer->func)) (timer->val, timer->data); - IF_FREE(timer->name); - FREE(timer); -} - -static void -ecore_handle_zero_event_timer(void) -{ - while ((timers) && (timers->in == 0.0)) - ecore_handle_event_timer(); -} diff --git a/legacy/ecore/src/e_ipc.c b/legacy/ecore/src/e_ipc.c deleted file mode 100644 index 2a6de2b4ab..0000000000 --- a/legacy/ecore/src/e_ipc.c +++ /dev/null @@ -1,187 +0,0 @@ -#include "Ecore.h" -#include -#include -#include -#include -#include - -void ecore_ipc_init(char *path); -void ecore_ipc_cleanup(void); -static void ecore_ipc_connect_handler(int fd); -static void ecore_ipc_client_handler(int fd); -void ecore_ipc_get_data(int fd, void *buf); -void ecore_ipc_send_data(int fd, void *buf, int size); -void ecore_add_ipc_service(int service, void (*func) (int fd)); -void ecore_del_ipc_service(int service); - -Ecore_Event_Ipc_Service *ipc_services = NULL; - -void -ecore_ev_ipc_init(char *path) -{ - int fd, len; - struct sockaddr_un saun; - - if (path == NULL) - return; - - /* a UNIX domain, stream socket */ - if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) - { - printf("Cannot create ipc socket... disabling ipc.\n"); - return; - } - - /* create the address we will be binding to */ - saun.sun_family = AF_UNIX; - strcpy(saun.sun_path, path); - - /* unlink the address so the bind won't fail */ - unlink(path); - len = sizeof(saun.sun_family) + strlen(saun.sun_path); - - if (bind(fd, (struct sockaddr *)&saun, len) < 0) - { - printf("Cannot bind ipc socket... disabling ipc.\n"); - return; - } - - /* listen on the socket */ - if (listen(fd, 5) < 0) - { - printf("Cannot listen on ipc socket... disabling ipc.\n"); - return; - } - - /* add ipc listener */ - ecore_add_event_ipc(fd, ecore_ipc_connect_handler); -} - -void -ecore_ev_ipc_cleanup(void) -{ - Ecore_Event_Ipc_Service *ipc_s; - - /* cleanup services list */ - for (ipc_s = ipc_services; ipc_s; ipc_s = ipc_s->next) - { - ecore_del_ipc_service(ipc_s->service); - } -} - -static void -ecore_ipc_connect_handler(int fd) -{ - struct sockaddr_un fsaun; - int fromlen, nfd; - - /* accept ipc connection */ - fromlen = sizeof(fsaun); - - if ((nfd = accept(fd, (struct sockaddr *)&fsaun, &fromlen)) < 0) - { - printf("Cannot accept ipc connection... ignoring connection attempt.\n"); - return; - } - - /* add ipc client */ - ecore_add_event_ipc(nfd, ecore_ipc_client_handler); -} - -static void -ecore_ipc_client_handler(int fd) -{ - int nread, service; - Ecore_Event_Ipc_Service *ipc_s; - - if ((nread = read(fd, &service, sizeof(service))) == 0) - { - close(fd); - ecore_del_event_ipc(fd); - } - else if (nread > 0) - { - /* call the service function */ - for (ipc_s = ipc_services; ipc_s; ipc_s = ipc_s->next) - { - if (ipc_s->service == service) - { - ipc_s->func(fd); - break; - } - } - } - else - { - printf("ipc error in read service.\n"); - fflush(stdout); - } -} - -void -ecore_ipc_get_data(int fd, void *buf) -{ - int readn, nread; - - /* read number of bytes being sent */ - if ((nread = read(fd, &readn, sizeof(readn))) == -1) - { - printf("ipc error in get data.\n"); - fflush(stdout); - return; - } - - /* get data structure */ - if ((nread = read(fd, buf, readn)) == -1) - { - printf("ipc error in get data.\n"); - fflush(stdout); - return; - } -} - -void -ecore_ipc_send_data(int fd, void *buf, int size) -{ - int n; - - /* send length of data being sent */ - if ((n = write(fd, &size, sizeof(size))) == -1) - { - printf("ipc error in send data length.\n"); - fflush(stdout); - return; - } - - /* send data */ - if ((n = write(fd, buf, size)) == -1) - { - printf("ipc error in send data.\n"); - fflush(stdout); - return; - } -} - -void -ecore_add_ipc_service(int service, void (*func) (int fd)) -{ - Ecore_Event_Ipc_Service *ipc_s; - - /* delete the old service */ - ecore_del_ipc_service(service); - /* new service struct */ - ipc_s = NEW(Ecore_Event_Ipc_Service, 1); - ipc_s->next = ipc_services; - ipc_s->service = service; - ipc_s->func = func; - ipc_services = ipc_s; -} - -void -ecore_del_ipc_service(int service) -{ - START_LIST_DEL(Ecore_Event_Ipc_Service, ipc_services, - (_p->service == service)); - FREE(_p); - END_LIST_DEL; -} diff --git a/legacy/ecore/src/e_util.c b/legacy/ecore/src/e_util.c deleted file mode 100644 index fc4a2ae0cb..0000000000 --- a/legacy/ecore/src/e_util.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "Ecore.h" - -double -ecore_get_time(void) -{ - struct timeval timev; - - gettimeofday(&timev, NULL); - return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); -} diff --git a/legacy/ecore/src/e_x.c b/legacy/ecore/src/e_x.c deleted file mode 100644 index b3d8069c2c..0000000000 --- a/legacy/ecore/src/e_x.c +++ /dev/null @@ -1,3610 +0,0 @@ -#include "Ecore.h" -#include -#include -#include -#include - -#ifdef XA_CLIPBOARD -#define X_CLIPBOARD_SELECTION XA_CLIPBOARD(disp) -#define X_CLIPBOARD_PROP XA_CLIPBOARD(disp) -#else -#define X_CLIPBOARD_SELECTION XA_PRIMARY -#define X_CLIPBOARD_PROP XA_CUT_BUFFER0 -#endif - -typedef struct _window_list Window_List; - -struct _window_list -{ - Window win; - Window_List *next; -}; - -XContext xid_context = 0; - -static Display *disp; -static Visual *default_vis; -static Colormap default_cm; -static int default_depth; -static Window default_win; -static Window default_root; - -static int lock_scroll = 0; -static int lock_num = 0; -static int lock_caps = 0; - -static Window focused_win = 0; - -static int mod_shift = 0; -static int mod_ctrl = 0; -static int mod_alt = 0; -static int mod_win = 0; - -static Window grabkey_win = 0; - -static int mouse_x = 0, mouse_y = 0; - -static Window current_dnd_win = 0; -static int current_dnd_target_ok = 0; -static int dnd_await_target_status = 0; - -static int x_grabs = 0; - -static Window_List *ignore_wins = NULL; - -static Window grab_pointer_win = 0; - -static Window keyboard_grab_win = 0; - -static int dnd_copy = 0; -static int dnd_link = 0; -static int dnd_move = 1; - -static void ecore_handle_x_error(Display * d, XErrorEvent * ev); -static void ecore_handle_x_io_error(Display * d); -static Window ecore_window_at_xy_0(Window base, int bx, int by, int x, - int y); - -static void -ecore_handle_x_error(Display * d, XErrorEvent * ev) -{ -/* - char err[16384]; - - XGetErrorText(d, ev->error_code, err, 16000); - printf("X Error:\n" - "Error: %s\nrequest: %i\nminor: %i\n", err, ev->request_code, ev->minor_code); - */ - /* ignore all X errors */ - return; - d = NULL; - ev = NULL; -} - -static void -ecore_handle_x_io_error(Display * d) -{ - /* FIXME: call clean exit handler */ - exit(1); - d = NULL; -} - -void -ecore_del_child(Window win, Window child) -{ - Ecore_XID *xid = NULL; - - if (!disp) - return; - if (XFindContext(disp, win, xid_context, (XPointer *) & xid) == XCNOENT) - return; - if (xid) - { - int i; - - for (i = 0; i < xid->children_num; i++) - { - if (xid->children[i] == child) - { - int j; - - for (j = i; j < xid->children_num - 1; j++) - xid->children[j] = xid->children[j + 1]; - xid->children_num--; - REALLOC(xid->children, Window, xid->children_num); - return; - } - } - } -} - -void -ecore_add_child(Window win, Window child) -{ - Ecore_XID *xid = NULL; - - if (!disp) - return; - if (XFindContext(disp, win, xid_context, (XPointer *) & xid) == XCNOENT) - return; - if (xid) - { - int i; - - for (i = 0; i < xid->children_num; i++) - { - if (xid->children[i] == child) - return; - } - xid->children_num++; - REALLOC(xid->children, Window, xid->children_num); - xid->children[xid->children_num - 1] = child; - } - xid = ecore_validate_xid(child); -} - -void -ecore_raise_child(Window win, Window child) -{ - Ecore_XID *xid = NULL; - - if (!disp) - return; - if (XFindContext(disp, win, xid_context, (XPointer *) & xid) == XCNOENT) - return; - if (xid) - { - int i; - - for (i = 0; i < xid->children_num; i++) - { - if (xid->children[i] == child) - { - int j; - - for (j = i; j < xid->children_num - 1; j++) - xid->children[j] = xid->children[j + 1]; - xid->children[xid->children_num - 1] = child; - return; - } - } - } -} - -void -ecore_lower_child(Window win, Window child) -{ - Ecore_XID *xid = NULL; - - if (!disp) - return; - if (XFindContext(disp, win, xid_context, (XPointer *) & xid) == XCNOENT) - return; - if (xid) - { - int i; - - for (i = 0; i < xid->children_num; i++) - { - if (xid->children[i] == child) - { - int j; - - for (j = i; j > 0; j--) - xid->children[j] = xid->children[j - 1]; - xid->children[0] = child; - return; - } - } - } -} - -Ecore_XID * -ecore_add_xid(Window win, int x, int y, int w, int h, int depth, Window parent) -{ - Ecore_XID *xid = NULL; - - ecore_window_add_events(win, XEV_IN_OUT | XEV_CONFIGURE | XEV_VISIBILITY); - xid = NEW(Ecore_XID, 1); - xid->win = win; - xid->x = x; - xid->y = y; - xid->w = w; - xid->h = h; - xid->mapped = 0; - xid->depth = depth; - xid->mouse_in = 0; - xid->parent = parent; - xid->root = ecore_window_get_root(parent); - xid->children_num = 0; - xid->children = NULL; - xid->gravity = ecore_window_get_gravity(win); - xid->coords_invalid = 0; - xid->bw = 0; - xid->grab_button_auto_replay = NULL; - XSaveContext(disp, xid->win, xid_context, (XPointer) xid); - ecore_add_child(parent, win); - return xid; -} - -Ecore_XID * -ecore_validate_xid(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) - return NULL; - if (XFindContext(disp, win, xid_context, (XPointer *) & xid) == XCNOENT) - { - XWindowAttributes att; - Window root_ret = 0, parent_ret = 0, *children_ret = NULL; - unsigned int children_ret_num = 0; - - ecore_window_add_events(win, XEV_IN_OUT | XEV_CONFIGURE | - XEV_VISIBILITY | XEV_CHILD_CHANGE); - xid = NEW(Ecore_XID, 1); - xid->win = win; - if (!XGetWindowAttributes(disp, win, &att)) - { - FREE(xid); - return NULL; - } - if (!XQueryTree(disp, win, &root_ret, &parent_ret, &children_ret, - &children_ret_num)) - { - FREE(xid); - return NULL; - } - xid->parent = parent_ret; - if (xid->parent) - ecore_validate_xid(xid->parent); - if (children_ret) - { - xid->children_num = children_ret_num; - xid->children = NEW(Window, children_ret_num); - MEMCPY(children_ret, xid->children, Window, children_ret_num); - XFree(children_ret); - } - else - { - xid->children_num = 0; - xid->children = NULL; - } - xid->root = root_ret; - xid->x = att.x; - xid->y = att.y; - xid->w = att.width; - xid->h = att.height; - if (att.map_state == IsUnmapped) - xid->mapped = 0; - else - xid->mapped = 1; - xid->depth = att.depth; - xid->mouse_in = 0; - xid->gravity = att.win_gravity; - xid->bw = att.border_width; - xid->coords_invalid = 0; - xid->grab_button_auto_replay = NULL; - XSaveContext(disp, xid->win, xid_context, (XPointer) xid); - ecore_add_child(xid->parent, win); - } - return xid; -} - -void -ecore_unvalidate_xid(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) - return; - if (XFindContext(disp, win, xid_context, (XPointer *) & xid) == XCNOENT) - return; - if (xid) - { - int i; - - for (i = 0; i < xid->children_num; i++) - ecore_unvalidate_xid(xid->children[i]); - ecore_del_child(xid->parent, win); - IF_FREE(xid->children); - FREE(xid); - XDeleteContext(disp, win, xid_context); - } -} - -void -ecore_sync(void) -{ - if (!disp) - return; - - XSync(disp, False); -} - -void -ecore_flush(void) -{ - if (!disp) - return; - XFlush(disp); -} - -Window -ecore_window_new(Window parent, int x, int y, int w, int h) -{ - Window win; - XSetWindowAttributes attr; - - if (!disp) - return 0; - if (!parent) - parent = default_root; - attr.backing_store = NotUseful; - attr.override_redirect = False; - attr.colormap = default_cm; - attr.border_pixel = 0; - attr.background_pixmap = None; - attr.save_under = False; - attr.do_not_propagate_mask = True; - win = XCreateWindow(disp, parent, - x, y, w, h, 0, - default_depth, InputOutput, default_vis, - CWOverrideRedirect | CWSaveUnder | CWBackingStore | - CWColormap | CWBackPixmap | CWBorderPixel | - CWDontPropagate, &attr); - ecore_add_xid(win, x, y, w, h, default_depth, parent); - ecore_add_child(parent, win); - ecore_validate_xid(parent); - return win; -} - -Window -ecore_window_override_new(Window parent, int x, int y, int w, int h) -{ - Window win; - XSetWindowAttributes attr; - - if (!disp) - return 0; - if (!parent) - parent = default_root; - attr.backing_store = NotUseful; - attr.override_redirect = True; - attr.colormap = default_cm; - attr.border_pixel = 0; - attr.background_pixmap = None; - attr.save_under = False; - attr.do_not_propagate_mask = True; - win = XCreateWindow(disp, parent, - x, y, w, h, 0, - default_depth, InputOutput, default_vis, - CWOverrideRedirect | CWSaveUnder | CWBackingStore | - CWColormap | CWBackPixmap | CWBorderPixel | - CWDontPropagate, &attr); - ecore_add_xid(win, x, y, w, h, default_depth, parent); - ecore_add_child(parent, win); - ecore_validate_xid(parent); - return win; -} - -Window -ecore_window_input_new(Window parent, int x, int y, int w, int h) -{ - Window win; - XSetWindowAttributes attr; - - if (!disp) - return 0; - if (!parent) - parent = default_root; - attr.override_redirect = True; - attr.do_not_propagate_mask = True; - win = XCreateWindow(disp, parent, - x, y, w, h, 0, - 0, InputOnly, default_vis, - CWOverrideRedirect | CWDontPropagate, &attr); - ecore_add_xid(win, x, y, w, h, 0, parent); - ecore_add_child(parent, win); - ecore_validate_xid(parent); - return win; -} - -void -ecore_window_set_events_propagate(Window win, int propagate) -{ - XSetWindowAttributes attr; - - if (!disp) - return; - if (!win) - win = default_root; - if (!propagate) - attr.do_not_propagate_mask = True; - else - attr.do_not_propagate_mask = False; - XChangeWindowAttributes(disp, win, CWDontPropagate, &attr); -} - -void -ecore_window_show(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) - return; - xid = ecore_validate_xid(win); - if (xid) - { - if (xid->mapped) - return; - xid->mapped = 1; - XMapWindow(disp, win); - } -} - -void -ecore_window_hide(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) - return; - xid = ecore_validate_xid(win); - if (xid) - { - if (!xid->mapped) - return; - xid->mapped = 0; - XUnmapWindow(disp, win); - } -} - -Pixmap -ecore_pixmap_new(Window win, int w, int h, int dep) -{ - if (!disp) - return 0; - if (!win) - win = default_win; - if (dep == 0) - dep = default_depth; - return XCreatePixmap(disp, win, w, h, dep); -} - -void -ecore_pixmap_free(Pixmap pmap) -{ - if (!disp) - return; - if (!pmap) - return; - XFreePixmap(disp, pmap); -} - -void -ecore_window_set_background_pixmap(Window win, Pixmap pmap) -{ - if (!disp) - return; - if (win == 0) - win = default_root; - XSetWindowBackgroundPixmap(disp, win, pmap); -} - -void -ecore_window_set_shape_mask(Window win, Pixmap mask) -{ - if (!disp) - return; - XShapeCombineMask(disp, win, ShapeBounding, 0, 0, mask, ShapeSet); -} - -void -ecore_window_add_shape_mask(Window win, Pixmap mask) -{ - if (!disp) - return; - XShapeCombineMask(disp, win, ShapeBounding, 0, 0, mask, ShapeUnion); -} - -void -ecore_window_set_shape_window(Window win, Window src, int x, int y) -{ - if (!disp) - return; - XShapeCombineShape(disp, win, ShapeBounding, x, y, src, ShapeBounding, - ShapeSet); -} - -void -ecore_window_add_shape_window(Window win, Window src, int x, int y) -{ - if (!disp) - return; - XShapeCombineShape(disp, win, ShapeBounding, x, y, src, ShapeBounding, - ShapeUnion); -} - -void -ecore_window_set_shape_rectangle(Window win, int x, int y, int w, int h) -{ - XRectangle rect; - - if (!disp) - return; - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - XShapeCombineRectangles(disp, win, ShapeBounding, 0, 0, &rect, 1, ShapeSet, - Unsorted); -} - -void -ecore_window_add_shape_rectangle(Window win, int x, int y, int w, int h) -{ - XRectangle rect; - - if (!disp) - return; - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - XShapeCombineRectangles(disp, win, ShapeBounding, 0, 0, &rect, 1, ShapeUnion, - Unsorted); -} - -void -ecore_window_set_shape_rectangles(Window win, XRectangle * rect, int num) -{ - if (!disp) - return; - XShapeCombineRectangles(disp, win, ShapeBounding, 0, 0, rect, num, ShapeSet, - Unsorted); -} - -void -ecore_window_add_shape_rectangles(Window win, XRectangle * rect, int num) -{ - if (!disp) - return; - XShapeCombineRectangles(disp, win, ShapeBounding, 0, 0, rect, num, ShapeUnion, - Unsorted); -} - -void -ecore_window_clip_shape_by_rectangle(Window win, int x, int y, int w, int h) -{ - XRectangle rect; - - if (!disp) - return; - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - XShapeCombineRectangles(disp, win, ShapeBounding, 0, 0, &rect, 1, - ShapeIntersect, Unsorted); -} - -XRectangle * -ecore_window_get_shape_rectangles(Window win, int *num) -{ - int ord; - - if (!disp) - return NULL; - return XShapeGetRectangles(disp, win, ShapeBounding, num, &ord); -} - -void -ecore_window_select_shape_events(Window win) -{ - if (!disp) - return; - - XShapeSelectInput(disp, win, ShapeNotifyMask); -} - -void -ecore_window_unselect_shape_events(Window win) -{ - if (!disp) - return; - - XShapeSelectInput(disp, win, 0); -} - -void -ecore_window_clear(Window win) -{ - if (!disp) - return; - if (win == 0) - win = default_root; - XClearWindow(disp, win); -} - -void -ecore_window_clear_area(Window win, int x, int y, int w, int h) -{ - if (!disp) - return; - if (win == 0) - win = default_root; - XClearArea(disp, win, x, y, w, h, False); -} - -void -ecore_pointer_xy(Window win, int *x, int *y) -{ - Window dw; - unsigned int dm; - int wx, wy; - - if (!disp) - return; - - if (win == 0) - win = default_root; - - XQueryPointer(disp, win, &dw, &dw, &mouse_x, &mouse_y, &wx, &wy, &dm); - - if (x) - *x = wx; - if (y) - *y = wy; -} - -void -ecore_pointer_xy_set(int x, int y) -{ - if (!disp) return; - mouse_x = x; - mouse_y = y; -} - -void -ecore_pointer_xy_get(int *x, int *y) -{ - if (!disp) return; - if (x) - *x = mouse_x; - if (y) - *y = mouse_y; -} - -void -ecore_window_set_events(Window win, long mask) -{ - if (!disp) return; - if (win == 0) - win = default_root; - XSelectInput(disp, win, mask); -} - -void -ecore_window_remove_events(Window win, long mask) -{ - XWindowAttributes att; - - if (!disp) return; - if (win == 0) - win = default_root; - if (XGetWindowAttributes(disp, win, &att) == True) - { - mask = att.your_event_mask & (~mask); - ecore_window_set_events(win, mask); - } -} - -void -ecore_window_add_events(Window win, long mask) -{ - XWindowAttributes att; - - if (!disp) return; - if (win == 0) - win = default_root; - if (XGetWindowAttributes(disp, win, &att) == True) - { - mask = att.your_event_mask | mask; - ecore_window_set_events(win, mask); - } -} - -void -ecore_window_move(Window win, int x, int y) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { - if (!xid->coords_invalid) - { - if ((xid->x == x) && (xid->y == y)) - return; - } - xid->x = x; - xid->y = y; - xid->coords_invalid = 0; - XMoveWindow(disp, win, x, y); - } -} - -#define REGRAVITATE \ -if (xid->children) \ -{ \ - int j; \ -\ - for (j = 0; j < xid->children_num; j++) \ - { \ - Ecore_XID *xid2; \ -\ - xid2 = ecore_validate_xid(xid->children[j]); \ - if (xid2) \ - { \ - xid2->coords_invalid = 1; \ - } \ - } \ -} - -#if 0 -switch (xid2->gravity) - { - case UnmapGravity: - xid2->mapped = 0; - break; - case NorthWestGravity: - break; - case NorthGravity: - xid2->x += (w - xid->w) / 2; - break; - case NorthEastGravity: - xid2->x += (w - xid->w); - break; - case WestGravity: - xid2->h += (h - xid->h) / 2; - break; - case CenterGravity: - xid2->x += (w - xid->w) / 2; - xid2->h += (h - xid->h) / 2; - break; - case EastGravity: - xid2->x += (w - xid->w); - break; - case SouthWestGravity: - xid2->y += (h - xid->h); - break; - case SouthGravity: - xid2->x += (w - xid->w) / 2; - xid2->y += (h - xid->h); - break; - case SouthEastGravity: - xid2->x += (w - xid->w); - xid2->y += (h - xid->h); - break; - case StaticGravity: - xid2->coords_invalid = 1; - break; - default: - break; - } -} -} -} -#endif - -void -ecore_window_resize(Window win, int w, int h) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { - if (!xid->coords_invalid) - { - if ((xid->w == w) && (xid->h == h)) - return; - } - REGRAVITATE; - xid->w = w; - xid->h = h; - xid->coords_invalid = 0; - XResizeWindow(disp, win, w, h); - } -} - -void -ecore_window_move_resize(Window win, int x, int y, int w, int h) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { - if (!xid->coords_invalid) - { - if ((xid->x == x) && (xid->y == y) && (xid->w == w) && (xid->h == h)) - return; - } - REGRAVITATE; - xid->x = x; - xid->y = y; - xid->w = w; - xid->h = h; - xid->coords_invalid = 0; - XMoveResizeWindow(disp, win, x, y, w, h); - } -} - -int -ecore_x_get_fd(void) -{ - if (!disp) return 0; - return ConnectionNumber(disp); -} - -void -ecore_set_error_handler(Ecore_Error_Function func) -{ - if (!disp) return; - XSetErrorHandler((XErrorHandler) func); -} - -void -ecore_reset_error_handler(void) -{ - if (!disp) return; - XSetErrorHandler((XErrorHandler) ecore_handle_x_error); -} - -int -ecore_display_init(char *display) -{ - int revert; - - xid_context = XUniqueContext(); - disp = XOpenDisplay(display); - if (!disp) - { - char *d; - - d = getenv("DISPLAY"); -/* no need for this anymore - if (d) - fprintf(stderr, - "Fatal Error:\n" - "Cannot connect to the display nominated by your DISPLAY variable:\n" - "%s\n" - "Try changing your DISPLAY variable like:\n" - "DISPLAY=host:0 application_name\n", d); - else - fprintf(stderr, - "Fatal Error:\n" - "No DISPLAY variable set so cannot determine display to connect to.\n" - "Try setting your DISPLAY variable like:\n" - "DISPLAY=host:0 appication_name\n"); -*/ - return 0; - } - XSetErrorHandler((XErrorHandler) ecore_handle_x_error); - XSetIOErrorHandler((XIOErrorHandler) ecore_handle_x_io_error); - default_vis = DefaultVisual(disp, DefaultScreen(disp)); - default_depth = DefaultDepth(disp, DefaultScreen(disp)); - default_cm = DefaultColormap(disp, DefaultScreen(disp)); - default_win = DefaultRootWindow(disp); - default_root = DefaultRootWindow(disp); - mod_shift = ecore_mod_mask_shift_get(); - mod_ctrl = ecore_mod_mask_ctrl_get(); - mod_alt = ecore_mod_mask_alt_get(); - mod_win = ecore_mod_mask_win_get(); - XGetInputFocus(disp, &focused_win, &revert); - ecore_window_set_events(default_root, XEV_KEY | XEV_IN_OUT | XEV_MOUSE_MOVE | - XEV_CONFIGURE | XEV_CHILD_CHANGE | XEV_PROPERTY | - XEV_COLORMAP | XEV_VISIBILITY); - ecore_pointer_xy(0, NULL, NULL); - return 1; -} - -int -ecore_events_pending(void) -{ - if (!disp) return 0; - return XPending(disp); -} - -void -ecore_get_next_event(XEvent * event) -{ - if (!disp) return; - XNextEvent(disp, event); -} - -int -ecore_event_shape_get_id(void) -{ - int base = -1, err_base; - - if (!disp) return 0; - XShapeQueryExtension(disp, &base, &err_base); - base += ShapeNotify; - return base; -} - -KeySym -ecore_key_get_keysym_from_keycode(KeyCode keycode) -{ - if (!disp) return 0; - return XKeycodeToKeysym(disp, keycode, 0); -} - -char * -ecore_key_get_string_from_keycode(KeyCode keycode) -{ - char *str; - - if (!disp) return strdup(""); - str = XKeysymToString(ecore_key_get_keysym_from_keycode(keycode)); - if (!str) - return strdup(""); - return strdup(str); -} - -void -ecore_event_allow(int mode, Time t) -{ - if (!disp) return; - XAllowEvents(disp, mode, t); -} - -int -ecore_lock_mask_scroll_get(void) -{ - static int have_mask = 0; - static int mask = 0; - XModifierKeymap *mod; - KeyCode nl; - int i; - int masks[8] = { - ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, - Mod4Mask, Mod5Mask - }; - - if (!disp) return 0; - if (have_mask) - return mask; - mod = XGetModifierMapping(disp); - nl = XKeysymToKeycode(disp, XK_Scroll_Lock); - if ((mod) && (mod->max_keypermod > 0)) - { - for (i = 0; i < (8 * mod->max_keypermod); i++) - { - if ((nl) && (mod->modifiermap[i] == nl)) - { - mask = masks[i / mod->max_keypermod]; - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - have_mask = 1; - return mask; - } - } - } - if (mod) - { - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - } - return 0; -} - -int -ecore_lock_mask_num_get(void) -{ - static int have_mask = 0; - static int mask = 0; - XModifierKeymap *mod; - KeyCode nl; - int i; - int masks[8] = { - ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, - Mod4Mask, Mod5Mask - }; - - if (!disp) return 0; - if (have_mask) - return mask; - mod = XGetModifierMapping(disp); - nl = XKeysymToKeycode(disp, XK_Num_Lock); - if ((mod) && (mod->max_keypermod > 0)) - { - for (i = 0; i < (8 * mod->max_keypermod); i++) - { - if ((nl) && (mod->modifiermap[i] == nl)) - { - mask = masks[i / mod->max_keypermod]; - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - have_mask = 1; - return mask; - } - } - } - if (mod) - { - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - } - return 0; -} - -int -ecore_lock_mask_caps_get(void) -{ - static int have_mask = 0; - static int mask = 0; - XModifierKeymap *mod; - KeyCode nl; - int i; - int masks[8] = { - ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, - Mod4Mask, Mod5Mask - }; - - if (!disp) return 0; - if (have_mask) - return mask; - mod = XGetModifierMapping(disp); - nl = XKeysymToKeycode(disp, XK_Caps_Lock); - if ((mod) && (mod->max_keypermod > 0)) - { - for (i = 0; i < (8 * mod->max_keypermod); i++) - { - if ((nl) && (mod->modifiermap[i] == nl)) - { - mask = masks[i / mod->max_keypermod]; - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - have_mask = 1; - return mask; - } - } - } - if (mod) - { - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - } - return 0; -} - -int -ecore_mod_mask_shift_get(void) -{ - static int have_mask = 0; - static int mask = 0; - XModifierKeymap *mod; - KeyCode nl; - int i; - int masks[8] = { - ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, - Mod4Mask, Mod5Mask - }; - - if (!disp) return 0; - if (have_mask) - return mask; - mod = XGetModifierMapping(disp); - nl = XKeysymToKeycode(disp, XK_Shift_L); - if ((mod) && (mod->max_keypermod > 0)) - { - for (i = 0; i < (8 * mod->max_keypermod); i++) - { - if ((nl) && (mod->modifiermap[i] == nl)) - { - mask = masks[i / mod->max_keypermod]; - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - have_mask = 1; - return mask; - } - } - } - if (mod) - { - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - } - return 0; -} - -int -ecore_mod_mask_ctrl_get(void) -{ - static int have_mask = 0; - static int mask = 0; - XModifierKeymap *mod; - KeyCode nl; - int i; - int masks[8] = { - ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, - Mod4Mask, Mod5Mask - }; - - if (!disp) return 0; - if (have_mask) - return mask; - mod = XGetModifierMapping(disp); - nl = XKeysymToKeycode(disp, XK_Control_L); - if ((mod) && (mod->max_keypermod > 0)) - { - for (i = 0; i < (8 * mod->max_keypermod); i++) - { - if ((nl) && (mod->modifiermap[i] == nl)) - { - mask = masks[i / mod->max_keypermod]; - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - have_mask = 1; - return mask; - } - } - } - if (mod) - { - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - } - return 0; -} - -int -ecore_mod_mask_alt_get(void) -{ - static int have_mask = 0; - static int mask = 0; - XModifierKeymap *mod; - KeyCode nl; - int i; - int masks[8] = { - ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, - Mod4Mask, Mod5Mask - }; - - if (!disp) return 0; - if (have_mask) - return mask; - mod = XGetModifierMapping(disp); - nl = XKeysymToKeycode(disp, XK_Alt_L); - if ((mod) && (mod->max_keypermod > 0)) - { - for (i = 0; i < (8 * mod->max_keypermod); i++) - { - if ((nl) && (mod->modifiermap[i] == nl)) - { - mask = masks[i / mod->max_keypermod]; - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - have_mask = 1; - return mask; - } - } - } - if (mod) - { - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - } - return 0; -} - -int -ecore_mod_mask_win_get(void) -{ - static int have_mask = 0; - static int mask = 0; - XModifierKeymap *mod; - KeyCode nl; - int i; - int masks[8] = { - ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, - Mod4Mask, Mod5Mask - }; - - if (!disp) return 0; - if (have_mask) - return mask; - mod = XGetModifierMapping(disp); - nl = XKeysymToKeycode(disp, XK_Meta_L); - if ((mod) && (mod->max_keypermod > 0)) - { - for (i = 0; i < (8 * mod->max_keypermod); i++) - { - if ((nl) && (mod->modifiermap[i] == nl)) - { - mask = masks[i / mod->max_keypermod]; - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - if (mask == ecore_mod_mask_alt_get()) - mask = 0; - if (mask == ecore_mod_mask_ctrl_get()) - mask = 0; - have_mask = 1; - return mask; - } - } - } - if (mod) - { - if (mod->modifiermap) - XFree(mod->modifiermap); - XFree(mod); - } - return 0; -} - -int -ecore_lock_mask_get(void) -{ - static int mask = 0; - Window root_ret, child_ret; - int root_x_ret, root_y_ret, win_x_ret, win_y_ret; - unsigned int mask_ret; - - if (!disp) return 0; - if (!mask) - mask = ecore_lock_mask_scroll_get() | ecore_lock_mask_num_get() | - ecore_lock_mask_caps_get(); - XQueryPointer(disp, default_root, &root_ret, &child_ret, &root_x_ret, - &root_y_ret, &win_x_ret, &win_y_ret, &mask_ret); - return (mask_ret & mask); -} - -int -ecore_modifier_mask_get(void) -{ - Window root_ret, child_ret; - int root_x_ret, root_y_ret, win_x_ret, win_y_ret; - unsigned int mask_ret; - - if (!disp) return 0; - XQueryPointer(disp, default_root, &root_ret, &child_ret, &root_x_ret, - &root_y_ret, &win_x_ret, &win_y_ret, &mask_ret); - return (mask_ret); -} - -Window -ecore_get_key_grab_win(void) -{ - if (!disp) return 0; - return grabkey_win; -} - -void -ecore_key_grab(char *key, Ecore_Event_Key_Modifiers mods, int anymod, int sync) -{ - KeyCode keycode; - int i, mod, mask_scroll, mask_num, mask_caps, masks[8], mode; - - if (!disp) return; - keycode = ecore_key_get_keycode(key); - mod = 0; - mode = GrabModeAsync; - if (sync) - mode = GrabModeSync; - if (!grabkey_win) - grabkey_win = default_root; - if (mods & ECORE_EVENT_KEY_MODIFIER_SHIFT) - mod |= ecore_mod_mask_shift_get(); - if (mods & ECORE_EVENT_KEY_MODIFIER_CTRL) - mod |= ecore_mod_mask_ctrl_get(); - if (mods & ECORE_EVENT_KEY_MODIFIER_ALT) - mod |= ecore_mod_mask_alt_get(); - if (mods & ECORE_EVENT_KEY_MODIFIER_WIN) - mod |= ecore_mod_mask_win_get(); - mask_scroll = ecore_lock_mask_scroll_get(); - mask_num = ecore_lock_mask_num_get(); - mask_caps = ecore_lock_mask_caps_get(); - masks[0] = 0; - masks[1] = mask_scroll; - masks[2] = mask_num; - masks[3] = mask_caps; - masks[4] = mask_scroll | mask_num; - masks[5] = mask_scroll | mask_caps; - masks[6] = mask_num | mask_caps; - masks[7] = mask_scroll | mask_num | mask_caps; - if (anymod) - XGrabKey(disp, keycode, AnyModifier, grabkey_win, False, mode, mode); - else - { - for (i = 0; i < 8; i++) - XGrabKey(disp, keycode, masks[i] | mod, grabkey_win, False, mode, mode); - } -} - -void -ecore_key_ungrab(char *key, Ecore_Event_Key_Modifiers mods, int anymod) -{ - KeyCode keycode; - - if (!disp) return; - keycode = ecore_key_get_keycode(key); - if (anymod) - XUngrabKey(disp, keycode, AnyModifier, default_root); - else - { - int i, mod, mask_scroll, mask_num, mask_caps, masks[8]; - - mod = 0; - if (mods & ECORE_EVENT_KEY_MODIFIER_SHIFT) - mod |= ecore_mod_mask_shift_get(); - if (mods & ECORE_EVENT_KEY_MODIFIER_CTRL) - mod |= ecore_mod_mask_ctrl_get(); - if (mods & ECORE_EVENT_KEY_MODIFIER_ALT) - mod |= ecore_mod_mask_alt_get(); - if (mods & ECORE_EVENT_KEY_MODIFIER_WIN) - mod |= ecore_mod_mask_win_get(); - mask_scroll = ecore_lock_mask_scroll_get(); - mask_num = ecore_lock_mask_num_get(); - mask_caps = ecore_lock_mask_caps_get(); - masks[0] = 0; - masks[1] = mask_scroll; - masks[2] = mask_num; - masks[3] = mask_caps; - masks[4] = mask_scroll | mask_num; - masks[5] = mask_scroll | mask_caps; - masks[6] = mask_num | mask_caps; - masks[7] = mask_scroll | mask_num | mask_caps; - for (i = 0; i < 8; i++) - XUngrabKey(disp, keycode, masks[i] | mod, grabkey_win); - } -} - -KeyCode -ecore_key_get_keycode(char *key) -{ - if (!disp) return 0; - return XKeysymToKeycode(disp, XStringToKeysym(key)); -} - -void -ecore_window_destroy(Window win) -{ - if (!disp) return; - ecore_unvalidate_xid(win); - XDestroyWindow(disp, win); -} - -void -ecore_window_reparent(Window win, Window parent, int x, int y) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { - if (parent == 0) - parent = default_root; - XReparentWindow(disp, win, parent, x, y); - ecore_del_child(xid->parent, win); - ecore_add_child(parent, win); - xid->parent = parent; - xid->x = x; - xid->y = y; - } -} - -void -ecore_window_raise(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { - XRaiseWindow(disp, win); - ecore_raise_child(xid->parent, win); - } -} - -void -ecore_window_lower(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { - XLowerWindow(disp, win); - ecore_lower_child(xid->parent, win); - } -} - -void -ecore_window_get_geometry(Window win, int *x, int *y, int *w, int *h) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - if (win == 0) - win = default_root; - xid = ecore_validate_xid(win); - if ((xid) && (xid->coords_invalid)) - { - Window dw; - int rx, ry; - unsigned int rw, rh, di; - - XGetGeometry(disp, win, &dw, &rx, &ry, &rw, &rh, &di, &di); - xid->x = rx; - xid->y = ry; - xid->w = (int)rw; - xid->h = (int)rh; - xid->coords_invalid = 0; - } - if (xid) - { - if (x) - *x = xid->x; - if (y) - *y = xid->y; - if (w) - *w = xid->w; - if (h) - *h = xid->h; - } - else - { - if (x) - *x = 0; - if (y) - *y = 0; - if (w) - *w = 0; - if (h) - *h = 0; - } -} - -int -ecore_window_get_depth(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return 0; - if (win == 0) - win = default_root; - xid = ecore_validate_xid(win); - if (xid) - return xid->depth; - return -1; -} - -int -ecore_window_exists(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return 0; - xid = ecore_validate_xid(win); - if (xid) - return 1; - return 0; -} - -Window -ecore_window_get_parent(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return 0; - xid = ecore_validate_xid(win); - if (xid) - return xid->parent; - return 0; -} - -Window * -ecore_window_get_children(Window win, int *num) -{ - Ecore_XID *xid = NULL; - - if (!disp) return NULL; - if (win == 0) - win = default_root; - xid = ecore_validate_xid(win); - if (xid) - { - Window *wlist = NULL; - - *num = xid->children_num; - if (xid->children) - { - wlist = NEW(Window, xid->children_num); - MEMCPY(xid->children, wlist, Window, xid->children_num); - } - return wlist; - } - *num = 0; - return NULL; -} - -int -ecore_window_mouse_in(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return 0; - if (win == 0) - win = default_root; - xid = ecore_validate_xid(win); - if (xid) - return xid->mouse_in; - return 0; -} - -void -ecore_window_mouse_set_in(Window win, int in) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - if (win == 0) - win = default_root; - xid = ecore_validate_xid(win); - if (xid) - xid->mouse_in = in; -} - -Display * -ecore_display_get(void) -{ - return disp; -} - -Window -ecore_window_get_root(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return 0; - xid = ecore_validate_xid(win); - if (xid) - return xid->root; - return 0; -} - -void -ecore_lock_scroll_set(int onoff) -{ - lock_scroll = onoff; -} - -int -ecore_lock_scroll_get(void) -{ - return lock_scroll; -} - -void -ecore_lock_num_set(int onoff) -{ - lock_num = onoff; -} - -int -ecore_lock_num_get(void) -{ - return lock_num; -} - -void -ecore_lock_caps_set(int onoff) -{ - lock_caps = onoff; -} - -int -ecore_lock_caps_get(void) -{ - return lock_caps; -} - -void -ecore_mod_shift_set(int onoff) -{ - mod_shift = onoff; -} - -int -ecore_mod_shift_get(void) -{ - return mod_shift; -} - -void -ecore_mod_ctrl_set(int onoff) -{ - mod_ctrl = onoff; -} - -int -ecore_mod_ctrl_get(void) -{ - return mod_ctrl; -} - -void -ecore_mod_alt_set(int onoff) -{ - mod_alt = onoff; -} - -int -ecore_mod_alt_get(void) -{ - return mod_alt; -} - -void -ecore_mod_win_set(int onoff) -{ - mod_win = onoff; -} - -int -ecore_mod_win_get(void) -{ - return mod_win; -} - -void -ecore_focus_window_set(Window win) -{ - focused_win = win; -} - -Window -ecore_focus_window_get(void) -{ - return focused_win; -} - -void -ecore_focus_to_window(Window win) -{ - if (!disp) return; - if (win == 0) - win = default_root; - XSetInputFocus(disp, win, RevertToNone, CurrentTime); -} - -void -ecore_focus_mode_reset(void) -{ - if (!disp) return; - XSetInputFocus(disp, default_root, RevertToPointerRoot, CurrentTime); -} - -Atom -ecore_atom_get(char *name) -{ - if (!disp) return 0; - return XInternAtom(disp, name, False); -} - -void -ecore_window_set_delete_inform(Window win) -{ - static Atom protocols[1] = { 0 }; - - if (!disp) return; - ECORE_ATOM(protocols[0], "WM_DELETE_WINDOW"); - XSetWMProtocols(disp, win, protocols, 1); -} - -void -ecore_window_property_set(Window win, Atom type, Atom format, int size, - void *data, int number) -{ - if (!disp) return; - if (win == 0) - win = default_root; - if (size != 32) - XChangeProperty(disp, win, type, format, size, PropModeReplace, - (unsigned char *)data, number); - else - { - long *dat; - int i, *ptr; - - dat = NEW(long, number); - - for (ptr = (int *)data, i = 0; i < number; i++) - dat[i] = ptr[i]; - XChangeProperty(disp, win, type, format, size, PropModeReplace, - (unsigned char *)dat, number); - FREE(dat); - } -} - -void * -ecore_window_property_get(Window win, Atom type, Atom format, int *size) -{ - unsigned char *retval; - Atom type_ret; - unsigned long bytes_after, num_ret; - int format_ret; - void *data = NULL; - - if (!disp) - return NULL; - - retval = NULL; - if (win == 0) - win = default_root; - XGetWindowProperty(disp, win, type, 0, 0x7fffffffL, False, format, - &type_ret, &format_ret, &num_ret, &bytes_after, &retval); - if (retval) - { - if (format_ret == 32) - { - int i; - - *size = num_ret * sizeof(unsigned int); - - data = NEW(unsigned int, num_ret); - - for (i = 0; i < (int)num_ret; i++) - ((unsigned int *)data)[i] = ((unsigned long *)retval)[i]; - } - else if (format_ret == 16) - { - int i; - - *size = num_ret * sizeof(unsigned short); - - data = NEW(unsigned short, *size); - - for (i = 0; i < (int)num_ret; i++) - ((unsigned short *)data)[i] = ((unsigned short *)retval)[i]; - } - else if (format_ret == 8) - { - /* format_ret == 8 */ - *size = num_ret; - data = NEW(char, num_ret); - - if (data) - memcpy(data, retval, num_ret); - } - XFree(retval); - return data; - } - *size = 0; - return NULL; -} - -void -ecore_window_dnd_advertise(Window win) -{ - static Atom atom_xdndaware = 0; - int dnd_version = 3; - - if (!disp) return; - ECORE_ATOM(atom_xdndaware, "XdndAware"); - ecore_window_property_set(win, atom_xdndaware, XA_ATOM, 32, &dnd_version, 1); -} - -void -ecore_grab(void) -{ - if (!disp) - return; - - x_grabs++; - - if (x_grabs == 1) - XGrabServer(disp); -} - -void -ecore_ungrab(void) -{ - if (!disp) - return; - - x_grabs--; - - if (x_grabs == 0) - { - XUngrabServer(disp); - ecore_sync(); - } -} - -void -ecore_window_ignore(Window win) -{ - Window_List *w; - - if (!disp) return; - if (win == 0) - win = default_root; - w = NEW(Window_List, 1); - w->win = win; - w->next = ignore_wins; - ignore_wins = w; -} - -void -ecore_window_no_ignore(Window win) -{ - Window_List *w, *pw; - - if (!disp) return; - if (win == 0) - win = default_root; - for (pw = NULL, w = ignore_wins; w; pw = w, w = w->next) - { - if (w->win == win) - { - if (pw) - pw->next = w->next; - else - ignore_wins = w->next; - FREE(w); - return; - } - } -} - -int -ecore_window_is_ignored(Window win) -{ - Window_List *w; - - if (!disp) return 0; - if (win == 0) - win = default_root; - for (w = ignore_wins; w; w = w->next) - { - if (w->win == win) - return 1; - } - return 0; -} - -static Window -ecore_window_at_xy_0(Window base, int bx, int by, int x, int y) -{ - Window *list = NULL; - XWindowAttributes att; - Window child = 0, parent_win = 0, root_win = 0; - int i; - unsigned int ww, wh, num; - int wx, wy; - - if (!disp) return 0; - if ((!XGetWindowAttributes(disp, base, &att)) || - (att.map_state != IsViewable)) - return 0; - - wx = att.x; - wy = att.y; - ww = att.width; - wh = att.height; - - wx += bx; - wy += by; - - if (!((x >= wx) && (y >= wy) && (x < (int)(wx + ww)) && (y < (int)(wy + wh)))) - return 0; - - if (!XQueryTree(disp, base, &root_win, &parent_win, &list, &num)) - return base; - if (list) - { - for (i = num - 1;; i--) - { - if (!ecore_window_is_ignored(list[i])) - { - if ((child = ecore_window_at_xy_0(list[i], wx, wy, x, y)) != 0) - { - XFree(list); - return child; - } - } - if (!i) - break; - } - XFree(list); - } - return base; -} - -Window -ecore_window_get_at_xy(int x, int y) -{ - Window child; - - if (!disp) return 0; - ecore_grab(); - child = ecore_window_at_xy_0(default_root, 0, 0, x, y); - if (child) - { - ecore_ungrab(); - return child; - } - ecore_ungrab(); - return default_root; -} - -int -ecore_window_dnd_capable(Window win) -{ - static Atom atom_xdndaware = 0; - int dnd_version = 3; - int *atom_ret; - int size = 0; - - if (!disp) return 0; - ECORE_ATOM(atom_xdndaware, "XdndAware"); - atom_ret = ecore_window_property_get(win, atom_xdndaware, XA_ATOM, &size); - if ((atom_ret) && (size >= (int)sizeof(int))) - { - if (atom_ret[0] == dnd_version) - { - FREE(atom_ret); - return 1; - } - FREE(atom_ret); - } - return 0; -} - -void -ecore_window_dnd_handle_motion(Window source_win, int x, int y, int dragging) -{ - static Atom atom_xdndenter = 0; - static Atom atom_xdndleave = 0; - static Atom atom_xdnddrop = 0; - static Atom atom_xdndposition = 0; - static Atom atom_xdndactioncopy = 0; - static Atom atom_xdndactionmove = 0; - static Atom atom_xdndactionlink = 0; - static Atom atom_xdndactionask = 0; - static Atom atom_text_uri_list = 0; - static Atom atom_text_plain = 0; - static Atom atom_text_moz_url = 0; - static Atom atom_netscape_url = 0; - Window win; - XEvent xevent; - - if (!disp) return; - win = ecore_window_get_at_xy(x, y); - while ((win) && (!ecore_window_dnd_capable(win))) - win = ecore_window_get_parent(win); - ECORE_ATOM(atom_xdndenter, "XdndEnter"); - ECORE_ATOM(atom_xdndleave, "XdndLeave"); - ECORE_ATOM(atom_xdnddrop, "XdndDrop"); - ECORE_ATOM(atom_xdndposition, "XdndPosition"); - ECORE_ATOM(atom_xdndactioncopy, "XdndActionCopy"); - ECORE_ATOM(atom_xdndactionmove, "XdndActionMove"); - ECORE_ATOM(atom_xdndactionlink, "XdndActionLink"); - ECORE_ATOM(atom_xdndactionask, "XdndActionAsk"); - ECORE_ATOM(atom_text_uri_list, "text/uri-list"); - ECORE_ATOM(atom_text_plain, "text/plain"); - ECORE_ATOM(atom_text_moz_url, "text/x-moz-url"); - ECORE_ATOM(atom_netscape_url, "_NETSCAPE_URL"); - if ((win != current_dnd_win) && (current_dnd_win)) - { - /* send leave to old dnd win */ - xevent.xany.type = ClientMessage; - xevent.xany.display = disp; - xevent.xclient.format = 32; - xevent.xclient.window = current_dnd_win; - xevent.xclient.message_type = atom_xdndleave; - xevent.xclient.data.l[0] = source_win; - xevent.xclient.data.l[1] = 0; - xevent.xclient.data.l[2] = 0; - xevent.xclient.data.l[3] = 0; - xevent.xclient.data.l[4] = 0; - XSendEvent(disp, current_dnd_win, False, 0, &xevent); - } - if (win) - { - if (win != current_dnd_win) - { - /* send enter on new win */ - xevent.xany.type = ClientMessage; - xevent.xany.display = disp; - xevent.xclient.window = win; - xevent.xclient.message_type = atom_xdndenter; - xevent.xclient.format = 32; - xevent.xclient.data.l[0] = source_win; - xevent.xclient.data.l[1] = (3 << 24); - xevent.xclient.data.l[2] = atom_text_uri_list; - xevent.xclient.data.l[3] = atom_text_plain; - xevent.xclient.data.l[4] = atom_text_moz_url; - XSendEvent(disp, win, False, 0, &xevent); - ecore_clear_target_status(); - } - /* kjb cep */ - if(!dnd_await_target_status) - { - /* send position information */ - xevent.xany.type = ClientMessage; - xevent.xany.display = disp; - xevent.xclient.window = win; - xevent.xclient.message_type = atom_xdndposition; - xevent.xclient.format = 32; - xevent.xclient.data.l[0] = source_win; - xevent.xclient.data.l[1] = (3 << 24); - xevent.xclient.data.l[2] = ((x << 16) & 0xffff0000) | (y & 0xffff); - xevent.xclient.data.l[3] = CurrentTime; - if (dnd_copy) - xevent.xclient.data.l[4] = atom_xdndactioncopy; - else if (dnd_link) - xevent.xclient.data.l[4] = atom_xdndactionlink; - else if (dnd_move) - xevent.xclient.data.l[4] = atom_xdndactionmove; - else - xevent.xclient.data.l[4] = atom_xdndactionask; - XSendEvent(disp, win, False, 0, &xevent); - dnd_await_target_status = 1; - } - } - if (!dragging) - { - if (win) - { - if (current_dnd_target_ok) - { - xevent.xany.type = ClientMessage; - xevent.xany.display = disp; - xevent.xclient.window = win; - xevent.xclient.message_type = atom_xdnddrop; - xevent.xclient.format = 32; - xevent.xclient.data.l[0] = source_win; - xevent.xclient.data.l[1] = 0; - xevent.xclient.data.l[2] = CurrentTime; - xevent.xclient.data.l[3] = 0; - xevent.xclient.data.l[4] = 0; - XSendEvent(disp, win, False, 0, &xevent); - } - else - { - xevent.xany.type = ClientMessage; - xevent.xany.display = disp; - xevent.xclient.window = win; - xevent.xclient.message_type = atom_xdndleave; - xevent.xclient.format = 32; - xevent.xclient.data.l[0] = source_win; - xevent.xclient.data.l[1] = 0; - xevent.xclient.data.l[2] = 0; - xevent.xclient.data.l[3] = 0; - xevent.xclient.data.l[4] = 0; - XSendEvent(disp, win, False, 0, &xevent); - } - } - current_dnd_target_ok = 0; - } - current_dnd_win = win; -} - - -void -ecore_clear_target_status(void) -{ - dnd_await_target_status = 0; -} - - -int -ecore_dnd_selection_convert(Window win, Window req, Atom type) -{ - static Atom atom_xdndselection = 0; - static Atom atom_jxselectionwindowproperty = 0; - - if (!disp) return 0; - ECORE_ATOM(atom_xdndselection, "XdndSelection"); - ECORE_ATOM(atom_jxselectionwindowproperty, "JXSelectionWindowProperty"); - if (win == XGetSelectionOwner(disp, atom_xdndselection)) - { - XConvertSelection(disp, atom_xdndselection, type, - atom_jxselectionwindowproperty, req, CurrentTime); - return 1; - } - return 0; -} - -void * -ecore_dnd_selection_get(Window win, Window req, Atom type, int *size) -{ - unsigned char *data = NULL; - long bytes_read; - unsigned long remaining = 1; - - if (!disp) return NULL; - *size = 0; - bytes_read = 0; - while (remaining) - { - unsigned char *s; - Atom actual; - int format; - unsigned long count; - - s = NULL; - if (XGetWindowProperty(disp, win, type, bytes_read / 4, 0x10000, 1, - AnyPropertyType, &actual, &format, &count, - &remaining, &s) != Success) - { - /* error occured */ - XFree(s); - IF_FREE(data); - *size = 0; - return NULL; - } - if (s) - { - /* got some mroe data - append it */ - bytes_read += count; - if (!data) - data = NEW(char, bytes_read); - - else - REALLOC(data, char, bytes_read); - MEMCPY(s, data + (bytes_read - count), char, count); - - XFree(s); - } - } - *size = bytes_read; - return data; - req = 0; -} - -void -ecore_dnd_set_data(Window win) -{ - static Atom atom_xdndselection = 0; - - if (!disp) return; - ECORE_ATOM(atom_xdndselection, "XdndSelection"); - ecore_dnd_set_action(win); - XSetSelectionOwner(disp, atom_xdndselection, win, CurrentTime); -} - -void -ecore_dnd_set_action(Window win) -{ - static int atom_xdndactioncopy = 0; - static int atom_xdndactionmove = 0; - static int atom_xdndactionlink = 0; - static int atom_xdndactionask = 0; - static Atom atom_xdndactionlist = 0; - - if (!disp) return; - ECORE_ATOM(atom_xdndactioncopy, "XdndActionCopy"); - ECORE_ATOM(atom_xdndactionmove, "XdndActionMove"); - ECORE_ATOM(atom_xdndactionlink, "XdndActionLink"); - ECORE_ATOM(atom_xdndactionask, "XdndActionAsk"); - ECORE_ATOM(atom_xdndactionlist, "XdndActionList"); - if (dnd_copy) - ecore_window_property_set(win, atom_xdndactionlist, XA_ATOM, 32, - &atom_xdndactioncopy, 1); - else if (dnd_link) - ecore_window_property_set(win, atom_xdndactionlist, XA_ATOM, 32, - &atom_xdndactionlink, 1); - else if (dnd_move) - ecore_window_property_set(win, atom_xdndactionlist, XA_ATOM, 32, - &atom_xdndactionmove, 1); - else - ecore_window_property_set(win, atom_xdndactionlist, XA_ATOM, 32, - &atom_xdndactionask, 1); -} - -void -ecore_dnd_send_data(Window win, Window source_win, void *data, int size, - Atom dest_atom, int type) -{ - XEvent xevent; - static Atom atom_text_plain = 0; - static Atom atom_text_uri_list = 0; - static Atom atom_text_moz_url = 0; - static Atom atom_netscape_url = 0; - static Atom atom_xdndselection = 0; - Atom target; - - if (!disp) return; - ECORE_ATOM(atom_xdndselection, "XdndSelection"); - ECORE_ATOM(atom_text_uri_list, "text/uri-list"); - ECORE_ATOM(atom_text_plain, "text/plain"); - ECORE_ATOM(atom_text_moz_url, "text/x-moz-url"); - ECORE_ATOM(atom_text_moz_url, "_NETSCAPE_URL"); - ECORE_ATOM(atom_text_plain, "text/plain"); - if (type == DND_TYPE_URI_LIST) target = atom_text_uri_list; - else if (type == DND_TYPE_PLAIN_TEXT) target = atom_text_plain; - else if (type == DND_TYPE_MOZ_URL) target = atom_text_moz_url; - else if (type == DND_TYPE_NETSCAPE_URL) target = atom_netscape_url; - else target = 0; - ecore_window_property_set(win, dest_atom, target, 8, data, size); - xevent.xselection.type = SelectionNotify; - xevent.xselection.property = dest_atom; - xevent.xselection.display = disp; - xevent.xselection.requestor = win; - xevent.xselection.selection = atom_xdndselection; - xevent.xselection.target = target; - xevent.xselection.time = CurrentTime; - XSendEvent(disp, win, False, 0, &xevent); - return; - source_win = 0; -} - -void -ecore_dnd_set_mode_copy(void) -{ - dnd_copy = 1; - dnd_link = 0; - dnd_move = 0; -} - -void -ecore_dnd_set_mode_link(void) -{ - dnd_copy = 0; - dnd_link = 1; - dnd_move = 0; -} - -void -ecore_dnd_set_mode_move(void) -{ - dnd_copy = 0; - dnd_link = 0; - dnd_move = 1; -} - -void -ecore_dnd_set_mode_ask(void) -{ - dnd_copy = 0; - dnd_link = 0; - dnd_move = 0; -} - -void -ecore_dnd_own_selection(Window win) -{ - static Atom atom_xdndselection = 0; - static Atom atom_jxselectionwindowproperty = 0; - - if (!disp) return; - ECORE_ATOM(atom_xdndselection, "XdndSelection"); - ECORE_ATOM(atom_jxselectionwindowproperty, "JXSelectionWindowProperty"); - - if (!XSetSelectionOwner(disp, atom_xdndselection, win, CurrentTime)) - return; -} - -void -ecore_dnd_send_drop(Window win, Window source_win) -{ - static Atom atom_xdnddrop = 0; - XEvent xevent; - - if (!disp) return; - ECORE_ATOM(atom_xdnddrop, "XdndDrop"); - - ecore_dnd_own_selection(source_win); - - memset(&xevent, 0, sizeof(xevent)); - xevent.xany.type = ClientMessage; - xevent.xany.display = disp; - xevent.xclient.window = win; - xevent.xclient.message_type = atom_xdnddrop; - xevent.xclient.format = 32; - - xevent.xclient.data.l[0] = source_win; - xevent.xclient.data.l[1] = CurrentTime; - xevent.xclient.data.l[2] = 0; - xevent.xclient.data.l[3] = 0; - xevent.xclient.data.l[4] = 0; - XSendEvent(disp, win, False, 0, &xevent); -} - -void -ecore_window_dnd_send_status_ok(Window source_win, Window win, int x, int y, - int w, int h) -{ - static Atom atom_xdndstatus = 0; - static Atom atom_xdndactioncopy = 0; - static Atom atom_xdndactionmove = 0; - static Atom atom_xdndactionlink = 0; - static Atom atom_xdndactionask = 0; - XEvent xevent; - - if (!disp) return; - ECORE_ATOM(atom_xdndstatus, "XdndStatus"); - ECORE_ATOM(atom_xdndactioncopy, "XdndActionCopy"); - ECORE_ATOM(atom_xdndactionmove, "XdndActionMove"); - ECORE_ATOM(atom_xdndactionlink, "XdndActionLink"); - ECORE_ATOM(atom_xdndactionask, "XdndActionAsk"); - memset(&xevent, 0, sizeof(xevent)); - - xevent.xany.type = ClientMessage; - xevent.xany.display = disp; - xevent.xclient.window = win; - xevent.xclient.message_type = atom_xdndstatus; - xevent.xclient.format = 32; - - xevent.xclient.data.l[0] = source_win; - xevent.xclient.data.l[1] = 3; - xevent.xclient.data.l[2] = ((x << 16) & 0xffff0000) | (y & 0xffff); - xevent.xclient.data.l[3] = ((h << 16) & 0xffff0000) | (w & 0xffff); - if (dnd_copy) - xevent.xclient.data.l[4] = atom_xdndactioncopy; - else if (dnd_link) - xevent.xclient.data.l[4] = atom_xdndactionlink; - else if (dnd_move) - xevent.xclient.data.l[4] = atom_xdndactionmove; - else - xevent.xclient.data.l[4] = atom_xdndactionask; - XSendEvent(disp, win, False, 0, &xevent); -} - -void -ecore_window_dnd_send_finished(Window source_win, Window win) -{ - static Atom atom_xdndfinished = 0; - XEvent xevent; - - if (!disp) return; - ECORE_ATOM(atom_xdndfinished, "XdndFinished"); - memset(&xevent, 0, sizeof(xevent)); - - xevent.xany.type = ClientMessage; - xevent.xany.display = disp; - xevent.xclient.window = win; - xevent.xclient.message_type = atom_xdndfinished; - xevent.xclient.format = 32; - - xevent.xclient.data.l[0] = source_win; - xevent.xclient.data.l[1] = 0; - xevent.xclient.data.l[2] = 0; - xevent.xclient.data.l[3] = 0; - xevent.xclient.data.l[4] = 0; - XSendEvent(disp, win, False, 0, &xevent); -} - -void -ecore_window_dnd_ok(int ok) -{ - current_dnd_target_ok = ok; -} - -void -ecore_window_dnd_finished(void) -{ - current_dnd_win = 0; -} - -void -ecore_window_set_title(Window win, char *title) -{ - if (!disp) return; - XStoreName(disp, win, title); -} - -void -ecore_window_set_name_class(Window win, char *name, char *class) -{ - XClassHint hint; - - if (!disp) return; - hint.res_name = name; - hint.res_class = class; - XSetClassHint(disp, win, &hint); -} - -void -ecore_window_get_name_class(Window win, char **name, char **class) -{ - XClassHint xch; - - if (!disp) return; - if (name) - *name = NULL; - if (class) - *class = NULL; - if (XGetClassHint(disp, win, &xch)) - { - if (name) - { - if (xch.res_name) - *name = strdup(xch.res_name); - } - if (class) - { - if (xch.res_class) - *class = strdup(xch.res_class); - } - XFree(xch.res_name); - XFree(xch.res_class); - } -} - -void -ecore_window_get_hints(Window win, int *accepts_focus, int *initial_state, - Pixmap * icon_pixmap, Pixmap * icon_mask, - Window * icon_window, Window * window_group) -{ - XWMHints *hints; - - if (!disp) return; - hints = XGetWMHints(disp, win); - if (hints) - { - if ((hints->flags & InputHint) && (accepts_focus)) - { - if (hints->input) - *accepts_focus = 1; - else - *accepts_focus = 0; - } - if ((hints->flags & StateHint) && (initial_state)) - { - *initial_state = hints->initial_state; - } - if ((hints->flags & IconPixmapHint) && (icon_pixmap)) - { - *icon_pixmap = hints->icon_pixmap; - } - if ((hints->flags & IconMaskHint) && (icon_mask)) - { - *icon_mask = hints->icon_pixmap; - } - if ((hints->flags & IconWindowHint) && (icon_window)) - { - *icon_window = hints->icon_window; - } - if ((hints->flags & WindowGroupHint) && (window_group)) - { - *window_group = hints->window_group; - } - XFree(hints); - } -} - -char * -ecore_window_get_machine(Window win) -{ - XTextProperty xtp; - - if (!disp) return NULL; - if (XGetWMClientMachine(disp, win, &xtp)) - { - char *s; - - if (!xtp.value) - return NULL; - s = strdup(xtp.value); - XFree(xtp.value); - return s; - } - return NULL; -} - -char * -ecore_window_get_command(Window win) -{ - int cargc; - char **cargv; - - if (!disp) return NULL; - if (XGetCommand(disp, win, &cargv, &cargc)) - { - if (cargc > 0) - { - char *s; - int size, i; - - size = 0; - for (i = 0; i < cargc; i++) - size += strlen(cargv[i]); - size += cargc - 1; - s = NEW(char, size + 1); - s[0] = 0; - - strcpy(s, cargv[0]); - for (i = 1; i < cargc; i++) - { - strcat(s, " "); - strcat(s, cargv[i]); - } - XFreeStringList(cargv); - return s; - } - else - return NULL; - } - return NULL; -} - -char * -ecore_window_get_icon_name(Window win) -{ - XTextProperty xtp; - - if (!disp) return NULL; - if (XGetWMIconName(disp, win, &xtp)) - { - char *s; - - if (!xtp.value) - return NULL; - s = strdup(xtp.value); - XFree(xtp.value); - return s; - } - return NULL; -} - -void -ecore_window_set_min_size(Window win, int w, int h) -{ - XSizeHints hints; - long ret; - - if (!disp) return; - memset(&hints, 0, sizeof(XSizeHints)); - XGetWMNormalHints(disp, win, &hints, &ret); - hints.flags |= PMinSize | PSize | USSize; - hints.min_width = w; - hints.min_height = h; - XSetWMNormalHints(disp, win, &hints); -} - -void -ecore_window_set_max_size(Window win, int w, int h) -{ - XSizeHints hints; - long ret; - - if (!disp) return; - memset(&hints, 0, sizeof(XSizeHints)); - XGetWMNormalHints(disp, win, &hints, &ret); - hints.flags |= PMaxSize | PSize | USSize; - hints.max_width = w; - hints.max_height = h; - XSetWMNormalHints(disp, win, &hints); -} - -void -ecore_window_set_xy_hints(Window win, int x, int y) -{ - XSizeHints hints; - long ret; - - if (!disp) return; - memset(&hints, 0, sizeof(XSizeHints)); - XGetWMNormalHints(disp, win, &hints, &ret); - hints.flags |= PPosition | USPosition | PSize | USSize; - hints.x = x; - hints.y = y; - XSetWMNormalHints(disp, win, &hints); -} - -void -ecore_window_get_frame_size(Window win, int *l, int *r, int *t, int *b) -{ - static Atom atom_e_frame_size = 0; - int *data, size; - - if (!disp) return; - ECORE_ATOM(atom_e_frame_size, "_E_FRAME_SIZE"); - data = ecore_window_property_get(win, atom_e_frame_size, XA_CARDINAL, &size); - if (data) - { - if (size == (4 * sizeof(int))) - { - if (l) - *l = data[0]; - if (r) - *r = data[1]; - if (t) - *t = data[2]; - if (b) - *b = data[3]; - } - else - { - if (l) - *l = 0; - if (r) - *r = 0; - if (t) - *t = 0; - if (b) - *b = 0; - } - FREE(data); - } - else - { - if (l) - *l = 0; - if (r) - *r = 0; - if (t) - *t = 0; - if (b) - *b = 0; - } -} - -int -ecore_window_save_under(Window win) -{ - XSetWindowAttributes att; - XWindowAttributes gatt; - - if (!disp) return 0; - att.save_under = True; - XChangeWindowAttributes(disp, win, CWSaveUnder, &att); - XGetWindowAttributes(disp, win, &gatt); - return (gatt.save_under == True) ? 1 : 0; -} - -GC -ecore_gc_new(Drawable d) -{ - XGCValues gcv; - - if (!disp) return 0; - if (d == 0) - d = default_root; - return XCreateGC(disp, d, 0, &gcv); -} - -void -ecore_gc_free(GC gc) -{ - if (!disp) return; - XFreeGC(disp, gc); -} - -void -ecore_gc_set_fg(GC gc, int val) -{ - if (!disp) return; - XSetForeground(disp, gc, val); -} - -void -ecore_fill_rectangle(Drawable d, GC gc, int x, int y, int w, int h) -{ - if (!disp) return; - XFillRectangle(disp, d, gc, x, y, w, h); -} - -void -ecore_draw_rectangle(Drawable d, GC gc, int x, int y, int w, int h) -{ - if (!disp) return; - XDrawRectangle(disp, d, gc, x, y, w - 1, h - 1); -} - -void -ecore_draw_line(Drawable d, GC gc, int x1, int y1, int x2, int y2) -{ - if (!disp) return; - XDrawLine(disp, d, gc, x1, y1, x2, y2); -} - -void -ecore_draw_point(Drawable d, GC gc, int x, int y) -{ - if (!disp) return; - XDrawPoint(disp, d, gc, x, y); -} - -void -ecore_window_hint_set_layer(Window win, int layer) -{ - static Atom atom_win_layer = 0; - - if (!disp) return; - ECORE_ATOM(atom_win_layer, "_WIN_LAYER"); - ecore_window_property_set(win, atom_win_layer, XA_CARDINAL, 32, &layer, 1); -} - -void -ecore_window_hint_set_sticky(Window win, int sticky) -{ - static Atom atom_win_state = 0; - static Atom atom_win_hints = 0; - int data; - - if (!disp) return; - ECORE_ATOM(atom_win_state, "_WIN_STATE"); - ECORE_ATOM(atom_win_hints, "_WIN_HINTS"); - if (sticky) - { - data = ((1 << 0) | (1 << 8) | (1 << 9)); - ecore_window_property_set(win, atom_win_state, XA_CARDINAL, 32, &data, 1); - data = ((1 << 0) | (1 << 1) | (1 << 2)); - ecore_window_property_set(win, atom_win_hints, XA_CARDINAL, 32, &data, 1); - } - else - { - data = 0; - ecore_window_property_set(win, atom_win_state, XA_CARDINAL, 32, &data, 1); - ecore_window_property_set(win, atom_win_hints, XA_CARDINAL, 32, &data, 1); - } -} - -void -ecore_window_hint_set_borderless(Window win) -{ - static Atom atom_motif_wm_hints = 0; - int data[5]; - - if (!disp) return; - ECORE_ATOM(atom_motif_wm_hints, "_MOTIF_WM_HINTS"); - data[0] = 0x3; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x2ada27b0; - data[4] = 0x2aabd6b0; - ecore_window_property_set(win, atom_motif_wm_hints, atom_motif_wm_hints, 32, - data, 5); -} - -void -ecore_grab_mouse(Window win, int confine, Cursor cursor) -{ - int ret; - - if (!disp) - return; - if (confine) - ret = XGrabPointer(disp, win, False, - XEV_BUTTON | XEV_MOUSE_MOVE | XEV_IN_OUT, - GrabModeAsync, GrabModeAsync, win, cursor, CurrentTime); - else - ret = XGrabPointer(disp, win, False, - XEV_BUTTON | XEV_MOUSE_MOVE | XEV_IN_OUT, - GrabModeAsync, GrabModeAsync, None, cursor, CurrentTime); - if (ret == GrabSuccess) - grab_pointer_win = win; -} - -void -ecore_ungrab_mouse(void) -{ - if (!disp) return; - XUngrabPointer(disp, CurrentTime); - grab_pointer_win = 0; -} - -Window -ecore_grab_window_get(void) -{ - return grab_pointer_win; -} - -int -ecore_window_get_gravity(Window win) -{ - XWindowAttributes att; - - if (!disp) - return 0; - - XGetWindowAttributes(disp, win, &att); - return att.win_gravity; -} - -void -ecore_window_gravity_reset(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { - XSetWindowAttributes att; - -/* if (xid->gravity != NorthWestGravity)*/ - { - att.win_gravity = NorthWestGravity; - XChangeWindowAttributes(disp, win, CWWinGravity, &att); - xid->gravity = NorthWestGravity; - xid->coords_invalid = 1; - } - } -} - -void -ecore_window_gravity_set(Window win, int gravity) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { -/* if (xid->gravity != gravity)*/ - { - XSetWindowAttributes att; - - att.win_gravity = gravity; - XChangeWindowAttributes(disp, win, CWWinGravity, &att); - xid->gravity = gravity; - xid->coords_invalid = 1; - } - } -} - -void -ecore_window_bit_gravity_set(Window win, int gravity) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { - XSetWindowAttributes att; - - att.bit_gravity = gravity; - XChangeWindowAttributes(disp, win, CWBitGravity, &att); - } -} - -void -ecore_pointer_warp_by(int dx, int dy) -{ - if (!disp) return; - XWarpPointer(disp, None, None, 0, 0, 0, 0, dx, dy); -} - -void -ecore_pointer_warp_to(int x, int y) -{ - if (!disp) return; - XWarpPointer(disp, None, default_root, 0, 0, 0, 0, x, y); -} - -void -ecore_gc_set_include_inferiors(GC gc) -{ - XGCValues gcv; - - if (!disp) return; - gcv.subwindow_mode = IncludeInferiors; - XChangeGC(disp, gc, GCSubwindowMode, &gcv); -} - -void -ecore_area_copy(Drawable src, Drawable dest, GC gc, - int sx, int sy, int sw, int sh, int dx, int dy) -{ - if (!disp) return; - if (src == 0) - src = default_root; - if (dest == 0) - dest = default_root; - XCopyArea(disp, src, dest, gc, sx, sy, sw, sh, dx, dy); -} - -Window -ecore_window_root(void) -{ - return default_root; -} - -void -ecore_window_get_virtual_area(Window win, int *area_x, int *area_y) -{ - static Atom atom_win_area = 0; - int *data, size; - - if (!disp) return; - ECORE_ATOM(atom_win_area, "_WIN_AREA"); - data = ecore_window_property_get(win, atom_win_area, XA_CARDINAL, &size); - if (data) - { - if (size == (sizeof(int) * 2)) - { - if (area_x) - *area_x = data[0]; - if (area_y) - *area_y = data[1]; - } - FREE(data); - } -} - -void -ecore_get_virtual_area(int *area_x, int *area_y) -{ - static Atom atom_win_area = 0; - int *data, size; - - if (!disp) return; - ECORE_ATOM(atom_win_area, "_WIN_AREA"); - data = ecore_window_property_get(default_root, atom_win_area, XA_CARDINAL, &size); - if (data) - { - if (size == (sizeof(int) * 2)) - { - if (area_x) - *area_x = data[0]; - if (area_y) - *area_y = data[1]; - } - FREE(data); - } -} - -void -ecore_window_get_root_relative_location(Window win, int *x, int *y) -{ - int dx, dy; - Window parent; - Ecore_XID *xid = NULL; - - if (!disp) return; - if (win == 0) - win = default_root; - if (win == default_root) - { - if (x) - *x = 0; - if (y) - *y = 0; - return; - } - xid = ecore_validate_xid(win); - if (!xid) - { - if (x) - *x = 0; - if (y) - *y = 0; - return; - } - dx = 0; - dy = 0; - do - { - parent = xid->parent; - dx += xid->x; - dy += xid->y; - if (parent != default_root) - { - xid = ecore_validate_xid(parent); - if (!xid) - { - if (x) - *x = dx; - if (y) - *y = dy; - return; - } - } - } - while (parent != default_root); - if (x) - *x = dx; - if (y) - *y = dy; -} - -void -ecore_window_button_grab_auto_replay_set(Window win, int (*func) (Ecore_Event_Mouse_Down *ev)) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (!xid) return; - xid->grab_button_auto_replay = func; -} - -void * -ecore_window_button_grab_auto_replay_get(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return NULL; - xid = ecore_validate_xid(win); - if (!xid) return NULL; - return xid->grab_button_auto_replay; -} - -void -ecore_button_grab(Window win, int button, int events, - Ecore_Event_Key_Modifiers mod, int any_mod) -{ - unsigned int b; - unsigned int m; - unsigned int locks[8]; - int i; - - if (!disp) return; - b = button; - if (b == 0) - b = AnyButton; - m = 0; - if (any_mod) - m = AnyModifier; - else - { - if (mod & ECORE_EVENT_KEY_MODIFIER_SHIFT) - m |= ecore_mod_mask_shift_get(); - if (mod & ECORE_EVENT_KEY_MODIFIER_CTRL) - m |= ecore_mod_mask_ctrl_get(); - if (mod & ECORE_EVENT_KEY_MODIFIER_ALT) - m |= ecore_mod_mask_alt_get(); - if (mod & ECORE_EVENT_KEY_MODIFIER_WIN) - m |= ecore_mod_mask_win_get(); - } - locks[0] = 0; - locks[1] = ecore_lock_mask_caps_get(); - locks[2] = ecore_lock_mask_num_get(); - locks[3] = ecore_lock_mask_scroll_get(); - locks[4] = ecore_lock_mask_caps_get() | ecore_lock_mask_num_get(); - locks[5] = ecore_lock_mask_caps_get() | ecore_lock_mask_scroll_get(); - locks[6] = ecore_lock_mask_num_get() | ecore_lock_mask_scroll_get(); - locks[7] = - ecore_lock_mask_caps_get() | ecore_lock_mask_num_get() | - ecore_lock_mask_scroll_get(); - for (i = 0; i < 8; i++) - XGrabButton(disp, b, m | locks[i], - win, False, events, GrabModeSync, GrabModeAsync, None, None); -} - -void -ecore_button_ungrab(Window win, int button, Ecore_Event_Key_Modifiers mod, - int any_mod) -{ - unsigned int b; - unsigned int m; - unsigned int locks[8]; - int i; - - if (!disp) return; - b = button; - if (b == 0) - b = AnyButton; - m = 0; - if (any_mod) - m = AnyModifier; - else - { - if (mod & ECORE_EVENT_KEY_MODIFIER_SHIFT) - m |= ecore_mod_mask_shift_get(); - if (mod & ECORE_EVENT_KEY_MODIFIER_CTRL) - m |= ecore_mod_mask_ctrl_get(); - if (mod & ECORE_EVENT_KEY_MODIFIER_ALT) - m |= ecore_mod_mask_alt_get(); - if (mod & ECORE_EVENT_KEY_MODIFIER_WIN) - m |= ecore_mod_mask_win_get(); - } - locks[0] = 0; - locks[1] = ecore_lock_mask_caps_get(); - locks[2] = ecore_lock_mask_num_get(); - locks[3] = ecore_lock_mask_scroll_get(); - locks[4] = ecore_lock_mask_caps_get() | ecore_lock_mask_num_get(); - locks[5] = ecore_lock_mask_caps_get() | ecore_lock_mask_scroll_get(); - locks[6] = ecore_lock_mask_num_get() | ecore_lock_mask_scroll_get(); - locks[7] = - ecore_lock_mask_caps_get() | ecore_lock_mask_num_get() | - ecore_lock_mask_scroll_get(); - for (i = 0; i < 8; i++) - XUngrabButton(disp, b, m | locks[i], win); -} - -void -ecore_pointer_replay(Time t) -{ - if (!disp) return; - XSync(disp, False); - XAllowEvents(disp, ReplayPointer, t); - XSync(disp, False); -} - -void -ecore_pointer_grab(Window win, Time t) -{ - if (!disp) return; - XGrabPointer(disp, win, False, XEV_BUTTON | XEV_MOUSE_MOVE | XEV_IN_OUT, - GrabModeAsync, GrabModeAsync, None, None, t); -} - -void -ecore_pointer_ungrab(Time t) -{ - if (!disp) return; - XUngrabPointer(disp, t); -} - -void -ecore_window_send_event_move_resize(Window win, int x, int y, int w, int h) -{ - XEvent ev; - - if (!disp) return; - ev.type = ConfigureNotify; - ev.xconfigure.display = disp; - ev.xconfigure.event = win; - ev.xconfigure.window = win; - ev.xconfigure.x = x; - ev.xconfigure.y = y; - ev.xconfigure.width = w; - ev.xconfigure.height = h; - ev.xconfigure.border_width = 0; - ev.xconfigure.above = win; - ev.xconfigure.override_redirect = False; - XSendEvent(disp, win, False, StructureNotifyMask, &ev); -} - -void -ecore_window_send_client_message(Window win, Atom type, int format, void *data) -{ - XClientMessageEvent ev; - int i; - - if (!disp) return; - ev.type = ClientMessage; - ev.window = win; - ev.message_type = type; - ev.format = format; - if (format == 32) - { - for (i = 0; i < 5; i++) - ev.data.l[i] = ((unsigned int *)data)[i]; - } - else if (format == 16) - { - for (i = 0; i < 10; i++) - ev.data.s[i] = ((unsigned short *)data)[i]; - } - else if (format == 8) - { - for (i = 0; i < 20; i++) - ev.data.b[i] = ((unsigned char *)data)[i]; - } - XSendEvent(disp, win, False, 0, (XEvent *) & ev); -} - -void -ecore_window_add_to_save_set(Window win) -{ - if (!disp) return; - XAddToSaveSet(disp, win); -} - -void -ecore_window_del_from_save_set(Window win) -{ - if (!disp) return; - XRemoveFromSaveSet(disp, win); -} - -void -ecore_window_kill_client(Window win) -{ - if (!disp) return; - XKillClient(disp, (XID) win); -} - -void -ecore_window_set_border_width(Window win, int bw) -{ - Ecore_XID *xid = NULL; - - if (!disp) return; - xid = ecore_validate_xid(win); - if (xid) - { - xid->bw = bw; - } - XSetWindowBorderWidth(disp, win, bw); -} - -int -ecore_window_get_border_width(Window win) -{ - Ecore_XID *xid = NULL; - - if (!disp) return 0; - - xid = ecore_validate_xid(win); - if (xid) - { - return xid->bw; - } - - return 0; -} - -int -ecore_window_get_wm_size_hints(Window win, XSizeHints * hints, int *mask) -{ - long sup_ret; - Status ok; - - if (!disp) return 0; - - ok = XGetWMNormalHints(disp, win, hints, &sup_ret); - *mask = (int)sup_ret; - return ok; -} - -int -ecore_window_is_visible(Window win) -{ - XWindowAttributes att; - - if (!disp) return 0; - if (win == 0) - win = default_root; - if (XGetWindowAttributes(disp, win, &att) == True) - { - if (att.map_state == IsUnmapped) - return 0; - return 1; - } - return 0; -} - -int -ecore_window_is_normal(Window win) -{ - XWindowAttributes att; - - if (!disp) return 0; - if (win == 0) - win = default_root; - if (XGetWindowAttributes(disp, win, &att) == True) - { - if ((att.override_redirect) || (att.class == InputOnly)) - return 0; - return 1; - } - return 0; -} - -int -ecore_window_is_manageable(Window win) -{ - XWindowAttributes att; - - if (!disp) return 0; - if (win == 0) - win = default_root; - if (XGetWindowAttributes(disp, win, &att) == True) - { - if ((att.map_state == IsUnmapped) || (att.override_redirect) - || (att.class == InputOnly)) - return 0; - return 1; - } - return 0; -} - -void -ecore_windows_restack(Window * wins, int num) -{ - if (!disp) return; - XRestackWindows(disp, wins, num); -} - -void -ecore_window_stack_above(Window win, Window above) -{ - XWindowChanges xwc; - - if (!disp) return; - if (win == 0) - win = default_root; - xwc.sibling = above; - xwc.stack_mode = Above; - XConfigureWindow(disp, win, CWSibling | CWStackMode, &xwc); -} - -void -ecore_window_stack_below(Window win, Window below) -{ - XWindowChanges xwc; - - if (!disp) return; - - if (win == 0) - win = default_root; - xwc.sibling = below; - xwc.stack_mode = Below; - XConfigureWindow(disp, win, CWSibling | CWStackMode, &xwc); -} - -char * -ecore_window_get_title(Window win) -{ - XTextProperty xtp; - - if (!disp) return 0; - - if (win == 0) - win = default_root; - if (XGetWMName(disp, win, &xtp)) - { - int items; - char **list; - Status s; - char *title = NULL; - - if (xtp.format == 8) - { - s = XmbTextPropertyToTextList(disp, &xtp, &list, &items); - if ((s == Success) && (items > 0)) - { - title = strdup(*list); - XFreeStringList(list); - } - else - title = strdup((char *)xtp.value); - } - else - title = strdup((char *)xtp.value); - XFree(xtp.value); - return title; - } - return NULL; -} - -void -ecore_keyboard_grab(Window win) -{ - int status; - - if (!disp) return; - if (keyboard_grab_win) - return; - if (win == 0) - win = default_root; - keyboard_grab_win = win; - status = - XGrabKeyboard(disp, win, False, GrabModeAsync, GrabModeAsync, CurrentTime); - if ((status == AlreadyGrabbed) || (status == GrabNotViewable) - || (status == GrabFrozen) || (status == GrabInvalidTime)) - keyboard_grab_win = 0; -} - -void -ecore_keyboard_ungrab(void) -{ - if (!disp) return; - if (!keyboard_grab_win) - return; - keyboard_grab_win = 0; - XUngrabKeyboard(disp, CurrentTime); -} - -Window -ecore_keyboard_grab_window_get(void) -{ - if (!disp) return 0; - return keyboard_grab_win; -} - -Window -ecore_selection_set(char *string) -{ - Window target = 0; - static Atom dest = 0; - Atom selection; - - if (!disp) return 0; - selection = X_CLIPBOARD_SELECTION; - ECORE_ATOM(dest, "TEXT_SELECTION"); - target = ecore_window_new(0, 0, 0, 77, 7); - ecore_window_add_events(target, XEV_CONFIGURE | XEV_PROPERTY); - XSetSelectionOwner(disp, selection, target, CurrentTime); - if (XGetSelectionOwner(disp, XA_PRIMARY) != target) - { - ecore_window_destroy(target); - return 0; - } - XChangeProperty(disp, target, dest, - XA_STRING, 8, PropModeReplace, string, strlen(string)); - return target; -} - -Window -ecore_selection_request(void) -{ - static Atom dest = 0; - Atom selection; - Window target = 0; - - if (!disp) return 0; - selection = X_CLIPBOARD_SELECTION; - ECORE_ATOM(dest, "TEXT_SELECTION"); - target = ecore_window_new(0, 0, 0, 7, 77); - ecore_window_add_events(target, XEV_CONFIGURE | XEV_PROPERTY); - XConvertSelection(disp, XA_PRIMARY, XA_STRING, dest, target, CurrentTime); - return target; -} - -char * -ecore_selection_get_data(Window win, Atom prop) -{ - char *string = NULL; - long nread; - unsigned long bytes_after, nitems; - unsigned char *data; - Atom actual_type; - int actual_fmt; - - if (!disp) return NULL; - if (prop == None) - return NULL; - for (nread = 0, bytes_after = 1; bytes_after > 0;) - { - if ((XGetWindowProperty(disp, win, prop, nread / 4, - 0x10000, True, AnyPropertyType, - &actual_type, &actual_fmt, &nitems, - &bytes_after, &data) != Success)) - { - IF_FREE(string); - if (data) - { - XFree(data); - } - return NULL; - } - nread += nitems; - - if (actual_type == XA_STRING) - { - if (string) - string = realloc(string, strlen(string) + nitems + 1); - else - { - string = malloc(nitems + 1); - string[0] = 0; - } - string[strlen(string) + nitems] = 0; - strncat(string, data, nitems); - } - else - { - int size, i; - XTextProperty xtextp; - char **cl = NULL; - - xtextp.value = data; - xtextp.encoding = actual_type; - xtextp.format = actual_fmt; - xtextp.nitems = nitems; - XmbTextPropertyToTextList(disp, &xtextp, &cl, &size); - - if (cl) - { - for (i = 0; i < size; i++) - { - if (cl[i]) - { - if (string) - string = - realloc(string, strlen(string) + strlen(cl[i]) + 1); - else - { - string = malloc(strlen(cl[i]) + 1); - string[0] = 0; - } - string[strlen(string) + strlen(cl[i])] = 0; - strcat(string, cl[i]); - } - } - XFreeStringList(cl); - } - } - if (data) - { - XFree(data); - } - } - return string; -} - -void -ecore_set_blank_pointer(Window w) -{ - Cursor c; - XColor cl; - Pixmap p, m; - GC gc; - XGCValues gcv; - - if (!disp) return; - if (w == 0) - w = default_root; - p = XCreatePixmap(disp, w, 1, 1, 1); - m = XCreatePixmap(disp, w, 1, 1, 1); - gc = XCreateGC(disp, m, 0, &gcv); - XSetForeground(disp, gc, 0); - XDrawPoint(disp, m, gc, 0, 0); - XFreeGC(disp, gc); - c = XCreatePixmapCursor(disp, p, m, &cl, &cl, 0, 0); - XDefineCursor(disp, w, c); - XFreeCursor(disp, c); - XFreePixmap(disp, p); - XFreePixmap(disp, m); -} - -Cursor -ecore_cursor_new(Pixmap pmap, Pixmap mask, int x, int y, int fr, int fg, int fb, - int br, int bg, int bb) -{ - XColor cl1, cl2; - - if (!disp) return 0; - cl1.pixel = 0; - cl1.red = fr << 8 | fr; - cl1.green = fg << 8 | fg; - cl1.blue = fb << 8 | fb; - cl1.flags = DoRed | DoGreen | DoBlue; - cl2.pixel = 0; - cl2.red = br << 8 | br; - cl2.green = bg << 8 | bg; - cl2.blue = bb << 8 | bb; - cl2.flags = DoRed | DoGreen | DoBlue; - return XCreatePixmapCursor(disp, pmap, mask, &cl1, &cl2, x, y); -} - -void -ecore_cursor_free(Cursor c) -{ - if (!disp) return; - XFreeCursor(disp, c); -} - -void -ecore_cursor_set(Window win, Cursor c) -{ - if (!disp) return; - if (win == 0) - win = default_root; - XDefineCursor(disp, win, c); -}