author | alwin <alwin> | 2004-04-22 23:48:23 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-04-22 23:48:23 (UTC) |
commit | ba10e43945b15753e0438cd0176cfa61d61c7391 (patch) (unidiff) | |
tree | 114d7531958a85adc7605e54a0128561f9d4f0eb | |
parent | d93cb43bb2c79a9a8357e195fcdfd8ff140f8a75 (diff) | |
download | opie-ba10e43945b15753e0438cd0176cfa61d61c7391.zip opie-ba10e43945b15753e0438cd0176cfa61d61c7391.tar.gz opie-ba10e43945b15753e0438cd0176cfa61d61c7391.tar.bz2 |
reworked the painting algorithm again, hopefully now it works in all cases
-rw-r--r-- | libopie2/opiemm/oimagescrollview.cpp | 48 |
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 | |||
@@ -48,3 +48,3 @@ OImageScrollView::OImageScrollView (const QImage&img, QWidget * parent, const ch | |||
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(); |
@@ -72,3 +72,3 @@ void OImageScrollView::setImage(const QImage&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 = ""; |
@@ -129,3 +129,3 @@ void OImageScrollView::setImage( const QString& 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 | } |
@@ -436,2 +436,7 @@ void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clip | |||
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; |
@@ -442,39 +447,20 @@ void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clip | |||
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 | ||
476 | else { | ||
477 | odebug << "not painting image content" << oendl; | ||
478 | } | 465 | } |
479 | #endif | ||
480 | } | 466 | } |