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