Some more helpful utility parsers
- Rename VectorParser -> ScalarSequenceParser - Add Vector3Parser and ColorParser, subclasses of the above, which handle Vector3s and Colors
This commit is contained in:
parent
daf5c7d8a6
commit
2c4f6a4d29
4 changed files with 89 additions and 3 deletions
57
src/yaml/vectorParser.cc
Normal file
57
src/yaml/vectorParser.cc
Normal file
|
@ -0,0 +1,57 @@
|
|||
/* vectorParser.cc
|
||||
* vim: set tw=80:
|
||||
* Eryn Wells <eryn@erynwells.me>
|
||||
*/
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include "yaml/vectorParser.hh"
|
||||
|
||||
|
||||
namespace yaml {
|
||||
|
||||
Vector3Parser::Vector3Parser(Scene& scene,
|
||||
ParserStack& parsers,
|
||||
CallbackFunction onDone)
|
||||
: ScalarSequenceParser(scene, parsers)
|
||||
{
|
||||
auto onSeqDone = [this, onDone](std::vector<double> seq) {
|
||||
if (seq.size() != 3) {
|
||||
assert(seq.size() != 3);
|
||||
return;
|
||||
}
|
||||
onDone(Vector3(seq[0], seq[1], seq[2]));
|
||||
};
|
||||
SetCallback(onSeqDone);
|
||||
}
|
||||
|
||||
|
||||
Vector3Parser::~Vector3Parser()
|
||||
{ }
|
||||
|
||||
|
||||
ColorParser::ColorParser(Scene& scene,
|
||||
ParserStack& parsers,
|
||||
CallbackFunction onDone)
|
||||
: ScalarSequenceParser(scene, parsers)
|
||||
{
|
||||
auto onSeqDone = [this, onDone](std::vector<double> seq) {
|
||||
size_t seqSize = seq.size();
|
||||
if (seqSize == 3) {
|
||||
onDone(Color(seq[0], seq[1], seq[2]));
|
||||
}
|
||||
else if (seqSize == 4) {
|
||||
onDone(Color(seq[0], seq[1], seq[2], seq[3]));
|
||||
}
|
||||
else {
|
||||
assert(seqSize != 3 || seqSize != 4);
|
||||
}
|
||||
};
|
||||
SetCallback(onSeqDone);
|
||||
}
|
||||
|
||||
|
||||
ColorParser::~ColorParser()
|
||||
{ }
|
||||
|
||||
} /* namespace yaml */
|
Loading…
Add table
Add a link
Reference in a new issue