diff options
Diffstat (limited to 'rotord/ofUtils.cpp')
| -rwxr-xr-x | rotord/ofUtils.cpp | 745 |
1 files changed, 0 insertions, 745 deletions
diff --git a/rotord/ofUtils.cpp b/rotord/ofUtils.cpp deleted file mode 100755 index 7d7d9cc..0000000 --- a/rotord/ofUtils.cpp +++ /dev/null @@ -1,745 +0,0 @@ -#include "ofUtils.h" -//#include "ofImage.h" -//#include "ofTypes.h" -//#include "ofGraphics.h" -//#include "ofAppRunner.h" - -#include "Poco/String.h" -#include "Poco/LocalDateTime.h" -#include "Poco/DateTimeFormatter.h" - -#include <cctype> // for toupper - - - -/* -#ifdef TARGET_WIN32 - #ifndef _MSC_VER - #include <unistd.h> // this if for MINGW / _getcwd - #include <sys/param.h> // for MAXPATHLEN - #endif -#endif - - -#if defined(TARGET_OF_IPHONE) || defined(TARGET_OSX ) || defined(TARGET_LINUX) - #include <sys/time.h> -#endif - -#ifdef TARGET_OSX - #ifndef TARGET_OF_IPHONE - #include <mach-o/dyld.h> - #include <sys/param.h> // for MAXPATHLEN - #endif -#endif - -#ifdef TARGET_WIN32 - #include <mmsystem.h> - #ifdef _MSC_VER - #include <direct.h> - #endif - -#endif -*/ - -#ifndef MAXPATHLEN - #define MAXPATHLEN 1024 -#endif - - -static bool enableDataPath = true; -//static unsigned long startTime = ofGetSystemTime(); // better at the first frame ?? (currently, there is some delay from static init, to running. -//static unsigned long startTimeMicros = ofGetSystemTimeMicros(); - -/* -//-------------------------------------- -unsigned long ofGetElapsedTimeMillis(){ - return ofGetSystemTime() - startTime; -} - -//-------------------------------------- -unsigned long ofGetElapsedTimeMicros(){ - return ofGetSystemTimeMicros() - startTimeMicros; -} - -//-------------------------------------- -float ofGetElapsedTimef(){ - return ofGetElapsedTimeMicros() / 1000000.0f; -} - -//-------------------------------------- -void ofResetElapsedTimeCounter(){ - startTime = ofGetSystemTime(); - startTimeMicros = ofGetSystemTimeMicros(); -} -*/ -//======================================= -// this is from freeglut, and used internally: -/* Platform-dependent time in milliseconds, as an unsigned 32-bit integer. - * This value wraps every 49.7 days, but integer overflows cancel - * when subtracting an initial start time, unless the total time exceeds - * 32-bit, where the GLUT API return value is also overflowed. - */ -/* -unsigned long ofGetSystemTime( ) { - #ifndef TARGET_WIN32 - struct timeval now; - gettimeofday( &now, NULL ); - return now.tv_usec/1000 + now.tv_sec*1000; - #else - #if defined(_WIN32_WCE) - return GetTickCount(); - #else - return timeGetTime(); - #endif - #endif -} -*/ - -/* -unsigned long ofGetSystemTimeMicros( ) { - #ifndef TARGET_WIN32 - struct timeval now; - gettimeofday( &now, NULL ); - return now.tv_usec + now.tv_sec*1000000; - #else - #if defined(_WIN32_WCE) - return GetTickCount()*1000; - #else - return timeGetTime()*1000; - #endif - #endif -} -*/ -//-------------------------------------------------- -unsigned int ofGetUnixTime(){ - return (unsigned int)time(NULL); -} - -//default ofGetTimestampString returns in this format: 2011-01-15-18-29-35-299 -//-------------------------------------------------- -string ofGetTimestampString(){ - string timeFormat = "%Y-%m-%d-%H-%M-%S-%i"; - Poco::LocalDateTime now; - return Poco::DateTimeFormatter::format(now, timeFormat); -} - -//specify the string format - eg: %Y-%m-%d-%H-%M-%S-%i ( 2011-01-15-18-29-35-299 ) -//-------------------------------------------------- -string ofGetTimestampString(string timestampFormat){ - Poco::LocalDateTime now; - return Poco::DateTimeFormatter::format(now, timestampFormat); -} - -//-------------------------------------------------- -int ofGetSeconds(){ - time_t curr; - tm local; - time(&curr); - local =*(localtime(&curr)); - return local.tm_sec; -} - -//-------------------------------------------------- -int ofGetMinutes(){ - time_t curr; - tm local; - time(&curr); - local =*(localtime(&curr)); - return local.tm_min; -} - -//-------------------------------------------------- -int ofGetHours(){ - time_t curr; - tm local; - time(&curr); - local =*(localtime(&curr)); - return local.tm_hour; -} - -//-------------------------------------------------- -int ofGetYear(){ - time_t curr; - tm local; - time(&curr); - local =*(localtime(&curr)); - int year = local.tm_year + 1900; - return year; -} - -//-------------------------------------------------- -int ofGetMonth(){ - time_t curr; - tm local; - time(&curr); - local =*(localtime(&curr)); - int month = local.tm_mon + 1; - return month; -} - -//-------------------------------------------------- -int ofGetDay(){ - time_t curr; - tm local; - time(&curr); - local =*(localtime(&curr)); - return local.tm_mday; -} - -//-------------------------------------------------- -int ofGetWeekday(){ - time_t curr; - tm local; - time(&curr); - local =*(localtime(&curr)); - return local.tm_wday; -} - -//-------------------------------------------------- -void ofEnableDataPath(){ - enableDataPath = true; -} - -//-------------------------------------------------- -void ofDisableDataPath(){ - enableDataPath = false; -} - -//-------------------------------------------------- -//use ofSetDataPathRoot() to override this -static string & dataPathRoot(){ -#if defined TARGET_OSX - static string * dataPathRoot = new string("../../../data/"); -#elif defined TARGET_ANDROID - static string * dataPathRoot = new string("sdcard/"); -#elif defined(TARGET_LINUX) - static string * dataPathRoot = new string(ofFilePath::join(ofFilePath::getCurrentExeDir(), "data/")); -#else - static string * dataPathRoot = new string("data/"); -#endif - return *dataPathRoot; -} - -static bool & isDataPathSet(){ - static bool * dataPathSet = new bool(false); - return * dataPathSet; -} - -//-------------------------------------------------- -void ofSetDataPathRoot(string newRoot){ - string newPath = ""; - - #ifdef TARGET_OSX - #ifndef TARGET_OF_IPHONE - char path[MAXPATHLEN]; - uint32_t size = sizeof(path); - - if (_NSGetExecutablePath(path, &size) == 0){ - //printf("executable path is %s\n", path); - string pathStr = string(path); - - //theo: check this with having '/' as a character in a folder name - OSX treats the '/' as a ':' - //checked with spaces too! - - vector < string> pathBrokenUp = ofSplitString( pathStr, "/"); - - newPath = ""; - - for(int i = 0; i < pathBrokenUp.size()-1; i++){ - newPath += pathBrokenUp[i]; - newPath += "/"; - } - - //cout << newPath << endl; // some sanity checks here - //system( "pwd" ); - - chdir ( newPath.c_str() ); - //system("pwd"); - }else{ - ofLog(OF_LOG_FATAL_ERROR, "buffer too small; need size %u\n", size); - } - #endif - #endif - - dataPathRoot() = newRoot; - isDataPathSet() = true; -} - -//-------------------------------------------------- -string ofToDataPath(string path, bool makeAbsolute){ - - if (!isDataPathSet()) - ofSetDataPathRoot(dataPathRoot()); - - if( enableDataPath ){ - - //check if absolute path has been passed or if data path has already been applied - //do we want to check for C: D: etc ?? like substr(1, 2) == ':' ?? - if( path.length()==0 || (path.substr(0,1) != "/" && path.substr(1,1) != ":" && path.substr(0,dataPathRoot().length()) != dataPathRoot())){ - path = dataPathRoot()+path; - } - - if(makeAbsolute && (path.length()==0 || path.substr(0,1) != "/")){ - /* - #if !defined( TARGET_OF_IPHONE) & !defined(TARGET_ANDROID) - - #ifndef TARGET_WIN32 - char currDir[1024]; - path = "/"+path; - path = getcwd(currDir, 1024)+path; - - #else - - char currDir[1024]; - path = "\\"+path; - path = _getcwd(currDir, 1024)+path; - std::replace( path.begin(), path.end(), '/', '\\' ); // fix any unixy paths... - - - #endif - - - #else - //do we need iphone specific code here? - #endif - */ - } - - } - return path; -} - -//---------------------------------------- -template <> -string ofToHex(const string& value) { - ostringstream out; - // how many bytes are in the string - int numBytes = value.size(); - for(int i = 0; i < numBytes; i++) { - // print each byte as a 2-character wide hex value - out << setfill('0') << setw(2) << hex << (unsigned int) ((unsigned char)value[i]); - } - return out.str(); -} - -//---------------------------------------- -string ofToHex(const char* value) { - // this function is necessary if you want to print a string - // using a syntax like ofToHex("test") - return ofToHex((string) value); -} - -//---------------------------------------- -int ofToInt(const string& intString) { - int x = 0; - istringstream cur(intString); - cur >> x; - return x; -} - -//---------------------------------------- -int ofHexToInt(const string& intHexString) { - int x = 0; - istringstream cur(intHexString); - cur >> hex >> x; - return x; -} - -//---------------------------------------- -char ofHexToChar(const string& charHexString) { - int x = 0; - istringstream cur(charHexString); - cur >> hex >> x; - return (char) x; -} - -//---------------------------------------- -float ofHexToFloat(const string& floatHexString) { - union intFloatUnion { - int x; - float f; - } myUnion; - myUnion.x = 0; - istringstream cur(floatHexString); - cur >> hex >> myUnion.x; - return myUnion.f; -} - -//---------------------------------------- -string ofHexToString(const string& stringHexString) { - stringstream out; - stringstream stream(stringHexString); - // a hex string has two characters per byte - int numBytes = stringHexString.size() / 2; - for(int i = 0; i < numBytes; i++) { - string curByte; - // grab two characters from the hex string - stream >> setw(2) >> curByte; - // prepare to parse the two characters - stringstream curByteStream(curByte); - int cur = 0; - // parse the two characters as a hex-encoded int - curByteStream >> hex >> cur; - // add the int as a char to our output stream - out << (char) cur; - } - return out.str(); -} - -//---------------------------------------- -float ofToFloat(const string& floatString) { - float x = 0; - istringstream cur(floatString); - cur >> x; - return x; -} - -//---------------------------------------- -bool ofToBool(const string& boolString) { - static const string trueString = "true"; - static const string falseString = "false"; - string lower = Poco::toLower(boolString); - if(lower == trueString) { - return true; - } - if(lower == falseString) { - return false; - } - bool x = false; - istringstream cur(lower); - cur >> x; - return x; -} - -//---------------------------------------- -char ofToChar(const string& charString) { - char x = '\0'; - istringstream cur(charString); - cur >> x; - return x; -} - -//---------------------------------------- -template <> string ofToBinary(const string& value) { - stringstream out; - int numBytes = value.size(); - for(int i = 0; i < numBytes; i++) { - bitset<8> bitBuffer(value[i]); - out << bitBuffer; - } - return out.str(); -} - -//---------------------------------------- -string ofToBinary(const char* value) { - // this function is necessary if you want to print a string - // using a syntax like ofToBinary("test") - return ofToBinary((string) value); -} - -//---------------------------------------- -int ofBinaryToInt(const string& value) { - const int intSize = sizeof(int) * 8; - bitset<intSize> binaryString(value); - return (int) binaryString.to_ulong(); -} - -//---------------------------------------- -char ofBinaryToChar(const string& value) { - const int charSize = sizeof(char) * 8; - bitset<charSize> binaryString(value); - return (char) binaryString.to_ulong(); -} - -//---------------------------------------- -float ofBinaryToFloat(const string& value) { - const int floatSize = sizeof(float) * 8; - bitset<floatSize> binaryString(value); - union ulongFloatUnion { - unsigned long result; - float f; - } myUFUnion; - myUFUnion.result = binaryString.to_ulong(); - return myUFUnion.f; -} -//---------------------------------------- -string ofBinaryToString(const string& value) { - ostringstream out; - stringstream stream(value); - bitset<8> byteString; - int numBytes = value.size() / 8; - for(int i = 0; i < numBytes; i++) { - stream >> byteString; - out << (char) byteString.to_ulong(); - } - return out.str(); -} - -//-------------------------------------------------- -vector <string> ofSplitString(const string & source, const string & delimiter, bool ignoreEmpty, bool trim) { - vector<string> result; - if (delimiter.empty()) { - result.push_back(source); - return result; - } - string::const_iterator substart = source.begin(), subend; - while (true) { - subend = search(substart, source.end(), delimiter.begin(), delimiter.end()); - string sub(substart, subend); - if(trim) { - Poco::trimInPlace(sub); - } - if (!ignoreEmpty || !sub.empty()) { - result.push_back(sub); - } - if (subend == source.end()) { - break; - } - substart = subend + delimiter.size(); - } - return result; -} - -//-------------------------------------------------- -string ofJoinString(vector <string> stringElements, const string & delimiter){ - string resultString = ""; - int numElements = stringElements.size(); - - for(int k = 0; k < numElements; k++){ - if( k < numElements-1 ){ - resultString += stringElements[k] + delimiter; - } else { - resultString += stringElements[k]; - } - } - - return resultString; -} - -//-------------------------------------------------- -void ofStringReplace(string& input, string searchStr, string replaceStr){ - size_t uPos = 0; - size_t uFindLen = searchStr.length(); - size_t uReplaceLen = replaceStr.length(); - - if( uFindLen == 0 ){ - return; - } - - for( ;(uPos = input.find( searchStr, uPos )) != std::string::npos; ){ - input.replace( uPos, uFindLen, replaceStr ); - uPos += uReplaceLen; - } -} - -//-------------------------------------------------- -bool ofIsStringInString(string haystack, string needle){ - return ( strstr(haystack.c_str(), needle.c_str() ) != NULL ); -} - -//-------------------------------------------------- -string ofToLower(const string & src){ - string dst(src); - transform(src.begin(),src.end(),dst.begin(),::tolower); - return dst; -} - -//-------------------------------------------------- -string ofToUpper(const string & src){ - string dst(src); - transform(src.begin(),src.end(),dst.begin(),::toupper); - return dst; -} - -//-------------------------------------------------- -string ofVAArgsToString(const char * format, ...){ - // variadic args to string: - // http://www.codeproject.com/KB/string/string_format.aspx - static char aux_buffer[10000]; - string retStr(""); - if (NULL != format){ - - va_list marker; - - // initialize variable arguments - va_start(marker, format); - - // Get formatted string length adding one for NULL - size_t len = vsprintf(aux_buffer, format, marker) + 1; - - // Reset variable arguments - va_end(marker); - - if (len > 0) - { - va_list args; - - // initialize variable arguments - va_start(args, format); - - // Create a char vector to hold the formatted string. - vector<char> buffer(len, '\0'); - vsprintf(&buffer[0], format, args); - retStr = &buffer[0]; - va_end(args); - } - - } - return retStr; -} - -string ofVAArgsToString(const char * format, va_list args){ - // variadic args to string: - // http://www.codeproject.com/KB/string/string_format.aspx - char aux_buffer[10000]; - string retStr(""); - if (NULL != format){ - - // Get formatted string length adding one for NULL - vsprintf(aux_buffer, format, args); - retStr = aux_buffer; - - } - return retStr; -} - -/* -//-------------------------------------------------- -void ofLaunchBrowser(string url){ - - // http://support.microsoft.com/kb/224816 - - //make sure it is a properly formatted url - if(Poco::icompare(url.substr(0,7), "http://") != 0 && - Poco::icompare(url.substr(0,8), "https://") != 0) { - ofLog(OF_LOG_WARNING, "ofLaunchBrowser: url must begin http:// or https://"); - return; - } - - //---------------------------- - #ifdef TARGET_WIN32 - //---------------------------- - - #if (_MSC_VER) - // microsoft visual studio yaks about strings, wide chars, unicode, etc - ShellExecuteA(NULL, "open", url.c_str(), - NULL, NULL, SW_SHOWNORMAL); - #else - ShellExecute(NULL, "open", url.c_str(), - NULL, NULL, SW_SHOWNORMAL); - #endif - - //---------------------------- - #endif - //---------------------------- - - //-------------------------------------- - #ifdef TARGET_OSX - //-------------------------------------- - // ok gotta be a better way then this, - // this is what I found... - string commandStr = "open "+url; - system(commandStr.c_str()); - //---------------------------- - #endif - //---------------------------- - - //-------------------------------------- - #ifdef TARGET_LINUX - //-------------------------------------- - string commandStr = "xdg-open "+url; - int ret = system(commandStr.c_str()); - if(ret!=0) ofLog(OF_LOG_ERROR,"ofLaunchBrowser: couldn't open browser"); - //---------------------------- - #endif - //---------------------------- -} - -//-------------------------------------------------- -string ofGetVersionInfo(){ - string version; - stringstream sstr; - sstr << "of version: " << OF_VERSION << endl; - return sstr.str(); -} -*/ -//---- new to 006 -//from the forums http://www.openframeworks.cc/forum/viewtopic.php?t=1413 -/* -//-------------------------------------------------- -void ofSaveScreen(string filename) { - ofImage screen; - screen.allocate(ofGetWidth(), ofGetHeight(), OF_IMAGE_COLOR); - screen.grabScreen(0, 0, ofGetWidth(), ofGetHeight()); - screen.saveImage(filename); -} - -//-------------------------------------------------- -void ofSaveViewport(string filename) { - // because ofSaveScreen doesn't related to viewports - ofImage screen; - ofRectangle view = ofGetCurrentViewport(); - screen.allocate(view.width, view.height, OF_IMAGE_COLOR); - screen.grabScreen(0, 0, view.width, view.height); - screen.saveImage(filename); -} - -//-------------------------------------------------- -int saveImageCounter = 0; -void ofSaveFrame(bool bUseViewport){ - string fileName = ofToString(saveImageCounter) + ".png"; - if (bUseViewport){ - ofSaveViewport(fileName); - } else { - ofSaveScreen(fileName); - } - saveImageCounter++; -} - -//-------------------------------------------------- -string ofSystem(string command){ - FILE * ret = NULL; -#ifdef TARGET_WIN32 - ret = _popen(command.c_str(),"r"); -#else - ret = popen(command.c_str(),"r"); -#endif - - string strret; - char c; - - if (ret == NULL){ - ofLogError() << "ofSystem: error opening return file"; - }else{ - do { - c = fgetc (ret); - strret += c; - } while (c != EOF); - fclose (ret); - } - - return strret; -} - -//-------------------------------------------------- -ofTargetPlatform ofGetTargetPlatform(){ -#ifdef TARGET_LINUX - if(ofSystem("uname -m").find("x86_64")==0) - return OF_TARGET_LINUX64; - else - return OF_TARGET_LINUX; -#elif defined(TARGET_OSX) - return OF_TARGET_OSX; -#elif defined(TARGET_WIN32) - #if (_MSC_VER) - return OF_TARGET_WINVS; - #else - return OF_TARGET_WINGCC; - #endif -#elif defined(TARGET_ANDROID) - return OF_TARGET_ANDROID; -#elif defined(TARGET_OF_IPHONE) - return OF_TARGET_IPHONE; -#endif -} -*/
\ No newline at end of file |
