GCC Code Coverage Report
Directory: src/ Exec Total Coverage
File: src/gui/widgets/icon.h Lines: 1 1 100.0 %
Date: 2021-03-17 Branches: 0 0 0.0 %

Line Branch Exec Source
1
/*
2
 *  The ManaPlus Client
3
 *  Copyright (C) 2008-2009  The Mana World Development Team
4
 *  Copyright (C) 2009-2010  The Mana Developers
5
 *  Copyright (C) 2011-2019  The ManaPlus Developers
6
 *  Copyright (C) 2019-2021  Andrei Karas
7
 *
8
 *  This file is part of The ManaPlus Client.
9
 *
10
 *  This program is free software; you can redistribute it and/or modify
11
 *  it under the terms of the GNU General Public License as published by
12
 *  the Free Software Foundation; either version 2 of the License, or
13
 *  any later version.
14
 *
15
 *  This program is distributed in the hope that it will be useful,
16
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 *  GNU General Public License for more details.
19
 *
20
 *  You should have received a copy of the GNU General Public License
21
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
 */
23
24
#ifndef GUI_WIDGETS_ICON_H
25
#define GUI_WIDGETS_ICON_H
26
27
#include "gui/widgets/widget.h"
28
29
#include "enums/simpletypes/autorelease.h"
30
31
#include "localconsts.h"
32
33
class Image;
34
35
/**
36
 * An icon.
37
 *
38
 * \ingroup GUI
39
 */
40
class Icon final : public Widget
41
{
42
    public:
43
        /**
44
         * Constructor.
45
         */
46
        Icon(const Widget2 *const widget,
47
             const std::string &filename,
48
             const AutoRelease autoRelease);
49
50
        /**
51
         * Constructor, uses an existing Image.
52
         */
53
        Icon(const Widget2 *const widget,
54
             Image *const image,
55
             const AutoRelease autoRelease);
56
57
        A_DELETE_COPY(Icon)
58
59
        ~Icon() override final;
60
61
        /**
62
         * Gets the current Image.
63
         */
64
        Image *getImage() const noexcept2 A_WARN_UNUSED
65
2
        { return mImage; }
66
67
        /**
68
         * Sets the image to display.
69
         */
70
        void setImage(Image *const image);
71
72
        /**
73
         * Draws the Icon.
74
         */
75
        void draw(Graphics *const g) override final A_NONNULL(2);
76
77
        void safeDraw(Graphics *const g) override final A_NONNULL(2);
78
79
    private:
80
        Image *mImage;
81
        AutoRelease mAutoRelease;
82
};
83
84
#endif  // GUI_WIDGETS_ICON_H