Diffstat (limited to 'noncore/multimedia/camera/lib') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/multimedia/camera/lib/zcameraio.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/noncore/multimedia/camera/lib/zcameraio.cpp b/noncore/multimedia/camera/lib/zcameraio.cpp index c940b45..d59cbbb 100644 --- a/noncore/multimedia/camera/lib/zcameraio.cpp +++ b/noncore/multimedia/camera/lib/zcameraio.cpp | |||
@@ -130,24 +130,25 @@ bool ZCameraIO::setCaptureFrame( int width, int height, int zoom, bool rot ) | |||
130 | odebug << "setCaptureFrame( " << width << ", " << height << ", " << zoom << ", " << rot << " )" << oendl; | 130 | odebug << "setCaptureFrame( " << width << ", " << height << ", " << zoom << ", " << rot << " )" << oendl; |
131 | char b[100]; | 131 | char b[100]; |
132 | sprintf( b, "%c=%d,%d,%d,%d", rot ? 'R':'S', width, height, zoom, width*2 ); | 132 | sprintf( b, "%c=%d,%d,%d,%d", rot ? 'R':'S', width, height, zoom, width*2 ); |
133 | if ( write( b ) ) | 133 | if ( write( b ) ) |
134 | { | 134 | { |
135 | _width = width; | 135 | _width = width; |
136 | _height = height; | 136 | _height = height; |
137 | _zoom = zoom; | 137 | _zoom = zoom; |
138 | _rot = rot; | 138 | _rot = rot; |
139 | _readlen = 2 * _width * _height; // camera is fixed @ 16 bits per pixel | 139 | _readlen = 2 * _width * _height; // camera is fixed @ 16 bits per pixel |
140 | return true; | 140 | return true; |
141 | } | 141 | } |
142 | owarn << "couldn't write to driver" << oendl; | ||
142 | return false; | 143 | return false; |
143 | } | 144 | } |
144 | 145 | ||
145 | 146 | ||
146 | bool ZCameraIO::setZoom( int zoom ) | 147 | bool ZCameraIO::setZoom( int zoom ) |
147 | { | 148 | { |
148 | return setCaptureFrame( _width, _height, zoom*256, _rot ); | 149 | return setCaptureFrame( _width, _height, zoom*256, _rot ); |
149 | } | 150 | } |
150 | 151 | ||
151 | 152 | ||
152 | void ZCameraIO::setReadMode( int mode ) | 153 | void ZCameraIO::setReadMode( int mode ) |
153 | { | 154 | { |
@@ -206,24 +207,26 @@ bool ZCameraIO::write( char* buf, int len ) | |||
206 | 207 | ||
207 | return ::write( _driver, buf, len ) == len; | 208 | return ::write( _driver, buf, len ) == len; |
208 | } | 209 | } |
209 | 210 | ||
210 | 211 | ||
211 | bool ZCameraIO::snapshot( QImage* image ) | 212 | bool ZCameraIO::snapshot( QImage* image ) |
212 | { | 213 | { |
213 | setReadMode( STATUS ); | 214 | setReadMode( STATUS ); |
214 | 215 | ||
215 | odebug << "finder reversed = " << isFinderReversed() << oendl; | 216 | odebug << "finder reversed = " << isFinderReversed() << oendl; |
216 | odebug << "rotation = " << _rot << oendl; | 217 | odebug << "rotation = " << _rot << oendl; |
217 | 218 | ||
219 | odebug << "w=" << _width << " h= " << _height << " readlen= " << _readlen << oendl; | ||
220 | |||
218 | int readmode; | 221 | int readmode; |
219 | if ( _flip == -1 ) // AUTO | 222 | if ( _flip == -1 ) // AUTO |
220 | { | 223 | { |
221 | if ( _rot ) // Portrait | 224 | if ( _rot ) // Portrait |
222 | { | 225 | { |
223 | readmode = IMAGE | isFinderReversed() ? XFLIP | YFLIP : 0; | 226 | readmode = IMAGE | isFinderReversed() ? XFLIP | YFLIP : 0; |
224 | } | 227 | } |
225 | else // Landscape | 228 | else // Landscape |
226 | { | 229 | { |
227 | readmode = IMAGE | XFLIP | YFLIP; | 230 | readmode = IMAGE | XFLIP | YFLIP; |
228 | } | 231 | } |
229 | } | 232 | } |
@@ -282,29 +285,30 @@ bool ZCameraIO::snapshot( unsigned char* buf ) | |||
282 | { | 285 | { |
283 | readmode = IMAGE | _flip; | 286 | readmode = IMAGE | _flip; |
284 | } | 287 | } |
285 | 288 | ||
286 | setReadMode( readmode ); | 289 | setReadMode( readmode ); |
287 | read( (char*) buf, _readlen ); | 290 | read( (char*) buf, _readlen ); |
288 | 291 | ||
289 | } | 292 | } |
290 | 293 | ||
291 | 294 | ||
292 | void ZCameraIO::captureFrame( int w, int h, int zoom, QImage* image ) | 295 | void ZCameraIO::captureFrame( int w, int h, int zoom, QImage* image ) |
293 | { | 296 | { |
297 | int prot = _rot; | ||
294 | int pw = _width; | 298 | int pw = _width; |
295 | int ph = _height; | 299 | int ph = _height; |
296 | setCaptureFrame( w, h, zoom*256, _rot ); | 300 | setCaptureFrame( w, h, zoom*256, w<h ); |
297 | snapshot( image ); | 301 | snapshot( image ); |
298 | setCaptureFrame( pw, ph, _zoom, _rot ); | 302 | setCaptureFrame( pw, ph, _zoom, prot ); |
299 | } | 303 | } |
300 | 304 | ||
301 | 305 | ||
302 | void ZCameraIO::captureFrame( int w, int h, int zoom, unsigned char* buf ) | 306 | void ZCameraIO::captureFrame( int w, int h, int zoom, unsigned char* buf ) |
303 | { | 307 | { |
304 | //FIXME: this is too slow | 308 | //FIXME: this is too slow |
305 | int pw = _width; | 309 | int pw = _width; |
306 | int ph = _height; | 310 | int ph = _height; |
307 | setCaptureFrame( w, h, zoom*256, _rot ); | 311 | setCaptureFrame( w, h, zoom*256, _rot ); |
308 | snapshot( buf ); | 312 | snapshot( buf ); |
309 | setCaptureFrame( pw, ph, _zoom, _rot ); | 313 | setCaptureFrame( pw, ph, _zoom, _rot ); |
310 | } | 314 | } |