summaryrefslogtreecommitdiff
path: root/src/interface/Component.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-05-15 17:13:17 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-05-15 17:13:17 (GMT)
commit136675b56a8a1862afb41ccee5c14e93e483b964 (patch)
tree8f679477c5e1c0984a5cb9c169e339c1ca0d6e0c /src/interface/Component.cpp
parent45563e97e813cfd21724ad1111e5de3e04679e1a (diff)
downloadpowder-136675b56a8a1862afb41ccee5c14e93e483b964.zip
powder-136675b56a8a1862afb41ccee5c14e93e483b964.tar.gz
Move style into Component
Diffstat (limited to 'src/interface/Component.cpp')
-rw-r--r--src/interface/Component.cpp73
1 files changed, 69 insertions, 4 deletions
diff --git a/src/interface/Component.cpp b/src/interface/Component.cpp
index 0efc2b1..aa9f8be 100644
--- a/src/interface/Component.cpp
+++ b/src/interface/Component.cpp
@@ -1,4 +1,5 @@
//#include "Platform.h"
+#include <iostream>
#include "interface/Component.h"
#include "interface/Engine.h"
#include "interface/Point.h"
@@ -13,18 +14,24 @@ Component::Component(Window* parent_state):
Position(Point(0,0)),
Size(Point(0,0)),
Locked(false),
- Visible(true)
+ Visible(true),
+ textPosition(0, 0),
+ iconPosition(0, 0),
+ drawn(false)
{
}
Component::Component(Point position, Point size):
- parentstate_(NULL),
+ parentstate_(0),
_parent(NULL),
Position(position),
Size(size),
Locked(false),
- Visible(true)
+ Visible(true),
+ textPosition(0, 0),
+ iconPosition(0, 0),
+ drawn(false)
{
}
@@ -35,9 +42,66 @@ Component::Component():
Position(Point(0,0)),
Size(Point(0,0)),
Locked(false),
- Visible(true)
+ Visible(true),
+ textPosition(0, 0),
+ iconPosition(0, 0),
+ drawn(false)
+{
+
+}
+
+void Component::Refresh()
+{
+ drawn = false;
+}
+
+void Component::TextPosition(std::string displayText)
{
+ textPosition = ui::Point(0, 0);
+
+ int textWidth, textHeight = 10;
+ Graphics::textsize((char*)displayText.c_str(), textWidth, textHeight);
+ textHeight-=3;
+ textWidth-=1;
+ if(Appearance.icon)
+ {
+ textWidth += 15;
+ }
+
+ int textAreaWidth = Size.X-(Appearance.Margin.Right+Appearance.Margin.Left);
+ int textAreaHeight = Size.Y-(Appearance.Margin.Top+Appearance.Margin.Bottom);
+
+ switch(Appearance.VerticalAlign)
+ {
+ case ui::Appearance::AlignTop:
+ textPosition.Y = Appearance.Margin.Top;
+ break;
+ case ui::Appearance::AlignMiddle:
+ textPosition.Y = Appearance.Margin.Top+((textAreaHeight-textHeight)/2);
+ break;
+ case ui::Appearance::AlignBottom:
+ textPosition.Y = Size.Y-(textHeight+Appearance.Margin.Bottom);
+ break;
+ }
+
+ switch(Appearance.HorizontalAlign)
+ {
+ case ui::Appearance::AlignLeft:
+ textPosition.X = Appearance.Margin.Left;
+ break;
+ case ui::Appearance::AlignCentre:
+ textPosition.X = Appearance.Margin.Left+((textAreaWidth-textWidth)/2);
+ break;
+ case ui::Appearance::AlignRight:
+ textPosition.X = Size.X-(textWidth+Appearance.Margin.Right);
+ break;
+ }
+ if(Appearance.icon)
+ {
+ iconPosition = textPosition-ui::Point(0, 1);
+ textPosition.X += 15;
+ }
}
bool Component::IsFocused() const
@@ -88,6 +152,7 @@ void Component::SetParent(Panel* new_parent)
void Component::Draw(const Point& screenPos)
{
+ drawn = true;
}
void Component::Tick(float dt)