-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.cpp | 38 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.h | 7 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/lib/oimagezoomer.cpp | 14 |
3 files changed, 52 insertions, 7 deletions
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.cpp b/noncore/graphics/opie-eye/gui/imagescrollview.cpp index ad19219..5b12258 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.cpp +++ b/noncore/graphics/opie-eye/gui/imagescrollview.cpp | |||
@@ -60,6 +60,21 @@ void ImageScrollView::setImage( const QString& path ) { | |||
60 | void ImageScrollView::init() | 60 | void ImageScrollView::init() |
61 | { | 61 | { |
62 | odebug << "init " << oendl; | 62 | odebug << "init " << oendl; |
63 | |||
64 | /* | ||
65 | * create the zoomer | ||
66 | * and connect ther various signals | ||
67 | */ | ||
68 | _zoomer = new Opie::MM::OImageZoomer( this, "The Zoomer" ); | ||
69 | connect(_zoomer, SIGNAL( zoomAreaRel(int,int)), | ||
70 | this, SLOT(scrollBy(int,int)) ); | ||
71 | connect(this,SIGNAL(contentsMoving(int,int)), | ||
72 | _zoomer, (SLOT(setVisiblePoint(int,int))) ); | ||
73 | connect(this,SIGNAL(imageSizeChanged(const QSize&)), | ||
74 | _zoomer, SLOT(setImageSize(const QSize&)) ); | ||
75 | connect(this,SIGNAL(viewportSizeChanged(const QSize&)), | ||
76 | _zoomer, SLOT(setViewPortSize(const QSize&)) ); | ||
77 | |||
63 | viewport()->setBackgroundColor(white); | 78 | viewport()->setBackgroundColor(white); |
64 | setFocusPolicy(QWidget::StrongFocus); | 79 | setFocusPolicy(QWidget::StrongFocus); |
65 | if (first_resize_done) { | 80 | if (first_resize_done) { |
@@ -251,6 +266,17 @@ void ImageScrollView::generateImage() | |||
251 | resizeContents(_image_data.width(),_image_data.height()); | 266 | resizeContents(_image_data.width(),_image_data.height()); |
252 | } | 267 | } |
253 | _pdata.convertFromImage(_image_data); | 268 | _pdata.convertFromImage(_image_data); |
269 | |||
270 | /* | ||
271 | * update the zoomer | ||
272 | */ | ||
273 | emit imageSizeChanged( _image_data.size() ); | ||
274 | rescaleImage( 128, 128 ); | ||
275 | _zoomer->setImage( _image_data ); | ||
276 | |||
277 | /* | ||
278 | * invalidate | ||
279 | */ | ||
254 | _image_data=QImage(); | 280 | _image_data=QImage(); |
255 | } | 281 | } |
256 | 282 | ||
@@ -260,6 +286,12 @@ void ImageScrollView::resizeEvent(QResizeEvent * e) | |||
260 | QScrollView::resizeEvent(e); | 286 | QScrollView::resizeEvent(e); |
261 | generateImage(); | 287 | generateImage(); |
262 | first_resize_done = true; | 288 | first_resize_done = true; |
289 | emit viewportSizeChanged( viewport()->size() ); | ||
290 | |||
291 | /* | ||
292 | * move scrollbar | ||
293 | */ | ||
294 | _zoomer->setGeometry( viewport()->width()-100, viewport()->height()-50, 100, 50 ); | ||
263 | } | 295 | } |
264 | 296 | ||
265 | void ImageScrollView::keyPressEvent(QKeyEvent * e) | 297 | void ImageScrollView::keyPressEvent(QKeyEvent * e) |
@@ -320,6 +352,7 @@ void ImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw | |||
320 | /* using the real geometry points and not the translated points is wanted! */ | 352 | /* using the real geometry points and not the translated points is wanted! */ |
321 | void ImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) | 353 | void ImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) |
322 | { | 354 | { |
355 | odebug << "Move X and Y " << e->x() << " " << e->y() << oendl; | ||
323 | int mx, my; | 356 | int mx, my; |
324 | mx = e->x(); | 357 | mx = e->x(); |
325 | my = e->y(); | 358 | my = e->y(); |
@@ -346,12 +379,13 @@ void ImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) | |||
346 | _mouseStartPosY=my; | 379 | _mouseStartPosY=my; |
347 | } | 380 | } |
348 | 381 | ||
349 | void ImageScrollView::contentsMousePressEvent ( QMouseEvent * ) | 382 | void ImageScrollView::contentsMousePressEvent ( QMouseEvent * e) |
350 | { | 383 | { |
384 | odebug << " X and Y " << e->x() << " " << e->y() << oendl; | ||
351 | /* this marks the beginning of a possible mouse move. Due internal reasons of QT | 385 | /* this marks the beginning of a possible mouse move. Due internal reasons of QT |
352 | the geometry values here may real differ from that set in MoveEvent (I don't know | 386 | the geometry values here may real differ from that set in MoveEvent (I don't know |
353 | why). For getting them in real context, we use the first move-event to set the start | 387 | why). For getting them in real context, we use the first move-event to set the start |
354 | position ;) | 388 | position ;) |
355 | */ | 389 | */ |
356 | _mouseStartPosX = -1; | 390 | _mouseStartPosX = -1; |
357 | _mouseStartPosY = -1; | 391 | _mouseStartPosY = -1; |
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.h b/noncore/graphics/opie-eye/gui/imagescrollview.h index eb91dbd..1b25103 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.h +++ b/noncore/graphics/opie-eye/gui/imagescrollview.h | |||
@@ -1,12 +1,16 @@ | |||
1 | #ifndef _IMAGE_SCROLL_VIEW_H | 1 | #ifndef _IMAGE_SCROLL_VIEW_H |
2 | #define _IMAGE_SCROLL_VIEW_H | 2 | #define _IMAGE_SCROLL_VIEW_H |
3 | 3 | ||
4 | #include <lib/oimagezoomer.h> | ||
5 | |||
4 | #include <qscrollview.h> | 6 | #include <qscrollview.h> |
5 | #include <qimage.h> | 7 | #include <qimage.h> |
6 | #include <qpixmap.h> | 8 | #include <qpixmap.h> |
7 | #include <qstring.h> | 9 | #include <qstring.h> |
8 | #include <qdialog.h> | 10 | #include <qdialog.h> |
9 | 11 | ||
12 | |||
13 | |||
10 | class QPainter; | 14 | class QPainter; |
11 | 15 | ||
12 | class ImageScrollView:public QScrollView | 16 | class ImageScrollView:public QScrollView |
@@ -34,11 +38,14 @@ public: | |||
34 | 38 | ||
35 | signals: | 39 | signals: |
36 | void sig_return(); | 40 | void sig_return(); |
41 | void imageSizeChanged( const QSize& ); | ||
42 | void viewportSizeChanged( const QSize& ); | ||
37 | 43 | ||
38 | protected: | 44 | protected: |
39 | virtual void drawContents ( QPainter * p, int clipx, int clipy, int clipw, int cliph ); | 45 | virtual void drawContents ( QPainter * p, int clipx, int clipy, int clipw, int cliph ); |
40 | void init(); | 46 | void init(); |
41 | 47 | ||
48 | Opie::MM::OImageZoomer *_zoomer; | ||
42 | QImage _image_data; | 49 | QImage _image_data; |
43 | QImage _original_data; | 50 | QImage _original_data; |
44 | QPixmap _pdata; | 51 | QPixmap _pdata; |
diff --git a/noncore/graphics/opie-eye/lib/oimagezoomer.cpp b/noncore/graphics/opie-eye/lib/oimagezoomer.cpp index 178fbd4..ffa3c0c 100644 --- a/noncore/graphics/opie-eye/lib/oimagezoomer.cpp +++ b/noncore/graphics/opie-eye/lib/oimagezoomer.cpp | |||
@@ -26,6 +26,10 @@ OImageZoomer::OImageZoomer( const QSize& pSize, const QSize& vSize, QWidget* par | |||
26 | init(); | 26 | init(); |
27 | } | 27 | } |
28 | 28 | ||
29 | OImageZoomer::~OImageZoomer() { | ||
30 | |||
31 | } | ||
32 | |||
29 | void OImageZoomer::init() { | 33 | void OImageZoomer::init() { |
30 | setFrameStyle( Panel | Sunken ); | 34 | setFrameStyle( Panel | Sunken ); |
31 | } | 35 | } |
@@ -93,7 +97,7 @@ void OImageZoomer::drawContents( QPainter* p ) { | |||
93 | } | 97 | } |
94 | 98 | ||
95 | void OImageZoomer::mousePressEvent( QMouseEvent* ) { | 99 | void OImageZoomer::mousePressEvent( QMouseEvent* ) { |
96 | 100 | m_mouseX = m_mouseY = -1; | |
97 | } | 101 | } |
98 | 102 | ||
99 | void OImageZoomer::mouseMoveEvent( QMouseEvent* ev ) { | 103 | void OImageZoomer::mouseMoveEvent( QMouseEvent* ev ) { |
@@ -102,10 +106,10 @@ void OImageZoomer::mouseMoveEvent( QMouseEvent* ev ) { | |||
102 | my = ev->y(); | 106 | my = ev->y(); |
103 | 107 | ||
104 | if ( m_mouseX != -1 && m_mouseY != -1 ) { | 108 | if ( m_mouseX != -1 && m_mouseY != -1 ) { |
105 | int diffx = m_mouseX-mx; | 109 | int diffx = ( mx - m_mouseX ) * m_imgSize.width() / width(); |
106 | int diffy = m_mouseY-my; | 110 | int diffy = ( my - m_mouseY ) * m_imgSize.height() / height(); |
107 | // emit zoomAreaRel( diffx, diffy ); | 111 | emit zoomAreaRel( diffx, diffy ); |
108 | // emit zoomArea( | 112 | emit zoomArea(m_visPt.x()+diffx, m_visPt.y()+diffy ); |
109 | } | 113 | } |
110 | m_mouseX = mx; | 114 | m_mouseX = mx; |
111 | m_mouseY = my; | 115 | m_mouseY = my; |