summaryrefslogtreecommitdiff
path: root/indra/llui/llkeywords.h
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llui/llkeywords.h
Print done when done.
Diffstat (limited to 'indra/llui/llkeywords.h')
-rw-r--r--indra/llui/llkeywords.h91
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