Merge branch 'fixSelectionToolUsage' into featurePelFormatsApi

Conflicts:
	source/lib/PlaYUVerFrame.cpp
This commit is contained in:
jfmcarreira committed 2014-10-27 00:15:53 +00:00
commit 3baa6775e5
9 files changed
+126 -71

No files matched your search

+1 -1
View File
@@ -66,7 +66,7 @@ SubWindowHandle* ModulesHandle::processModuleHandlingOpt()
if( m_iOptionSelected >= 0 )
{
PlaYUVerModuleIf* pcCurrModuleIf = m_pcPlaYUVerModules.at( m_iOptionSelected );
m_iOptionSelected = INVALID_OPT;
if( pcCurrModuleIf->m_pcAction->isChecked() )
{
return enableModuleIf( pcCurrModuleIf );
+18 -15
View File
@@ -491,22 +491,25 @@ Void FramePropertiesSideBar::setSelection( const QRect &selectionArea )
// This is necessary to stop computation because image.bits() is
// currently used by threaded histogram algorithm.
m_cSelectionArea = selectionArea;
if( m_pcFrame )
{
m_cSelectionArea = selectionArea;
if( selectionArea.isValid() )
{
histogramWidget->stopHistogramComputation();
histogramWidget->updateSelectionData( new PlaYUVerFrame(m_pcFrame, selectionArea));
fullImageButton->show();
selectionImageButton->show();
selectionImageButton->click();
slotRenderingChanged( HistogramWidget::ImageSelectionHistogram );
}
else
{
fullImageButton->hide();
selectionImageButton->hide();
slotRenderingChanged( HistogramWidget::FullImageHistogram );
if( selectionArea.isValid() )
{
histogramWidget->stopHistogramComputation();
histogramWidget->updateSelectionData( new PlaYUVerFrame(m_pcFrame, selectionArea));
fullImageButton->show();
selectionImageButton->show();
selectionImageButton->click();
slotRenderingChanged( HistogramWidget::ImageSelectionHistogram );
}
else
{
fullImageButton->hide();
selectionImageButton->hide();
slotRenderingChanged( HistogramWidget::FullImageHistogram );
}
}
}
+13 -21
View File
@@ -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,31 +236,17 @@ Bool SubWindowHandle::save( QString filename )
{
Bool iRet = false;
QApplication::setOverrideCursor( Qt::WaitCursor );
if( !m_pCurrStream )
PlaYUVerFrame* saveFrame = m_pcCurrFrame;
if( m_cSelectedArea.isValid() )
{
if( !m_pcCurrFrame )
{
return false;
}
Int iFileFormat = PlaYUVerStream::INVALID_INPUT;
QStringList formatsExt = PlaYUVerStream::supportedReadFormatsExt();
QString currExt = QFileInfo( filename ).suffix();
if( formatsExt.contains( currExt ) )
{
iFileFormat = formatsExt.indexOf( currExt );
}
if( iFileFormat == PlaYUVerStream::YUVINPUT )
{
return false;
}
m_pcCurrFrame->FrametoRGB8();
QImage qimg = QImage( m_pcCurrFrame->getQImageBuffer(), m_pcCurrFrame->getWidth(), m_pcCurrFrame->getHeight(), QImage::Format_RGB888 );
iRet = qimg.save( filename );
saveFrame = new PlaYUVerFrame( m_pcCurrFrame, m_cSelectedArea );
}
else
if( !saveFrame )
{
iRet = m_pCurrStream->saveFrame( filename );
return false;
}
iRet = PlaYUVerStream::saveFrame( filename, saveFrame );
QApplication::restoreOverrideCursor();
return iRet;
}
+2
View File
@@ -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();
+10 -9
View File
@@ -436,7 +436,7 @@ void ViewArea::paintEvent( QPaintEvent *event )
QRect imgr = viewToWindow( QRect( 0, 0, m_pixmap.width(), m_pixmap.height() ) );
myPath.addRect( imgr );
myPath.addRect( sr/*m_selectedArea*/);
myPath.addRect( sr); //m_selectedArea
painter.drawPath( myPath );
// 2) Draw the selection rectangle
@@ -641,7 +641,7 @@ void ViewArea::mouseMoveEvent( QMouseEvent *event )
{
// If the selection is only vertical or horizontal then we have one
// of the dimentions null.
if( actualPos.x() == m_lastPos.x() || actualPos.y() == m_lastPos.y() )
if( actualPos.x() == m_lastPos.x() && actualPos.y() == m_lastPos.y() )
{
m_selectedArea = QRect();
}
@@ -651,14 +651,14 @@ void ViewArea::mouseMoveEvent( QMouseEvent *event )
// From left to right
if( m_lastPos.x() < actualPos.x() )
{
QPoint bottomR = actualPos - QPoint( 1, 1 );
QPoint bottomR = actualPos;// - QPoint( 1, 1 );
m_selectedArea = QRect( m_lastPos, bottomR );
}
// From right to left
else
{
QPoint topL( actualPos.x(), m_lastPos.y() );
QPoint bottomR( m_lastPos.x() - 1, actualPos.y() - 1 );
QPoint bottomR( m_lastPos.x(), actualPos.y() );
m_selectedArea = QRect( topL, bottomR );
}
@@ -670,13 +670,13 @@ void ViewArea::mouseMoveEvent( QMouseEvent *event )
if( m_lastPos.x() < actualPos.x() )
{
QPoint topL( m_lastPos.x(), actualPos.y() );
QPoint bottomR( actualPos.x() - 1, m_lastPos.y() - 1 );
QPoint bottomR( actualPos.x(), m_lastPos.y() );
m_selectedArea = QRect( topL, bottomR );
}
// From right to left
else
{
QPoint bottomR = m_lastPos - QPoint( 1, 1 );
QPoint bottomR = m_lastPos;// - QPoint( 1, 1 );
m_selectedArea = QRect( actualPos, bottomR );
}
}
@@ -702,15 +702,16 @@ void ViewArea::mouseMoveEvent( QMouseEvent *event )
m_selectedArea &= QRect( 0, 0, m_pixmap.width(), m_pixmap.height() );
// Update only the united area
updateRect = updateRect.united( viewToWindow( m_selectedArea ) );
// updateRect = updateRect.united( viewToWindow( m_selectedArea ) );
// "When rendering with a one pixel wide pen the QRect's
// boundary line will be rendered to the right and below the
// mathematical rectangle's boundary line.", in QT4 doc.
// Our selection pen width is 1, let's adjust the rendering area.
updateRect.adjust( 0, 0, 1, 1 );
// updateRect.adjust( 0, 0, 1, 1 );
update( updateRect.normalized() );
// update( updateRect.normalized() );
update();
}
return;
}