diff --git a/include/ftxui/screen/image.hpp b/include/ftxui/screen/image.hpp index 9bcb95b3..d81c723a 100644 --- a/include/ftxui/screen/image.hpp +++ b/include/ftxui/screen/image.hpp @@ -9,48 +9,11 @@ #include // for string, basic_string, allocator #include // for vector -#include "ftxui/screen/color.hpp" // for Color, Color::Default -#include "ftxui/screen/box.hpp" // for Box +#include "ftxui/screen/box.hpp" // for Box +#include "ftxui/screen/pixel.hpp" // for Pixel namespace ftxui { -/// @brief A unicode character and its associated style. -/// @ingroup screen -struct Pixel { - Pixel() - : blink(false), - bold(false), - dim(false), - inverted(false), - underlined(false), - underlined_double(false), - strikethrough(false), - automerge(false) {} - - // A bit field representing the style: - bool blink : 1; - bool bold : 1; - bool dim : 1; - bool inverted : 1; - bool underlined : 1; - bool underlined_double : 1; - bool strikethrough : 1; - bool automerge : 1; - - // The hyperlink associated with the pixel. - // 0 is the default value, meaning no hyperlink. - // It's an index for accessing Screen meta data - uint8_t hyperlink = 0; - - // The graphemes stored into the pixel. To support combining characters, - // like: a?, this can potentially contain multiple codepoints. - std::string character = " "; - - // Colors: - Color background_color = Color::Default; - Color foreground_color = Color::Default; -}; - /// @brief A rectangular grid of Pixel. /// @ingroup screen class Image { diff --git a/include/ftxui/screen/pixel.hpp b/include/ftxui/screen/pixel.hpp new file mode 100644 index 00000000..0a58a389 --- /dev/null +++ b/include/ftxui/screen/pixel.hpp @@ -0,0 +1,48 @@ +// Copyright 2024 Arthur Sonzogni. All rights reserved. +// Use of this source code is governed by the MIT license that can be found in +// the LICENSE file. + +#include // for uint8_t +#include // for string, basic_string, allocator +#include "ftxui/screen/color.hpp" // for Color, Color::Default + +namespace ftxui { + +/// @brief A Unicode character and its associated style. +/// @ingroup screen +struct Pixel { + Pixel() + : blink(false), + bold(false), + dim(false), + inverted(false), + underlined(false), + underlined_double(false), + strikethrough(false), + automerge(false) {} + + // A bit field representing the style: + bool blink : 1; + bool bold : 1; + bool dim : 1; + bool inverted : 1; + bool underlined : 1; + bool underlined_double : 1; + bool strikethrough : 1; + bool automerge : 1; + + // The hyperlink associated with the pixel. + // 0 is the default value, meaning no hyperlink. + // It's an index for accessing Screen meta data + uint8_t hyperlink = 0; + + // The graphemes stored into the pixel. To support combining characters, + // like: a?, this can potentially contain multiple codepoints. + std::string character = " "; + + // Colors: + Color background_color = Color::Default; + Color foreground_color = Color::Default; +}; + +} // namespace ftxui