docs: function drawSeriesPoints(series, ctx, plotOffset, plotWidth, plotHeight, drawSymbol, getColorOrGradient) {
              function drawCircle(ctx, x, y, radius, shadow, fill) {
                  ctx.moveTo(x + radius, y);
                  ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);
              }
              drawCircle.fill = true;
              function plotPoints(datapoints, radius, fill, offset, shadow, axisx, axisy, drawSymbolFn) {
                  var points = datapoints.points,
                      ps = datapoints.pointsize;
  
                  ctx.beginPath();
                  for (var i = 0; i < points.length; i += ps) {
                      var x = points[i],
                          y = points[i + 1];
                      if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) {
                          continue;
                      }
  
                      x = axisx.p2c(x);
                      y = axisy.p2c(y) + offset;
  
                      drawSymbolFn(ctx, x, y, radius, shadow, fill);
                  }
                  if (drawSymbolFn.fill && !shadow) {
                      ctx.fill();
                  }
                  ctx.stroke();
              }
  
              ctx.save();
              ctx.translate(plotOffset.left, plotOffset.top);
  
              var datapoints = {
                  format: series.datapoints.format,
                  points: series.datapoints.points,
                  pointsize: series.datapoints.pointsize
              };
  
              if (series.decimatePoints) {
                  datapoints.points = series.decimatePoints(series, series.xaxis.min, series.xaxis.max, plotWidth, series.yaxis.min, series.yaxis.max, plotHeight);
              }
  
              var lw = series.points.lineWidth,
                  radius = series.points.radius,
                  symbol = series.points.symbol,
                  drawSymbolFn;
  
              if (symbol === 'circle') {
                  drawSymbolFn = drawCircle;
              } else if (typeof symbol === 'string' && drawSymbol && drawSymbol[symbol]) {
                  drawSymbolFn = drawSymbol[symbol];
              } else if (typeof drawSymbol === 'function') {
                  drawSymbolFn = drawSymbol;
              }
  
              // If the user sets the line width to 0, we change it to a very
              // small value. A line width of 0 seems to force the default of 1.
  
              if (lw === 0) {
                  lw = 0.0001;
              }
  
              ctx.lineWidth = lw;
              ctx.fillStyle = getFillStyle(series.points, series.color, null, null, getColorOrGradient);
              ctx.strokeStyle = series.color;
              plotPoints(datapoints, radius,
                  true, 0, false,
                  series.xaxis, series.yaxis, drawSymbolFn);
              ctx.restore();
          }