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

Revision 13557, 5.4 kB (checked in by robert, 18 hours ago)

Changed the osgUI behaviour so that events are set to be handled by Widgets that have focus even if they don't directly use them.

  • 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.