| 1 | |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | |
|---|
| 8 | |
|---|
| 9 | |
|---|
| 10 | |
|---|
| 11 | |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | #include <osgDB/ReaderWriter> |
|---|
| 15 | #include <osgDB/FileNameUtils> |
|---|
| 16 | #include <osgDB/Archive> |
|---|
| 17 | |
|---|
| 18 | using namespace osgDB; |
|---|
| 19 | |
|---|
| 20 | osg::Object* ReaderWriter::ReadResult::getObject() { return _object.get(); } |
|---|
| 21 | osg::Image* ReaderWriter::ReadResult::getImage() { return dynamic_cast<osg::Image*>(_object.get()); } |
|---|
| 22 | osg::HeightField* ReaderWriter::ReadResult::getHeightField() { return dynamic_cast<osg::HeightField*>(_object.get()); } |
|---|
| 23 | osg::Node* ReaderWriter::ReadResult::getNode() { return dynamic_cast<osg::Node*>(_object.get()); } |
|---|
| 24 | osgDB::Archive* ReaderWriter::ReadResult::getArchive() { return dynamic_cast<osgDB::Archive*>(_object.get()); } |
|---|
| 25 | osg::Shader* ReaderWriter::ReadResult::getShader() { return dynamic_cast<osg::Shader*>(_object.get()); } |
|---|
| 26 | |
|---|
| 27 | osg::Object* ReaderWriter::ReadResult::takeObject() { osg::Object* obj = _object.get(); if (obj) { obj->ref(); _object=NULL; obj->unref_nodelete(); } return obj; } |
|---|
| 28 | osg::Image* ReaderWriter::ReadResult::takeImage() { osg::Image* image=dynamic_cast<osg::Image*>(_object.get()); if (image) { image->ref(); _object=NULL; image->unref_nodelete(); } return image; } |
|---|
| 29 | osg::HeightField* ReaderWriter::ReadResult::takeHeightField() { osg::HeightField* hf=dynamic_cast<osg::HeightField*>(_object.get()); if (hf) { hf->ref(); _object=NULL; hf->unref_nodelete(); } return hf; } |
|---|
| 30 | osg::Node* ReaderWriter::ReadResult::takeNode() { osg::Node* node=dynamic_cast<osg::Node*>(_object.get()); if (node) { node->ref(); _object=NULL; node->unref_nodelete(); } return node; } |
|---|
| 31 | osgDB::Archive* ReaderWriter::ReadResult::takeArchive() { osgDB::Archive* archive=dynamic_cast<osgDB::Archive*>(_object.get()); if (archive) { archive->ref(); _object=NULL; archive->unref_nodelete(); } return archive; } |
|---|
| 32 | osg::Shader* ReaderWriter::ReadResult::takeShader() { osg::Shader* shader=dynamic_cast<osg::Shader*>(_object.get()); if (shader) { shader->ref(); _object=NULL; shader->unref_nodelete(); } return shader; } |
|---|
| 33 | |
|---|
| 34 | ReaderWriter::~ReaderWriter() |
|---|
| 35 | { |
|---|
| 36 | } |
|---|
| 37 | |
|---|
| 38 | bool ReaderWriter::acceptsExtension(const std::string& extension) const |
|---|
| 39 | { |
|---|
| 40 | |
|---|
| 41 | std::string lowercase_ext = convertToLowerCase(extension); |
|---|
| 42 | if (_supportedExtensions.count(lowercase_ext)!=0) return true; |
|---|
| 43 | |
|---|
| 44 | |
|---|
| 45 | return (_supportedExtensions.count("*")!=0); |
|---|
| 46 | } |
|---|
| 47 | |
|---|
| 48 | void ReaderWriter::supportsProtocol(const std::string& fmt, const std::string& description) |
|---|
| 49 | { |
|---|
| 50 | _supportedProtocols[convertToLowerCase(fmt)] = description; |
|---|
| 51 | } |
|---|
| 52 | |
|---|
| 53 | void ReaderWriter::supportsExtension(const std::string& fmt, const std::string& description) |
|---|
| 54 | { |
|---|
| 55 | _supportedExtensions[convertToLowerCase(fmt)] = description; |
|---|
| 56 | } |
|---|
| 57 | |
|---|
| 58 | void ReaderWriter::supportsOption(const std::string& fmt, const std::string& description) |
|---|
| 59 | { |
|---|
| 60 | _supportedOptions[fmt] = description; |
|---|
| 61 | } |
|---|