/* * _bgi_hspan_raw — горизонтальная линия len пикселей от (x,y), * mode 0x81, через Fill-burst'ы акселератора (до 256 байт за выстрел). * W3-naive: вызывающий обрамляет begin/end. */ #include "../_bgi.h" void _bgi_hspan_raw(int x, int y, int len, uint8_t color) { if ((unsigned)y >= GFX_HEIGHT) return; if (x < 0) { len += x; x = 0; } if (x >= GFX_WIDTH) return; if (x + len > GFX_WIDTH) len = GFX_WIDTH - x; if (len <= 0) return; _gfx_acc_color = color; _gfx_acc_y = (uint8_t)y; _gfx_acc_addr = (uint16_t)(_gfx_addr_base + (unsigned)x); while (len > 0) { int chunk = len > 256 ? 256 : len; _gfx_acc_len = (chunk == 256) ? 0 : (uint8_t)chunk; _gfx_hfill256_chunk(); len -= chunk; _gfx_acc_addr += chunk; } }