From 15fcf676ac3f864998e04d15ee19007eebb41594 Mon Sep 17 00:00:00 2001 From: Gokhan Kurt Date: Tue, 26 Oct 2021 00:54:29 +0300 Subject: [PATCH 1/7] use pdf command for more accurate closepath --- src/modules/context2d.js | 24 +++++------------- .../bar_graph_with_text_and_lines.pdf | Bin 38987 -> 38238 bytes test/reference/piechart.pdf | Bin 4128 -> 3822 bytes test/reference/sierpinski.pdf | Bin 72417 -> 49467 bytes test/reference/w3s_closePath_v1.pdf | Bin 3196 -> 3144 bytes test/reference/w3s_closePath_v2.pdf | Bin 3355 -> 3251 bytes test/reference/warnsign.pdf | Bin 3436 -> 3358 bytes 7 files changed, 7 insertions(+), 17 deletions(-) diff --git a/src/modules/context2d.js b/src/modules/context2d.js index 785dbc4ad..bab480427 100644 --- a/src/modules/context2d.js +++ b/src/modules/context2d.js @@ -823,21 +823,10 @@ import { typeof this.path[i + 1].x === "number" ) { pathBegin = new Point(this.path[i + 1].x, this.path[i + 1].y); - this.path.push({ - type: "lt", - x: pathBegin.x, - y: pathBegin.y - }); break; } } } - if ( - typeof this.path[i + 2] === "object" && - typeof this.path[i + 2].x === "number" - ) { - this.path.push(JSON.parse(JSON.stringify(this.path[i + 2]))); - } this.path.push({ type: "close" }); @@ -2118,12 +2107,13 @@ import { putStyle.call(this, style); this.pdf.internal.out("h"); } - if (!moves[k].arc) { - if (moves[k].close !== true && moves[k].begin !== true) { - var x = moves[k].start.x; - var y = moves[k].start.y; - drawLines.call(this, moves[k].deltas, x, y); - } + else if (moves[k].close === true) { + this.pdf.internal.out("h"); + } + else if (moves[k].begin !== true) { + var x = moves[k].start.x; + var y = moves[k].start.y; + drawLines.call(this, moves[k].deltas, x, y); } } diff --git a/test/reference/bar_graph_with_text_and_lines.pdf b/test/reference/bar_graph_with_text_and_lines.pdf index e5e74c6ed3f04f9995c6f55ad6c80b77d5532086..1eb4d896377cd77ad68928258c61f84abfb3c395 100644 GIT binary patch delta 799 zcmX@Tf$82VrU{dojf~7DPW#4{!4=Mx$7QIeP(Im_+kLX9vBP8qZl%qUOe+{CZ(uvH z`7VpEJ*uM6$pPG~lUKRCM;3mVEjxKbqTXgMH$g_mjLCA@MUx*C2~57=YPI=?yCk~M zdru{Fp%2~|LLYrGG`{f15V{|Tq47a5hS0-M453Hi7($ODF@&B(V+cKs#SnTHFNN-* zdx;oA*OD4nrd|gdkMR#2mxb=BB1*lh;n4!ewq|X27MY>gw+X E0HT`o!vFvP delta 1179 zcmah|ziSjh6lTtt3tJfDH5Ws0??NmT#(DF5Dg}*aJQEiQ;c`jHg;Px6ut;kWYy$yh zg0-DsCF~!dh@G{SV56mAXDPnjyX>yFf?Lge?|X0F_r14Y-&8)mtvvTWd>6l-Sh+s0IaNs0mO@fV*|gH=>W@j} zUrp6~=hn~vGV5_~X@xX2_QZL}r4UpJENMA)+T?(Ty@NPx^@+cEXJ!U~QS370LYtJI zgnih$8{b%Nk}7aP9Rt6yJVypu=u*2$7C-?72O;P9q*eG5Xi2TmIg%y(zBfynU@Vmu zqsCB^hz0ZnILbdoQhqOL$Ddd0WRf$5JpW^L^mN>d24sPwE~Z?rC*V?3!(@(RWsV*+ zFhMgaBqk`})Fh5@gQA?skt|_w=%!IzM7ZJMH-6_AIGNE-ACxf7!k`48_sTL(-IJ zwJ>OubP}h95~Nm?B~u;&se+`;!7eJ0=(N_-AMF;~jQXfRp{Y(uzuzy0u06tmDs&dt zCLc$j&{=B>BTJu2mgC&xBmtepB-|aLh8v)a#68A@QzVAH>8o`ON`@@?!Y5&n9)xiQ ze8<~E%>l-PTHqRuC1|P382*AKp7}?v#f=%S=TI4AhkthkoQ)F={+=aF*s>y37Gkt4 n*E6_#8Fy-H$oCH=f7c4F=-M{?@Z?+!S diff --git a/test/reference/piechart.pdf b/test/reference/piechart.pdf index eb495391e8a9abaf92cc91bca8ccc45794e5964d..deebc476fb7ede670be0ec7759072fe7321eb957 100644 GIT binary patch delta 384 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 S%<&Gj+wGBFwQ9W+)8@YxvC-fF literal 72417 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 diff --git a/test/reference/w3s_closePath_v1.pdf b/test/reference/w3s_closePath_v1.pdf index eaa277b85678d9fcfd298ea103d49e9a6c8bb004..2e48b503b4f90f17a8f2fdc62e03de1c9d4ad3e0 100644 GIT binary patch delta 357 zcmew(aYACk8YTnFiR%g&Gd2e^@^Ok88YvinfI^-E7nosSWN2hLxtz|Ljyw$b%ur}W+1(j*|~Y^jm$03%`r4F#IVoM)C9vHhGv-V vH#E1zG|$r55Zw+V17l;5m0*EBuW${B)&--`9A+2yGGEmNQBrRD0EZ>z_4woF!EMm_Awnt_l5quUv&y~DId!AGUV zQfo}2`b2v{QS|}By|*5RLQ&9kAbeDd5kwt?QXc{idY*7G+JWI6jyR0OpXQxP?E*q~ NU0jj~F~3o{dRb%q9*dJPSYFx45E8iVxKBRk5_*uoUUKvN?Oiw(_8 zFg#>vj_DCYO9Kq^j0}t|kn8}u7YK|DO$?9(Az~&L7_K%lH8+@C$1{b~%-n=aRn^ts F4FGKCOD+Ha delta 378 zcmZWlyA8rX4Am(OIbDYolvLNGw|zfn0BD&52>}~q02-pBV+5o$nS-5BQbn;Vf1cm- z^HhJD*SBy4!}u6}b#c{{@2bgGT~_7vRHi%xau(*WH>;Nf$a%=4?)t#6ok4;idhBGc zi@e1l%3UOqI2Y2q+pmv8&z&HQB!n>qVF+0oAppTg=xL>~Ti!wBvoiaN#hnzB&y{(X LDY0(b73%GMrH~IAfS+^zy)R)7#W)w zPfq8ytT(kVMwc@%H?Y7EvoOXKvotqES7&I5sn^iR7*n0GnE^;|J+h+=O)QNt3^X&s zu-MSt6vIP?7MLC}GBCt2&&bfk6v+-laBvtInV2I9Lc~lhF2bDphtw}HEAQ;?`PA4=-2?!(I8fcm;gfPkXVAXXxIQHP(-m5SN5Gh zcYbE??0OkHlIpfwFcsb~VZmaKDLP-6_^+zZW{9qrqx}&7dW;UqEPyl6ggKeCO@JI> zJ)cM!0`@tG926#~Fa#(4K14l>7IdGp+{~6;QRpM6g%R{&w#pESHbNk39}(Hk4Q$^* ZmV5{NVIe5h6uqy{(|f{R(mY>n*I$ Date: Tue, 26 Oct 2021 01:38:35 +0300 Subject: [PATCH 2/7] fix arc closePath --- src/modules/context2d.js | 8 ++------ test/reference/arc.pdf | Bin 4154 -> 4123 bytes .../bar_graph_with_text_and_lines.pdf | Bin 38952 -> 38078 bytes test/reference/paths.pdf | Bin 3232 -> 3228 bytes test/reference/piechart.pdf | Bin 3862 -> 3814 bytes test/reference/smiley.pdf | Bin 3700 -> 3644 bytes test/reference/w3s_arc.pdf | Bin 3199 -> 3195 bytes test/specs/context2d.spec.js | 9 +++++++++ 8 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/modules/context2d.js b/src/modules/context2d.js index d89df5c8b..285b8b611 100644 --- a/src/modules/context2d.js +++ b/src/modules/context2d.js @@ -2104,13 +2104,9 @@ import { drawLine.call(this, arc.x, arc.y); } } - putStyle.call(this, style); + } else if (moves[k].close === true) { this.pdf.internal.out("h"); - } - else if (moves[k].close === true) { - this.pdf.internal.out("h"); - } - else if (moves[k].begin !== true) { + } else if (moves[k].begin !== true) { var x = moves[k].start.x; var y = moves[k].start.y; drawLines.call(this, moves[k].deltas, x, y); diff --git a/test/reference/arc.pdf b/test/reference/arc.pdf index 29bca59ee0c19233daa8dd1580fca5bb822e7518..f7adc9f78f0b76b8d9ab6a1b76f16750d383281f 100644 GIT binary patch delta 626 zcmZ`#O-lnY5T#oM320B^HJ5@#j5CvuO^U1syMiYVo)wm5iyo{{7xW+$|A8e(=}%}c z-uyBC7DHDMHa3BoVcvU_m-*r!{C%FFp8J*0JC$E`O240!{xwTt! z_O>r~1|Y&6u#@v?Rn+&7lTlGu{BSfxXHz7E<{Sa|x8217IppgOpK#Vd62W@CH=HTk zhEN5QEjk*Ad#N-L&;FxzF5(fAUTbIY=ZQ$C?SUj+^f2kL)RsXq@kc04<9QCDtpy24 v?WUAEaxIl2zv!LaHapxLGk&@mY>Y_~b_5aRC4eq;}ckjoxeSzKeI5HUv%aZf=EPcL{27Ek=Kj+WtP_kJ<7(wfOEzHI7n%Z z8MvFB*8>EgtS!2vWYaL@Xxw0TywavS;*trEQ|NPAX-{YT-Nuur11{BOclE~;Kpb}u zf&lMv6V1y5$`1lD^Y0nKyFVB*fn5?Y_FSXT=$`h@u44-ltpZ3bW)>!y0XvnLiqt5h d1xx7Z|B@?`B;=vatNO7j<^-kIWH_`J(_i!)dm#V- diff --git a/test/reference/bar_graph_with_text_and_lines.pdf b/test/reference/bar_graph_with_text_and_lines.pdf index be1ea42d71a27731258efedbd022bfddd5639456..42f2799cab8be1df78e96939063ee68d5a7eb3ba 100644 GIT binary patch delta 823 zcmZ{gPe>F|9LHf{WgE!;5YeTaeY7Vr-preMvlFs}qy#|*UHW6{N^UN>JFj(eoixYX zR<}*4_)=?!K%zr|QsGGt(J2VLM0My8dF|4rTM*^UgMyuW@E*U<_xJxjdl`HEJl2{z zeY~ebJHnLI`q$;n`+KV~%3nPqaV*Do;6uC*T`lKVms--p_;w|a%cFg$_zmauSBp?8bSM5f5?Yjg0rrJFK#yE&({cc zjtgL1=HDw5ER_@3DCcluLTcR}f#(VQ_5xnSuj_5-m@MGMq~w*UBsQl6ayKMjnogoI zEpX5ecnzm!1U}9Lb_4Hk62xa6)MsV?xeCF0WfYya*|k%d}5Dgr!7s_s66eIqVVAH ze%&zDP*IDj5*o~+9O}cPKBIcG%QSQ=qM2q?<2H@NrT>#_n~^w9Ej!5dDg8GS*EOxV zAZJFTF*mHpKAcAv;TDV5OLL>C2W8ymyh&tRxsjFrUCI_@uncOpfS>XZ%mt-xJ^h> z6+GC{OM*h^#fk@|f(NyF^5UU?fQNb!k9raW56*0MK(YsS*=2cu&$G|_zO%Cxc=j@I zI5M9|p4OunM1FjDzxP7C9*(yI2)%kd863&*t)LyufD}mc@zFH@zVG8U8mnCs;OSD; z17n%YNSZhDT@JFEAjh+gNA6~eF6r^j+>wKZhA@Uv!n6$U=Ng_Sl(${YJK;Q4So5mA zLP0r;6N2=MNBQUCqDN1Z@?PSEJt?SWALAG78y@Z3C67KYOZv8~vZihgvbvm9BuQ3O zr>`rD>?}*NyR1CtRunm3mD63W*1eohRh6^5Dm`CUm1q98@?5D&vQ$&#OHGk)bxD5J z6-nJuq~J)>aMUh-Ix6S)nk1m1I;b?%9%@ZV9yFEbPt)~udVI7c_ZM!doKDNl5oEI+ zK18X8kZDFSmWR?-qEKfbat~!)EvdUcXz>!?TbLetqTBcH-8>LN5a~J;H-i?mrXb?` zH=cwINHi!fEvEtZ12cs9n~gJ$LD4WG#ALo2)BQD*K%dU?d#UJXSVs}IWX<`vCyJTw z6B6hPrWE_;q0B!BH7(!&7(~WU1{AS~4izyon6GO_2tWB~dLd3MYsRoHD|B9Xa^N$?k-dq1=Q diff --git a/test/reference/paths.pdf b/test/reference/paths.pdf index 851f4317161732803bf651c761dce52066048875..27661f2c635a251ce0ef14300caf6a75657ca200 100644 GIT binary patch delta 360 zcmZ1=IY)9rFQe(izM9Q^jAfkS#+GIZ1|Xo2r@#ef7#JBD8c&|hWnFKKE@NP7Zh;|Y zZh$FfVPc4(&Jt6vp`ihWIzuC41Bl*wgp&-7&5Y0uG&Hfqu-MSd2*W#u=B5}PF|@G2 sFwe-q&=kcEePD1H85)|S2!g~+%rIPSWNKnQnVDxAyCIjVs;j>n05tbUCjbBd delta 362 zcmbOuxj=G4FQetez8c1i&FqYooZ==11_}lsppd7)1!fo+85x>Sp3Y@mZ;mcwU}|B6 zA!crfDQ00}ilNRDQ?H?+0fst5BV!YY-g<2n_cV4>E>%@me>VWYbx3&t diff --git a/test/reference/piechart.pdf b/test/reference/piechart.pdf index 411dcbe187c4e2ca443de988c4f7fdc91a398ec8..dd607c6868d165c357ede52c4f94f9f352c9ea11 100644 GIT binary patch delta 502 zcmbOx_e_>gHNeG9*HF)xOLf=%H4i2VwJ;f&PMq;@awp^I$&SpylUFm@PyWl~u-TEB zi&N0h(!$)($j|@+v<(a<$MDP(voKNs3n=6%a6x2@%q=Y^3-DUi8(X4F85)|IV2Bx6 zVv3mhA^s2QzBW delta 519 zcmaivy-EW?5XZ?~Te%y*&Fzg*zMZ{Lb!oxx=VhX!7zCc*9^a<>& zMW4eaq_OoCyrh!bfHN=*zxmJC_uljVPIl_50Uof(em>q8uT7Zu9wX%W)3S5x>&{nP ziyNQB=iW!dhI~e6EAp1a+gk|%AwuH@EZ9DfA9P=KEu^rr^ez?a1SkjNm)*meH0=_i zp@1=jOtK1eYD2HKp)M!6?w$R)39ZuYfdn>KOhn;796mzQg!44m_6{I}*oF)$xSCO- zKj{rGCA$i=D|2leqm{>_(rHzZv85bwu8Z{Of60X?3UNQZnoJ)i*R^1hN@Q6%uEZ}{ CBXaWq diff --git a/test/reference/smiley.pdf b/test/reference/smiley.pdf index 8f694d4f887f577b10dcb58de421df0525f37810..cdd40515cda3b5a3edaf576531e297401b1e0019 100644 GIT binary patch delta 519 zcmew&vqxsa1SVtiiIetEE@Tv$T+SFg`5dFfU`y8bE-yfx+b6-1Ec?jTFEF3V8}#5E&ygBg@J8 zJeKtqW|ru329}m4=wgP3Mwntorsf#xjIro7HN;eBW?}}?TW?^1aFn6Bxdn!SmWCJ> z8yT2jddLvdBSuD+80Hz77#kwl0SPH1Q)6Q!L2wWmS(szE+Q`z(c=B~#`#4A-;wJ4B kY;a3LWb71Tx$Nw?ic1oUN-By{)3}Tc%*?q|RbBnv0KGnN{{R30 delta 583 zcmah`y-LJD5GHqxtXhdSp0LehT$8odKv~Y4wI#7?i(b0wj2th<%I%dA#V4T&aDY23+MX+@VBFkyp@Y zuQ7u07eap#BV&+*3IWEx1%wUH#nvXtGG{ delta 362 zcmew@@n2%X1SU(PiIWa9W^4{(k&>eG&VLyH_*_;48vkWQ%el*7@8Ylc*M}c t6w^FQ3o{fu^nt-)WME-|A_x*QF~)GUk*T4@ { ctx.arc(50, y, 20, 0, Math.PI); ctx.closePath(); ctx.stroke(); + y += pad + 40; + + ctx.beginPath(); + ctx.arc(50, y, 20, -Math.PI / 3, Math.PI, true); + ctx.closePath(); + ctx.stroke(); + y += pad + 40; + + comparePdf(doc.output(), "arc.pdf", "context2d"); }); From 9bf2f25c0d04d9995d9ef47a7f9815800ae0fdeb Mon Sep 17 00:00:00 2001 From: Gokhan Kurt Date: Tue, 26 Oct 2021 02:29:46 +0300 Subject: [PATCH 3/7] fix moveto+arc case --- src/modules/context2d.js | 28 ++++++++++++++---- test/reference/arc.pdf | Bin 4123 -> 4416 bytes .../bar_graph_with_text_and_lines.pdf | Bin 38078 -> 38078 bytes test/reference/piechart.pdf | Bin 3814 -> 3814 bytes test/reference/smiley.pdf | Bin 3644 -> 3644 bytes test/specs/context2d.spec.js | 11 +++++++ 6 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/modules/context2d.js b/src/modules/context2d.js index 285b8b611..e429a8079 100644 --- a/src/modules/context2d.js +++ b/src/modules/context2d.js @@ -2081,6 +2081,7 @@ import { style = null; } + var beginned = false; for (var k = 0; k < moves.length; k++) { if (moves[k].arc) { var arcs = moves[k].abs; @@ -2098,18 +2099,22 @@ import { arc.endAngle, arc.counterclockwise, undefined, - isClip + isClip, + !beginned ); } else { drawLine.call(this, arc.x, arc.y); } + beginned = true; } } else if (moves[k].close === true) { this.pdf.internal.out("h"); + beginned = false; } else if (moves[k].begin !== true) { var x = moves[k].start.x; var y = moves[k].start.y; drawLines.call(this, moves[k].deltas, x, y); + beginned = true; } } @@ -2187,15 +2192,28 @@ import { * @param style * @param isClip */ - var drawArc = function(x, y, r, a1, a2, counterclockwise, style, isClip) { + var drawArc = function( + x, + y, + r, + a1, + a2, + counterclockwise, + style, + isClip, + includeMove + ) { // http://hansmuller-flex.blogspot.com/2011/10/more-about-approximating-circular-arcs.html - var includeMove = true; var curves = createArc.call(this, r, a1, a2, counterclockwise); for (var i = 0; i < curves.length; i++) { var curve = curves[i]; - if (includeMove && i === 0) { - doMove.call(this, curve.x1 + x, curve.y1 + y); + if (i === 0) { + if (includeMove) { + doMove.call(this, curve.x1 + x, curve.y1 + y); + } else { + drawLine.call(this, curve.x1 + x, curve.y1 + y); + } } drawCurve.call( this, diff --git a/test/reference/arc.pdf b/test/reference/arc.pdf index f7adc9f78f0b76b8d9ab6a1b76f16750d383281f..8f64afdc00372e80a5015ea358e65d41396d6a1c 100644 GIT binary patch delta 659 zcmchTJ5B^K42BD~nH11LYk{_n{74-806>WZM_7ra09rcc3M&mAr$AhQQ&BSySVj|S zqA0O{+wteT!pG@ucaYHDy6vi^2srNR%b*dSrh{@X7Nuwo4`K3H2k$;G<$dhO;~d?A ztiM2gOdN~8?M)!|NWU@ks0j*c8!dyEmRD(^p3%CDp=ud^`0=wtOt!;BA935q-mWmDHOhJ0 zqns}V;@A~{WY!jlgE&VE(}5h_A~6uhr5Gf$xmXg!Ia>nKV_OQ=6H%56D490?F_-gJm>YKze4hfc0!{1#y(yz#O}FkaO0w3-JN~M7myd delta 283 zcmdnDl4;*crVZO!8FMG^U`=7n-7L#CF?I6XZ1%}pvy*^ai5wwDpqzGY9*{FDSAuc! zf;^7NyYe!CT;+TzkeposNN#O`IEZt!FdfLzEfNE9T#7+5n~NnuoU { y += pad + 40; + ctx.strokeStyle = "red"; + + ctx.beginPath(); + ctx.moveTo(150, 80); + ctx.lineTo(150, 115); + ctx.arc(150, 80, 65, 0, Math.PI * 0.8); + ctx.closePath() + ctx.lineWidth = 6; + ctx.fill(); + ctx.stroke(); + comparePdf(doc.output(), "arc.pdf", "context2d"); }); From 2f4ed9051745bb6e9e141b623c2f4a6bae1a3cc6 Mon Sep 17 00:00:00 2001 From: Gokhan Kurt Date: Tue, 26 Oct 2021 02:50:48 +0300 Subject: [PATCH 4/7] regenerate affected html pdfs --- .../html-margin-page-break-image.pdf | Bin 5296 -> 5180 bytes test/reference/html-margin-page-break.pdf | Bin 5022 -> 4848 bytes test/reference/html-margin-x-y.pdf | Bin 3607 -> 3535 bytes test/reference/html-margin.pdf | Bin 3607 -> 3535 bytes test/reference/html-multiple.pdf | Bin 4619 -> 4403 bytes test/reference/html-x-y.pdf | Bin 3607 -> 3535 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/reference/html-margin-page-break-image.pdf b/test/reference/html-margin-page-break-image.pdf index 983af6e3c2d8124f593479848dd41fd798fd8009..d919864c35d8317ac906905778750fcd2cf16fd3 100644 GIT binary patch delta 541 zcmZXQu?oUK42Egdf)y7PUAq+QAmozkHRs}_li=h#IQa^F06~;G`4mD&-Q9f-M;ABS zx@dF5aeTRi|H~!1jSss9u|4kJ&L%rMrnqNK%7*UMf&AfiodUcXU;K16=aZISvZbf1 zubAJxb!U_q44^#0Ht?$lXduX_H%$%HOJGb~XG$RnhRA|3DZy-P>I{LCilsl95K%NE z#a1+H7GcmR;fRUWqL=wkI4##f0K$Y6i7gNsF_6f9O@2g3TM@eOkn>nY!bGE$j1rsm O2d8#n?uX%gwfF$)yl+bY delta 657 zcmZ{gy=nqM5XU*cAQw`INZPYF&?d~+?%t-?HZKxHwc02!hz3XZ)0hv zcSl5TbYWrm4ZmUjQ%-+pA8%bD^ZC9TF+3#x@SkJ(ufl6&FY?KN!Zs=+DSkS4(YR94 z9o?o3W!GNmRC?O`>liB5y}0qo9Q~#Yo4(Y(>J*c~%k6#UvIMG^ER(n{Ku~O04IguF z+bwW_ZHDN*Vho~~7uRM4jua!{n&l@u5wn)X86_LN3^`I6DYKwle;zom&cR4336oJ* pV9wM)HrOON3BnfD((F*r^E6Xu6@d%PoA5pQx;Z3|({%o{*aQ1ThTZ@G diff --git a/test/reference/html-margin-page-break.pdf b/test/reference/html-margin-page-break.pdf index 1aee0ae63f2571fdaaa2e9cf1ca53251891e7b86..b33794de7ec37b731653f68574951c40694d62a5 100644 GIT binary patch delta 542 zcmbQI{y}v@50kOk#J*pQ8Ixx-h5*U=EXtErnKXc`1g4ElCZ?N(nfVyOvO1H0GK0kD zvv`ALO(&bM)-aixY~IAm4N`H5Ee>kW@Kn+ zfFWjNVh9$iM{<*qu{ow@Q$q|(jLeKN9BpK7hT%se3rh?~8ygs#AUmcW6dcBeW*9y; z2I@vu2v%o;84AXxrVyVXdBoVv6vNRb1_l`FObjd-%_lPoPvHbc5tpi}tG^onZ7Ors delta 702 zcmeyMI!}E<50jU_!gb6e~1c!_xi#HCLUY3naW(J!bSh*pl8kxdPg)k@ku*HG( zV#>Sp*e;+6C*Q5!^y!y PQ#g&yOu1B5UH#nv#src3 diff --git a/test/reference/html-margin-x-y.pdf b/test/reference/html-margin-x-y.pdf index 70b1e792b101ee2d518ea3b1185273b033e7e41e..c180b86852d504ee8dfdc1067a73884a9fbb4b90 100644 GIT binary patch delta 381 zcmbO(b6$EvKeMTk#l}enjEotRZ!=~9$rvU}#*EGDnEW`!42%^FKtLf+feXwqFfuhV zm@LF&S#NG;fG%fXVPT3cW@uoDDQ0M5fuYU_i(V50Om(Kl<{-WG$c{2JGqc1n(82)I zVoPI84;f&3#K_PB!#pEnBO@d`48g%+WMX83BnS~RH^Xo>&~qk}t9U1K8CjZIaH*=g H`nv%DKl4o_ delta 426 zcmZvYJr2S!429J)QRvD7LzZp`y*O!NZ!9pvEf53Z3Oxdd44eaT1U43~gj$xW#*_8= z=lS_Fzb~$rQ2-t{WNDq1Q;(HlXICudlwR3U!(}cCJ`eeBJd3qK8|G|^E&&~qk}t9U1K8CjZIaH*=g H`nv%DKl4o_ delta 426 zcmZvYJr2S!429J)QRvD7LzZp`y*O!NZ!9pvEf53Z3Oxdd44eaT1U43~gj$xW#*_8= z=lS_Fzb~$rQ2-t{WNDq1Q;(HlXICudlwR3U!(}cCJ`eeBJd3qK8|G|^E&*TRSNmX4_n}j}Cfs==E?vCD zKf|ee$I)UV6i?ak(ke~Hgdu8ep3>cU5I^fg`plDse#Ne%`OMyT| u8cIb6Yeo(NLk~eFNI&F;O=j@%JJ7i&@W&*Qtx*BkYHbtLAd@^loR42rQDFiA delta 614 zcmaKpF-`+95JlzP4I)+&A}FF1k*tV_Ze@GMUb~}#mNHjJ5k$WYeQqS~3=WIAYSqlfMc3!M$&sISkry^hS4ZSfF8Vu>Z zxaw>%XH%05a+?$f3er=Fvp*dX`B<9Ku_Lg_7His8uTzx}xlW3R-&RBVtZx2swLL#N zX8ho9yUVj)f6}-{$neBQ@c5BnB~pFicMkEir@Zy2nwCD-H0aC+zs#b~eO9Y5yGujq z#y|#ihik>mNqDL9g;c%>=qBR&~qk}t9U1K8CjZIaH*=g H`nv%DKl4o_ delta 426 zcmZvYJr2S!429J)QRvD7LzZp`y*O!NZ!9pvEf53Z3Oxdd44eaT1U43~gj$xW#*_8= z=lS_Fzb~$rQ2-t{WNDq1Q;(HlXICudlwR3U!(}cCJ`eeBJd3qK8|G|^E& Date: Fri, 29 Oct 2021 18:23:39 +0300 Subject: [PATCH 5/7] fix prose --- src/modules/context2d.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/context2d.js b/src/modules/context2d.js index e429a8079..277b5970c 100644 --- a/src/modules/context2d.js +++ b/src/modules/context2d.js @@ -2081,7 +2081,7 @@ import { style = null; } - var beginned = false; + var began = false; for (var k = 0; k < moves.length; k++) { if (moves[k].arc) { var arcs = moves[k].abs; @@ -2100,21 +2100,21 @@ import { arc.counterclockwise, undefined, isClip, - !beginned + !began ); } else { drawLine.call(this, arc.x, arc.y); } - beginned = true; + began = true; } } else if (moves[k].close === true) { this.pdf.internal.out("h"); - beginned = false; + began = false; } else if (moves[k].begin !== true) { var x = moves[k].start.x; var y = moves[k].start.y; drawLines.call(this, moves[k].deltas, x, y); - beginned = true; + began = true; } } From 5cb27c80acfd0f057d936e7168bd88758110dfff Mon Sep 17 00:00:00 2001 From: Gokhan Kurt Date: Fri, 29 Oct 2021 18:34:35 +0300 Subject: [PATCH 6/7] add implicit line to arc start test --- test/reference/arc.pdf | Bin 4416 -> 4660 bytes test/specs/context2d.spec.js | 19 ++++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/test/reference/arc.pdf b/test/reference/arc.pdf index 8f64afdc00372e80a5015ea358e65d41396d6a1c..6feb78eb9e0f3041f9da42e0b7753fc404180a04 100644 GIT binary patch delta 658 zcmcgp%SuEs35d8o@%{~Ub zOkGG?ruECI7%y-oA_z!KMmM7w~wjU4W zJLRUKQe#Xmv3p3@!YzgW#vJ9mH+dd}d}d2T)5v4`F9(xgZ{3VG7S7dH|0myMinxq_2*bvX!Ec$p|BSd(s*zi{@}HDG~qcJW!b`uv(SV+Thjty2bk8= zSOtgwH7r9=oJ7SDQ2g&B)U!mQ`y5I$TXl~j??DL$(TfF@A&S}vL#gzbfIB;|eFro6 X4*BJRQ&)4zKHX=@uy8bazS(a-rD;%j diff --git a/test/specs/context2d.spec.js b/test/specs/context2d.spec.js index 6b4808982..3167dc59e 100644 --- a/test/specs/context2d.spec.js +++ b/test/specs/context2d.spec.js @@ -381,17 +381,22 @@ describe("Context2D: standard tests", () => { ctx.arc(50, y, 20, -Math.PI / 3, Math.PI, true); ctx.closePath(); ctx.stroke(); - y += pad + 40; - + ctx.lineWidth = 4; ctx.strokeStyle = "red"; + y = 80; + ctx.beginPath(); + ctx.moveTo(150, y); + ctx.lineTo(150, y + 35); + ctx.arc(150, y, 65, 0, Math.PI * 0.8); + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + y = 160; ctx.beginPath(); - ctx.moveTo(150, 80); - ctx.lineTo(150, 115); - ctx.arc(150, 80, 65, 0, Math.PI * 0.8); - ctx.closePath() - ctx.lineWidth = 6; + ctx.moveTo(150, y); + ctx.arc(150, y, 65, 0, Math.PI * 0.8); ctx.fill(); ctx.stroke(); From b9a15387322907daa1188eccf4d82d98f5539f49 Mon Sep 17 00:00:00 2001 From: Gokhan Kurt Date: Fri, 29 Oct 2021 18:40:35 +0300 Subject: [PATCH 7/7] add implicit line test with full circle --- test/reference/arc.pdf | Bin 4660 -> 5060 bytes test/specs/context2d.spec.js | 7 +++++++ 2 files changed, 7 insertions(+) diff --git a/test/reference/arc.pdf b/test/reference/arc.pdf index 6feb78eb9e0f3041f9da42e0b7753fc404180a04..950d79b90149ac34ec10979ba13f81ea5be48155 100644 GIT binary patch delta 695 zcmbtQyG{c!5R?!iIv3GJk*K#Iq{8xg*Drc#5#JCg6-k@&Bz^!Q3x0tb!6)!xTx=_x z&RuXdyE{8O1%Mxg(zo=U|=k_NO^8V80FGjChe+;2xi<9%ds*`rpnsD;7Y7T%5YkcZgBX2NlpvW z9KZUjnM|8Yt+fYrc(4VLfMOMI+S~JfV&X@89rx|LvyR3z?NL>|KoyUa)nguE;HpPd r=@FY`Z#wixCgN=V=&+XX>?+y7VccUKDw|C4ZT8-35So~j)Wi})%)%1GmByBnRfVT<8dw-}sj9mAy8!^k)jpyC diff --git a/test/specs/context2d.spec.js b/test/specs/context2d.spec.js index 3167dc59e..66ae72e22 100644 --- a/test/specs/context2d.spec.js +++ b/test/specs/context2d.spec.js @@ -400,6 +400,13 @@ describe("Context2D: standard tests", () => { ctx.fill(); ctx.stroke(); + y = 280; + ctx.beginPath(); + ctx.moveTo(150, y); + ctx.arc(150, y, 30, 0, 2 * Math.PI); + ctx.fill(); + ctx.stroke(); + comparePdf(doc.output(), "arc.pdf", "context2d"); });