24 |
24 |
25 // ============================================================================= |
25 // ============================================================================= |
26 // Helper function for parseLDConfig |
26 // Helper function for parseLDConfig |
27 // ----------------------------------------------------------------------------- |
27 // ----------------------------------------------------------------------------- |
28 static bool parseLDConfigTag (LDConfigParser& pars, char const* tag, str& val) |
28 static bool parseLDConfigTag (LDConfigParser& pars, char const* tag, str& val) |
29 { short pos; |
29 { int pos; |
30 |
30 |
31 // Try find the token and get its position |
31 // Try find the token and get its position |
32 if (!pars.findToken (pos, tag, 1)) |
32 if (!pars.findToken (pos, tag, 1)) |
33 return false; |
33 return false; |
34 |
34 |
56 line.remove ('\n'); |
56 line.remove ('\n'); |
57 |
57 |
58 // Parse the line |
58 // Parse the line |
59 LDConfigParser pars (line, ' '); |
59 LDConfigParser pars (line, ' '); |
60 |
60 |
61 short code = 0, alpha = 255; |
61 int code = 0, alpha = 255; |
62 str name, facename, edgename, valuestr; |
62 str name, facename, edgename, valuestr; |
63 |
63 |
64 // Check 0 !COLOUR, parse the name |
64 // Check 0 !COLOUR, parse the name |
65 if (!pars.tokenCompare (0, "0") || !pars.tokenCompare (1, "!COLOUR") || !pars.getToken (name, 2)) |
65 if (!pars.tokenCompare (0, "0") || !pars.tokenCompare (1, "!COLOUR") || !pars.getToken (name, 2)) |
66 continue; |
66 continue; |
86 if (!parseLDConfigTag (pars, "VALUE", facename) || !parseLDConfigTag (pars, "EDGE", edgename)) |
86 if (!parseLDConfigTag (pars, "VALUE", facename) || !parseLDConfigTag (pars, "EDGE", edgename)) |
87 continue; |
87 continue; |
88 |
88 |
89 // Ensure that our colors are correct |
89 // Ensure that our colors are correct |
90 QColor faceColor (facename), |
90 QColor faceColor (facename), |
91 edgeColor (edgename); |
91 edgeColor (edgename); |
92 |
92 |
93 if (!faceColor.isValid() || !edgeColor.isValid()) |
93 if (!faceColor.isValid() || !edgeColor.isValid()) |
94 continue; |
94 continue; |
95 |
95 |
96 // Parse alpha if given. |
96 // Parse alpha if given. |
97 if (parseLDConfigTag (pars, "ALPHA", valuestr)) |
97 if (parseLDConfigTag (pars, "ALPHA", valuestr)) |
98 alpha = clamp<short> (valuestr.toShort(), 0, 255); |
98 alpha = clamp (valuestr.toInt(), 0, 255); |
99 |
99 |
100 LDColor* col = new LDColor; |
100 LDColor* col = new LDColor; |
101 col->name = name; |
101 col->name = name; |
102 col->faceColor = faceColor; |
102 col->faceColor = faceColor; |
103 col->edgeColor = edgeColor; |
103 col->edgeColor = edgeColor; |
117 m_pos = -1; |
117 m_pos = -1; |
118 } |
118 } |
119 |
119 |
120 // ============================================================================= |
120 // ============================================================================= |
121 // ----------------------------------------------------------------------------- |
121 // ----------------------------------------------------------------------------- |
122 bool LDConfigParser::atBeginning() |
122 bool LDConfigParser::isAtBeginning() |
123 { return (m_pos == -1); |
123 { return m_pos == -1; |
124 } |
124 } |
125 |
125 |
126 // ============================================================================= |
126 // ============================================================================= |
127 // ----------------------------------------------------------------------------- |
127 // ----------------------------------------------------------------------------- |
128 bool LDConfigParser::atEnd() |
128 bool LDConfigParser::isAtEnd() |
129 { return (m_pos == m_tokens.size() - 1); |
129 { return m_pos == m_tokens.size() - 1; |
130 } |
130 } |
131 |
131 |
132 // ============================================================================= |
132 // ============================================================================= |
133 // ----------------------------------------------------------------------------- |
133 // ----------------------------------------------------------------------------- |
134 bool LDConfigParser::getToken (str& val, const int pos) |
134 bool LDConfigParser::getToken (str& val, const int pos) |
139 return true; |
139 return true; |
140 } |
140 } |
141 |
141 |
142 // ============================================================================= |
142 // ============================================================================= |
143 // ----------------------------------------------------------------------------- |
143 // ----------------------------------------------------------------------------- |
144 bool LDConfigParser::next (str& val) |
144 bool LDConfigParser::getNextToken (str& val) |
145 { return getToken (val, ++m_pos); |
145 { return getToken (val, ++m_pos); |
146 } |
146 } |
147 |
147 |
148 // ============================================================================= |
148 // ============================================================================= |
149 // ----------------------------------------------------------------------------- |
149 // ----------------------------------------------------------------------------- |
150 bool LDConfigParser::peekNext (str& val) |
150 bool LDConfigParser::peekNextToken (str& val) |
151 { return getToken (val, m_pos + 1); |
151 { return getToken (val, m_pos + 1); |
152 } |
152 } |
153 |
153 |
154 // ============================================================================= |
154 // ============================================================================= |
155 // ----------------------------------------------------------------------------- |
155 // ----------------------------------------------------------------------------- |
156 bool LDConfigParser::findToken (short& result, char const* needle, short args) |
156 bool LDConfigParser::findToken (int& result, char const* needle, int args) |
157 { for (int i = 0; i < (m_tokens.size() - args); ++i) |
157 { for (int i = 0; i < (m_tokens.size() - args); ++i) |
158 { if (m_tokens[i] == needle) |
158 { if (m_tokens[i] == needle) |
159 { result = i; |
159 { result = i; |
160 return true; |
160 return true; |
161 } |
161 } |
170 { m_pos = -1; |
170 { m_pos = -1; |
171 } |
171 } |
172 |
172 |
173 // ============================================================================= |
173 // ============================================================================= |
174 // ----------------------------------------------------------------------------- |
174 // ----------------------------------------------------------------------------- |
175 void LDConfigParser::seek (short amount, bool rel) |
175 void LDConfigParser::seek (int amount, bool rel) |
176 { m_pos = (rel ? m_pos : 0) + amount; |
176 { m_pos = (rel ? m_pos : 0) + amount; |
177 } |
177 } |
178 |
178 |
179 // ============================================================================= |
179 // ============================================================================= |
180 // ----------------------------------------------------------------------------- |
180 // ----------------------------------------------------------------------------- |
181 size_t LDConfigParser::size() |
181 int LDConfigParser::getSize() |
182 { return m_tokens.size(); |
182 { return m_tokens.size(); |
183 } |
183 } |
184 |
184 |
185 // ============================================================================= |
185 // ============================================================================= |
186 // ----------------------------------------------------------------------------- |
186 // ----------------------------------------------------------------------------- |
187 bool LDConfigParser::tokenCompare (short inPos, const char* sOther) |
187 bool LDConfigParser::tokenCompare (int inPos, const char* sOther) |
188 { str tok; |
188 { str tok; |
189 |
189 |
190 if (!getToken (tok, inPos)) |
190 if (!getToken (tok, inPos)) |
191 return false; |
191 return false; |
192 |
192 |