Diffstat (limited to 'noncore/multimedia/opieplayer2/xinevideowidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/xinevideowidget.cpp | 91 |
1 files changed, 64 insertions, 27 deletions
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.cpp b/noncore/multimedia/opieplayer2/xinevideowidget.cpp index 4b69044..98446a0 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.cpp +++ b/noncore/multimedia/opieplayer2/xinevideowidget.cpp @@ -40,2 +40,3 @@ #include <qsize.h> +#include <qapplication.h> @@ -45,2 +46,3 @@ + static inline void memcpy_rev ( void *dst, void *src, size_t len ) @@ -76,17 +78,15 @@ static inline void memcpy_step_rev ( void *dst, void *src, size_t len, size_t st -XineVideoWidget::XineVideoWidget( int width, - int height, - QWidget* parent, - const char* name ) +XineVideoWidget::XineVideoWidget ( QWidget* parent, const char* name ) : QWidget ( parent, name, WRepaintNoErase | WResizeNoErase ) { - m_image = new QImage ( width, height, qt_screen-> depth ( )); - m_buff = 0; setBackgroundMode ( NoBackground ); - /* QImage image = Resource::loadImage("SoundPlayer"); - image = image.smoothScale( width, height ); - m_image = new QImage( image );*/ + m_image = 0; + m_buff = 0; + m_bytes_per_line_fb = qt_screen-> linestep ( ); + m_bytes_per_pixel = ( qt_screen->depth() + 7 ) / 8; + m_rotation = 0; } + XineVideoWidget::~XineVideoWidget ( ) @@ -108,2 +108,3 @@ void XineVideoWidget::paintEvent ( QPaintEvent * ) p. fillRect ( rect ( ), black ); + if ( m_image ) p. drawImage ( 0, 0, *m_image ); @@ -119,3 +120,3 @@ void XineVideoWidget::paintEvent ( QPaintEvent * ) - int rot = dp. transformOrientation ( ); + int rot = dp. transformOrientation ( ) + m_rotation; @@ -199,11 +200,2 @@ void XineVideoWidget::paintEvent ( QPaintEvent * ) -int XineVideoWidget::height ( ) const -{ - return m_image-> height ( ); -} - -int XineVideoWidget::width ( ) const -{ - return m_image-> width ( ); -} @@ -215,14 +207,19 @@ void XineVideoWidget::setImage ( QImage* image ) -void XineVideoWidget::setImage( uchar* image, int yoffsetXLine, - int xoffsetXBytes, int width, - int height, int linestep, int bytes, int bpp ) +void XineVideoWidget::setImage ( uchar* img, int w, int h, int bpl ) { + bool rot90 = (( -m_rotation ) & 1 ); + + if ( rot90 ) { + int d = w; + w = h; + h = d; + } m_lastframe = m_thisframe; - m_thisframe. setRect ( xoffsetXBytes, yoffsetXLine, width, height ); + m_thisframe. setRect (( width ( ) - w ) / 2, ( height ( ) - h ) / 2, w , h ); - m_buff = image; - m_bytes_per_line_fb = linestep; - m_bytes_per_line_frame = bytes; - m_bytes_per_pixel = bpp; +// qDebug ( "Frame: %d,%d - %dx%d", ( width ( ) - w ) / 2, ( height ( ) - h ) / 2, w , h ); + + m_buff = img; + m_bytes_per_line_frame = bpl; @@ -230 +227,41 @@ void XineVideoWidget::setImage( uchar* image, int yoffsetXLine, } + +void XineVideoWidget::resizeEvent ( QResizeEvent * ) +{ + QSize s = size ( ); + bool fs = ( s == qApp-> desktop ( )-> size ( )); + + m_rotation = fs ? -qt_screen-> transformOrientation ( ) : 0; + + if ( fs && qt_screen-> isTransformed ( )) { + s = qt_screen-> mapToDevice ( s ); + } + +// qDebug ( "\n\nResize: %dx%d, Rot: %d", s.width(),s.height(),m_rotation ); + + emit videoResized ( s ); +} + + +void XineVideoWidget::mousePressEvent ( QMouseEvent *me ) +{ + QWidget *p = parentWidget ( ); + + if ( p ) { + QMouseEvent pme ( QEvent::MouseButtonPress, mapToParent ( me-> pos ( )), me-> globalPos ( ), me-> button ( ), me-> state ( )); + + QApplication::sendEvent ( p, &pme ); + } +} + +void XineVideoWidget::mouseReleaseEvent ( QMouseEvent *me ) +{ + QWidget *p = parentWidget ( ); + + if ( p ) { + QMouseEvent pme ( QEvent::MouseButtonRelease, mapToParent ( me-> pos ( )), me-> globalPos ( ), me-> button ( ), me-> state ( )); + + QApplication::sendEvent ( p, &pme ); + } +} + |