diff --git a/source/app/SubWindowHandle.cpp b/source/app/SubWindowHandle.cpp index 87f91a4..40220c9 100644 --- a/source/app/SubWindowHandle.cpp +++ b/source/app/SubWindowHandle.cpp @@ -52,6 +52,7 @@ SubWindowHandle::SubWindowHandle( QWidget * parent, Bool isModule ) : m_cViewArea = new ViewArea( m_cScrollArea ); connect( m_cViewArea, SIGNAL( zoomFactorChanged( double , QPoint) ), this, SLOT( adjustScrollBarByZoom(double, QPoint) ) ); connect( m_cViewArea, SIGNAL( moveScroll( QPoint ) ), this, SLOT( adjustScrollBarByOffset(QPoint) ) ); + connect( m_cViewArea, SIGNAL( selectionChanged( QRect ) ), this, SLOT( updateSelectedArea( QRect ) ) ); connect( m_cScrollArea->horizontalScrollBar(), SIGNAL( actionTriggered( int ) ), this, SLOT( updateLastScrollValue() ) ); connect( m_cScrollArea->verticalScrollBar(), SIGNAL( actionTriggered( int ) ), this, SLOT( updateLastScrollValue() ) ); @@ -145,6 +146,11 @@ Bool SubWindowHandle::loadFile( PlaYUVerStreamInfo* streamInfo ) return true; } +Void SubWindowHandle::updateSelectedArea( QRect area ) +{ + m_cSelectedArea = area; +} + /** * Functions to enable a module in the * current SubWindow @@ -230,9 +236,14 @@ Bool SubWindowHandle::save( QString filename ) { Bool iRet = false; QApplication::setOverrideCursor( Qt::WaitCursor ); - if( !m_pCurrStream ) + if( !m_pCurrStream || m_cSelectedArea.isValid() ) { - if( !m_pcCurrFrame ) + PlaYUVerFrame* savedFrame = m_pcCurrFrame; + if( m_cSelectedArea.isValid() ) + { + savedFrame = new PlaYUVerFrame( m_pcCurrFrame, m_cSelectedArea ); + } + if( !savedFrame ) { return false; } @@ -247,8 +258,8 @@ Bool SubWindowHandle::save( QString filename ) { return false; } - m_pcCurrFrame->FrametoRGB8(); - QImage qimg = QImage( m_pcCurrFrame->getQImageBuffer(), m_pcCurrFrame->getWidth(), m_pcCurrFrame->getHeight(), QImage::Format_RGB888 ); + savedFrame->FrametoRGB8(); + QImage qimg = QImage( savedFrame->getQImageBuffer(), savedFrame->getWidth(), savedFrame->getHeight(), QImage::Format_RGB888 ); iRet = qimg.save( filename ); } else diff --git a/source/app/SubWindowHandle.h b/source/app/SubWindowHandle.h index 34c2f5d..d94715a 100644 --- a/source/app/SubWindowHandle.h +++ b/source/app/SubWindowHandle.h @@ -52,6 +52,7 @@ private: PlaYUVerStream* m_pCurrStream; PlaYUVerFrame* m_pcCurrFrame; + QRect m_cSelectedArea; QString m_cFilename; PlaYUVerModuleIf* m_pcCurrentModule; @@ -214,6 +215,7 @@ protected: void closeEvent( QCloseEvent *event ); public Q_SLOTS: + void updateSelectedArea( QRect area ); void adjustScrollBarByZoom( double factor, QPoint center ); void adjustScrollBarByOffset( QPoint Offset ); void updateLastScrollValue();