From b0f8a2d0b9c4a45c7a17177e9c76bc2da57de1fe Mon Sep 17 00:00:00 2001 From: jkriege2 Date: Mon, 6 Jun 2022 23:24:05 +0200 Subject: [PATCH] - NEW: JKQTMathText supports new decoration instructions: \cancel, \xcancel, \bcancel, \sout, \ocirc, \widetilde, \widehat, \breve - NEW: JKQTMathText: reworked drawing of decorations: improved appearance and positioning! --- doc/dox/whatsnew.dox | 3 +- doc/images/mathparser/MTDarrow.png | Bin 1543 -> 3190 bytes doc/images/mathparser/MTDbar.png | Bin 1350 -> 2385 bytes doc/images/mathparser/MTDbreve.png | Bin 0 -> 3552 bytes doc/images/mathparser/MTDcheck.png | Bin 0 -> 3355 bytes doc/images/mathparser/MTDddot.png | Bin 1553 -> 3082 bytes doc/images/mathparser/MTDdot.png | Bin 1394 -> 2686 bytes doc/images/mathparser/MTDdoubleoverline.png | Bin 1249 -> 2530 bytes doc/images/mathparser/MTDdoubleunderline.png | Bin 1382 -> 2612 bytes doc/images/mathparser/MTDhat.png | Bin 1691 -> 3428 bytes doc/images/mathparser/MTDocirc.png | Bin 0 -> 3284 bytes doc/images/mathparser/MTDoverline.png | Bin 1232 -> 2288 bytes doc/images/mathparser/MTDtilde.png | Bin 1769 -> 3478 bytes doc/images/mathparser/MTDunderline.png | Bin 1273 -> 2385 bytes doc/images/mathparser/MTDvec.png | Bin 1410 -> 2953 bytes doc/images/mathparser/MTDwidecheck.png | Bin 0 -> 3626 bytes doc/images/mathparser/MTDwidehat.png | Bin 0 -> 3309 bytes doc/images/mathparser/MTDwidetilde.png | Bin 0 -> 3519 bytes doc/images/mathparser/decoration_sizing.png | Bin 0 -> 26635 bytes doc/images/mathparser/decoration_sizing.svg | 352 +++++++++++++++++++ examples/jkqtmathtext_test/testform.cpp | 3 +- lib/jkqtmathtext/jkqtmathtext.cpp | 242 ++++++++++--- lib/jkqtmathtext/jkqtmathtext.h | 55 ++- 23 files changed, 588 insertions(+), 67 deletions(-) create mode 100644 doc/images/mathparser/MTDbreve.png create mode 100644 doc/images/mathparser/MTDcheck.png create mode 100644 doc/images/mathparser/MTDocirc.png create mode 100644 doc/images/mathparser/MTDwidecheck.png create mode 100644 doc/images/mathparser/MTDwidehat.png create mode 100644 doc/images/mathparser/MTDwidetilde.png create mode 100644 doc/images/mathparser/decoration_sizing.png create mode 100644 doc/images/mathparser/decoration_sizing.svg diff --git a/doc/dox/whatsnew.dox b/doc/dox/whatsnew.dox index 4bdcf604c2..f1e11c9beb 100644 --- a/doc/dox/whatsnew.dox +++ b/doc/dox/whatsnew.dox @@ -26,7 +26,8 @@ Changes, compared to \ref page_whatsnew_V4_0_0 "v4.0.0" include:
  • NEW: new "seaborn" style for plots
  • NEW/BREAKING CHANGE: changed JKQTPColorDerivationMode into a struct, which extends its capabilities above the previously available few enum-items
  • NEW: added debug-feature to show boxes around text in the plot
  • -
  • NEW: JKQTMathText supports new instructions: \cancel, \xcancel, \bcancel, \sout
  • +
  • NEW: JKQTMathText supports new decoration instructions: \cancel, \xcancel, \bcancel, \sout, \ocirc, \widetilde, \widehat, \breve
  • +
  • NEW: JKQTMathText: reworked drawing of decorations: improved appearance and positioning!
  • \subsection page_whatsnew_TRUNK_DOWNLOAD trunk: Download diff --git a/doc/images/mathparser/MTDarrow.png b/doc/images/mathparser/MTDarrow.png index 8a4607f61846d59d243e745736766589bee75c71..4012f9c9f1ed890354de2e4e5da6cfb386066038 100644 GIT binary patch literal 3190 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 O0AOimhp0F4N&XL$mFBVl delta 1481 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 diff --git a/doc/images/mathparser/MTDbreve.png b/doc/images/mathparser/MTDbreve.png new file mode 100644 index 0000000000000000000000000000000000000000..88df7d02ad9c08517a8ec477f8343732d3d15bc8 GIT binary patch literal 3552 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 bfuEXicf+X@ZMM3=4;aWu52ahHb35T*%Fw|t literal 0 HcmV?d00001 diff --git a/doc/images/mathparser/MTDcheck.png b/doc/images/mathparser/MTDcheck.png new file mode 100644 index 0000000000000000000000000000000000000000..620a702fd3ce942eadb800131ba35ce815c62588 GIT binary patch literal 3355 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 delta 1491 zcmV;^1uXiC7?BJiiBL{Q4GJ0x0000DNk~Le0001A0000p2m$~A0Dc%lgOMRpe+7t1 zL_t(&L+zK#ODsne#(SeExYj?z$Ig|(wPF;rH7kW6*+dB#Ap~9cK(f6Nv$%wy5{Mfg z8xh3_dKVW#2rBUbisDA_weUUp=yRqxQ{8oXrrXTqUiwEfRG&I^y6UT{Q#D>D#Z9V? zMyifRs*Xmn)w#R7>+S8Wt*yl`f68q2d3}8y85yasukY;aJUKaGYe^}#I(>b8UY7p; zezy8dPfv4&=QTGsv$doYTb-t+CKkZ+P-d%-6t1eOimfH3*y;=o4Y2^8H#|JdR-dJ% zC9d$ij*bqtmXuWWPzrP%6xe_EvKXr$_B zr0Qs->S$={;NVzYT|GNH<9EUR{r&p-`u_etzdM+inCR;2;!`>oRBdl>v!73>Gc4!l z=j>5*oa*fD?NwJ-qkk0@6^o0DZ1uUly~SSv>iy{GC|lh?1#%`Z;LFQPt_v_QFu;DE zx4F5=)&hBad|X~$-rCy2f4>tpWq}2D)WU~NZk+1$^z?8aJ+GmmfvrB1lapNGd1Yl~ z4-XGq;bwMrmK*r1hOJ?smfT`58LaEZ#zqQ)QLr^jcXu~c!6&lkN!2MYFV9CEEEaCy z!`1-D$H(N5WH-&t%~25I^z@V~G8vTF>H|-%aG>q1nwlDfsI08Se;uE#KG<1xb#?TC zv9U3>Mqw5O*xlV_s{o2nEi__NEEX0PC=PLPalsXt49aZvu`)&wr#j&J`g(0`O-46h zy=-i392^|*dmhN_Gc`5E)+{$SHMGz(Q56t*!86s{>7) zw*}*;ZV^^urj<26e?QOf$#{8r+1c4SIy&O_Tn-NpQ41e_cT+rdfXvPEJR*B=L6w}M zs$((>z`0IF+Hu%cSX^ZJ{}7@MdWjxmKIv|T0#{_gv{O}#93ihW$iC)~Qf@#lR#sN1 zEf!s9nm54#n*HEQEI0NqK2(T(e#=ZB zoGM)%Gf&FxRNGmY6KW5!$btfb;;W>3jJ0FsW)LHYM9!8qNJSm=pDP@zhS1b8GlNOS zD?aun*+GscxNQqX<}&NZQ`9jV3I#TWp{XM;xDW+_Vs8P7>~xI18H8g6hU!vB5!6Cc z2N;bpjM)DPe=TIP05S5hg}jBc$;YLRwCjV4P{*X6H<@H0=Z#2y1C$4d-1shaWYU2T zTf>M@#~d*xF(<)nRU|?x0Db4@gKM<^xjNWl)1?ljKM?uR zaCK-%bQ8g-C>EevfDh+0+h+W(?JcKKPXRg{B6q-{>d4_l-qb_XL3?Bbd5##dX#f~A zERmT4e-6}8Ig;e2Nb;{jo`6Q>P<7-NBj; zRZ9JIzPSt zgPLKPSk366xLqd#y9?XmSpA2SL< z_5_Cv!crN9;232b^MvG`Pa5n^%pc|$(wj{L@QSSjjS9;BpPM?8(7aO+sX7{|IvS}u tDH^Fd8mT%OsX7{|IvSs|I!Vc7{slzb)g<_}4X6MB002ovPDHLkV1liT!)X8j diff --git a/doc/images/mathparser/MTDdot.png b/doc/images/mathparser/MTDdot.png index 8eb1493a63dd464713d12994ddeee3342e91d110..a194c757c347fc7d284700c6c8b75ed9a05e663e 100644 GIT binary patch literal 2686 zcmZ`*c{mhm7avqIc3Hl-hGZXdLrM~3-?uT@GP19em_Zs#>egV&z9n2+_FYVj37H{8 zDO)C#eazSyJ9qB${qsG~ckdtPJ0RRA}v5}q)!}l@F z;yg3sT$Ki0WjH3JjiC;pX7D!(BRJy?F^2#E^@;39u4frB+XEv9BmltG^|vwg1eSR) zl6)wAdlWR#3l-)X> zn56*8o4|ia%1eCj7yS3fdg0CgijNm}S+Tn_!Kz=}_C&%44&jxn&1Vc{#b_+cn2?{* zFy08lgO=heFs7U6Nqz_OCVSNC>7@|(c>himyU?2I>elx*X3@K=k$dY*N>Xl{GbC(z zdHLe!KWC{owx1Ce78fxXjLN;wd74NhGAp)YtkxwnBV(PEAACq(ahp)jyyEDwhPR;9VvVPvVXL{^{WemJf6gdO%u>UwOk-D7_6(SODaP)Bgh$+=a2;y2IO53 z%P#OmLV}xw?BZZ<7qdgNXMYBxgS%UYJsdvuK2n2=Id=D1u@Y@(brSE45B&vir1hrC zWS#GeVPUNUtpDs}G2;NqSmbobd3^7D%DUlq=3u_^xIa@VQA{gpdufP5@onSJZuI^< zqxXxlvpfQ3lw+~j3l}b6xI|kY{Q8ioJ#hQp-O#V-}_+T9Av?PPlbH327FO z+9yZ;wB5Do4Sfk^7Vlc(qm=*M4M{Yo0#ZeV_jJ|?aystsRkf#BUVpJIDHfu>pg@k+ zY{efC;X8TATR6?INUf>y7X}l*=%<8VP3XJaVf$qNsHmvm;9wLA<>%)Y9)7VlREPF{ z(pMRy{9~bPs@)e%=eUo5J8F;TFM<6Yf4qura{LM>dwgTo}=<&e4#KUMw9=2ipPP_!i$kv7rf|F9|A3UrUNNa1)qa;D`KeRa~QOrR}%>l{+#^YeH8)9`(s($Z2H zY3V#o^z+OEc9Khmw+*FQ+@*Q5mqy0b@+dq!q$@6{<-82aY$qIu^(@-8D9qKZ{b*sy z)|5Eb!mW&phan8mEqmZ4cWkoOuoAp2E4q_=8?Oc#mkmRhps(#!j<{owKk^XM6a~@= z>H);1E2B?On}^{ZU}^NmhZG%BT{m?+*h+ftDUnv&u&6dN9%YVK1xdwl4_2oygXB&A zP=JoTC2HiqLqXZTk|y9ZOQrd&;hCn2={Ppue$+(1>eRO}3levzg5yO;2fW-=HWUnl z!ID%xQusvWijwUU3#&>UieH<5!(7H23XtH{qE|UyBZVFiZx9pG-_^_Oi7;W(!!mivDnDz=7QA zR7(WWR7Vi|_g`0y)kx28`vr4N@ILVN5rW<9zPQ{xdNh)^W7up}rfz1$jVNh~6;N-~ zhM8??`#26PCv-4ZzR|F2)kd$Hbp~+0H=|UUI5~Rp&9{1?eGP5ys)Uj`5GCQCR$}Lr z@cLCEv!&y=ZaY>q;;YDujWecT-a`P@F$By-pLw(8gdH2`s{h%x!nGc^a~>K;uQ729 z>vjxYD&bdAK;%eNdn@%|^v6c^9dq7c3976ky-r+6%8Lo*FZF?s)oSG(aSQ%R8cdT? z3$Vb7nxP738T3UgPO%K>Vo^4TU)W30uC&ei=01kPr>#kd4lHy|Benn7-91KXU@w?hG zev%_hg9Q}Hd^Y&@J|A(QST1Sq&at9&8+gf!EbdR7(j(a75(I~qeK_59{3R>Coa6`4 z<<+eHwhEf7d_sC6YI(5*jhT4+g&T}(pVd+zV&U^rd!i-_0o+SPk|vJLPKs~hsKxk>V)iUm@t|` z7mQ(mD|T)ty%J^l}Xo6ZbU&HQdt=k|0b;l zQ+dt=uy49Em2wVKz~KM?SoTC~m*-5WmJuY^&m;juWY=OIndtlN9dMw__%D16vrBwJ zI5o$=Ra1qD+0<#qEpwhQ=B$PAiS^b(ut_~$mf#$)Oo+Sk1yiyiveuDA z6Ug#VGHI~8mqL*3g~u4v3nkHKrN3iS{{Oz0z*yfxuSVzIlfM9R C+$_BS delta 1331 zcmV-31YjuE}FdWm>TU zXvGSk6)S)SiFI*tF*`duIyyQ(e?NbBcc<1S(IBy=r>B!AmY0{++9Vnz*6{GKN|hv2 zQ&Vbf5)Be-Zf;JcN|KF@4Yf9j28nfZbF;X(I5|1l>2w|*9@N?-8YEWpX~hbl6)S*N ztN>cE0*Dmr{QP`(cbC6uFKx9}22o_@0`upGj`pQkSXj_;Npf&-pw=2(Ute!;Zyy~U>3s+>VvUcF>*ps4 zZMBB5xw)y&cVkMeS@BStK?!_d$W@8fUu)^H&M$H&KNH6W1mBAJ?Mv%bDA zK4D;BAoPD5F=7FsvA4HZkZVe@nQLurO|4H{U0q4G^0IzSNLXWIW4P_>>swh_QEO!) z#i|c-bcIqp-6ig}wzl-Xcii9Klig2GPxU^87ZVF?nz!3o?CEfOe{o(?ESHsl1B4i5 zd$I=!J+U;0aomW#3P^)exvt`#m*sOBd1YcshQ`ARiLj&fLP#GfLTSK-92og zfr!-ZVSgK_sY{+%)?PfRFtJ?P>PZNIT~(p}LDbeFn1{sOe|NtT#m1U z+t=h&X+Uw-s6yW4KebryeUjtrz?u`DxRUbcVipSOQ5BjZmJIA6?Nr7bCcxJt*4jodob){0_-H%}}{olyGHN@B?jE^tGAq^@U$ni0qC55RP0XADe|(4b<=~X!ubQ&(YDnn<cE0%*kwpcN~CR;&P8 pu>xqt3gCYvR()ErD)adGH(X4I;5nHY!2kdN2>?k&PDHLkV1nZNbXEWW diff --git a/doc/images/mathparser/MTDdoubleoverline.png b/doc/images/mathparser/MTDdoubleoverline.png index 09636bd0fadc673afc938cdb4f24eb356328b483..bc70e1184443aa607305d75810668d3ebd6d0508 100644 GIT binary patch delta 2476 zcmZ{mc{J2}AIB}F$Cl-$LAfc*n3xbIqGB*N%UCl_>dF!dGnUL4bo*r*xwgp8gcKLm zm?_K1mdH|;p{#cdW~jz6wrt6A=XRd+oadbTJb!$@-#@pe@>A5w93NTvNa z@=4(E6Pdukd{ILwoy-HOUY_N}LgJ!!8hg(xqK`w&Tbf;LgyqGuY$a0lXct`WkYY-v z6@Nqj%0KMX_s^>|5%qtn*a|3W|4Zn{YYiZ-u1D_wa?^Yach)G;o&qm=0)L7EBT@o$ z_e#=4T3u{nyvmE4X&H)}f@G@+wT{^V@#wa`&2k924V_C!@s6b?Vd|Y=XC^)$F zwoJtQSWKlKXXJ&C>KP0^BEn1JW=o|%;}I@#@3(RM`aEl)GHh!jG!?b1U&Y)nBeRSA zGC3)kxaTBJljheTiaNgDts9>^Fc#^1$Z^{x3)H3a5XbI zVDQ{Jt@*Y5+WPw62=b}mABapRGv@8?_ic$F3-@; Cyo#P{`k=_ zX14Ct9lL3*-ICYxR$ILGGgIio}HzOqX}71BaWs-j=(TnujkNGmNDx zds?V_PA6eyP6eRh18Dws#aR>zrOG6ygB^+7;?YZ2b-~RJ#tN13*yt6m^Af?1^DZ4s zGs*LCgxOQ+dVkKXfB#tO2r%9*?ylu`1Cgiw$ngu9Rpk25F?@O_*tas&maeylVEpm) z=jU6top-lm6!nKUm0Nmmt?~w2?ZY=@xg9z=$Z%$T!~*`O$laYYK?U+dQ^$a$Z*6vR`YRHKMvv|17#x}@YJD;10jJcm5Z`HfkDH7j zbhOaPOGgYm>Ict6lp`3krX>r0au>8JGVwCe%AGUIc3-Yiw5Hg(9&poaL;@R zG>s5r@2-df5vC9mM#YAmP~eqsi0_x8^MTHkDmSRbKK47&)IP92LM;mbpa%{D3w>E(elc9yQ{t8c@C&;*QY@kH`P z66r)}1NO&=4)$uVel1av?t93!O}%F*++7^_2swByC(kS?zK-(S5&k6H z0pg-#=r@L|ul>!abwtV;`-HWklU%)=M?oQ^9h$MOA(ty(ut+@P%uTX1WaWsm>=f*S zy@hVd`QiS%elYuV`^Mt+>9S+zh~Z`@J8IA7c?X%KN#sG%@ej+e%CB?y1w`z#-s&p# zWaF6l912j76j*UBLnCxp$J}1c#P)rx%mfUpYi%3ZGo;h5>sMcThxybsbFj0xZaDkI z6SeB%;HRT}1maB_Ni+>Ht@&q3FRtu&gN2n8nNsR`YVL`r<{_7Hf7Bhw4ILIE)pM;3 z4%j5w_x4c@2YuXI#NX|SJ($`Qtsu_}hS3%0jkEx{lnzXv-dU(pmLc>U`f<8Y5y~!V z9krtEu!6?z%DvlakoLqdj;T+ZMJ0^(xi@4u=wRKgFTaUBLAQW5WhZIB+)LcmOuNx8 zS7K?ZJ9Dvs>kL^?iai6>M_9lcdxiq~GmA$b*}54tyl2Bw1|=5tz1=-i`Hk56T^-2Ws!s&Vm8YVo{X)mg%9)RB-`d>$g`L{N zTByskDR(qIrC!5WQt9B=Xi@v!=68tjTHSBICui8*8-Og@xP58>bCPzp{6XG`=Kt{p92>S~)3O2oM*&o!_?l%-`J8@N_7S?3*aaKbr?UBM>&t zNbB$1(!v&q77@F&D?rb_rINpbe32YcWu;l@%_x3UwP)a=9W}$pwx!qnS!31FN!FhE zd22(*_i_=&4-~4IyeFIQvxV_NZ|;9d3`HMeU{d$0dNot&UXZFvgs}X*H5?EfeAnMa z5P*<_+931t=A`}g$wwQKk?7!fKU>d{Pe|{v0FkztKb`wJVsNL8<;x5gWc_L2L~@JJ z5CVdzm|1*P`*7SPazB+SGC?9o*$>Jdr@;qu`|T}SWGlu!l|brJ8#sM4%246Sp(xWm zr9=s!A=BxjUYASjAhYWb&`OPlbHOuLFpnHRtd#NG{vGrGmE}&xXKl2fXBMd9g~2ga z?;K`t%&2u^wnrGp4sWFw1&OOm-D*^9nV3JW(p-q^zgmzY#j9y3W2z5eBAw|rWz6Nr z*mNiQCu^2w5whoF>JS#sY=wCuM)(%z`a1l@9Uubd3b^rhX delta 1184 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 delta 1318 zcmV+>1=;$v6y^#ciBL{Q4GJ0x0000DNk~Le0001C0000v2m$~A0I9jsZjm8Ue+1o0 zL_t(|UhSB{OH^MJ$KSu9e?cpk;<7(s2udihoe%? zPteFu(8y2F$WPG7PteFu(8y2Ff5=bJ$WPG7PteHE;54dKDpONaQ5@*n+1X*g4zbR# z)a!Nj7$Ae*N6><2+yT=*IXU4zi`m&(_KTwJ?QOOWoC40;+S(e=yR(DX8V7pGt&r^_ z6rd3{4$YiktHr^=0XY;a5GX(+AR7ei?d`Eu0bQsUO0lUpiqS}CrKP1Mf3{w7c6LUY z$VlWxQH(}VfdnFqv`xEgb90k_7fmr50iC&Z%_6(KxeBB(jU?j$+yKZ(XAlPs8;vZ( zfJY;IE4~|ROE)?^aK|Os0@Rfucj)U6artXAxuHtku%`cM=| zMix9EG{&YC$gq!$%ndRG(dacZrkbD;zMnfB7m>6Y$tq#N@e@P#C2Qze*$25-bdEF1 zVuD6;#PGnTZqjO`FUODu;W8fzjsElur`3jISrc|?lpw2+RwE#Ke`7NJ`U_Jh5s)EU z8|WK6n>x5O(stLRdeBHxQePGv=rttr-y3y#(W$_tkxoYNVQV)%Xe4Dw(smx?@FGpp z18`-8^tk3cAdO@gO51tB3S%=O6csYrp&+)hq^Dqw^n$Y~D0^@T?-E@l zMeA6N^oR+o5~C4K2CIq?csA~Ja!JFdV8U>~@Z9G>1j2vW6o*k3yt=#4a!5{y)rh_d zBp1`Dx?eXMy+%BEUNL%Kf9m?{;l+oKhJ$Vx03Ua=beo)SO+Pdo(C9nxuu%I#ZUmg) zef@6uBsA^wf9T}`M~NalBaRMEK2Kh~p`UsnG#!Upj7H^^_w+KN=$EBYbeutKG^0zm zmCxT~p#LRvSk4=mvItkNw?tGkjzg1cczHC_7(P(#fceNjEY;15uMf78S zo?2sdd=SnM{mK5r){?~IMbw#kVJB$~UWl3~|P ze5S|8jUmvY-_0hs^K*>XzPR{nvD>ivJe!;2jFOMhkr8ueM{~K@^lujG{&yM3|X^e2^kDy7on^b*=1jb$5JBHOvXA{#!z9B zWGBUxCHq4X-n)Ok<2}CbJKpy`j_bbG^SXZLdH>G)_+2U2EUvPHgh6z4bnK=GBWs`@ z1`3M#4De3H-lhQ+eW>+S1G>f$(G{S>h}K8x)6u=iWc_`U3Fxx~Asj>L=s5cR6#9X{ zr(VDycbKt5m`$K}*zKDkx9F~h+`5Gg^$84fwPOZM*k(+P^lc+uf0SbUQRX58=BwP< z;*D-u%+ht{%b#OK65jKO8G)S??1V=z1e^N=aTg>#Cf3O$AX3068!=Zg4X6GTv&XHx zqt$uDIt)0t{$q{Ga+%JWBSsg3`P85p{k+RrXZKw$j|*h&6t+8bZ+Ked>a1$I%r76D zuSfiTkqrNzhW;cP)e&JVDz3kH|M3|qx!El1IL2fVYfx52kf9kpH!l_;ub0rvF3*Ix z)+$j$#{zTbw|I?^&`MExjDYm7E+Vc$v zI6mB!{S8)}rl1#I-+LYUZKNmh?AX}Y1CDdkbv92%tFEHaXdEo+Wo4zrzRUN?m|uG< zzy4VRrk!4R^#9!c+7Y($;fWYzxjx$l3HwC<@|;aA(vgTg=lk*a=%8v8_w;C;k}gtzz3Kdw2qi6o zyQ9qZ_BM~K#ccDY%q!=7YSI{ z*xR?7?n3Kzbg>axkG4d967og-{kf>2Oo5La?HxFB#u*%5}O`;A4ktn z0hQ^BK9Gr(ZCcsc3Gs0A^bQT(1q^q0c4#AI=JO+JeA^pyS3GH(gMic9YpMz8`!OvN zRNa**6O+FV$v2#xSs6&aC7bl|5cG&>h`qG5boM|&SR08nKmMLvmMNyIqO2^vnZ2~M z)acTYg9lSI^vCpL_SdKIz+5jUmwpEI0jF3mXK}@fIDCu{`fm(A3C>deyj3swfdn)ctO^h|=r|?{fSa)dgpZZv5^MFmL_xO$b=6qLfP7aNV zdma3h@`vd<(JjE!)+S^N^C*`l38)4YLs4rKj^Ep0++@JMRC3Ix>FM^6<+lLeI7BWf z!Qto4QXk$u{)H-3lhD-6yF88nOZqqIa#CI(X~ZLCW#y&CPJqE>S8kW<-kT?#sF7SI zhhWsd*o7Hu#0UF~kc9k&B5EJhj}@!Z_p?GZmf zP;m^rmAv#rm zUDc4qu$)LH8|{2oaeSF1dI+#ja`VCNH)^isIe>;~%WiQPu}hHH{JgwZL5sb^B~USV zOlxOnCy8_dtfFKoE?t)53=R(u4-QtJO5{_tA1YK&yv%*yGkMr2r?GhWc6rFgY}?A% zlT2Yvv!Bq(m=8dvoE#rz3PEI~rE3}+Ijl{RBRn9~1%|r}uyP-o#-YBwwY33yJBwPk zR44|;ifX+B(kL`ElobRTWQbV#Py_saau2+XjhVFC2cs-A)I$oh0eAc<3wL=8&if*S z*ry*2Yv)iq1&5Et83tKZBqcq^YEg%WhfgfZ+5s;BI=FS+;oCmFXb2}{+q|x=z2B*l zA*NeiP(TDeRsSOasHSF5n%sM=|EJ0rAew<^h0e~`xwj}77|%?@l*n(q8}hAn<%YQB z8rMF@dKYvHN^1>SH3;z6lgwB~OdyyHvck}vveo{&GFo%`u6=4aC%>^l&dFk!$;Eg_ z`V^#~4cL;Blf#!ng*fX(ByU~#*utS&UJ-#;G^lbEkhG-ODnITiN-m+~)9QE?>s`Qn zOH#=gnb20sOm?1>uLNG@YKL|gbn2NuF|oC(f&GEq9X}#y9ebg(K!H3i9ho2}Fh-}^ zpA-llrmT=rWEMO=U2F>({iO8S#XNG9!#P>@0V?_>ML4BP<6U(nJ?*U*L(e?ifG%nl zH1IWHalwoWj&>s zT9^Z~^-R@5=Fu*w<(bV44S9WY(u{sOajuBUc!f45GD~M}>mRw5_QvD7C$_1^>TjLe}G#aG#J3>3D8?*C- zoJj0RT5)GSm9N3}lz~RjpVB{}Mu|e!%tPKGICV{)n3{f!weKsDS`|0Zu|6;<_hM>{ zb`fHXFy*xs_D5 zMJm|T4?Mq+++pbz>)nvol#SYGIYS>A-8sIIR<~To*0KZUvdwhgbC8FT(-0f_kv?4f zI~aVBc7%*dpG*JX3j9%AjQ0|FuHXB5IB3kr?GpYmOj(&Rx8%#Ay*g5H%cC@+sIFVS zt$=@V2p+(n|0TKg?wj!MUYR0(zu2s!9jeg2-R7KKpJzpd{FiyfG?ThheZauZ#BI`yizEp)qltQGx06n$(F| zVu`^db_o!WKehP}@p3V9fNEUO7r%+ogf7VIC3BNp+Z2BX-f>pszR@sZmcYu0>Fd?@ z7M=Zd7Wwz2z~Ek%9ucZx>lm=l^X->p{lyqn0q@4&UYi)mW?vt9_}o{2UNv*)6KR_!)+UTr0KU`RG`NuSjiU{35|a_eBcSS8jSx9#V37GyiIL%q5ZZ5Q0ZH{h-3xiJCRUSP$ znz(m@E|JgVSirT`mR*q^4OvcA&)izxd<`tC3||^u3@1F<+QcdScH%=;!}k}@0+%2Esz5Le+zVSa^i3}+S}VVHa6Jwoba1K7Z(>}V`C*HC843A z0r#Y*r+0RC?(OZd(=))=0^Qu)%+Ai%)YL>pMUg0hfq@wr8Oh1Xk&%(Yl9Q7&Ffed@ ze9YbahwlW!mT78gijIyZ6+l{A+Pin}c6WD$gJw_RrMS5G!-o&#;1_%+f6(piZDL{~ zrX3p_+uYo|zP`>4I1}Z`m&(U}<3zwRysj0KG zGwx{uwhVW3!d4yI+uP*uB|kl@>grNcQ*l9$i;JtOs_O6Wf8X5Pbn&)fJkZR{ zOd2Ke>eZ|K{QS1Iw#CIo?55Gt(fa!Ol#~>1b`l&M+}GE~{Y?;C17L`3m4GPJ3YpmC zCb%@Mt*!O;_EuC>#Kgoa(^Ah0+pAShlht378Z7Nbi9B6 z{_5(A8yo6AR@bJ*x6MJ-YWU&qeB;XM_(d22` zUlS7({M#e2yD|B)va;^(?$y;*vsvJLZEbBi91i4=goFeve+)P1FwF&@2{~2E6^iWo zZRIXFVy^!yBe2*Fz7|Mi8GvF>Mml;}Mr<*%JRgh&!ay--tSVjG@WKuEVDYKRgM1-h zbC8Th*|NA9nK3;*O?{~_u~k9@2W*nSG!cO&0t_PV_^{OowLqfih&=5L;>;p1(hIQ80<*6F|+ z4)J)-h62gcQQqT?1wsg92f4Bc$!QLlHZ01le*p*TXi=o()8Wm(9db<+LK_Mse^I$4 z58Y@cSWooFyXNvHZekb*W(x;=o7+qf>fkS%jL_5prRZkJT8LC&C=iVbxKcW~+aLct zy4`;BV<#-)fdiE0HYY!g|0z3=55=LUclxg{ioPP}FTbug^q~iyc?{#= zfBE+3UXJ42jEEx#C!gTC6ZueROk1xG9`eD9 zV|g9lrceU(s%rY4G8*~A4Hi7?@fg@K9`e*b;#>Mh%z}_df+q1fykL$Nam4em@m>tr z7swLG2{>rtGy(j?nL=rHs}#IIfn*GGG>}`^0x7TsQeX?Dz!pe>Esz3RAO*HS3SPKC c-g0;MA0nJ!gGlkAdjJ3c07*qoM6N<$f_?iCi2wiq diff --git a/doc/images/mathparser/MTDocirc.png b/doc/images/mathparser/MTDocirc.png new file mode 100644 index 0000000000000000000000000000000000000000..2764499ecf9c5fe11fc0166bf95d10b9de0f70af GIT binary patch literal 3284 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 D!eD*ymsH#UM< z(shUq9LPwYt9M6!rwaqd(oh#rJuLKz9x!|8nCSojb*UFmoLT7cg#aTP3;@8<{SyWX zx&lRC1O@9OgYTlc_Atujc_GVPYWfIc-aAQg~(`UMxo>}R8 zdiiGJV8_A6bP2jAK5z5%$MFxcev^3F^ow??tNQ?QFaHjVIDCHj1z{vkr@;?<#De%=$(^6H9 zKdTxUaV9U9H?P**2_;l-ugvy$;sr3>CQ_|YnFr@KXc{pTuhDnT*tZbh5#RMSJ(8c%-4Lbzx?QpT^6>waUxOYqisjcNB*H;FO(j zQ8+Ah$|ccUqcU3~4p?mm7MCfhwc7co`uAa=4~sc%IDLicIIUoAu8Oj{25(4!H8b|_UJxz&E( zu7)yo_9)s$D3@j4Jbz(4mxl5=q!IIF4;-e--I7n1mX;QR63@VGpp8RXU%qUwTW{24 zqfphHYoP}@anPWpi*|!oze>$=OwF!Kr$yxI?G@3%t=`!rPpB<^+$%hYEI$%b@Kz=n z6Hz&Tq}eC6($W^y%9q5Cc@x43*4K^wc0q28A9q&rSu$f&r`(IHi>7$JCVwwvSI{DvGN5*2Gd`zQc{k>hl8UQo-Lk3BkC- zRSh;htBW660fY}UYk{_KK-i1}yCc>#*hE#QNZewVvw*1fZ06&gL0A{{NgiAXe&idc zR_iI8dJkhmlMb8e?9IYZh}Z*IgOdusx=ew$eixIF_XSc9+~Be&bCWj3kXKB(6*T&` z0h^G;8fY?VI4tgUt)$R#C{wU%GH&DX;F$B`hvLu-TmihX8rRnm_fT{7wXd{Aa^8@I ztT*{4%k92ZB_Zz$1=3t2wM8zOdGOwDp778-gI`MtOif&U9>rrDn4&c4Y87ZCB4RFN zA4g3xqr~)@*sGWDCFrF0*|GAnag@EJj#3hMLC*u~@+h^mv}8O&*e;1`#KR-A)NQ`? zEN-W`JZ^Bx3EDj7-}MkCY41}+N$XlE=`}Nu1MjE-wN6&%xm)GY9MiYp@+Q3DZ_}vj zLgUA^y`B*{l+x?~@=BdCpMPRrmB#S4JbnaQYLj42yr0b*sNX$7?vW`o0~1R8KA4f# z6bh3?5RKdTG-`*l88@`}Z?}35Lj2ZHd4i811WYV*atTW}$0>sRU5v871aMnO`3y;i zuk*`HDB6T(wJ{2B^*7P4F5zQ4d{ik2K|EboAjMGonf2t@j)SZ%QmHO~Of#xT7FKQW zh-OT%b5Ko(7nf=ArItOH9=tEo{F?q0GL>1d*pqBFaUV zI+3fH7j%hP$ow?SSN>LO%ge9!a=7QNGDdZpq9kk2r{5HpRh)D+dV8J#lo&ps1L=ks0Nmw|=;wCU^T{98yJ!vL$uY}8DHKQ^@$q&2&XVf+TteValSk$Q zS$p_?XylJ0V?Ivw<<{97TRh;+>S`@jmkXz1;XKL>e-Vp@?l`4ua27^!A)qN`&Fvk^ zJ;QTq5;0hYt)!m%^BTnysiiY1=<}<$qJuAqD6;84b295{C}oCr#}|$`f13H=$SlCE zY(M}og!=XM=fHPu<%m}c$7PriiZBmor0#=B<)R}UX@SQW$~tCIVsK2%U@4A8(u z@rwI-cN2El$hTcW6Ypr-ta-b9ZAw13@8e`@!vH!*?^-|G*+2GO$l?a{Mxv=;>Mpi( zpwlNum~gz*+1Ym9K=^ad_uRSxU@bL%x__z+B13vgYRz@PM5zX{Q*ulfGn zBOxJ;Y%f3G>Vr?dIC+6G^|^w&RHD9^_+K45jXe3fxem0<8Fbg%L)lj#R9{;gMmJks dueU$t1PJejsNCY&r+-KQ#`*|YwXRd#zX5UJLs9?$ delta 1167 zcmV;A1aSNC5zq-CiBL{Q4GJ0x0000DNk~Le0001L0000n2m$~A0KE#U^pPP_e*{NK zL_t(&L+zI_YZXBd#}8{ilpjF^+t}F&Vj;vr`~XqxBE&+(A_#&INF%SZh(aEzB!WeX zKthT%!7>m4i2>6g4WJhPEJm=$D~Bb_a_B?rVnINF&3c6`T4oFHCSI? z*M3#Cx3{O(6`)@}_E{$$$Ii}fxNj4qw?i5YH!+~={dg2Tf@wK^>J5m8N@?C$Q~9*NV_Q*|0< zV)=Xq+}hew>ope_7n1dA^<;IJSUv<2?SxwOkl2jR1~<>d@_{cPzN(778Imi-^zvDD z1CB3Zl$V+}m+%zJY7#3Sf6HJ=M1&k-xzUDe2pnk|kf;2yjuK&|w&NriVm6z}vxIGH zEi&hzCI`#JgDeDEJ$Rzz!wYE$zy4U@>$-md(L$}!AiX}kH~`8`%(1yquYVKu)zBg&Ux(ryB+Cc3 zORRIO4|t!jU_jBR;lF3pv>+s(x5qDPhdNQCL`_2xy)4&w z&oqf~7&-FA7sKTB`^pRP8`VV8Q|*{ybqR9LLpk!PDS~AA^0gq+m!IG(kRDvz*9S zwhRW+3d}4fUQD1+it&LEpN5*Ki)BSx<@3u)`sRt1j{(R^z8czg$qEq#OK-NKgFM(# zSp9pK^8x4UxNSqLe162F4eOFm)=4bjo%`BR*3PBO5-sS!%(N|lX~(ac+Nf2h-Yp5? zm9iw$Dxb^>e^SeR_35XI%}wnRkAnF1t#7|BeP+G<{3YZ^uFcu^J9qC(=X(zy)mr`K zR|s_eF#lES(><14bRc-uOI1C2wTU05q5msgyTw84KwOKV+Q;gW@5Q^1;`iB`_YwlN z4%lf$6tv@S$j`fPKbV=gGI;92)8{n#Zdkaq$1>QNWsh|ZjpZ-tW2+GSOlYz^i~m;b zxWrG*C|7Lm`=?>=$v;FHV%d8N{N=6UI5D_D{TK3iT65oEihNlV`LZbTWl`kIqR5v; hkuQrPUj|oKe*s}@i9OlNitYda002ovPDHLkV1lyNMCJeh diff --git a/doc/images/mathparser/MTDtilde.png b/doc/images/mathparser/MTDtilde.png index 0ef08507568f94b5919a9a72389cea4693788c32..ab2ac0d7752c16edf59e8cde265e754a56422144 100644 GIT binary patch literal 3478 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 delta 1709 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 XW8!NN4>@j300000NkvXXu0mjfuVOx? diff --git a/doc/images/mathparser/MTDvec.png b/doc/images/mathparser/MTDvec.png index f2f6c52baba742c1530748f472ecd6831b5f909b..bb035a0ad37730b3eef5041d8980f62fd8933810 100644 GIT binary patch literal 2953 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 literal 0 HcmV?d00001 diff --git a/doc/images/mathparser/MTDwidehat.png b/doc/images/mathparser/MTDwidehat.png new file mode 100644 index 0000000000000000000000000000000000000000..738c5efe65195ea027d29fcfc8b61b27670c15ce GIT binary patch literal 3309 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 Q{I95VH4QZ?)R3Y706SW^k^lez literal 0 HcmV?d00001 diff --git a/doc/images/mathparser/decoration_sizing.png b/doc/images/mathparser/decoration_sizing.png new file mode 100644 index 0000000000000000000000000000000000000000..fd9e9d9c879bdb4e86280668384cfc8f9bdcc24b GIT binary patch literal 26635 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 + + + + + + + + + + + + + + + + + X + + + + + X + + + width_nonitalic + + width_possiblyitalic + + italic_xcorrectoin + + decoration + decoratedtext block + + + + decoration_width_reduction_Xfactor / 2 * width("X") + X + + + + + + + baseline_height + decoration_height_factor * baseline_height + X + + + width - italic_xcorrection + + diff --git a/examples/jkqtmathtext_test/testform.cpp b/examples/jkqtmathtext_test/testform.cpp index d98cfa327c..58bdef11c2 100644 --- a/examples/jkqtmathtext_test/testform.cpp +++ b/examples/jkqtmathtext_test/testform.cpp @@ -29,7 +29,8 @@ TestForm::TestForm(QWidget *parent) : ui->cmbTestset->addItem("text 0", "text"); ui->cmbTestset->addItem("text 1", "text \\mathbf{bold}"); ui->cmbTestset->addItem("text 2", "text \\mathbf{bold}\\textcolor{red}{RED}"); - ui->cmbTestset->addItem("decoration: math", "$\\vec{x}\\vec{X}\\vec{\\psi} -- \\dot{x}\\dot{X}\\dot{\\psi} -- \\ddot{x}\\ddot{X}\\ddot{\\psi} -- \\overline{x}\\overline{X}\\overline{\\psi} -- \\underline{x}\\underline{X}\\underline{\\psi} -- \\hat{x}\\hat{X}\\hat{\\psi} -- \\tilde{x}\\tilde{X}\\tilde{\\psi} -- \\uul{x}\\uul{X}\\uul{\\psi} -- \\ool{x}\\ool{X}\\ool{\\psi} -- \\bar{x}\\bar{X}\\bar{\\psi} -- \\arrow{x}\\arrow{X}\\arrow{\\psi} -- \\cancel{x}\\cancel{X}\\cancel{\\psi} -- \\bcancel{x}\\bcancel{X}\\bcancel{\\psi} -- \\xcancel{x}\\xcancel{X}\\xcancel{\\psi} -- \\sout{x}\\sout{X}\\sout{\\psi}$"); + const auto mathDecoExample=[](const QString& deco)->QString { return "\\"+deco+"{x}\\"+deco+"{i}\\"+deco+"{X}\\"+deco+"{\\psi}\\"+deco+"{abc}"; }; + ui->cmbTestset->addItem("decoration: math", "$"+mathDecoExample("vec")+" -- "+mathDecoExample("dot")+" -- "+mathDecoExample("ddot")+" -- "+mathDecoExample("ocirc")+" -- "+mathDecoExample("overline")+" -- "+mathDecoExample("underline")+" -- "+mathDecoExample("hat")+" -- "+mathDecoExample("widehat")+" -- "+mathDecoExample("check")+" -- "+mathDecoExample("widecheck")+" -- "+mathDecoExample("breve")+" -- "+mathDecoExample("tilde")+" -- "+mathDecoExample("widetilde")+" -- "+mathDecoExample("uul")+" -- "+mathDecoExample("ool")+" -- "+mathDecoExample("bar")+" -- "+mathDecoExample("arrow")+" -- "+mathDecoExample("cancel")+" -- "+mathDecoExample("bcancel")+" -- "+mathDecoExample("xcancel")+" -- "+mathDecoExample("sout")+"$"); ui->cmbTestset->addItem("decoration: text", "Text \\ul{underlined Text Equator} -- \\ol{overlined Text Equator} -- \\sout{striked out Text Equator} -- \\cancel{canceled out Text Equator} -- \\bcancel{b-canceled out Text Equator} -- \\xcancel{x-canceled out Text Equator}"); ui->cmbTestset->addItem("mathtest", "This is normal text: $this is math:\\langle r^2(\\tau)\\rangle=\\left\\langle (\\vec{r}(t)-\\vec{r}(t+\\tau) )^2\\right\\rangle\\ \\ \\ g(\\tau)=\\frac{1}{N}\\cdot\\left(1+\\frac{2}{3}\\frac{\\langle r^2(\\tau)\\rangle}{w_{xy}^2}\\right)^{-1} \\lfloor\\rfloor\\lceil\\rceil\\langle\\rangle\\left\\{\\va\\left|\\|\\va\\|_2\\geq2\\right.\\right\\} \\vr\\vR\\frac{\\sqrt{\\sqrt{\\sqrt{\\sum_{i=0}^\\infty \\hat{i}^2}+y^\\alpha}+1}}{\\dot{v}\\equiv\\ddot{r}}\\argmin_{\\vec{k}}\\sum_{\\sqrt{i}=0}^{N}\\int_{x_0}^{x_1}\\left(\\left(\\left(x\\right)\\right)\\right)\\underbrace{\\left[\\left\\{\\frac{\\partial f}{\\partial x}\\right\\}\\cdot\\frac{1}{2}\\right]}{\\text{underbraced text \\hbar}}\\cdots\\frac{\\sqrt{\\sum_{i=0}^2 \\hat{i}^2}+y^\\alpha}{\\dot{v}\\equiv\\ddot{r}}, \\hat{t}\\hat{T} \\overbrace{\\left|\\sqrt{x\\cdot Y}\\right|}{\\propto\\bbN\\circ\\bbZ} \\left<\\arrow{x(\\tau)}\\cdot\\vec{R}(t+\\bar{\\tau})\\right> \\alpha\\beta\\gamma\\delta\\epsilon\\Gamma\\Delta\\Theta\\Omega \\left\\_\\left~\\cbrt{\\hbar\\omega}\\right~\\right\\_$"); ui->cmbTestset->addItem("upper/lower parantheses test:", "$\\text{bblabla} \\frac{1}{2}\\cdot\\left(\\frac{1}{\\mathrm{e}^x+\\mathrm{e}^{-x}}\\right)\\cdot\\left(\\frac{1}{\\frac{1+2}{5+x}}\\right)\\cdot\\left(\\frac{1}{\\exp\\left[-\\frac{y^2}{\\sqrt{x}}\\right]\\cdot\\exp\\left[-\\frac{1}{\\frac{1}{2}}\\right]}\\right) $"); diff --git a/lib/jkqtmathtext/jkqtmathtext.cpp b/lib/jkqtmathtext/jkqtmathtext.cpp index eb4a129d12..65568512c2 100644 --- a/lib/jkqtmathtext/jkqtmathtext.cpp +++ b/lib/jkqtmathtext/jkqtmathtext.cpp @@ -206,6 +206,21 @@ void JKQTMathText::MTnode::getSize(QPainter &painter, JKQTMathText::MTenvironmen if (s<1e5) strikeoutPos=s; } + +double JKQTMathText::MTnode::getNonItalicXCorretion(QPainter &painter, double width_potentiallyitalic, const MTenvironment &ev_potentiallyitalic, JKQTMathText::MTnode* child) const +{ + double italic_xcorrection=0.0; + if (ev_potentiallyitalic.italic) { + MTenvironment ev_nonitalic=ev_potentiallyitalic; + ev_nonitalic.italic=false; + double width_nonitalic=0, baselineHeight_nonitalic=0, overallHeight_nonitalic=0, strikeoutPos_nonitalic=0; + child->getSize(painter, ev_nonitalic, width_nonitalic, baselineHeight_nonitalic, overallHeight_nonitalic, strikeoutPos_nonitalic); + italic_xcorrection=width_potentiallyitalic-width_nonitalic; + } + return italic_xcorrection; +} + + bool JKQTMathText::MTnode::toHtml(QString &/*html*/, JKQTMathText::MTenvironment /*currentEv*/, JKQTMathText::MTenvironment /*defaultEv*/) { return false; } @@ -1147,15 +1162,25 @@ JKQTMathText::MTdecoratedNode::~MTdecoratedNode() { } void JKQTMathText::MTdecoratedNode::getSizeInternal(QPainter& painter, JKQTMathText::MTenvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, const MTnodeSize* /*prevNodeSize*/) { - QFontMetricsF fm(currentEv.getFont(parent), painter.device()); - double wc=fm.boundingRect("A").width(); - double dheightfactor=1.0+parent->getDecorationHeightFactor()*2.0; + const QFontMetricsF fm(currentEv.getFont(parent), painter.device()); child->getSize(painter, currentEv, width, baselineHeight, overallHeight, strikeoutPos); - overallHeight=overallHeight*dheightfactor; - baselineHeight=baselineHeight*dheightfactor; - width=width+0.3*wc; + const double italic_xcorrection=getNonItalicXCorretion(painter, width, currentEv, child); + const double decoheightfactor=parent->getDecorationHeightFactor(); + const double deco_miniwidth=((decoration==MTDtilde||decoration==MTDbreve)?fm.boundingRect("~").width():fm.boundingRect("^").width())-italic_xcorrection; + + const double decoAboveAscent_yposdelta=fm.ascent()*(1.0+2.0*decoheightfactor); + const double decoAboveBaselineheight_yposdelta=baselineHeight*(1.0+decoheightfactor); + + + const double descent=overallHeight-baselineHeight; + baselineHeight=decoAboveBaselineheight_yposdelta; + if (decoration==MTDbar) { + baselineHeight=std::max(baselineHeight, decoAboveAscent_yposdelta); + } + overallHeight=baselineHeight+descent; + width=std::max(deco_miniwidth,width); } double JKQTMathText::MTdecoratedNode::draw(QPainter& painter, double x, double y, JKQTMathText::MTenvironment currentEv, const MTnodeSize* /*prevNodeSize*/) { @@ -1163,135 +1188,198 @@ double JKQTMathText::MTdecoratedNode::draw(QPainter& painter, double x, double y MTenvironment ev=currentEv; double width=0, baselineHeight=0, overallHeight=0, strikeoutPos=0; child->getSize(painter, ev, width, baselineHeight, overallHeight, strikeoutPos); - QFontMetricsF fm(ev.getFont(parent), painter.device()); - double w=width; - double wc=fm.boundingRect("A").width(); - //double ll=wc*0.8; - double a=baselineHeight; - //double d=overallHeight-baselineHeight; - double dheightfactor=parent->getDecorationHeightFactor(); - double dpos=y-a*(1.0+dheightfactor); - double spos=y-a/2.0; - double dposb=y+qMax((overallHeight-baselineHeight)*(1.0+dheightfactor), fm.xHeight()*dheightfactor); - double deltax=0;//(wc-ll)/2.0; - double dheight=dheightfactor*a; + const QFont font=ev.getFont(parent); + const QFontMetricsF fm(font, painter.device()); + const double width_X=fm.boundingRect("X").width(); + const double width_x=fm.boundingRect("x").width(); + const double width_dot=fm.boundingRect(".").width()/2.0; + const double decoheightfactor=parent->getDecorationHeightFactor(); + const double deco_ypos=y-baselineHeight*(1.0+decoheightfactor); + const double decoAboveAscent_ypos=y-fm.ascent()*(1.0+decoheightfactor); + const double strike_ypos=y-baselineHeight/2.0; + const double decobelow_ypos=y+qMax((overallHeight-baselineHeight)*(1.0+decoheightfactor), fm.xHeight()*decoheightfactor); + const double deco_height=decoheightfactor*baselineHeight; + const double italic_xcorrection=getNonItalicXCorretion(painter, width, ev, child); + const double deco_xoffset=parent->getDecorationWidthReductionXFactor()*width_X/2.0; + const double deco_width=std::max(width_x*0.5,width-2.0*deco_xoffset-italic_xcorrection); + const double deco_vecwidth=width_x*0.33; + const double deco_miniwidth=((decoration==MTDtilde||decoration==MTDbreve)?fm.boundingRect("~").width():fm.boundingRect("^").width())-italic_xcorrection; + const double decotop_xcenter=x+italic_xcorrection+(width-italic_xcorrection)/2.0; + const double decotop_xstart=decotop_xcenter-deco_width/2.0; + const double decotop_xend=decotop_xcenter+deco_width/2.0; + const double decobot_xstart=x; + const double decobot_xend=x+width-italic_xcorrection; + const double decobot_xcenter=(decobot_xstart+decobot_xend)/2.0; + - if (ev.italic) deltax+=0.1*fm.boundingRect("A").width(); QPen pold=painter.pen(); QPen p=pold; p.setColor(ev.color); p.setWidthF(qMax(JKQTMathText::ABS_MIN_LINEWIDTH, fm.lineWidth()));//ceil(currentEv.fontSize/16.0)); - if (decoration==MTDbar) ev.overline=true; + double xnew=child->draw(painter, x, y, ev); + if (decoration==MTDvec) { painter.setPen(p); QPolygonF poly; - poly<0) painter.drawLine(l); + painter.setPen(pold); + } else if (decoration==MTDbar) { + painter.setPen(p); + const QLineF l(decotop_xstart, decoAboveAscent_ypos, decotop_xend, decoAboveAscent_ypos); if (l.length()>0) painter.drawLine(l); painter.setPen(pold); } else if (decoration==MTDdoubleoverline) { painter.setPen(p); - QLineF l(x+deltax, dpos, xnew+deltax-0.2*wc, dpos); - if (l.length()>0) painter.drawLine(l); - l=QLineF(x+deltax, dpos-2.0*p.widthF(), xnew+deltax-0.2*wc, dpos-2.0*p.widthF()); + const QLineF l(decotop_xstart, deco_ypos, decotop_xend, deco_ypos); if (l.length()>0) painter.drawLine(l); + const QLineF l2(decotop_xstart, deco_ypos-2.0*p.widthF(), decotop_xend, deco_ypos-2.0*p.widthF()); + if (l2.length()>0) painter.drawLine(l2); painter.setPen(pold); } else if (decoration==MTDunderline) { painter.setPen(p); - QLineF l(x+deltax, dposb, xnew+deltax-0.2*wc, dposb); + const QLineF l(decobot_xstart, decobelow_ypos, decobot_xend, decobelow_ypos); if (l.length()>0) painter.drawLine(l); painter.setPen(pold); } else if (decoration==MTDdoubleunderline) { painter.setPen(p); - QLineF l(x+deltax, dposb, xnew+deltax-0.2*wc, dposb); - if (l.length()>0) painter.drawLine(l); - l=QLineF(x+deltax, dposb+2.0*p.widthF(), xnew+deltax-0.2*wc, dposb+2.0*p.widthF()); + const QLineF l(decobot_xstart, decobelow_ypos, decobot_xend, decobelow_ypos); if (l.length()>0) painter.drawLine(l); + QLineF l2(decobot_xstart, decobelow_ypos+2.0*p.widthF(), decobot_xend, decobelow_ypos+2.0*p.widthF()); + if (l2.length()>0) painter.drawLine(l2); painter.setPen(pold); } else if (decoration==MTDarrow) { painter.setPen(p); - QLineF l(x+deltax, dpos+dheight/2.0, xnew+deltax-0.2*wc, dpos+dheight/2.0); + const QLineF l(decotop_xstart, deco_ypos+deco_height/2.0, decotop_xend, deco_ypos+deco_height/2.0); if (l.length()>0) painter.drawLine(l); QPolygonF poly; - poly<0) painter.drawLine(l); painter.setPen(pold); } else if (decoration==MTDcancel) { painter.setPen(p); - QLineF l(x+deltax, dposb, xnew+deltax-0.2*wc, dpos); + const QLineF l(decobot_xstart, decobelow_ypos, decotop_xend, deco_ypos); if (l.length()>0) painter.drawLine(l); painter.setPen(pold); } else if (decoration==MTDbcancel) { painter.setPen(p); - QLineF l(x+deltax, dpos, xnew+deltax-0.2*wc, dposb); + const QLineF l(decobot_xstart, deco_ypos, decotop_xend, decobelow_ypos); if (l.length()>0) painter.drawLine(l); painter.setPen(pold); } else if (decoration==MTDxcancel) { painter.setPen(p); - QLineF l(x+deltax, dpos, xnew+deltax-0.2*wc, dposb); + const QLineF l(decobot_xstart, deco_ypos, decotop_xend, decobelow_ypos); if (l.length()>0) painter.drawLine(l); - QLineF l1(x+deltax, dposb, xnew+deltax-0.2*wc, dpos); + const QLineF l1(decobot_xstart, decobelow_ypos, decotop_xend, deco_ypos); if (l1.length()>0) painter.drawLine(l1); painter.setPen(pold); } - // - return xnew+0.3*wc; + + /*painter.setPen(QPen(Qt::red, 1.5)); + painter.drawLine(QLineF(x, deco_ypos, xnew, deco_ypos)); + painter.setPen(QPen(Qt::green, 1.5)); + painter.drawLine(QLineF(deco_xstart, deco_ypos+2, deco_xend, deco_ypos+2)); + painter.drawEllipse(QPointF(deco_xpos_center, deco_ypos+2), 5, 5); + painter.setPen(pold);*/ + return xnew; } bool JKQTMathText::MTdecoratedNode::toHtml(QString &/*html*/, JKQTMathText::MTenvironment /*currentEv*/, JKQTMathText::MTenvironment /*defaultEv*/) { @@ -3348,6 +3436,7 @@ JKQTMathText::JKQTMathText(QObject* parent): underbrace_factor=0.75; undersetFactor=0.7; decoration_height_factor=0.2; + decoration_width_reduction_Xfactor=0.2; brace_y_shift_factor=0.7;//-1; operatorsubsuper_size_factor=0.65; mathoperator_width_factor=1.5; @@ -3483,6 +3572,7 @@ void JKQTMathText::loadSettings(const QSettings& settings, const QString& group) undersetFactor=settings.value(group+"undersetFactor", undersetFactor).toDouble(); brace_y_shift_factor=settings.value(group+"brace_y_shift_factor", brace_y_shift_factor).toDouble(); decoration_height_factor=settings.value(group+"decoration_height_factor", decoration_height_factor).toDouble(); + decoration_width_reduction_Xfactor=settings.value(group+"decoration_width_reduction_xfactor", decoration_width_reduction_Xfactor).toDouble(); operatorsubsuper_size_factor=settings.value(group+"operatorsubsuper_size_factor", operatorsubsuper_size_factor).toDouble(); mathoperator_width_factor=settings.value(group+"mathoperator_width_factor", mathoperator_width_factor).toDouble(); @@ -3510,6 +3600,7 @@ void JKQTMathText::saveSettings(QSettings& settings, const QString& group) const settings.setValue(group+ "mathoperator_width_factor", mathoperator_width_factor); settings.setValue(group+ "brace_y_shift_factor", brace_y_shift_factor); settings.setValue(group+ "decoration_height_factor", decoration_height_factor); + settings.setValue(group+ "decoration_width_reduction_xfactor", decoration_width_reduction_Xfactor); } bool JKQTMathText::useSTIX(bool mathModeOnly) { @@ -4046,6 +4137,16 @@ double JKQTMathText::getDecorationHeightFactor() const return this->decoration_height_factor; } +void JKQTMathText::setDecorationWidthReductionXFactor(double __value) +{ + decoration_width_reduction_Xfactor=__value; +} + +double JKQTMathText::getDecorationWidthReductionXFactor() const +{ + return decoration_width_reduction_Xfactor; +} + void JKQTMathText::setExpensiveRendering(bool __value) { this->expensiveRendering = __value; @@ -4357,14 +4458,26 @@ JKQTMathText::MTnode* JKQTMathText::parseLatexString(bool get, const QString& qu nl->addNode(new MTdecoratedNode(this, MTDdoubleoverline, parseLatexString(true))); } else if (name=="arrow"||name=="overrightarrow"||name=="overarrow") { nl->addNode(new MTdecoratedNode(this, MTDarrow, parseLatexString(true))); - } else if (name=="hat") { + } else if (name=="hat" || name=="^") { nl->addNode(new MTdecoratedNode(this, MTDhat, parseLatexString(true))); + } else if (name=="widehat") { + nl->addNode(new MTdecoratedNode(this, MTDwidehat, parseLatexString(true))); + } else if (name=="check" || name=="v") { + nl->addNode(new MTdecoratedNode(this, MTDcheck, parseLatexString(true))); + } else if (name=="widecheck") { + nl->addNode(new MTdecoratedNode(this, MTDwidecheck, parseLatexString(true))); } else if (name=="bar") { nl->addNode(new MTdecoratedNode(this, MTDbar, parseLatexString(true))); - } else if (name=="dot") { + } else if (name=="dot" || name==".") { nl->addNode(new MTdecoratedNode(this, MTDdot, parseLatexString(true))); - } else if (name=="tilde") { + } else if (name=="ocirc") { + nl->addNode(new MTdecoratedNode(this, MTDocirc, parseLatexString(true))); + } else if (name=="tilde" || name=="~") { nl->addNode(new MTdecoratedNode(this, MTDtilde, parseLatexString(true))); + } else if (name=="breve" || name=="u") { + nl->addNode(new MTdecoratedNode(this, MTDbreve, parseLatexString(true))); + } else if (name=="widetilde") { + nl->addNode(new MTdecoratedNode(this, MTDwidetilde, parseLatexString(true))); } else if (name=="ddot") { nl->addNode(new MTdecoratedNode(this, MTDddot, parseLatexString(true))); } else if (name=="cancel") { @@ -4635,6 +4748,13 @@ QRectF JKQTMathText::getTightBoundingRect(const QFont &fm, const QString &text, return d.tbr; } +QFont JKQTMathText::getNonItalic(const QFont &font) +{ + QFont f=font; + f.setItalic(false); + return f; +} + @@ -4817,8 +4937,20 @@ QString JKQTMathText::decorationToString(JKQTMathText::MTdecoration mode) return "vec"; case MTDtilde: return "tilde"; + case MTDbreve: + return "breve"; + case MTDwidetilde: + return "widetilde"; case MTDhat: return "hat"; + case MTDwidehat: + return "widehat"; + case MTDcheck: + return "check"; + case MTDwidecheck: + return "widecheck"; + case MTDocirc: + return "ocirc"; case MTDdot: return "dot"; case MTDddot: diff --git a/lib/jkqtmathtext/jkqtmathtext.h b/lib/jkqtmathtext/jkqtmathtext.h index 74d4f14b16..ace3500525 100644 --- a/lib/jkqtmathtext/jkqtmathtext.h +++ b/lib/jkqtmathtext/jkqtmathtext.h @@ -584,11 +584,16 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { void setBraceYShiftFactor(double __value); /** \copydoc brace_y_shift_factor */ double getBraceYShiftFactor() const; - /** \copydoc decoration_height_factor */ + + /** \copydoc decoration_height_factor */ void setDecorationHeightFactor(double __value); - /** \copydoc decoration_height_factor */ + /** \copydoc decoration_height_factor */ double getDecorationHeightFactor() const; - /** \copydoc expensiveRendering */ + /** \copydoc decoration_width_reduction_Xfactor */ + void setDecorationWidthReductionXFactor(double __value); + /** \copydoc decoration_width_reduction_Xfactor */ + double getDecorationWidthReductionXFactor() const; + /** \copydoc expensiveRendering */ void setExpensiveRendering(bool __value); /** \copydoc expensiveRendering */ bool getExpensiveRendering() const; @@ -676,6 +681,8 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { * */ void getSize(QPainter& painter, MTenvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, const MTnodeSize* prevNodeSize=nullptr); + /** \brief calculates the x-size-difference between the given (probably) italic (width externally calculated: \A width_potentiallyitalic, \a ev_potentiallyitalic) and the non-italic version of \a child */ + double getNonItalicXCorretion(QPainter &painter, double width_potentiallyitalic, const MTenvironment &ev_potentiallyitalic, JKQTMathText::MTnode* child) const; /** \brief draw the contents at the designated position * * \param painter QPainter to use @@ -741,10 +748,12 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { virtual bool toHtml(QString& html, JKQTMathText::MTenvironment currentEv, JKQTMathText::MTenvironment defaultEv) override; /** \copydoc text */ QString getText() const; + /** \copydoc MTnode::getTypeName() */ virtual QString getTypeName() const override ; protected: /** \copydoc MTnode::getSizeInternal() */ virtual void getSizeInternal(QPainter& painter, MTenvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, const MTnodeSize* prevNodeSize=nullptr) override; + /** \brief text-contents of the node */ QString text; /** \brief transforms the text before sizing/drawing (may e.g. exchange special letters for other unicode symbols etc.) */ virtual QString textTransform(const QString& text, JKQTMathText::MTenvironment currentEv, bool forSize=false); @@ -771,7 +780,6 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { virtual ~MTwhitespaceNode() override; /** \copydoc MTnode::getTypeName() */ virtual QString getTypeName() const override; - /** \brief convert node to HTML and returns \c true on success */ /** \copydoc MTnode::toHtml() */ virtual bool toHtml(QString& html, JKQTMathText::MTenvironment currentEv, JKQTMathText::MTenvironment defaultEv) override; }; @@ -791,7 +799,9 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { virtual bool toHtml(QString& html, JKQTMathText::MTenvironment currentEv, JKQTMathText::MTenvironment defaultEv) override; /** \copydoc symbolName */ QString getSymbolName() const; + /** \brief get font name of the symbol */ QString getSymbolfontName() const; + /** \copydoc addWhitespace */ bool getAddWhitespace() const; protected: /** \copydoc MTnode::getSizeInternal() */ @@ -847,6 +857,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { virtual QString getTypeName() const override; /** \copydoc MTnode::draw() */ virtual double draw(QPainter& painter, double x, double y, MTenvironment currentEv, const MTnodeSize* prevNodeSize=nullptr) override; + /** \brief add a child node */ void addNode(MTnode* n) { nodes.append(n); } /** \copydoc MTnode::toHtml() */ virtual bool toHtml(QString& html, JKQTMathText::MTenvironment currentEv, JKQTMathText::MTenvironment defaultEv) override; @@ -908,7 +919,8 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { virtual double draw(QPainter& painter, double x, double y, MTenvironment currentEv, const MTnodeSize* prevNodeSize=nullptr) override; /** \copydoc MTnode::getTypeName() */ virtual QString getTypeName() const override; /** \brief returns the child node */ - MTnode *getChild() const; + /** \brief returns the child node */ + MTnode *getChild() const; /** \copydoc MTnode::toHtml() */ virtual bool toHtml(QString& html, JKQTMathText::MTenvironment currentEv, JKQTMathText::MTenvironment defaultEv) override; /** \copydoc MTnode::setDrawBoxes() */ @@ -1002,6 +1014,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { virtual bool toHtml(QString& html, JKQTMathText::MTenvironment currentEv, JKQTMathText::MTenvironment defaultEv) override; /** \copydoc MTnode::setDrawBoxes() */ virtual void setDrawBoxes(bool draw) override; + /** \copydoc MTnode::getTypeName() */ virtual QString getTypeName() const override ; /** \brief returns the child node */ MTnode *getChild() const; @@ -1036,6 +1049,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { public: MTfracNode(JKQTMathText* parent, MTnode* child_top, MTnode* child_bottom, MTfracMode mode); virtual ~MTfracNode() override; + /** \copydoc MTnode::getTypeName() */ virtual QString getTypeName() const override; /** \copydoc MTnode::draw() */ virtual double draw(QPainter& painter, double x, double y, MTenvironment currentEv, const MTnodeSize* prevNodeSize=nullptr) override; @@ -1084,10 +1098,15 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { int lines; }; - + /** \brief types of decoration available in a MTdecoratedNode */ enum MTdecoration { MTDvec, /*!< \brief vector arrow over block \image html mathparser/MTDvec.png */ - MTDhat, /*!< \brief hat over block \image html mathparser/MTDhat.png */ + MTDhat, /*!< \brief small hat over block \image html mathparser/MTDhat.png */ + MTDwidehat, /*!< \brief full-width hat over block \image html mathparser/MTDwidehat.png */ + MTDcheck, /*!< \brief small v over block \image html mathparser/MTDcheck.png */ + MTDwidecheck, /*!< \brief full-width v over block \image html mathparser/MTDwidecheck.png */ + MTDbreve, /*!< \brief small tilde over block \image html mathparser/MTDbreve.png */ + MTDocirc, /*!< \brief single circle over block \image html mathparser/MTDocirc.png */ MTDdot, /*!< \brief single dot over block \image html mathparser/MTDvec.png */ MTDddot, /*!< \brief double dot over block \image html mathparser/MTDddot.png */ MTDbar, /*!< \brief bar over block \image html mathparser/MTDbar.png */ @@ -1096,7 +1115,8 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { MTDdoubleoverline, /*!< \brief double overline over block \image html mathparser/MTDdoubleoverline.png */ MTDunderline, /*!< \brief underline under block \image html mathparser/MTDunderline.png */ MTDdoubleunderline, /*!< \brief double underline under block \image html mathparser/MTDdoubleunderline.png */ - MTDtilde, /*!< \brief tilde over block \image html mathparser/MTDtilde.png */ + MTDtilde, /*!< \brief small tilde over block \image html mathparser/MTDtilde.png */ + MTDwidetilde, /*!< \brief full width tilde over block \image html mathparser/MTDwidetilde.png */ MTDcancel, /*!< \brief cancel text with sloped line \image html mathparser/MTDcancel.png */ MTDbcancel, /*!< \brief cancel text with backward sloped line \image html mathparser/MTDbcancel.png */ MTDxcancel, /*!< \brief cancel text with X \image html mathparser/MTDxcancel.png */ @@ -1107,6 +1127,9 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { /** \brief subclass representing a decorated text m (e.g. \c \\vec \c \\hat ...) node * \ingroup jkqtmathtext_items + * + * \image html mathparser/decoration_sizing.png + * */ class JKQTMATHTEXT_LIB_EXPORT MTdecoratedNode: public MTnode { public: @@ -1118,6 +1141,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { virtual bool toHtml(QString& html, JKQTMathText::MTenvironment currentEv, JKQTMathText::MTenvironment defaultEv) override; /** \copydoc MTnode::setDrawBoxes() */ virtual void setDrawBoxes(bool draw) override; + /** \copydoc MTnode::getTypeName() */ virtual QString getTypeName() const override ; /** \brief returns the child node */ MTnode* getChild() const; @@ -1126,7 +1150,9 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { protected: /** \copydoc MTnode::getSizeInternal() */ virtual void getSizeInternal(QPainter& painter, MTenvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, const MTnodeSize* prevNodeSize=nullptr) override; + /** \brief child node that is decorated by this node */ MTnode* child; + /** \brief type of decoration that is added to the child node */ MTdecoration decoration; }; @@ -1198,8 +1224,16 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { double undersetFactor; /** \brief fraction of the brace ascent that the brace is shifted downwards, when scaled */ double brace_y_shift_factor; - /** \brief size of the decorations (dot, tilde, ...), as fractio of the baselineheight */ + /** \brief size of the decorations (dot, tilde, ...), as fraction of the baselineheight + * + * \image html mathparser/decoration_sizing.png + */ double decoration_height_factor; + /** \brief a decoration has a size, which is slightly smaller than the text- width. the width is reduced by \c decoration_width_reduction_Xfactor*width("X") and the position is centered around the child-box. Also an italic correction is applied: + * + * \image html mathparser/decoration_sizing.png + */ + double decoration_width_reduction_Xfactor; /** \brief switches on some options that will grant better rendering at the expense of higher time consumption */ bool expensiveRendering; /** \brief a list that will be filled with error messages while parsing, if any error occur */ @@ -1275,7 +1309,8 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { static QList tbrs; static QHash tbrh; static QRectF getTightBoundingRect(const QFont &fm, const QString& text, QPaintDevice *pd); - + /** \brief returns a copy of \a f, but with the italic-property set to \c false */ + static QFont getNonItalic(const QFont& f); };