mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-24 13:58:00 -05:00
57 lines
1.5 KiB
C++
57 lines
1.5 KiB
C++
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#pragma once
|
|
|
|
#include "Color.hpp"
|
|
#include "TextConstants.hpp"
|
|
#include "utf8/UTF8.hpp"
|
|
#include <TextFormat.hpp>
|
|
#include <memory>
|
|
|
|
namespace gui
|
|
{
|
|
class RawFont;
|
|
/// single text block. It might end with formatting, or with newline.
|
|
/// it is responsible for:
|
|
/// * storing part of text
|
|
/// * storing properties of stored text
|
|
class TextBlock
|
|
{
|
|
std::unique_ptr<TextFormat> format = nullptr;
|
|
UTF8 text;
|
|
|
|
public:
|
|
enum class End
|
|
{
|
|
Newline,
|
|
None
|
|
};
|
|
|
|
private:
|
|
End end = End::None;
|
|
|
|
public:
|
|
TextBlock(const UTF8 text, const RawFont *font, End eol = End::None);
|
|
TextBlock(const UTF8 text, std::unique_ptr<TextFormat> format);
|
|
TextBlock(const TextBlock &);
|
|
|
|
const UTF8 &getText() const;
|
|
UTF8 getText(uint32_t start_position) const;
|
|
auto getFormat() const -> const TextFormat *;
|
|
void setText(const UTF8 text);
|
|
void insertChar(const uint32_t value, const uint32_t pos);
|
|
void removeChar(const uint32_t pos);
|
|
|
|
uint32_t getWidth() const;
|
|
unsigned int length() const;
|
|
auto getEnd() const -> End;
|
|
void setEnd(End end);
|
|
|
|
void addChar(uint32_t utf_val, unsigned int pos);
|
|
bool isEmpty() const;
|
|
|
|
TextBlock &operator=(const TextBlock &);
|
|
};
|
|
} // namespace gui
|