mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-06 04:09:08 +02:00
[perf] simplify line drawing (#6575)
* Simplify line drawing * Remove duplicate initialization
This commit is contained in:
parent
daafbc7b66
commit
959ea08224
@ -40,7 +40,11 @@ module.exports = Element.extend({
|
||||
var closePath = me._loop;
|
||||
var index, previous, currentVM;
|
||||
|
||||
if (me._loop && points.length) {
|
||||
if (!points.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (me._loop) {
|
||||
for (index = 0; index < points.length; ++index) {
|
||||
previous = helpers.previousItem(points, index);
|
||||
// If the line has an open path, shift the point array
|
||||
@ -73,31 +77,27 @@ module.exports = Element.extend({
|
||||
|
||||
// Stroke Line
|
||||
ctx.beginPath();
|
||||
lastDrawnIndex = -1;
|
||||
|
||||
for (index = 0; index < points.length; ++index) {
|
||||
previous = helpers.previousItem(points, index);
|
||||
// First point moves to it's starting position no matter what
|
||||
currentVM = points[0]._view;
|
||||
if (!currentVM.skip) {
|
||||
ctx.moveTo(currentVM.x, currentVM.y);
|
||||
lastDrawnIndex = 0;
|
||||
}
|
||||
|
||||
for (index = 1; index < points.length; ++index) {
|
||||
currentVM = points[index]._view;
|
||||
previous = lastDrawnIndex === -1 ? helpers.previousItem(points, index) : points[lastDrawnIndex];
|
||||
|
||||
// First point moves to it's starting position no matter what
|
||||
if (index === 0) {
|
||||
if (!currentVM.skip) {
|
||||
if (!currentVM.skip) {
|
||||
if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {
|
||||
// There was a gap and this is the first point after the gap
|
||||
ctx.moveTo(currentVM.x, currentVM.y);
|
||||
lastDrawnIndex = index;
|
||||
}
|
||||
} else {
|
||||
previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];
|
||||
|
||||
if (!currentVM.skip) {
|
||||
if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {
|
||||
// There was a gap and this is the first point after the gap
|
||||
ctx.moveTo(currentVM.x, currentVM.y);
|
||||
} else {
|
||||
// Line to next point
|
||||
helpers.canvas.lineTo(ctx, previous._view, currentVM);
|
||||
}
|
||||
lastDrawnIndex = index;
|
||||
} else {
|
||||
// Line to next point
|
||||
helpers.canvas.lineTo(ctx, previous._view, currentVM);
|
||||
}
|
||||
lastDrawnIndex = index;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user