summaryrefslogtreecommitdiff
authoralwin <alwin>2004-04-15 16:16:47 (UTC)
committer alwin <alwin>2004-04-15 16:16:47 (UTC)
commitaa0fce09fc2df5427c43b6a5f0539e725aad2828 (patch) (unidiff)
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)
93 hei = QApplication::desktop()->height(); 93 hei = QApplication::desktop()->height();
94 if (hei>wid) { 94 if (hei>wid) {
95 wid = hei; 95 wid = hei;
96 } else { 96 } else {
97 hei = wid; 97 hei = wid;
98 } 98 }
99 param = QString( "Fast Shrink( 3 ) Scale( %1, %2, ScaleFree)" ).arg( wid ).arg( hei ); 99 param = QString( "Fast Shrink( 3 ) Scale( %1, %2, ScaleMin)" ).arg( wid ).arg( hei );
100 odebug << "Load jpeg scaled \"" << param << "\"" << oendl; 100 odebug << "Load jpeg scaled \"" << param << "\"" << oendl;
101 iio.setParameters(param.latin1()); 101 iio.setParameters(param.latin1());
102 setImageScaledLoaded(true); 102 setImageScaledLoaded(true);
103 real_load = true; 103 real_load = true;
104 } 104 }
105 } else { 105 } else {
@@ -122,12 +122,13 @@ void OImageScrollView::loadJpeg(bool interncall)
122} 122}
123 123
124void OImageScrollView::setImage( const QString& path ) { 124void OImageScrollView::setImage( const QString& path ) {
125 odebug << "load new image " << oendl; 125 odebug << "load new image " << oendl;
126 if (m_lastName == path) return; 126 if (m_lastName == path) return;
127 m_lastName = path; 127 m_lastName = path;
128 _original_data = QImage();
128 QString itype = QImage::imageFormat(m_lastName); 129 QString itype = QImage::imageFormat(m_lastName);
129 odebug << "Image type = " << itype << oendl; 130 odebug << "Image type = " << itype << oendl;
130 if (itype == "JPEG") { 131 if (itype == "JPEG") {
131 setImageIsJpeg(true); 132 setImageIsJpeg(true);
132 loadJpeg(); 133 loadJpeg();
133 } else { 134 } else {
@@ -143,12 +144,13 @@ void OImageScrollView::setImage( const QString& path ) {
143 env << "Image loaded"; 144 env << "Image loaded";
144 } 145 }
145 } 146 }
146 _image_data = QImage(); 147 _image_data = QImage();
147 if (FirstResizeDone()) { 148 if (FirstResizeDone()) {
148 generateImage(); 149 generateImage();
150 if (isVisible()) viewport()->repaint(true);
149 } 151 }
150} 152}
151 153
152/* should be called every time the QImage changed it content */ 154/* should be called every time the QImage changed it content */
153void OImageScrollView::init() 155void OImageScrollView::init()
154{ 156{
@@ -347,23 +349,29 @@ void OImageScrollView::rotate_into_data(Rotation r)
347 _image_data = dest; 349 _image_data = dest;
348} 350}
349 351
350void OImageScrollView::generateImage() 352void OImageScrollView::generateImage()
351{ 353{
352 Rotation r = Rotate0; 354 Rotation r = Rotate0;
353 if (_original_data.isNull()) return; 355 _pdata = QPixmap();
356 if (_original_data.isNull()) {
357 emit imageSizeChanged( _image_data.size() );
358 if (_zoomer) _zoomer->setImage( _image_data );
359 return;
360 }
354 { 361 {
355 QCopEnvelope( "QPE/System", "busy()" ); 362 QCopEnvelope( "QPE/System", "busy()" );
356 } 363 }
357 if (width()>height()&&_original_data.width()<_original_data.height() || 364 if (width()>height()&&_original_data.width()<_original_data.height() ||
358 width()<height()&&_original_data.width()>_original_data.height()) { 365 width()<height()&&_original_data.width()>_original_data.height()) {
359 if (AutoRotate()) r = Rotate90; 366 if (AutoRotate()) r = Rotate90;
360 } 367 }
361 368
369
362 odebug << " r = " << r << oendl; 370 odebug << " r = " << r << oendl;
363 if (AutoScale()) { 371 if (AutoScale() && (_original_data.width()>width() || _original_data.height() > height()) ) {
364 if (!_image_data.size().isValid()||width()>_image_data.width()||height()>_image_data.height()) { 372 if (!_image_data.size().isValid()||width()>_image_data.width()||height()>_image_data.height()) {
365 odebug << "Rescaling data" << oendl; 373 odebug << "Rescaling data" << oendl;
366 if (r==Rotate0) { 374 if (r==Rotate0) {
367 _image_data = _original_data; 375 _image_data = _original_data;
368 } else { 376 } else {
369 rotate_into_data(r); 377 rotate_into_data(r);
@@ -379,13 +387,12 @@ void OImageScrollView::generateImage()
379 } 387 }
380 m_last_rot = r; 388 m_last_rot = r;
381 resizeContents(_image_data.width(),_image_data.height()); 389 resizeContents(_image_data.width(),_image_data.height());
382 } 390 }
383 _pdata.convertFromImage(_image_data); 391 _pdata.convertFromImage(_image_data);
384 392
385
386 /* 393 /*
387 * update the zoomer 394 * update the zoomer
388 */ 395 */
389 check_zoomer(); 396 check_zoomer();
390 emit imageSizeChanged( _image_data.size() ); 397 emit imageSizeChanged( _image_data.size() );
391 rescaleImage( 128, 128 ); 398 rescaleImage( 128, 128 );
@@ -472,33 +479,18 @@ void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clip
472 p->drawPixmap(clipx,clipy,_pdata,x,y,w,h); 479 p->drawPixmap(clipx,clipy,_pdata,x,y,w,h);
473} 480}
474 481
475/* using the real geometry points and not the translated points is wanted! */ 482/* using the real geometry points and not the translated points is wanted! */
476void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) 483void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e)
477{ 484{
478 odebug << "Move X and Y " << e->x() << " " << e->y() << oendl;
479 int mx, my; 485 int mx, my;
480 mx = e->x(); 486 mx = e->x();
481 my = e->y(); 487 my = e->y();
482 if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) { 488 if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) {
483 int diffx = _mouseStartPosX-mx; 489 int diffx = _mouseStartPosX-mx;
484 int diffy = _mouseStartPosY-my; 490 int diffy = _mouseStartPosY-my;
485#if 0
486 QScrollBar*xbar = horizontalScrollBar();
487 QScrollBar*ybar = verticalScrollBar();
488 if (xbar->value()+diffx>xbar->maxValue()) {
489 diffx = xbar->maxValue()-xbar->value();
490 } else if (xbar->value()+diffx<0) {
491 diffx=0-xbar->value();
492 }
493 if (ybar->value()+diffy>ybar->maxValue()) {
494 diffy = ybar->maxValue()-ybar->value();
495 } else if (ybar->value()+diffy<0) {
496 diffy=0-ybar->value();
497 }
498#endif
499 scrollBy(diffx,diffy); 491 scrollBy(diffx,diffy);
500 } 492 }
501 _mouseStartPosX=mx; 493 _mouseStartPosX=mx;
502 _mouseStartPosY=my; 494 _mouseStartPosY=my;
503} 495}
504 496