--- a/src/gfx.h Sun Mar 04 04:25:36 2007 +0000
+++ b/src/gfx.h Sun Mar 04 12:50:21 2007 +0000
@@ -278,7 +278,9 @@
COLOUR_ORANGE,
COLOUR_BROWN,
COLOUR_GREY,
- COLOUR_WHITE
+ COLOUR_WHITE,
+
+ COLOUR_NONE = 0x100,
};
/**
--- a/src/intro_gui.cpp Sun Mar 04 04:25:36 2007 +0000
+++ b/src/intro_gui.cpp Sun Mar 04 12:50:21 2007 +0000
@@ -163,6 +163,7 @@
template <> struct WindowT<WC_TEST1> : public BaseWindow {
+ gui::WidgetPtr m_label1;
gui::WidgetPtr m_button1;
WindowT()
@@ -177,7 +178,12 @@
SetSize(Point16(336, 195));
/* add controls */
- m_button1 = new gui::TextButton(this, 22, gui::FF_NONE, COLOUR_YELLOW, Rect16(104, 175, 231, 186), STR_0305_QUIT_OPENTTD, STR_0304_QUIT);
+ m_label1 = new gui::Label(this, 22, gui::FF_NONE, Rect16(104, 155, 231, 166), STR_0305_QUIT_OPENTTD, STR_0305_QUIT_OPENTTD, COLOUR_BROWN);
+ m_label1->SetAnchors(PIN_RIGHT | PIN_BOTTOM);
+ AddWidget(m_label1);
+
+ /* add controls */
+ m_button1 = new gui::TextButton(this, 23, gui::FF_NONE, COLOUR_YELLOW, Rect16(104, 175, 231, 186), STR_0305_QUIT_OPENTTD, STR_0304_QUIT);
m_button1->SetAnchors(PIN_RIGHT | PIN_BOTTOM);
AddWidget(m_button1);
--- a/src/widget/widget.h Sun Mar 04 04:25:36 2007 +0000
+++ b/src/widget/widget.h Sun Mar 04 12:50:21 2007 +0000
@@ -22,6 +22,7 @@
FR_BORDERONLY = 0x10, ///< Draw border only, no background
FR_LOWERED = 0x20, ///< If set the frame is lowered and the background color brighter (ie. buttons when pressed)
FR_DARKENED = 0x40, ///< If set the background is darker, allows for lowered frames with normal background color when used with FR_LOWERED (ie. dropdown boxes)
+ FR_BG_ONLY = 0x80, ///< If set only the background is drawn without any frame (labels and such)
};
DECLARE_ENUM_AS_BIT_SET(FrameFlags);
@@ -45,6 +46,7 @@
FF_NO_STICKY_BOX = (1 << 2),
FF_NO_RESIZE_BOX = (1 << 3),
FF_UNMOVABLE = (1 << 4),
+ FF_TRANSPARENT = (1 << 5),
};
DECLARE_ENUM_AS_BIT_SET(FeatureFlags);
@@ -114,6 +116,9 @@
void SetSize(const Point16 &pt);
void SetRect(const Rect16 &rect);
+ byte GetColor() const;
+ void SetColor(byte val);
+
void SetAnchors(Anchors a);
WidgetId GetId() const;
@@ -218,6 +223,40 @@
/*virtual*/ void OnResize(EvtResize &ev);
};
+struct Label : public Widget {
+ typedef Widget super;
+
+protected:
+ StringID m_text;
+
+public:
+ Label()
+ : Widget()
+ {}
+
+ //Label(CompositeWidget *container, WidgetId id, FeatureFlags feature_flags, const Rect16 &rect, StringID text)
+ // : Widget(container, id, feature_flags, container->GetColor(), rect, 0x0)
+ // , m_text(text)
+ //{}
+
+ //Label(CompositeWidget *container, WidgetId id, FeatureFlags feature_flags, const Rect16 &rect, StringID text, StringID tooltip)
+ // : Widget(container, id, feature_flags, container->GetColor(), rect, tooltip)
+ // , m_text(text)
+ //{}
+
+ Label(CompositeWidget *container, WidgetId id, FeatureFlags feature_flags, const Rect16 &rect, StringID text, StringID tooltip = 0, int color = COLOUR_NONE)
+ : Widget(container, id, feature_flags, (byte)color, rect, tooltip)
+ , m_text(text)
+ {
+ /* make the label transparent (no background) if color not provided */
+ if (color == COLOUR_NONE) m_feature_flags |= FF_TRANSPARENT;
+ }
+
+ /*virtual*/ void DrawBackground(EvtPaint &ev);
+
+ /*virtual*/ void OnPaint(EvtPaint &ev);
+};
+
struct Button : public Widget {
typedef Widget super;
@@ -352,17 +391,6 @@
};
-
-
-
-
-
-
-
-
-
-
}; // namespace gui
-
#endif /* WIDGET_H */
--- a/src/widget/widget_base.cpp Sun Mar 04 04:25:36 2007 +0000
+++ b/src/widget/widget_base.cpp Sun Mar 04 12:50:21 2007 +0000
@@ -74,7 +74,6 @@
return m_rect;
}
-
void Widget::SetLeft(int16 val)
{
m_rect.SetRight(Right() + val - Left());
@@ -142,6 +141,16 @@
OnResize(evt_resize);
}
+byte Widget::GetColor() const
+{
+ return m_color;
+}
+
+void Widget::SetColor(byte val)
+{
+ m_color = val;
+}
+
void Widget::SetAnchors(Anchors a)
{
m_anchors = a;
@@ -177,6 +186,8 @@
if (flags & FR_TRANSPARENT) {
GfxFillRect(left, top, right, bottom, PALETTE_TO_TRANSPARENT | (1 << USE_COLORTABLE));
+ } else if (flags & FR_BG_ONLY) {
+ GfxFillRect(left, top, right, bottom, medium_dark);
} else {
uint interior;
--- a/src/widget/widget_label.cpp Sun Mar 04 04:25:36 2007 +0000
+++ b/src/widget/widget_label.cpp Sun Mar 04 12:50:21 2007 +0000
@@ -17,4 +17,22 @@
#include "../helpers.hpp"
#include "window_events.hpp"
+namespace gui {
+/*virtual*/ void Label::DrawBackground(EvtPaint &ev)
+{
+ if ((m_feature_flags & FF_TRANSPARENT) == FR_NONE) {
+ DrawFrameRect(m_color, FR_BG_ONLY);
+ }
+}
+
+/*virtual*/ void Label::OnPaint(EvtPaint &ev)
+{
+ DrawBackground(ev);
+ Point center = CenterPt();
+ DrawStringCentered(center.x, center.y - 5, m_text, 0);
+ ev.SetHandled();
+}
+
+}; // namespace gui
+