From 3d22188d0e7dda8e4adac7aef3b566e589abafb9 Mon Sep 17 00:00:00 2001 From: Jean Sirmai Date: Wed, 1 May 2024 10:07:50 +0200 Subject: [PATCH] =?UTF-8?q?Space=20page=20:=20une=20premi=C3=A8re=20versio?= =?UTF-8?q?n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2024-05-01.png | Bin 0 -> 24789 bytes Makefile | 6 +++-- cold.h | 18 ++++++++++++++ exec.o | Bin 30528 -> 30896 bytes hot.c | 64 ++++++++----------------------------------------- hot.h | 59 +++++++++++++++++++++++++++++++++++++++++++++ warm.c | 2 +- 7 files changed, 92 insertions(+), 57 deletions(-) create mode 100644 2024-05-01.png diff --git a/2024-05-01.png b/2024-05-01.png new file mode 100644 index 0000000000000000000000000000000000000000..5c733327885f8109f58bcc585924b7d581f662a5 GIT binary patch literal 24789 zcmeFY2UJsSw=EpSu86)CM4AeMihzKCbSp?#5Rk6Yqzj=#Kt)BQN$(&cAT`o!2%yp- zNUsSsp@jf}1X9R-;`@H*e)pXJJ?EZ(+&ae1K;4Gjp0%H6t~uvgJNSW?3hSY>haeCL ztLpu`IuHoUE(m1zuLJwQH!S+_aPZF_=xx`YO zoSYr4grOF$R#r~X=gw{f7NjBsat@+;_tqn?l;sJ}gjDxb#uQmYAo10Pvg|9!!CikG zFuj$;8p{)Tuk_`+Qzs23&K=qA zF9G!rILGpe|IM{Ti8gXQe96SJyH8P92JYPr&9?5-lrDU9CAMzRo?wiY?TJ*5;7JYQ z^{*PWfItcc?Ck9HDIQV%h0BdQA9h&nZyOsY!zCauk3Q1X?c3Q}91wdzURN?R+gcAW zHa6}X9E=+r)Mx9QKZ#Nxnj^M~l|6+~aAN(8BNce$vN^!yy8inJ)S7o4+z z&u4Qv(H>qet{!())!yDd>WlUCkKowm=H}~CQdrS=`gw&Rb7Z^4ZU}_i@u7tUnvN#t zs6_DOg81a-=XcmB(QUy4hAe$eTY{%+2Q2E^Iy%BG?=~_rDnach6_HFJkcP8m1Vw`H z#ob26#-%%yB|TpO2;>Rt;s}&pR$h)cxeJ6KIDXe&$V+z<&C$_OGfGIKDB|u{CFZ2L z_?!{acotk?5EiR87b~%gx!wMN+TQmH0uC_E(ouCR4+7uG4haqI@w$Bs0y)|Ewh;n( za7KIoZph1~vh;&5E-;Uo)POX|K3S>TPLy-@FK>Z75uR##^0M4SR~M=%gD2(|=C)}E ztWNX~kslY*O{ABa{pg*HHl*Kb1Fd70Mb=C0<)Tk!{113;?!p(271YAM2vzytam2-&5c}%Uq)|VjP)?m|%i@kaylxS>lMX3RH`|oJmm}AlmF_&4 zOZVjr=Zcgg)C&rxQ_B73e#}HC&8p|X_}CO__mz+G4o(qePC$Boa(S)?%%Q2gtqbO| zVlypaUAb4 z3dX%X=NypE5r7nd;<`{@kAGhmjb`ig7;`|3mhOI}uBoZ%?~c}vt0uf;<28#lG+R<{ z2@ny4&Dncz{c3StH$cWEB_+vkv}TSxS^Y%Au`3QuwLqU<*n`9pWx5K-%H$4cCUFFtLIP$#5XGV!G_etVm~7(g}&p!<g9*^v5CHvn{KvL+u;{L>9XIuT3-6fyXqlJuejA{nljj^Le zD-*RjMZObf6T1>2FGZ}sNAih-(T%$k5V?=8RL_wDEL-pbR{6qGDB(&vA9$|SGey4Q ze#1RSIAty0QWpjbjTaZqD5j{YE-BThy4C3r)hHF-fD5YPF8RWJg~pZqssuAc+{n(9 z3a@&WPMg#T!7?~8yb@p5N#d3iy19_%yRw}^L*=l9ol(5X_l~XOgtlTVgSI$C9EYMj zx7JL+EZ&R%Ht~fS-I7R*tLij%Xn3FvBD zlJJNf4QmL`IKL!$-Lg|T6N;N4Thcd&I>0W4q#fze7mu1FIFp%Jk}kIp<4`u$+F4^u z5?^w-;c6+MneuU@5*=qN=zrNl>TIf^G&*HvV##%N7u9{VpkZ{X9A48G+dnvn?M>H) zlgP?v{kdY=wS%to70$W{De9E zj|>Rp=E1tVmq2pB#vTq#1^ndYg}TLoSC2qui1{R?8Yg0EgqH!|YUzv(4-fCe^X&rJ z#oRP&y|?eBJjVfM{%Cpvfm{kb9JmYe>DrDKIPj$M9&p~Li)YWC?FA|R&*OVQqV1QG zmbL-8cpwcV+4(){@glIfrpb8oD<>h4$CcF}{Xq`#ft32`8eV(94=r+kzRZ3Iq(^m> z?~^uWXCQ?I9L4WWr;<@kZx2WF2fjO!zkXw>qFP%i(b3ai1tc%Xq;P_QFUihP+P3#g zo^t@PGe5eDdEO6yp4Z*E4vg{Jg~MsSBAytibD9rjfxoTi{2g(pW$OhD+&q2)od|Y+ ztjXL%qNqNbzRN30esiNQ(PdN8aCIDN>fw7F?2x~(;=5v6Xf=Q~1A}d_^VxKs#B`R} zIg9?je~}|*-xa-feBeIz8rFD|@`r$`1%s&wdBDXy`t5P%=9&L!GhviJ7ko%uAe@4^ zno;#Is=n`05TEFN0aX|bR*nPbl2vt#l4sC}18Kj*Q?A-OK5p`7%%=xlF@xzoaARH* z>eS}VZW^V+<9n5bvWXIL9=jYAu=SC@t?YzWcUmnzDIcDi7{uevpQ#+$`b#&W)jBy; zRb5@(-xd8f(Y>!LQ99t(J~pm|I|95P6+Fk>6X^^rgMK;Q)c;O zHLn+d%vboKG4AsMM@3PY&Xj61H=E`2(fOqHT~ z59@9UnoZoJPgDHa);In((EuW~vkFT{BoWeoXP5{%f=0R`EQ((#!QTmsGXE%{tt6># zY~(sfu1{aUnI>p!D13%0foc5UUh0n9C+1Dqs;hepd+0C;;IB+&>r&0;tEJtFzDPkP zVQAPzhcbtfqfIbz$GfXWk&)yH4h1{QcSlFg?dPpBe|Ll@#doDvNws%$G|8N{C@q7X z(Jfs_2$Ohmld)XUG1m9MJiR$P+r(r0l+4CtU~i>!`jN9Y&gmYNxglXQF+9Qx0`xUc zOX<8~o_uA{ip8IS1oGz6)0@I-~l6a_#llQ!`LOt1h=I{8Mu2e0h zF;kA=DvfAZ=j9SLyI_;1X`!nt#a+6#L?Zq;p`8toeM6#KZM~OQ#op0T75uUV84Xt0 zTX&y5OxWs=Mkb8yxY+FY%!Q_q3MC|-<_o*_y7cMSXoBemI6ATV1Tx0d11-knJ4bk~ zUow})FX5Mj?Hn|sfHD}uXWF3BRHG!csIHXlndblt3hdxVuQR#SvX}~vGbb%-$+_w> z5i9!KoHUB*#`t3BAbfXM5RAsUt?4GNwa7cAQ(q$uoe}T)`}@n_(r$sQI=PQr33Rr) z6|cbkZ0$Zvl9q#E((q#PLBM|ZrSj|&6){QZU`X+Sv$jtERClFvduC_UD<^EQ>8`8!h&Z2bvGSc z(B5xU_El`iEZ~m6>&{zSJBRl7Q{P=_#p$XMD-&ZwBR);~i91AM>61q2h~Kic3_T`V z2T+{j--G7fM{p$(MR%!bqvKs@JDF8!T^<)NXpf|>S+jA=+SX9UFHRb45u`J!^79ue`ERu05X5U zvisrFSMLLYS&n;7#`ht0@BqP{q+&I|9)E%U-G6L0*qxQNY_${4Cy|&Z(C@1P33l)= zfP5mkNf;8XMOqA5`7bHDwSHXQ2{-LSnj=MOVH2Dy8~}hb03Wr&aeF?_uVCM0KYWqb z$&NuD&q>!1|LpS};GsM>Shatl`aj*_KW&x=@%TIk-0-giq~qDJYyWIU5KrE};A!v) z!T*YK7?hC&cEU9SWeiThypIebJzrvY4O$ z=V|Oj>sFh}Dk}cEMAbDgM-G(^DmO3@*Sx5zgejXFjBEdLtoq6R6uW#!ZbCjm)C_{=NtEDIb#$# zuD`gM&E@*Sy1Pb9Ror>!^;JjPwxeTOYVb4#37`H}hl;j@aDQnKjl!Ob-Fy1UUPLyU zIX+l0O#`sy1)G%EF9J+pjRFA5-v)G)1mM-{ZMNyCaG)@JNuv_R+QaLG;j9pdeU`}a zT|zplRh)&V!h{c7Pc&vM_-#uKwSXy01E>1?*(bE1MP9mNB6t9MzvT)p!ynK_W7 z34p>3ikM36Zgy6b3aFlLmj^3SUe41@q?Y!s(gluF(9;S#U4sB!<6RNJp`KwS}eYel;tH}%{{a#&z) z?HStyLTai-HcXLa-v+9dJgzWN>*;J>&)AQSXV9l2h^?6sK#1+|@yb4D00quxlMZ!C zOO=zRQ#QN6)!VX@L)$*z3#%qkIM<_zq8hpuy2?j*<7Oi08a{P)0U#lMNQ&fB(Fd3h z9U+KxeLDX=PXQ(CxYDO>J(h|A;s65iI&6(fLl})|CSA{69K*;H7nc#3*&?djIq(F# zj{SF0od1vm{qNWz*Ee4-!K0~d#FmP8rH4t+{c1^Xoqxzj4CYfx0@j33Jbm*66ZlV5 zj*2t<`y&^|aNzZ;!lQT*AhoTnZJTy??X^;;8X0Dm znta6qZJlK)!8z4d@DjmVovjNIY2%Afh}%V{*u+=jW4$?EKS5WwIE_5tc$W(&ti6+P{~-nx zO#b{wiCu6hyV>{rZPNzyY`^~27-n~aKK{?&R_nt$i zDfkMgcHh8vEDTi=mIfW2oVsyZG#!r-?-njfBMY!sKKU(_!7D}Kg@s+Yf&pTc^qFqj zW;=%r-q^;vN#A((%S?7TTvv5Yvx}xIQP>Vf^u+Pk0$^ZXtDg!g&F)xFcoALWF}{pI z@3o(AWv2OptiM0xD@FUTcHI5ZA>bgRn67}G_nYb0b)~aPGf`eO>K%n5PZ^%!mhI!@ z253Jh04Uer5upjj%_z&841dG^;RGex_PRWy>2RV;SGo7X1PE`aOo;DZs2w{d-`>J8$L3RDtFE)kNZLMfrbmf@hLYVFxRQa?g)rvhv5)@$2ZNRYVj$hC{i!s_wtZ_mE{O#f@%4Q1) zFr_|J?X~m-pS!0;jAHugy{)qWPS@hsD>{>r=hWj0&`^pX0jZsol)OHxtBtEd`CUJm)R8rfgS1jUl9|I+zgJG&s z|KFO@ZCKvk2i$beDfh+1mlPg_IB)8IKhG(p=PGeO)g|nc-`T0v09DA6gV4cHYru zX@~pzhhv!XYRf_?nrEU`P*qWOu7^e@cXx~RDW>mYp#b}NC2fUa630&sn1pR(cz13@ z$WtC`$*(At3^~XwrVCkAD9aY@${A6BWJ}6Mu`P| zSVg*J#l$xE01pe~W#tpn@<@L9#23}*yn1?<1iTwf)zreT)Dr5A+?BZNTD_eTWa`kjPU2wogy6ooMxJlpP9u?e=*zE-voR z%?s@NSb!7vFQV*!-lpvJ-QhB%!_~7xNYlB^_^YN#KSSc(W)E;XIVJ#+hz>m(_A<2+ zBa-Y;w{`^{u$G1F_N))^Pzmpu8hppG3o_aDb*VL#zLdec*g64XV1F~{PoYFb)4S_@ z;R>S||FLj6ODwB2Hd2MR;~VgSHh?bqiJe*Rz|a)g%_+(JZ5W&Gc3(`nfuh*v`?9jK z+3~|7-I7CHolzInONmFv=32k!e96ejfTdIG35e~b(0o@EjEoCu@s}FYNcm_hn34jl zElC4&ISDp}_4~?UXCgCmcp|%`I7)l*`W|(sx`5`iF9k!HtKN#cWRP}SWRPYX7}6L43D(Q+fi+GxR&P`y zQElcj3Q9W|h87A`5?|EDay#FX*bQkIbqGVs_Lu?RPE!i~8+01?FDLIsDZ~q=`Po%3 zNr6ff$e^tm`*~x4ZD`rkuq)BEwJ}jNHw$% zZjRAFJEuEPQ1KL##6m%b*aamerNgJ?iwdshuOg< z8rTr%0tSpEu+~38gTddIzNCs^{?Q8%3a04GrbnAili?fxV$l?WBJaPoX#VG+!G8vD zYBc_ZcjQ+nfU?8q4(8!KGQUrfT{Oy4H(JQ3;tQyueUM+Dx8RU+yC0tBbGKsH&*b0J zTpbfb|Bki2Q0EB(Rr5*2U0^adC%ug+ad=_mf>6#{L*`OuiaFJF;D|6Ma3@m`mDcYJ z$ZvK^Ff9?G3CvtTa%6;-%yot*wz6b>>}93L9Ux-hBWi;vWl=7_gbc^myRzb`-=OI4s?(D~>^8jJF4E;_2v(1t9iFFvok&SfG?dpGHYp9lNz9|%^<8U^OuW`S_ zPq{3ZRpeCY9Sk@j|Wu9Niy)GKOzKs7KzeQx`2Oq9k| zJ5yDSac?Y?`icVqs2VvHddY%Li5{1Kn!q)klDoJay@vqng>>%$&-R~x`A_@(FW9v6 zC9jy`fjjzA>k+k{jDU|yfSXGF>QRfY$p4E+aLc+q|BD_tX6fYq^(|~MH|HNr!MSE3 z`yWg}X=g2BAPwZ(`Mc$Z*+mNe+1V=!dOgbijb{ladLv#uM{maYMQmzsX=qdbM(&Y!Zgt*gn@@m~X5My9@n z^U(eFQR%GCU5oxSGjvgDr8yeKas0tv(0xS2DMovv!1tb;nu+Y3^|=QOk;I;qf^aa=QK_>$|Yl zgks}IzWn-=Z*lCiiGsY^Gfi(fs(&T$uT^KNub0=5eDFA}1K$L^kLYC2(UmS7-<6uD zlWU1C)wcQ7#9p$1HP-XxLf=fUr}yPJGsZoK@QKt;UC<=*FUN1+I0J_{Xl)`8nqX)_1Jh)74(~Az%a5r>z({nshc@uI9RVzCE1zRjIa8><-KR z9OFu-0iK-i^eOECHBj0Yr6XVTw?-!3c$yFD@?VOJ#SF~c_0UK%y2AnZTm=p{>>j;i z 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 I>h~i43ER>+9RL6T literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile index c84ec71..851b5ea 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ SHELL = /bin/sh CC=gcc -CFLAGS=`pkg-config --cflags gtk4 --libs gtk4` +CFLAGS=`pkg-config --cflags gtk4 --libs gtk4` # --libs gl` # --libs glib-2.0 WARNINGS = -Wall DEBUG = -ggdb -fno-omit-frame-pointer OPTIMIZE = -O2 @@ -28,7 +28,9 @@ run: exec.o ./exec.o - +# /!\ erreur fatale: GL/glu.h +# gcc -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -g -Wall -Wextra +# -std=c99 -lm *.c -o formattage `pkg-config --cflags --libs glib-2.0` diff --git a/cold.h b/cold.h index c6caa5b..5eaf001 100644 --- a/cold.h +++ b/cold.h @@ -17,3 +17,21 @@ GtkWidget *get_results_page_new(); GtkWidget *get_discuss_page_new(); GtkWidget *get_help_page_new(); +// https://docs.gtk.org/gtk4/visual_index.html < widgets gallery + +/* +Dans : space_page_new() doivent être déclarées +et organisées de façon aussi ergonomique que possible : + +- les commandes de mouvement (run/stop, slow down/speed up, step by step, do/undo/redo) + et le buffer qui montre où on en est dans le temps de simulation + (un seul bouton pour toutes ces commandes ?) + +- les commandes qui modifient l'orientation (X,Y,Z) de l'espace, le zoom, la perspective + +- les commandes qui modifient les apparences des grilles et des flèches + +- les commandes qui modifient les apparences des objets et des situations d'intérêt + (+/- transparents, colorés, etc.) + + */ diff --git a/exec.o b/exec.o index a34b54e2311d9543e051913b8cfe1cccad4df7b8..12389b19b9f437f6381aff83091e21485f2766b2 100755 GIT binary patch delta 12272 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 delta 11837 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νGk_Se1?1+>44pAYov$lCN!lmHu7~vF6g+n>XyVko$D9FtjbO_ z^k24XG+b499>3b5_n5BDM*K<)1#V1Tm$t! z(xk2pW1`q(9byASdkv&P3+f3Yr&dOqou7QFYaoX7F;SFKSG10xmb zF)m9C?%Jn4ePJUP^m{B@m84G#Ipy5-2Pmh=boF;nZ7sK~cQe{~Ps%@s5W+~;Bi(eH z#6DakmvP@WzLRk^ctr5EgdwW#Nt6B=$_aUT*#2@Z<+kCn%C+@7#r%M_su03^rfcNa zd(Dfzn1ZfkEUM~FT{AkW?odXZjnhE(Rs721n7Tw=>t;o!k`D2i@zaT8bHcR15-F)G z5t{D$&p1^Sh`g_T)7kA`CvK`dZL$5VIWVp9FzArbhKPq(UGc+|Q7(^Pp2}MSAM+Dr zxsozVqT<49C)VH)i)O{9@*!O6t61Ddx`f}Hh2*998U)PBfBH!NEH+kSPMs^WU+{7r zt`wbol^uY4mSbMfWNS}chI*ZDAq2KgL` z3VF^w2Zmt}CcZs4?z3iQpmj;7T>Zxlpn0^(-oOfo8 z@#b%)q$F0KpN3F1X#F(0^(4soYSs_?iaigPfnh0(0H4^)JbCOy3>ZpP;#m?`G%9(N~*1qXo2@`lE7#wATy}BpD`+?wHpo);H_AB*`S8nN8 zG(D;(fjO_ggmU!fJY2`EPf=g{MmA1a@?@7+Q(ig;n`e0Wy&d(4azOBkbX&?+M`wBP zYm$S@jlH3*|9t+cfxi&K!1vET0>7;CI&;%)J(h=i+zEJ!Ms?FQ3o)`HnR%qG^c00MaS=Z|&-ZVRQ9i3C zlObXg<)q3!9OIP|r$xTltT^$zuz#As>&@c3Zs1xgx>e9nLTl2 zZys57Owua9T|2=YNae_eUi={a{f#pM3tIpG5%^_U0Iiz0^{INdrH`8QR;-Gr+w+y% z`(JpKhEc7j2=~w;V&%y!P6fU6@qH>aFV#}vztD(0#-z-cR^fZ`)QITPIEjnmdU8K& zir&jm*|i1p{Xs_NrjesZBToXht{H1cZzNQc%A&%A4#n|$R==$yMe!K7deV9+u-L!; zWMskwY>$c1GEF;P~^i9+!nhy=SK^A+@UcQO%bANVfHuzCyrH%VuR;X?7 zqY-J-8>0!fT-t^vddO6d1pb`ofr>v5W~%suo>%9I1bQ?T?k`s?0x|)OFB@`S%6%A; zv1zN0yVb)vmU?h4_Xh*5%I!AiyUvWhmBkC&_ll2*Or^q>9xZR+zuDa3uV7Pgpl+oo zR~B0@tSELFS3`ECP-$A{NcI;};}@u%JmxCMTCOODfr_-hY2miU~D{^S>Dtt4wC zH~~fWfs4_Fpsg|_cKswl5u7b0g2>O=04Js+)(xw?rChM9Inn^Ok|Kh0lPD5{BtBm{ zIh@3>Pq}kbnvKc~lde!4U}uvi!D32dN}7v+M~$^zX~S}6P}U;igmcr352f-5K(OZSWJ?(WbmT%RExLfl0rG z$#oQ|ab@63ssF0~*Z6re&r1w@z7j0M4+`oz+>OoaE*L|0I`i!WWzCDZ2HQXJAX)FI zaDDuiwdx2MmYap#lzb>j`#tE9CpN}q7pjw+rLmsA3oDFNXP29DhutW_9K?qGzCVMj zS5xEM3^W<%phq1`tCybf3AaYlL9gBl7A6+DP+K1lI%~PA9Sl2Bq4y@ z0|{R1Nb(S*fUdYgq{oJ?V9R*GxQ76N&{YLA7P<-~VA0gDc<#XA+yJ?^ApYM=7T`S* zZ%O>WmnWovXm5G&mTSMaJifiw@1br1jobl!KS>M? KCm_b}%KrgEd09CC diff --git a/hot.c b/hot.c index 36b92d9..1a48834 100644 --- a/hot.c +++ b/hot.c @@ -1,6 +1,7 @@ #include #include -#include "hot.h" +//#include "gg/graphics.h" +//#include "hot.h" #include "warm.h" #include "cold.h" @@ -8,7 +9,7 @@ GtkWidget *get_space_page_new(){ // https://docs.gtk.org/gtk4/visual_index.html < widgets gallery GtkScrolledWindow *scrolled = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new()); - gtk_scrolled_window_set_min_content_width (scrolled, 600); + gtk_scrolled_window_set_min_content_width (scrolled, 628); // ad hoc ... gtk_scrolled_window_set_min_content_height (scrolled, 600); // GtkAdjustment *width = gtk_adjustment_new (600, 300, 1000, 1, 1, 1000); // GtkAdjustment *height = gtk_adjustment_new (600, 300, 1000, 1, 1, 1000); @@ -19,12 +20,14 @@ GtkWidget *get_space_page_new(){ GtkBox *controls_box = GTK_BOX(gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0)); gtk_box_append (controls_box, gtk_button_new_with_label ("RUN / STOP")); - gtk_box_append (controls_box, gtk_button_new_with_label ("slow down / speed up")); +// GtkLevelBar *slow_speed = GTK_LEVEL_BAR (gtk_level_bar_new ()); // or __new_for_interval(0,100); +// gtk_level_bar_set_mode (slow_speed, GTK_LEVEL_BAR_MODE_CONTINUOUS); //_DISCRETE + gtk_box_append (controls_box, gtk_button_new_with_label ("slow down / speed up")); // GTK_WIDGET(slow_speed)); gtk_box_append (controls_box, gtk_button_new_with_label ("step by step")); -// GtkLevelBar *buffer = GTK_LEVEL_BAR (gtk_level_bar_new ()); -// GtkWidget *buffer = gtk_level_bar_new_for_interval (0, 100000); -// gtk_level_bar_set_mode (buffer, GTK_LEVEL_BAR_MODE_CONTINUOUS); //_DISCRETE - gtk_box_append (controls_box, gtk_button_new_with_label ("---- buffer ----")); + GtkProgressBar *buffer = GTK_PROGRESS_BAR (gtk_progress_bar_new ()); + gtk_progress_bar_set_text (buffer, "<<-- BUFFER -->>"); + gtk_progress_bar_set_show_text (buffer, TRUE); + gtk_box_append (controls_box, GTK_WIDGET(buffer));//gtk_button_new_with_label ("---- buffer ----")); GtkBox *XYZ_box = GTK_BOX(gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2)); // spacing = 2 // GtkWidget *scale_X = gtk_scale_button_new (0, 360, 10, NULL); < à étudier @@ -54,50 +57,3 @@ GtkWidget *get_space_page_new(){ return space_grid; } -/* -gg/draw.c: * Draws the current buffer to a gl_area -gg/draw.c: * @param gl_area, ptr to the gl_area widget -gg/init.c: * Initializes the buffer of a gl_area -gg/init.c: * @param gl_area, ptr to the gl_area widget -gg/init.c: * Initializes the shaders of a gl_area and link them to a program -gg/init.c: * @param gl_area, ptr to the gl_area widget -gg/graphics.c: * @param gl_area, ptr to the gl_area widget -gg/graphics.c: * Shutdowns a gl_area -gg/graphics.c: * @param gl_area, ptr to the gl_area widget -gg/GtkGLArea.c: void *gl_area; -gg/GtkGLArea.c: gtk_widget_queue_draw((GtkWidget*)(stack_index[i].gl_area)); -gg/GtkGLArea.c: GtkWidget *gl_area; -gg/GtkGLArea.c: gl_area = GTK_WIDGET(gtk_gl_area_new()); -gg/GtkGLArea.c: assert(gl_area); -gg/GtkGLArea.c: //gtk_widget_set_size_request(gl_area, 1000, 1000); -gg/GtkGLArea.c: gtk_gl_area_set_auto_render(GTK_GL_AREA(gl_area), true); -gg/GtkGLArea.c: gtk_widget_set_hexpand(gl_area, TRUE); -gg/GtkGLArea.c: gtk_widget_set_vexpand(gl_area, TRUE); -gg/GtkGLArea.c: //gtk_widget_set_halign(gl_area, GTK_ALIGN_CENTER); -gg/GtkGLArea.c: //gtk_widget_set_valign(gl_area, GTK_ALIGN_CENTER); -gg/GtkGLArea.c: g_signal_connect(GTK_GL_AREA(gl_area), -gg/GtkGLArea.c: g_signal_connect(gl_area, -gg/GtkGLArea.c: g_signal_connect(gl_area, -gg/GtkGLArea.c: stack_index[stack_index_size-1].gl_area = (void*)gl_area; -gg/GtkGLArea.c: gtk_box_append(GTK_BOX(target_widget), gl_area); -gg/GtkGLArea.c: gtk_widget_show(GTK_WIDGET(gl_area)); -gg/events.c: if(gtk_gl_area_get_error(area) != NULL) { -gg/events.c: gtk_gl_area_make_current(GTK_GL_AREA(widget)); -gg/events.c: if(gtk_gl_area_get_error(GTK_GL_AREA(widget)) != NULL) { -gg/events.c: gtk_gl_area_set_auto_render(GTK_GL_AREA(widget), true); -gg/events.c: gtk_gl_area_make_current(GTK_GL_AREA(widget)); -gg/events.c: if(gtk_gl_area_get_error(GTK_GL_AREA(widget)) != NULL) { -gg/graphics.h: * Structure describing a gl_area and its parameters, used to create a table -gg/graphics.h: * of Gem-graph client current gl_areas -gg/graphics.h: * Dynamic array of ptrs to dynamically allocated gl_area_entry -gg/graphics.h: * Initializes a gl_area -gg/graphics.h: * @param gl_area, ptr to the gl_area widget -gg/graphics.h: * Draws the current buffer to a gl_area -gg/graphics.h: * @param gl_area, ptr to the gl_area widget -gg/graphics.h: * Shutdowns a gl_area -gg/graphics.h: * @param gl_area, ptr to the gl_area widget -gg/graphics.h: * Initializes the shaders of a gl_area and link them to a program -gg/graphics.h: * @param gl_area, ptr to the gl_area widget -gg/graphics.h: * Initializes the buffer of a gl_area -gg/graphics.h: * @param gl_area, ptr to the gl_area widget -*/ diff --git a/hot.h b/hot.h index 5ca0eb2..d186824 100644 --- a/hot.h +++ b/hot.h @@ -4,3 +4,62 @@ #include "cold.h" +/* Comment afficher l'image produite par l'actuel gem-graph-client (2024-04-30) + dans la GLArea de la space_page que je viens de créer ? + Comment la connecter aux widgets qui la modifieront ? + <> + + +#include "gg/graphics.h" provoque une erreur fatale: + GL/glu.h : Aucun fichier ou dossier de ce type +> Je dois modifier mon Makefile +/- charger cette bibliothèque ? + + +Ci-dessous les fichiers de gem-graph-client listés par : $grep -r "gl_area" : + +gg/draw.c: * Draws the current buffer to a gl_area +gg/draw.c: * @param gl_area, ptr to the gl_area widget +gg/init.c: * Initializes the buffer of a gl_area +gg/init.c: * @param gl_area, ptr to the gl_area widget +gg/init.c: * Initializes the shaders of a gl_area and link them to a program +gg/init.c: * @param gl_area, ptr to the gl_area widget +gg/graphics.c: * @param gl_area, ptr to the gl_area widget +gg/graphics.c: * Shutdowns a gl_area +gg/graphics.c: * @param gl_area, ptr to the gl_area widget +gg/GtkGLArea.c: void *gl_area; +gg/GtkGLArea.c: gtk_widget_queue_draw((GtkWidget*)(stack_index[i].gl_area)); +gg/GtkGLArea.c: GtkWidget *gl_area; +gg/GtkGLArea.c: gl_area = GTK_WIDGET(gtk_gl_area_new()); +gg/GtkGLArea.c: assert(gl_area); +gg/GtkGLArea.c: //gtk_widget_set_size_request(gl_area, 1000, 1000); +gg/GtkGLArea.c: gtk_gl_area_set_auto_render(GTK_GL_AREA(gl_area), true); +gg/GtkGLArea.c: gtk_widget_set_hexpand(gl_area, TRUE); +gg/GtkGLArea.c: gtk_widget_set_vexpand(gl_area, TRUE); +gg/GtkGLArea.c: //gtk_widget_set_halign(gl_area, GTK_ALIGN_CENTER); +gg/GtkGLArea.c: //gtk_widget_set_valign(gl_area, GTK_ALIGN_CENTER); +gg/GtkGLArea.c: g_signal_connect(GTK_GL_AREA(gl_area), +gg/GtkGLArea.c: g_signal_connect(gl_area, +gg/GtkGLArea.c: g_signal_connect(gl_area, +gg/GtkGLArea.c: stack_index[stack_index_size-1].gl_area = (void*)gl_area; +gg/GtkGLArea.c: gtk_box_append(GTK_BOX(target_widget), gl_area); +gg/GtkGLArea.c: gtk_widget_show(GTK_WIDGET(gl_area)); +gg/events.c: if(gtk_gl_area_get_error(area) != NULL) { +gg/events.c: gtk_gl_area_make_current(GTK_GL_AREA(widget)); +gg/events.c: if(gtk_gl_area_get_error(GTK_GL_AREA(widget)) != NULL) { +gg/events.c: gtk_gl_area_set_auto_render(GTK_GL_AREA(widget), true); +gg/events.c: gtk_gl_area_make_current(GTK_GL_AREA(widget)); +gg/events.c: if(gtk_gl_area_get_error(GTK_GL_AREA(widget)) != NULL) { +gg/graphics.h: * Structure describing a gl_area and its parameters, used to create a table +gg/graphics.h: * of Gem-graph client current gl_areas +gg/graphics.h: * Dynamic array of ptrs to dynamically allocated gl_area_entry +gg/graphics.h: * Initializes a gl_area +gg/graphics.h: * @param gl_area, ptr to the gl_area widget +gg/graphics.h: * Draws the current buffer to a gl_area +gg/graphics.h: * @param gl_area, ptr to the gl_area widget +gg/graphics.h: * Shutdowns a gl_area +gg/graphics.h: * @param gl_area, ptr to the gl_area widget +gg/graphics.h: * Initializes the shaders of a gl_area and link them to a program +gg/graphics.h: * @param gl_area, ptr to the gl_area widget +gg/graphics.h: * Initializes the buffer of a gl_area +gg/graphics.h: * @param gl_area, ptr to the gl_area widget +*/ diff --git a/warm.c b/warm.c index 99ce544..7c9aef1 100644 --- a/warm.c +++ b/warm.c @@ -1,6 +1,6 @@ #include #include -#include "warm.h" +//#include "warm.h" #include "cold.h" GtkWidget *get_measures_page_new(){