docs: @Override
      protected void onGraphDraw(Canvas _Canvas) {
          super.onGraphDraw(_Canvas);
  
          if (!mPieData.isEmpty()) {
  
              float innerStartAngle = 0;
              float innerSweepAngle = 0;
              int   amountOfPieSlices = mPieData.size();
  
              for (int pieIndex = 0; pieIndex < amountOfPieSlices; pieIndex++) {
                  PieModel model = mPieData.get(pieIndex);
  
                  mGraphPaint.setColor(model.getColor());
  
                  // TODO: put calculation in the animation onUpdate method and provide an animated value
                  float startAngle;
                  float sweepAngle = (model.getEndAngle() - model.getStartAngle()) * mRevealValue;
  
                  if (mOpenClockwise) {
                      startAngle = model.getStartAngle() * mRevealValue;
                  }
                  else {
                      startAngle = 360 - model.getEndAngle() * mRevealValue;
                  }
  
                  if(pieIndex == 0) {
                      innerStartAngle = startAngle +  (mOpenClockwise ? 0 : (float) Math.ceil(sweepAngle));
                  }
  
                  if (mOpenClockwise)
                      innerSweepAngle += sweepAngle;
                  else
                      innerSweepAngle -= (float) Math.ceil(sweepAngle);
  
                  _Canvas.drawArc(mGraphBounds,
                          startAngle,
                          sweepAngle,
                          true, mGraphPaint);
  
                  // Draw the highlighted inner edges if an InnerPadding is selected
                  if (mUseInnerPadding) {
                      mGraphPaint.setColor(model.getHighlightedColor());
  
                      _Canvas.drawArc(mInnerBounds,
                              startAngle,
                              sweepAngle,
                              true, mGraphPaint);
                  }
              }
  
              // Draw inner white circle
              if (mUseInnerPadding) {
                  mGraphPaint.setColor(mInnerPaddingColor);
  
                  _Canvas.drawArc(mInnerOutlineBounds,
                          innerStartAngle,
                          innerSweepAngle,
                          true,
                          mGraphPaint);
              }
          }
          else {
              // No Data available
              mGraphPaint.setColor(0xFFB6B6B6);
              _Canvas.drawArc(mGraphBounds,
                      0,
                      360,
                      true, mGraphPaint);
  
              // Draw inner white circle
              if (mUseInnerPadding) {
                  mGraphPaint.setColor(0xFFC6C6C6);
  
                  _Canvas.drawArc(mInnerBounds,
                          0,
                          360,
                          true, mGraphPaint);
  
                  mGraphPaint.setColor(mInnerPaddingColor);
  
                  _Canvas.drawArc(mInnerOutlineBounds,
                          0,
                          360,
                          true,
                          mGraphPaint);
              }
          }
      }