renderXAxis method

void renderXAxis(
  1. CanvasRenderingContext2D ctx,
  2. List<DateTime> xDates
)

Implementation

void renderXAxis(CanvasRenderingContext2D ctx, List<DateTime> xDates) {
  final cWidth = chart.width;
  final cHeight = chart.height;
  ctx
    ..strokeStyle = style.fontColor
    ..beginPath()
    ..moveTo(style.leftMargin, cHeight - style.bottomMargin)
    ..lineTo(cWidth - style.rightMargin, cHeight - style.bottomMargin)
    ..stroke()
    ..textAlign = 'center';
  final usableWidth = cWidth - style.leftMargin - style.rightMargin - 1;
  xStepPix = usableWidth / (xDates.length - 1);
  if (chart.candleData.isNotEmpty) {
    xStepPix = usableWidth / (xDates.length - 0.5);
  }

  final y = cHeight - style.bottomMargin;
  ctx
    ..textBaseline = 'top'
    ..textAlign = 'center';
  drawXLabel(ctx, style.leftMargin, y, xDates.first);
  var prevX = style.leftMargin;
  for (var i = 1; i < (xDates.length - 1); i++) {
    final x = (style.leftMargin + (i * xStepPix)).round();
    if (x - prevX < xStepInterval) {
      continue;
    }
    drawXLabel(ctx, x, y, xDates[i]);
    prevX = x;
  }
  if (cWidth - style.rightMargin - prevX > xStepInterval) {
    drawXLabel(ctx, cWidth - style.rightMargin, y, xDates.last);
  }
}