Add Framebuffer.rect(), .hline(), .vline()

This commit is contained in:
Josh Holtrop 2022-03-22 21:55:25 -04:00
parent 2d7bf5197f
commit 9e7c3ee676

View File

@ -54,6 +54,57 @@ struct Framebuffer
memset32(m_buffer, color, m_buffer_size);
}
/**
* Draw a solid rectangle on the framebuffer.
*
* @param x X coordinate of left side of rectangle.
* @param y Y coordinate of bottom side of rectangle.
* @param width Width of rectangle.
* @param height Height of rectangle.
* @param color Color of rectangle.
*/
void rect(size_t x, size_t y, size_t width, size_t height, uint color)
{
for (size_t iy = 0u; iy < height; iy++)
{
size_t buffer_index = buffer_index(x, y);
memset32(&m_buffer[buffer_index], color, width);
y++;
}
}
/**
* Draw a horizontal line.
*
* @param x X coordinate of left side of line.
* @param y Y coordinate of line.
* @param width Width of line.
* @param color Color of line.
*/
void hline(size_t x, size_t y, size_t width, uint color)
{
size_t buffer_index = buffer_index(x, y);
memset32(&m_buffer[buffer_index], color, width);
}
/**
* Draw a vertical line.
*
* @param x X coordinate of line.
* @param y Y coordinate of bottom of line.
* @param height Height of line.
* @param color Color of line.
*/
void vline(size_t x, size_t y, size_t height, uint color)
{
size_t buffer_index = buffer_index(x, y);
for (size_t iy = 0u; iy < height; iy++)
{
m_buffer[buffer_index] = color;
buffer_index -= m_stride;
}
}
/**
* Blit an 8-bit alpha bitmap to the framebuffer.
*