From 4fcea738ce0c21be9a9cf53f65fb3e0a7a318c35 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Wed, 21 Jul 2021 20:28:25 +0200 Subject: [PATCH] lignes fonctionnent un tout petit peu --- builds/fdf.o | Bin 141400 -> 140048 bytes fdf | Bin 123512 -> 123352 bytes includes/fdf.h | 60 ++++++++++++++++++++++++------------------------- srcs/fdf.c | 59 ++++++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 85 insertions(+), 34 deletions(-) diff --git a/builds/fdf.o b/builds/fdf.o index 455ccee2e319cbcf24ec4a7cd0811bf0ebb85c99..0811ef26759f4e6a941710d7635415fca11387bb 100644 GIT binary patch delta 32651 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
  • pAF?f6aIsTOR!R|UBZ0^6}D6}mIl zFW7B_Fk)}E4E9sXdrwDpvwkqbYQlpd*56n51HthWrdEC$WBq2`1K@cIAAvP}n6dS9 z6IRrR>a%Xj@X^vAgb+ndS;ul^g-alUIH%>4jO#1>TOHPKR{9{>@wHI;d-t$?JEaeh zy@Gzl?oL@nweD)+<{rWL#lh2ig6zl5?(EP&hZL=0VO-IZ+{K0ooMyUIL=6p zvbq2ngpKTz^b2yhuO)nWAA4_B-kl+g*xOWUWtYOGeC)PQ>EmR3dPwQ`cybq}_M>%A zsW7%U;oeys^=*ZJ1V7;(TNvwC;_iXauIN51LRPsl*8fmJegU%^t= z9MkGV#o!}+@d1{bD7+7XgkP2&pMHm}8x#`0EDKF<<=q2H2%nkD!7~(|0&p zR5%D3g!5W4o~Cdw2oQc&?qe1zyaU3Bz4dQrZ~anR5qD49TIF_&JjMs5_t2(kMUQ^ z`wX}dn=0Vli@Tq_ec37@fsa-{XaYg9x&?NjmG@t=He0_iV_BVO$X?c;!diL**_i3~ z(FTF*8O&O;JWuGM5}gDYgrCmlsObtXfdJtrWkioscoKvOPiey5SqkHO=!A16%kvb* zSEHUqoF&Wc3WbM)hj2(XFZl`|0Y75zC%16gA%zdiO|bQs##TMe@5A=bD*Npaq15U; z#`r~rZv(Rr@#*^+pH{dMxDn&;3V8Qn3;z~ktINu2BLpc(itOU_9~obSLc)JkW^elC zN%~kh$GcXdkT)y1?Z%_EL!4%+5;PWJQldc=f$;%5_m%E6VUIe}Z%;6o9)b@K;`X+=+^hFf8OQ_IA*}IwdvBb9vnyEF zRd+d+bv;155WsNGhA%SK17sJ333qsku^yFqP=wfbYAa)%=yz3F*NF}u%DQgA4@A(p z=mAA%u>$c+SgKBZsrx)0Rzv7{JbVP66L@%@%khkC@^pk1VDL2o=MZ^(qU-*y=vxHN zxsP+cZsS9&W0io9ygNys&`t6V1POPT%5FoHH#RKchBCC}K|n0{94I0DvuwhrDQ|o^ z>jiA@-cll&CSu-a7qGoJIt<1TdVL9)0)1tbs6IIWNxUAiCC;K@s6oGWqCO z_|n!9Q>)xnskK^=k&E+0>Jd}L`|Q9QNBpiL>w22ovxaruFg^%j65f4N7?{d5U>NErh*O!9nT8==Na5cGM&@oG&H36PPFv?3U&tZ6c=e5Q{!w&Fbe0}_IAPtxdO;AwIY-F8Ll6DwP)PX7 zPWIMAKM_g@AKb-Q_n0Tabqw+Gxs3HZ_$g!{_71rF#@<)t{zvz>*~vE!*8#$mntK>y zT{E~GK1zPsH6HJ=LadeHI;ycRbHrvE$G1b^Rh-=L z+lN=NQ>~VK>AL(Qi@kMS-Yv{5S#bFN2C5Hh~QPZjj}T<13}!VLE>>!1z#YgU61c|7YERFzH2w@x{bb+?SQuL zA+@6IcS7(u?!j(KhTX?aYj4Q_4y&7{yxi;QmKji;?RCo>1lQ|W3mc{Kbnm|lG6Y&O?Ck3F*GNfqsQB;RZEsTm}DvqSsA7=Q9#q_e%Ul1l&G3=gWGnONu{kaRTpJ zUJP(>J$XJX>#r`+ClH~iyLPh!w^P{zvpx66z04M{DueT`6_G`QO1YC^9IJ+b2IA~6#fqUgg=m^t|+`2 zLWEnTvi_68dm)0@%!4a$U>1z@XZ`0q>EJ$%RvW;38lNaNYs*0z8$Mdk6}qqBYyD>k zzjkL`|MCugQHW8!z3ye)O@*u2oAusG|HmHI^-uBOBglVZNz+F&)<4B_Cu9)5qbXzk zQ#_3zK=^DD<7q0>F?anlbE@GlkK#E#)f@}55PXCi z%8iCBYcc#K1QDBt5O@o%zK~ltnRH@SlfZutaiTmc&}(KIgbUIdnis3Zy5$-3mhfiSxLBh)hu|7j#{6p&awDo*A2}9-Vm6;t%@A|*c$((CPaa7$1Ex>_~v+!s0qMhu2rOwyN&4#Y? zOZ?=_D(3%>I(I(k67F}{8gnd z1lPNm+9Ok0*NYN9?td3&pzaWeTFDgtjSBKIgbAOh$NKLIFM%S&ux|-IXe_5D+(zJd z4_$w}i+yS-+z>p3kH}q|UW#r4Kj8@vv3GmrJrqKSz4pe8Jqllv;-o5le-_&hRQeDw z?_+A#ua}QexEi<#FX_qNQxxt5KEkW_F}Fj`8p~@RFY9_Ttto@tcU>$8-$>i19UM zvNDw*{1Jwk3Pt48QOc=1$Y5~b;~VFxgB((Kw&Lj19p{n5j2(Q4Bs?3)nd?bz^Vc*{Y9cUEd^^>%hA1eY?Sj;hYmYGSLqS>~#U(#L`y!#Qsr z!1@J+r$dNv(HPdRD2#8yeToHc2j(-hx|GG(7(U*F2kOJOfSd3!S-13^%xLfte*Fpd z(r@POhalnh(l>8W!S_KS;U}a)^}j(7iN2ZZtRM~AOL? zt77mI{-rNxdB4IBK#1@Lsm)^we-07C^^dUkn+m@Q<|5*~YZ-s6a0hS`zHcMrVug=_ z53zX&7F@*ptj7vObnZec4aPHY%_2N{Id z3a-yqF^qd(!VgK0lm?37mJlZVjsnI4&VRD`Q5d{VaG0e=863 zblQ)DpRiMKMV0e;5JK$Uv!3<33SVx{LPMoL1y?SaemT}Jg^v|XbxZ$QzeK)N=?6-& zuvO{SPpKbMy7imvpDA5lXu&5{(j}~ftv5K5ly3clXg!r~{c8SLrCUGazf|egKNG;C z1c$Meu=Ve_y`~(jf4JaFr4O!jsLN&ZbJdE=WZXqd2pRa>=`iT3seRM@&g}7g8JKm| zbhOv38vREn;n-Ev)VkRCJD%6B3eA5v-ODA*-TguE|86>!YukhU@i`P-ek(2eJe1(2 z{i*uU{F>=*KbZ#EbbPNq?55+dX;4hZ$_=6UA9#FtIAr6oTrH~~fZJhD#&2(mN$o6Z z6$qC`bpd4miKLbe^{e~DZL+y;Gfp_tU~MXd_>?^2SQT?*CGZ8#nLJnsV7AJ7TkZDWV0T!%c6Rq9S6n; zb{fn-!yEHb> z5y&o&M(w(Bo?1iLj;=?cnAEX zirNL-)iA;_C?<8Ls8zvDg*pb=l~7$KYCW#+LMSHnu~^(NMJR;q%Ba3BD)t+yZ?q-# zJyEgI%cJ@VWLH78VGk}_LvT~sUWH;(`-qAWDn-?72dYCw#lK6YDnwgSw~C56tAgrr z$gYa&QBhlSiH}1usl}q+wZV<1uS0e<6jOV07Meh~CaNc(nA91f-ou4B0om12y(DTa z&e$m^M%8|;Cp7=l^uV`pvTLAG1rG-PeXPsRM(3-i-%L~e?l?IWqWga4Y?aeAiFlIO-02zq?&yTib+it6Jy@N<#L>S8?x)5{E5iDc>;I`ib-|J7aM!ncue>^a$|h*puv??1^7NG0HbxktdM9zX>grAEZ{aC3sG#b z$AXGA_HK+Zw!|7WiiuH^*rF!fcg;SKgnZube&6r8&%J+SKk6##k%QYeQo6l-SHrG;R`7zVPD-cpfpJ3KUmeEI= z+m9`yPuKKDDWOb8zPUnD8T~V}KIJ|7{_oMJzehht=#7$8GUAdBGRssrWbSxo8GT9l zocHJ#y+@z_XFd9tN*Y@C=Zrt;x4uWe`#t(Y@6n(77kcVny6`VDNPq1;`aAE@7rjUS z>^=I|DXyabzfFOZ>Pr3pO>anbCH3F*6;oYF{WpD;R98~}P4AlON^0oMYpP@lJX2js z|F;VMsjj5{n?5AfmDGRI7c8k5Qm*0>FG-4>W9=rW@poLk>-5yb+TxtUXq};*%JM3@vDiiL!+Nh)K7_i z&VJBMiGIeA6Bhk?A~g~g{cb{jj(W}2J<-HqC|PFiKRf#VoCIpNC_6Gf^vJ}jq=;qN z9q*7X>pb<-TdVUdHoGJKwWd*F{37e@@5RNccg?}fSzS~!uEN3^!VSnhS+qz|pVq8w z>;xl4huP$gNCO&q9hY?hUfswgX)l_VK7)WVCyUnB7S+p?^DT#RlEkIYY|Z72rR7Am ze0xdSjV$T((T=fM-^EUOoPa61mNn{9R!23bMtR<>oVu*WGG66ZwTX)-Z}L{{?^2)d zeXV|3)sx?Oqn>by;W4jO8&@Ab;EmeYb#=kmS_2q={HEZ(n=j`Ze<`r5)0gQwzQS1B zdD|7_cF2iD~a9;yQaLo2U;P+Z*C#$_rwUW)3_F@8?% zpnB@=z-G4X(8shxBl}PrSx<^qey5gi*o%MmotoazonO1JE^IiI$J|pbg1p@G?ooFg z+{dKFHn6YliIzrLWBxL`^@!>o)g!9s(V{o^)eb?8tn1yUf}*{|`|8plSDt%cJrI<} zv+t{J!9o0&duq4fj+V30UVPT8qSbfRy}{M&T6|kvoZTuRsq3`UBN2IFMGfz%kAmy) z#`jd)5LbS^uG%2P&2R#hPAXgLsy#!3c+p*TVMqYq`K@|7B$7|Lt6GKD;0^AnbwleJ z3%p%vuu{>$yTY3Ite3G_&D{+}Z_p1$oPjO^UKVYlUK`Fr;b|{N^@`1&fD$375tVI> z47i8_VMsI&{UF|EYA#xf%^qQBp54s8dDge6pY?r_50yO`<4MaRE-S{6-7I0+p;298 z)oYlqh#Bb|cuVjvB{6%-vphg}% z;jyllKIP<>Zvd{o_kyUF{~aRc2lh$-k8t7t#%K0_sFB7Q;r!*+c}DW!GTA# zv;3ykj_IblHawZ{x*^(WcT4qcT#pCb5bdv;=H6G;=Fx%t(q(mAw0E~tU(x#1!ap`U z;!*!ge@O?teAM@{SRoj2ROhHpaamWRI!1NCGC5zxRq7Z!$Co%UD(knnte5d#v~3w; z5C0|?y}DRX99@|i=?EB3;dZgOI0Uhfj^kHHaKYNJ*;4V@TJ9r2<;Wat}Zw22c{jcy8_!-#W5(d6OeIo>a2ua`+ z@E~v|I1{`Tya0RwybfIPEgA$TfM0{te@8=Bl9U5(4$cQBfwzJOfe(Q*!T#9jPl4&e z?kp}guD!&@RAj1aTt%M#m0CZp9zXPj+AFS((SVREIp$K?YWUY3|11%Dhrm))g^JU8 zGiyEHSKa~zDSra~Z9qQVMgGViQJS9zHAh69{7e3k()|6@Jw)NNqM|zok|{pex4fL%0+)4lJ1r|u$8l3 z2UG2Dsk0!uLv*{PZfNDKG>6z(J>9CRk_PFZ`lywgG8@uv)i%DWvI){LH2~5%NN3b` zkRC%isSblw9_!|*nhVJX(sXqjqX-3;p_!2A&h(?%$SGX@gjrTF#9`_y!pMB& zcgKxaPx-h8;olDElGM=FA1LlvN=fSa)^6qEA^BtRe4cTHHg%O_ zkWQ&_ZR+ZuLkfAMj%(9iiKo@1e%Z!ONrQAveblD6at>0a+OBP9y(gBE`(yRfwte*r zAigHCmpUQAP+f;bbPB5wN0icQ0i-0O24tb_FYF|sa0Wm>MZQr1iJ(hn6wvUpE!Z_%fLx)1* zB3(Fik!5rV(1k;Xg)gq=z%9AV z-$big@>pK_7;e_5o4Mqvy5vFU-*L%9?|aG_OCMU_Q{ew{KK6(AcdRx_jp5s^)GwJs zB_FtlOAX;kZ89d*Q8%W#mu~@=Yl@9^)ay|6#EQ}s#dTDxUhd_GmoHJw@KD2`$hR(0 ztn*YqfZ}+C62&ENbtx2|+LS2Xc&lfjFk#}gMjh*_Z=pDV2N6w?Tvx5z+r9k3N+k*h zAGKTW8ZiN|6w45ofvv)`N%?X~l2pzO8;7&dO54r5zLvt^hU5XRg(EE+ERLc_nOl6V z9_n2s^vz;P(s!o}X1LTEq_YT{Mk)O-$dS2n8MjK=p!BAPB+HhNXHP|G-a)lZb2rv? zl_bS|6%^$LY=BrF1*CFve~7_Ce2Z;e2_q40e1jtBKYtlWr)!DTARBbu8ekZ`Q9}QS zQ8~+J<0NUOMY#@G$yOVdVEeaP0kve+KMrzvk_}eBrbD(~K`#a>T1E6hq5>IFrTpO3 zbjiYo>bhDLu7|!NwdrYf047=3lI&yUg3ZRF63PBnqenuvBRSA&GRgKNhgi+s1-UZG z;Z}=Db|5*@>KwKm3rCWhTU`xA{}xp!5o;B^53&=<@m9Xr1TCCNPO$QefLxX24pt3G zu10c_l_jRwqWU|?DOMFpu0e8ttFApEyHJ^Qs}z!5NgipHvV$l3lH)Mx%d2F(o{$t70w<5~GB_^_)y3 zm`H?J-|dS87l}yg8qJW-&(Vtt0jUyVf|G1Gb%HBg%^M6n#}MRSnwWfX0Ttd~=wo=D_de?kdAkyyvA zH>&~toY-}>RX=CnR&|lH#F7m|AR6+?daI-HP^}@)4sDj3L3PV{2LWaZ@wf^xONe=@bARV5hY%Q+Rd=G8 z-P<9O#A*oN#Me>d`#T$Juvf_7x&09obkeV!updR<(OM~Rhk>{j!@YE|ybcIqhrVfj zQ9!E|>qtwB{Z7SsZj$2wi4}{`%1x*;P-2qkiRX5ZDlf(Cv9GCC12?U?OllT$g?6W+ zT}RRG^%85G7VbpO*`Bqu!k0Bd*(;?soHg6v923GhFgMHN=MXeGsg86wN8 zg%zPy5Cu>{^Uy5K{uHV5qV6b{LEA}8b*;8Ij*HrPsI8UHFi(;LLL);nwYdXA!z>#k z9pQ*ET1I!8ud$k(;s`g7)8sVgg!brbJoQD9TKOjmrZmbtT}|tHl14E60d<|)+nmpH zyE~+2Ac1Hi?`l!jS2L==q>b2BGPoAJi(tBs(wdB!NX+iC{&cf<%1GzD>Ni#r`0=$HmSi(4Hx<_@Zn22YEd z9gR@j>3D7mjZoa_cy5|YQhzk;K&HA_;~c`otNk^jZvq}&>eg4qS2432{K zL+Tqd5Rc|jUNw($qj{7aP>QafEG20?hWzgaX&&DH!EsA5=nd`AvPFdIFv_;CHlB%4 z7-&5I!Ek<|;e?Dw&9X+bJj)`HNn^#fZuvwFA6m=kESC<~;(#`(#pdD8L_xYDY;e1% zk4oBklH)vyiIla8)EN>{gliM2;2sEBOeEJ%m&l>hCD%@uTsvLr3{+5$iBxY6wP~RZ zmyEX1h8sbmHhV(UW{*TPKu1fMLPtx(Z({bSCXVU#(<6=B{uqv%c{npXkd3P*!k4ZE zc9K-sP_#kE&1PTnCSxVZ z99z<=YIso?_CGhfsTMr{joI;JwhbQEW{q&~*BK`ev!_RxO@3oGxw>Y#^u$$?Y!QV2 zavl5!p8g-0JV2O?$H@^R-Hmi;GMhZrY_cQHrF6w=Bn8)&B)_IG`QL2E|Lsm?9?C>? z_n+=m3&c?HAUt4HhkoPqr9=7HJd|YfPzudMndT))t)u^+dViZR8IS6dGaC0Z;7DTj z{yDSB4nCT#uvA>veetdvQ}I6yn7IEw#y=A#ml~$#j;LIaKl%i7su74M@Kp19{J6Uv{TFD*d)o1Vc6_uQ_qXFAcBfkvI8A$| z;}hx>Sj~#p@r`u~y37R^*C|*#zk`m?@F@6gVVaJw^DOASbghnG@-8T!AFJbUybC(5 zZlU9jbqkiQOVIJ;x&_ZRb<}YOpMscegRJx|lH0a&^;fs=-{;Ugx>10`O=KdGFVB5pIas@+wa@9E`Hbd(%ZKC26U6cQi3)a5qU}cJm zWzL11vF%)!jPqLIr!re=VM?=Ns*>Ou5KzDHr4@7FHq=A!p+kqK4H%L-vd@S@s|qZd zt2r;6O$im*{z5lfmMWXRYRDW-&61fz;SziHlo{hC&qP+ZrdWcMSR<+ z4gvK;l9OEnf(mnd*?EgfX~R=TC#Mg^2`za@@}L1j`iw9QZ^%*$zi-HrDiwB*Wf`)? z;6Y=O(?dr66A?;RIadN6b<(?s1 zCpY#{s;oA(AI9qXjLSm4&fj7P&dNHSTsuJFUy&$#)K_GVXAhmlBuXpi*zczG!&n_B z|1{Ka3{vbz;b~279jw^BTnC}Dt?AiTX3t-?HT^z}1v?z;52a1GMJGH1>d>;%SaH?Y zG_@Med>A*48P1GBmDW;6wOc6Mo+QO17;iCTFN0EjLnR1qF%}u*Z#!=B8qc>nxpJ(+ zt(;B1BbdK&*gTw=B{%e}NUQe{wsatTGnla6Ho}yughO$zQly8$gj;b|Q>5j1Pozi> zu$w8;w+Vz3aI90LRx1g8v56>B4vy!Fv||q8XF~I#kfZQcMv?rCjfq-f8Wiaqc27l0 zZbPWzB%?^T3JAaWNT4v~3v8!~v7}AO(=aeb zFyfT3@zaW=SumZj4PF>25`B`QNF)0aj_6I;Q*=BZcSl89YDHK>Xtp#Vc@RQZk%~tU zzCjd0#t{HRjl^pKI8!*pr821o2?x?gF^crFFygH+V)R7P{4k90iRk!qUy_S)W>%!? zn+aFryaf}75>6HV(6=Iao0ziDnIvCnKzOPX;ebG(QCcZn^jw5bfbaw+3)#;_LxY`2 zP7*VkE9BYLNYh;e=~3(hiquHNkRr;5iSS(5p7afbCv5kVd{ib}xsPzCC!tQ5W!x)* zDA9#f9{mYlcn~%eG3+Jg*ilpq6ecE%@|X2gCT{{^ws7g<>LgdrCtQe#Q>1kw!rNMt ze9fKknV7`Fwj@6gVcyXwstpqkd59CcA_ZWVP^7wI9P7zN(o`|8vxE;aYLRA~Gog(b z)4XhwT_+Oy?k3EvLukK+@X>a{c9w*$F@z60*&_*<86pqar zOPahy!Z0!S)gwr*Cr0_9aC;45kWma{kErE6mCEe10UD*g!d>;}km`r_gsIC2U#}igV0j! z2h}4vQdjDF^o}plv_iL zd)RD}CkPLX5b|~5n`?d|{%?xJb_*&rV>u?1Ot5R%9$2Rz8C5ST3)tu^t?0&6F)mTU zF}?@VPW!Qxv>Kfd8T!#F*eCR3USTiMkNuu-T%)1D@$ndpe!?>oaAG4Er=K(*-Rq6U z0dR{xlU=9)`jGXD0ZnF8DQ^n%TMU}Yin@TNvGKUs=%=%oH3vs z{04>KZoUMLQ}*+7$*6FElWUaE_yZ#v)gR>KFXa#yJssogu<_}S^Y3Z3p5S|ETA%Sw zGUz#9)*3WLe!LTuEgvS|E|Hs&a;dzFHn-*S3<|(}xjq$HDSwI?*CuGrNIZ7dN={CY z^lmE>km)^WwGmYJQ#~-a8>vF9tbn1b;eVx3ZUC^$d^l6-nb8@Typxtz+6hdO(q{~{ z-~TCvReBGX}ql_M(3mkVk9ylSIN=~fm0i4B($Sc{b8)iyb&x{`9z+2g} za-i+34f%g3OF~d7yI3I=Jv|W4Lg7y@YA&az2O-&;4FE`O3*BMiYF*vPK=c_SL=pVg`)g%1eH?Z0OD0l zz!7;;AQVSsdatA$lPlZM`a3S$((*bX`!oZclCx=RI4xHm2)ZP<3<g3}1|4R`4@ZHIu!H2*qii41G4_&z z<2buX({Y0ROsSLXO%2c~b~plbnr){>&#)VdK^NHz_(%VQWkiE=<)p4qE|hOiM=DQl zhm^3>PF@4O16eD^O63s^e=g!!otADb14Tu{l<~l3^<9B2?vh7a=90e674l{K!=b=V zmnHzau5JrVTapRvw^Ii8|K1Kbpb51$=t~;nP!k2^h-8}9jGD{MCfOU$Qp7v1P6ImE z>jtcDj#sYAh zR|x7kcQNi| z-Yvif*tucmISJ`G1B%eMCXZXp@rnFmea_s3Fj!r6P;-BccTA?sdT?>Y4+Y7Hv1DO?ui#UxEWk9V#uXy z`hT|vJZ4MWQS&E8|F1!L!z?<0rf~Zt&`f@h{5_9%3(Q zrq{7~zKr&Uo^^TwQ@&mb?DdA^w7QrKrSH?d!2TZ^DPRUxsRJC8Mq9*?eYDG@ z&!eCnZXkn3X48g{(Syc4#(~Tl_st^U1mAezq$$*8CaXrO$?R8e&{VdCMm3#1a|X>| z;}uXA8%Y~PHoK7wn!~Qp_~#i}2b!K-7TzDUknNZNTEvQIT9>dNX|Q>WzRtrYV%;5- z&%!H$RMRgU0G;EvX(rF}V^rY+&znrQv5P#H9DJESBu8E4 zlPSEu=IzPE>wIu^&@JAR7R4QIpfTO$yZeE@<9<${hnzkHQXcUw?Lj~AnR?KV{2|5M zQ@(^+`H4I41pUIl*a~{VS0{sBaTnSKjK6Y!x=Xy}w`i69#uv^774r^LKp)EGhk>TZ zab(&w*@s3kLw+>_lqJuh4JTWENcPT=?I?2R$!qF@a^*&KK&rf;G3X=t7`f6UPoPO# zEZb9KOXXhqppVn!$i?90a*IKr6>_fzpjGl_189wGYztZ|ZzCtHmzPuhjdEw&dp66X zDLS{v=U0NZ$yKX@3gnCo&`$Xs-4hDs`Lwk6$U{w!vshJQIjV3>uDAwtQud7lotD3* zj?T)xX$n4KQ5 z(ctgO&Z9y1<@J3)59D6`K}B-DaXI*V`PmZCV|g15_lX=yUi(?zPeJ-z9!InFN>1nu z`c?Mlpttg%y`bM@3!3aqUHW>^6y1w#&@|lq@O;)b% z{z%Xw-9S$xc&RQi5|pP~(;Kv0m+A{zq04RtTCKZGcCXPri2<$CrO_U=UiYvjXp`;< zt=ms^OUTVzb&F?$w(Hh9f_CVdQdsTMg{}ha)>RQ3n(i|)^nmUZx%r^ZB7j!fVcm8& zB#-KHX%9TE8$1hiQrDN3%4uEGbkJE{ECulAy5}@^U+7xX(7x2&C+B~qds+^3S(jZ1 zx~luU7U*l;!%d*;x-^RFTe>F{KzDRwW`OSM&I|zE*Lm!smG(gQ1I=iWZl(+9d)+_} z&|}?hEJNjqZXUJvOt-T(=x5!eexT>N-5o(MbtlJzUh6)mVZYJcq~Lz1%i9Pl)*UA2 zeW>h715HuR=7FXueW!qCC^x5pvJ|I}K*nt4OnLAeC4~03dCHo6P_D9$7M!XqO9FkQ z#3X`D${QQdVnwFZQe_C$`&jvr+?}t)Q^}ReNOUMp2RjVAXpVLos*ugQ48G*fLc=9k zDNZ&nZ4u7;+Q$Fl0j-*NK&$RTOSDGGW19JKNy+B@DnLJ*FQ7FvhdVU|&E?;X1I^+bf1PJ$gWmg?=JahV)Nvk|39PXggH~KBpt|DvAa zE$omYn$6I1G_XeDDlqI4210EamAdz7Xg=Rg1^U*D1=j1^2k5ttX3T#bg=76ItIb{8 z2d_Z7<|x`Wyeg4z0(Mb21iz)On@*=)zs;%U=F+v!RYuw^%N^+6J_1<#GPPajf-^8M zAc*|ma4N0Mpa-GA;QGseAt5oq&;uB?5^s2E#}AT9xW|jXPWqW zgZzMgVUa-pTC@%WJqDS})j3ZMroPKGrz6uhARQIm4%qbDvA|}LzQE|j#=sVybOeYw zp8||+SOwVfCdEsuEvT==*E7xlwH}O3MGKO6>a6CxEMTKmn}Oj~XftXur=ht7FBgoo zPQ}s?HGHDFAj|?UkP$(_G`GQpbDa7J(_5u@5QJIcOwB>ZlLoKEAQ1Sm> zlB!{PsWE+xaQIp8asmOMcfCQ|eeK(}=8o)B`XcRagIQ8M-jWgi`x^lpeAEFL{tm8H zB0|=fO9$R1A2ex9ZA5k*0&Mnf7FzAPtrM`@S+u3^{x%Asr0?O0-CEzXp*=A9*H3^c zmL#XXB1iT4MgjKiOYZGglwvmYJR98|ip%UcEvg%=|6fg<8 zy}3XI%c>|~J15edc8S`DwCjAdqp$TNZH*ow7@FeOfo>H3gW)A5;8Zp+usq^J39=*{ zFgp}Ds0o!EddwO)d=k8>jEcgv3PY+~gr$lzy*4-9n9r&h57K(^sJ9j9IjbDdt0)ub zeUuh?-QXmk&kwtSzB_45e&a;{J@-Hkh$#=Of4U{G!SGaI;1%kv;qPQ`P)_lJ- z3@+*uH zRSvU66BH-dmsq?)Go4q|Lo<`xqY`eGF%+LUyi*m>e13^y=Od0~N4LJH5uhbJb{gno z-j3pP84n!=TF%phK>2(F_9tprzskrBcHq@~rUPgVZ--43cgh!qDEBFkbOdeTE69~w z`Hi-qZGTkWq1D}~)!n7lE!65>!Pl5gXi@%_kY{m{~fK3Z?!h= zYHj?+d#*&~-}!UchNlV9f2Mp4#_MOu!tR-}uscf@cF&T9-E(D|O{g$Wc5?>h$f91Z zR&SA3Z?RTyiEI=VmueN4%ZW77e7PUu4380_;!06bcx$~@d4pDYqt@vrt?pKNJq7VL z`6?~M?ONRet<$|)y?t7}{aU>PqMlJXEVriH*AaO$8GTf%cucE!R;zeUtN6KA@w}+0 zzbkKXf+Oz9ZF_?5%Rx&~eTHuQY|tECKWc1&ZuKtEe%+Wkpo6+Gv?CnRUH$-cT<1pJ z8c*p=v@E{Xr63NJZ*_+#+JDh)p>5)g?ol<+WV}5Fsmd{m^2N%p0iY#{HTqRPQG#jB zP1WzM1Dd9W;y!M)6rf-T2O?GWFty(s|17drJ5lD7XXa%?H*WNrP`-OO*rL zOaV5m7zYfBX#@gxCxIwG-r!Fp8synF+wAzNx@==c$GE zk#vVi3~CMR;Lr}(F^Y!R$-w|LcHR;JN@_$KTFO%jjnwM2ulK4>)p~c`08AUP1K4K~ z?M8jyjs^Dn5c`zU|G|3TfDg#@fhRiyKX^lDgF#)wfP-(5H-?Oj2M*Oy`{{190EWH& z064r0#ob8b@D-p@ztRkjZ9wCm%z~)TDQr27VJh=Z0!?FyWdC$#O`e;}Ek z?~!lO{2Y?|)CV1woyviZ$UVr9N9F4@FURGg`85BhxqeIQ;p4?08c8!X;6XWWJbqK;kWbZDL8ZGg^^w3ezC(NxsY zTj@ud73m|*ueXVhG~4Bgk2KTsNr z@84o>+gkc9W9?4{CEsG|;7k6KrRl?^%-$hLU-C8UKaMhg zwE9;^Mc9~z?SP|fl@dqk%@Jim5f!!ZuMw5HMnqK9P7zTlJO3I{TX&0yN?-qz zWh2VobZ`|bXa2nRJz-Vyb?<)=QTE!`y?>1;Q!YZ3KI~1|`<`H0V5j*g^dBF+*GIoO zYCdZIkB{E#qgB<&M^(%__dn}Qw)yK`^u+Za|NQUvq2SuuP0jkBo0|Ab47&SQ*8URX zuYokpl)j_%g!IokE4$9F`~I`e%Y=*;inM=k`b!Glby{%O8>&<_z zBIB!Te^bDIR=F@^Kbx%M)e=l^4zYSXvbo9oFw5Z28kkldM%uy0bn!52VT`Y%Rrfcy z@`6ifqC)8}B;me?E>eEG!By_o(^<{tY!q2QvHye*;#T8-JKhxSVnT{|o zzO||8$Pw1UIROt*bk%1X&oURzX<({#lx5W18m#GGX(YWi=a>F2f@#lD*4eqNBOBm_ z8rh!E(ByrL^>mJGqSdcuZYIAZzp-iMG5F?^x9Q?BmQnw&KNKQKZi?1U4xTFM!o#(= zg3bDh5vFm+QNMwkX~S{Wf~Pkz{fxA84j!cGss?lE`V!@B#l)H#onW8vXW^#1Couf7 zzd=F2k0$JnFf~1icGG=L!-^OsshL(1kGbM%Zr0}nYUu*AK2g)lQhpQDhEoWlJ7t1mv$-x^}tdxq8XD*NjmUz+pp;6a|QPc)JqnQ~9#?=UN#WmVX3 zLXInkhkWXKou^i&@iMJA%N*lE%-QMYMcdEpt{AhP z{x*cJlC|5#tj}+#>FJjU=}H&Pv56YZ738!Mg)5?JWU4EbDZSQfr3y7VqS03xJrET4 z!rV`!k5PGt)(+ZA&)d5`JuQy2bn|`M1#AP{Pm36?VPF zn&7h}JJXUoET~+)(OQ8Srmyd?;Bq_hvWYG)lhe0I-om>cy1q4aL6RRFVw(RgYf>&& j{CYJuVAI!BD&cd@$zx1TcUiFIsjFJD6*D=1!)p95_bQVn delta 25112 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 V%rK2Y(X#(lt=O8GMqgu9{}&HqW1av2 diff --git a/includes/fdf.h b/includes/fdf.h index 02abddd..5706f47 100644 --- a/includes/fdf.h +++ b/includes/fdf.h @@ -6,6 +6,36 @@ # include // for sleep() # include // for M_PI +typedef struct s_fdf +{ + void *mlx_ptr; + void *win_ptr; + void *img_ptr; + char *img_addr; + int **map; + int offset; + int margin; + int altitude; + int win_size_x; + int win_size_y; + int img_size_x; + int img_size_y; + int map_size_x; + int map_size_y; + int map_width; + int map_height; + int rot_x; + int rot_y; + double rad_x; + double rad_y; + int mov_x; + int mov_y; + int max_z; + int img_bpp; + int img_sizel; + int img_endian; +} t_fdf; + # define ESCAPE 65307 # define UP 65362 # define DOWN 65364 @@ -38,34 +68,4 @@ # define Y 121 # define Z 122 -typedef struct s_fdf -{ - void *mlx_ptr; - void *win_ptr; - void *img_ptr; - char *img_addr; - int **map; - int offset; - int margin; - int altitude; - int win_size_x; - int win_size_y; - int img_size_x; - int img_size_y; - int map_size_x; - int map_size_y; - int map_width; - int map_height; - int rot_x; - int rot_y; - double rad_x; - double rad_y; - int mov_x; - int mov_y; - int max_z; - int img_bpp; - int img_sizel; - int img_endian; -} t_fdf; - #endif diff --git a/srcs/fdf.c b/srcs/fdf.c index 7b7b60f..1e28fe4 100644 --- a/srcs/fdf.c +++ b/srcs/fdf.c @@ -12,15 +12,66 @@ void rotation_state(t_fdf *fdf); int **parse_map(t_fdf *fdf); int *new_coordinates(t_fdf *fdf, int i, int j); +void draw_lines(t_fdf *fdf, int *start, int *end) +{ + int dx; + int dy; + int dz; + int i; + int j; + int slope_big; + int slope_small; + int pixel; + int z; + + if (end) + { + dx = end[0] - start[0]; + dy = end[1] - start[1]; + //dz = end[2] - start[2]; + i = 0; + j = 0; + while (i < dx && j < dy) + { + draw_color_pixel(fdf, start[0] + i, start[1] + j, start[2]); + if (j < i * dy / dx) + j++; + else + i++; + } + /* + slope_big = ft_greater(ft_absolute(dx), ft_absolute(dy)); + slope_small = ft_smaller(ft_absolute(dx), ft_absolute(dy)); + i = 0; + while (++i <= slope_big) + { + pixel = slope_small / slope_big * i * ft_sign(dx); + z = start[3] + (dz / slope_big * i); + draw_color_pixel(fdf, start[0] + i, start[1] + pixel, z); + } + */ + } + (void)dx; + (void)dy; + (void)dz; + (void)slope_big; + (void)slope_small; + (void)i; + (void)pixel; + (void)z; +} + // point[0], point[1], point[2] -> new x, new y, new z -void draw_lines(t_fdf *fdf, int i, int j) +void draw_point_n_lines(t_fdf *fdf, int i, int j) { int *point_start; int *point_end; point_start = new_coordinates(fdf, i, j); - point_end = new_coordinates(fdf, i, j); - draw_color_pixel(fdf, point_start[0], point_start[1], point_start[2]); + point_end = NULL; + if (i + 1 < fdf->map_width) + point_end = new_coordinates(fdf, i + 1, j); + draw_lines(fdf, point_start, point_end); } void draw_image(t_fdf *fdf) @@ -38,7 +89,7 @@ void draw_image(t_fdf *fdf) { i = -1; while (++i < fdf->map_width) - draw_lines(fdf, i, j); + draw_point_n_lines(fdf, i, j); } // put image on screen mlx_put_image_to_window(fdf->mlx_ptr, fdf->win_ptr, fdf->img_ptr, 0, 0);