Helper allowing 'intelligent' writing of external files (images, shaders, etc.), regarding to a main file (a scene), especially in plugins.
More...
|
| ExternalFileWriter (const std::string &srcDirectory, const std::string &destDirectory, bool keepRelativePaths, unsigned int allowUpDirs=0) |
| Builds the helper class with all options. More...
|
|
| 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). More...
|
|
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. More...
|
|
const ObjectsSet & | getObjects () const |
| Returns the written objects. More...
|
|
Helper allowing 'intelligent' writing of external files (images, shaders, etc.), regarding to a main file (a scene), especially in plugins.
Goals are:
- Enable writing out objects only once (even if referenced multiple times)
- Handle duplicates (avoid writing two different objects at the same place, renaming files as needed)
- Handle directory creation when paths don't just exist
- Generate writing paths which may keep original directory structure (depending on user wishes). Ex: Reading: model.osg and images/img1.jpg Writing with 'keepRelativePaths': /somePath/newmodel.osg and /somePath/images/img1.jpg Writing without 'keepRelativePaths': /somePath/newmodel.osg and /somePath/img1.jpg
- Author
- Sukender
- Todo:
- Handling of naming constraints (such as "8.3" names in 3DS)
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.
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
-
srcDirectory | Directory of the initial main file (if any), used as a base when relativising objects names. Not used if keepRelativePaths==false. |
destDirectory | Directory where to write the main file. |
keepRelativePaths | If 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. |
allowUpDirs | When 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).
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 with 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
-
| obj | Object to write, using corresponding osgDB::write method. |
| options | Writing options to pass to corresponding osgDB::write method. |
[out] | out_absolutePath | Pointer to a string to be filled with absolute writing path, or NULL. |
[out] | out_relativePath | Pointer 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.
const unsigned int osgDB::ExternalFileWriter::_allowUpDirs |
|
protected |
const std::string osgDB::ExternalFileWriter::_destDirectory |
|
protected |
bool osgDB::ExternalFileWriter::_keepRelativePaths |
|
protected |
ObjectIndex osgDB::ExternalFileWriter::_lastGeneratedObjectIndex |
|
protected |
SearchMap osgDB::ExternalFileWriter::_searchMap |
|
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: