Kernel: Implement FramebufferDevice::get_pixel()
This commit is contained in:
parent
554b13ac50
commit
994713d04c
|
@ -15,6 +15,7 @@ namespace Kernel
|
||||||
uint32_t width() const { return m_width; }
|
uint32_t width() const { return m_width; }
|
||||||
uint32_t height() const { return m_height; }
|
uint32_t height() const { return m_height; }
|
||||||
|
|
||||||
|
uint32_t get_pixel(uint32_t x, uint32_t y) const;
|
||||||
void set_pixel(uint32_t x, uint32_t y, uint32_t rgb);
|
void set_pixel(uint32_t x, uint32_t y, uint32_t rgb);
|
||||||
|
|
||||||
// positive rows -> empty pixels on bottom
|
// positive rows -> empty pixels on bottom
|
||||||
|
|
|
@ -125,6 +125,15 @@ namespace Kernel
|
||||||
return bytes_to_copy;
|
return bytes_to_copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t FramebufferDevice::get_pixel(uint32_t x, uint32_t y) const
|
||||||
|
{
|
||||||
|
ASSERT(x < m_width && y < m_height);
|
||||||
|
const auto* video_buffer_u8 = reinterpret_cast<const uint8_t*>(m_video_buffer->vaddr());
|
||||||
|
return (video_buffer_u8[(y * m_width + x) * (BANAN_FB_BPP / 8) + 0] << 0)
|
||||||
|
| (video_buffer_u8[(y * m_width + x) * (BANAN_FB_BPP / 8) + 1] << 8)
|
||||||
|
| (video_buffer_u8[(y * m_width + x) * (BANAN_FB_BPP / 8) + 2] << 16);
|
||||||
|
}
|
||||||
|
|
||||||
void FramebufferDevice::set_pixel(uint32_t x, uint32_t y, uint32_t rgb)
|
void FramebufferDevice::set_pixel(uint32_t x, uint32_t y, uint32_t rgb)
|
||||||
{
|
{
|
||||||
if (x >= m_width || y >= m_height)
|
if (x >= m_width || y >= m_height)
|
||||||
|
|
Loading…
Reference in New Issue