diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-12-09 00:14:48 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-12-09 00:14:48 (GMT) |
| commit | 05148e8a8db3a413edb711108fd860d3ee83154f (patch) | |
| tree | dd14ac13354b581580570a91a990ba80f672d19d /src/Format.cpp | |
| parent | 226de5b6f88c95a4f76675be067de1af5de13902 (diff) | |
| download | powder-05148e8a8db3a413edb711108fd860d3ee83154f.zip powder-05148e8a8db3a413edb711108fd860d3ee83154f.tar.gz | |
C++erific text cleaner function, also, it's a good idea to actually clean text coming from signs...
Diffstat (limited to 'src/Format.cpp')
| -rw-r--r-- | src/Format.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/Format.cpp b/src/Format.cpp index 5f9741d..f7c3c09 100644 --- a/src/Format.cpp +++ b/src/Format.cpp @@ -71,6 +71,58 @@ std::string format::UnixtimeToDateMini(time_t unixtime) } } +std::string format::CleanString(std::string dirtyString, int maxStringLength) +{ + return CleanString(dirtyString, std::string::npos, maxStringLength); +} + +std::string format::CleanString(std::string dirtyString, int maxVisualSize, int maxStringLength) +{ + std::string newString = dirtyString; + if(maxStringLength != std::string::npos && newString.size() > maxStringLength) + { + newString = newString.substr(0, maxStringLength); + } + if(maxVisualSize != std::string::npos && newString.size()*10 > maxVisualSize) + { + newString = newString.substr(0, maxVisualSize/10); + } + for(int i = 0; i < newString.size(); i++){ + if(!(newString[i]>=' ' && newString[i]<127)){ //Clamp to ASCII range + newString[i] = '?'; //Replace with "huh" char + } + } + return newString; +} + +std::string format::CleanString(char * dirtyData, int maxStringLength) +{ + return CleanString(dirtyData, std::string::npos, maxStringLength); +} + +std::string format::CleanString(char * dirtyData, int maxVisualSize, int maxStringLength) +{ + char * newData = new char[maxStringLength+1]; + strncpy(newData, dirtyData, maxStringLength); + newData[maxStringLength] = 0; + + std::string newString = std::string(newData); + delete[] newData; + + if(maxVisualSize != std::string::npos && newString.size()*10 > maxVisualSize) + { + newString = newString.substr(0, maxVisualSize/10); + } + for(int i = 0; i < newString.size(); i++){ + if(!(newString[i]>=' ' && newString[i]<127)){ //Clamp to ASCII range + newString[i] = '?'; //Replace with "huh" char + } + } + return newString; +} + + + std::vector<char> format::VideoBufferToPTI(const VideoBuffer & vidBuf) { std::vector<char> data; |
