diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llui/llkeywords.h |
Print done when done.
Diffstat (limited to 'indra/llui/llkeywords.h')
-rw-r--r-- | indra/llui/llkeywords.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h new file mode 100644 index 0000000000..fcf70b77b1 --- /dev/null +++ b/indra/llui/llkeywords.h @@ -0,0 +1,91 @@ +/** + * @file llkeywords.h + * @brief Keyword list for LSL + * + * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#ifndef LL_LLKEYWORDS_H +#define LL_LLKEYWORDS_H + + +#include "llstring.h" +#include "v3color.h" +#include <map> +#include <list> +#include <deque> + +class LLTextSegment; + + +class LLKeywordToken +{ +public: + enum TOKEN_TYPE { WORD, LINE, TWO_SIDED_DELIMITER, ONE_SIDED_DELIMITER }; + + LLKeywordToken( TOKEN_TYPE type, const LLColor3& color, const LLWString& token, const LLWString& tool_tip ) + : + mType( type ), + mToken( token ), + mColor( color ), + mToolTip( tool_tip ) + { + } + + S32 getLength() { return mToken.size(); } + BOOL isHead(const llwchar* s); + const LLColor3& getColor() { return mColor; } + TOKEN_TYPE getType() { return mType; } + const LLWString& getToolTip() { return mToolTip; } + +#ifdef _DEBUG + void dump(); +#endif + +private: + TOKEN_TYPE mType; +public: + LLWString mToken; + LLColor3 mColor; +private: + LLWString mToolTip; +}; + +class LLKeywords +{ +public: + LLKeywords(); + ~LLKeywords(); + + BOOL loadFromFile(const LLString& filename); + BOOL isLoaded() { return mLoaded; } + + void findSegments(std::vector<LLTextSegment *> *seg_list, const LLWString& text ); + +#ifdef _DEBUG + void dump(); +#endif + + // Add the token as described + void addToken(LLKeywordToken::TOKEN_TYPE type, + const LLString& key, + const LLColor3& color, + const LLString& tool_tip = LLString::null); + +private: + LLColor3 readColor(const LLString& s); + void insertSegment(std::vector<LLTextSegment *> *seg_list, LLTextSegment* new_segment, S32 text_len); + +private: + BOOL mLoaded; +public: + typedef std::map<LLWString, LLKeywordToken*> word_token_map_t; + word_token_map_t mWordTokenMap; +private: + typedef std::deque<LLKeywordToken*> token_list_t; + token_list_t mLineTokenList; + token_list_t mDelimiterTokenList; +}; + +#endif // LL_LLKEYWORDS_H |