root/OpenSceneGraph/trunk/src/osgPlugins/quicktime/MovieData.h @ 13041

Revision 13041, 4.3 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 /*
2 *  MovieData.h
3 *  encapsulates movie-related stuff
4 *
5 *  Created by Stephan Huber on Wed Mar 10 2004.
6 *  Copyright (c) 2004 digital mind. All rights reserved.
7 *
8 */
9
10#ifndef _MOVIEDATA_HEADER_
11#define _MOVIEDATA_HEADER_
12
13#include <osg/Notify>
14#include <osg/Image>
15#include <string>
16
17#include "QTUtils.h"
18
19#include <math.h>
20
21
22    /**
23     * the class MovieData encapsulates all quicktime-related stuff, so it doesn't polute the namespaces
24     * it handles all calls to quicktime etc... It is mainly used by the QuicktimeImageStream, it is
25     * rarely needed in other contexts
26     */
27    class MovieData {
28
29        public:
30            /** default constructor */
31            MovieData();
32
33            /** default destructor */
34            ~MovieData();
35
36            /**
37             * loads a movie, start it playing at startTime, use Image for the storage
38             * @param image the image, to use as storage
39             * @param fileName the movie to open
40             * @param startTime the starttime to begin with
41             */
42            void load(osg::Image* image, std::string fileName, double startTime = 0.0);
43
44            /** @return the duration for this movie in seconds */
45            inline double getMovieDuration() { return GetMovieDuration(_movie)/_timescale;}
46
47            /** @return the current position for this movie in seconds */
48            inline double getMovieTime()  {return GetMovieTime(_movie,NULL)/_timescale; }
49
50            /** stes the movietime */
51            void setMovieTime(double atime);
52
53            /** @return the Movie-handle, to use it with other quicktime-calls */
54            inline Movie &getMovie() { return _movie; }
55
56            /** @return the current movieRate */
57            inline double getMovieRate() { return Fix2X(GetMovieRate(_movie)); }
58            /** @return returns the cached movierate, may differ to the real movierate */
59            inline double getCachedMovieRate() { return _movieRate; }
60
61            /** sets the MovieRate for this movie */
62            void setMovieRate(double rate);
63
64            /** sets the volume for the soundtrack of this movie */
65            void setVolume(float volume) { SetMovieVolume(_movie,(short)(ceil(volume*255.0f)));}
66            float getVolume() const { return GetMovieVolume(_movie) / 255.0f; }
67
68            void setAudioBalance(float f) {
69                Float32 balance = f;
70                SetMovieAudioBalance(_movie, balance, 0);
71            }
72
73            float getAudioBalance() {
74                Float32 balance;
75                float f;
76                GetMovieAudioBalance(_movie, &balance, 0);
77                f = balance;
78                return f;
79            }
80
81            /** @return true, if this movie is looping */
82            bool isLooping() const { return _isLooping; }
83
84            /** sets the looping mode */
85            void setLooping(bool loop) {
86                if (_isLooping != loop) {
87                    _isLooping = loop;
88                    switch (_isLooping) {
89                        case true:
90                            SetTimeBaseFlags(GetMovieTimeBase(_movie), loopTimeBase);
91                            break;
92                        case false:
93                            SetTimeBaseFlags(GetMovieTimeBase(_movie), 0);
94                            break;
95                    }
96                }
97            }
98
99
100        protected:
101            char*           _pointer;
102            Movie           _movie;
103            GWorldPtr       _gw;
104
105            unsigned int    _movieWidth, _movieHeight, _textureWidth, _textureHeight;
106            double          _timescale;
107            bool            _fError;
108            double          _movieRate;
109            bool            _preRolled;
110            bool            _isLooping;
111
112            /** inits the image for storage */
113            void _initImage(osg::Image* image);
114
115            /** inits the gWorld, where the movie gets drawn into */
116            void _initGWorldStuff(osg::Image * image);
117
118            /** inits the texture */
119            void _initTexture();
120
121            /** checks for an movie-error */
122            inline void _checkMovieError(std::string msg) {
123                if (GetMoviesError()) {
124                    _fError = true;
125                    OSG_ALWAYS << "MovieData: GetMoviesError fails at " << msg << std::endl;
126                }
127            }
128
129    };
130
131
132
133
134#endif
Note: See TracBrowser for help on using the browser.