~aleteoryx/muditaos

ref: 7fbaf735ed99f5b0d26adb686cfa6ed2bb4267d5 muditaos/module-gui/gui/widgets/RawText.cpp -rw-r--r-- 1.5 KiB
7fbaf735 — Przemyslaw Brudny [EGD-7813] Option Window titles localizations fix 4 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// 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