@Override
  public void renderAxisLabels(Canvas c) {

    if (!mXAxis.isEnabled() || !mXAxis.isDrawLabelsEnabled()) return;

    mAxisPaint.setTypeface(mXAxis.getTypeface());
    mAxisPaint.setTextSize(mXAxis.getTextSize());
    mAxisPaint.setColor(mXAxis.getTextColor());

    float sliceangle = mChart.getSliceAngle();

    // calculate the factor that is needed for transforming the value to
    // pixels
    float factor = mChart.getFactor();

    PointF center = mChart.getCenterOffsets();

    for (int i = 0; i < mXAxis.getValues().size(); i++) {

      String text = mXAxis.getValues().get(i);

      float angle = (sliceangle * i + mChart.getRotationAngle()) % 360f;

      PointF p =
          Utils.getPosition(center, mChart.getYRange() * factor + mXAxis.mLabelWidth / 2f, angle);

      c.drawText(text, p.x, p.y + mXAxis.mLabelHeight / 2f, mAxisPaint);
    }
  }