WebCore:
[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 #endif
37
38 namespace WebCore {
39     
40     Movie::Movie(MovieClient* client)
41     : m_movieClient(client)
42     , m_private(new MoviePrivate(this))
43     , m_parentWidget(0)
44     , m_visible(false)
45     , m_rate(1.0f)
46     , m_volume(0.5f)
47     , m_muted(false)
48 {
49 }
50
51 Movie::~Movie()
52 {
53     delete m_private;
54 }
55
56 void Movie::load(String url)
57 {
58     m_private->load(url);
59 }    
60
61 void Movie::cancelLoad()
62 {
63     m_private->cancelLoad();
64 }    
65
66 void Movie::play()
67 {
68     m_private->play();
69 }
70
71 void Movie::pause()
72 {
73     m_private->pause();
74 }
75
76 float Movie::duration() const
77 {
78     return m_private->duration();
79 }
80
81 float Movie::currentTime() const
82 {
83     return m_private->currentTime();  
84 }
85
86 void Movie::seek(float time)
87 {
88     m_private->seek(time);
89 }
90
91 bool Movie::paused() const
92 {
93     return m_private->paused();
94 }
95
96 bool Movie::seeking() const
97 {
98     return m_private->seeking();
99 }
100
101 IntSize Movie::naturalSize()
102 {
103     return m_private->naturalSize();
104 }
105
106 bool Movie::hasVideo()
107 {
108     return m_private->hasVideo();
109 }
110
111 Movie::NetworkState Movie::networkState()
112 {
113     return m_private->networkState();
114 }
115
116 Movie::ReadyState Movie::readyState()
117 {
118     return m_private->readyState();
119 }
120
121 float Movie::volume() const
122 {
123     return m_volume;
124 }
125
126 void Movie::setVolume(float volume)
127 {
128     if (volume != m_volume) {
129         m_volume = volume;
130         m_private->setVolume(volume);   
131     }
132 }
133
134 float Movie::rate() const
135 {
136     return m_rate;
137 }
138
139 void Movie::setRate(float rate)
140 {
141     if (rate == m_rate) 
142         return;
143     m_rate = rate;
144     m_private->setRate(rate);   
145 }
146
147 bool Movie::muted() const
148 {
149     return m_muted;
150 }
151
152 void Movie::setMuted(bool muted)
153 {
154     if (muted == m_muted) 
155         return;
156     m_muted = muted;
157     m_private->setMuted(muted);
158 }
159
160 int Movie::dataRate() const
161 {
162     return m_private->dataRate();
163 }
164
165 void Movie::setEndTime(float time)
166 {
167     m_private->setEndTime(time);
168 }
169
170 void Movie::addCuePoint(float time)
171 {
172     if (m_cuePoints.contains(time))
173         return;
174     m_cuePoints.add(time);
175     m_private->addCuePoint(time);
176 }
177
178 void Movie::removeCuePoint(float time)
179 {
180     if (!m_cuePoints.contains(time))
181         return;
182     m_cuePoints.remove(time);
183     m_private->removeCuePoint(time);
184 }
185
186 void Movie::clearCuePoints()
187 {
188     m_cuePoints.clear();
189     m_private->clearCuePoints();
190 }
191
192 float Movie::maxTimeBuffered()
193 {
194     return m_private->maxTimeBuffered();
195 }
196
197 float Movie::maxTimeSeekable()
198 {
199     return m_private->maxTimeSeekable();
200 }
201
202 unsigned Movie::bytesLoaded()
203 {
204     return m_private->bytesLoaded();
205 }
206
207 bool Movie::totalBytesKnown()
208 {
209     return m_private->totalBytesKnown();
210 }
211
212 unsigned Movie::totalBytes()
213 {
214     return m_private->totalBytes();
215 }
216
217 void Movie::setRect(const IntRect& r) 
218
219     if (m_rect == r)
220         return;
221     m_rect = r;
222     m_private->setRect(r);
223 }
224
225 bool Movie::visible() const
226 {
227     return m_visible;
228 }
229
230 void Movie::setVisible(bool b)
231 {
232     if (m_visible == b)
233         return;
234     m_visible = b;
235     m_private->setVisible(b);
236 }
237
238 void Movie::paint(GraphicsContext* p, const IntRect& r)
239 {
240     m_private->paint(p, r);
241 }
242
243 void Movie::getSupportedTypes(HashSet<String>& types)
244 {
245     MoviePrivate::getSupportedTypes(types);
246
247
248 void Movie::networkStateChanged()
249 {
250     if (m_movieClient)
251         m_movieClient->movieNetworkStateChanged(this);
252 }
253
254 void Movie::readyStateChanged()
255 {
256     if (m_movieClient)
257         m_movieClient->movieReadyStateChanged(this);
258 }
259
260 void Movie::volumeChanged()
261 {
262     if (m_movieClient)
263         m_movieClient->movieVolumeChanged(this);
264 }
265
266 void Movie::timeChanged()
267 {
268     if (m_movieClient)
269         m_movieClient->movieTimeChanged(this);
270 }
271
272 void Movie::cuePointReached(float cueTime)
273 {
274     if (m_movieClient)
275         m_movieClient->movieCuePointReached(this, cueTime);
276 }
277
278 }
279 #endif