summaryrefslogtreecommitdiff
authoralwin <alwin>2004-04-22 23:48:23 (UTC)
committer alwin <alwin>2004-04-22 23:48:23 (UTC)
commitba10e43945b15753e0438cd0176cfa61d61c7391 (patch) (unidiff)
tree114d7531958a85adc7605e54a0128561f9d4f0eb
parentd93cb43bb2c79a9a8357e195fcdfd8ff140f8a75 (diff)
downloadopie-ba10e43945b15753e0438cd0176cfa61d61c7391.zip
opie-ba10e43945b15753e0438cd0176cfa61d61c7391.tar.gz
opie-ba10e43945b15753e0438cd0176cfa61d61c7391.tar.bz2
reworked the painting algorithm again, hopefully now it works in all cases
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiemm/oimagescrollview.cpp48
1 files changed, 17 insertions, 31 deletions
diff --git a/libopie2/opiemm/oimagescrollview.cpp b/libopie2/opiemm/oimagescrollview.cpp
index 73df3ff..3f2699a 100644
--- a/libopie2/opiemm/oimagescrollview.cpp
+++ b/libopie2/opiemm/oimagescrollview.cpp
@@ -46,7 +46,7 @@ OImageScrollView::OImageScrollView (const QImage&img, QWidget * parent, const ch
46 m_states[IMAGE_SCALED_LOADED]=false; 46 m_states[IMAGE_SCALED_LOADED]=false;
47 m_states[SHOW_ZOOMER]=true; 47 m_states[SHOW_ZOOMER]=true;
48 _original_data.convertDepth(QPixmap::defaultDepth()); 48 _original_data.convertDepth(QPixmap::defaultDepth());
49 _original_data.setAlphaBuffer(false); 49 //_original_data.setAlphaBuffer(false);
50 init(); 50 init();
51} 51}
52 52
@@ -70,7 +70,7 @@ void OImageScrollView::setImage(const QImage&img)
70 _image_data = QImage(); 70 _image_data = QImage();
71 _original_data=img; 71 _original_data=img;
72 _original_data.convertDepth(QPixmap::defaultDepth()); 72 _original_data.convertDepth(QPixmap::defaultDepth());
73 _original_data.setAlphaBuffer(false); 73 //_original_data.setAlphaBuffer(false);
74 m_lastName = ""; 74 m_lastName = "";
75 setImageIsJpeg(false); 75 setImageIsJpeg(false);
76 setImageScaledLoaded(false); 76 setImageScaledLoaded(false);
@@ -127,7 +127,7 @@ void OImageScrollView::setImage( const QString& path ) {
127 setImageIsJpeg(false); 127 setImageIsJpeg(false);
128 _original_data.load(path); 128 _original_data.load(path);
129 _original_data.convertDepth(QPixmap::defaultDepth()); 129 _original_data.convertDepth(QPixmap::defaultDepth());
130 _original_data.setAlphaBuffer(false); 130 //_original_data.setAlphaBuffer(false);
131 } 131 }
132 _image_data = QImage(); 132 _image_data = QImage();
133 if (FirstResizeDone()) { 133 if (FirstResizeDone()) {
@@ -434,49 +434,35 @@ void OImageScrollView::keyPressEvent(QKeyEvent * e)
434 434
435void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph) 435void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph)
436{ 436{
437 if (!_pdata.size().isValid()) {
438 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor());
439 return;
440 }
441
437 int w = clipw; 442 int w = clipw;
438 int h = cliph; 443 int h = cliph;
439 int x = clipx; 444 int x = clipx;
440 int y = clipy; 445 int y = clipy;
441 bool erase = false; 446 bool erase = false;
442 447
443 if (!_pdata.size().isValid()) {
444 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor());
445 return;
446 }
447
448 if (w>_pdata.width()) { 448 if (w>_pdata.width()) {
449 w=_pdata.width(); 449 w = _pdata.width()-x;
450 x = 0; 450 erase=true;
451 erase = true;
452 } else if (x+w>_pdata.width()){
453 x = _pdata.width()-w;
454 } 451 }
455
456 if (h>_pdata.height()) { 452 if (h>_pdata.height()) {
457 h=_pdata.height(); 453 h = _pdata.height()-y;
458 y = 0; 454 erase=true;
455 }
456 if (!erase && (clipy+cliph>_pdata.height()||clipx+clipw>_pdata.width())) {
459 erase = true; 457 erase = true;
460 } else if (y+h>_pdata.height()){
461 y = _pdata.height()-h;
462 } 458 }
463 459 if (erase||_original_data.hasAlphaBuffer()) {
464 if (erase||_original_data.hasAlphaBuffer()||clipy>_pdata.height()||clipx>_pdata.width()) {
465 odebug << QSize(clipx,clipy) << " # " << QSize(clipw,cliph) << oendl;
466 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); 460 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor());
467 } 461 }
468 odebug << QSize(x,y) << " - " << QSize(w,h) << oendl; 462 if (w>0 && h>0&&x<_pdata.width()&&y<_pdata.height()) {
469 if (clipy<=_pdata.height()&&clipx<=_pdata.width()) { 463 odebug << "Drawing pixmap" << oendl;
470#if 0
471 odebug << "painting image content" << oendl;
472#endif
473 p->drawPixmap(clipx,clipy,_pdata,x,y,w,h); 464 p->drawPixmap(clipx,clipy,_pdata,x,y,w,h);
474 }
475#if 0
476else {
477 odebug << "not painting image content" << oendl;
478 } 465 }
479#endif
480} 466}
481 467
482/* using the real geometry points and not the translated points is wanted! */ 468/* using the real geometry points and not the translated points is wanted! */