OpenSceneGraph 3.6.5
ImageSequence
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_IMAGESEQUENCE
15#define OSG_IMAGESEQUENCE 1
16
17#include <OpenThreads/Mutex>
18#include <osg/ImageStream>
19
20#include <list>
21#include <set>
22
23namespace osg {
24
29{
30 public:
32
35
36 virtual Object* cloneType() const { return new ImageSequence(); }
37 virtual Object* clone(const CopyOp& copyop) const { return new ImageSequence(*this,copyop); }
38 virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast<const ImageSequence*>(obj)!=0; }
39 virtual const char* libraryName() const { return "osg"; }
40 virtual const char* className() const { return "ImageSequence"; }
41
43 virtual int compare(const Image& rhs) const;
44
45 virtual void setReferenceTime(double t) { _referenceTime = t; }
46 virtual double getReferenceTime() const { return _referenceTime; }
47
48 virtual void setTimeMultiplier(double tm) { _timeMultiplier = tm; }
49 virtual double getTimeMultiplier() const { return _timeMultiplier; }
50
61
62 typedef std::vector<ImageData> ImageDataList;
63
64 virtual void seek(double time);
65
66 virtual void play();
67
68 virtual void pause();
69
70 virtual void rewind();
71
80
81 void setMode(Mode mode);
82 Mode getMode() const { return _mode; }
83
84 void setLength(double length);
85 virtual double getLength() const { return _length; }
86
87
88 void addImageFile(const std::string& fileName);
89
90 void setImageFile(unsigned int pos, const std::string& fileName);
91 std::string getImageFile(unsigned int pos) const;
92
93 void addImage(osg::Image* image);
94
95 template<class T> void addImage(const osg::ref_ptr<T>& image) { addImage(image.get()); }
96
97 void setImage(int s,int t,int r,
98 GLint internalTextureformat,
99 GLenum pixelFormat,GLenum type,
100 unsigned char* data,
101 AllocationMode mode,
102 int packing=1) { Image::setImage(s,t,r,internalTextureformat, pixelFormat, type, data, mode, packing); }
103
104 void setImage(unsigned int pos, osg::Image* image);
105
106 template<class T> void setImage(unsigned int pos, const osg::ref_ptr<T>& image) { setImage(pos, image.get()); }
107
108 Image* getImage(unsigned int pos);
109 const Image* getImage(unsigned int pos) const;
110
111 unsigned int getNumImageData() const { return _imageDataList.size(); }
112
115
116
118 virtual bool requiresUpdateCall() const { return true; }
119
121 virtual void update(NodeVisitor* nv);
122
123
125 void setReadOptions(osg::Referenced* options) { _readOptions = options; }
126
129
131 const osg::Referenced* getReadOptions() const { return _readOptions.get(); }
132
133protected:
134
135 virtual ~ImageSequence() {}
136
137 virtual void applyLoopingMode();
138
139 void setImageToChild(int pos);
140
142
143 int imageIndex(double time);
144
145 // setImage without acquiring mutex.
146 void _setImage(unsigned int pos, osg::Image* image);
147
150
152 double _length;
153
155
156 mutable OpenThreads::Mutex _mutex;
157
159
161
162
164 double _seekTime;
165
167
168};
169
170} // namespace
171
172#endif
The core osg library provides the basic scene graph classes such as Nodes, State and Drawables,...
Definition AlphaFunc:19
Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
Image class for encapsulating the storage texture image data.
Definition Image:179
int s() const
Width of image.
Definition Image:291
int t() const
Height of image.
Definition Image:294
AllocationMode
Definition Image:215
virtual void setImage(int s, int t, int r, GLint internalTextureformat, GLenum pixelFormat, GLenum type, unsigned char *data, AllocationMode mode, int packing=1, int rowLength=0)
Set the image dimensions, format and data.
int r() const
Depth of image.
Definition Image:297
unsigned char * data()
Raw image data.
Definition Image:352
bool _seekTimeSet
Definition ImageSequence:163
void setMode(Mode mode)
virtual void update(NodeVisitor *nv)
update method for osg::Image subclasses that update themselves during the update traversal.
void addImage(const osg::ref_ptr< T > &image)
Definition ImageSequence:95
Image * getImage(unsigned int pos)
void setReadOptions(osg::Referenced *options)
Set the optional osgDB::Options object to use when reading images.
Definition ImageSequence:125
void setImage(unsigned int pos, const osg::ref_ptr< T > &image)
Definition ImageSequence:106
void setImage(int s, int t, int r, GLint internalTextureformat, GLenum pixelFormat, GLenum type, unsigned char *data, AllocationMode mode, int packing=1)
Definition ImageSequence:97
osg::ref_ptr< osg::Referenced > _readOptions
Definition ImageSequence:166
Mode
Definition ImageSequence:73
@ LOAD_AND_DISCARD_IN_UPDATE_TRAVERSAL
Definition ImageSequence:78
@ PAGE_AND_RETAIN_IMAGES
Definition ImageSequence:75
@ LOAD_AND_RETAIN_IN_UPDATE_TRAVERSAL
Definition ImageSequence:77
@ PAGE_AND_DISCARD_USED_IMAGES
Definition ImageSequence:76
@ PRE_LOAD_ALL_IMAGES
Definition ImageSequence:74
virtual ~ImageSequence()
Definition ImageSequence:135
virtual double getLength() const
Definition ImageSequence:85
unsigned int getNumImageData() const
Definition ImageSequence:111
void addImage(osg::Image *image)
const ImageDataList & getImageDataList() const
Definition ImageSequence:114
Mode _mode
Definition ImageSequence:151
Mode getMode() const
Definition ImageSequence:82
virtual Object * clone(const CopyOp &copyop) const
Clone an object, with Object* return type.
Definition ImageSequence:37
void setImageToChild(int pos)
void setImageFile(unsigned int pos, const std::string &fileName)
virtual Object * cloneType() const
Clone the type of an object, with Object* return type.
Definition ImageSequence:36
double _length
Definition ImageSequence:152
virtual int compare(const Image &rhs) const
Return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs.
int _previousAppliedImageIndex
Definition ImageSequence:160
virtual void rewind()
double _seekTime
Definition ImageSequence:164
void computeTimePerImage()
void setImage(unsigned int pos, osg::Image *image)
std::vector< ImageData > ImageDataList
Definition ImageSequence:62
virtual double getReferenceTime() const
Definition ImageSequence:46
virtual const char * className() const
return the name of the object's class type.
Definition ImageSequence:40
virtual double getTimeMultiplier() const
Definition ImageSequence:49
double _timeMultiplier
Definition ImageSequence:149
const Image * getImage(unsigned int pos) const
double _referenceTime
Definition ImageSequence:148
const osg::Referenced * getReadOptions() const
Get the optional osgDB::Options object used when reading images.
Definition ImageSequence:131
virtual void setReferenceTime(double t)
Definition ImageSequence:45
ImageDataList & getImageDataList()
Definition ImageSequence:113
virtual const char * libraryName() const
return the name of the object's library.
Definition ImageSequence:39
std::string getImageFile(unsigned int pos) const
virtual void setTimeMultiplier(double tm)
Definition ImageSequence:48
virtual void pause()
void addImageFile(const std::string &fileName)
void setLength(double length)
virtual void seek(double time)
osg::Referenced * getReadOptions()
Get the optional osgDB::Options object used when reading images.
Definition ImageSequence:128
ImageSequence(const ImageSequence &ImageSequence, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
Copy constructor using CopyOp to manage deep vs shallow copy.
double _timePerImage
Definition ImageSequence:154
virtual bool requiresUpdateCall() const
ImageSequence requires a call to update(NodeVisitor*) during the update traversal so return true.
Definition ImageSequence:118
virtual void play()
virtual bool isSameKindAs(const Object *obj) const
Definition ImageSequence:38
virtual void applyLoopingMode()
void _setImage(unsigned int pos, osg::Image *image)
ImageDataList _imageDataList
Definition ImageSequence:158
OpenThreads::Mutex _mutex
Definition ImageSequence:156
int imageIndex(double time)
std::string _filename
Definition ImageSequence:57
osg::ref_ptr< osg::Referenced > _imageRequest
Definition ImageSequence:59
osg::ref_ptr< osg::Image > _image
Definition ImageSequence:58
ImageData(const ImageData &id)
Visitor for type safe operations on osg::Nodes.
Definition NodeVisitor:82
Base class/standard interface for objects which require IO support, cloning and reference counting.
Definition Object:61
Smart pointer for handling referenced counted objects.
Definition ref_ptr:32
T * get() const
Definition ref_ptr:117
Base class for providing reference counted objects.
Definition Referenced:44
#define OSG_EXPORT
Definition Export:39

osg logo
Generated at Wed Jul 23 2025 00:00:00 for the OpenSceneGraph by doxygen 1.14.0.