OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Options.h
Go to the documentation of this file.
1 /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2  *
3  * This library is open source and may be redistributed and/or modified under
4  * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5  * (at your option) any later version. The full license is in LICENSE file
6  * included with this distribution, and on the openscenegraph.org website.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * OpenSceneGraph Public License for more details.
12 */
13 
14 #ifndef OSGDB_OPTIONS
15 #define OSGDB_OPTIONS 1
16 
17 #include <osgDB/Callbacks>
18 #include <osgDB/ObjectCache>
19 #include <osg/ObserverNodePath>
20 
21 #include <deque>
22 #include <list>
23 #include <iosfwd>
24 
25 namespace osgDB {
26 
27 
30 {
31  public:
32 
35  {
36  CACHE_NONE = 0,
37 
39  CACHE_NODES = 1<<0,
40 
42  CACHE_IMAGES = 1<<1,
43 
45  CACHE_HEIGHTFIELDS = 1<<2,
46 
48  CACHE_ARCHIVES = 1<<3,
49 
51  CACHE_OBJECTS = 1<<4,
52 
54  CACHE_SHADERS = 1<<5,
55 
57  CACHE_ALL = CACHE_NODES |
58  CACHE_IMAGES |
59  CACHE_HEIGHTFIELDS |
60  CACHE_ARCHIVES |
61  CACHE_OBJECTS |
62  CACHE_SHADERS
63  };
64 
69  {
70  FLOAT_PRECISION_ALL = 0,
71 
72  DOUBLE_PRECISION_VERTEX = 1<<0,
73  DOUBLE_PRECISION_NORMAL = 1<<1,
74  DOUBLE_PRECISION_COLOR = 1<<2,
75  DOUBLE_PRECISION_SECONDARY_COLOR = 1<<3,
76  DOUBLE_PRECISION_FOG_COORD = 1<<4,
77  DOUBLE_PRECISION_TEX_COORD = 1<<5,
78  DOUBLE_PRECISION_VERTEX_ATTRIB = 1<<6,
79 
80  DOUBLE_PRECISION_ALL = DOUBLE_PRECISION_VERTEX |
81  DOUBLE_PRECISION_NORMAL |
82  DOUBLE_PRECISION_COLOR |
83  DOUBLE_PRECISION_SECONDARY_COLOR |
84  DOUBLE_PRECISION_FOG_COORD |
85  DOUBLE_PRECISION_TEX_COORD |
86  DOUBLE_PRECISION_VERTEX_ATTRIB
87  };
88 
91  {
94  BUILD_KDTREES
95  };
96 
97 
99  osg::Object(true),
100  _objectCacheHint(CACHE_ARCHIVES),
101  _precisionHint(FLOAT_PRECISION_ALL),
102  _buildKdTreesHint(NO_PREFERENCE) {}
103 
104  Options(const std::string& str):
105  osg::Object(true),
106  _str(str),
107  _objectCacheHint(CACHE_ARCHIVES),
108  _precisionHint(FLOAT_PRECISION_ALL),
109  _buildKdTreesHint(NO_PREFERENCE)
110  {
111  parsePluginStringData(str);
112  }
113 
114  Options(const Options& options,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
115 
117 
118  Options* cloneOptions(const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY) const { return static_cast<Options*>(clone(copyop)); }
119 
121  void setOptionString(const std::string& str) { _str = str; parsePluginStringData(str); }
122 
124  const std::string& getOptionString() const { return _str; }
125 
127  void setDatabasePath(const std::string& str) { _databasePaths.clear(); _databasePaths.push_back(str); }
128 
130  FilePathList& getDatabasePathList() { return _databasePaths; }
131 
133  const FilePathList& getDatabasePathList() const { return _databasePaths; }
134 
135 
137  void setObjectCacheHint(CacheHintOptions useObjectCache) { _objectCacheHint = useObjectCache; }
138 
140  CacheHintOptions getObjectCacheHint() const { return _objectCacheHint; }
141 
143  void setObjectCache(ObjectCache* objectCache) { _objectCache = objectCache; }
144 
146  ObjectCache* getObjectCache() const { return _objectCache.get(); }
147 
148 
150  void setPrecisionHint(PrecisionHint hint) { _precisionHint = hint; }
151 
153  PrecisionHint getPrecisionHint() const { return _precisionHint; }
154 
156  void setBuildKdTreesHint(BuildKdTreesHint hint) { _buildKdTreesHint = hint; }
157 
159  BuildKdTreesHint getBuildKdTreesHint() const { return _buildKdTreesHint; }
160 
161 
163  void setAuthenticationMap(AuthenticationMap* authenticationMap) { _authenticationMap = authenticationMap; }
164 
166  const AuthenticationMap* getAuthenticationMap() const { return _authenticationMap.get(); }
167 
168 
170  void setPluginData(const std::string& s, void* v) const { _pluginData[s] = v; }
171 
173  void* getPluginData(const std::string& s) { return _pluginData[s]; }
174 
176  const void* getPluginData(const std::string& s) const
177  {
178  PluginDataMap::const_iterator itr = _pluginData.find(s);
179  return (itr == _pluginData.end()) ? 0 : itr->second;
180  }
181 
183  void removePluginData(const std::string& s) const { _pluginData.erase(s); }
184 
186  unsigned int getNumPluginData() const { return static_cast<unsigned int>(_pluginData.size()); }
187 
188 
190  void setPluginStringData(const std::string& s, const std::string& v) const { _pluginStringData[s] = v; }
191 
193  std::string& getPluginStringData(const std::string& s) { return _pluginStringData[s]; }
194 
196  const std::string getPluginStringData(const std::string& s) const
197  {
198  PluginStringDataMap::const_iterator itr = _pluginStringData.find(s);
199  return (itr == _pluginStringData.end()) ? std::string("") : itr->second;
200  }
201 
203  void removePluginStringData(const std::string& s) const { _pluginStringData.erase(s); }
204 
206  unsigned int getNumPluginStringData() const { return static_cast<unsigned int>(_pluginStringData.size()); }
207 
209  void parsePluginStringData(const std::string& str, char separator1=' ', char separator2='=');
210 
211 
213  void setFindFileCallback( FindFileCallback* cb) { _findFileCallback = cb; }
214 
216  FindFileCallback* getFindFileCallback() const { return _findFileCallback.get(); }
217 
218 
220  void setReadFileCallback( ReadFileCallback* cb) { _readFileCallback = cb; }
221 
223  ReadFileCallback* getReadFileCallback() const { return _readFileCallback.get(); }
224 
225 
227  void setWriteFileCallback( WriteFileCallback* cb) { _writeFileCallback = cb; }
228 
230  WriteFileCallback* getWriteFileCallback() const { return _writeFileCallback.get(); }
231 
232 
234  void setFileLocationCallback( FileLocationCallback* cb) { _fileLocationCallback = cb; }
235 
237  FileLocationCallback* getFileLocationCallback() const { return _fileLocationCallback.get(); }
238 
240  void setFileCache(FileCache* fileCache) { _fileCache = fileCache; }
241 
243  FileCache* getFileCache() const { return _fileCache.get(); }
244 
245 
247  void setTerrain(osg::observer_ptr<osg::Node>& terrain) { _terrain = terrain; }
248 
250  const osg::observer_ptr<osg::Node>& getTerrain() const { return _terrain; }
251 
253  void setParentGroup(osg::observer_ptr<osg::Group>& parentGroup) { _parentGroup= parentGroup; }
254 
256  const osg::observer_ptr<osg::Group>& getParentGroup() const { return _parentGroup; }
257 
258  protected:
259 
260  virtual ~Options() {}
261 
262  std::string _str;
264 
267 
271 
272  typedef std::map<std::string,void*> PluginDataMap;
273  mutable PluginDataMap _pluginData;
274  typedef std::map<std::string,std::string> PluginStringDataMap;
275  mutable PluginStringDataMap _pluginStringData;
276 
281 
283 
285  osg::observer_ptr<osg::Group> _parentGroup; // Set by the DatabasePager to the node where the requested file will be inserted. NOTE: observer since prent can be dettached whilst DB thread is loading the object
286 };
287 
288 }
289 
290 #endif // OSGDB_OPTIONS
WriteFileCallback * getWriteFileCallback() const
Definition: Options.h:230
virtual ~Options()
Definition: Options.h:260
CacheHintOptions
bit mask for setting up which object types get cached by readObject/Image/HeightField/Node(filename) ...
Definition: Options.h:34
const void * getPluginData(const std::string &s) const
Definition: Options.h:176
BuildKdTreesHint getBuildKdTreesHint() const
Definition: Options.h:159
osg::ref_ptr< AuthenticationMap > _authenticationMap
Definition: Options.h:270
BuildKdTreesHint
range of options of whether to build kdtrees automatically on loading
Definition: Options.h:90
void setBuildKdTreesHint(BuildKdTreesHint hint)
Definition: Options.h:156
PrecisionHint getPrecisionHint() const
Definition: Options.h:153
void setObjectCache(ObjectCache *objectCache)
Definition: Options.h:143
const AuthenticationMap * getAuthenticationMap() const
Definition: Options.h:166
CacheHintOptions getObjectCacheHint() const
Definition: Options.h:140
void setOptionString(const std::string &str)
Definition: Options.h:121
const FilePathList & getDatabasePathList() const
Definition: Options.h:133
ReadFileCallback * getReadFileCallback() const
Definition: Options.h:223
void setReadFileCallback(ReadFileCallback *cb)
Definition: Options.h:220
void setPluginData(const std::string &s, void *v) const
Definition: Options.h:170
FileLocationCallback * getFileLocationCallback() const
Definition: Options.h:237
void * getPluginData(const std::string &s)
Definition: Options.h:173
void setFileLocationCallback(FileLocationCallback *cb)
Definition: Options.h:234
const osg::observer_ptr< osg::Node > & getTerrain() const
Definition: Options.h:250
void setPrecisionHint(PrecisionHint hint)
Definition: Options.h:150
osg::ref_ptr< WriteFileCallback > _writeFileCallback
Definition: Options.h:279
Options(const std::string &str)
Definition: Options.h:104
void removePluginData(const std::string &s) const
Definition: Options.h:183
T * clone(const T *t, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
Definition: Object.h:242
PluginDataMap _pluginData
Definition: Options.h:273
#define META_Object(library, name)
Definition: Object.h:42
FilePathList _databasePaths
Definition: Options.h:263
FileCache * getFileCache() const
Definition: Options.h:243
BuildKdTreesHint _buildKdTreesHint
Definition: Options.h:269
ObjectCache * getObjectCache() const
Definition: Options.h:146
osg::observer_ptr< osg::Node > _terrain
Definition: Options.h:284
Definition: Archive.h:24
std::string & getPluginStringData(const std::string &s)
Definition: Options.h:193
void setPluginStringData(const std::string &s, const std::string &v) const
Definition: Options.h:190
std::deque< std::string > FilePathList
Definition: Callbacks.h:28
osg::ref_ptr< ReadFileCallback > _readFileCallback
Definition: Options.h:278
#define OSGDB_EXPORT
Definition: Export.h:39
void setDatabasePath(const std::string &str)
Definition: Options.h:127
const std::string & getOptionString() const
Definition: Options.h:124
void setFindFileCallback(FindFileCallback *cb)
Definition: Options.h:213
unsigned int getNumPluginStringData() const
Definition: Options.h:206
osg::ref_ptr< FindFileCallback > _findFileCallback
Definition: Options.h:277
CacheHintOptions _objectCacheHint
Definition: Options.h:265
FilePathList & getDatabasePathList()
Definition: Options.h:130
Options * cloneOptions(const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY) const
Definition: Options.h:118
const osg::observer_ptr< osg::Group > & getParentGroup() const
Definition: Options.h:256
unsigned int getNumPluginData() const
Definition: Options.h:186
void removePluginStringData(const std::string &s) const
Definition: Options.h:203
Definition: AlphaFunc.h:19
void setFileCache(FileCache *fileCache)
Definition: Options.h:240
const std::string getPluginStringData(const std::string &s) const
Definition: Options.h:196
void setTerrain(osg::observer_ptr< osg::Node > &terrain)
Definition: Options.h:247
PrecisionHint _precisionHint
Definition: Options.h:268
osg::ref_ptr< ObjectCache > _objectCache
Definition: Options.h:266
std::string _str
Definition: Options.h:262
void setObjectCacheHint(CacheHintOptions useObjectCache)
Definition: Options.h:137
osg::observer_ptr< osg::Group > _parentGroup
Definition: Options.h:285
std::map< std::string, std::string > PluginStringDataMap
Definition: Options.h:274
PluginStringDataMap _pluginStringData
Definition: Options.h:275
osg::ref_ptr< FileLocationCallback > _fileLocationCallback
Definition: Options.h:280
void setAuthenticationMap(AuthenticationMap *authenticationMap)
Definition: Options.h:163
void setWriteFileCallback(WriteFileCallback *cb)
Definition: Options.h:227
void setParentGroup(osg::observer_ptr< osg::Group > &parentGroup)
Definition: Options.h:253
std::map< std::string, void * > PluginDataMap
Definition: Options.h:272
osg::ref_ptr< FileCache > _fileCache
Definition: Options.h:282
FindFileCallback * getFindFileCallback() const
Definition: Options.h:216