summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiemm/oimagescrollview.cpp48
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
43 m_states[AUTO_ROTATE]=rfit; 43 m_states[AUTO_ROTATE]=rfit;
44 m_states[FIRST_RESIZE_DONE]=false; 44 m_states[FIRST_RESIZE_DONE]=false;
45 m_states[IMAGE_IS_JPEG]=false; 45 m_states[IMAGE_IS_JPEG]=false;
46 m_states[IMAGE_SCALED_LOADED]=false; 46 m_states[IMAGE_SCALED_LOADED]=false;
47 m_states[SHOW_ZOOMER]=true; 47 m_states[SHOW_ZOOMER]=true;
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();
51} 51}
52 52
53OImageScrollView::OImageScrollView (const QString&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit) 53OImageScrollView::OImageScrollView (const QString&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit)
54 :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(),m_states(SCROLLVIEW_BITSET_SIZE),m_lastName("") 54 :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(),m_states(SCROLLVIEW_BITSET_SIZE),m_lastName("")
55{ 55{
@@ -67,13 +67,13 @@ OImageScrollView::OImageScrollView (const QString&img, QWidget * parent, const c
67 67
68void OImageScrollView::setImage(const QImage&img) 68void OImageScrollView::setImage(const QImage&img)
69{ 69{
70 _image_data = QImage(); 70 _image_data = QImage();
71 _original_data=img; 71 _original_data=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 = "";
75 setImageIsJpeg(false); 75 setImageIsJpeg(false);
76 setImageScaledLoaded(false); 76 setImageScaledLoaded(false);
77 if (FirstResizeDone()) { 77 if (FirstResizeDone()) {
78 generateImage(); 78 generateImage();
79 } 79 }
@@ -124,13 +124,13 @@ void OImageScrollView::setImage( const QString& path ) {
124 setImageIsJpeg(true); 124 setImageIsJpeg(true);
125 loadJpeg(); 125 loadJpeg();
126 } else { 126 } else {
127 setImageIsJpeg(false); 127 setImageIsJpeg(false);
128 _original_data.load(path); 128 _original_data.load(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 }
132 _image_data = QImage(); 132 _image_data = QImage();
133 if (FirstResizeDone()) { 133 if (FirstResizeDone()) {
134 generateImage(); 134 generateImage();
135 if (isVisible()) viewport()->repaint(true); 135 if (isVisible()) viewport()->repaint(true);
136 } 136 }
@@ -431,55 +431,41 @@ void OImageScrollView::keyPressEvent(QKeyEvent * e)
431 } 431 }
432 QScrollView::keyPressEvent(e); 432 QScrollView::keyPressEvent(e);
433} 433}
434 434
435void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph) 435void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph)
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;
438 int h = cliph; 443 int h = cliph;
439 int x = clipx; 444 int x = clipx;
440 int y = clipy; 445 int y = clipy;
441 bool erase = false; 446 bool erase = false;
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
476else {
477 odebug << "not painting image content" << oendl;
478 } 465 }
479#endif
480} 466}
481 467
482/* using the real geometry points and not the translated points is wanted! */ 468/* using the real geometry points and not the translated points is wanted! */
483void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) 469void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e)
484{ 470{
485 int mx, my; 471 int mx, my;