-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStatusBar.cpp
66 lines (55 loc) · 1.81 KB
/
StatusBar.cpp
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
//StatusBar.cpp
#include "StatusBar.h"
namespace sdlGUI {
float StatusBar::GetStatus() {
return Status;
}
void StatusBar::Render(float Interpolation) {
if (IsShown(true) or IsMoving(Axis::XY, true)) {
Scaled = true;
float TargetX = X(Interpolation, Reference::Origin);
float TargetY = Y(Interpolation, Reference::Origin);
float TargetWidth = Width();
float TargetHeight = Height();
float ClipWidth = 1, ClipHeight = 1;
float ClipX = 0, ClipY = 0;
if (Orientation == Orientation::Horizontal) {
ClipWidth = Status;
if (Direction == -1) TargetX += Width()-Status*Width();
} else if (Orientation == Orientation::Vertical) {
ClipY = 1-Status;
if (Direction == 1) {
//TargetY += Height();
//TargetHeight *= -1;
}
}
Renderable.RenderAsTexture(TargetX, TargetY, TargetWidth, TargetHeight, ClipWidth, ClipHeight, ClipX, ClipY);
Scaled = false;
}
}
void StatusBar::SetDirection(int Direction) {
this->Direction = Direction;
}
void StatusBar::SetOrientation(int Orientation) {
this->Orientation = Orientation;
}
void StatusBar::SetStatus(float Status) {
if (Status < 0) {
this->Status = 0;
} else if (Status > 1) {
this->Status = 1;
} else {
this->Status = Status;
}
}
StatusBar::StatusBar() {
Next = Previous = NULL;
Status = 0;
Direction = 1; Orientation = Orientation::Horizontal;
}
StatusBar::~StatusBar() {
Next = Previous = NULL;
Status = 0;
Direction = Orientation = 0;
}
}