260 } |
260 } |
261 invertNext = false; |
261 invertNext = false; |
262 } |
262 } |
263 } |
263 } |
264 |
264 |
|
265 namespace |
|
266 { |
|
267 namespace regexes |
|
268 { |
|
269 static const QRegExp comment {R"(^\s*0\s*\/\/\s*(.+)$)"}; |
|
270 static const QRegExp metacommand {R"(^\s*0\s*(.+)$)"}; |
|
271 static const QRegExp edgeline |
|
272 { |
|
273 R"(^\s*2)" // starting 2-token |
|
274 R"(\s+(\d+))" // colour |
|
275 R"(((?:\s+[^\s]+){3}))" // 1st vertex |
|
276 R"(((?:\s+[^\s]+){3}))" // 2nd vertex |
|
277 R"(\s*$)" // end |
|
278 }; |
|
279 static const QRegExp triangle |
|
280 { |
|
281 R"(^\s*3)" // starting 3-token |
|
282 R"(\s+(\d+))" // colour |
|
283 R"(((?:\s+[^\s]+){3}))" // 1st vertex |
|
284 R"(((?:\s+[^\s]+){3}))" // 2nd vertex |
|
285 R"(((?:\s+[^\s]+){3}))" // 3rd vertex |
|
286 R"(\s*$)" // end |
|
287 }; |
|
288 static const QRegExp quadrilateral |
|
289 { |
|
290 R"(^\s*4)" // starting 4-token |
|
291 R"(\s+(\d+))" // colour |
|
292 R"(((?:\s+[^\s]+){3}))" // 1st vertex |
|
293 R"(((?:\s+[^\s]+){3}))" // 2nd vertex |
|
294 R"(((?:\s+[^\s]+){3}))" // 3rd vertex |
|
295 R"(((?:\s+[^\s]+){3}))" // 4th vertex |
|
296 R"(\s*$)" // end |
|
297 }; |
|
298 static const QRegExp conditionaledge |
|
299 { |
|
300 R"(^\s*5)" // starting 5-token |
|
301 R"(\s+(\d+))" // colour |
|
302 R"(((?:\s+[^\s]+){3}))" // 1st vertex |
|
303 R"(((?:\s+[^\s]+){3}))" // 2nd vertex |
|
304 R"(((?:\s+[^\s]+){3}))" // 1st control point |
|
305 R"(((?:\s+[^\s]+){3}))" // 2nd control point |
|
306 R"(\s*$)" // end |
|
307 }; |
|
308 } |
|
309 } |
|
310 |
265 modelobjects::BaseObject* Parser::parseFromString( |
311 modelobjects::BaseObject* Parser::parseFromString( |
266 Model::EditContext& editor, |
312 Model::EditContext& editor, |
267 const QString& line) |
313 const QString& line) |
268 { |
314 { |
269 return editor.append<modelobjects::Comment>(line); |
315 return editor.append<modelobjects::Comment>(line); |