18#ifndef LIBTEEUI_LABEL_H_
19#define LIBTEEUI_LABEL_H_
37 template <
size_t size>
45 constexpr operator
bool()
const {
return data_ !=
nullptr; }
116 template <
typename Context>
120 context = Derived::label_font_size,
context = Derived::label_line_height,
121 {&Derived::label_text[0], &Derived::label_text[
sizeof(Derived::label_text) - 1]},
122 Derived::label_horizontal_text_alignment, Derived::label_vertical_text_alignment,
123 context = Derived::label_text_color, getFont(Derived::label_font), Derived::text_id) {
137#define FontSize(fs) static const constexpr auto label_font_size = fs
139#define DefaultText(text) static const constexpr char label_text[] = text
141#define LineHeight(height) static const constexpr auto label_line_height = height
143#define NumberOfLines(lines) static const constexpr auto label_number_of_lines = lines
145#define HeightFromLines (label_line_height * pxs(label_number_of_lines))
147#define HorizontalTextAlignment(horizontalAligment) \
148 static const constexpr Alignment label_horizontal_text_alignment = horizontalAligment;
150#define LeftJustified HorizontalTextAlignment(Alignment::LEFT)
151#define CenterJustified HorizontalTextAlignment(Alignment::CENTER)
152#define RightJustified HorizontalTextAlignment(Alignment::RIGHT)
154#define VerticalTextAlignment(verticalAligment) \
155 static const constexpr Alignment label_vertical_text_alignment = verticalAligment;
157#define VerticallyTop VerticalTextAlignment(Alignment::TOP)
158#define VerticallyCentered VerticalTextAlignment(Alignment::CENTER)
160#define TextColor(color) static const constexpr auto label_text_color = color
162#define FONT(name) TEEUI_FONT_##name()
164#define DECLARE_FONT_BUFFER(name, buffer, ...) \
165 struct TEEUI_FONT_##name {}; \
166 inline FontBuffer getFont(TEEUI_FONT_##name) { return FontBuffer(buffer, ##__VA_ARGS__); }
168#define Font(fontbuffer) static const constexpr auto label_font = fontbuffer
170#define TextID(tid) static const constexpr uint64_t text_id = tid
constexpr FontBuffer()
Definition: label.h:35
constexpr FontBuffer(const FontBuffer &) noexcept=default
constexpr FontBuffer(const uint8_t(&data)[size]) noexcept
Definition: label.h:38
size_t size() const
Definition: label.h:48
const uint8_t * data_
Definition: label.h:31
size_t size_
Definition: label.h:32
const uint8_t * data() const
Definition: label.h:47
constexpr FontBuffer(const uint8_t *data, size_t size) noexcept
Definition: label.h:36
constexpr FontBuffer(FontBuffer &&) noexcept=default
LabelImpl()
Definition: label.h:68
optional< CallbackEvent > getCB()
Definition: label.h:87
pxs fontSize() const
Definition: label.h:77
pxs fontSize_
Definition: label.h:91
text_t text() const
Definition: label.h:82
void setText(text_t text)
Definition: label.h:79
void setCB(CallbackEvent cbEvent)
Definition: label.h:86
Error draw(const PixelDrawer &drawPixel, const Box< pxs > &bounds, LineInfo *lineInfo)
Definition: label.cpp:25
uint64_t textId() const
Definition: label.h:83
FontBuffer font_
Definition: label.h:97
Alignment verticalTextAlignment_
Definition: label.h:95
optional< CallbackEvent > cbEvent_
Definition: label.h:99
void setTextColor(Color color)
Definition: label.h:80
pxs lineHeight_
Definition: label.h:92
LabelImpl(pxs fontSize, pxs lineHeight, text_t text, Alignment horizontal, Alignment verticalJustified, Color textColor, FontBuffer font, uint64_t textId)
Definition: label.h:71
Alignment horizontalTextAlignment_
Definition: label.h:94
Error hit(const Event &event, const Box< pxs > &bounds)
Definition: label.cpp:155
text_t text_
Definition: label.h:93
Color textColor_
Definition: label.h:96
uint64_t textId_
Definition: label.h:98
static const constexpr Alignment label_horizontal_text_alignment
Definition: label.h:109
static const constexpr uint64_t text_id
Definition: label.h:113
static const constexpr int label_font
Definition: label.h:112
static const constexpr Color label_text_color
Definition: label.h:111
Label(const Context &context)
Definition: label.h:117
static const constexpr Alignment label_vertical_text_alignment
Definition: label.h:110
Error hit(const Event &event)
Definition: label.h:132
Error draw(const PixelDrawer &drawPixel)
Definition: label.h:126
Event event
Definition: kernel_log_server.cc:56
Alignment
Definition: label.h:28
uint32_t Color
Definition: utils.h:594
text_t lineText
Definition: label.h:58
Point< pxs > lineStart
Definition: label.h:57
size_t size_
Definition: label.h:60
info_t * end()
Definition: label.h:63
info_t * begin()
Definition: label.h:62
const info_t * end() const
Definition: label.h:65
const info_t * begin() const
Definition: label.h:64
info_t * info_
Definition: label.h:61
Box< pxs > bounds_
Definition: utils.h:895