author | alwin <alwin> | 2004-04-14 12:39:03 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-04-14 12:39:03 (UTC) |
commit | 4f78995cbb47f78e68eb40d9a86a6a0dcdc576eb (patch) (unidiff) | |
tree | 24f22c258d4fac1924c0be938dca7a5b52a5a3d4 | |
parent | 3ed50198400e432b308ca58178f562e2e256de0e (diff) | |
download | opie-4f78995cbb47f78e68eb40d9a86a6a0dcdc576eb.zip opie-4f78995cbb47f78e68eb40d9a86a6a0dcdc576eb.tar.gz opie-4f78995cbb47f78e68eb40d9a86a6a0dcdc576eb.tar.bz2 |
jpegs will be loaded scaled if needed for a faster preview loading
-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.cpp | 86 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.h | 3 |
2 files changed, 83 insertions, 6 deletions
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.cpp b/noncore/graphics/opie-eye/gui/imagescrollview.cpp index 2f16d82..d034ee0 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.cpp +++ b/noncore/graphics/opie-eye/gui/imagescrollview.cpp | |||
@@ -3,2 +3,4 @@ | |||
3 | #include <opie2/odebug.h> | 3 | #include <opie2/odebug.h> |
4 | #include <opie2/oapplication.h> | ||
5 | #include <opie2/owait.h> | ||
4 | 6 | ||
@@ -8,2 +10,3 @@ using namespace Opie::Core; | |||
8 | #include <qlayout.h> | 10 | #include <qlayout.h> |
11 | #include <qpe/qcopenvelope_qws.h> | ||
9 | 12 | ||
@@ -40,2 +43,4 @@ void ImageScrollView::setImage(const QImage&img) | |||
40 | m_lastName = ""; | 43 | m_lastName = ""; |
44 | image_is_jpeg = false; | ||
45 | image_scaled_loaded = false; | ||
41 | if (first_resize_done) { | 46 | if (first_resize_done) { |
@@ -45,2 +50,43 @@ void ImageScrollView::setImage(const QImage&img) | |||
45 | 50 | ||
51 | void ImageScrollView::loadJpeg(bool interncall) | ||
52 | { | ||
53 | if (m_lastName.isEmpty()) return; | ||
54 | QImageIO iio( m_lastName, 0l ); | ||
55 | QString param; | ||
56 | bool real_load = false; | ||
57 | if (scale_to_fit) { | ||
58 | if (!interncall) { | ||
59 | int wid, hei; | ||
60 | wid = QApplication::desktop()->width(); | ||
61 | hei = QApplication::desktop()->height(); | ||
62 | if (hei>wid) { | ||
63 | wid = hei; | ||
64 | } else { | ||
65 | hei = wid; | ||
66 | } | ||
67 | param = QString( "Fast Shrink( 7 ) Scale( %1, %2, ScaleFree)" ).arg( wid ).arg( hei ); | ||
68 | odebug << "Load jpeg scaled \"" << param << "\"" << oendl; | ||
69 | iio.setParameters(param.latin1()); | ||
70 | image_scaled_loaded = true; | ||
71 | real_load = true; | ||
72 | } | ||
73 | } else { | ||
74 | if (image_scaled_loaded||!interncall) { | ||
75 | odebug << "Load jpeg unscaled" << oendl; | ||
76 | real_load = true; | ||
77 | } | ||
78 | image_scaled_loaded = false; | ||
79 | } | ||
80 | if (real_load) { | ||
81 | { | ||
82 | QCopEnvelope( "QPE/System", "busy()" ); | ||
83 | } | ||
84 | _original_data = iio.read() ? iio.image() : QImage(); | ||
85 | { | ||
86 | QCopEnvelope env( "QPE/System", "notBusy(QString)" ); | ||
87 | env << "Image loaded"; | ||
88 | } | ||
89 | } | ||
90 | } | ||
91 | |||
46 | void ImageScrollView::setImage( const QString& path ) { | 92 | void ImageScrollView::setImage( const QString& path ) { |
@@ -49,5 +95,20 @@ void ImageScrollView::setImage( const QString& path ) { | |||
49 | m_lastName = path; | 95 | m_lastName = path; |
50 | _original_data.load(path); | 96 | QString itype = QImage::imageFormat(m_lastName); |
51 | _original_data.convertDepth(QPixmap::defaultDepth()); | 97 | odebug << "Image type = " << itype << oendl; |
52 | _original_data.setAlphaBuffer(false); | 98 | if (itype == "JPEG") { |
99 | image_is_jpeg = true; | ||
100 | loadJpeg(); | ||
101 | } else { | ||
102 | { | ||
103 | QCopEnvelope( "QPE/System", "busy()" ); | ||
104 | } | ||
105 | image_is_jpeg = false; | ||
106 | _original_data.load(path); | ||
107 | _original_data.convertDepth(QPixmap::defaultDepth()); | ||
108 | _original_data.setAlphaBuffer(false); | ||
109 | { | ||
110 | QCopEnvelope env( "QPE/System", "notBusy(QString)" ); | ||
111 | env << "Image loaded"; | ||
112 | } | ||
113 | } | ||
53 | _image_data = QImage(); | 114 | _image_data = QImage(); |
@@ -79,2 +140,4 @@ void ImageScrollView::init() | |||
79 | setFocusPolicy(QWidget::StrongFocus); | 140 | setFocusPolicy(QWidget::StrongFocus); |
141 | image_scaled_loaded = false; | ||
142 | image_is_jpeg = false; | ||
80 | if (first_resize_done) { | 143 | if (first_resize_done) { |
@@ -105,2 +168,5 @@ void ImageScrollView::setAutoScale(bool how) | |||
105 | _image_data = QImage(); | 168 | _image_data = QImage(); |
169 | if (image_is_jpeg && how == false && image_scaled_loaded==true) { | ||
170 | loadJpeg(true); | ||
171 | } | ||
106 | generateImage(); | 172 | generateImage(); |
@@ -242,2 +308,5 @@ void ImageScrollView::generateImage() | |||
242 | Rotation r = Rotate0; | 308 | Rotation r = Rotate0; |
309 | { | ||
310 | QCopEnvelope( "QPE/System", "busy()" ); | ||
311 | } | ||
243 | if (width()>height()&&_original_data.width()<_original_data.height() || | 312 | if (width()>height()&&_original_data.width()<_original_data.height() || |
@@ -246,2 +315,3 @@ void ImageScrollView::generateImage() | |||
246 | } | 315 | } |
316 | |||
247 | odebug << " r = " << r << oendl; | 317 | odebug << " r = " << r << oendl; |
@@ -268,3 +338,3 @@ void ImageScrollView::generateImage() | |||
268 | _pdata.convertFromImage(_image_data); | 338 | _pdata.convertFromImage(_image_data); |
269 | 339 | ||
270 | 340 | ||
@@ -273,3 +343,3 @@ void ImageScrollView::generateImage() | |||
273 | */ | 343 | */ |
274 | check_zoomer(); | 344 | check_zoomer(); |
275 | emit imageSizeChanged( _image_data.size() ); | 345 | emit imageSizeChanged( _image_data.size() ); |
@@ -281,3 +351,3 @@ void ImageScrollView::generateImage() | |||
281 | _image_data.width()/2, _image_data.height()/2 ); | 351 | _image_data.width()/2, _image_data.height()/2 ); |
282 | 352 | ||
283 | _zoomer->setImage( _image_data ); | 353 | _zoomer->setImage( _image_data ); |
@@ -287,2 +357,6 @@ void ImageScrollView::generateImage() | |||
287 | _image_data=QImage(); | 357 | _image_data=QImage(); |
358 | { | ||
359 | QCopEnvelope env( "QPE/System", "notBusy(QString)" ); | ||
360 | env << "Image generated"; | ||
361 | } | ||
288 | } | 362 | } |
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.h b/noncore/graphics/opie-eye/gui/imagescrollview.h index e209dfb..f6e187d 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.h +++ b/noncore/graphics/opie-eye/gui/imagescrollview.h | |||
@@ -59,2 +59,4 @@ protected: | |||
59 | bool first_resize_done; | 59 | bool first_resize_done; |
60 | bool image_is_jpeg; | ||
61 | bool image_scaled_loaded; | ||
60 | Rotation last_rot; | 62 | Rotation last_rot; |
@@ -65,2 +67,3 @@ protected: | |||
65 | virtual void generateImage(); | 67 | virtual void generateImage(); |
68 | virtual void loadJpeg(bool interncall = false); | ||
66 | bool image_fit_into(const QSize&s); | 69 | bool image_fit_into(const QSize&s); |