author | harlekin <harlekin> | 2002-09-24 20:26:17 (UTC) |
---|---|---|
committer | harlekin <harlekin> | 2002-09-24 20:26:17 (UTC) |
commit | 7a04855af4e042152a47e90192dc4c2c20858e8c (patch) (side-by-side diff) | |
tree | cca4567d71b8210dc8905804cebc203b71fc4958 /noncore/multimedia/opieplayer2/xinevideowidget.cpp | |
parent | 02074fb65c5e879ef1d28e52cf4e1ec4a6727599 (diff) | |
download | opie-7a04855af4e042152a47e90192dc4c2c20858e8c.zip opie-7a04855af4e042152a47e90192dc4c2c20858e8c.tar.gz opie-7a04855af4e042152a47e90192dc4c2c20858e8c.tar.bz2 |
adapted to the new api
Diffstat (limited to 'noncore/multimedia/opieplayer2/xinevideowidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/xinevideowidget.cpp | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.cpp b/noncore/multimedia/opieplayer2/xinevideowidget.cpp index 9b26d41..1d88cea 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.cpp +++ b/noncore/multimedia/opieplayer2/xinevideowidget.cpp @@ -35,58 +35,59 @@ #include <qpainter.h> #include <qgfx_qws.h> #include <qdirectpainter_qws.h> #include <qgfx_qws.h> #include <qsize.h> #include <qapplication.h> #include <qpainter.h> #include <qpe/resource.h> #include "xinevideowidget.h" + // 0 deg rot: copy a line from src to dst (use libc memcpy) // 180 deg rot: copy a line from src to dst reversed static inline void memcpy_rev ( void *dst, void *src, size_t len ) { ((char *) src) += len; len >>= 1; while ( len-- ) *((short int *) dst) ++ = *--((short int *) src); } // 90 deg rot: copy a column from src to dst -static inline void memcpy_step ( void *dst, void *src, size_t len, size_t linestep ) +static inline void memcpy_step ( void *dst, void *src, size_t len, size_t step ) { len >>= 1; while ( len-- ) { *((short int *) dst) ++ = *((short int *) src); - ((char * ) src) += linestep; + ((char *) src ) += step; } } // 270 deg rot: copy a column from src to dst reversed -static inline void memcpy_step_rev ( void *dst, void *src, size_t len, size_t linestep ) +static inline void memcpy_step_rev ( void *dst, void *src, size_t len, size_t step ) { len >>= 1; - ((char *) src) += ( len * linestep ); + ((char *) src ) += ( len * step ); while ( len-- ) { - ((char *) src) -= linestep; + ((char *) src ) -= step; *((short int *) dst) ++ = *((short int *) src); } } XineVideoWidget::XineVideoWidget ( QWidget* parent, const char* name ) : QWidget ( parent, name, WRepaintNoErase | WResizeNoErase ) { setBackgroundMode ( NoBackground ); m_logo = 0; m_buff = 0; @@ -173,91 +174,99 @@ void XineVideoWidget::paintEvent ( QPaintEvent * ) memset ( dst, 0, leftfill ); // "left" border -> black if ( framefill ) { // blit in the video frame // see above for an explanation of the different memcpys switch ( rot ) { case 0: memcpy ( dst + leftfill, src, framefill ); break; case 1: memcpy_step ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break; case 2: memcpy_rev ( dst + leftfill, src, framefill ); break; case 3: memcpy_step_rev ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break; default: break; } + } if ( rightfill ) memset ( dst + leftfill + framefill, 0, rightfill ); // "right" border -> black } dst += m_bytes_per_line_fb; // advance one line in the framebuffer // advance one "line" in the xine frame data switch ( rot ) { case 0: src += m_bytes_per_line_frame; break; case 1: src -= m_bytes_per_pixel; break; case 2: src -= m_bytes_per_line_frame; break; case 3: src += m_bytes_per_pixel; break; default: break; } } } + } { // QVFB hack by Martin Jones // We need to "touch" all affected clip rects with a normal QPainter in addition to the QDirectPainter QPainter p ( this ); for ( int i = qt_bug_workaround_clip_rects. size ( ) - 1; i >= 0; i-- ) { p. fillRect ( QRect ( mapFromGlobal ( qt_bug_workaround_clip_rects [ i ]. topLeft ( )), qt_bug_workaround_clip_rects [ i ]. size ( )), QBrush ( NoBrush )); } } } } - QImage *XineVideoWidget::logo ( ) const { + +QImage *XineVideoWidget::logo ( ) const +{ return m_logo; } - void XineVideoWidget::setLogo ( QImage * image ) { + +void XineVideoWidget::setLogo ( QImage* logo ) +{ delete m_logo; - m_logo = image; + m_logo = logo; } - void XineVideoWidget::setVideoFrame ( uchar * img, int w, int h, int bpl ) { +void XineVideoWidget::setVideoFrame ( uchar* img, int w, int h, int bpl ) +{ bool rot90 = (( -m_rotation ) & 1 ); if ( rot90 ) { // if the rotation is 90 or 270 we have to swap width / height int d = w; w = h; h = d; } m_lastframe = m_thisframe; m_thisframe. setRect (( width ( ) - w ) / 2, ( height ( ) - h ) / 2, w , h ); m_buff = img; m_bytes_per_line_frame = bpl; // only repaint the area that *really* needs to be repainted - repaint (( + repaint ((( m_thisframe & m_lastframe ) != m_lastframe ) ? m_lastframe : m_thisframe, false ); } - void XineVideoWidget::resizeEvent ( QResizeEvent * ) { +void XineVideoWidget::resizeEvent ( QResizeEvent * ) +{ QSize s = size ( ); bool fs = ( s == qApp-> desktop ( ) -> size ( )); // if we are in fullscreen mode, do not rotate the video // (!! the paint routine uses m_rotation + qt_screen-> transformOrientation() !!) - m_rotation = fs ? -qt_screen-> transformOrientation ( ) : 0; if ( fs && qt_screen-> isTransformed ( )) s = qt_screen-> mapToDevice ( s ); emit videoResized ( s ); } - void XineVideoWidget::mouseReleaseEvent ( QMouseEvent * ) { +void XineVideoWidget::mouseReleaseEvent ( QMouseEvent * /*me*/ ) +{ emit clicked ( ); } |