author | alwin <alwin> | 2004-04-22 23:48:23 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-04-22 23:48:23 (UTC) |
commit | ba10e43945b15753e0438cd0176cfa61d61c7391 (patch) (side-by-side diff) | |
tree | 114d7531958a85adc7605e54a0128561f9d4f0eb /libopie2 | |
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 @@ -43,13 +43,13 @@ OImageScrollView::OImageScrollView (const QImage&img, QWidget * parent, const ch m_states[AUTO_ROTATE]=rfit; m_states[FIRST_RESIZE_DONE]=false; m_states[IMAGE_IS_JPEG]=false; m_states[IMAGE_SCALED_LOADED]=false; m_states[SHOW_ZOOMER]=true; _original_data.convertDepth(QPixmap::defaultDepth()); - _original_data.setAlphaBuffer(false); + //_original_data.setAlphaBuffer(false); init(); } OImageScrollView::OImageScrollView (const QString&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit) :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(),m_states(SCROLLVIEW_BITSET_SIZE),m_lastName("") { @@ -67,13 +67,13 @@ OImageScrollView::OImageScrollView (const QString&img, QWidget * parent, const c void OImageScrollView::setImage(const QImage&img) { _image_data = QImage(); _original_data=img; _original_data.convertDepth(QPixmap::defaultDepth()); - _original_data.setAlphaBuffer(false); + //_original_data.setAlphaBuffer(false); m_lastName = ""; setImageIsJpeg(false); setImageScaledLoaded(false); if (FirstResizeDone()) { generateImage(); } @@ -124,13 +124,13 @@ void OImageScrollView::setImage( const QString& path ) { setImageIsJpeg(true); loadJpeg(); } else { setImageIsJpeg(false); _original_data.load(path); _original_data.convertDepth(QPixmap::defaultDepth()); - _original_data.setAlphaBuffer(false); + //_original_data.setAlphaBuffer(false); } _image_data = QImage(); if (FirstResizeDone()) { generateImage(); if (isVisible()) viewport()->repaint(true); } @@ -431,55 +431,41 @@ void OImageScrollView::keyPressEvent(QKeyEvent * e) } QScrollView::keyPressEvent(e); } void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph) { + if (!_pdata.size().isValid()) { + p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); + return; + } + int w = clipw; int h = cliph; int x = clipx; int y = clipy; bool erase = false; - if (!_pdata.size().isValid()) { - p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); - return; - } - if (w>_pdata.width()) { - w=_pdata.width(); - x = 0; - erase = true; - } else if (x+w>_pdata.width()){ - x = _pdata.width()-w; + w = _pdata.width()-x; + erase=true; } - if (h>_pdata.height()) { - h=_pdata.height(); - y = 0; + h = _pdata.height()-y; + erase=true; + } + if (!erase && (clipy+cliph>_pdata.height()||clipx+clipw>_pdata.width())) { erase = true; - } else if (y+h>_pdata.height()){ - y = _pdata.height()-h; } - - if (erase||_original_data.hasAlphaBuffer()||clipy>_pdata.height()||clipx>_pdata.width()) { - odebug << QSize(clipx,clipy) << " # " << QSize(clipw,cliph) << oendl; + if (erase||_original_data.hasAlphaBuffer()) { p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); } - odebug << QSize(x,y) << " - " << QSize(w,h) << oendl; - if (clipy<=_pdata.height()&&clipx<=_pdata.width()) { -#if 0 - odebug << "painting image content" << oendl; -#endif + if (w>0 && h>0&&x<_pdata.width()&&y<_pdata.height()) { + odebug << "Drawing pixmap" << oendl; p->drawPixmap(clipx,clipy,_pdata,x,y,w,h); - } -#if 0 -else { - odebug << "not painting image content" << oendl; } -#endif } /* using the real geometry points and not the translated points is wanted! */ void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) { int mx, my; |