Fix using above/below filling option with discontinuous lines (#10024)

Added a test in the boundary folder
This commit is contained in:
Charles Masson 2022-01-01 22:42:45 +01:00 committed by GitHub
parent a5b46a859c
commit c527f47a89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 129 additions and 2 deletions

View File

@ -383,9 +383,30 @@ function resolveTarget(sources, index, propagate) {
}
function _clip(ctx, target, clipY) {
const {segments, points} = target;
let first = true;
let lineLoop = false;
ctx.beginPath();
target.path(ctx);
ctx.lineTo(target.last().x, clipY);
for (const segment of segments) {
const {start, end} = segment;
const firstPoint = points[start];
const lastPoint = points[findSegmentEnd(start, end, points)];
if (first) {
ctx.moveTo(firstPoint.x, firstPoint.y);
first = false;
} else {
ctx.lineTo(firstPoint.x, clipY);
ctx.lineTo(firstPoint.x, firstPoint.y);
}
lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});
if (lineLoop) {
ctx.closePath();
} else {
ctx.lineTo(lastPoint.x, clipY);
}
}
ctx.lineTo(target.first().x, clipY);
ctx.closePath();
ctx.clip();

View File

@ -0,0 +1,53 @@
{
"config": {
"type": "line",
"data": {
"labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"],
"datasets": [{
"borderColor": "rgb(42, 90, 145)",
"data": [null, 12, 30, 36, 45, 53, 68, 79, null, 95, 18, 18, 180],
"fill": {
"target": "+1",
"above": "rgba(4, 142, 43, 0.5)",
"below": "rgba(241, 49, 34, 0.5)"
}
}, {
"borderColor": "#00ADEE",
"data": [null, 0, 0, 0, 0, 0, 20, 108, null, 72, 72, 72, 72],
"fill": false
}]
},
"options": {
"responsive": false,
"spanGaps": false,
"scales": {
"x": {
"display": false
},
"y": {
"display": false
}
},
"elements": {
"point": {
"radius": 0
},
"line": {
"cubicInterpolationMode": "monotone",
"borderColor": "transparent"
}
},
"plugins": {
"legend": false,
"title": false,
"tooltip": false
}
}
},
"options": {
"canvas": {
"height": 256,
"width": 512
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,53 @@
{
"config": {
"type": "line",
"data": {
"labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"],
"datasets": [{
"borderColor": "rgb(42, 90, 145)",
"data": [4, 12, 30, 36, 45, 53, 68, 79, null, 95, 18, null, 18, 180],
"fill": {
"target": "+1",
"above": "rgba(4, 142, 43, 0.5)",
"below": "rgba(241, 49, 34, 0.5)"
}
}, {
"borderColor": "#00ADEE",
"data": [0, 0, 0, 0, 0, 0, 20, 108, null, 72, 72, null, 72, 72],
"fill": false
}]
},
"options": {
"responsive": false,
"spanGaps": false,
"scales": {
"x": {
"display": false
},
"y": {
"display": false
}
},
"elements": {
"point": {
"radius": 0
},
"line": {
"cubicInterpolationMode": "monotone",
"borderColor": "transparent"
}
},
"plugins": {
"legend": false,
"title": false,
"tooltip": false
}
}
},
"options": {
"canvas": {
"height": 256,
"width": 512
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB