1
0
Fork 0

- abstract out reading colors from the property tree into a routine.

This could also be used to read the default foreground/background color
  from a definition in preferences.xml or gui/color.xml.
This commit is contained in:
mfranz 2005-07-04 07:27:17 +00:00
parent 0730ecc8e2
commit cac0a9b326
2 changed files with 33 additions and 19 deletions

View file

@ -266,6 +266,10 @@ FGDialog::FGDialog (SGPropertyNode * props)
_font_path.append( "Fonts" ); _font_path.append( "Fonts" );
} }
const sgVec4 background = {0.8, 0.8, 0.9, 0.85};
const sgVec4 foreground = {0, 0, 0, 1};
sgCopyVec4(_bgcolor, background);
sgCopyVec4(_fgcolor, foreground);
display(props); display(props);
} }
@ -409,22 +413,14 @@ FGDialog::makeObject (SGPropertyNode * props, int parentWidth, int parentHeight)
int y = props->getIntValue("y", (parentHeight - height) / 2); int y = props->getIntValue("y", (parentHeight - height) / 2);
string type = props->getName(); string type = props->getName();
const sgVec4 background = {0.8, 0.8, 0.9, 0.85};
const sgVec4 foreground = {0, 0, 0, 1};
sgVec4 color; sgVec4 color;
if (type == "hrule" || type == "vrule") if (type == "hrule" || type == "vrule")
sgCopyVec4(color, foreground); sgCopyVec4(color, _fgcolor);
else else
sgCopyVec4(color, background); sgCopyVec4(color, _bgcolor);
SGPropertyNode *ncs = props->getNode("color", false); getColor(props->getNode("color"), color);
if ( ncs ) {
color[0] = ncs->getFloatValue("red", color[0]);
color[1] = ncs->getFloatValue("green", color[1]);
color[2] = ncs->getFloatValue("blue", color[2]);
color[3] = ncs->getFloatValue("alpha", color[3]);
}
if (type == "") if (type == "")
type = "dialog"; type = "dialog";
@ -596,14 +592,10 @@ FGDialog::setupObject (puObject * object, SGPropertyNode * props)
object->setLabelFont( lfnt ); object->setLabelFont( lfnt );
} }
if ( SGPropertyNode *ncs = props->getNode("color", false) ) { sgVec4 color;
sgVec4 color; sgCopyVec4(color, _fgcolor);
color[0] = ncs->getFloatValue("red", 0.0); getColor(props->getNode("color"), color);
color[1] = ncs->getFloatValue("green", 0.0); object->setColor(PUCOL_LABEL, color[0], color[1], color[2], color[3]);
color[2] = ncs->getFloatValue("blue", 0.0);
color[3] = ncs->getFloatValue("alpha", 1.0);
object->setColor(PUCOL_LABEL, color[0], color[1], color[2], color[3]);
}
if (props->hasValue("property")) { if (props->hasValue("property")) {
const char * name = props->getStringValue("name"); const char * name = props->getStringValue("name");
@ -658,6 +650,23 @@ FGDialog::setupGroup (puGroup * group, SGPropertyNode * props,
group->close(); group->close();
} }
void
FGDialog::getColor (const SGPropertyNode * prop, sgVec4 color)
{
if (!prop)
return;
const SGPropertyNode *p;
if ((p = prop->getChild("red")))
color[0] = p->getFloatValue();
if ((p = prop->getChild("green")))
color[1] = p->getFloatValue();
if ((p = prop->getChild("blue")))
color[2] = p->getFloatValue();
if ((p = prop->getChild("alpha")))
color[3] = p->getFloatValue();
}
char ** char **
FGDialog::make_char_array (int size) FGDialog::make_char_array (int size)
{ {

View file

@ -118,6 +118,9 @@ private:
int width, int height, sgVec4 color, int width, int height, sgVec4 color,
bool makeFrame = false); bool makeFrame = false);
// Read color properties and merge them into color vector.
void getColor(const SGPropertyNode * prop, sgVec4 color);
// The top-level PUI object. // The top-level PUI object.
puObject * _object; puObject * _object;
@ -144,6 +147,8 @@ private:
vector<char **> _char_arrays; vector<char **> _char_arrays;
SGPath _font_path; SGPath _font_path;
sgVec4 _fgcolor;
sgVec4 _bgcolor;
}; };
// //