@Override
  public void drawHighlighted(Canvas c, Highlight[] indices) {

    float rotationAngle = mChart.getRotationAngle();
    float angle = 0f;

    float[] drawAngles = mChart.getDrawAngles();
    float[] absoluteAngles = mChart.getAbsoluteAngles();

    for (int i = 0; i < indices.length; i++) {

      // get the index to highlight
      int xIndex = indices[i].getXIndex();
      if (xIndex >= drawAngles.length) continue;

      PieDataSet set = mChart.getData().getDataSetByIndex(indices[i].getDataSetIndex());

      if (set == null || !set.isHighlightEnabled()) continue;

      if (xIndex == 0) angle = rotationAngle;
      else angle = rotationAngle + absoluteAngles[xIndex - 1];

      angle *= mAnimator.getPhaseY();

      float sliceDegrees = drawAngles[xIndex];

      float shift = set.getSelectionShift();
      RectF circleBox = mChart.getCircleBox();

      RectF highlighted =
          new RectF(
              circleBox.left - shift,
              circleBox.top - shift,
              circleBox.right + shift,
              circleBox.bottom + shift);

      mRenderPaint.setColor(set.getColor(xIndex));

      // redefine the rect that contains the arc so that the
      // highlighted pie is not cut off
      mBitmapCanvas.drawArc(
          highlighted,
          angle + set.getSliceSpace() / 2f,
          sliceDegrees * mAnimator.getPhaseY() - set.getSliceSpace() / 2f,
          true,
          mRenderPaint);
    }
  }