add label color setting
This commit is contained in:
parent
76a8f5abac
commit
67faa460e7
|
|
@ -6,7 +6,10 @@
|
|||
INLINE GuiLabel::GuiLabel(void) : _type(GuiLabel::NONE), _scale(1.),
|
||||
_pos(0., 0., 0.), _tex((Texture*)0L),
|
||||
_arc((RenderRelation*)0L),
|
||||
_internal((RenderRelation*)0L) {
|
||||
_internal((RenderRelation*)0L),
|
||||
_foreground(1., 1., 1., 1.),
|
||||
_background(0., 0., 0., 0.),
|
||||
_have_background(false) {
|
||||
}
|
||||
|
||||
INLINE Node* GuiLabel::get_geometry(void) const {
|
||||
|
|
@ -26,6 +29,10 @@ INLINE void GuiLabel::set_scale(float f) {
|
|||
recompute_transform();
|
||||
}
|
||||
|
||||
INLINE void GuiLabel::set_pos(float x, float y, float z) {
|
||||
this->set_pos(LVector3f(x, y, z));
|
||||
}
|
||||
|
||||
INLINE void GuiLabel::set_pos(const LVector3f& p) {
|
||||
_pos = p;
|
||||
recompute_transform();
|
||||
|
|
@ -38,3 +45,21 @@ INLINE float GuiLabel::get_scale(void) const {
|
|||
INLINE LVector3f GuiLabel::get_pos(void) const {
|
||||
return _pos;
|
||||
}
|
||||
|
||||
INLINE void GuiLabel::set_foreground_color(float r, float g, float b,
|
||||
float a) {
|
||||
this->set_foreground_color(Colorf(r, g, b, a));
|
||||
}
|
||||
|
||||
INLINE void GuiLabel::set_background_color(float r, float g, float b,
|
||||
float a) {
|
||||
this->set_background_color(Colorf(r, g, b, a));
|
||||
}
|
||||
|
||||
INLINE Colorf GuiLabel::get_foreground_color(void) const {
|
||||
return _foreground;
|
||||
}
|
||||
|
||||
INLINE Colorf GuiLabel::get_background_color(void) const {
|
||||
return _background;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include <textNode.h>
|
||||
#include <transformTransition.h>
|
||||
#include <colorTransition.h>
|
||||
|
||||
void GuiLabel::recompute_transform(void) {
|
||||
switch (_type) {
|
||||
|
|
@ -29,6 +30,39 @@ void GuiLabel::recompute_transform(void) {
|
|||
gui_cat->warning() << "recompute_transform on invalid label type ("
|
||||
<< _type << ")" << endl;
|
||||
}
|
||||
set_properties();
|
||||
}
|
||||
|
||||
void GuiLabel::set_properties(void) {
|
||||
switch (_type) {
|
||||
case SIMPLE_TEXT:
|
||||
{
|
||||
TextNode* n = DCAST(TextNode, _geom);
|
||||
n->set_text_color(_foreground);
|
||||
if (!_have_background) {
|
||||
n->clear_card();
|
||||
if (gui_cat->is_debug())
|
||||
gui_cat->debug() << "cleared card" << endl;
|
||||
} else {
|
||||
n->set_card_color(_background);
|
||||
n->set_card_as_margin(0., 0., 0., 0.);
|
||||
if (gui_cat->is_debug()) {
|
||||
gui_cat->debug() << "set card color" << endl;
|
||||
if (n->has_card())
|
||||
gui_cat->debug() << ".. and a card was made" << endl;
|
||||
else
|
||||
gui_cat->debug() << ".. but there is no card" << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SIMPLE_TEXTURE:
|
||||
_internal->set_transition(new ColorTransition(_foreground));
|
||||
break;
|
||||
default:
|
||||
gui_cat->warning() << "recompute_transform on invalid label type ("
|
||||
<< _type << ")" << endl;
|
||||
}
|
||||
}
|
||||
|
||||
GuiLabel::~GuiLabel(void) {
|
||||
|
|
@ -98,7 +132,7 @@ GuiLabel* GuiLabel::make_simple_text_label(const string& text, Node* font) {
|
|||
ret->_geom = n;
|
||||
n->set_font(font);
|
||||
n->set_align(TM_ALIGN_CENTER);
|
||||
n->set_text_color(1., 1., 1., 1.);
|
||||
n->set_text_color(ret->get_foreground_color());
|
||||
n->set_text(text);
|
||||
ret->set_scale(1.);
|
||||
ret->set_pos(LVector3f(0., 0., 0.));
|
||||
|
|
@ -158,3 +192,22 @@ void GuiLabel::get_extents(float& l, float& r, float& b, float& t) {
|
|||
r = t = 1.;
|
||||
}
|
||||
}
|
||||
|
||||
void GuiLabel::set_foreground_color(const Colorf& color) {
|
||||
_foreground = color;
|
||||
set_properties();
|
||||
}
|
||||
|
||||
void GuiLabel::set_background_color(const Colorf& color) {
|
||||
static Colorf zero(0., 0., 0., 0.);
|
||||
|
||||
_background = color;
|
||||
_have_background = (color != zero);
|
||||
if (gui_cat->is_debug()) {
|
||||
if (_have_background)
|
||||
gui_cat->debug() << "setting background" << endl;
|
||||
else
|
||||
gui_cat->debug() << "setting no background" << endl;
|
||||
}
|
||||
set_properties();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,9 @@ private:
|
|||
|
||||
float _scale;
|
||||
LVector3f _pos;
|
||||
Colorf _foreground;
|
||||
bool _have_background;
|
||||
Colorf _background;
|
||||
|
||||
INLINE Node* get_geometry(void) const;
|
||||
INLINE void set_arc(RenderRelation*);
|
||||
|
|
@ -37,6 +40,7 @@ private:
|
|||
friend GuiManager;
|
||||
|
||||
void recompute_transform(void);
|
||||
void set_properties(void);
|
||||
public:
|
||||
INLINE GuiLabel(void);
|
||||
virtual ~GuiLabel(void);
|
||||
|
|
@ -47,10 +51,19 @@ public:
|
|||
void get_extents(float&, float&, float&, float&);
|
||||
|
||||
INLINE void set_scale(float);
|
||||
INLINE void set_pos(float, float, float);
|
||||
INLINE void set_pos(const LVector3f&);
|
||||
|
||||
INLINE float get_scale(void) const;
|
||||
INLINE LVector3f get_pos(void) const;
|
||||
|
||||
INLINE void set_foreground_color(float, float, float, float);
|
||||
void set_foreground_color(const Colorf&);
|
||||
INLINE void set_background_color(float, float, float, float);
|
||||
void set_background_color(const Colorf&);
|
||||
|
||||
INLINE Colorf get_foreground_color(void) const;
|
||||
INLINE Colorf get_background_color(void) const;
|
||||
};
|
||||
|
||||
#include "guiLabel.I"
|
||||
|
|
|
|||
|
|
@ -65,98 +65,102 @@ static void setup_gui(void) {
|
|||
// r1->set_pos(LVector3f::rfu(0.25, 0., 0.25));
|
||||
// r1->manage(mgr, event_handler);
|
||||
// test 3
|
||||
// GuiLabel* l1 = GuiLabel::make_simple_text_label("up", font);
|
||||
// GuiLabel* l2 = GuiLabel::make_simple_text_label("upr", font);
|
||||
// GuiLabel* l3 = GuiLabel::make_simple_text_label("down", font);
|
||||
// GuiLabel* l4 = GuiLabel::make_simple_text_label("downr", font);
|
||||
// GuiLabel* l5 = GuiLabel::make_simple_text_label("none", font);
|
||||
// GuiButton* b1 = new GuiButton("test3", l1, l2, l3, l4, l5);
|
||||
// b1->set_scale(0.1);
|
||||
// b1->set_pos(LVector3f::rfu(-0.25, 0., 0.25));
|
||||
// b1->manage(mgr, event_handler);
|
||||
GuiLabel* l1 = GuiLabel::make_simple_text_label("up", font);
|
||||
GuiLabel* l2 = GuiLabel::make_simple_text_label("upr", font);
|
||||
GuiLabel* l3 = GuiLabel::make_simple_text_label("down", font);
|
||||
GuiLabel* l4 = GuiLabel::make_simple_text_label("downr", font);
|
||||
GuiLabel* l5 = GuiLabel::make_simple_text_label("none", font);
|
||||
GuiButton* b1 = new GuiButton("test3", l1, l2, l3, l4, l5);
|
||||
b1->set_scale(0.1);
|
||||
b1->set_pos(LVector3f::rfu(-0.25, 0., 0.25));
|
||||
l2->set_foreground_color(1., 1., 0., 1.);
|
||||
l4->set_foreground_color(1., 1., 0., 1.);
|
||||
l3->set_background_color(1., 1., 1., 0.5);
|
||||
l4->set_background_color(1., 1., 1., 0.5);
|
||||
b1->manage(mgr, event_handler);
|
||||
// test 4
|
||||
GuiRollover* r1 = new GuiRollover("r1",
|
||||
GuiLabel::make_simple_text_label("1",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label("!",
|
||||
font));
|
||||
GuiRollover* r2 = new GuiRollover("r2",
|
||||
GuiLabel::make_simple_text_label("2",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label("@",
|
||||
font));
|
||||
GuiRollover* r3 = new GuiRollover("r3",
|
||||
GuiLabel::make_simple_text_label("3",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label("#",
|
||||
font));
|
||||
GuiRollover* r4 = new GuiRollover("r4",
|
||||
GuiLabel::make_simple_text_label("4",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label("$",
|
||||
font));
|
||||
GuiRollover* r5 = new GuiRollover("r5",
|
||||
GuiLabel::make_simple_text_label("5",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label("%",
|
||||
font));
|
||||
GuiRollover* r6 = new GuiRollover("r6",
|
||||
GuiLabel::make_simple_text_label("6",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label("^",
|
||||
font));
|
||||
GuiRollover* r7 = new GuiRollover("r7",
|
||||
GuiLabel::make_simple_text_label("7",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label("&",
|
||||
font));
|
||||
GuiRollover* r8 = new GuiRollover("r8",
|
||||
GuiLabel::make_simple_text_label("8",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label("*",
|
||||
font));
|
||||
GuiRollover* r9 = new GuiRollover("r9",
|
||||
GuiLabel::make_simple_text_label("9",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label("(",
|
||||
font));
|
||||
GuiRollover* r0 = new GuiRollover("r0",
|
||||
GuiLabel::make_simple_text_label("0",
|
||||
font),
|
||||
GuiLabel::make_simple_text_label(")",
|
||||
font));
|
||||
GuiFrame* f1 = new GuiFrame("test4");
|
||||
f1->add_item(r1);
|
||||
f1->add_item(r2);
|
||||
f1->pack_item(r2, GuiFrame::UNDER, r1);
|
||||
f1->pack_item(r2, GuiFrame::RIGHT, r1);
|
||||
f1->add_item(r3);
|
||||
f1->pack_item(r3, GuiFrame::UNDER, r2);
|
||||
f1->pack_item(r3, GuiFrame::RIGHT, r2);
|
||||
f1->add_item(r4);
|
||||
f1->pack_item(r4, GuiFrame::UNDER, r3);
|
||||
f1->pack_item(r4, GuiFrame::RIGHT, r2);
|
||||
f1->add_item(r5);
|
||||
f1->pack_item(r5, GuiFrame::UNDER, r4);
|
||||
f1->pack_item(r5, GuiFrame::LEFT, r4);
|
||||
f1->add_item(r6);
|
||||
f1->pack_item(r6, GuiFrame::UNDER, r5);
|
||||
f1->pack_item(r6, GuiFrame::LEFT, r5);
|
||||
f1->add_item(r7);
|
||||
f1->pack_item(r7, GuiFrame::ABOVE, r6);
|
||||
f1->pack_item(r7, GuiFrame::LEFT, r6);
|
||||
f1->add_item(r8);
|
||||
f1->pack_item(r8, GuiFrame::ABOVE, r7);
|
||||
f1->pack_item(r8, GuiFrame::LEFT, r7);
|
||||
f1->add_item(r9);
|
||||
f1->pack_item(r9, GuiFrame::ABOVE, r8);
|
||||
f1->pack_item(r9, GuiFrame::LEFT, r7);
|
||||
f1->add_item(r0);
|
||||
f1->pack_item(r0, GuiFrame::ABOVE, r9);
|
||||
f1->pack_item(r0, GuiFrame::RIGHT, r9);
|
||||
f1->set_scale(0.1);
|
||||
f1->set_pos(LVector3f::rfu(0., 0., -0.25));
|
||||
f1->manage(mgr, event_handler);
|
||||
// GuiRollover* r1 = new GuiRollover("r1",
|
||||
// GuiLabel::make_simple_text_label("1",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label("!",
|
||||
// font));
|
||||
// GuiRollover* r2 = new GuiRollover("r2",
|
||||
// GuiLabel::make_simple_text_label("2",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label("@",
|
||||
// font));
|
||||
// GuiRollover* r3 = new GuiRollover("r3",
|
||||
// GuiLabel::make_simple_text_label("3",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label("#",
|
||||
// font));
|
||||
// GuiRollover* r4 = new GuiRollover("r4",
|
||||
// GuiLabel::make_simple_text_label("4",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label("$",
|
||||
// font));
|
||||
// GuiRollover* r5 = new GuiRollover("r5",
|
||||
// GuiLabel::make_simple_text_label("5",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label("%",
|
||||
// font));
|
||||
// GuiRollover* r6 = new GuiRollover("r6",
|
||||
// GuiLabel::make_simple_text_label("6",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label("^",
|
||||
// font));
|
||||
// GuiRollover* r7 = new GuiRollover("r7",
|
||||
// GuiLabel::make_simple_text_label("7",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label("&",
|
||||
// font));
|
||||
// GuiRollover* r8 = new GuiRollover("r8",
|
||||
// GuiLabel::make_simple_text_label("8",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label("*",
|
||||
// font));
|
||||
// GuiRollover* r9 = new GuiRollover("r9",
|
||||
// GuiLabel::make_simple_text_label("9",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label("(",
|
||||
// font));
|
||||
// GuiRollover* r0 = new GuiRollover("r0",
|
||||
// GuiLabel::make_simple_text_label("0",
|
||||
// font),
|
||||
// GuiLabel::make_simple_text_label(")",
|
||||
// font));
|
||||
// GuiFrame* f1 = new GuiFrame("test4");
|
||||
// f1->add_item(r1);
|
||||
// f1->add_item(r2);
|
||||
// f1->pack_item(r2, GuiFrame::UNDER, r1);
|
||||
// f1->pack_item(r2, GuiFrame::RIGHT, r1);
|
||||
// f1->add_item(r3);
|
||||
// f1->pack_item(r3, GuiFrame::UNDER, r2);
|
||||
// f1->pack_item(r3, GuiFrame::RIGHT, r2);
|
||||
// f1->add_item(r4);
|
||||
// f1->pack_item(r4, GuiFrame::UNDER, r3);
|
||||
// f1->pack_item(r4, GuiFrame::RIGHT, r2);
|
||||
// f1->add_item(r5);
|
||||
// f1->pack_item(r5, GuiFrame::UNDER, r4);
|
||||
// f1->pack_item(r5, GuiFrame::LEFT, r4);
|
||||
// f1->add_item(r6);
|
||||
// f1->pack_item(r6, GuiFrame::UNDER, r5);
|
||||
// f1->pack_item(r6, GuiFrame::LEFT, r5);
|
||||
// f1->add_item(r7);
|
||||
// f1->pack_item(r7, GuiFrame::ABOVE, r6);
|
||||
// f1->pack_item(r7, GuiFrame::LEFT, r6);
|
||||
// f1->add_item(r8);
|
||||
// f1->pack_item(r8, GuiFrame::ABOVE, r7);
|
||||
// f1->pack_item(r8, GuiFrame::LEFT, r7);
|
||||
// f1->add_item(r9);
|
||||
// f1->pack_item(r9, GuiFrame::ABOVE, r8);
|
||||
// f1->pack_item(r9, GuiFrame::LEFT, r7);
|
||||
// f1->add_item(r0);
|
||||
// f1->pack_item(r0, GuiFrame::ABOVE, r9);
|
||||
// f1->pack_item(r0, GuiFrame::RIGHT, r9);
|
||||
// f1->set_scale(0.1);
|
||||
// f1->set_pos(LVector3f::rfu(0., 0., -0.25));
|
||||
// f1->manage(mgr, event_handler);
|
||||
// cerr << *f1;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue