From 610a425508d246da633f268a48bed2b1a3f4a748 Mon Sep 17 00:00:00 2001 From: seleznevae Date: Fri, 16 Nov 2018 20:35:56 +0300 Subject: [PATCH] [A] Added new style --- docs/images/color_table.png | Bin 0 -> 38856 bytes example/main.c | 10 ++++++---- lib/fort.c | 37 ++++++++++++++++++++++++++++++++---- lib/fort.h | 1 + src/fort_impl.c | 2 ++ src/properties.c | 34 +++++++++++++++++++++++++++++---- src/properties.h | 1 + 7 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 docs/images/color_table.png diff --git a/docs/images/color_table.png b/docs/images/color_table.png new file mode 100644 index 0000000000000000000000000000000000000000..dda6a66334156f3a66fa84a30546d607044fa06b GIT binary patch literal 38856 zcmaHxbx>SU)8+|5gF}Ge?(XjH?iSqLf(Lik!3K8;?vUUNZi7Q`clRalS1aGv*8VXy zRcFrh%ze6V*XiGVB9#@TkiOu4fq;NOl93iyg@Az6hk*Em0SEK3vi-D}^6>`mB(38L z0fF5A@AWB_4jB&uf*3+ZTtxjx_DPPX?^pAu-#rZ-he)F59A6J5#6P7X7yLXG9}rW5 zexCGp2@l$G{sC^t3(7{q%Y9Y<6_f{;PySOHULXb4Mq0_k(?5W`1CWyg$XT;XT041u z_2taU@!HGr%)R&8xCiX}ZQztE>09DJz$=-}I~qNwveqB9;C8)sHy`g(gg8|S57zqH z7}f)=p%9Ep=V+fIM7%B~?`pI>bcg8tK^FD~bbejFR=XPK_aF44jJm%~Skv^Ais#!bXEIj>_z|z2w(2f(s z4n-1wP}cXk_D*M-QtD>h>D%|pW5hW=Nc-yE;#7om-!D**VlfpiMH^b7tRU(%JeBXp zfljSZL8v5C2W7-gF_JR3cX;+{4)+{|yk9a>r z2Iir|PyYymm)+Oqaa6Ny&pIwllOidUoctPeXjgts`SLm?0)E`UE_j5q7Z0gSgWof- zF~}7oE>p5XntfnPRcwu&a&PByQi)q5iC zFivp|6>3?|Mtu4v>4wfL_9Y^&^Ne}cA*z|<1`Vx7x7RL1%g?fWf9@ga(j5`E$8UsA zW%4r%9T~2j$gr_GyzhyNL}cg1!qj|U;=KIC=hzP7o-nyeR|k>X%LWK>JiK-*$<~+H zhzy-rvfqBuR@@Uc-X&2b4&%e$@VB4JC*nuMDx2vLe=84ebcPXIXjRg**yd|lzQhu0 zdiLb%lP~BL`#sGCBi8piJJ0XuEw(E1ZJzg~xF=zTP)qhLWcD5i$5uX+sZ*&Gv|fs6 zNA`B>uJH5r0`nPqW!L(OlT#iitB%E--GFos1nO1ps|D>z{??g@7!(KzX%SYb zF4kGYI(;0Z77zu+c#MDT_P|I90C+tFhjb>y(%OvusT$Z9Ymt*LC9QIplX0(s*o zoT^Zqt7t3dC*p;iUi4gOlbps1xrF8L5cS}-hMCn$c1N-8zJI)*^D8{&Q+>rRw?ZAt z^Q*p3>8^TfoD=eH%58m>L>g&1e=fU8^SiImWZX4~;V{JozThW+mT?zVCi1oUHm>Y> zfjgA7hNbyHyCi%b6>Byo4+AGI*(JwvLT!v{jbI8p8v6Xy*!&Dg({!5}GqV=3oJ?mc z_C#)YjL2x$RVs&_XChTzu-4gLxgds4#J^$9v{6~$op$?I``;v;$&(KOt7$qJ=1#1E z!o;X>P(fdwD2wLZu~x05{%wJxi!yc5qo!dl%K)USjkocMh>eca9P`7kev`z9c2~4V z`SXRXjC4`KN59#7XOQSBdi%A`feRYmBrtk5;?}Vue;cai+vJ8gdGg^N*^( z>M0H0RyQq*Ga+?dSKdEY)D&pPIx}p|%oTp+eL^^fOaD*_3d5bfm-(ppz-w&?rwZzp zH+>Mf_S%Yp`zkSa>955%C=pwHw#vmDvqpTX23E--7}>l&<6CI9z7Y4=2q$3U-)^5Z}>@fc8&_U;!SEu`Q@6l3$>?m%=QAG%qBDqaJf zfOKB_k@UPsSK4qYfowXA$B3_@13H&nC{0~Q8mQk)q*Xq0m{JxF-{kpR*N5UOK+OBo z^@sal>i&f%j<4UJF%B(Dldc{sXvuLw9O{&?(IZ?Vb8GeWreZ0yO>{UYNP(RSruh9c zYR!Yll2_I{4x}lBI=J4qkZu!NmY_kuv{Ic z7Px)9;q_umKD#Bf&A&Yemj1nA3#Nr-tHc~HIUYTnp%bcpC&QfwZ9o)drU)s%#ESUNQ)FSA?>F zYr47u0IiY+`6s3? zXwv2E9akdWFNaF(w&?m@wi1!I1?e1{CQ?%g1*tGvOnL7Ev5lD48=#3LB`0d8j1qf_ z-Kzk$?`C9CX|J*FMyJtLQ5dvEF~u9JdeXP`9)S9JrHkWmJ!i;#EknvHvf`;cDQpuH zd-3}d*&ELe8Z1dH?r8z5<%Um5*Kky#|XioG(tf_{v>QMnZ1}-C$>nS>;g;z0*jsLl#$F1-yQfPdit>vM%-9ZFjDB zwd*2)hIT4AW8dlvq)(*7n?YB7Sv++V@R8akeD~xm6EcTyh*#ITu_VoEOz7L@AY{9(6CJAE@GE{gi?Y=8+LvJ}?xzvbf=PSDk*Cz&r3y-L z;~#dJv;HhAI}(=))6LxOu`}9H{&$(%YKq$X z>h$=Z3ImzKZmRfL6RNGx#O5ptGB#^Ku-1Kvaq!UM#Q-CIU4y>NZ5zz?V_jAOYF$(Y&)qlwp`*!Lgl zo!+*OB$6sHKG>E&=VF@gU$YwH6tB7i(ii|WF6m?G=}IdJznZ!-?ywDn`xH+j9TP(4 zDM_$_1=M~lctYzD25AvzJ_vr4KskL`bWS;(Vje#3w^zQCC8uxU$7eFJIGLI<~bdc=%%z?}p4iN|nE&9VBfJ0Ovyf+v<^c}yURb9UJQ(V!+% zJedo(buC`gP}H z#wYpybT}%*d!W%6dt$UTKYn{y&$6-)aV^_E(=cLYHK0nFqgXQ0gwN=IxyS#Fvk{fj z{Azu@PstrGFnnfL8u`+Cb<&T%5|pCI(70c&tvmIU#^ZLF3jr-PB7`O3yK-$UREWWX zV0ksv4Ec+ly!@GmoFZM#+l@>%SUpH{By3vea(f6rcZ7#;?cazMv*AF5E`xBDZ(L zlWM-%vIU(l4anOEtAI2NDc2t>QahvmdpsrB3OSDlS%B z(Cj2_r;m-m^~j8cHxSXv7h6RF+{*g7K0sJ_m}*>85WtzKgpCJFQ z6%9G(;L-3xgwsG0yFbjSt`5!nt9!F=cd82xIZY%bFQ)}fvLElKKf0ZHM5)O%LXAN5 z{qF_aY7zD7cC+>YE<|RNBBjQDEv-j!GywI?Z;b#waQ1H;p`VS10r?VN7L`s*%ji@4 zVQxXxYjELmp>r1e1ka_tmyVC7e=K)a{>&WmK5hIUDG#0`yKAYXNyAN^A|;ez+_|Z@ zTx{QiQWTDgbLQKIYr!B_YFmuhBghxLxF6k_4-u~KrN%QD2vckCv zJIu}5HC*fXD%$qBsEoY8PU7q)n{VCZ)fZmQjD}uk#{i@8zHwY9 zOLW&z=Iq(q{^4pjLTr19(}g(UM+$YN1pm|(DTGNe@dcB>EK5c5ecaD*@E97|7_J5|~rl!kRp z)VO{1tZp}zlw7jtzM^^DUAMQ;xsSHaG!YTJgU$l_rt|x_F0a1xTNC(FGa#ZNr^BMF zoX$iv{G4;6?;;{PuG4auiui``l@Hn3_myy2@kDg{*wAcPLXW%K8B+>ewQZ+EU~Zt? zCoSG|Y|_j5bp;gVr2dvRdQIcX^;@O?z9-Nj9i>#HPkVr!0T#UYy(X>^b+(y|1q;XP zo;MDd8t4+$>`-tqGeO>TCZB|K{>U(~{S}`<^bA$W&4m@+Yj{Gr$qV*wOV!Nemn5dL zCY1P)x;V!R$Q2*y`M!^mhZ>|U6}YnTMLGPdtH-QllvE>Wjf4++RVyE#$Ql{PxvXqw zNH$RM&W6kqAwhTcYKBufj=+rJF{VLwQpeadw#F|Jfw8K-?uB>`Ve+x~2nj|UsbuJy zXu2oG$!%UZ++j9*ELOh^h*d%N=WTKogER9!>h5@&Oce>EDhanT-H623RBE%&@V*6k(I&7lmd!YCGns33J7G1T|eDY_gJZ#*X;wh zq#aP7gFvF38WS#`24Lfqbu*O?rwy{@-xEz?X|dq|HUYG?a+PQN?@Vz!AWE~bCV)!K zw3MyWYNBvqWYY(R;V=7k&gh;irk@<(HIX&^)N5;T0ldlkF2b~GreXIuscB7>P}0ClC4WLIaS!Lt-J_~d;D zee|fCH1RI-=Z(+D=tr8Vt_r8bvuj!XtBiV!kSZd}INtY-R{f`UY6!w3Ah%jTK>Hh1@t{V#{&wg-gKAy#| zueH;p`*7xIW?Q&R+;7W>Z;NLTw%E&SuW$^7N~+mD*{o8Km-btUJCL%9)I@B5^B(^C zpSaK!z`PO#uMp;|E0RyNMU4gcY2&P8&T(J99{gCdN~-#humuuJRZ>V8c%7Z%s0X?; zLe@+J#9y(R;=#1yt*&V#5LW)-tqa& z_SYmKOZ;+?MR(_7DLZ+@WNUP)hwL+(R~or}k>I<==bnJsgP71(&GBE#!y_Bu`GXgR zK;+EZEjn<|1;+pd-s1Z>C$7PKa+uazG)bW=HLn^X%SitYz4_@DP@wdYC(dQ3tHp}@ z+94CEEw-kEXz%{EG_l&i$}`;&Z`P+fok?o6PX=M;NX7hlR;}>$6YWu4?J+CacH#JH z_gdg~ygB{^j`%ZH-@&D{HMUP2BtifmXH0D+mMbfl25QhaIHVSw`kJqkKe)bYe&GP zUP(-q4jo-?Sje~C1b9syjy-Aq3}X1orzT^CF6VXUcoN{p*ztB@xtr~kg+d^|$J5O; z-aZt(4bcV&@5HkcAYjZKoj9c>0EMPxJEN~up``_V-tm8A52zBr$wapH8>-9teBN1E zfn7@LxlE(W14Kd)`fCM7JNcM0>{fC^$Rq1n5vC0%Vxhcx5^j6sPuPntF=wrk=t&M2 z7Zcy#qH}Pd3GJ({R%|882R-JOg29?{&^`6XLUK(jK>T!p=_qyHVaNE4%ckeoy4e zX5t3s=x%uHv-2lKdtUK;JGf2#v(1A!a2P{~BtTXi$@eFM13!xG-E)=C6WgroCI7G6 zg5y;w>zr1g-!+lN`Sg+PRF!}4bT`zK*;k8cCX(@22IlY?5|Hv-j`B?Y2jWbuvl(wucSZo2Go;7t%*@L2MF+Lx!kx$xzuW!4CgwwakHq?=v#akM6;X z_5s1lgdMq=Qc#okpfjQT=40{{r?Vb#F2BBvrNR2w`19UXpS(N+7j<4!pddvAB*a^x z+C#Pof{1@aTw%f;QEi3MvVWWcexpv)gbRU;#cw@67{z;Gm4_Mt(adQ-IEH(4%p3bB5zPEDB9`!fWTF?&d7Dg`G@A+fi^KsEMn#XG04r5S zd-XJrK8FBes!oPRa5;h~rpnnZib}~K+^aYxPQhwryos;IIVS&+JqO3R#*toM?H#$;|4F~gAN6I+W`^GVN@)kl1)=%^r6?1MVC9fJpkj6Il2bwDKKm_C{X;i3q`D7UT)c=b#16WwV>rBi z7QV#=rHPeY%)YC0S)w)7+CHxs=+sCN7(h+Hup6B|Kh3bq$w0cK$@--MF&yPM>X%3B z2apmbj)3wV=R*$>N9*;0}EVHgwq!m^Do`YK-(cx@R{==h! zbV=v%@mU6hiOU2+`Y??{bc2~t=PVmZHS%7`ZL7m|Dvm2vcp(Fc8_~p~(1Kc{G2v{8 znoM_(+hmSjy^*std3D8Nz3Uwh>Ec5lSpE(yQ0n{~q=2a>zTsR$S!4sSPNDqL`@r$2YaG9ta+o0er`gLwc zxJr)1G+a!1IoC465lSMrlpMiY@}&puO*Z046B7iJhNfQ-h3(O5{riNOdkrRWa{#*^ zQ2y_h)|S-~pgh{d#?_dnxOq!!AFgT!UBXwj5;)%Ur%S zJ-G+bK-0T#T&GLXM4MsQjR;9(}zZR?=KO2}Hh6a zp!E6vhi2$lFHaZu)l=cB=bEb-dsh-bNq>uktv_8}n-p!qfmw^j?O}*XgZC!7EDbU1 zo{;GM++iYiY5ZPkd~;KVtHCK&U=dIwL2j~wq`9bF5FYy|0YYWO*Bu1;Fzr_armOqH z7!29k(%qWQAaj_1y*oKNKn%B@Kh&=cs9CVU8%6Ze%mG$B6)!kG<9=K!oMil~llz6m zMqQa#rw)1K++ieQz;DTHXjy;iz5UXY6!0H|uJsp5AZ+=GXt|crZV`uDZ8maVjGgsv zlmDs$L!A)4!)E3zvpu}Sj^67@OeDF zr2@Ry8u6S}EizDe?$1aOnk{R5w$3uy?{A)eaa^CJf4gJe#Y88+>&Wd9^g$qdVwV(j z&Ug`@Y}0EdiN6@Aw`Lc5`{bF!mbD@K$NLYNZ<{afI7;^)hS$Ahl^Wo{ckpL4no0uS zM+U>^YHNAFdkV_jm+X5(?LYP?9438^UQs;!=p*T4W_JoI^gVaFdyGP{F|kQ#Tx=$G zT+2({JMwL%W7~{?#9UUIZ94N3{n70Wn-M4@qNX5@*z)tPvHoOWn|rIjLhd`KqxE1! zy3xMoGwIpEJ%!J;Z3*}x$^q)N3ioO0*PcAYexfvvK<*!k4YuRpjU~0eT|yrNk}HS( zSj*Uod;yOUj{T|32HCTO3<({&CSVd2&%3ruEnHS-6fSWh#U!Wp6M(@!zE&+xP8lx>ndpvKt13@y)`aR#ueR{%- z>sPL>Tc(;r)StBUGVHc{e=qL(Qc66``>WD_Y?Xj9Wt*D!k32UvFZsf!*F9ncbRLUt zIzkTR(wS}TWJ4`izjLE7`h`RWXNpZYAn#C3QxC8a?Ph5?#Ts^J(^0_D|WYT8!bYuo(Z zfY7bRl^^bwl$8yF+arA5$=aW%g{pa|IXEpx?M=VD;yXP7z|V zP1~D~qSTi40Dn*P@&H|b|;NTkmrx##nDx!cI8j=58m@uT0 zvR&`%+F4}24y|_kpwpjim3}=DLCwLZce>4x^gjJ)tCYHX6wL0U{6VKe@3*w7WhU#l zsS-{6ngrYMQ=i9kU@7zMDh<81qg2%S(64AU%=V;T+SS_j8br})C7=My>5NN#Av=Dx z_wHQuB<}k#=f*nGn<>1<(E+5ti(LFJXWTUe{9!_qYocw{92kV{L0~NDZ|=~Adb-Xh zzQKGjiWWzCAK^={@}juvy(I({^uuT@FFpe;N?&KyEwC{j6G0|v1+3PFr=VrPTP9PkPs%e>TjJ6= zmg}3)`+&l0P|wk#1T&S#V)!>Pdr5&W)@${vhi#NSlo)#UAZCb!D7E{0% zA5CPuHWeCaHUiJCvPLhhwdq8j3c5m2{FiuSeJ~-`jl_WZryf7J>wZbLi#4dH4MM4& ztb)T=GkOJ#pC+&?=X54UaAPZ~wP&fRc$m+S;J_zg0>3PVp5Z8`a%X&t`#Z?&q|mT& zTun^FXj`w_2V~B@Ho+C`yBp%zORYASG4P*hjYE95pL69H_SKr1x5px;mGVoq8&}sX zRLX#MR_k$lwhBUf;EQqzGocmy8SxhMk$tm3e9p_T_a)OnzPk%@lTV-}B== z`;Y!jsY=5c-4SfLGFCj71;{Iopd-Nm^+=L)tI5>D7YNCVQUVcA?6nT3@YBx7+RD}l zyM13Yy0yCl?EyG1Hz%-FEiJp*f*&T9K`K>233rc0eft3YDD z^v*pPBLw_3&X7`V@Q0U3AiEYG5cDK*)3!g&XG4Vt&eq5PhGG%unT`mEE7ryM-oY&m z$;uE0V3OfE>_1Q5{hdqT`B9aU;+)C~JR6J*P0OJ*i^Ce_<}mLC9s~xnyIIARO%Pby z^9)3;(ke(h!}sf)eBHqW7&V{od)X$_zCtngjDO}U10hx&X zxxIAD@@28FX1%iy__c6GZaJ$N$46c;Ni>o$h>j|?Fe){*POH|r@Er*lkP(Z&mSvmU8KnqDXYJPh6RGR~fNqLOZ8ZKY&7Uw)5)9f??zL$k zk&xOp%v-nm<~e~AynP+&TR)pmL&kwSm=mut?AtkNtxCCCm*lZ2j6~4>Yua~?{p{s= z{zm?`rWUIbGde{+%I7dM)FM4L-}6xtT*JZkU=$5C=RtjwT%GzebxtI?&0$cQmpnsy zVkRT^vtHk(SZbdGZ?mqoDez!1KYUCvd~2qPo%h_OCW|F0?lSi=)pssB-qSmmPFKz% z9UefS*c1Lm#K*zV9d7I}Y2>jnrWZt_@+eJnyq~IuZ=zu^^ST*p_)Eo6dP=_SQLQ<# zNtR`CaVF#HO)93bxj;>q%r4GO@cmwEhg-z(8riX`HKr#vbNEHUua$x;?rts9xPjd~5))KVUOd^Dy$8bZTT-gr1QEF6wG3{TejoTHoZStSto#nmH3-^y8 zns@~Y41}bx&Jd8b`qillUEZ|0!w5{;nJuXBIWzE1pJ(C$Slc6jZ&&co_<4FW^Y3CbO35_l5tsmgjpWiqqNXt%_5yqVIZPcg zyX|hl*oYXFrz1a$tF2Y-UM3VC>vh?^F%)xr9#g?{j!?c0T?CY`R`NYpi#6avp}d=lmlvCpbUArHK~B}bxYh03>nuJGW>n{ONg1P$QzF*A9P&X zD(~Z0`HpZ{kFOFx`R_^LFsmRl(NIZh8A)Wm6g#kKH=2C8W7^p19$l|7wH$qa z`GH766PEr$0Qofpd*0hDq}Gk&M27n#Sm+*u-s~?ql%!oXJEQgluX_fJ%4$I3g6(Pzu%wLwAil7+b6<>iQ%w7oOPN{ zSIbr*=03yRdcp_0QpCi=$mvcsACTZTKF6LN;Kx8j-X7`^_QBFm1#X#tZWF%Yig!Pc zu{X}C`YpYiCypSUdGMaNPvHAOYN5A}dqvVROn?d7Ax{1wzb)js6W4&s%9iT5M}himc9bG=MA zfn_C|n2Ku_yg7;S89%^BnFRTKi*?XzH?~M@L0tAX3Ejr9y2dx`2PNipo$~t!IHN@Q zTb8XlRO6pzPLLw61-gX_y_a8gmKAt1KvSN1}9o0ejo|`*Yie-3;A)iv)@qwQHAsFRt?< z5cb;ejdG)vqDOS6fp^9^6;^=&If6fKe&M$XCe&R43d#*3M?UvssBxZ^TLw{0@l{V$ z4b;)ymml~qQ=Gs1H-GnfZP|J)MeW(ihj)cd(!Qp`Z1{EvDc=F`lF%!{+z0|<$OiW0*D`Z9u)$sJbGs_?HL ziTKb=VO1FtN+?kl!T#Fg@Vs^jecu3XKrHwOjocX{s2f)$M9`Or&|_ssD}}}#22A6 zT7o9UXUHhETg};+LB7&0i}y2hlbG<6Ca;<<3ciZt2h@TLq-+;cw+L%l4XD_W zn8ow|w)7K;Ux3w9s4~iCSdtJB`5M&z$I?u7X1%n<;GdHYGVonpycIEV0G@$%?u4jG;TLOyqBW zLJk9r)wwQ*IRo=FFSKh)uB+dSyt1vLp@S0o3$d#sF|p7K2+9yrMx#H^^gwB6vfP!Y z1MXJ^Vvg*PJg}gHykpZgLIxelfFLo+iYLwY+DGk=Uqw}IC8){NojAJ0a$vzJ)13B3 zXg^u#poZF%{4a>)SoOn?-1#UcP2GEg^Z$ZK#WW2+M!mr~pq-A?>sI>lJ&M_(ba`%7 zF9X?EeK5t(&z5M$b*2a5lIGJvt${ z$0X==r<402ujmKrR}Kflq+y~SGvzIkBoOpu=j1=!)Bd1x*73%}nrZlFtZmzx*lQHu z>-A&l?BCMJ7!~7X0?w8kCBBMLx}H$_lrkm-=ZkbKPSwet?R@y%SzM7YxAw>?olSlxeo^!&HeF;p^>*;;jP4N z#&`Go@Uck?bpe2^Y0Udz!6NEfu19>vtasdVN2AGhwv~s|DJI|UEsitX`Cmu%NVADn z%pQbByQe0vB~sr~=s#iUzIdV0U3=C)McZ1NGDq!uY0)Ke|9)-Bn4%+DKc zj!ngZv#}nWsbjIT8P_u|VEX$s8JzPE)h|11h74zB;$<>p_dt>GRe)Cr1fiwjiR$Br zmoE3OgC#S}EIYX3*R3_j)3DkPhmsy|xfA>6Pd*0dBQ^rIi`q_Ry(~gOPjN#D1?#?a zMw1I)fcuU*R;))bZ~X4x1b8_pNnk+Hr`pL`N$R;$b%-DL#oqk=kGsw3M!HdxStdRj z2f>JuNd}8`pq?i67#MJz#<+RuBRMsaHvZ(O*-+ZZatdQGoac&8=eEyA0ASk~x16Z- zN$il{y$nDqb?&Ilc#Myho_G$$em^IxC+Mz~b}?9x-dNyRCKKxDtdX-}&W088{ck8| zW8_MA!M%8^JuS1n=1DRZ3_s+M7J~;WlDS?&pUr&`J6>uu$~XJ}Fq^8Rw!aLTW(?nx z(#FID&3e)1-K~#?$dl%yBpA2U9gNKZL(UTtUCuR6N%Kdo2-w6tX*%!es;AZ(6Ppym+3 zS@N0jg#EqKkbsekzQgao<)&7~fn|RdoL>{nxVvL`#AP z_6M+ntOVT!9sO^a`*3s3$H`nD#FvaojX&D{a)n@$L}e9w%`q^GCjHNhWd*5_C)<8= zN1H(^FhoU*xxE;3Xo9QN^siY7a%OLk`|hVQEk6S`%mvKu97Xr(Y&GnZ_~fJ@^z5{> z8={%8Eso!_MX4Q93fMeLblzl zpbirsr&8NT|M+e|o>!e+T|&=m8=U^_^xOT_AKhWCD z&3(5F1Y8L7dax}}=tvVRPD=S#^?Uwr0`e&u|3Ngopt{rfI2!Tov9^7I0*+A?Bn)%c z+^}1XSg{%q2@^b7Tquz2In(gyail%7t(fTNLEJFWPDdrD8C0>@3rg43VKQYwZgU?(h{6gxnG9Dtulm zrf+Ex%PF(o#P0^_;xh+2{P(|-v0=K# z+A&!1U$aa1kas&g&o-0ZUjQg5p@m`O=$H$sgct4_hdia)l8i#4cRG<@3Gga&V{n3; zY9_}(a8Q^Lr8?e!cXq%8_?|zTOqrH}OZ`W?bPrySUo_v_LmBYyoHWyTI_zP2kbfa% z_V4&3MaVcPTuWjJ&6X!LHojvt7|A!Kj*>9JU3rOpc*wIx~=%UAX{nf#fQI(SP* z$ky7@4(lP`PPltLNR{T@U(c@FtBQ~_$K2T@XGlbH;#zW54jwTG@DSun(ykh2t73$e z10$Tusg0ho5Ym;tPlWidzO2zwo~};P*wR)nOI-E=!>$%lJWjF%|5g*#{7tM2ZneGj zKC9qeu66s>ybHo6GLh~}esS8~0K6MefxNp0+%X8Z-ef-7udGGof)!5%c-8+@Vv3H8BS`5Gi7J< zdP5$9Wc2xr$$(}$*6x2aR^J|oCw%V$UQ*QfzNj*O|AMTsz%j7kK7g|SHkoT8DvNU% zhql_ST@IubFkcBI zP88@ECDC!2->mZC9Jp&?eM?$8rd{q28fj_xTR6U>t2fi+2#X%&x|rUbS$$Ry` zFz$0Kv~^}&<3j_O1qzNQpXU@UWJB}6gOD0GURXV2e6oSAyTqd*WKRoCv|4v_o`)p$ z%{lqsH@>9R@^7AX(t!s4Okfjkl~0;WGCXA{`RnzrcJR6W9aw35tU2elR+aEJssAHL zL0CCDj{tn(Hp2YKhc(urkcApOA2kiVMlplypz!3MRQTzakF!&`qpxMWHw{|F6Ls z^pZWdakISfdX(Zvp46%3Lf#rJiMq`-skz=gngH6#e~-?4LfBbpZ@1~Y2KH zeeBeV3mrK%(U)&6U#i+x=bxp{2yPJp(CxiV!ezTd{2-Tet@!2kWpZ_QZD+g_%g-mb z3A1_TRQw6JN`E7TET+xh8S9m}rR9%BbP*8l){HJ5X_YKT%MzFU5=kskNMAuAHiiUPcNL4VB^-EE zjPANmId?^d3bFWNa93NCm;e52_AlAMe#7}bz3%OyaD3yBY%i(BrxC5r*Tu>zrkgaa z4Wy118ZJ0e459Tih;@PzO{yx1GVvx+EP_`kG5gF!ideX>R@^JN0F~0x7|n7rK++XH zFLt5l=Yz@E{7zT2S>2u>0r6ZOOq)kEI0(BWGyQz_^B6?jQ0WMN9u)d*KxNux3~=a> zM^BRXx>%`8aY;nV*{y5oza}wJ>PqlZs!tLtCB}vOL6vtu$Vzhm`BG8tdW)K?A}&L)#_DH-5rk$C1}PFz_^M8x z!`!&O3Q2KhdILp@T01cp|0~61SgVDlT9U5Pv+NmDq1)_cX8QOil;K=R!){{tj8`DKdmsbhGl%rNO6o$>q}kI? z_*Ec^)w%WF?JSC0peGVf_}z5(+zc!^5vO9DaNJu#d?q>!wTrca`~~MF=Jq)mq{9UH zS8*%bajTQpAYGzhsCf^Pr+Zrcz8l6aD~ZI^m98AN$fDeI=bK==c z|F)@WS#XUQz$h?0JK&?O-55_Lt2Cph36~)ZN#2&>TpSM2>I`3qy1OzPVF}|kzi*4# zojw1?DA8glE|G! zDq@!+6DpjVA$TcPGJsnIpD=zDJ{MpXPBZ;p$(rFdOouzQe|2uJ5NJ13hLDUyqnxPB z;=;&HNlPX?{8m10)orK&8QXeM>p8{r4r>Tx$>A&Q?!9YP`*E`oP*7YDCPyRI>STpO zcixp<31g^wiQ`64TT|_;U7G?*uw1v?%r^YL2GaaMzA9@`O2ouZROk|5_4OF*@dg%} zY?s_kCi777XG~4{z2zjbm~_(z$`TG&)67Ig60Ve-f~I3}TJm|RE+v3ewJ+U%2z1C? z1OicaL$ANXYy%J-EZ{<+)p26+7s{dAktZCX;qel9URS(&00nX_b_s<4rxVemm%Rs5 z9HW2Ab4@^8Oo)DT5*DlVEEB!!F2u^6RVmEbSCE*2~O!fwKlxLO}j~;|aNAhHp z+3vG+?-z4m5wf@y43<2|>U6f7fO&ewc3fd9yH;83TD2Fmn9SD3F#M?X=k&L;Dcj!y z1vD`G9DJAxi=l$;(}tlAt71QKpJ|~Kf1Q-bJr14;r$KO%#y=ro$J;5AA>cb};-|2B z^9RdyTY{f^8di=kDbQ)QE&nrXDz&8z^$7ek6D0m0W&#|54Rv80O_J)v;$B6Trmjrs zVGu^8?8GtrS=2`CY3Vmve#b#}N&?}iO*%b(vQgQCgAh9mPA2PYF`j+J$CZsXle0zv z{x%HyoH4$`gAbR`cxjhOAljMk43e^Y7r3?i23=7z>7__%@StY0bq+{f|Rb z+(*Uf7bH$ZM7b?5ckj5hiATxpE!zS*Uf2~w<@t~RL+L=6RC#VNf=t@uL+j^E?KU#S zUeVB{ej2+W2hS_{njFW`z7Cd!V+4bPd8Wdr5)O*~3yoe~G@ROeq}aGwqHt1l7QDk5 z`U?mGOaa)X^jR~`tAZAV99Uy)+PO`nE>V_cSZ)GFO9bhY(NJtI((?tkyVi9lMvlD# z8nMI$hwm*_DyP*1881^mOnSUiHLyDeqN5}o7+`>)DtapjN$z~RRMhJl zJ# zP_!R%nw^M=dWzK0!B?a zGWBm&xcKY6dm>B@B$-!vSra}XuF zi}BXyZ&|i>K(_bD`L7xd=}A6QJUm&Qe;OW*?wEWpz-}-cl@)Jkjm|O0$wNwxrOC^+ zWFs;o{VOKcOWp7;cOowMduF{^qz<&}eU$^SZ7Yn|_I9>{&DzdS)5cgbSP9XGdv2s8 z82j{lzEU(;G*R0k^%4jp>z~2m87lfwad8b=5ec@tiyR-796Baup7kyXECK@^I2*nFb{mbJGi}(eN(~ zyf}$A^W}sEp!6=szP%0o;&7QD*tnOPhpMKpS|EgLmS9UkMeDsdErNpPSra5fF#Tuh zi1B^H_ZyEU(+S_*Bb!XVwLtI~;?6n0)d&d3@zI>q?T0A$G2+!}6LYZ>fRh|Xx{ru2 z5c6^pbC0chN}ZJIEJH$m_NdpcPh|&u#HELMiEiObXb8(B^M`%+WzqKf?HP^Q#{hR; z=km*8|BX$_Y1+~Q%GV@gl+_BPbgO?bwOlMB$nTNGe*x1>qwFp;sHwNh4UM}`z1|OP z((;YF2)Y_(j0U7@Q`^So>tGGHRx4>p7N>#GHHPJ;P@AhZOzpe<^O}z=PE0Y29t;7e?{UR zhF8e!SMzcDQ=nz^^r@7Jos^^yw|{4gdGiy)D8cG>=F6Xh|4{bYX%`2-ZwE($R5ivWlKBp2_b$-%(98{sMDa&x*B0ks_!TOmIGaHun@Flw z5sEOz-8F~qbEs*@r+X&Wb0a;y8W?NWHL0WDgE|~WWCW-!ayvi)s+0YHCrjK%urhc| zP8=E76{p05Z>O?q*Gw@mKI(j7VV^Kf&I7zl9A3CZEf%K|_x=ce29{9L=MpEwroy6; z#r6w~S#IG+!fQrpNCoQ-|}Urh&dMJvPiOyAGp-0)V%=!&2A)E=H0Hh>$4gWE8Gb=)1F`f)|WnQ~v2E8udr^Spy;vj%vNPg;WRBEY<2pYg0?|#qR9=gqk8ZKIRO&^YoV^ z#$-CpbECB<03zi(KeQ4H?KT(0F|%0@kf$DX;8$CG@wh_H zK8AABcCZx|-`8w0E!EyUhgLH9e zR`u#Qg*)+&2Lb-p?3ByHUEPaU8Y-wAm7Rh|XzN_~PP-KUrMTM)UBK=>YTXvC%>F`# z$085FdDD^hrd6ibDV}gFG!BgRa1}Gad_|pFS%gU&?0Y}_Ee%iQ}ET;l~0XN3sU`6io0J1_y3vaV3ERu5E4G)rd?nw zv9cr{R*s98RXlTj$?{K(E9P)tk`N={o1k;@cesp2>YGseY|wXjyNeIyfanaRo+(`N zVPZ(!`8XHcB8vKUFj;7EIBQAYYJm_Tf%|NM=DtsoU+V+q88U)`RQm#ZMC4oJX%j5{ z_=4%0r#h<#qNxSnkU+V17HWxC7?2YIQp`^0qwgiwiTQ3<>-sCT4n>KF0C2f(eh!Gr z3CN>zyc1rH$L&P(jD=l{eC8?)jKNJQyMMBE|6pAOFZqA?PAbri6tL;({h95%YQV6u zH5=c&NKIEpvVFJ=x4bWj(Co3k(^OKzdkEmBqcpClh&}GfDfEHGw@FJBqocEyzmX@P z=+GjYEqkL*c(6tG3#2v0i*^5P_K0t8MWd8r$p?G+AcUV1Hkp=79JA>mC6%LWFGgeq z)KnKeRNplob<+(*LBXMxaSCJFy2x2c^vE-wA6sLXxyO#py|lWaV-tT`#9eLEwua;e z@iJ<@GE-USr5!uP=#csTu=rlBH0YD9E&KiV@9$i;&O*9+E&;_l#D$ohVbCyI@4Wa7 z`eQN22`I5g^?JdKY4nazI`pKlcJ3+IK^H{y;;JmTbeqq&H2gs>vmDH*$g3`#uAt^b zjEX2Sx%7__4D9^v7lOAwDMkV*vfGAup7ob# z#yeYz*By^Gtvl=_=UL5z@+tCDambA_ z5SzR;lf5^ELgO4u_}trPPaCp*rk6+$Lc5+&CiA)DqdxW_@hQx7%roRcc0O;Hd@>-Q z)@F~nnkCs1t5Zs+z*xR@l+<~{qXr*KzFoj&^N2h$8U_7Gr|oz#qYpwkbu{~-Qvb2Y z(I$9!fa@wOo2vfU=>bxqZyJL6&jp`~+1xwZRlV_S#=_mc<8F(nSNt0;2a@DQ)GSWC zTS%@$C(C)Yog8Ci%Ny0b?mIq?Y=!Y2TGE7IaV*Z3u$Wq|qf=$&h@~E2dlitSzDmBe zgs?|bkBGLom)9+(^Kg-VGyLv5Zz{7tR#fq)^%R}(^*+5&tNs_Nu|x1)TM2zP}LbFxv4~&o#EymFnAd+;K&1|KK`4mgp~Q+E9Ag9 z=|djs?R~vuLjl$p(!PS*`BzR{S&Fl_N>yd5kpajWFM13}97p1Qm+E(s)l||n>n4EN zl^O5NsVsJgGwOUk}IcNyTBV!#lOo zcgWWvSquoLO$REM1JABHjM;}0fe91*G`7P^&(+O8*~y_0un2;lkw{;5!spYAJ`i<#IhMqB4?j4T$+u)_sN)y zTpl_QKHS6>Z9 zcDLL03oqv0lH2peownjXp7dDQ-mEoa;R#G&%8iW-TXxWpGd=(51f`;er;G4X8}zfe z=tp+EjndLmOgc1EG=ZtG6$5TKfig;9FDNu~Y4{zZ1e124cYsot(Kx)^P= zQezp7&l`VA{wwu)dq_M6BkF3`$6XgYPMY$`a0uvdW*`C}E>3Hz<=8-fuJu<#E1T6( z=ix5mTsXBGthy8DKp^6}NXSq_?>MQm>kaooaL%8Lh>T>Lo{gTr`qOfEoJKoQRU*G@ zzQ<7X#7Rv}B~(|F`yS1XUZFWI*9#j-ZVl<1wR1VWe3*N8Ea9L8xUAFAs_7mFFbrFX1^8wLimDRfOfzXbZ}-${cik8DJoJTR8pc&BUddVCW`Po zJMG_TZ8%uwVD76gs^+b|B7Lxin%D3L2>Pq>`faaVz1$UZ)E65;@iuewDC+(Zda@K( zOzN+3>{8c~AOzm(ff&Tn;+_=exu(~rGnKjh=_Jo5f+p#vM(ZE|7x{d?%;<3zx7o2m zXheQ@!S#Tj_F>hr^BG}v^o>z|KPv5j_Ml^q`V~Gq?*GVR#gIH!0HD5){@piG0+vWn zb6TqH1}WDVfsQqYphv&GHA{zzL&`S3;O1?;SYaUYOq?2KYn^4CWCX^amR%6yKPMT! zU-Me6;&q%;j;2dVb$G1e8>aY3ZodAqXT_FYdGM7G0I6&)eEW8b7t&h^o*G?@U*-7V zIbxm$^%{DP7kHf`lU9X;qYQ?dYV;Zo@MuMT;NUiTf)>y5@!-S!PK=C=d}8k!CxV18 za$cBjr4d(9*#EzC)eFdTpMXfTmVLw2g@XV#V2#I5y%;6ICGa05bOi+zp$i8n5y490 zu%Fo>4hfbY@@PaS#=mBVe3255mxCoS6qG8=3Phc9acvW*k~A?jbur~=9;DzJKd)aL z9pNcRavggf!;#AvCvMUf*cu|(+OLTE!KeV<5Nn1fNT#*F&lRQ9p8HjU1bsc=PgH%~ zay%7qc~s{B99JLFjFm7O-kVY9V=88)Z_-G@pb+OvD_0NLMk{FBH#tYtX|1Q6=YEaD z%X~%91jRl++AgBWoIWMXsQ=Mdo3V2viyaK}q96T1hN|>@DS}WR$GmA&I*2m>DkC|~ zAxMUfBCDx_V=^dKB{g0Agq{*0A|rcZ(zJ}kjc4|2-@2khJ9*8{-7e!l zQCu5E1uH=6>^^;#ssLb?gM$bRshtfeJ!8{6s}>D~z95W3=6#hmKKb@JjAaf-jkl!M zpFlsHR>0@ntD4Np033gts)l{x@XWXl)zK4;LR60A0)6+8WkdLxw4#soy>maOMLSB# z3P>}#VahTo9c0j~GG$1%|8%>LT74{HRXR-LO=WUE^IL3+Ds|hf&M?WvY=!kKMKekA zmZsBaa_MsNBC12@;=nI5gz6BxtBMaWW*3$)TLbPcpFGF1&JY6X@OA#U$w3tX+pzlHRhfPy9{n+#uHV3n@L zL*3fQ@5X~-^H>{$-s3_Rr(x;SLucnA@boj(dyM-tyx^Kv@p6o7h&Jz^dz;$U9_+7l4fYkfMN8qSFQv95g{9cITzLE2*A9Oi%rg?e)yu zU20XF0tsHXKs;5~YLjVEQ{|XE+*+*_xlD#nMVizfA3Xq+F198n=kgC0$_~*f30;-E z^~r^vvJ3KreNV@xxpG>eY}BioCl6S;t$M*Bipo^0^Wkanf^)(0v3H_=*FAC0pN}gf z1Dwi!da(#&Bq1ypFvh9vs&=hC`ThALv!fh5pv9ST6PQX678>5N$2X-VPYR*;Aw%53 z*024!V-NVpc`Ysnn*YA0untksZQ&mTq(@2d(2LYiGE*de6$Uk~`^5?w%zKuzRA*u^ z2yZ?i+y0(9mjBW$*P6u?X0LBSLZ5@X=kuHzQR}^spo_(#6p?D9hVQNECsw`P9q{VM0>l~}93L^k=@$+Te?Ot&*(8wJ{V01wmpgjnl z5lV%<&$_aSQJU2r>R+EpRBGj6)Q@i#cOgp!@_&bO?w)+qv1P&Y>s6;;m?EWe3Xinr zzjgG-f(w);zCg(vl$-W2oypzzKO8q&f$mnNG5EeXRlrH3y_V9nvOWIiMd(kSxPl67 z4`(uq5A5I9#HNjHpIXY!Y@M;sIbsDde)8kixwS2G3;aj{F%=&vP3bVcBnfVOYKnqt zo=h~p6?oKSAKZ`qrKUAQA*G+d^Vk1uAW7SU`p7sro6w@@ca_ETxZ0BUMIjmc8X4)Y z?Fjm&2AQ&QBy8THK33%JPZ9mMcE_QxiqinPs3;^i0){N zeyINZZ)+C0P_cc95*t08q_qp<Sq z>j)2gDA51c1i#t~71#8i5)fhE70RQJ{niI|=Hu(>&yv`$bb{RM#H79`L3nS3BQ zGIkMi%&D->U+=@Y9M99)Euaz=^~2cj)XLQ#5G=&L^vV!lKt~{wej9oGDD;Q8sO>dS zp}`Lq$8w6lu2gS)Z?wO`fH6&_ft~v+{hHQrzJNN5w*Kfef)wja%>RnBb9;KF54gg=Iqim&W|>9}fwPpM%R8eBgZotKr|u zjie4Nd|+8nFJjzYKM>L!90!P^6n#uLr8ijm4O`dB9o~8RKH3k1$7FXV?Q}xP0ZC8u zf)Uqa``fqPi9SKRYfY1|q|*tMu@gyIE*=nx5m9Pqn-mhjN6Iy+;fj=0rbjeNa7MGk zM%sV;a7knqhLRcRMQKx{AM@uJROxAoTf6+~f5q{>vuv7S@^nAA5JR>8?9A`Q5{a8I zi~^M0pVIf#;Mlh2e>yU|>oB+J_*AX89mDQiq(~nGs|=m={uFVZ-!j-QkkZWeau7=wdceHPz#|-gYf{AG@H-hXuhD zEB8lV;m@$7%gku8kZg9F>)*Ql*a`-}lXzTw^m%IF%Zj8rj(AVx+pY#JM~xUsoH(IY zc@+`)jwj;*><(o-bhQSjkk|oRy;mo1Y@(CzWZBJ8rc-F&N)O+uDk@t2!UJy_vYeXg znQQ4wBnGdNWWFT|`xLGOwzXzIIL};1e~MJ65&Z^Ivj&n9_i=w;(dij-i`4-?e$NwijiFU#azWu z<(LU5J1r%HjNy0F0DSnHyiZihbDUj=xnZ=KfZ8yJb}9p^X7jOk!)@ivXsX!<7p+y? z(b@oi9h%vIy4B<8x_4V8TK4^{!Ph~(%EU$=(octd=BV}WeHrT&icfW(*i84N8CIJU z@}n5$Q;&$a^R&WCmFrwiyy*wa+}Ax_u5P(DE-_L-o~y3+R;h|P)r}PtIUPpXM>AFX zRGR7AxV)BoB`gb5imLmh?p#%K*-V^k@RJ+cIc>j6%20xJ8oyIYc(V2Z>n7>igF1pZ zCk0I(!q%nl>7)4T7m+|AwG<3TuvGk5lT-?P^6|yQzO>ux;oVGS+P>MAbGG)~kA);@ zw>)iDRKQ&BtCe;&_+i_8U_p|v>X-hUmEm!UtktSRyk%g+7j?r*0t3lBfe3a-I2IbP3Sj}i{PiS>Dnge}3nm6U9&qX44eE2{3*IB{Na!-GYU zAK3l0-xuMZ6IHFawncO9RIs>EpcOTDcVA8P*3JjVp66Ixhy%px*TblN@R}KR$ye}E z{or_9a(Z(t1n^KzCx?Y0_g$Zvhu%R9!Pu(J)=)t>U&xWx1`g8PyBCT=AT6XnSslv@ z>mA&hwl^Brv1=kC?x5d#X>ze@PE`&oU|t^Bu^M$TV>Es(wJr{Ra0fU@5Ew42+cPj7 zufLpMzQMQT2voah#*k=Fy=7pN5f@+kI~AGqxjZO~_1zi#IDQ*h+Vn~_g1F5nNNQsI zPvjMMgxxzRM%Y{?7+5=1D{OygRa?u_OV`1kwyw~1=VQO&nk5QYD?c?WPn#Ra?)A-& zPg3W@xvI8A@X)UHc9=g`e*AWtxuJhA()~!}b{lB}-%vsuB`--ltmL1;c#{_dXJhs7 zv(j7q;_Ya7U?5HZjbi-9J9g4La|b+0%V~36_xikzVW6p!4b!6dH1s%j<(el;}qGcR-q_zOYv|nn@8d| z`L;S!52-Q)_h1yW7t1yn@Ar)n;7fgy0aPhlr-X!B3(0;>#^ddKh9PwPGNo5WlQ6O| zI?A@wW3WAvn4VTsn=kb0F$3s^6D_DO(A&>9Lj6-vU`M_zC$)=NuhdBw*Jw?zJ+|yC z1Hs3EMiuM@iqrWksL+(tEs{~ciDR;jLaj~64L11!*O5wh8$gG&Uus+%X5VpplGjKCYdjKIghjy%o%kXdN_moK$COEm`PuNmcd5*H9A@* z|D-EXNURIhVp3O(HMLr}`b>Ys()K0xRCrgg%{?|pEwAQ8*N7>V+0+!>h�u%pnN? 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 b*9|p{`c6`ySdi!~!u9M4SffVWF7kf>c*YJ= literal 0 HcmV?d00001 diff --git a/example/main.c b/example/main.c index dcdf15c..e4e8da2 100644 --- a/example/main.c +++ b/example/main.c @@ -152,7 +152,7 @@ void colorfull_table(void) setlocale(LC_CTYPE, ""); ft_table_t *table = ft_create_table(); - ft_set_border_style(table, FT_DOUBLE_STYLE); + ft_set_border_style(table, FT_NICE_STYLE); ft_set_cell_prop(table, 0, FT_ANY_COLUMN, FT_CPROP_ROW_TYPE, FT_ROW_HEADER); /* Filling table with data */ @@ -170,7 +170,6 @@ void colorfull_table(void) ft_set_cell_span(table, 8, 0, 4); ft_wwrite_ln(table, L"Total result", L"", L"", L"", L"✖"); - /* Setting text styles */ ft_set_cell_prop(table, 0, FT_ANY_COLUMN, FT_CPROP_CONT_TEXT_STYLE, FT_TSTYLE_BOLD); ft_set_cell_prop(table, 8, FT_ANY_COLUMN, FT_CPROP_CONT_TEXT_STYLE, FT_TSTYLE_BOLD); @@ -178,7 +177,6 @@ void colorfull_table(void) ft_set_cell_prop(table, FT_ANY_ROW, 4, FT_CPROP_CONT_TEXT_STYLE, FT_TSTYLE_BOLD); ft_set_cell_prop(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_CPROP_CONT_TEXT_STYLE, FT_TSTYLE_ITALIC); - /* Set alignment */ ft_set_cell_prop(table, FT_ANY_ROW, 1, FT_CPROP_TEXT_ALIGN, FT_ALIGNED_RIGHT); ft_set_cell_prop(table, FT_ANY_ROW, 2, FT_CPROP_TEXT_ALIGN, FT_ALIGNED_RIGHT); @@ -195,9 +193,13 @@ void colorfull_table(void) ft_set_cell_prop(table, 4, 3, FT_CPROP_CONT_BG_COLOR, FT_COLOR_LIGHT_RED); ft_set_cell_prop(table, 0, FT_ANY_COLUMN, FT_CPROP_CONT_FG_COLOR, FT_COLOR_LIGHT_BLUE); + /* Move table to the center of the screen */ + ft_set_tbl_prop(table, FT_TPROP_TOP_MARGIN, 1); + ft_set_tbl_prop(table, FT_TPROP_LEFT_MARGIN, 10); + const wchar_t *table_wstr = ft_to_wstring(table); if (table_wstr) { - fwprintf(stderr, L"Table:\n%ls\n ", table_wstr); + fwprintf(stderr, L"Table:\n%ls\n\n ", table_wstr); } else { fwprintf(stderr, L"Table conversion failed !!!\n "); } diff --git a/lib/fort.c b/lib/fort.c index 0d326b9..78be372 100644 --- a/lib/fort.c +++ b/lib/fort.c @@ -535,6 +535,7 @@ extern struct fort_border_style FORT_DOT_STYLE; extern struct fort_border_style FORT_EMPTY_STYLE; extern struct fort_border_style FORT_SOLID_STYLE; extern struct fort_border_style FORT_SOLID_ROUND_STYLE; +extern struct fort_border_style FORT_NICE_STYLE; extern struct fort_border_style FORT_DOUBLE_STYLE; extern struct fort_border_style FORT_DOUBLE2_STYLE; extern struct fort_border_style FORT_BOLD_STYLE; @@ -1490,8 +1491,7 @@ fort_status_t set_default_cell_property(uint32_t property, int value) }, \ } - -#define DOUBLE_STYLE { \ +#define NICE_STYLE { \ /* border_chars */ \ { \ "╔", "═", "╦", "╗", \ @@ -1510,11 +1510,37 @@ fort_status_t set_default_cell_property(uint32_t property, int value) }, \ /* separator_chars */ \ { \ - "╠", "═", "╬", "╣", \ - "╦", "╩", \ + "╟", "─", "╫", "╢", \ + "╥", "╨", \ }, \ } +#define DOUBLE_STYLE { \ + /* border_chars */ \ + { \ + "╔", "═", "╦", "╗", \ + "║", "║", "║", \ + "", "", "", "", \ + "╚", "═", "╩", "╝", \ + "┣", "┻", "┣", "┳", \ + }, \ + /* header_border_chars */ \ + { \ + "╔", "═", "╦", "╗", \ + "║", "║", "║", \ + "╠", "═", "╬", "╣", \ + "╚", "═", "╩", "╝", \ + "┣", "╦", "┣", "╩", \ + }, \ + /* separator_chars */ \ + { \ + "╠", "═", "╬", "╣", \ + "╦", "╩", \ + }, \ +} + + + #define DOUBLE2_STYLE { \ /* border_chars */ \ @@ -1622,6 +1648,7 @@ struct fort_border_style FORT_DOT_STYLE = DOT_STYLE; struct fort_border_style FORT_EMPTY_STYLE = EMPTY_STYLE; struct fort_border_style FORT_SOLID_STYLE = SOLID_STYLE; struct fort_border_style FORT_SOLID_ROUND_STYLE = SOLID_ROUND_STYLE; +struct fort_border_style FORT_NICE_STYLE = NICE_STYLE; struct fort_border_style FORT_DOUBLE_STYLE = DOUBLE_STYLE; struct fort_border_style FORT_DOUBLE2_STYLE = DOUBLE2_STYLE; struct fort_border_style FORT_BOLD_STYLE = BOLD_STYLE; @@ -2919,6 +2946,7 @@ struct ft_border_style *FT_DOT_STYLE = (struct ft_border_style *) &FORT_DOT_STYL struct ft_border_style *FT_EMPTY_STYLE = (struct ft_border_style *) &FORT_EMPTY_STYLE; struct ft_border_style *FT_SOLID_STYLE = (struct ft_border_style *) &FORT_SOLID_STYLE; struct ft_border_style *FT_SOLID_ROUND_STYLE = (struct ft_border_style *) &FORT_SOLID_ROUND_STYLE; +struct ft_border_style *FT_NICE_STYLE = (struct ft_border_style *) &FORT_NICE_STYLE; struct ft_border_style *FT_DOUBLE_STYLE = (struct ft_border_style *) &FORT_DOUBLE_STYLE; struct ft_border_style *FT_DOUBLE2_STYLE = (struct ft_border_style *) &FORT_DOUBLE2_STYLE; struct ft_border_style *FT_BOLD_STYLE = (struct ft_border_style *) &FORT_BOLD_STYLE; @@ -2937,6 +2965,7 @@ static void set_border_props_for_props(fort_table_properties_t *properties, cons || (struct fort_border_style *)style == &FORT_EMPTY_STYLE || (struct fort_border_style *)style == &FORT_SOLID_STYLE || (struct fort_border_style *)style == &FORT_SOLID_ROUND_STYLE + || (struct fort_border_style *)style == &FORT_NICE_STYLE || (struct fort_border_style *)style == &FORT_DOUBLE_STYLE || (struct fort_border_style *)style == &FORT_DOUBLE2_STYLE || (struct fort_border_style *)style == &FORT_BOLD_STYLE diff --git a/lib/fort.h b/lib/fort.h index 3f787b6..f70ff9e 100644 --- a/lib/fort.h +++ b/lib/fort.h @@ -624,6 +624,7 @@ extern struct ft_border_style *FT_DOT_STYLE; extern struct ft_border_style *FT_EMPTY_STYLE; extern struct ft_border_style *FT_SOLID_STYLE; extern struct ft_border_style *FT_SOLID_ROUND_STYLE; +extern struct ft_border_style *FT_NICE_STYLE; extern struct ft_border_style *FT_DOUBLE_STYLE; extern struct ft_border_style *FT_DOUBLE2_STYLE; extern struct ft_border_style *FT_BOLD_STYLE; diff --git a/src/fort_impl.c b/src/fort_impl.c index 826e9f6..d47c5fe 100644 --- a/src/fort_impl.c +++ b/src/fort_impl.c @@ -836,6 +836,7 @@ struct ft_border_style *FT_DOT_STYLE = (struct ft_border_style *) &FORT_DOT_STYL struct ft_border_style *FT_EMPTY_STYLE = (struct ft_border_style *) &FORT_EMPTY_STYLE; struct ft_border_style *FT_SOLID_STYLE = (struct ft_border_style *) &FORT_SOLID_STYLE; struct ft_border_style *FT_SOLID_ROUND_STYLE = (struct ft_border_style *) &FORT_SOLID_ROUND_STYLE; +struct ft_border_style *FT_NICE_STYLE = (struct ft_border_style *) &FORT_NICE_STYLE; struct ft_border_style *FT_DOUBLE_STYLE = (struct ft_border_style *) &FORT_DOUBLE_STYLE; struct ft_border_style *FT_DOUBLE2_STYLE = (struct ft_border_style *) &FORT_DOUBLE2_STYLE; struct ft_border_style *FT_BOLD_STYLE = (struct ft_border_style *) &FORT_BOLD_STYLE; @@ -854,6 +855,7 @@ static void set_border_props_for_props(fort_table_properties_t *properties, cons || (struct fort_border_style *)style == &FORT_EMPTY_STYLE || (struct fort_border_style *)style == &FORT_SOLID_STYLE || (struct fort_border_style *)style == &FORT_SOLID_ROUND_STYLE + || (struct fort_border_style *)style == &FORT_NICE_STYLE || (struct fort_border_style *)style == &FORT_DOUBLE_STYLE || (struct fort_border_style *)style == &FORT_DOUBLE2_STYLE || (struct fort_border_style *)style == &FORT_BOLD_STYLE diff --git a/src/properties.c b/src/properties.c index 1f6fa45..26d4e7c 100644 --- a/src/properties.c +++ b/src/properties.c @@ -696,8 +696,7 @@ fort_status_t set_default_cell_property(uint32_t property, int value) }, \ } - -#define DOUBLE_STYLE { \ +#define NICE_STYLE { \ /* border_chars */ \ { \ "╔", "═", "╦", "╗", \ @@ -716,11 +715,37 @@ fort_status_t set_default_cell_property(uint32_t property, int value) }, \ /* separator_chars */ \ { \ - "╠", "═", "╬", "╣", \ - "╦", "╩", \ + "╟", "─", "╫", "╢", \ + "╥", "╨", \ }, \ } +#define DOUBLE_STYLE { \ + /* border_chars */ \ + { \ + "╔", "═", "╦", "╗", \ + "║", "║", "║", \ + "", "", "", "", \ + "╚", "═", "╩", "╝", \ + "┣", "┻", "┣", "┳", \ + }, \ + /* header_border_chars */ \ + { \ + "╔", "═", "╦", "╗", \ + "║", "║", "║", \ + "╠", "═", "╬", "╣", \ + "╚", "═", "╩", "╝", \ + "┣", "╦", "┣", "╩", \ + }, \ + /* separator_chars */ \ + { \ + "╠", "═", "╬", "╣", \ + "╦", "╩", \ + }, \ +} + + + #define DOUBLE2_STYLE { \ /* border_chars */ \ @@ -828,6 +853,7 @@ struct fort_border_style FORT_DOT_STYLE = DOT_STYLE; struct fort_border_style FORT_EMPTY_STYLE = EMPTY_STYLE; struct fort_border_style FORT_SOLID_STYLE = SOLID_STYLE; struct fort_border_style FORT_SOLID_ROUND_STYLE = SOLID_ROUND_STYLE; +struct fort_border_style FORT_NICE_STYLE = NICE_STYLE; struct fort_border_style FORT_DOUBLE_STYLE = DOUBLE_STYLE; struct fort_border_style FORT_DOUBLE2_STYLE = DOUBLE2_STYLE; struct fort_border_style FORT_BOLD_STYLE = BOLD_STYLE; diff --git a/src/properties.h b/src/properties.h index 094f999..dba27d7 100644 --- a/src/properties.h +++ b/src/properties.h @@ -162,6 +162,7 @@ extern struct fort_border_style FORT_DOT_STYLE; extern struct fort_border_style FORT_EMPTY_STYLE; extern struct fort_border_style FORT_SOLID_STYLE; extern struct fort_border_style FORT_SOLID_ROUND_STYLE; +extern struct fort_border_style FORT_NICE_STYLE; extern struct fort_border_style FORT_DOUBLE_STYLE; extern struct fort_border_style FORT_DOUBLE2_STYLE; extern struct fort_border_style FORT_BOLD_STYLE;