summaryrefslogtreecommitdiff
authoralwin <alwin>2004-04-15 16:16:47 (UTC)
committer alwin <alwin>2004-04-15 16:16:47 (UTC)
commitaa0fce09fc2df5427c43b6a5f0539e725aad2828 (patch) (side-by-side diff)
treeee9cd98bed9222fa994d89cab76a2f515b2cd45b
parenta002be54e33d64e69c7edf2960d5e68a9a0609e4 (diff)
downloadopie-aa0fce09fc2df5427c43b6a5f0539e725aad2828.zip
opie-aa0fce09fc2df5427c43b6a5f0539e725aad2828.tar.gz
opie-aa0fce09fc2df5427c43b6a5f0539e725aad2828.tar.bz2
hopefull better repainting when switching the image while view is
visible
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiemm/oimagescrollview.cpp30
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;
}