author | alwin <alwin> | 2004-04-15 16:16:47 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-04-15 16:16:47 (UTC) |
commit | aa0fce09fc2df5427c43b6a5f0539e725aad2828 (patch) (side-by-side diff) | |
tree | ee9cd98bed9222fa994d89cab76a2f515b2cd45b | |
parent | a002be54e33d64e69c7edf2960d5e68a9a0609e4 (diff) | |
download | opie-aa0fce09fc2df5427c43b6a5f0539e725aad2828.zip opie-aa0fce09fc2df5427c43b6a5f0539e725aad2828.tar.gz opie-aa0fce09fc2df5427c43b6a5f0539e725aad2828.tar.bz2 |
hopefull better repainting when switching the image while view is
visible
-rw-r--r-- | libopie2/opiemm/oimagescrollview.cpp | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/libopie2/opiemm/oimagescrollview.cpp b/libopie2/opiemm/oimagescrollview.cpp index 68b06af..30a8fba 100644 --- a/libopie2/opiemm/oimagescrollview.cpp +++ b/libopie2/opiemm/oimagescrollview.cpp @@ -93,13 +93,13 @@ void OImageScrollView::loadJpeg(bool interncall) hei = QApplication::desktop()->height(); if (hei>wid) { wid = hei; } else { hei = wid; } - param = QString( "Fast Shrink( 3 ) Scale( %1, %2, ScaleFree)" ).arg( wid ).arg( hei ); + param = QString( "Fast Shrink( 3 ) Scale( %1, %2, ScaleMin)" ).arg( wid ).arg( hei ); odebug << "Load jpeg scaled \"" << param << "\"" << oendl; iio.setParameters(param.latin1()); setImageScaledLoaded(true); real_load = true; } } else { @@ -122,12 +122,13 @@ void OImageScrollView::loadJpeg(bool interncall) } void OImageScrollView::setImage( const QString& path ) { odebug << "load new image " << oendl; if (m_lastName == path) return; m_lastName = path; + _original_data = QImage(); QString itype = QImage::imageFormat(m_lastName); odebug << "Image type = " << itype << oendl; if (itype == "JPEG") { setImageIsJpeg(true); loadJpeg(); } else { @@ -143,12 +144,13 @@ void OImageScrollView::setImage( const QString& path ) { env << "Image loaded"; } } _image_data = QImage(); if (FirstResizeDone()) { generateImage(); + if (isVisible()) viewport()->repaint(true); } } /* should be called every time the QImage changed it content */ void OImageScrollView::init() { @@ -347,23 +349,29 @@ void OImageScrollView::rotate_into_data(Rotation r) _image_data = dest; } void OImageScrollView::generateImage() { Rotation r = Rotate0; - if (_original_data.isNull()) return; + _pdata = QPixmap(); + if (_original_data.isNull()) { + emit imageSizeChanged( _image_data.size() ); + if (_zoomer) _zoomer->setImage( _image_data ); + return; + } { QCopEnvelope( "QPE/System", "busy()" ); } if (width()>height()&&_original_data.width()<_original_data.height() || width()<height()&&_original_data.width()>_original_data.height()) { if (AutoRotate()) r = Rotate90; } + odebug << " r = " << r << oendl; - if (AutoScale()) { + if (AutoScale() && (_original_data.width()>width() || _original_data.height() > height()) ) { if (!_image_data.size().isValid()||width()>_image_data.width()||height()>_image_data.height()) { odebug << "Rescaling data" << oendl; if (r==Rotate0) { _image_data = _original_data; } else { rotate_into_data(r); @@ -379,13 +387,12 @@ void OImageScrollView::generateImage() } m_last_rot = r; resizeContents(_image_data.width(),_image_data.height()); } _pdata.convertFromImage(_image_data); - /* * update the zoomer */ check_zoomer(); emit imageSizeChanged( _image_data.size() ); rescaleImage( 128, 128 ); @@ -472,33 +479,18 @@ void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clip p->drawPixmap(clipx,clipy,_pdata,x,y,w,h); } /* using the real geometry points and not the translated points is wanted! */ void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) { - odebug << "Move X and Y " << e->x() << " " << e->y() << oendl; int mx, my; mx = e->x(); my = e->y(); if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) { int diffx = _mouseStartPosX-mx; int diffy = _mouseStartPosY-my; -#if 0 - QScrollBar*xbar = horizontalScrollBar(); - QScrollBar*ybar = verticalScrollBar(); - if (xbar->value()+diffx>xbar->maxValue()) { - diffx = xbar->maxValue()-xbar->value(); - } else if (xbar->value()+diffx<0) { - diffx=0-xbar->value(); - } - if (ybar->value()+diffy>ybar->maxValue()) { - diffy = ybar->maxValue()-ybar->value(); - } else if (ybar->value()+diffy<0) { - diffy=0-ybar->value(); - } -#endif scrollBy(diffx,diffy); } _mouseStartPosX=mx; _mouseStartPosY=my; } |