andrew@50: /* andrew@50: * MatchMarkers.cpp andrew@50: * MultipleAudioMathcher andrew@50: * andrew@50: * Created by Andrew on 14/06/2012. andrew@50: * Copyright 2012 QMUL. All rights reserved. andrew@50: * andrew@50: */ andrew@50: andrew@50: #include "MatchMarkers.h" andrew@50: andrew@50: MatchMarkers::MatchMarkers(){ andrew@51: load(); andrew@50: } andrew@50: andrew@50: andrew@50: void MatchMarkers::addMarker(const double& markerTime){ andrew@50: int i = 0; andrew@50: while (i < markers.size() && markers[i] < markerTime){ andrew@50: i++; andrew@50: } andrew@50: vector::iterator it; andrew@50: it = markers.begin(); andrew@50: markers.insert(it + i, markerTime); andrew@50: andrew@50: printf("\n"); andrew@50: for (i = 0;i< markers.size();i++) andrew@50: printf("marker[%i] %f\n", i, markers[i]); andrew@50: andrew@50: } andrew@50: andrew@50: andrew@50: void MatchMarkers::deleteMarker(const int& markerIndex){ andrew@50: if (markerIndex >= 0 && markerIndex < markers.size()){ andrew@50: vector::iterator it; andrew@50: it = markers.begin(); andrew@50: markers.erase(it+markerIndex); andrew@50: } andrew@50: } andrew@50: andrew@50: void MatchMarkers::saveMarkers(){ andrew@50: std::string filePath = "../../../data/markers.txt"; andrew@50: saveMarkers(filePath); andrew@50: andrew@50: } andrew@50: andrew@50: void MatchMarkers::saveMarkers(const std::string& filePath){ andrew@50: if (!markerOutputFile.is_open()){ andrew@50: markerOutputFile.open(filePath.c_str()); andrew@50: for (int i = 0;i < markers.size();i++){ andrew@50: markerOutputFile << markers[i] << endl; andrew@50: } andrew@50: markerOutputFile.close(); andrew@50: } andrew@50: } andrew@50: andrew@51: void MatchMarkers::load(){ andrew@51: loadMarkerFile("/Users/andrew/Documents/work/programming/of_preRelease_v007_osx/apps/myOpenFrameworks007/MultipleAudioMatcher/bin/data/lewesSavedMarkers.txt"); andrew@51: } andrew@51: andrew@51: andrew@51: andrew@51: void MatchMarkers::loadMarkerFile(std::string filePath){ andrew@51: markers.clear(); andrew@51: andrew@51: printf("MARKERS : READ FILE '%s'\n", filePath.c_str()); andrew@51: andrew@51: ifstream file ( filePath.c_str()); andrew@51: string tmpLine, value; andrew@51: stringstream iss; andrew@51: andrew@51: while ( file.good() ) andrew@51: { andrew@51: getline(file, tmpLine); andrew@51: iss << tmpLine; andrew@51: // printf("tmp line %s\n", tmpLine.c_str()); andrew@51: andrew@51: while(getline ( iss, value, '\n' )){ // read a string until next comma: http://www.cplusplus.com/reference/string/getline/ andrew@51: // cout << string( value, 1, value.length()-2 ); // display value removing the first and the last character from it andrew@51: // printf("line:%s\n", value.c_str()); andrew@51: string::size_type start = value.find_first_not_of(" ,\t\v\n"); andrew@51: string firstpart = value.substr(start, string::npos); andrew@51: string::size_type end = firstpart.find_first_of(" ,\t\v\n"); andrew@51: string part = firstpart.substr(0, end); andrew@51: markers.push_back(atof(part.c_str())); andrew@51: printf("marker[%i]: %f ms\n", (int)markers.size()-1, markers[markers.size()-1]); andrew@51: andrew@51: }//end while reading line andrew@51: iss.clear(); andrew@51: andrew@51: }//end while andrew@51: andrew@51: andrew@51: } andrew@51: andrew@51: andrew@51: //-------------------------------------------------------------- andrew@51: void MatchMarkers::loadFile(){ andrew@51: // first, create a string that will hold the URL andrew@51: string fileName; andrew@51: // openFile(string& URL) returns 1 if a file was picked andrew@51: // returns 0 when something went wrong or the user pressed 'cancel' andrew@51: int response = ofxFileDialogOSX::openFile(fileName); andrew@51: if(response){ andrew@51: loadMarkerFile(fileName); andrew@51: }else { andrew@51: printf("Could not open marker file\n"); andrew@51: } andrew@51: } andrew@51: andrew@51: andrew@51: //-------------------------------------------------------------- andrew@51: void MatchMarkers::saveFile(){ andrew@51: // create a string to hold the folder URL andrew@51: string folderURL; andrew@51: // and one for the filename andrew@51: string fileName; andrew@51: // saveFile(string& folderURL, string& fileName) returns 1 if a folder + file were specified andrew@51: // returns 0 when something went wrong or the user pressed 'cancel' andrew@51: int response = ofxFileDialogOSX::saveFile(folderURL, fileName); andrew@51: if(response){ andrew@51: // now you can use the folder URL and the filename. andrew@51: printf("\nfolder:'%s'\nfile'%s'\n", folderURL.c_str(), fileName.c_str()); andrew@51: saveMarkers(folderURL+"/"+fileName); andrew@51: }else { andrew@51: printf("Could not save marker file\n"); andrew@51: } andrew@51: } andrew@51: