summaryrefslogtreecommitdiff
authoralwin <alwin>2004-04-22 23:48:23 (UTC)
committer alwin <alwin>2004-04-22 23:48:23 (UTC)
commitba10e43945b15753e0438cd0176cfa61d61c7391 (patch) (side-by-side diff)
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) (show whitespace changes)
-rw-r--r--libopie2/opiemm/oimagescrollview.cpp46
1 files changed, 16 insertions, 30 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
@@ -45,9 +45,9 @@ OImageScrollView::OImageScrollView (const QImage&img, QWidget * parent, const ch
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)
@@ -69,9 +69,9 @@ 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()) {
@@ -126,9 +126,9 @@ void OImageScrollView::setImage( const QString& path ) {
} 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();
@@ -433,51 +433,37 @@ void OImageScrollView::keyPressEvent(QKeyEvent * 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;
+ w = _pdata.width()-x;
erase = true;
- } else if (x+w>_pdata.width()){
- x = _pdata.width()-w;
}
-
if (h>_pdata.height()) {
- h=_pdata.height();
- y = 0;
+ h = _pdata.height()-y;
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 && (clipy+cliph>_pdata.height()||clipx+clipw>_pdata.width())) {
+ erase = true;
+ }
+ 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)