File: te_layout.h

package info (click to toggle)
scummvm 2.7.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 363,784 kB
  • sloc: cpp: 3,622,060; asm: 27,410; python: 10,528; sh: 10,241; xml: 6,752; java: 5,579; perl: 2,570; yacc: 1,635; javascript: 1,016; lex: 539; makefile: 398; ansic: 378; awk: 275; objc: 82; sed: 11; php: 1
file content (133 lines) | stat: -rw-r--r-- 4,010 bytes parent folder | download | duplicates (3)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#ifndef TETRAEDGE_TE_TE_LAYOUT_H
#define TETRAEDGE_TE_TE_LAYOUT_H

#include "tetraedge/te/te_3d_object2.h"
#include "tetraedge/te/te_i_layout.h"
#include "tetraedge/te/te_i_3d_object2.h"
#include "tetraedge/te/te_matrix4x4.h"
#include "tetraedge/te/te_quaternion.h"
#include "tetraedge/te/te_vector2s32.h"
#include "tetraedge/te/te_vector3f32.h"

namespace Tetraedge {

class TeLayout : public TeILayout, public Te3DObject2 {
public:
	TeLayout();

	virtual ~TeLayout();

	void addChild(Te3DObject2 *child) override;
	void addChildBefore(Te3DObject2 *newchild, const Te3DObject2 *ref) override;
	const TeVector3f32 &anchor();
	void disableAutoZ();
	void enableAutoZ();
	bool isAutoZEnabled();

	void draw() override;

	virtual bool isMouseIn(const TeVector2s32 &mouseloc);

	DrawMode mode();

	bool onChildSizeChanged();
	bool onParentSizeChanged();
	bool onParentWorldTransformationMatrixChanged();

	TeVector3f32 position() override;
	CoordinatesType positionType() const;
	float ratio() const;
	RatioMode ratioMode() const;
	void removeChild(Te3DObject2 *child) override;
	float safeAreaRatio() const;
	void setAnchor(const TeVector3f32 &anchor);
	virtual void setEditionColor(TeColor col) {};
	void setMode(DrawMode mode);
	void setParent(Te3DObject2 *parent) override;
	void setPosition(const TeVector3f32 &pos) override;
	void setPositionType(CoordinatesType newtype);
	void setRatio(float val);
	void setRatioMode(RatioMode mode);
	void setRotation(const TeQuaternion &rot) override;
	void setSafeAreaRatio(float ratio);
	void setScale(const TeVector3f32 &scale) override;
	void setSize(const TeVector3f32 &size) override;
	void setSizeType(CoordinatesType coordtype);
	void setZPosition(float zpos) override;

	virtual TeVector3f32 size() override;
	CoordinatesType sizeType() const;
	TeVector3f32 transformMousePosition(const TeVector2s32 &mousepos);

	virtual void updateMesh() {}; // override available for TeSpriteLayout
	void updatePosition();
	virtual void updateSize();
	void updateWorldMatrix();
	void updateZ() override;
	void updateZSize();

	TeVector3f32 userPosition() const;
	TeVector3f32 userSize();
	TeVector3f32 worldPosition() override;
	TeMatrix4x4 worldTransformationMatrix() override;
	bool worldVisible() override;
	float xSize() override;
	float ySize() override;
	float zSize() override;

protected:
	bool _sizeChanged;

private:
	TeVector3f32 _anchor;
	CoordinatesType _positionType;
	TeVector3f32 _userPosition;
	CoordinatesType _sizeType;
	TeVector3f32 _userSize;
	TeMatrix4x4 _worldMatrixCache;

	DrawMode _drawMode;
	bool _autoz;
	bool _positionChanged;
	bool _worldMatrixChanged;
	bool _needZSizeUpdate;
	bool _needZUpdate;
	bool _updatingZ;
	bool _updatingZSize;
	bool _updatingSize;
	bool _updatingPosition;
	bool _updatingWorldMatrix;
	float _ratio;
	RatioMode _ratioMode;
	float _safeAreaRatio;

	TeICallback0ParamPtr _onChildSizeChangedCallback;
	TeICallback0ParamPtr _onParentSizeChangedCallback;
	TeICallback0ParamPtr _onParentWorldTransformationMatrixChangedCallback;
	TeICallback0ParamPtr _onMainWindowChangedCallback;
};

} // end namespace Tetraedge

#endif // TETRAEDGE_TE_TE_LAYOUT_H