llkeywords.h

Go to the documentation of this file.
00001 
00032 #ifndef LL_LLKEYWORDS_H
00033 #define LL_LLKEYWORDS_H
00034 
00035 
00036 #include "llstring.h"
00037 #include "v3color.h"
00038 #include <map>
00039 #include <list>
00040 #include <deque>
00041 
00042 class LLTextSegment;
00043 
00044 
00045 class LLKeywordToken
00046 {
00047 public:
00048         enum TOKEN_TYPE { WORD, LINE, TWO_SIDED_DELIMITER, ONE_SIDED_DELIMITER };
00049 
00050         LLKeywordToken( TOKEN_TYPE type, const LLColor3& color, const LLWString& token, const LLWString& tool_tip ) 
00051                 :
00052                 mType( type ),
00053                 mToken( token ),
00054                 mColor( color ),
00055                 mToolTip( tool_tip )
00056         {
00057         }
00058 
00059         S32                                     getLength() const               { return mToken.size(); }
00060         BOOL                            isHead(const llwchar* s) const;
00061         const LLWString&        getToken() const                { return mToken; }
00062         const LLColor3&         getColor() const                { return mColor; }
00063         TOKEN_TYPE                      getType()  const                { return mType; }
00064         const LLWString&        getToolTip() const              { return mToolTip; }
00065 
00066 #ifdef _DEBUG
00067         void            dump();
00068 #endif
00069 
00070 private:
00071         TOKEN_TYPE      mType;
00072         LLWString       mToken;
00073         LLColor3        mColor;
00074         LLWString       mToolTip;
00075 };
00076 
00077 class LLKeywords
00078 {
00079 public:
00080         LLKeywords();
00081         ~LLKeywords();
00082 
00083         BOOL            loadFromFile(const LLString& filename);
00084         BOOL            isLoaded() const        { return mLoaded; }
00085 
00086         void            findSegments(std::vector<LLTextSegment *> *seg_list, const LLWString& text, const LLColor4 &defaultColor );
00087 
00088         // Add the token as described
00089         void addToken(LLKeywordToken::TOKEN_TYPE type,
00090                                         const LLString& key,
00091                                         const LLColor3& color,
00092                                         const LLString& tool_tip = LLString::null);
00093 
00094         typedef std::map<LLWString, LLKeywordToken*> word_token_map_t;
00095         typedef word_token_map_t::const_iterator keyword_iterator_t;
00096         keyword_iterator_t begin() const { return mWordTokenMap.begin(); }
00097         keyword_iterator_t end() const { return mWordTokenMap.end(); }
00098 
00099 #ifdef _DEBUG
00100         void            dump();
00101 #endif
00102 
00103 private:
00104         LLColor3        readColor(const LLString& s);
00105         void            insertSegment(std::vector<LLTextSegment *> *seg_list, LLTextSegment* new_segment, S32 text_len, const LLColor4 &defaultColor);
00106 
00107         BOOL            mLoaded;
00108         word_token_map_t mWordTokenMap;
00109         typedef std::deque<LLKeywordToken*> token_list_t;
00110         token_list_t mLineTokenList;
00111         token_list_t mDelimiterTokenList;
00112 };
00113 
00114 #endif  // LL_LLKEYWORDS_H

Generated on Fri May 16 08:32:52 2008 for SecondLife by  doxygen 1.5.5