diff options
Diffstat (limited to 'rotord/src/ofUtils.h')
| -rwxr-xr-x | rotord/src/ofUtils.h | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/rotord/src/ofUtils.h b/rotord/src/ofUtils.h new file mode 100755 index 0000000..0567e22 --- /dev/null +++ b/rotord/src/ofUtils.h @@ -0,0 +1,223 @@ +#pragma once + +//#include "ofConstants.h" + + +// core: --------------------------- +#include <cstdio> +#include <cstdarg> +#include <cmath> +#include <ctime> +#include <cstdlib> +#include <string> +#include <iostream> +#include <vector> +#include <cstring> +#include <sstream> //for ostringsream +#include <iomanip> //for setprecision +#include <fstream> +#include <algorithm> + +#include <bitset> // for ofToBinary + + + + +//#include "ofLog.h" + +/*#ifdef TARGET_WIN32 // for ofLaunchBrowser + #include <shellapi.h> +#endif +*/ + + +using namespace std; + +int ofNextPow2(int input); + +void ofResetElapsedTimeCounter(); // this happens on the first frame +float ofGetElapsedTimef(); +unsigned long ofGetElapsedTimeMillis(); +unsigned long ofGetElapsedTimeMicros(); +int ofGetFrameNum(); + +int ofGetSeconds(); +int ofGetMinutes(); +int ofGetHours(); + +//number of seconds since 1970 +unsigned int ofGetUnixTime(); + + +/* +unsigned long ofGetSystemTime( ); // system time in milliseconds; +unsigned long ofGetSystemTimeMicros( ); // system time in microseconds; + + //returns +string ofGetTimestampString(); +string ofGetTimestampString(string timestampFormat); + + +int ofGetYear(); +int ofGetMonth(); +int ofGetDay(); +int ofGetWeekday(); + +void ofLaunchBrowser(string url); +*/ +void ofEnableDataPath(); +void ofDisableDataPath(); +string ofToDataPath(string path, bool absolute=false); + +template<class T> +void ofRandomize(vector<T>& values) { + random_shuffle(values.begin(), values.end()); +} + +template<class T, class BoolFunction> +void ofRemove(vector<T>& values, BoolFunction shouldErase) { + values.erase(remove_if(values.begin(), values.end(), shouldErase), values.end()); +} + +template<class T> +void ofSort(vector<T>& values) { + sort(values.begin(), values.end()); +} +template<class T, class BoolFunction> +void ofSort(vector<T>& values, BoolFunction compare) { + sort(values.begin(), values.end(), compare); +} + +template <class T> +unsigned int ofFind(const vector<T>& values, const T& target) { + return distance(values.begin(), find(values.begin(), values.end(), target)); +} + +template <class T> +bool ofContains(const vector<T>& values, const T& target) { + return ofFind(values, target) != values.size(); +} + +//set the root path that ofToDataPath will use to search for files relative to the app +//the path must have a trailing slash (/) !!!! +void ofSetDataPathRoot( string root ); + +template <class T> +string ofToString(const T& value){ + ostringstream out; + out << value; + return out.str(); +} + +/// like sprintf "%4f" format, in this example precision=4 +template <class T> +string ofToString(const T& value, int precision){ + ostringstream out; + out << fixed << setprecision(precision) << value; + return out.str(); +} + +/// like sprintf "% 4d" or "% 4f" format, in this example width=4, fill=' ' +template <class T> +string ofToString(const T& value, int width, char fill ){ + ostringstream out; + out << fixed << setfill(fill) << setw(width) << value; + return out.str(); +} + +/// like sprintf "%04.2d" or "%04.2f" format, in this example precision=2, width=4, fill='0' +template <class T> +string ofToString(const T& value, int precision, int width, char fill ){ + ostringstream out; + out << fixed << setfill(fill) << setw(width) << setprecision(precision) << value; + return out.str(); +} + +template<class T> +string ofToString(const vector<T>& values) { + stringstream out; + int n = values.size(); + out << "{"; + if(n > 0) { + for(int i = 0; i < n - 1; i++) { + out << values[i] << ", "; + } + out << values[n - 1]; + } + out << "}"; + return out.str(); +} + +template <class T> +string ofToHex(const T& value) { + ostringstream out; + // pretend that the value is a bunch of bytes + unsigned char* valuePtr = (unsigned char*) &value; + // the number of bytes is determined by the datatype + int numBytes = sizeof(T); + // the bytes are stored backwards (least significant first) + for(int i = numBytes - 1; i >= 0; i--) { + // print each byte out as a 2-character wide hex value + out << setfill('0') << setw(2) << hex << (int) valuePtr[i]; + } + return out.str(); +} +template <> +string ofToHex(const string& value); +string ofToHex(const char* value); + +int ofHexToInt(const string& intHexString); +char ofHexToChar(const string& charHexString); +float ofHexToFloat(const string& floatHexString); +string ofHexToString(const string& stringHexString); + +int ofToInt(const string& intString); +char ofToChar(const string& charString); +float ofToFloat(const string& floatString); +bool ofToBool(const string& boolString); + +template <class T> +string ofToBinary(const T& value) { + ostringstream out; + const char* data = (const char*) &value; + // the number of bytes is determined by the datatype + int numBytes = sizeof(T); + // the bytes are stored backwards (least significant first) + for(int i = numBytes - 1; i >= 0; i--) { + bitset<8> cur(data[i]); + out << cur; + } + return out.str(); +} +template <> +string ofToBinary(const string& value); +string ofToBinary(const char* value); + +int ofBinaryToInt(const string& value); +char ofBinaryToChar(const string& value); +float ofBinaryToFloat(const string& value); +string ofBinaryToString(const string& value); + +string ofGetVersionInfo(); + +void ofSaveScreen(string filename); +void ofSaveFrame(bool bUseViewport = false); +void ofSaveViewport(string filename); + +//-------------------------------------------------- +vector <string> ofSplitString(const string & source, const string & delimiter, bool ignoreEmpty = false, bool trim = false); +string ofJoinString(vector <string> stringElements, const string & delimiter); +void ofStringReplace(string& input, string searchStr, string replaceStr); +bool ofIsStringInString(string haystack, string needle); + +string ofToLower(const string & src); +string ofToUpper(const string & src); + +string ofVAArgsToString(const char * format, ...); +string ofVAArgsToString(const char * format, va_list args); + +string ofSystem(string command); + +//ofTargetPlatform ofGetTargetPlatform(); + + |
