private void drawEvents ( Calendar date , float startFromPixel , Canvas canvas ) { if ( mEventRects != null && mEventRects . size ( ) > 0 ) { for ( int i = 0 ; i < mEventRects . size ( ) ; i ++ ) { if ( isSameDay ( mEventRects . get ( i ) . event . getStartTime ( ) , date ) && ! mEventRects . get ( i ) . event . isAllDay ( ) ) { // Calculate top. float top = mHourHeight * 24 * mEventRects . get ( i ) . top / 1440 + mCurrentOrigin . y + mHeaderHeight + mHeaderRowPadding * 2 + mHeaderMarginBottom + mTimeTextHeight / 2 + mEventMarginVertical ; // Calculate bottom. float bottom = mEventRects . get ( i ) . bottom ; bottom = mHourHeight * 24 * bottom / 1440 + mCurrentOrigin . y + mHeaderHeight + mHeaderRowPadding * 2 + mHeaderMarginBottom + mTimeTextHeight / 2 - mEventMarginVertical ; // Calculate left and right. float left = startFromPixel + mEventRects . get ( i ) . left * mWidthPerDay ; if ( left < startFromPixel ) left += mOverlappingEventGap ; float right = left + mEventRects . get ( i ) . width * mWidthPerDay ; if ( right < startFromPixel + mWidthPerDay ) right -= mOverlappingEventGap ; // Draw the event and the event name on top of it. if ( left < right && left < getWidth ( ) && top < getHeight ( ) && right > mHeaderColumnWidth && bottom > mHeaderHeight + mHeaderRowPadding * 2 + mTimeTextHeight / 2 + mHeaderMarginBottom ) { mEventRects . get ( i ) . rectF = new RectF ( left , top , right , bottom ) ; mEventBackgroundPaint . setColor ( mEventRects . get ( i ) . event . getColor ( ) == 0 ? mDefaultEventColor : mEventRects . get ( i ) . event . getColor ( ) ) ; canvas . drawRoundRect ( mEventRects . get ( i ) . rectF , mEventCornerRadius , mEventCornerRadius , mEventBackgroundPaint ) ; drawEventTitle ( mEventRects . get ( i ) . event , mEventRects . get ( i ) . rectF , canvas , top , left ) ; } else mEventRects . get ( i ) . rectF = null ; } } } }
Draw all the events of a particular day .