soc-2008-mxcurioni: merged changes to revision 14798, compilation works for rendering...
[blender-staging.git] / source / blender / freestyle / intern / system / StringUtils.cpp
1
2 //
3 //  Copyright (C) : Please refer to the COPYRIGHT file distributed 
4 //   with this source distribution. 
5 //
6 //  This program is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU General Public License
8 //  as published by the Free Software Foundation; either version 2
9 //  of the License, or (at your option) any later version.
10 //
11 //  This program is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 //  GNU General Public License for more details.
15 //
16 //  You should have received a copy of the GNU General Public License
17 //  along with this program; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 //
20 ///////////////////////////////////////////////////////////////////////////////
21
22 //soc #include <qfileinfo.h>
23 #include "FreestyleConfig.h"
24 #include "StringUtils.h"
25
26 namespace StringUtils {
27
28   void getPathName(const string& path, const string& base, vector<string>& pathnames) {
29     string dir;
30     unsigned size = path.size();
31     pathnames.push_back(base);
32     for (unsigned pos = 0, sep = path.find(Config::PATH_SEP, pos);
33          pos < size;
34          pos = sep + 1, sep = path.find(Config::PATH_SEP, pos)) {
35       if (sep == (unsigned)string::npos)
36                 sep = size;
37       dir = path.substr(pos, sep - pos);
38
39 //soc      QFileInfo fi(dir.c_str());
40 //soc      string res = (const char*)fi.absoluteFilePath().toAscii();
41         char cleaned[FILE_MAX];
42         BLI_strncpy(cleaned, dir.c_str(), FILE_MAX);
43         BLI_cleanup_file(NULL, cleaned);
44         string res = toAscii( string(cleaned) );
45         
46       if (!base.empty())
47                 res += Config::DIR_SEP + base;
48       pathnames.push_back(res);
49     }
50   }
51
52         string toAscii( const string &str ){
53                 stringstream out("");
54                 char s;
55                 
56                 for(uint i=0; i < str.size() ; i++){
57                         s =  ((char)(str.at(i) & 0x7F));
58                         out << s;
59                 }       
60                 
61                 return out.str();
62         }
63         
64         const char* toAscii( const char *str ){
65                 return toAscii(string(str)).c_str();
66         }
67
68   
69
70 } // end of namespace StringUtils