OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ImageStream.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 OSG_IMAGESTREAM
15 #define OSG_IMAGESTREAM 1
16 
17 #include <osg/Image>
18 #include <osg/AudioStream>
19 
20 namespace osg {
21 
22 // forward declare of osg::Texture
23 class Texture;
24 
29 {
30  public:
31  ImageStream();
32 
34  ImageStream(const ImageStream& image,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
35 
36  virtual Object* cloneType() const { return new ImageStream(); }
37  virtual Object* clone(const CopyOp& copyop) const { return new ImageStream(*this,copyop); }
38  virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast<const ImageStream*>(obj)!=0; }
39  virtual const char* libraryName() const { return "osg"; }
40  virtual const char* className() const { return "ImageStream"; }
41 
43  virtual int compare(const Image& rhs) const;
44 
46  {
50  REWINDING
51  };
52 
53  virtual void seek(double /*time*/) {}
54 
55  virtual void play() { _status=PLAYING; }
56 
57  virtual void pause() { _status=PAUSED; }
58 
59  virtual void rewind() { _status=REWINDING; }
60 
61  virtual void quit(bool /*waitForThreadToExit*/ = true) {}
62 
63  StreamStatus getStatus() const { return _status; }
64 
65 
67  {
69  LOOPING
70  };
71 
73  {
74  if (_loopingMode == mode) return;
75 
76  _loopingMode = mode;
77  applyLoopingMode();
78  }
79 
80  LoopingMode getLoopingMode() const { return _loopingMode; }
81 
82  virtual double getCreationTime() const { return HUGE_VAL; }
83  virtual double getLength() const { return 0.0; }
84  virtual double getFrameRate() const { return 0.0; }
85  virtual double getCurrentTime() const { return 0.0; }
86 
87  virtual void setReferenceTime(double) {}
88  virtual double getReferenceTime() const { return 0.0; }
89 
90  virtual void setTimeMultiplier(double) {}
91  virtual double getTimeMultiplier() const { return 0.0; }
92 
93  virtual void setVolume(float) {}
94  virtual float getVolume() const { return 0.0f; }
95 
97  virtual float getAudioBalance() { return 0.0f; }
98  virtual void setAudioBalance(float /*b*/) {}
99 
100  typedef std::vector< osg::ref_ptr<osg::AudioStream> > AudioStreams;
101  void setAudioStreams(const AudioStreams& asl) { _audioStreams = asl; }
102  AudioStreams& getAudioStreams() { return _audioStreams; }
103  const AudioStreams& getAudioStreams() const { return _audioStreams; }
104 
109  virtual osg::Texture* createSuitableTexture() { return NULL; }
110 
111  protected:
112  virtual void applyLoopingMode() {}
113 
114  virtual ~ImageStream() {}
115 
118 
119  AudioStreams _audioStreams;
120 };
121 
122 } // namespace
123 
124 #endif
AudioStreams _audioStreams
Definition: ImageStream.h:119
#define OSG_EXPORT
Definition: Export.h:43
virtual void seek(double)
Definition: ImageStream.h:53
virtual void setReferenceTime(double)
Definition: ImageStream.h:87
LoopingMode getLoopingMode() const
Definition: ImageStream.h:80
#define NULL
Definition: Export.h:59
virtual osg::Texture * createSuitableTexture()
Definition: ImageStream.h:109
virtual Object * clone(const CopyOp &copyop) const
Definition: ImageStream.h:37
std::vector< osg::ref_ptr< osg::AudioStream > > AudioStreams
Definition: ImageStream.h:100
virtual void play()
Definition: ImageStream.h:55
virtual bool isSameKindAs(const Object *obj) const
Definition: ImageStream.h:38
virtual void pause()
Definition: ImageStream.h:57
virtual float getAudioBalance()
set the balance of the audio: -1 = left, 0 = center, 1 = right
Definition: ImageStream.h:97
virtual void setVolume(float)
Definition: ImageStream.h:93
StreamStatus getStatus() const
Definition: ImageStream.h:63
virtual double getCreationTime() const
Definition: ImageStream.h:82
virtual double getTimeMultiplier() const
Definition: ImageStream.h:91
virtual double getReferenceTime() const
Definition: ImageStream.h:88
virtual void applyLoopingMode()
Definition: ImageStream.h:112
virtual const char * libraryName() const
Definition: ImageStream.h:39
virtual ~ImageStream()
Definition: ImageStream.h:114
virtual Object * cloneType() const
Definition: ImageStream.h:36
virtual void setTimeMultiplier(double)
Definition: ImageStream.h:90
StreamStatus _status
Definition: ImageStream.h:116
virtual void setAudioBalance(float)
Definition: ImageStream.h:98
virtual double getLength() const
Definition: ImageStream.h:83
LoopingMode _loopingMode
Definition: ImageStream.h:117
virtual double getCurrentTime() const
Definition: ImageStream.h:85
virtual float getVolume() const
Definition: ImageStream.h:94
virtual void rewind()
Definition: ImageStream.h:59
Definition: AlphaFunc.h:19
const AudioStreams & getAudioStreams() const
Definition: ImageStream.h:103
void setLoopingMode(LoopingMode mode)
Definition: ImageStream.h:72
AudioStreams & getAudioStreams()
Definition: ImageStream.h:102
virtual void quit(bool=true)
Definition: ImageStream.h:61
void setAudioStreams(const AudioStreams &asl)
Definition: ImageStream.h:101
virtual double getFrameRate() const
Definition: ImageStream.h:84
virtual const char * className() const
Definition: ImageStream.h:40