OpenSceneGraph  3.0.1
Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
osgDB::ExternalFileWriter Class Reference

Helper allowing 'intelligent' writing of external files (images, shaders, etc.), regarding to a main file (a scene), especially in plugins. More...

List of all members.

Classes

struct  ObjectData

Public Types

typedef std::map< const
osg::Object *, ObjectData
ObjectsSet
 Set of written objects, with their absolute writing path.

Public Member Functions

 ExternalFileWriter (const std::string &srcDirectory, const std::string &destDirectory, bool keepRelativePaths, unsigned int allowUpDirs=0)
 Builds the helper class with all options.
 ExternalFileWriter (const std::string &destDirectory)
 Short constructor used when not relativising objects paths, or when having no initial model file (which is pretty the same here).
bool write (const osg::Object &obj, const osgDB::Options *options, std::string *out_absolutePath=NULL, std::string *out_relativePath=NULL)
 Writes the current object if not already done.
const ObjectsSetgetObjects () const
 Returns the written objects.

Protected Types

typedef std::multimap
< unsigned int, const
osg::Object * > 
SearchMap
typedef unsigned int ObjectIndex
 Integer type used for indices of unnamed objects.

Protected Member Functions

void generateObjectName (std::string &out_relativePath, std::string &out_absolutePath, int type)
 Generates a unique name for an object to be written on disk.
bool absoluteObjectPathExists (const std::string &path)

Protected Attributes

ObjectsSet _objects
SearchMap _searchMap
 Map used to search by absolute file path.
ObjectIndex _lastGeneratedObjectIndex
const std::string _srcDirectory
const std::string _destDirectory
bool _keepRelativePaths
const unsigned int _allowUpDirs

Detailed Description

Helper allowing 'intelligent' writing of external files (images, shaders, etc.), regarding to a main file (a scene), especially in plugins.

Goals are:


Member Typedef Documentation

typedef unsigned int osgDB::ExternalFileWriter::ObjectIndex [protected]

Integer type used for indices of unnamed objects.

Set of written objects, with their absolute writing path.

Objects being passed to the write() method but which have failed to be effectively written are also included.

typedef std::multimap<unsigned int, const osg::Object*> osgDB::ExternalFileWriter::SearchMap [protected]

Constructor & Destructor Documentation

osgDB::ExternalFileWriter::ExternalFileWriter ( const std::string &  srcDirectory,
const std::string &  destDirectory,
bool  keepRelativePaths,
unsigned int  allowUpDirs = 0 
)

Builds the helper class with all options.

Parameters:
srcDirectoryDirectory of the initial main file (if any), used as a base when relativising objects names. Not used if keepRelativePaths==false.
destDirectoryDirectory where to write the main file.
keepRelativePathsIf true, then relative paths of source objects are kept if possible (ex: If an image is initially "imageDir/image.jpg" relatively to the source dir, then we'd like to get "destDir/imageDir/image.jpg"). If false, then only the simple file name is used to write the object file.
allowUpDirsWhen relativising objects paths, sets the maximum number of directories the objects can be written "up" the destination directory. Not used if keepRelativePaths==false. Examples: If an image is initially "../image.jpg" relatively to the source dir *AND* if we allow one dir level up, then we'd like to get "destDirParent/destDir/../image.jpg" (= "destDirParent/image.jpg"). If we *DO NOT* allow one dir level up, then we'd like to get "destDir/image.jpg".
osgDB::ExternalFileWriter::ExternalFileWriter ( const std::string &  destDirectory)

Short constructor used when not relativising objects paths, or when having no initial model file (which is pretty the same here).


Member Function Documentation

bool osgDB::ExternalFileWriter::absoluteObjectPathExists ( const std::string &  path) [protected]
void osgDB::ExternalFileWriter::generateObjectName ( std::string &  out_relativePath,
std::string &  out_absolutePath,
int  type 
) [protected]

Generates a unique name for an object to be written on disk.

Side effect: updates _lastGeneratedObjectIndex to the index associated withe the returned name.

const ObjectsSet& osgDB::ExternalFileWriter::getObjects ( ) const [inline]

Returns the written objects.

bool osgDB::ExternalFileWriter::write ( const osg::Object obj,
const osgDB::Options options,
std::string *  out_absolutePath = NULL,
std::string *  out_relativePath = NULL 
)

Writes the current object if not already done.

Parameters:
objObject to write, using corresponding osgDB::write method.
optionsWriting options to pass to corresponding osgDB::write method.
[out]out_absolutePathPointer to a string to be filled with absolute writing path, or NULL.
[out]out_relativePathPointer to a string to be filled with write path relative to the destination directory if possible (absolute path if not), or NULL.
Returns:
true on success, false otherwise.

Member Data Documentation

const unsigned int osgDB::ExternalFileWriter::_allowUpDirs [protected]
const std::string osgDB::ExternalFileWriter::_destDirectory [protected]

Map used to search by absolute file path.

const std::string osgDB::ExternalFileWriter::_srcDirectory [protected]

The documentation for this class was generated from the following file:

osg logo
Generated at Mon Oct 3 2011 12:39:46 for the OpenSceneGraph by doxygen 1.7.5.