This commit is contained in:
YariKartoshe4ka 2023-08-19 00:48:57 +01:00 committed by GitHub
commit f23f770d84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 4 deletions

View File

@ -547,12 +547,34 @@ void Arduboy2Base::drawRect
void Arduboy2Base::drawFastVLine
(int16_t x, int16_t y, uint8_t h, uint8_t color)
{
int end = y+h;
for (int a = max(0,y); a < min(end,HEIGHT); a++)
if (x < 0 || x >= WIDTH || y >= HEIGHT) return;
color = (color == WHITE ? ~0 : 0);
if (y < 0)
{
drawPixel(x,a,color);
h += y;
y = 0;
}
}
int16_t end = y + h;
uint8_t data, colorUp = 0xff << (y - (y & 0xf8)),
colorDown = 0xff >> (8 - (min(end, HEIGHT - 1) & 7));
data = sBuffer[(y & 0xf8) * WIDTH / 8 + x] | colorUp;
if (!color) data ^= colorUp;
sBuffer[(y & 0xf8) * WIDTH / 8 + x] = data;
for (uint8_t i = max(y + 7, 0) & 0xf8; i <= min(end, HEIGHT - 1) - 7; i += 8)
{
sBuffer[i * WIDTH / 8 + x] = color;
}
data = sBuffer[(min(end, HEIGHT - 1) & 0xf8) * WIDTH / 8 + x] | colorDown;
if (!color) data ^= colorDown;
sBuffer[(min(end, HEIGHT - 1) & 0xf8) * WIDTH / 8 + x] = data;
};
void Arduboy2Base::drawFastHLine
(int16_t x, int16_t y, uint8_t w, uint8_t color)