Mercurial > hg > opencollidoscope
view CollidoscopeApp/src/Config.cpp @ 2:dd889fff8423
added some comments
author | Fiore Martin <f.martin@qmul.ac.uk> |
---|---|
date | Mon, 11 Jul 2016 17:03:40 +0200 |
parents | 02467299402e |
children | 75b744078d66 |
line wrap: on
line source
#include "Config.h" #include "cinder/Exception.h" #include "boost/algorithm/string/trim.hpp" using ci::DataSourceRef; using ci::XmlTree; using ci::loadFile; Config::Config() : mAudioInputDeviceKey( "" ), mNumChunks(150), mWaveLen(2.0) { } // uses Cinder api to parse configuration in XML file void Config::loadFromFile( std::string&& path ) { try { XmlTree doc( loadFile( path ) ); XmlTree collidoscope = doc.getChild( "collidoscope" ); // audio input device mAudioInputDeviceKey = collidoscope.getChild( "audioInputDeviceKey" ).getValue(); boost::trim( mAudioInputDeviceKey ); // wave len in seconds std::string waveLenStr = collidoscope.getChild("wave_len").getValue(); boost::trim(waveLenStr); mWaveLen = ci::fromString<double>(waveLenStr); // channel for each wave XmlTree waves = collidoscope.getChild( "waves" ); for ( int i = 0; i < NUM_WAVES; i++ ){ for ( auto &wave : waves.getChildren() ){ int id = ci::fromString<int>( wave->getAttribute( "id" ) ); if ( id == i ){ parseWave( *wave, id ); break; } } } } catch ( std::exception &e ) { throw ci::Exception( e.what() ); } } // thows exception captured in loadFromFile void Config::parseWave( const XmlTree &wave, int id ) { // midi channel std::string midiChannelStr = wave.getChild( "midiChannel" ).getValue(); boost::trim( midiChannelStr ); mMidiChannels[id] = ci::fromString<size_t>( midiChannelStr ); }