Skip to content

Commit

Permalink
[perf] simplify line drawing (chartjs#6575)
Browse files Browse the repository at this point in the history
* Simplify line drawing

* Remove duplicate initialization
  • Loading branch information
benmccann authored and etimberg committed Oct 18, 2019
1 parent 47b93fe commit 33644c6
Showing 1 changed file with 21 additions and 21 deletions.
42 changes: 21 additions & 21 deletions src/elements/element.line.js
Expand Up @@ -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
Expand Down Expand Up @@ -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;
}
}

Expand Down

0 comments on commit 33644c6

Please sign in to comment.