mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-07-23 22:46:16 -04:00
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "RawText.hpp"
|
|
#include <DrawCommand.hpp>
|
|
#include <TextConstants.hpp>
|
|
|
|
namespace gui
|
|
{
|
|
RawText::RawText(UTF8 text, RawFont *font, Color color) : Item()
|
|
{
|
|
this->text = text;
|
|
this->font = font;
|
|
this->color = color;
|
|
|
|
widgetArea.w = this->font->getPixelWidth(text);
|
|
widgetArea.h = this->font->info.line_height;
|
|
}
|
|
|
|
UTF8 RawText::stripNewlineToDraw()
|
|
{
|
|
auto textToDraw = text;
|
|
if (textToDraw.length() > 0 && textToDraw[textToDraw.length() - 1] == text::newline) {
|
|
textToDraw.removeChar(textToDraw.length() - 1);
|
|
}
|
|
|
|
return textToDraw;
|
|
}
|
|
|
|
void RawText::buildDrawListImplementation(std::list<Command> &commands)
|
|
{
|
|
if (font) {
|
|
auto cmd = std::make_unique<DrawText>();
|
|
|
|
cmd->str = stripNewlineToDraw();
|
|
cmd->fontID = font->id;
|
|
cmd->color = color;
|
|
|
|
cmd->origin = {drawArea.x, drawArea.y};
|
|
cmd->width = drawArea.w;
|
|
cmd->height = drawArea.h;
|
|
cmd->textOrigin = {0, static_cast<Position>(this->font->info.base)};
|
|
cmd->textHeight = widgetArea.h;
|
|
|
|
cmd->areaX = widgetArea.x;
|
|
cmd->areaY = widgetArea.y;
|
|
cmd->areaW = widgetArea.w;
|
|
cmd->areaH = widgetArea.h;
|
|
|
|
commands.emplace_back(std::move(cmd));
|
|
}
|
|
}
|
|
|
|
} // namespace gui
|