Reorganize image zoom functions. New zoomToFactor function is available from SubWindowHandle.

This commit is contained in:
Luis Lucas
2015-01-17 23:55:42 +00:00
parent e8da7df02d
commit 083f38e8bf
8 changed files with 60 additions and 42 deletions
+8 -8
View File
@@ -58,10 +58,10 @@ Void SubWindowHandle::setMainWidget( QWidget *widget )
m_cScrollArea->setWidget( widget );
}
Void SubWindowHandle::processZoomChanged( Double factor, QPoint center )
Void SubWindowHandle::processZoomChange( Double scale, QPoint center )
{
adjustScrollBarByZoom( factor, center );
emit zoomChanged();
adjustScrollBarByScale( scale, center );
emit zoomChangedOnSubWindow();
}
QSize SubWindowHandle::getScrollSize()
@@ -82,17 +82,17 @@ Void SubWindowHandle::adjustScrollBarByOffset( QPoint Offset )
// This function was developed with help of the schematics presented in
// http://stackoverflow.com/questions/13155382/jscrollpane-zoom-relative-to-mouse-position
Void SubWindowHandle::adjustScrollBarByZoom( Double factor, QPoint center )
Void SubWindowHandle::adjustScrollBarByScale( Double scale, QPoint center )
{
QScrollBar *scrollBar = m_cScrollArea->horizontalScrollBar();
if( center.isNull() )
{
scrollBar->setValue( int( factor * scrollBar->value() + ( ( factor - 1 ) * scrollBar->pageStep() / 2 ) ) );
scrollBar->setValue( int( scale * scrollBar->value() + ( ( scale - 1 ) * scrollBar->pageStep() / 2 ) ) );
}
else
{
Int x = center.x() - m_cLastScroll.x();
Int value = int( factor * m_cLastScroll.x() + ( ( factor - 1 ) * x ) );
Int value = int( scale * m_cLastScroll.x() + ( ( scale - 1 ) * x ) );
if( value > scrollBar->maximum() )
value = scrollBar->maximum();
if( value < scrollBar->minimum() )
@@ -103,12 +103,12 @@ Void SubWindowHandle::adjustScrollBarByZoom( Double factor, QPoint center )
scrollBar = m_cScrollArea->verticalScrollBar();
if( center.isNull() )
{
scrollBar->setValue( int( factor * scrollBar->value() + ( ( factor - 1 ) * scrollBar->pageStep() / 2 ) ) );
scrollBar->setValue( int( scale * scrollBar->value() + ( ( scale - 1 ) * scrollBar->pageStep() / 2 ) ) );
}
else
{
Int y = center.y() - m_cLastScroll.y();
Int value = int( factor * m_cLastScroll.y() + ( ( factor - 1 ) * y ) );
Int value = int( scale * m_cLastScroll.y() + ( ( scale - 1 ) * y ) );
if( value > scrollBar->maximum() )
value = scrollBar->maximum();
if( value < scrollBar->minimum() )