-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.cpp | 22 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.h | 4 |
2 files changed, 17 insertions, 9 deletions
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.cpp b/noncore/graphics/opie-eye/gui/imagescrollview.cpp index f36b717..019f376 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.cpp +++ b/noncore/graphics/opie-eye/gui/imagescrollview.cpp @@ -1,97 +1,105 @@ #include "imagescrollview.h" +#include <opie2/odebug.h> + +using namespace Opie::Core; + #include <qimage.h> #include <qlayout.h> ImageScrollView::ImageScrollView (const QImage&img, QWidget * parent, const char * name, WFlags f) :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(img) { init(); } ImageScrollView::ImageScrollView (const QString&img, QWidget * parent, const char * name, WFlags f) - :QScrollView(parent,name,f/*|Qt::WRepaintNoErase*/),_image_data(img) + :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(img) { init(); } void ImageScrollView::setImage(const QImage&img) { _image_data = img; init(); } /* should be called every time the QImage changed it content */ void ImageScrollView::init() { viewport()->setBackgroundColor(white); resizeContents(_image_data.width(),_image_data.height()); } ImageScrollView::~ImageScrollView() { } void ImageScrollView::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 (w>_image_data.width()) { w=_image_data.width(); x = 0; erase = true; } else if (x+w>_image_data.width()){ x = _image_data.width()-w; } if (h>_image_data.height()) { h=_image_data.height(); y = 0; erase = true; } else if (y+h>_image_data.height()){ y = _image_data.height()-h; } if (erase) { p->fillRect(clipx,clipy,clipw,cliph,white); } p->drawImage(clipx,clipy,_image_data,x,y,w,h); } +/* using the real geometry points and not the translated points is wanted! */ void ImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) { int mx, my; - viewportToContents( e->x(), e->y(), mx, my ); - - scrollBy(_mouseStartPosX-mx,my-_mouseStartPosY); - + mx = e->x(); + my = e->y(); + int diffx = _mouseStartPosX-mx; + int diffy = _mouseStartPosY-my; + scrollBy(diffx,diffy); _mouseStartPosX=mx; _mouseStartPosY=my; } void ImageScrollView::contentsMouseReleaseEvent ( QMouseEvent * e) { - viewportToContents( e->x(), e->y(), _mouseStartPosX,_mouseStartPosY ); + _mouseStartPosX = e->x(); + _mouseStartPosY = e->y(); } void ImageScrollView::contentsMousePressEvent ( QMouseEvent * e) { - viewportToContents( e->x(), e->y(), _mouseStartPosX,_mouseStartPosY ); + _mouseStartPosX = e->x(); + _mouseStartPosY = e->y(); } /* for testing */ ImageDlg::ImageDlg(const QString&fname,QWidget * parent, const char * name) :QDialog(parent,name,true,WStyle_ContextHelp) { QVBoxLayout*dlglayout = new QVBoxLayout(this); dlglayout->setSpacing(2); dlglayout->setMargin(1); ImageScrollView*inf = new ImageScrollView(fname,this); dlglayout->addWidget(inf); } ImageDlg::~ImageDlg() { } diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.h b/noncore/graphics/opie-eye/gui/imagescrollview.h index 5836c8d..edea235 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.h +++ b/noncore/graphics/opie-eye/gui/imagescrollview.h @@ -1,43 +1,43 @@ -#ifndef __IMAGE_SCROLL_VIEW_H -#define __IMAGE_SCROLL_VIEW_H +#ifndef _IMAGE_SCROLL_VIEW_H +#define _IMAGE_SCROLL_VIEW_H #include <qscrollview.h> #include <qimage.h> #include <qstring.h> #include <qdialog.h> class QPainter; class ImageScrollView:public QScrollView { Q_OBJECT public: ImageScrollView (const QImage&, QWidget * parent=0, const char * name=0, WFlags f=0 ); ImageScrollView (const QString&, QWidget * parent=0, const char * name=0, WFlags f=0 ); virtual ~ImageScrollView(); void setImage(const QImage&); protected: virtual void drawContents ( QPainter * p, int clipx, int clipy, int clipw, int cliph ); void init(); QImage _image_data; int _mouseStartPosX,_mouseStartPosY; protected slots: virtual void viewportMouseMoveEvent(QMouseEvent* e); virtual void contentsMousePressEvent ( QMouseEvent * e); virtual void contentsMouseReleaseEvent ( QMouseEvent * e); }; /* for testing */ class ImageDlg:public QDialog { Q_OBJECT public: ImageDlg(const QString&,QWidget * parent=0, const char * name=0); virtual ~ImageDlg(); }; #endif |