drawXAxisValue static method

void drawXAxisValue(
  1. Canvas c,
  2. String text,
  3. double? x,
  4. double y,
  5. TextPainter paint,
  6. MPPointF anchor,
  7. double angleDegrees,
  8. XAxisPosition position,
)

Implementation

static void drawXAxisValue(
    Canvas c,
    String text,
    double? x,
    double y,
    TextPainter paint,
    MPPointF anchor,
    double angleDegrees,
    XAxisPosition position) {
  double drawOffsetX = 0;
  double drawOffsetY = 0;

  var originalTextAlign = paint.textAlign;
  paint.textAlign = TextAlign.left;

  if (angleDegrees != 0) {
    double translateX = x!;
    double translateY = y;

    c.save();
    c.translate(translateX, translateY);
    c.rotate(angleDegrees);

    paint.text = TextSpan(text: text, style: paint.text!.style);
    paint.layout();
    switch (position) {
      case XAxisPosition.bottom:
        paint.paint(c, Offset(drawOffsetX, drawOffsetY));
        break;
      case XAxisPosition.bottomInside:
        paint.paint(c, Offset(drawOffsetX, drawOffsetY));
        break;
      case XAxisPosition.top:
        paint.paint(c, Offset(drawOffsetX, drawOffsetY));
        break;
      case XAxisPosition.topInside:
        paint.paint(c, Offset(drawOffsetX, drawOffsetY));
        break;
      case XAxisPosition.bothSided:
        break;
    }

    c.restore();
  } else {
    drawOffsetX += x!;
    drawOffsetY += y;

    paint.text = TextSpan(text: text, style: paint.text!.style);
    paint.layout();
    switch (position) {
      case XAxisPosition.bottom:
        paint.paint(c, Offset(drawOffsetX - paint.width / 2, drawOffsetY));
        break;
      case XAxisPosition.bottomInside:
        paint.paint(
            c,
            Offset(
                drawOffsetX - paint.width / 2, drawOffsetY - paint.height));
        break;
      case XAxisPosition.top:
        paint.paint(
            c,
            Offset(
                drawOffsetX - paint.width / 2, drawOffsetY - paint.height));
        break;
      case XAxisPosition.topInside:
        paint.paint(c, Offset(drawOffsetX - paint.width / 2, drawOffsetY));
        break;
      case XAxisPosition.bothSided:
        break;
    }
  }

  paint.textAlign = originalTextAlign;
}