Fix bug with overwriting

This commit is contained in:
YariKartoshe4ka 2023-01-12 15:22:07 +03:00
parent 3dc34ef835
commit 8db5f35a4e
No known key found for this signature in database
GPG Key ID: 492605FA72BE784F
1 changed files with 10 additions and 4 deletions

View File

@ -558,15 +558,21 @@ void Arduboy2Base::drawFastVLine
} }
int16_t end = y + h; int16_t end = y + h;
uint8_t data, colorUp = 0xff << (y - (y & 0xf8)),
colorDown = 0xff >> (8 - (min(end, HEIGHT - 1) & 7));
sBuffer[(y & 0xf8) * WIDTH / 8 + x] = color << (y - (y & 0xf8)); 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); i < min(end, HEIGHT); i += 8) for (uint8_t i = max(y + 7, 0) & 0xf8; i <= min(end, HEIGHT - 1) - 7; i += 8)
{ {
sBuffer[(i & 0xf8) * WIDTH / 8 + x] = color; sBuffer[i * WIDTH / 8 + x] = color;
} }
sBuffer[(min(end, HEIGHT - 1) & 0xf8) * WIDTH / 8 + x] = color >> (8 - (min(end, HEIGHT - 1) & 7)); 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;
}; };