Serenity Operating System
at master 45 lines 1.3 kB view raw
1/* 2 * Copyright (c) 2022, the SerenityOS developers. 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <Kernel/Forward.h> 10#include <Kernel/Graphics/Console/GenericFramebufferConsole.h> 11 12namespace Kernel::Graphics { 13 14class BootFramebufferConsole : public GenericFramebufferConsoleImpl { 15public: 16 virtual void clear(size_t x, size_t y, size_t length) override; 17 virtual void write(size_t x, size_t y, char ch, Color background, Color foreground, bool critical = false) override; 18 using GenericFramebufferConsoleImpl::write; 19 20 virtual void enable() override; 21 virtual void disable() override; 22 23 virtual void flush(size_t, size_t, size_t, size_t) override { } 24 virtual void set_resolution(size_t, size_t, size_t) override { } 25 26 u8* unsafe_framebuffer_data() { return m_framebuffer_data; } 27 28 BootFramebufferConsole(PhysicalAddress framebuffer_addr, size_t width, size_t height, size_t pitch); 29 30private: 31 virtual void set_cursor(size_t x, size_t y) override; 32 virtual void hide_cursor() override; 33 virtual void show_cursor() override; 34 35protected: 36 virtual void clear_glyph(size_t x, size_t y) override; 37 38 virtual u8* framebuffer_data() override; 39 40 OwnPtr<Memory::Region> m_framebuffer; 41 u8* m_framebuffer_data {}; 42 mutable Spinlock<LockRank::None> m_lock {}; 43}; 44 45}