summaryrefslogtreecommitdiff
path: root/libopie2/opiemm
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 /libopie2/opiemm
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 (limited to 'libopie2/opiemm') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiemm/oimagescrollview.cpp19
1 files changed, 17 insertions, 2 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
@@ -423,66 +423,81 @@ void OImageScrollView::keyPressEvent(QKeyEvent * e)
} else if (e->key()==Qt::Key_Up) {
scrollBy(0,0-dy);
e->accept();
} else if (e->key()==Qt::Key_Down) {
scrollBy(0,dy);
e->accept();
} else {
e->ignore();
}
QScrollView::keyPressEvent(e);
}
void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph)
{
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;
}
+
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());
}
- p->drawPixmap(clipx,clipy,_pdata,x,y,w,h);
+ 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) {
int diffx = _mouseStartPosX-mx;
int diffy = _mouseStartPosY-my;
scrollBy(diffx,diffy);
}
_mouseStartPosX=mx;
_mouseStartPosY=my;
}
void OImageScrollView::contentsMousePressEvent ( QMouseEvent * e)
{
odebug << " X and Y " << e->x() << " " << e->y() << oendl;
/* this marks the beginning of a possible mouse move. Due internal reasons of QT
the geometry values here may real differ from that set in MoveEvent (I don't know
why). For getting them in real context, we use the first move-event to set the start
position ;)