qtmobility/plugins/multimedia/qt7/qt7movieviewoutput.mm
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
equal deleted inserted replaced
11:06b8e2af4411 14:6fbed849b4f4
    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 
   153 
   156 
   154 QT7MovieViewOutput::QT7MovieViewOutput(QObject *parent)
   157 QT7MovieViewOutput::QT7MovieViewOutput(QObject *parent)
   155    :QT7VideoWindowControl(parent),
   158    :QT7VideoWindowControl(parent),
   156     m_movie(0),
   159     m_movie(0),
   157     m_movieView(0),
   160     m_movieView(0),
       
   161     m_layouted(false),
   158     m_winId(0),
   162     m_winId(0),
   159     m_fullscreen(false),
   163     m_fullscreen(false),
   160     m_aspectRatioMode(Qt::KeepAspectRatio),
   164     m_aspectRatioMode(Qt::KeepAspectRatio),
   161     m_brightness(0),
   165     m_brightness(0),
   162     m_contrast(0),
   166     m_contrast(0),
   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;