~aleteoryx/muditaos

ref: af960b6fac2fdd9e42072c4632ca769fce76f95f muditaos/module-gui/gui/widgets/Image.cpp -rw-r--r-- 1.9 KiB
af960b6f — Lucjan Bryndza [EGD-5146] Add read LFS block size from part 5 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "../core/DrawCommand.hpp"
#include "../core/PixMap.hpp"
#include "BoundingBox.hpp"
#include "Image.hpp"

#include "../core/ImageManager.hpp"
#include "utf8/UTF8.hpp"

namespace gui
{

    Image::Image() : Rect(), imageMap{nullptr}
    {
        type = ItemType::IMAGE;
    }

    Image::Image(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h, const UTF8 imageName)
        : Rect(parent, x, y, w, h), imageMap{nullptr}
    {
        type = ItemType::IMAGE;
        set(imageName);
        setPosition(x, y);
    }

    Image::Image(const UTF8 &imageName) : imageMap{nullptr}
    {
        type = ItemType::IMAGE;
        set(imageName);
    }

    bool Image::set(int id)
    {
        imageMap = ImageManager::getInstance().getImageMap(id);
        auto w   = imageMap->getWidth();
        auto h   = imageMap->getHeight();
        setMinimumWidth(w);
        setMinimumHeight(h);
        setArea(BoundingBox(getX(), getY(), w, h));
        return true;
    }

    void Image::set(const UTF8 &name)
    {
        if (name.length()) {
            int id = ImageManager::getInstance().getImageMapID(name.c_str());
            set(id);
        }
    }

    void Image::buildDrawListImplementation(std::list<Command> &commands)
    {
        auto img = std::make_unique<CommandImage>();
        // image
        img->x = drawArea.x;
        img->y = drawArea.y;
        img->w = drawArea.w;
        img->h = drawArea.h;
        // cmd part
        img->areaX = img->x;
        img->areaY = img->y;
        img->areaW = img->w;
        img->areaH = img->h;

        img->imageID = this->imageMap->getID();

        commands.emplace_back(std::move(img));
    }

    void Image::accept(GuiVisitor &visitor)
    {
        visitor.visit(*this);
    }
} /* namespace gui */