- map<string,FGDialog *> _active_dialogs;
- map<string,SGPropertyNode_ptr> _dialog_props;
-
-};
-
-
-class FGColor {
-public:
- FGColor() { clear(); }
- FGColor(float r, float g, float b, float a = 1.0f) { set(r, g, b, a); }
- FGColor(const SGPropertyNode *prop) { set(prop); }
- FGColor(FGColor *c) {
- if (c) set(c->_red, c->_green, c->_blue, c->_alpha);
- }
-
- inline void clear() { _red = _green = _blue = _alpha = -1.0f; }
- // merges in non-negative components from property with children <red> etc.
- bool merge(const SGPropertyNode *prop);
- bool merge(const FGColor *color);
-
- bool set(const SGPropertyNode *prop) { clear(); return merge(prop); };
- bool set(const FGColor *color) { clear(); return merge(color); }
- bool set(float r, float g, float b, float a = 1.0f) {
- _red = r, _green = g, _blue = b, _alpha = a;
- return true;
- }
- bool isValid() const {
- return _red >= 0.0 && _green >= 0.0 && _blue >= 0.0;
- }
- void print() const {
- std::cerr << "red=" << _red << ", green=" << _green
- << ", blue=" << _blue << ", alpha=" << _alpha << std::endl;
- }
-
- inline void setRed(float red) { _red = red; }
- inline void setGreen(float green) { _green = green; }
- inline void setBlue(float blue) { _blue = blue; }
- inline void setAlpha(float alpha) { _alpha = alpha; }
-
- inline float red() const { return clamp(_red); }
- inline float green() const { return clamp(_green); }
- inline float blue() const { return clamp(_blue); }
- inline float alpha() const { return _alpha < 0.0 ? 1.0 : clamp(_alpha); }
-
-protected:
- float _red, _green, _blue, _alpha;
-
-private:
- float clamp(float f) const { return f < 0.0 ? 0.0 : f > 1.0 ? 1.0 : f; }
-};
-
-
-
-/**
- * A small class to keep all fonts available for future use.
- * This also assures a font isn't resident more than once.
- */
-class FGFontCache {
-private:
- SGPath _path;
-
- map<const char*,puFont*> _fonts;
- typedef map<const char*,puFont*>::iterator _itt_t;
-
-public:
- FGFontCache();
- ~FGFontCache();
+ typedef std::map<std::string,FGDialog *> DialogDict;
+ DialogDict _active_dialogs;
+
+ typedef std::map<std::string, SGPath> NamePathDict;
+ // mapping from dialog names to the corresponding XML property list
+ // which defines them
+ NamePathDict _dialog_names;
+
+ // cache of loaded dialog proeprties
+ typedef std::map<std::string,SGPropertyNode_ptr> NameDialogDict;
+ NameDialogDict _dialog_props;