summaryrefslogtreecommitdiff
path: root/noncore
authormickeyl <mickeyl>2003-04-13 22:27:57 (UTC)
committer mickeyl <mickeyl>2003-04-13 22:27:57 (UTC)
commitf47258125bac368987a90ca49a118721ecbc3a8b (patch) (unidiff)
tree04d137fce8890a311d0cc1c3ab2853acc64ccb45 /noncore
parent053c38bb48ae8e7563293bc029f3c9d029b947f7 (diff)
downloadopie-f47258125bac368987a90ca49a118721ecbc3a8b.zip
opie-f47258125bac368987a90ca49a118721ecbc3a8b.tar.gz
opie-f47258125bac368987a90ca49a118721ecbc3a8b.tar.bz2
make opiecam work!
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/camera/camera.pro2
-rw-r--r--noncore/multimedia/camera/mainwindow.cpp144
-rw-r--r--noncore/multimedia/camera/mainwindow.h22
-rw-r--r--noncore/multimedia/camera/previewwidget.cpp16
-rw-r--r--noncore/multimedia/camera/previewwidget.h4
-rw-r--r--noncore/multimedia/camera/zcameraio.cpp44
-rw-r--r--noncore/multimedia/camera/zcameraio.h22
7 files changed, 235 insertions, 19 deletions
diff --git a/noncore/multimedia/camera/camera.pro b/noncore/multimedia/camera/camera.pro
index 16da0c9..ffd5f37 100644
--- a/noncore/multimedia/camera/camera.pro
+++ b/noncore/multimedia/camera/camera.pro
@@ -17,3 +17,3 @@ INCLUDEPATH += $(OPIEDIR)/include
17DEPENDPATH += $(OPIEDIR)/include 17DEPENDPATH += $(OPIEDIR)/include
18LIBS += -lqpe -lopiecore2 18LIBS += -lqpe -lopie -lopiecore2
19INTERFACES = 19INTERFACES =
diff --git a/noncore/multimedia/camera/mainwindow.cpp b/noncore/multimedia/camera/mainwindow.cpp
index 34ebe9e..8e89039 100644
--- a/noncore/multimedia/camera/mainwindow.cpp
+++ b/noncore/multimedia/camera/mainwindow.cpp
@@ -19,2 +19,4 @@
19 19
20#include <qapplication.h>
21#include <qaction.h>
20#include <qvbox.h> 22#include <qvbox.h>
@@ -23,2 +25,4 @@
23#include <qdatastream.h> 25#include <qdatastream.h>
26#include <qfile.h>
27#include <qimage.h>
24#include <qlabel.h> 28#include <qlabel.h>
@@ -28,2 +32,3 @@
28#include <qdirectpainter_qws.h> 32#include <qdirectpainter_qws.h>
33#include <qpe/global.h>
29#include <qpe/resource.h> 34#include <qpe/resource.h>
@@ -31,2 +36,4 @@
31#include <opie/ofiledialog.h> 36#include <opie/ofiledialog.h>
37#include <opie/odevice.h>
38using namespace Opie;
32 39
@@ -37,4 +44,5 @@
37CameraMainWindow::CameraMainWindow( QWidget * parent, const char * name, WFlags f ) 44CameraMainWindow::CameraMainWindow( QWidget * parent, const char * name, WFlags f )
38 :QMainWindow( parent, name, f ) 45 :QMainWindow( parent, name, f ), _pics( 0 )
39{ 46{
47 #ifdef QT_NO_DEBUG
40 if ( !ZCameraIO::instance()->isOpen() ) 48 if ( !ZCameraIO::instance()->isOpen() )
@@ -53,2 +61,5 @@ CameraMainWindow::CameraMainWindow( QWidget * parent, const char * name, WFlags
53 } 61 }
62 #endif
63
64 init();
54 65
@@ -67,2 +78,4 @@ CameraMainWindow::CameraMainWindow( QWidget * parent, const char * name, WFlags
67 connect( preview, SIGNAL( contextMenuRequested() ), this, SLOT( showContextMenu() ) ); 78 connect( preview, SIGNAL( contextMenuRequested() ), this, SLOT( showContextMenu() ) );
79
80 connect( ZCameraIO::instance(), SIGNAL( shutterClicked() ), this, SLOT( shutterClicked() ) );
68}; 81};
@@ -75,2 +88,50 @@ CameraMainWindow::~CameraMainWindow()
75 88
89void CameraMainWindow::init()
90{
91 // TODO: Save this stuff in config
92 quality = 50;
93 zoom = 1;
94 captureX = 640;
95 captureY = 480;
96 captureFormat = "JPEG";
97
98 resog = new QActionGroup( 0, "reso", true );
99 resog->setToggleAction( true );
100 new QAction( " 64 x 48", 0, 0, resog, 0, true );
101 new QAction( "128 x 96", 0, 0, resog, 0, true );
102 new QAction( "192 x 144", 0, 0, resog, 0, true );
103 new QAction( "256 x 192", 0, 0, resog, 0, true );
104 new QAction( "320 x 240", 0, 0, resog, 0, true );
105 new QAction( "384 x 288", 0, 0, resog, 0, true );
106 new QAction( "448 x 336", 0, 0, resog, 0, true );
107 new QAction( "512 x 384", 0, 0, resog, 0, true );
108 new QAction( "576 x 432", 0, 0, resog, 0, true );
109 ( new QAction( "640 x 480", 0, 0, resog, 0, true ) )->setOn( true );
110
111 qualityg = new QActionGroup( 0, "quality", true );
112 qualityg->setToggleAction( true );
113 new QAction( " 0 (minimal)", 0, 0, qualityg, 0, true );
114 new QAction( " 25 (low)", 0, 0, qualityg, 0, true );
115 ( new QAction( " 50 (good)", 0, 0, qualityg, 0, true ) )->setOn( true );
116 new QAction( " 75 (better)", 0, 0, qualityg, 0, true );
117 new QAction( "100 (best)", 0, 0, qualityg, 0, true );
118
119 zoomg = new QActionGroup( 0, "zoom", true );
120 zoomg->setToggleAction( true );
121 ( new QAction( "x 1", 0, 0, zoomg, 0, true ) )->setOn( true );
122 new QAction( "x 2", 0, 0, zoomg, 0, true );
123
124 outputg = new QActionGroup( 0, "output", true );
125 outputg->setToggleAction( true );
126 ( new QAction( "JPEG", 0, 0, outputg, 0, true ) )->setOn( true );
127 new QAction( "PNG", 0, 0, outputg, 0, true );
128 new QAction( "BMP", 0, 0, outputg, 0, true );
129
130 connect( resog, SIGNAL( selected(QAction*) ), this, SLOT( resoMenuItemClicked(QAction*) ) );
131 connect( qualityg, SIGNAL( selected(QAction*) ), this, SLOT( qualityMenuItemClicked(QAction*) ) );
132 connect( zoomg, SIGNAL( selected(QAction*) ), this, SLOT( zoomMenuItemClicked(QAction*) ) );
133 connect( outputg, SIGNAL( selected(QAction*) ), this, SLOT( outputMenuItemClicked(QAction*) ) );
134}
135
136
76void CameraMainWindow::systemMessage( const QCString& msg, const QByteArray& data ) 137void CameraMainWindow::systemMessage( const QCString& msg, const QByteArray& data )
@@ -110,10 +171,25 @@ void CameraMainWindow::changeZoom( int zoom )
110 171
111
112void CameraMainWindow::showContextMenu() 172void CameraMainWindow::showContextMenu()
113{ 173{
174 QPopupMenu reso;
175 reso.setCheckable( true );
176 resog->addTo( &reso );
177
178 QPopupMenu quality;
179 quality.setCheckable( true );
180 qualityg->addTo( &quality );
181
182 QPopupMenu zoom;
183 zoom.setCheckable( true );
184 zoomg->addTo( &zoom );
185
186 QPopupMenu output;
187 output.setCheckable( true );
188 outputg->addTo( &output );
189
114 QPopupMenu m( this ); 190 QPopupMenu m( this );
115 m.insertItem( "Item 1" ); 191 m.insertItem( "&Resolution", &reso );
116 m.insertItem( "Item 1" ); 192 m.insertItem( "&Zoom", &zoom );
117 m.insertItem( "Item 1" ); 193 m.insertItem( "&Quality", &quality );
118 m.insertItem( "Item 1" ); 194 m.insertItem( "&Output As", &output );
119 m.exec( QCursor::pos() ); 195 m.exec( QCursor::pos() );
@@ -121 +197,57 @@ void CameraMainWindow::showContextMenu()
121 197
198
199void CameraMainWindow::resoMenuItemClicked( QAction* a )
200{
201 captureX = a->text().left(3).toInt();
202 captureY = a->text().right(3).toInt();
203 odebug << "Capture Resolution now: " << captureX << ", " << captureY << oendl;
204}
205
206
207void CameraMainWindow::qualityMenuItemClicked( QAction* a )
208{
209 quality = a->text().left(3).toInt();
210 odebug << "Quality now: " << quality << oendl;
211}
212
213
214void CameraMainWindow::zoomMenuItemClicked( QAction* a )
215{
216 zoom = QString( a->text()[2] ).toInt();
217 odebug << "Zoom now: " << zoom << oendl;
218 ZCameraIO::instance()->setZoom( zoom );
219}
220
221
222void CameraMainWindow::outputMenuItemClicked( QAction* a )
223{
224 captureFormat = a->text();
225 odebug << "Output format now: " << captureFormat << oendl;
226}
227
228
229void CameraMainWindow::shutterClicked()
230{
231 Global::statusMessage( "CAPTURING..." );
232 qApp->processEvents();
233
234 odebug << "Shutter has been pressed" << oendl;
235 ODevice::inst()->touchSound();
236 QString name;
237 name.sprintf( "/tmp/image-%d_%d_%d_q%d.%s", _pics++, captureX, captureY, quality, (const char*) captureFormat.lower() );
238 QImage i;
239 ZCameraIO::instance()->captureFrame( captureX, captureY, zoom, &i );
240 QImage im = i.convertDepth( 32 );
241 bool result = im.save( name, captureFormat, quality );
242 if ( !result )
243 {
244 oerr << "imageio-Problem while writing." << oendl;
245 Global::statusMessage( "Error!" );
246 }
247 else
248 {
249 odebug << captureFormat << "-image has been successfully captured" << oendl;
250 Global::statusMessage( "Ok." );
251 }
252}
253
diff --git a/noncore/multimedia/camera/mainwindow.h b/noncore/multimedia/camera/mainwindow.h
index df66204..7a12452 100644
--- a/noncore/multimedia/camera/mainwindow.h
+++ b/noncore/multimedia/camera/mainwindow.h
@@ -23,2 +23,4 @@
23 23
24class QAction;
25class QActionGroup;
24class QIconSet; 26class QIconSet;
@@ -41,6 +43,11 @@ class CameraMainWindow: public QMainWindow
41 void systemMessage( const QCString&, const QByteArray& ); 43 void systemMessage( const QCString&, const QByteArray& );
42
43 void showContextMenu(); 44 void showContextMenu();
45 void resoMenuItemClicked( QAction* );
46 void qualityMenuItemClicked( QAction* );
47 void zoomMenuItemClicked( QAction* );
48 void outputMenuItemClicked( QAction* );
49 void shutterClicked();
44 50
45 protected: 51 protected:
52 void init();
46 53
@@ -50,2 +57,15 @@ class CameraMainWindow: public QMainWindow
50 QCopChannel* _sysChannel; 57 QCopChannel* _sysChannel;
58
59 QActionGroup* resog;
60 QActionGroup* qualityg;
61 QActionGroup* zoomg;
62 QActionGroup* outputg;
63
64 int quality;
65 int zoom;
66 int captureX;
67 int captureY;
68 QString captureFormat;
69
70 int _pics;
51}; 71};
diff --git a/noncore/multimedia/camera/previewwidget.cpp b/noncore/multimedia/camera/previewwidget.cpp
index cdeacf6..f87dcc9 100644
--- a/noncore/multimedia/camera/previewwidget.cpp
+++ b/noncore/multimedia/camera/previewwidget.cpp
@@ -20,2 +20,4 @@
20 20
21#include <assert.h>
22
21PreviewWidget::PreviewWidget( QWidget * parent, const char * name, WFlags f ) 23PreviewWidget::PreviewWidget( QWidget * parent, const char * name, WFlags f )
@@ -29,5 +31,7 @@ PreviewWidget::PreviewWidget( QWidget * parent, const char * name, WFlags f )
29 31
30 32 #ifndef QT_NO_DEBUG
31 startTimer( 150 ); 33 if ( ZCameraIO::instance()->isOpen() ) startTimer( 1500 );
32 //startTimer( 2000 ); 34 #else
35 if ( ZCameraIO::instance()->isOpen() ) startTimer( 200 );
36 #endif
33}; 37};
@@ -64 +68,7 @@ void PreviewWidget::timerEvent( QTimerEvent* )
64 68
69
70void PreviewWidget::mousePressEvent( QMouseEvent* )
71{
72 emit contextMenuRequested();
73}
74
diff --git a/noncore/multimedia/camera/previewwidget.h b/noncore/multimedia/camera/previewwidget.h
index 6b64768..dada301 100644
--- a/noncore/multimedia/camera/previewwidget.h
+++ b/noncore/multimedia/camera/previewwidget.h
@@ -36,2 +36,6 @@ class PreviewWidget: public QLabel
36 virtual void resizeEvent( QResizeEvent* ); 36 virtual void resizeEvent( QResizeEvent* );
37 virtual void mousePressEvent( QMouseEvent* );
38
39 signals:
40 void contextMenuRequested();
37 41
diff --git a/noncore/multimedia/camera/zcameraio.cpp b/noncore/multimedia/camera/zcameraio.cpp
index b37ae8c..9af0c25 100644
--- a/noncore/multimedia/camera/zcameraio.cpp
+++ b/noncore/multimedia/camera/zcameraio.cpp
@@ -62,2 +62,3 @@ void ZCameraIO::init()
62 { 62 {
63 _timer = new QTime();
63 setReadMode( STATUS ); 64 setReadMode( STATUS );
@@ -85,4 +86,14 @@ bool ZCameraIO::isShutterPressed()
85{ 86{
86 return _status[0] == 'S'; 87 if ( _timer->elapsed() < 1000 ) //TODO: make this customizable?
87 clearShutterLatch(); 88 {
89 clearShutterLatch();
90 return false;
91 }
92 if ( _status[0] == 'S' )
93 {
94 _timer->restart();
95 clearShutterLatch();
96 return true;
97 }
98 else return false;
88} 99}
@@ -126,2 +137,8 @@ bool ZCameraIO::setCaptureFrame( int width, int height, int zoom, bool rot )
126 137
138bool ZCameraIO::setZoom( int zoom )
139{
140 return setCaptureFrame( _width, _height, zoom*256, _rot );
141}
142
143
127void ZCameraIO::setReadMode( int mode ) 144void ZCameraIO::setReadMode( int mode )
@@ -131,4 +148,7 @@ void ZCameraIO::setReadMode( int mode )
131 write( b, mode <= 9 ? 3 : 4 ); 148 write( b, mode <= 9 ? 3 : 4 );
132 if ( mode & 1 ) // STATUS bit is set 149 if ( mode & STATUS ) // STATUS bit is set
150 {
133 read( _status, 4 ); 151 read( _status, 4 );
152 if ( isShutterPressed() ) emit shutterClicked();
153 }
134} 154}
@@ -138,4 +158,3 @@ void ZCameraIO::clearShutterLatch()
138{ 158{
139 char b = 'B'; 159 write( "B", 1 );
140 write( &b, 1 );
141} 160}
@@ -214,2 +233,3 @@ bool ZCameraIO::snapshot( QImage* image )
214 233
234
215bool ZCameraIO::snapshot( unsigned char* buf ) 235bool ZCameraIO::snapshot( unsigned char* buf )
@@ -230 +250,15 @@ bool ZCameraIO::snapshot( unsigned char* buf )
230 250
251
252void ZCameraIO::captureFrame( int w, int h, int zoom, QImage* image )
253{
254 int pw = _width;
255 int ph = _height;
256 if ( _rot )
257 setCaptureFrame( h, w, zoom*256, true );
258 else
259 setCaptureFrame( w, h, zoom*256, false );
260 snapshot( image );
261 setCaptureFrame( pw, ph, _zoom, _rot );
262}
263
264
diff --git a/noncore/multimedia/camera/zcameraio.h b/noncore/multimedia/camera/zcameraio.h
index 9d4b1d7..edce143 100644
--- a/noncore/multimedia/camera/zcameraio.h
+++ b/noncore/multimedia/camera/zcameraio.h
@@ -18,6 +18,11 @@
18 18
19#include <qobject.h>
20
19class QImage; 21class QImage;
22class QTime;
20 23
21class ZCameraIO 24class ZCameraIO : public QObject
22{ 25{
26 Q_OBJECT
27
23 public: 28 public:
@@ -33,3 +38,6 @@ class ZCameraIO
33 38
39 // low level interface
40
34 bool setCaptureFrame( int w, int h, int zoom = 256, bool rot = true ); 41 bool setCaptureFrame( int w, int h, int zoom = 256, bool rot = true );
42 bool setZoom( int zoom = 0 );
35 void setReadMode( int = IMAGE | XFLIP | YFLIP ); 43 void setReadMode( int = IMAGE | XFLIP | YFLIP );
@@ -40,7 +48,10 @@ class ZCameraIO
40 bool isFinderReversed() const; 48 bool isFinderReversed() const;
41 bool isOpen() const;
42 49
43 bool snapshot( QImage* );
44 bool snapshot( unsigned char* ); 50 bool snapshot( unsigned char* );
51 bool snapshot( QImage* );
52
53 // high level interface
54 bool isOpen() const;
45 static ZCameraIO* instance(); 55 static ZCameraIO* instance();
56 void captureFrame( int w, int h, int zoom, QImage* image );
46 57
@@ -53,2 +64,5 @@ class ZCameraIO
53 64
65 signals:
66 void shutterClicked();
67
54 private: 68 private:
@@ -62,2 +76,4 @@ class ZCameraIO
62 int _readlen; 76 int _readlen;
77
78 QTime* _timer;
63}; 79};