docs: @Override
      public void draw(@NonNull Canvas canvas) {
          if (mIcon == null && mPlainIcon == null) return;
  
          Rect viewBounds = getBounds();
  
          updatePaddingBounds(viewBounds);
          updateTextSize(viewBounds);
          offsetIcon(viewBounds);
  
          if (mRoundedCornerRy > -1 && mRoundedCornerRx > -1) {
              if (mDrawBackgroundContour) {
                  float halfContourSize = mBackgroundContourWidth / 2f;
                  RectF rectF = new RectF(
                          halfContourSize,
                          halfContourSize,
                          viewBounds.width() - halfContourSize,
                          viewBounds.height() - halfContourSize);
                  canvas.drawRoundRect(
                          rectF,
                          mRoundedCornerRx,
                          mRoundedCornerRy,
                          mBackgroundBrush.getPaint());
                  canvas.drawRoundRect(
                          rectF,
                          mRoundedCornerRx,
                          mRoundedCornerRy,
                          mBackgroundContourBrush.getPaint());
              } else {
                  RectF rectF = new RectF(0, 0, viewBounds.width(), viewBounds.height());
                  canvas.drawRoundRect(
                          rectF,
                          mRoundedCornerRx,
                          mRoundedCornerRy,
                          mBackgroundBrush.getPaint());
              }
          }
  
          try {
              mPath.close();
          } catch (Exception ignored) {
          }
  
          if (mDrawContour) {
              canvas.drawPath(mPath, mContourBrush.getPaint());
          }
  
          mIconBrush.getPaint().setColorFilter(mColorFilter == null ? mTintFilter : mColorFilter);
  
          canvas.drawPath(mPath, mIconBrush.getPaint());
      }