Skip to content

Commit 5c7f6d8

Browse files
committed
Optimize TGraphErrors drawing
1 parent 071d10b commit 5c7f6d8

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

scripts/JSRoot.more.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,7 +1310,7 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => {
13101310
let grx = funcs.grx(pnt.x);
13111311

13121312
// when drawing bars, take all points
1313-
if (!this.options.Bar && ((grx<0) || (grx>w))) return true;
1313+
if (!this.options.Bar && ((grx < 0) || (grx > w))) return true;
13141314

13151315
let gry = funcs.gry(pnt.y);
13161316

@@ -1346,7 +1346,7 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => {
13461346
.enter()
13471347
.append("svg:g")
13481348
.attr("class", "grpoint")
1349-
.attr("transform", d => "translate(" + d.grx1 + "," + d.gry1 + ")");
1349+
.attr("transform", d => `translate(${d.grx1},${d.gry1})`);
13501350
}
13511351

13521352
if (this.options.Bar) {
@@ -1396,8 +1396,14 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => {
13961396
let lw = this.lineatt.width + JSROOT.gStyle.fEndErrorSize, bb = 0,
13971397
vv = this.options.Ends ? "m0," + lw + "v-" + 2*lw : "",
13981398
hh = this.options.Ends ? "m" + lw + ",0h-" + 2*lw : "",
1399-
vleft = vv, vright = vv, htop = hh, hbottom = hh,
1400-
mm = this.options.MainError ? "M0,0L" : "M"; // command to draw main errors
1399+
vleft = vv, vright = vv, htop = hh, hbottom = hh;
1400+
1401+
const mainLine = (dx,dy) => {
1402+
if (!this.options.MainError) return `M${dx},${dy}`;
1403+
let res = "M0,0";
1404+
if (dx) return res + (dy ? `L${dx},${dy}` : `H${dx}`);
1405+
return dy ? res + `V${dy}` : res;
1406+
};
14011407

14021408
switch (this.options.Ends) {
14031409
case 2: // option []
@@ -1435,17 +1441,17 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => {
14351441
.style("stroke", "none")
14361442
.style("fill", "none")
14371443
.style("pointer-events", "visibleFill")
1438-
.attr("d", d => "M"+d.grx0+","+d.gry0+"h"+(d.grx2-d.grx0)+"v"+(d.gry2-d.gry0)+"h"+(d.grx0-d.grx2)+"z");
1444+
.attr("d", d => `M${d.grx0},${d.gry0}h${d.grx2-d.grx0}v${d.gry2-d.gry0}h${d.grx0-d.grx2}z`);
14391445

14401446
visible.append("svg:path")
14411447
.call(this.lineatt.func)
14421448
.style("fill", "none")
14431449
.attr("d", d => {
14441450
d.error = true;
1445-
return ((d.exlow > 0) ? mm + (d.grx0+lw) + "," + d.grdx0 + vleft : "") +
1446-
((d.exhigh > 0) ? mm + (d.grx2-lw) + "," + d.grdx2 + vright : "") +
1447-
((d.eylow > 0) ? mm + d.grdy0 + "," + (d.gry0-lw) + hbottom : "") +
1448-
((d.eyhigh > 0) ? mm + d.grdy2 + "," + (d.gry2+lw) + htop : "");
1451+
return ((d.exlow > 0) ? mainLine(d.grx0+lw, d.grdx0) + vleft : "") +
1452+
((d.exhigh > 0) ? mainLine(d.grx2-lw, d.grdx2) + vright : "") +
1453+
((d.eylow > 0) ? mainLine(d.grdy0, d.gry0-lw) + hbottom : "") +
1454+
((d.eyhigh > 0) ? mainLine(d.grdy2, d.gry2+lw) + htop : "");
14491455
});
14501456
}
14511457

0 commit comments

Comments
 (0)