ScummVM API documentation
element.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22/*
23 * This code is based on the CRAB engine
24 *
25 * Copyright (c) Arvind Raja Yadav
26 *
27 * Licensed under MIT
28 *
29 */
30
31#ifndef CRAB_ELEMENT_H
32#define CRAB_ELEMENT_H
33
34#include "crab/image/ImageManager.h"
35#include "crab/Rectangle.h"
36#include "crab/vectors.h"
37
38namespace Crab {
39
40namespace pyrodactyl {
41namespace ui {
42class Element : public Rect {
43 // The position loaded directly from xml
44 Vector2i _raw;
45
46 // Which side of the screen is this object aligned to?
47 struct {
48 Align x, y;
49 } _align;
50
51 void basicload(rapidxml::xml_node<char> *node, const bool &echo = true);
52
53public:
54 Element() {
55 _align.x = ALIGN_LEFT;
56 _align.y = ALIGN_LEFT;
57 }
58 ~Element() {}
59
60 // Initialize an element without loading it from file
61 void init(const int &x, const int &y, const Align &alignX, const Align &alignY,
62 const ImageKey image = 0, const int &w = 0, const int &h = 0);
63
64 // Initialize an element from another
65 void init(const Element &e, ImageKey img = 0, const int &xOffset = 0, const int &yOffset = 0) {
66 _raw.x = e._raw.x + xOffset;
67 _raw.y = e._raw.y + yOffset;
68 init(e.x + xOffset, e.y + yOffset, e._align.x, e._align.y, img, e.w, e.h);
69 }
70
71 // The parent is the object inside which the element exists
72 void load(rapidxml::xml_node<char> *node, ImageKey img, const bool &echo = true);
73
74 // The parent is the object inside which the element exists
75 void load(rapidxml::xml_node<char> *node, Rect *parent = nullptr, const bool &echo = true);
76
77 void setUI(Rect *parent = nullptr);
78};
79} // End of namespace ui
80} // End of namespace pyrodactyl
81
82} // End of namespace Crab
83
84#endif // CRAB_ELEMENT_H
Definition: element.h:42
Definition: Rectangle.h:42