diff options
author | Bryan O'Sullivan <bos@lindenlab.com> | 2009-08-31 13:47:47 -0700 |
---|---|---|
committer | Bryan O'Sullivan <bos@lindenlab.com> | 2009-08-31 13:47:47 -0700 |
commit | 30ff6cabd61f2f083df5df1e6e70cc94742af477 (patch) | |
tree | 631935f1cf59d19a91cdad65e9a75fe825afda7d /indra/llui/lluicolortable.h | |
parent | ff11d74820c89822cd067b51727d9df1dc87d0d0 (diff) | |
parent | 3ac3a4b206c08ed06b889bdaa24074b6aa0e020a (diff) |
Merge with trunk
Diffstat (limited to 'indra/llui/lluicolortable.h')
-rw-r--r-- | indra/llui/lluicolortable.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h new file mode 100644 index 0000000000..f102a573b8 --- /dev/null +++ b/indra/llui/lluicolortable.h @@ -0,0 +1,83 @@ +/** + * @file lluicolortable.h + * @brief brief LLUIColorTable class header file + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * Copyright (c) 2009, Linden Research, Inc. + * $/LicenseInfo$ + */ + +#ifndef LL_LLUICOLORTABLE_H_ +#define LL_LLUICOLORTABLE_H_ + +#include <map> + +#include "llinitparam.h" +#include "llsingleton.h" + +#include "v4color.h" + +class LLUIColor; + +class LLUIColorTable : public LLSingleton<LLUIColorTable> +{ +LOG_CLASS(LLUIColorTable); +public: + struct ColorParams : LLInitParam::Choice<ColorParams> + { + Alternative<LLColor4> value; + Alternative<std::string> reference; + + ColorParams(); + }; + + struct ColorEntryParams : LLInitParam::Block<ColorEntryParams> + { + Mandatory<std::string> name; + Mandatory<ColorParams> color; + + ColorEntryParams(); + }; + + struct Params : LLInitParam::Block<Params> + { + Multiple<ColorEntryParams> color_entries; + + Params(); + }; + + // define colors by passing in a param block that can be generated via XUI file or manually + void insertFromParams(const Params& p); + + // reset all colors to default magenta color + void clear(); + + // color lookup + LLUIColor getColor(const std::string& name, const LLColor4& default_color = LLColor4::magenta) const; + + // if the color is in the table, it's value is changed, otherwise it is added + void setColor(const std::string& name, const LLColor4& color); + + // returns true if color_name exists in the table + bool colorExists(const std::string& color_name) const; + + // loads colors from settings files + bool loadFromSettings(); + + // saves colors specified by the user to the users skin directory + void saveUserSettings() const; + +private: + bool loadFromFilename(const std::string& filename); + + // consider using sorted vector, can be much faster + typedef std::map<std::string, LLColor4> string_color_map_t; + + void clearTable(string_color_map_t& table); + void setColor(const std::string& name, const LLColor4& color, string_color_map_t& table); + + string_color_map_t mLoadedColors; + string_color_map_t mUserSetColors; +}; + +#endif // LL_LLUICOLORTABLE_H |