summaryrefslogtreecommitdiff
authoralwin <alwin>2004-04-21 10:47:31 (UTC)
committer alwin <alwin>2004-04-21 10:47:31 (UTC)
commit6902a2e25e93f2c2d472b89a35e19668dffd4866 (patch) (side-by-side diff)
tree7512cf17ca49b420dd4e6c9758fcc846b5e8cd1a
parentf4ab243362a9b93f17e92bbf3189324f66c8f686 (diff)
downloadopie-6902a2e25e93f2c2d472b89a35e19668dffd4866.zip
opie-6902a2e25e93f2c2d472b89a35e19668dffd4866.tar.gz
opie-6902a2e25e93f2c2d472b89a35e19668dffd4866.tar.bz2
improved painting, eg., when clip area is outside image we must not
paint the image of course....
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiemm/oimagescrollview.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/libopie2/opiemm/oimagescrollview.cpp b/libopie2/opiemm/oimagescrollview.cpp
index a8165a4..73df3ff 100644
--- a/libopie2/opiemm/oimagescrollview.cpp
+++ b/libopie2/opiemm/oimagescrollview.cpp
@@ -439,35 +439,50 @@ void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clip
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;
}
+
if (h>_pdata.height()) {
h=_pdata.height();
y = 0;
erase = true;
} else if (y+h>_pdata.height()){
y = _pdata.height()-h;
}
- if (erase||_original_data.hasAlphaBuffer()) {
+
+ if (erase||_original_data.hasAlphaBuffer()||clipy>_pdata.height()||clipx>_pdata.width()) {
+ odebug << QSize(clipx,clipy) << " # " << QSize(clipw,cliph) << oendl;
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
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;
mx = e->x();
my = e->y();
if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) {