9   KDRect absoluteRect = absoluteFillRect(rect);
    18   KDRect absoluteRect = absoluteFillRect(rect);
    36   startingI = startingI > 0 ? startingI : 0;
    37   startingJ = startingJ > 0 ? startingJ : 0;
    46   if (workingBuffer == 
nullptr) {
    55         workingBuffer[i+absoluteRect.
width()*j] = pixels[startingI+i+rect.
width()*(startingJ+j)];
    58     pushRect(absoluteRect, workingBuffer);
    66   KDRect absoluteRect = absoluteFillRect(rect);
    73   pullRect(absoluteRect, workingBuffer);
    76   startingI = startingI > 0 ? startingI : 0;
    77   startingJ = startingJ > 0 ? startingJ : 0;
    80       KDColor * currentPixelAdress = workingBuffer + i + absoluteRect.
width()*j;
    81       const uint8_t * currentMaskAddress = mask + i + startingI + rect.
width()*(j + startingJ);
    82       *currentPixelAdress = 
KDColor::blend(*currentPixelAdress, color, *currentMaskAddress);
    86   pushRect(absoluteRect, workingBuffer);
 KDRect translatedBy(KDPoint p) const
void strokeRect(KDRect rect, KDColor color)
void blendRectWithMask(KDRect rect, KDColor color, const uint8_t *mask, KDColor *workingBuffer)
KDCoordinate right() const
virtual void pullRect(KDRect rect, KDColor *pixels)=0
virtual void pushRect(KDRect, const KDColor *pixels)=0
virtual void pushRectUniform(KDRect rect, KDColor color)=0
void fillRectWithPixels(KDRect rect, const KDColor *pixels, KDColor *workingBuffer)
void fillRect(KDRect rect, KDColor color)
KDCoordinate width() const
KDRect intersectedWith(const KDRect &other) const
KDCoordinate height() const
static KDColor blend(KDColor first, KDColor second, uint8_t alpha)
KDCoordinate bottom() const