mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-23 16:10:20 +00:00
20743e8aed
As we removed the support of VBE modesetting that was done by GRUB early on boot, we need to determine if we can modeset the resolution with our drivers, and if not, we should enable text mode and ensure that SystemServer knows about it too. Also, SystemServer should first check if there's a framebuffer device node, which is an indication that text mode was not even if it was requested. Then, if it doesn't find it, it should check what boot_mode argument the user specified (in case it's self-test). This way if we try to use bochs-display device (which is not VGA compatible) and request a text mode, it will not honor the request and will continue with graphical mode. Also try to print critical messages with mininum memory allocations possible. In LibVT, We make the implementation flexible for kernel-specific methods that are implemented in ConsoleImpl class.
65 lines
1.6 KiB
C++
65 lines
1.6 KiB
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/Noncopyable.h>
|
|
#include <AK/String.h>
|
|
#include <AK/Vector.h>
|
|
#include <LibVT/XtermColors.h>
|
|
|
|
namespace VT {
|
|
|
|
struct Attribute {
|
|
Attribute() { reset(); }
|
|
|
|
static const u32 default_foreground_color = xterm_colors[7];
|
|
static const u32 default_background_color = xterm_colors[0];
|
|
|
|
void reset()
|
|
{
|
|
foreground_color = default_foreground_color;
|
|
background_color = default_background_color;
|
|
flags = Flags::NoAttributes;
|
|
}
|
|
u32 foreground_color {};
|
|
u32 background_color {};
|
|
|
|
u32 effective_background_color() const { return flags & Negative ? foreground_color : background_color; }
|
|
u32 effective_foreground_color() const { return flags & Negative ? background_color : foreground_color; }
|
|
|
|
#ifndef KERNEL
|
|
String href;
|
|
String href_id;
|
|
#endif
|
|
|
|
enum Flags : u8 {
|
|
NoAttributes = 0x00,
|
|
Bold = 0x01,
|
|
Italic = 0x02,
|
|
Underline = 0x04,
|
|
Negative = 0x08,
|
|
Blink = 0x10,
|
|
Touched = 0x20,
|
|
};
|
|
|
|
bool is_untouched() const { return !(flags & Touched); }
|
|
|
|
// TODO: it would be really nice if we had a helper for enums that
|
|
// exposed bit ops for class enums...
|
|
u8 flags = Flags::NoAttributes;
|
|
|
|
bool operator==(const Attribute& other) const
|
|
{
|
|
return foreground_color == other.foreground_color && background_color == other.background_color && flags == other.flags;
|
|
}
|
|
bool operator!=(const Attribute& other) const
|
|
{
|
|
return !(*this == other);
|
|
}
|
|
};
|
|
|
|
}
|