OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Output.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_OUTPUT
15 #define OSGDB_OUTPUT 1
16 
17 #include <osg/Object>
18 
19 #include <osgDB/ReaderWriter>
20 #include <osgDB/fstream>
21 
22 #include <string>
23 #include <map>
24 
25 namespace osgDB {
26 
29 {
30  public:
31 
32  Output();
33  Output(const char* name);
34 
35  virtual ~Output();
36 
37 
38  void setOptions(const Options* options);
39  const Options* getOptions() const { return _options.get(); }
40 
41  void setWriteOutDefaultValues(bool flag) { _writeOutDefaultValues = flag; }
42  bool getWriteOutDefaultValues() const { return _writeOutDefaultValues; }
43 
44  void open(const char *name);
45 
46  // comment out temporarily to avoid compilation problems, RO Jan 2002.
47  // void open(const char *name,int mode);
48 
49  Output& indent();
50 
52  std::string wrapString(const char* str);
53 
55  std::string wrapString(const std::string& str);
56 
57  inline void setIndentStep(int step) { _indentStep = step; }
58  inline int getIndentStep() const { return _indentStep; }
59 
60  inline void setIndent(int indent) { _indent = indent; }
61  inline int getIndent() const { return _indent; }
62 
63  inline void setNumIndicesPerLine(int num) { _numIndicesPerLine = num; }
64  inline int getNumIndicesPerLine() const { return _numIndicesPerLine; }
65 
66  void moveIn();
67  void moveOut();
68 
69  virtual bool writeObject(const osg::Object& obj);
70  virtual void writeBeginObject(const std::string& name);
71  virtual void writeEndObject();
72  virtual void writeUseID(const std::string& id);
73  virtual void writeUniqueID(const std::string& id);
74 
75  bool getUniqueIDForObject(const osg::Object* obj,std::string& uniqueID);
76  bool createUniqueIDForObject(const osg::Object* obj,std::string& uniqueID);
77  bool registerUniqueIDForObject(const osg::Object* obj,std::string& uniqueID);
78 
80  {
84  FILENAME_ONLY
85  };
86 
87  inline void setPathNameHint(const PathNameHint pnh) { _pathNameHint = pnh; }
88  inline PathNameHint getPathNameHint() const { return _pathNameHint; }
89 
90  virtual std::string getFileNameForOutput(const std::string& filename) const;
91  const std::string& getFileName() const { return _filename; }
92 
93  // Set and get if export texture files during write
94  void setOutputTextureFiles(bool flag) { _outputTextureFiles = flag; }
95  bool getOutputTextureFiles() const { return _outputTextureFiles; }
96 
97  // support code for OutputTextureFiles
98  virtual std::string getTextureFileNameForOutput();
99 
100  void setOutputShaderFiles(bool flag) { _outputShaderFiles = flag; }
101  bool getOutputShaderFiles() const { return _outputShaderFiles; }
102 
103  virtual std::string getShaderFileNameForOutput();
104 
105  void setExternalFileWritten(const std::string& filename, bool hasBeenWritten=true);
106  bool getExternalFileWritten(const std::string& filename) const;
107 
108  protected:
109 
110 
111  virtual void init();
112 
114 
115  int _indent;
117 
119 
120  typedef std::map<const osg::Object*,std::string> UniqueIDToLabelMapping;
121  UniqueIDToLabelMapping _objectToUniqueIDMap;
122 
123  std::string _filename;
124 
126 
129 
131  unsigned int _shaderFileNameNumber;
132 
134 
135  typedef std::map<std::string, bool> ExternalFileWrittenMap;
136  ExternalFileWrittenMap _externalFileWritten;
137 };
138 
139 }
140 
141 #endif // __SG_OUTPUT_H
osg::ref_ptr< const Options > _options
Definition: Output.h:113
ExternalFileWrittenMap _externalFileWritten
Definition: Output.h:136
bool getWriteOutDefaultValues() const
Definition: Output.h:42
void setOutputTextureFiles(bool flag)
Definition: Output.h:94
int getIndent() const
Definition: Output.h:61
int _numIndicesPerLine
Definition: Output.h:118
void setIndent(int indent)
Definition: Output.h:60
bool getOutputShaderFiles() const
Definition: Output.h:101
const Options * getOptions() const
Definition: Output.h:39
bool _outputTextureFiles
Definition: Output.h:127
void OSGDB_EXPORT open(std::fstream &fs, const char *filename, std::ios_base::openmode mode)
void setOutputShaderFiles(bool flag)
Definition: Output.h:100
std::string _filename
Definition: Output.h:123
PathNameHint getPathNameHint() const
Definition: Output.h:88
std::map< const osg::Object *, std::string > UniqueIDToLabelMapping
Definition: Output.h:120
bool _writeOutDefaultValues
Definition: Output.h:133
bool getOutputTextureFiles() const
Definition: Output.h:95
void setIndentStep(int step)
Definition: Output.h:57
void setPathNameHint(const PathNameHint pnh)
Definition: Output.h:87
int getIndentStep() const
Definition: Output.h:58
std::map< std::string, bool > ExternalFileWrittenMap
Definition: Output.h:135
UniqueIDToLabelMapping _objectToUniqueIDMap
Definition: Output.h:121
unsigned int _textureFileNameNumber
Definition: Output.h:128
void setNumIndicesPerLine(int num)
Definition: Output.h:63
Definition: Archive.h:24
const std::string & getFileName() const
Definition: Output.h:91
int _indent
Definition: Output.h:115
#define OSGDB_EXPORT
Definition: Export.h:39
bool _outputShaderFiles
Definition: Output.h:130
int _indentStep
Definition: Output.h:116
unsigned int _shaderFileNameNumber
Definition: Output.h:131
PathNameHint _pathNameHint
Definition: Output.h:125
void setWriteOutDefaultValues(bool flag)
Definition: Output.h:41
int getNumIndicesPerLine() const
Definition: Output.h:64