46 #include "qt7playercontrol.h" |
46 #include "qt7playercontrol.h" |
47 #include "qt7movieviewoutput.h" |
47 #include "qt7movieviewoutput.h" |
48 #include "qt7playersession.h" |
48 #include "qt7playersession.h" |
49 #include <QtCore/qdebug.h> |
49 #include <QtCore/qdebug.h> |
50 |
50 |
|
51 #include <QuartzCore/CIFilter.h> |
|
52 #include <QuartzCore/CIVector.h> |
51 |
53 |
52 QT_USE_NAMESPACE |
54 QT_USE_NAMESPACE |
53 |
55 |
54 #define VIDEO_TRANSPARENT(m) -(void)m:(NSEvent *)e{[[self superview] m:e];} |
56 #define VIDEO_TRANSPARENT(m) -(void)m:(NSEvent *)e{[[self superview] m:e];} |
55 |
57 |
60 qreal m_brightness, m_contrast, m_saturation, m_hue; |
62 qreal m_brightness, m_contrast, m_saturation, m_hue; |
61 } |
63 } |
62 |
64 |
63 - (TransparentQTMovieView *) init; |
65 - (TransparentQTMovieView *) init; |
64 - (void) setDrawRect:(QRect &)rect; |
66 - (void) setDrawRect:(QRect &)rect; |
|
67 - (CIImage *) view:(QTMovieView *)view willDisplayImage:(CIImage *)img; |
65 - (void) setContrast:(qreal) contrast; |
68 - (void) setContrast:(qreal) contrast; |
66 @end |
69 @end |
67 |
70 |
68 @implementation TransparentQTMovieView |
71 @implementation TransparentQTMovieView |
69 |
72 |
165 { |
169 { |
166 } |
170 } |
167 |
171 |
168 QT7MovieViewOutput::~QT7MovieViewOutput() |
172 QT7MovieViewOutput::~QT7MovieViewOutput() |
169 { |
173 { |
|
174 [(QTMovieView*)m_movieView release]; |
|
175 [(QTMovie*)m_movie release]; |
170 } |
176 } |
171 |
177 |
172 void QT7MovieViewOutput::setupVideoOutput() |
178 void QT7MovieViewOutput::setupVideoOutput() |
173 { |
179 { |
174 AutoReleasePool pool; |
180 AutoReleasePool pool; |
175 |
181 |
176 //qDebug() << "QT7MovieViewOutput::setupVideoOutput" << m_movie << m_winId; |
182 //qDebug() << "QT7MovieViewOutput::setupVideoOutput" << m_movie << m_winId; |
177 if (m_movie == 0 || m_winId <= 0) |
183 if (m_movie == 0 || m_winId <= 0) |
178 return; |
184 return; |
179 |
185 |
180 NSSize size = [[(QTMovie*)m_movie attributeForKey:@"QTMovieCurrentSizeAttribute"] sizeValue]; |
186 NSSize size = [[(QTMovie*)m_movie attributeForKey:@"QTMovieNaturalSizeAttribute"] sizeValue]; |
181 m_nativeSize = QSize(size.width, size.height); |
187 m_nativeSize = QSize(size.width, size.height); |
182 |
188 |
183 if (!m_movieView) |
189 if (!m_movieView) |
184 m_movieView = [[TransparentQTMovieView alloc] init]; |
190 m_movieView = [[TransparentQTMovieView alloc] init]; |
185 |
191 |
186 [(QTMovieView*)m_movieView setControllerVisible:NO]; |
192 [(QTMovieView*)m_movieView setControllerVisible:NO]; |
187 [(QTMovieView*)m_movieView setMovie:(QTMovie*)m_movie]; |
193 [(QTMovieView*)m_movieView setMovie:(QTMovie*)m_movie]; |
188 |
194 |
189 [(NSView *)m_winId addSubview:(QTMovieView*)m_movieView]; |
195 [(NSView *)m_winId addSubview:(QTMovieView*)m_movieView]; |
|
196 m_layouted = true; |
190 |
197 |
191 setDisplayRect(m_displayRect); |
198 setDisplayRect(m_displayRect); |
192 } |
199 } |
193 |
200 |
194 void QT7MovieViewOutput::setEnabled(bool) |
|
195 { |
|
196 } |
|
197 |
|
198 void QT7MovieViewOutput::setMovie(void *movie) |
201 void QT7MovieViewOutput::setMovie(void *movie) |
199 { |
202 { |
200 m_movie = movie; |
203 if (m_movie != movie) { |
201 setupVideoOutput(); |
204 if (m_movie) { |
|
205 if (m_movieView) |
|
206 [(QTMovieView*)m_movieView setMovie:nil]; |
|
207 |
|
208 [(QTMovie*)m_movie release]; |
|
209 } |
|
210 |
|
211 m_movie = movie; |
|
212 |
|
213 if (m_movie) |
|
214 [(QTMovie*)m_movie retain]; |
|
215 |
|
216 setupVideoOutput(); |
|
217 } |
|
218 } |
|
219 |
|
220 void QT7MovieViewOutput::updateNaturalSize(const QSize &newSize) |
|
221 { |
|
222 if (m_nativeSize != newSize) { |
|
223 m_nativeSize = newSize; |
|
224 emit nativeSizeChanged(); |
|
225 } |
202 } |
226 } |
203 |
227 |
204 WId QT7MovieViewOutput::winId() const |
228 WId QT7MovieViewOutput::winId() const |
205 { |
229 { |
206 return m_winId; |
230 return m_winId; |
207 } |
231 } |
208 |
232 |
209 void QT7MovieViewOutput::setWinId(WId id) |
233 void QT7MovieViewOutput::setWinId(WId id) |
210 { |
234 { |
211 m_winId = id; |
235 if (m_winId != id) { |
212 setupVideoOutput(); |
236 if (m_movieView && m_layouted) { |
|
237 [(QTMovieView*)m_movieView removeFromSuperview]; |
|
238 m_layouted = false; |
|
239 } |
|
240 |
|
241 m_winId = id; |
|
242 setupVideoOutput(); |
|
243 } |
213 } |
244 } |
214 |
245 |
215 QRect QT7MovieViewOutput::displayRect() const |
246 QRect QT7MovieViewOutput::displayRect() const |
216 { |
247 { |
217 return m_displayRect; |
248 return m_displayRect; |