summaryrefslogtreecommitdiff
authoralwin <alwin>2004-04-07 20:28:21 (UTC)
committer alwin <alwin>2004-04-07 20:28:21 (UTC)
commit52ccc71e2859ae9d738629249baeef3e3df992a2 (patch) (unidiff)
tree7315f7b6810cb246296fea30e35c4f1205be97f3
parentf8e633dea182beabbb665a25136b43a9dd7d0558 (diff)
downloadopie-52ccc71e2859ae9d738629249baeef3e3df992a2.zip
opie-52ccc71e2859ae9d738629249baeef3e3df992a2.tar.gz
opie-52ccc71e2859ae9d738629249baeef3e3df992a2.tar.bz2
speed up painting a lot - drawing QImage seems to be a real bad idea.
Painting QPixmap instead.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/imagescrollview.cpp30
-rw-r--r--noncore/graphics/opie-eye/gui/imagescrollview.h2
2 files changed, 21 insertions, 11 deletions
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.cpp b/noncore/graphics/opie-eye/gui/imagescrollview.cpp
index 98054ff..ad19219 100644
--- a/noncore/graphics/opie-eye/gui/imagescrollview.cpp
+++ b/noncore/graphics/opie-eye/gui/imagescrollview.cpp
@@ -18,6 +18,8 @@ ImageScrollView::ImageScrollView (const QImage&img, QWidget * parent, const char
18 :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(img),scale_to_fit(always_scale), 18 :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(img),scale_to_fit(always_scale),
19 rotate_to_fit(rfit),first_resize_done(false),m_lastName("") 19 rotate_to_fit(rfit),first_resize_done(false),m_lastName("")
20{ 20{
21 _original_data.convertDepth(QPixmap::defaultDepth());
22 _original_data.setAlphaBuffer(false);
21 init(); 23 init();
22} 24}
23 25
@@ -33,6 +35,8 @@ void ImageScrollView::setImage(const QImage&img)
33{ 35{
34 _image_data = QImage(); 36 _image_data = QImage();
35 _original_data=img; 37 _original_data=img;
38 _original_data.convertDepth(QPixmap::defaultDepth());
39 _original_data.setAlphaBuffer(false);
36 m_lastName = ""; 40 m_lastName = "";
37 if (first_resize_done) { 41 if (first_resize_done) {
38 generateImage(); 42 generateImage();
@@ -44,6 +48,8 @@ void ImageScrollView::setImage( const QString& path ) {
44 if (m_lastName == path) return; 48 if (m_lastName == path) return;
45 m_lastName = path; 49 m_lastName = path;
46 _original_data.load(path); 50 _original_data.load(path);
51 _original_data.convertDepth(QPixmap::defaultDepth());
52 _original_data.setAlphaBuffer(false);
47 _image_data = QImage(); 53 _image_data = QImage();
48 if (first_resize_done) { 54 if (first_resize_done) {
49 generateImage(); 55 generateImage();
@@ -244,6 +250,8 @@ void ImageScrollView::generateImage()
244 last_rot = r; 250 last_rot = r;
245 resizeContents(_image_data.width(),_image_data.height()); 251 resizeContents(_image_data.width(),_image_data.height());
246 } 252 }
253 _pdata.convertFromImage(_image_data);
254 _image_data=QImage();
247} 255}
248 256
249void ImageScrollView::resizeEvent(QResizeEvent * e) 257void ImageScrollView::resizeEvent(QResizeEvent * e)
@@ -285,28 +293,28 @@ void ImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw
285 int y = clipy; 293 int y = clipy;
286 bool erase = false; 294 bool erase = false;
287 295
288 if (!_image_data.size().isValid()) { 296 if (!_pdata.size().isValid()) {
289 p->fillRect(clipx,clipy,clipw,cliph,white); 297 p->fillRect(clipx,clipy,clipw,cliph,white);
290 return; 298 return;
291 } 299 }
292 if (w>_image_data.width()) { 300 if (w>_pdata.width()) {
293 w=_image_data.width(); 301 w=_pdata.width();
294 x = 0; 302 x = 0;
295 erase = true; 303 erase = true;
296 } else if (x+w>_image_data.width()){ 304 } else if (x+w>_pdata.width()){
297 x = _image_data.width()-w; 305 x = _pdata.width()-w;
298 } 306 }
299 if (h>_image_data.height()) { 307 if (h>_pdata.height()) {
300 h=_image_data.height(); 308 h=_pdata.height();
301 y = 0; 309 y = 0;
302 erase = true; 310 erase = true;
303 } else if (y+h>_image_data.height()){ 311 } else if (y+h>_pdata.height()){
304 y = _image_data.height()-h; 312 y = _pdata.height()-h;
305 } 313 }
306 if (erase||_image_data.hasAlphaBuffer()) { 314 if (erase||_original_data.hasAlphaBuffer()) {
307 p->fillRect(clipx,clipy,clipw,cliph,white); 315 p->fillRect(clipx,clipy,clipw,cliph,white);
308 } 316 }
309 p->drawImage(clipx,clipy,_image_data,x,y,w,h); 317 p->drawPixmap(clipx,clipy,_pdata,x,y,w,h);
310} 318}
311 319
312/* using the real geometry points and not the translated points is wanted! */ 320/* using the real geometry points and not the translated points is wanted! */
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.h b/noncore/graphics/opie-eye/gui/imagescrollview.h
index 17e2f5f..eb91dbd 100644
--- a/noncore/graphics/opie-eye/gui/imagescrollview.h
+++ b/noncore/graphics/opie-eye/gui/imagescrollview.h
@@ -3,6 +3,7 @@
3 3
4#include <qscrollview.h> 4#include <qscrollview.h>
5#include <qimage.h> 5#include <qimage.h>
6#include <qpixmap.h>
6#include <qstring.h> 7#include <qstring.h>
7#include <qdialog.h> 8#include <qdialog.h>
8 9
@@ -40,6 +41,7 @@ protected:
40 41
41 QImage _image_data; 42 QImage _image_data;
42 QImage _original_data; 43 QImage _original_data;
44 QPixmap _pdata;
43 45
44 int _mouseStartPosX,_mouseStartPosY; 46 int _mouseStartPosX,_mouseStartPosY;
45 47