OpenSceneGraph 3.6.5
ReaderWriter
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_READERWRITER
15#define OSGDB_READERWRITER 1
16
17#include <osg/Image>
18#include <osg/Shape>
19#include <osg/Node>
20#include <osg/ScriptEngine>
21
23
24#include <deque>
25#include <list>
26#include <iosfwd>
27
28namespace osgDB {
29
30class Archive;
31
33typedef std::deque<std::string> FilePathList;
34
35// forward declare
36class Options;
37
40{
41 public:
42
43
45 osg::Object(true) {}
46
48 osg::Object(rw,copyop) {}
49
50 virtual ~ReaderWriter();
51
53
54 typedef std::map<std::string, std::string> FormatDescriptionMap;
55 typedef std::list<std::string> FeatureList;
56
59
62
64 virtual const FormatDescriptionMap& supportedOptions() const { return _supportedOptions; }
65
67 virtual bool acceptsExtension(const std::string& /*extension*/) const;
68
69 virtual bool acceptsProtocol(const std::string& protocol) const;
70
100
102
105
106
107
109 {
110 public:
111
123
126
128
129 template<class T>
131
133 ReadResult& operator = (const ReadResult& rr) { if (this==&rr) return *this; _status=rr._status; _message=rr._message;_object=rr._object; return *this; }
134
135 bool operator < (const ReadResult& rhs) const { return _status < rhs._status; }
136
144
145 bool validObject() { return _object.valid(); }
146 bool validImage() { return getImage()!=0; }
147 bool validHeightField() { return getHeightField()!=0; }
148 bool validNode() { return getNode()!=0; }
149 bool validArchive() { return getArchive()!=0; }
150 bool validShader() { return getShader()!=0; }
151 bool validScript() { return getScript()!=0; }
152
160
161 std::string& message() { return _message; }
162 const std::string& message() const { return _message; }
163
165 std::string statusMessage() const;
166
167 ReadStatus status() const { return _status; }
170 bool error() const { return _status==ERROR_IN_READING_FILE; }
172 bool notFound() const { return _status==FILE_NOT_FOUND; }
174
175 protected:
176
178 std::string _message;
180
181 };
182
184 {
185 public:
186
194
197
199 WriteResult& operator = (const WriteResult& rr) { if (this==&rr) return *this; _status=rr._status; _message=rr._message; return *this; }
200
201 bool operator < (const WriteResult& rhs) const { return _status < rhs._status; }
202
203 std::string& message() { return _message; }
204 const std::string& message() const { return _message; }
205
207 std::string statusMessage() const;
208
209 WriteStatus status() const { return _status; }
210 bool success() const { return _status==FILE_SAVED; }
211 bool error() const { return _status==ERROR_IN_WRITING_FILE; }
213
214 protected:
215
217 std::string _message;
218 };
219
226
228
231 virtual bool fileExists(const std::string& filename, const Options* options) const;
232
234 virtual ReadResult openArchive(const std::string& /*fileName*/,ArchiveStatus, unsigned int =4096, const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
235
237 virtual ReadResult openArchive(std::istream& /*fin*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
238
239 virtual ReadResult readObject(const std::string& /*fileName*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
240 virtual ReadResult readImage(const std::string& /*fileName*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
241 virtual ReadResult readHeightField(const std::string& /*fileName*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
242 virtual ReadResult readNode(const std::string& /*fileName*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
243 virtual ReadResult readShader(const std::string& /*fileName*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
244 virtual ReadResult readScript(const std::string& /*fileName*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
245
246 virtual WriteResult writeObject(const osg::Object& /*obj*/,const std::string& /*fileName*/,const Options* =NULL) const {return WriteResult(WriteResult::NOT_IMPLEMENTED); }
247 virtual WriteResult writeImage(const osg::Image& /*image*/,const std::string& /*fileName*/,const Options* =NULL) const {return WriteResult(WriteResult::NOT_IMPLEMENTED); }
248 virtual WriteResult writeHeightField(const osg::HeightField& /*heightField*/,const std::string& /*fileName*/,const Options* =NULL) const {return WriteResult(WriteResult::NOT_IMPLEMENTED); }
249 virtual WriteResult writeNode(const osg::Node& /*node*/,const std::string& /*fileName*/,const Options* =NULL) const { return WriteResult(WriteResult::NOT_IMPLEMENTED); }
250 virtual WriteResult writeShader(const osg::Shader& /*shader*/,const std::string& /*fileName*/,const Options* =NULL) const {return WriteResult(WriteResult::NOT_IMPLEMENTED); }
251 virtual WriteResult writeScript(const osg::Script& /*script*/,const std::string& /*fileName*/,const Options* =NULL) const {return WriteResult(WriteResult::NOT_IMPLEMENTED); }
252
253 virtual ReadResult readObject(std::istream& /*fin*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
254 virtual ReadResult readImage(std::istream& /*fin*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
255 virtual ReadResult readHeightField(std::istream& /*fin*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
256 virtual ReadResult readNode(std::istream& /*fin*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
257 virtual ReadResult readShader(std::istream& /*fin*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
258 virtual ReadResult readScript(std::istream& /*fin*/,const Options* =NULL) const { return ReadResult(ReadResult::NOT_IMPLEMENTED); }
259
260 virtual WriteResult writeObject(const osg::Object& /*obj*/,std::ostream& /*fout*/,const Options* =NULL) const { return WriteResult(WriteResult::NOT_IMPLEMENTED); }
261 virtual WriteResult writeImage(const osg::Image& /*image*/,std::ostream& /*fout*/,const Options* =NULL) const { return WriteResult(WriteResult::NOT_IMPLEMENTED); }
262 virtual WriteResult writeHeightField(const osg::HeightField& /*heightField*/,std::ostream& /*fout*/,const Options* =NULL) const { return WriteResult(WriteResult::NOT_IMPLEMENTED); }
263 virtual WriteResult writeNode(const osg::Node& /*node*/,std::ostream& /*fout*/,const Options* =NULL) const { return WriteResult(WriteResult::NOT_IMPLEMENTED); }
264 virtual WriteResult writeShader(const osg::Shader& /*shader*/,std::ostream& /*fout*/,const Options* =NULL) const { return WriteResult(WriteResult::NOT_IMPLEMENTED); }
265 virtual WriteResult writeScript(const osg::Script& /*script*/,std::ostream& /*fout*/,const Options* =NULL) const { return WriteResult(WriteResult::NOT_IMPLEMENTED); }
266
272 void supportsProtocol(const std::string& fmt, const std::string& description);
273
279 void supportsExtension(const std::string& ext, const std::string& description);
280
283 void supportsOption(const std::string& opt, const std::string& description);
284
285 protected:
286
290};
291
292}
293
294#endif // OSGDB_READERWRITER
The core osg library provides the basic scene graph classes such as Nodes, State and Drawables,...
Definition AlphaFunc:19
The osgDB library provides support for reading and writing scene graphs, providing a plugin framework...
Definition Archive:24
std::deque< std::string > FilePathList
list of directories to search through which searching for files.
Definition Callbacks:28
Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
Image class for encapsulating the storage texture image data.
Definition Image:179
Base class for all internal nodes in the scene graph.
Definition Node:72
Base class/standard interface for objects which require IO support, cloning and reference counting.
Definition Object:61
Object()
Construct an object.
Definition Object:69
Smart pointer for handling referenced counted objects.
Definition ref_ptr:32
Definition ScriptEngine:30
osg::Shader is an application-level abstraction of an OpenGL glShader.
Definition Shader:89
Definition Shape:483
Base class for implementing database Archives.
Definition Archive:29
Options base class used for passing options into plugins to control their operation.
Definition Options:30
virtual WriteResult writeHeightField(const osg::HeightField &, std::ostream &, const Options *=NULL) const
Definition ReaderWriter:262
virtual const FormatDescriptionMap & supportedProtocols() const
Return which protocols are supported by ReaderWriter.
Definition ReaderWriter:58
static FeatureList featureAsString(Features feature)
Return feature as string.
FormatDescriptionMap _supportedOptions
Definition ReaderWriter:289
osgDB::Options Options
Definition ReaderWriter:227
virtual ~ReaderWriter()
virtual ReadResult readImage(const std::string &, const Options *=NULL) const
Definition ReaderWriter:240
std::map< std::string, std::string > FormatDescriptionMap
Definition ReaderWriter:54
virtual ReadResult readNode(std::istream &, const Options *=NULL) const
Definition ReaderWriter:256
virtual WriteResult writeImage(const osg::Image &, const std::string &, const Options *=NULL) const
Definition ReaderWriter:247
void supportsExtension(const std::string &ext, const std::string &description)
Specify ext string as a supported file extension.
virtual ReadResult readObject(const std::string &, const Options *=NULL) const
Definition ReaderWriter:239
virtual ReadResult readHeightField(const std::string &, const Options *=NULL) const
Definition ReaderWriter:241
virtual WriteResult writeObject(const osg::Object &, std::ostream &, const Options *=NULL) const
Definition ReaderWriter:260
virtual const FormatDescriptionMap & supportedExtensions() const
Return which list of file extensions supported by ReaderWriter.
Definition ReaderWriter:61
virtual WriteResult writeHeightField(const osg::HeightField &, const std::string &, const Options *=NULL) const
Definition ReaderWriter:248
virtual WriteResult writeNode(const osg::Node &, const std::string &, const Options *=NULL) const
Definition ReaderWriter:249
virtual ReadResult readShader(const std::string &, const Options *=NULL) const
Definition ReaderWriter:243
ArchiveStatus
Definition ReaderWriter:221
@ CREATE
Definition ReaderWriter:224
@ READ
Definition ReaderWriter:222
@ WRITE
Definition ReaderWriter:223
virtual ReadResult readScript(std::istream &, const Options *=NULL) const
Definition ReaderWriter:258
virtual Features supportedFeatures() const
Return available features.
virtual WriteResult writeShader(const osg::Shader &, const std::string &, const Options *=NULL) const
Definition ReaderWriter:250
ReaderWriter(const ReaderWriter &rw, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
Definition ReaderWriter:47
virtual ReadResult openArchive(const std::string &, ArchiveStatus, unsigned int=4096, const Options *=NULL) const
Open an archive for reading, writing, or to create an empty archive for writing to.
Definition ReaderWriter:234
virtual WriteResult writeNode(const osg::Node &, std::ostream &, const Options *=NULL) const
Definition ReaderWriter:263
std::list< std::string > FeatureList
Definition ReaderWriter:55
virtual WriteResult writeScript(const osg::Script &, std::ostream &, const Options *=NULL) const
Definition ReaderWriter:265
virtual ReadResult readShader(std::istream &, const Options *=NULL) const
Definition ReaderWriter:257
virtual WriteResult writeScript(const osg::Script &, const std::string &, const Options *=NULL) const
Definition ReaderWriter:251
FormatDescriptionMap _supportedExtensions
Definition ReaderWriter:288
virtual WriteResult writeImage(const osg::Image &, std::ostream &, const Options *=NULL) const
Definition ReaderWriter:261
FormatDescriptionMap _supportedProtocols
Definition ReaderWriter:287
virtual ReadResult readHeightField(std::istream &, const Options *=NULL) const
Definition ReaderWriter:255
virtual ReadResult openArchive(std::istream &, const Options *=NULL) const
Open an archive for reading.
Definition ReaderWriter:237
virtual ReadResult readImage(std::istream &, const Options *=NULL) const
Definition ReaderWriter:254
void supportsProtocol(const std::string &fmt, const std::string &description)
Specify fmt string as a supported protocol.
virtual WriteResult writeObject(const osg::Object &, const std::string &, const Options *=NULL) const
Definition ReaderWriter:246
Features
Bit mask for setting up which feature types are available for read and/or write.
Definition ReaderWriter:73
@ FEATURE_NONE
Definition ReaderWriter:74
@ FEATURE_WRITE_SCRIPT
Definition ReaderWriter:86
@ FEATURE_WRITE_HEIGHT_FIELD
Definition ReaderWriter:82
@ FEATURE_WRITE_IMAGE
Definition ReaderWriter:81
@ FEATURE_READ_HEIGHT_FIELD
Definition ReaderWriter:77
@ FEATURE_WRITE_SHADER
Definition ReaderWriter:84
@ FEATURE_READ_SCRIPT
Definition ReaderWriter:85
@ FEATURE_ALL
Definition ReaderWriter:87
@ FEATURE_WRITE_OBJECT
Definition ReaderWriter:80
@ FEATURE_READ_NODE
Definition ReaderWriter:78
@ FEATURE_READ_SHADER
Definition ReaderWriter:79
@ FEATURE_READ_OBJECT
Definition ReaderWriter:75
@ FEATURE_READ_IMAGE
Definition ReaderWriter:76
@ FEATURE_WRITE_NODE
Definition ReaderWriter:83
void supportsOption(const std::string &opt, const std::string &description)
Specify option string as a supported option string.
virtual bool acceptsExtension(const std::string &) const
Return true if ReaderWriter accepts specified file extension.
virtual const FormatDescriptionMap & supportedOptions() const
Return which list of file extensions supported by ReaderWriter.
Definition ReaderWriter:64
virtual WriteResult writeShader(const osg::Shader &, std::ostream &, const Options *=NULL) const
Definition ReaderWriter:264
META_Object(osgDB, ReaderWriter)
virtual ReadResult readScript(const std::string &, const Options *=NULL) const
Definition ReaderWriter:244
virtual bool fileExists(const std::string &filename, const Options *options) const
Determine if a file exists, normally the default implementation will be appropriate for local file ac...
virtual ReadResult readObject(std::istream &, const Options *=NULL) const
Definition ReaderWriter:253
ReaderWriter()
Definition ReaderWriter:44
virtual ReadResult readNode(const std::string &, const Options *=NULL) const
Definition ReaderWriter:242
virtual bool acceptsProtocol(const std::string &protocol) const
Definition ReaderWriter:109
bool validScript()
Definition ReaderWriter:151
osg::HeightField * takeHeightField()
bool notFound() const
Definition ReaderWriter:172
ReadResult(osg::Object *obj, ReadStatus status=FILE_LOADED)
Definition ReaderWriter:127
bool notHandled() const
Definition ReaderWriter:171
bool loadedFromCache() const
Definition ReaderWriter:169
bool notEnoughMemory() const
Definition ReaderWriter:173
bool validHeightField()
Definition ReaderWriter:147
ReadResult(const ReadResult &rr)
Definition ReaderWriter:132
ReadResult(const std::string &m)
Definition ReaderWriter:125
ReadStatus status() const
Definition ReaderWriter:167
const std::string & message() const
Definition ReaderWriter:162
bool validArchive()
Definition ReaderWriter:149
ReadResult(const osg::ref_ptr< T > &obj, ReadStatus status=FILE_LOADED)
Definition ReaderWriter:130
osgDB::Archive * getArchive()
bool validShader()
Definition ReaderWriter:150
std::string _message
Definition ReaderWriter:178
bool validImage()
Definition ReaderWriter:146
osg::HeightField * getHeightField()
std::string statusMessage() const
report the ReadResult's status, and message (if any). Useful for reporting of errors to users.
std::string & message()
Definition ReaderWriter:161
ReadStatus
Definition ReaderWriter:113
@ FILE_LOADED_FROM_CACHE
File found in cache and returned.
Definition ReaderWriter:119
@ FILE_NOT_HANDLED
File is not appropriate for this file reader, due to some incompatibility, but not a read error.
Definition ReaderWriter:115
@ FILE_LOADED
File successfully found, loaded, and converted into osg.
Definition ReaderWriter:118
@ INSUFFICIENT_MEMORY_TO_LOAD
File found but not loaded because estimated required memory surpasses available memory.
Definition ReaderWriter:121
@ NOT_IMPLEMENTED
read*() method not implemented in concrete ReaderWriter.
Definition ReaderWriter:114
@ FILE_NOT_FOUND
File could not be found or could not be read.
Definition ReaderWriter:116
@ ERROR_IN_READING_FILE
File found, loaded, but an error was encountered during processing.
Definition ReaderWriter:117
@ FILE_REQUESTED
Asynchronous file read has been requested, but returning immediately, keep polling plugin until file ...
Definition ReaderWriter:120
osgDB::Archive * takeArchive()
bool error() const
Definition ReaderWriter:170
bool validNode()
Definition ReaderWriter:148
bool success() const
Definition ReaderWriter:168
ReadStatus _status
Definition ReaderWriter:177
ReadResult(ReadStatus status=FILE_NOT_HANDLED)
Definition ReaderWriter:124
osg::ref_ptr< osg::Object > _object
Definition ReaderWriter:179
bool validObject()
Definition ReaderWriter:145
Definition ReaderWriter:184
std::string & message()
Definition ReaderWriter:203
WriteStatus
Definition ReaderWriter:188
@ FILE_SAVED
Definition ReaderWriter:192
@ ERROR_IN_WRITING_FILE
Definition ReaderWriter:191
@ FILE_NOT_HANDLED
Definition ReaderWriter:190
@ NOT_IMPLEMENTED
write*() method not implemented in concrete ReaderWriter.
Definition ReaderWriter:189
WriteResult(const WriteResult &rr)
Definition ReaderWriter:198
WriteStatus status() const
Definition ReaderWriter:209
WriteStatus _status
Definition ReaderWriter:216
bool success() const
Definition ReaderWriter:210
WriteResult(WriteStatus status=FILE_NOT_HANDLED)
Definition ReaderWriter:195
std::string statusMessage() const
Report the WriteResult's status, and message (if any). Useful for reporting of errors to users.
const std::string & message() const
Definition ReaderWriter:204
std::string _message
Definition ReaderWriter:217
bool notHandled() const
Definition ReaderWriter:212
WriteResult(const std::string &m)
Definition ReaderWriter:196
bool error() const
Definition ReaderWriter:211
#define NULL
Definition Export:55
#define OSGDB_EXPORT
Definition Export:39

osg logo
Generated at Wed Jul 23 2025 00:00:00 for the OpenSceneGraph by doxygen 1.14.0.