98cd7e3f774b33b39f547525730272d3db27d014
[WebKit-https.git] / WebCore / platform / graphics / Movie.cpp
1 /*
2  * Copyright (C) 2007 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #include "config.h"
27
28 #if ENABLE(VIDEO)
29 #include "Movie.h"
30
31 #include "IntRect.h"
32 #include "MIMETypeRegistry.h"
33
34 #if PLATFORM(MAC)
35 #include "MoviePrivateQTKit.h"
36 #elif PLATFORM(GTK)
37 #include "MoviePrivateGStreamer.h"
38 #endif
39
40 namespace WebCore {
41     
42     Movie::Movie(MovieClient* client)
43     : m_movieClient(client)
44     , m_private(new MoviePrivate(this))
45     , m_parentWidget(0)
46     , m_visible(false)
47     , m_rate(1.0f)
48     , m_volume(0.5f)
49     , m_muted(false)
50 {
51 }
52
53 Movie::~Movie()
54 {
55     delete m_private;
56 }
57
58 void Movie::load(String url)
59 {
60     m_private->load(url);
61 }    
62
63 void Movie::cancelLoad()
64 {
65     m_private->cancelLoad();
66 }    
67
68 void Movie::play()
69 {
70     m_private->play();
71 }
72
73 void Movie::pause()
74 {
75     m_private->pause();
76 }
77
78 float Movie::duration() const
79 {
80     return m_private->duration();
81 }
82
83 float Movie::currentTime() const
84 {
85     return m_private->currentTime();  
86 }
87
88 void Movie::seek(float time)
89 {
90     m_private->seek(time);
91 }
92
93 bool Movie::paused() const
94 {
95     return m_private->paused();
96 }
97
98 bool Movie::seeking() const
99 {
100     return m_private->seeking();
101 }
102
103 IntSize Movie::naturalSize()
104 {
105     return m_private->naturalSize();
106 }
107
108 bool Movie::hasVideo()
109 {
110     return m_private->hasVideo();
111 }
112
113 Movie::NetworkState Movie::networkState()
114 {
115     return m_private->networkState();
116 }
117
118 Movie::ReadyState Movie::readyState()
119 {
120     return m_private->readyState();
121 }
122
123 float Movie::volume() const
124 {
125     return m_volume;
126 }
127
128 void Movie::setVolume(float volume)
129 {
130     if (volume != m_volume) {
131         m_volume = volume;
132         m_private->setVolume(volume);   
133     }
134 }
135
136 float Movie::rate() const
137 {
138     return m_rate;
139 }
140
141 void Movie::setRate(float rate)
142 {
143     if (rate == m_rate) 
144         return;
145     m_rate = rate;
146     m_private->setRate(rate);   
147 }
148
149 bool Movie::muted() const
150 {
151     return m_muted;
152 }
153
154 void Movie::setMuted(bool muted)
155 {
156     if (muted == m_muted) 
157         return;
158     m_muted = muted;
159     m_private->setMuted(muted);
160 }
161
162 int Movie::dataRate() const
163 {
164     return m_private->dataRate();
165 }
166
167 void Movie::setEndTime(float time)
168 {
169     m_private->setEndTime(time);
170 }
171
172 void Movie::addCuePoint(float time)
173 {
174     if (m_cuePoints.contains(time))
175         return;
176     m_cuePoints.add(time);
177     m_private->addCuePoint(time);
178 }
179
180 void Movie::removeCuePoint(float time)
181 {
182     if (!m_cuePoints.contains(time))
183         return;
184     m_cuePoints.remove(time);
185     m_private->removeCuePoint(time);
186 }
187
188 void Movie::clearCuePoints()
189 {
190     m_cuePoints.clear();
191     m_private->clearCuePoints();
192 }
193
194 float Movie::maxTimeBuffered()
195 {
196     return m_private->maxTimeBuffered();
197 }
198
199 float Movie::maxTimeSeekable()
200 {
201     return m_private->maxTimeSeekable();
202 }
203
204 unsigned Movie::bytesLoaded()
205 {
206     return m_private->bytesLoaded();
207 }
208
209 bool Movie::totalBytesKnown()
210 {
211     return m_private->totalBytesKnown();
212 }
213
214 unsigned Movie::totalBytes()
215 {
216     return m_private->totalBytes();
217 }
218
219 void Movie::setRect(const IntRect& r) 
220
221     if (m_rect == r)
222         return;
223     m_rect = r;
224     m_private->setRect(r);
225 }
226
227 bool Movie::visible() const
228 {
229     return m_visible;
230 }
231
232 void Movie::setVisible(bool b)
233 {
234     if (m_visible == b)
235         return;
236     m_visible = b;
237     m_private->setVisible(b);
238 }
239
240 void Movie::paint(GraphicsContext* p, const IntRect& r)
241 {
242     m_private->paint(p, r);
243 }
244
245 void Movie::getSupportedTypes(HashSet<String>& types)
246 {
247     MoviePrivate::getSupportedTypes(types);
248
249
250 void Movie::networkStateChanged()
251 {
252     if (m_movieClient)
253         m_movieClient->movieNetworkStateChanged(this);
254 }
255
256 void Movie::readyStateChanged()
257 {
258     if (m_movieClient)
259         m_movieClient->movieReadyStateChanged(this);
260 }
261
262 void Movie::volumeChanged()
263 {
264     if (m_movieClient)
265         m_movieClient->movieVolumeChanged(this);
266 }
267
268 void Movie::timeChanged()
269 {
270     if (m_movieClient)
271         m_movieClient->movieTimeChanged(this);
272 }
273
274 void Movie::cuePointReached(float cueTime)
275 {
276     if (m_movieClient)
277         m_movieClient->movieCuePointReached(this, cueTime);
278 }
279
280 }
281 #endif