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

Revision 13557, 5.4 kB (checked in by robert, 10 days ago)

Added shaders to support experimental shader based displacement mapping technique osgTerrain::ShaderTerrain?.

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