root/OpenSceneGraph/trunk/src/osgPlugins/ive/DataInputStream.h @ 13041

Revision 13041, 5.4 kB (checked in by robert, 3 years ago)

Ran script to remove trailing spaces and tabs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1#ifndef IVE_DATAINPUTSTREAM
2#define IVE_DATAINPUTSTREAM 1
3
4
5#include <iostream>        // for ifstream
6#include <string>
7#include <map>
8#include <vector>
9#include <osg/Vec2>
10#include <osg/Vec3>
11#include <osg/Vec4>
12#include <osg/Vec2d>
13#include <osg/Vec3d>
14#include <osg/Vec4d>
15#include <osg/Quat>
16#include <osg/Array>
17#include <osg/Matrix>
18#include <osg/Geometry>
19#include <osg/Image>
20#include <osg/StateSet>
21#include <osg/Uniform>
22#include <osg/ref_ptr>
23
24#include <osgTerrain/TerrainTile>
25#include <osgVolume/VolumeTile>
26
27#include <osgDB/ReaderWriter>
28
29#include "IveVersion.h"
30#include "DataTypeSize.h"
31#include "Exception.h"
32
33
34
35namespace ive{
36
37class DataInputStream{
38
39public:
40    DataInputStream(std::istream* istream, const osgDB::ReaderWriter::Options* options);
41    ~DataInputStream();
42
43    const osgDB::ReaderWriter::Options* getOptions() const { return _options.get(); }
44
45    inline unsigned int getVersion() const { return _version; }
46    bool readBool();
47    char readChar();
48    unsigned char readUChar();
49    unsigned short readUShort();
50    unsigned int readUInt();
51    int readInt();
52    int peekInt();
53    float readFloat();
54    long readLong();
55    unsigned long readULong();
56    double readDouble();
57    std::string readString();
58    void readCharArray(char* data, int size);
59
60    osg::Vec2 readVec2();
61    osg::Vec3 readVec3();
62    osg::Vec4 readVec4();
63    osg::Vec2d readVec2d();
64    osg::Vec3d readVec3d();
65    osg::Vec4d readVec4d();
66    osg::Plane readPlane();
67    osg::Vec4ub readVec4ub();
68    osg::Quat readQuat();
69    osg::Matrixf readMatrixf();
70    osg::Matrixd readMatrixd();
71    osg::Geometry::AttributeBinding readBinding();
72    osg::Array* readArray();
73    osg::IntArray* readIntArray();
74    osg::UByteArray* readUByteArray();
75    osg::UShortArray* readUShortArray();
76    osg::UIntArray* readUIntArray();
77    osg::Vec4ubArray* readVec4ubArray();
78    bool readPackedFloatArray(osg::FloatArray* floatArray);
79    osg::FloatArray* readFloatArray();
80    osg::Vec2Array* readVec2Array();
81    osg::Vec3Array* readVec3Array();
82    osg::Vec4Array* readVec4Array();
83    osg::Vec2bArray* readVec2bArray();
84    osg::Vec3bArray* readVec3bArray();
85    osg::Vec4bArray* readVec4bArray();
86    osg::Vec2sArray* readVec2sArray();
87    osg::Vec3sArray* readVec3sArray();
88    osg::Vec4sArray* readVec4sArray();
89    osg::Vec2dArray* readVec2dArray();
90    osg::Vec3dArray* readVec3dArray();
91    osg::Vec4dArray* readVec4dArray();
92
93    osg::Image* readImage(std::string s);
94    osg::Image* readImage(IncludeImageMode mode);
95    osg::Image* readImage();
96    osg::StateSet* readStateSet();
97    osg::StateAttribute* readStateAttribute();
98    osg::Uniform* readUniform();
99    osg::Shader* readShader();
100    osg::Drawable* readDrawable();
101    osg::Shape* readShape();
102    osg::Node* readNode();
103
104    osgTerrain::Layer* readLayer();
105    osgTerrain::Locator* readLocator();
106
107    osgVolume::Layer* readVolumeLayer();
108    osgVolume::Locator* readVolumeLocator();
109    osgVolume::Property* readVolumeProperty();
110
111    osg::Object* readObject();
112
113    // Set and get if must be generated external reference ive files
114    void setLoadExternalReferenceFiles(bool b) {_loadExternalReferenceFiles=b;};
115    bool getLoadExternalReferenceFiles() {return _loadExternalReferenceFiles;};
116
117
118    typedef std::map<std::string, osg::ref_ptr<osg::Image> >    ImageMap;
119    typedef std::map<int,osg::ref_ptr<osg::StateSet> >          StateSetMap;
120    typedef std::map<int,osg::ref_ptr<osg::StateAttribute> >    StateAttributeMap;
121    typedef std::map<int,osg::ref_ptr<osg::Uniform> >           UniformMap;
122    typedef std::map<int,osg::ref_ptr<osg::Shader> >            ShaderMap;
123    typedef std::map<int,osg::ref_ptr<osg::Drawable> >          DrawableMap;
124    typedef std::map<int,osg::ref_ptr<osg::Shape> >             ShapeMap;
125    typedef std::map<int,osg::ref_ptr<osg::Node> >              NodeMap;
126    typedef std::map<int,osg::ref_ptr<osgTerrain::Layer> >      LayerMap;
127    typedef std::map<int,osg::ref_ptr<osgTerrain::Locator> >    LocatorMap;
128    typedef std::map<int,osg::ref_ptr<osgVolume::Layer> >       VolumeLayerMap;
129    typedef std::map<int,osg::ref_ptr<osgVolume::Locator> >     VolumeLocatorMap;
130    typedef std::map<int,osg::ref_ptr<osgVolume::Property> >    VolumePropertyMap;
131
132    bool                _verboseOutput;
133    std::istream*       _istream;
134    int                 _byteswap;
135
136    bool                _owns_istream;
137
138    bool uncompress(std::istream& fin, std::string& destination) const;
139
140    void throwException(const std::string& message) { _exception = new Exception(message); }
141    void throwException(Exception* exception) { _exception = exception; }
142    const Exception* getException() const { return _exception.get(); }
143
144private:
145
146
147    int                 _version;
148    bool                _peeking;
149    int                 _peekValue;
150    ImageMap            _imageMap;
151    StateSetMap         _statesetMap;
152    StateAttributeMap   _stateAttributeMap;
153    UniformMap          _uniformMap;
154    ShaderMap           _shaderMap;
155    DrawableMap         _drawableMap;
156    ShapeMap            _shapeMap;
157    NodeMap             _nodeMap;
158    LayerMap            _layerMap;
159    LocatorMap          _locatorMap;
160    VolumeLayerMap      _volumeLayerMap;
161    VolumeLocatorMap    _volumeLocatorMap;
162    VolumePropertyMap   _volumePropertyMap;
163
164    bool _loadExternalReferenceFiles;
165
166    osg::ref_ptr<const osgDB::ReaderWriter::Options> _options;
167
168    osg::ref_ptr<Exception> _exception;
169};
170
171}
172#endif // IVE_DATAINPUTSTREAM
Note: See TracBrowser for help on using the browser.