diff options
Diffstat (limited to 'src/imports/multimedia/qdeclarativecamera.cpp')
-rw-r--r-- | src/imports/multimedia/qdeclarativecamera.cpp | 890 |
1 files changed, 69 insertions, 821 deletions
diff --git a/src/imports/multimedia/qdeclarativecamera.cpp b/src/imports/multimedia/qdeclarativecamera.cpp index a6b619c92..b8fab3661 100644 --- a/src/imports/multimedia/qdeclarativecamera.cpp +++ b/src/imports/multimedia/qdeclarativecamera.cpp @@ -42,176 +42,32 @@ #include "qdeclarativecamera_p.h" #include "qdeclarativecamerapreviewprovider_p.h" +#include "qdeclarativecameraexposure_p.h" +#include "qdeclarativecameraflash_p.h" +#include "qdeclarativecamerafocus_p.h" +#include "qdeclarativecameraimageprocessing_p.h" + #include <qmediaplayercontrol.h> #include <qmediaservice.h> -#include <private/qpaintervideosurface_p.h> #include <qvideorenderercontrol.h> #include <QtDeclarative/qdeclarativeinfo.h> #include <QtCore/QTimer> #include <QtGui/qevent.h> - QT_BEGIN_NAMESPACE -class FocusZoneItem : public QGraphicsItem { -public: - FocusZoneItem(const QCameraFocusZone & zone, const QColor &color, QGraphicsItem *parent = 0) - :QGraphicsItem(parent),m_zone(zone), m_color(color) - {} - - virtual ~FocusZoneItem() {} - void paint(QPainter *painter, - const QStyleOptionGraphicsItem *option, - QWidget *widget = 0) - { - Q_UNUSED(widget); - Q_UNUSED(option); - - painter->setPen(QPen(QBrush(m_color), 2.5)); - QRectF r = boundingRect(); - QPointF dw(r.width()/10, 0); - QPointF dh(0, r.width()/10); - - painter->drawLine(r.topLeft(), r.topLeft()+dw); - painter->drawLine(r.topLeft(), r.topLeft()+dh); - - painter->drawLine(r.topRight(), r.topRight()-dw); - painter->drawLine(r.topRight(), r.topRight()+dh); - - painter->drawLine(r.bottomLeft(), r.bottomLeft()+dw); - painter->drawLine(r.bottomLeft(), r.bottomLeft()-dh); - - painter->drawLine(r.bottomRight(), r.bottomRight()-dw); - painter->drawLine(r.bottomRight(), r.bottomRight()-dh); - } - - QRectF boundingRect() const { - if (!parentItem()) - return QRectF(); - - QRectF p = parentItem()->boundingRect(); - QRectF zone = m_zone.area(); - - return QRectF(p.left() + zone.left()*p.width(), - p.top() + zone.top()*p.height(), - p.width()*zone.width(), - p.height()*zone.height()); - } - - - QCameraFocusZone m_zone; - QColor m_color; -}; - - -void QDeclarativeCamera::_q_nativeSizeChanged(const QSizeF &size) -{ - setImplicitWidth(size.width()); - setImplicitHeight(size.height()); -} - void QDeclarativeCamera::_q_error(int errorCode, const QString &errorString) { emit error(Error(errorCode), errorString); emit errorChanged(); } -void QDeclarativeCamera::_q_imageCaptured(int id, const QImage &preview) -{ - m_capturedImagePreview = preview; - QString previewId = QString("preview_%1").arg(id); - QDeclarativeCameraPreviewProvider::registerPreview(previewId, preview); - - emit imageCaptured(QLatin1String("image://camera/")+previewId); -} - -void QDeclarativeCamera::_q_imageSaved(int id, const QString &fileName) -{ - Q_UNUSED(id); - m_capturedImagePath = fileName; - emit imageSaved(fileName); -} - void QDeclarativeCamera::_q_updateState(QCamera::State state) { emit cameraStateChanged(QDeclarativeCamera::State(state)); } -void QDeclarativeCamera::_q_updateLockStatus(QCamera::LockType type, - QCamera::LockStatus status, - QCamera::LockChangeReason reason) -{ - if (type == QCamera::LockFocus) { - if (status == QCamera::Unlocked && reason == QCamera::LockFailed) { - //display failed focus points in red for 1 second - m_focusFailedTime = QTime::currentTime(); - QTimer::singleShot(1000, this, SLOT(_q_updateFocusZones())); - } else { - m_focusFailedTime = QTime(); - } - _q_updateFocusZones(); - } -} - -void QDeclarativeCamera::_q_updateFocusZones() -{ - qDeleteAll(m_focusZones); - m_focusZones.clear(); - - foreach(const QCameraFocusZone &zone, m_camera->focus()->focusZones()) { - QColor c; - QCamera::LockStatus lockStatus = m_camera->lockStatus(QCamera::LockFocus); - - if (lockStatus == QCamera::Unlocked) { - //display failed focus points in red for 1 second - if (zone.status() == QCameraFocusZone::Selected && - m_focusFailedTime.msecsTo(QTime::currentTime()) < 500) { - c = Qt::red; - } - } else { - switch (zone.status()) { - case QCameraFocusZone::Focused: - c = Qt::green; - break; - case QCameraFocusZone::Selected: - c = lockStatus == QCamera::Searching ? Qt::yellow : Qt::black; - break; - default: - c= QColor::Invalid; - break; - } - } - - if (c.isValid()) - m_focusZones.append(new FocusZoneItem(zone, c, m_viewfinderItem)); - } -} - -void QDeclarativeCamera::_q_updateImageSettings() -{ - if (m_imageSettingsChanged) { - m_imageSettingsChanged = false; - m_capture->setEncodingSettings(m_imageSettings); - } -} - -void QDeclarativeCamera::_q_applyPendingState() -{ - if (!m_isStateSet) { - m_isStateSet = true; - setCameraState(m_pendingState); - } -} - -void QDeclarativeCamera::_q_captureFailed(int id, QCameraImageCapture::Error error, const QString &message) -{ - Q_UNUSED(id); - Q_UNUSED(error); - emit captureFailed(message); -} - - /*! \qmlclass Camera QDeclarativeCamera \since 4.7 @@ -226,16 +82,29 @@ void QDeclarativeCamera::_q_captureFailed(int id, QCameraImageCapture::Error err import QtMultimediaKit 1.1 Camera { - focus : visible // to receive focus and capture key events when visible + id: camera + + imageProcessing.whiteBalanceMode: CameraImageProcessing.WhiteBalanceFlash + + exposure { + exposureCompensation: -1.0 + exposureMode: Camera.ExposurePortrait + } - flashMode: Camera.FlashRedEyeReduction - whiteBalanceMode: Camera.WhiteBalanceFlash - exposureCompensation: -1.0 + flash.mode: Camera.FlashRedEyeReduction onImageCaptured : { photoPreview.source = preview // Show the preview in an Image element } + } + VideoOutput { + source: camera + focus : visible // to receive focus and capture key events when visible + } + + Image { + id: photoPreview } \endqml @@ -251,66 +120,45 @@ void QDeclarativeCamera::_q_captureFailed(int id, QCameraImageCapture::Error err /*! Construct a declarative camera object using \a parent object. */ -QDeclarativeCamera::QDeclarativeCamera(QDeclarativeItem *parent) : - QDeclarativeItem(parent), +QDeclarativeCamera::QDeclarativeCamera(QObject *parent) : + QObject(parent), m_camera(0), - m_viewfinderItem(0), - m_imageSettingsChanged(false), m_pendingState(ActiveState), - m_isStateSet(false), - m_isValid(true) + m_componentComplete(false) { m_camera = new QCamera(this); - m_viewfinderItem = new QGraphicsVideoItem(this); - m_camera->setViewfinder(m_viewfinderItem); - m_exposure = m_camera->exposure(); - m_focus = m_camera->focus(); - connect(m_viewfinderItem, SIGNAL(nativeSizeChanged(QSizeF)), - this, SLOT(_q_nativeSizeChanged(QSizeF))); + m_imageCapture = new QDeclarativeCameraCapture(m_camera, this); + m_videoRecorder = new QDeclarativeCameraRecorder(m_camera, this); + m_exposure = new QDeclarativeCameraExposure(m_camera, this); + m_flash = new QDeclarativeCameraFlash(m_camera, this); + m_focus = new QDeclarativeCameraFocus(m_camera, this); + m_imageProcessing = new QDeclarativeCameraImageProcessing(m_camera, this); + connect(m_camera, SIGNAL(captureModeChanged(QCamera::CaptureMode)), this, SIGNAL(captureModeChanged())); connect(m_camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason)), this, SIGNAL(lockStatusChanged())); connect(m_camera, SIGNAL(stateChanged(QCamera::State)), this, SLOT(_q_updateState(QCamera::State))); - m_capture = new QCameraImageCapture(m_camera, this); - - connect(m_capture, SIGNAL(imageCaptured(int,QImage)), this, SLOT(_q_imageCaptured(int, QImage))); - connect(m_capture, SIGNAL(imageSaved(int,QString)), this, SLOT(_q_imageSaved(int, QString))); - connect(m_capture, SIGNAL(error(int,QCameraImageCapture::Error,QString)), - this, SLOT(_q_captureFailed(int,QCameraImageCapture::Error,QString))); - - connect(m_focus, SIGNAL(focusZonesChanged()), this, SLOT(_q_updateFocusZones())); - connect(m_camera, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason)), - this, SLOT(_q_updateLockStatus(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - - connect(m_exposure, SIGNAL(isoSensitivityChanged(int)), this, SIGNAL(isoSensitivityChanged(int))); - connect(m_exposure, SIGNAL(apertureChanged(qreal)), this, SIGNAL(apertureChanged(qreal))); - connect(m_exposure, SIGNAL(shutterSpeedChanged(qreal)), this, SIGNAL(shutterSpeedChanged(qreal))); - - //connect(m_exposure, SIGNAL(exposureCompensationChanged(qreal)), this, SIGNAL(exposureCompensationChanged(qreal))); - - connect(m_focus, SIGNAL(opticalZoomChanged(qreal)), this, SIGNAL(opticalZoomChanged(qreal))); - connect(m_focus, SIGNAL(digitalZoomChanged(qreal)), this, SIGNAL(digitalZoomChanged(qreal))); - connect(m_focus, SIGNAL(maximumOpticalZoomChanged(qreal)), this, SIGNAL(maximumOpticalZoomChanged(qreal))); - connect(m_focus, SIGNAL(maximumDigitalZoomChanged(qreal)), this, SIGNAL(maximumDigitalZoomChanged(qreal))); - - //delayed start to evoid stopping the cammera immediately if - //stop() is called after constructor, - //or to set the rest of camera settings before starting the camera - QMetaObject::invokeMethod(this, "_q_applyPendingState", Qt::QueuedConnection); - + connect(m_camera->focus(), SIGNAL(opticalZoomChanged(qreal)), this, SIGNAL(opticalZoomChanged(qreal))); + connect(m_camera->focus(), SIGNAL(digitalZoomChanged(qreal)), this, SIGNAL(digitalZoomChanged(qreal))); + connect(m_camera->focus(), SIGNAL(maximumOpticalZoomChanged(qreal)), this, SIGNAL(maximumOpticalZoomChanged(qreal))); + connect(m_camera->focus(), SIGNAL(maximumDigitalZoomChanged(qreal)), this, SIGNAL(maximumDigitalZoomChanged(qreal))); } /*! Destructor, clean up memory */ QDeclarativeCamera::~QDeclarativeCamera() { - if (m_isValid) { - m_camera->unload(); + m_camera->unload(); +} - delete m_viewfinderItem; - delete m_capture; - delete m_camera; - } +void QDeclarativeCamera::classBegin() +{ +} + +void QDeclarativeCamera::componentComplete() +{ + m_componentComplete = true; + setCameraState(m_pendingState); } /*! @@ -319,9 +167,6 @@ QDeclarativeCamera::~QDeclarativeCamera() */ QDeclarativeCamera::Error QDeclarativeCamera::error() const { - if (!m_isValid) - return QDeclarativeCamera::CameraError; - return QDeclarativeCamera::Error(m_camera->error()); } @@ -330,50 +175,24 @@ QDeclarativeCamera::Error QDeclarativeCamera::error() const A description of the current error, if any. */ -/*! - \property QDeclarativeCamera::errorString - - A description of the current error, if any. -*/ QString QDeclarativeCamera::errorString() const { - if (!m_isValid) - return QString(); - return m_camera->errorString(); } -/*! - \qmlproperty enumeration Camera::cameraState - - The current state of the camera object. - - \table - \header \o Value \o Description - \row \o UnloadedState - \o The initial camera state, with camera not loaded, - the camera capabilities except of supported capture modes - are unknown. - While the supported settings are unknown in this state, - it's allowed to set the camera capture settings like codec, - resolution, or frame rate. - - \row \o LoadedState - \o The camera is loaded and ready to be configured. +QDeclarativeCamera::CaptureMode QDeclarativeCamera::captureMode() const +{ + return QDeclarativeCamera::CaptureMode(m_camera->captureMode()); +} - In the Idle state it's allowed to query camera capabilities, - set capture resolution, codecs, etc. +void QDeclarativeCamera::setCaptureMode(QDeclarativeCamera::CaptureMode mode) +{ + m_camera->setCaptureMode(QCamera::CaptureMode(mode)); +} - The viewfinder is not active in the loaded state. - \row \o ActiveState - \o In the active state as soon as camera is started - the viewfinder displays video frames and the - camera is ready for capture. - \endtable -*/ /*! - \property QDeclarativeCamera::cameraState + \qmlproperty enumeration Camera::cameraState The current state of the camera object. @@ -400,6 +219,8 @@ QString QDeclarativeCamera::errorString() const the viewfinder displays video frames and the camera is ready for capture. \endtable + + The default camera state is ActiveState. */ /*! \enum QDeclarativeCamera::State @@ -421,25 +242,16 @@ QString QDeclarativeCamera::errorString() const In the active state as soon as camera is started the viewfinder displays video frames and the camera is ready for capture. - - - The default camera state is ActiveState. */ QDeclarativeCamera::State QDeclarativeCamera::cameraState() const { - if (!m_isValid) - return QDeclarativeCamera::UnloadedState; - - return m_isStateSet ? QDeclarativeCamera::State(m_camera->state()) : m_pendingState; + return m_componentComplete ? QDeclarativeCamera::State(m_camera->state()) : m_pendingState; } void QDeclarativeCamera::setCameraState(QDeclarativeCamera::State state) { - if (!m_isValid) - return; - - if (!m_isStateSet) { + if (!m_componentComplete) { m_pendingState = state; return; } @@ -465,8 +277,7 @@ void QDeclarativeCamera::setCameraState(QDeclarativeCamera::State state) */ void QDeclarativeCamera::start() { - if (m_isValid) - m_camera->start(); + setCameraState(QDeclarativeCamera::ActiveState); } /*! @@ -477,8 +288,7 @@ void QDeclarativeCamera::start() */ void QDeclarativeCamera::stop() { - if (m_isValid) - m_camera->stop(); + setCameraState(QDeclarativeCamera::LoadedState); } @@ -556,9 +366,6 @@ void QDeclarativeCamera::stop() */ QDeclarativeCamera::LockStatus QDeclarativeCamera::lockStatus() const { - if (!m_isValid) - return QDeclarativeCamera::Unlocked; - return QDeclarativeCamera::LockStatus(m_camera->lockStatus()); } @@ -572,8 +379,7 @@ QDeclarativeCamera::LockStatus QDeclarativeCamera::lockStatus() const */ void QDeclarativeCamera::searchAndLock() { - if (m_isValid) - m_camera->searchAndLock(); + m_camera->searchAndLock(); } /*! @@ -587,533 +393,63 @@ void QDeclarativeCamera::searchAndLock() */ void QDeclarativeCamera::unlock() { - if (m_isValid) - m_camera->unlock(); -} - -/*! - \qmlmethod Camera::captureImage() - \fn QDeclarativeCamera::captureImage() - - Start image capture. The \l onImageCaptured() and \l onImageSaved() signals will - be emitted when the capture is complete. -*/ -void QDeclarativeCamera::captureImage() -{ - if (m_isValid) - m_capture->capture(); -} - -// XXX this doesn't seem to be used -/*! - \fn QDeclarativeCamera::capturedImagePreview() const -*/ -QImage QDeclarativeCamera::capturedImagePreview() const -{ - return m_capturedImagePreview; -} - -/*! - \qmlproperty string Camera::capturedImagePath - - The path to the captured image. -*/ -/*! - \property QDeclarativeCamera::capturedImagePath - - The path to the captured image. -*/ -QString QDeclarativeCamera::capturedImagePath() const -{ - return m_capturedImagePath; -} - -/*! - Paint method. -*/ -void QDeclarativeCamera::paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) -{ -} - -/*! - Change viewfinder size to \a newGeometry and returning the \a oldGeometry -*/ -void QDeclarativeCamera::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - m_viewfinderItem->setSize(newGeometry.size()); - _q_updateFocusZones(); - - QDeclarativeItem::geometryChanged(newGeometry, oldGeometry); -} - -void QDeclarativeCamera::keyPressEvent(QKeyEvent * event) -{ - if (!m_isValid || event->isAutoRepeat()) - return; - - switch (event->key()) { - case Qt::Key_CameraFocus: - m_camera->searchAndLock(); - event->accept(); - break; - case Qt::Key_Camera: - if (m_camera->captureMode() == QCamera::CaptureStillImage) - captureImage(); - //else - // m_recorder->record(); - event->accept(); - break; - default: - QDeclarativeItem::keyPressEvent(event); - } -} - -/*! - Handle the release of a key in \a event and take action if needed. -*/ -void QDeclarativeCamera::keyReleaseEvent(QKeyEvent * event) -{ - if (!m_isValid || event->isAutoRepeat()) - return; - - switch (event->key()) { - case Qt::Key_CameraFocus: - m_camera->unlock(); - event->accept(); - break; - case Qt::Key_Camera: - //if (m_camera->captureMode() == QCamera::CaptureVideo) - // m_recorder->stop(); - event->accept(); - break; - default: - QDeclarativeItem::keyReleaseEvent(event); - } -} - - -/*! - \qmlproperty enumeration Camera::flashMode - - \table - \header \o Value \o Description - \row \o FlashOff \o Flash is Off. - \row \o FlashOn \o Flash is On. - \row \o FlashAuto \o Automatic flash. - \row \o FlashRedEyeReduction \o Red eye reduction flash. - \row \o FlashFill \o Use flash to fillin shadows. - \row \o FlashTorch \o Constant light source, useful for focusing and video capture. - \row \o FlashSlowSyncFrontCurtain - \o Use the flash in conjunction with a slow shutter speed. - This mode allows better exposure of distant objects and/or motion blur effect. - \row \o FlashSlowSyncRearCurtain - \o The similar mode to FlashSlowSyncFrontCurtain but flash is fired at the end of exposure. - \row \o FlashManual \o Flash power is manually set. - \endtable - -*/ -/*! - \property QDeclarativeCamera::flashMode - - \table - \header \o Value \o Description - \row \o FlashOff \o Flash is Off. - \row \o FlashOn \o Flash is On. - \row \o FlashAuto \o Automatic flash. - \row \o FlashRedEyeReduction \o Red eye reduction flash. - \row \o FlashFill \o Use flash to fillin shadows. - \row \o FlashTorch \o Constant light source, useful for focusing and video capture. - \row \o FlashSlowSyncFrontCurtain - \o Use the flash in conjunction with a slow shutter speed. - This mode allows better exposure of distant objects and/or motion blur effect. - \row \o FlashSlowSyncRearCurtain - \o The similar mode to FlashSlowSyncFrontCurtain but flash is fired at the end of exposure. - \row \o FlashManual \o Flash power is manually set. - \endtable - -*/ -/*! - \enum QDeclarativeCamera::FlashMode - \value FlashOff Flash is Off. - \value FlashOn Flash is On. - \value FlashAuto Automatic flash. - \value FlashRedEyeReduction Red eye reduction flash. - \value FlashFill Use flash to fillin shadows. - \value FlashTorch Constant light source, useful for focusing and video capture. - \value FlashSlowSyncFrontCurtain - Use the flash in conjunction with a slow shutter speed. - This mode allows better exposure of distant objects and/or motion blur effect. - \value FlashSlowSyncRearCurtain - The similar mode to FlashSlowSyncFrontCurtain but flash is fired at the end of exposure. - \value FlashManual Flash power is manually set. - -*/ -int QDeclarativeCamera::flashMode() const -{ - if (!m_isValid) - return 0; - - return m_exposure->flashMode(); -} - -void QDeclarativeCamera::setFlashMode(int mode) -{ - if (m_isValid && m_exposure->flashMode() != mode) { - m_exposure->setFlashMode(QCameraExposure::FlashModes(mode)); - emit flashModeChanged(mode); - } -} - -/*! - \qmlproperty real Camera::exposureCompensation - - Adjustment for the automatically calculated exposure. The value is - in EV units. - */ -/*! - \property QDeclarativeCamera::exposureCompensation - - Adjustment for the automatically calculated exposure. The value is - in EV units. - */ -qreal QDeclarativeCamera::exposureCompensation() const -{ - if (!m_isValid) - return 0.0; - - return m_exposure->exposureCompensation(); -} - -void QDeclarativeCamera::setExposureCompensation(qreal ev) -{ - if (m_isValid) - m_exposure->setExposureCompensation(ev); -} - -/*! - \qmlproperty real Camera::isoSensitivity - - The sensor's ISO sensitivity. - */ -/*! - \property QDeclarativeCamera::iso - - The sensor's ISO sensitivity. - */ -int QDeclarativeCamera::isoSensitivity() const -{ - if (!m_isValid) - return 0; - - return m_exposure->isoSensitivity(); -} - -void QDeclarativeCamera::setManualIsoSensitivity(int iso) -{ - if (!m_isValid) - return; - - m_exposure->setManualIsoSensitivity(iso); -} - -/*! - \qmlproperty real Camera::shutterSpeed - - The camera's shutter speed, in seconds. -*/ -/*! - \property QDeclarativeCamera::shutterSpeed - - The camera's shutter speed, in seconds. -*/ -qreal QDeclarativeCamera::shutterSpeed() const -{ - if (!m_isValid) - return 0.0; - - return m_exposure->shutterSpeed(); -} - -/*! - \qmlproperty real Camera::aperture - - The lens aperture as an F number (the ratio of the focal length to effective aperture diameter). -*/ -/*! - \property QDeclarativeCamera::aperture - - The lens aperture as an F number (the ratio of the focal length to effective aperture diameter). -*/ -qreal QDeclarativeCamera::aperture() const -{ - if (!m_isValid) - return 0.0; - - return m_exposure->aperture(); -} - -/*! - \qmlproperty enumeration Camera::exposureMode - - \table - \header \o Value \o Description - \row \o ExposureManual \o Manual mode. - \row \o ExposureAuto \o Automatic mode. - \row \o ExposureNight \o Night mode. - \row \o ExposureBacklight \o Backlight exposure mode. - \row \o ExposureSpotlight \o Spotlight exposure mode. - \row \o ExposureSports \o Spots exposure mode. - \row \o ExposureSnow \o Snow exposure mode. - \row \o ExposureBeach \o Beach exposure mode. - \row \o ExposureLargeAperture \o Use larger aperture with small depth of field. - \row \o ExposureSmallAperture \o Use smaller aperture. - \row \o ExposurePortrait \o Portrait exposure mode. - \row \o ExposureModeVendor \o The base value for device specific exposure modes. - \endtable - -*/ -/*! - \enum QDeclarativeCamera::ExposureMode - \value ExposureManual Manual mode. - \value ExposureAuto Automatic mode. - \value ExposureNight Night mode. - \value ExposureBacklight Backlight exposure mode. - \value ExposureSpotlight Spotlight exposure mode. - \value ExposureSports Spots exposure mode. - \value ExposureSnow Snow exposure mode. - \value ExposureBeach Beach exposure mode. - \value ExposureLargeAperture Use larger aperture with small depth of field. - \value ExposureSmallAperture Use smaller aperture. - \value ExposurePortrait Portrait exposure mode. - \value ExposureModeVendor The base value for device specific exposure modes. - -*/ -/*! - \property QDeclarativeCamera::exposureMode - - Camera exposure modes. -*/ -QDeclarativeCamera::ExposureMode QDeclarativeCamera::exposureMode() const -{ - if (!m_isValid) - return QDeclarativeCamera::ExposureAuto; - - return ExposureMode(m_exposure->exposureMode()); -} - -void QDeclarativeCamera::setExposureMode(QDeclarativeCamera::ExposureMode mode) -{ - if (!m_isValid) - return; - - if (exposureMode() != mode) { - m_exposure->setExposureMode(QCameraExposure::ExposureMode(mode)); - emit exposureModeChanged(exposureMode()); - } -} - -/*! - \qmlproperty size Camera::captureResolution - - The resolution to capture the image at. If empty, the system will pick - a good size. -*/ -/*! - \property QDeclarativeCamera::captureResolution - - The resolution to capture the image at. If empty, the system will pick - a good size. -*/ -QSize QDeclarativeCamera::captureResolution() const -{ - if (!m_isValid) - return QSize(); - - return m_imageSettings.resolution(); -} - -void QDeclarativeCamera::setCaptureResolution(const QSize &resolution) -{ - if (m_isValid && m_imageSettings.resolution() != resolution) { - m_imageSettings.setResolution(resolution); - - if (!m_imageSettingsChanged) { - m_imageSettingsChanged = true; - QMetaObject::invokeMethod(this, "_q_updateImageSettings", Qt::QueuedConnection); - } - - emit captureResolutionChanged(resolution); - } + m_camera->unlock(); } /*! \qmlproperty real Camera::maximumOpticalZoom - - The maximum optical zoom factor, or 1.0 if optical zoom is not supported. -*/ -/*! \property QDeclarativeCamera::maximumOpticalZoom The maximum optical zoom factor, or 1.0 if optical zoom is not supported. */ qreal QDeclarativeCamera::maximumOpticalZoom() const { - if (!m_isValid) - return 0.0; - - return m_focus->maximumOpticalZoom(); + return m_camera->focus()->maximumOpticalZoom(); } /*! \qmlproperty real Camera::maximumDigitalZoom - - The maximum digital zoom factor, or 1.0 if digital zoom is not supported. -*/ -/*! \property QDeclarativeCamera::maximumDigitalZoom The maximum digital zoom factor, or 1.0 if digital zoom is not supported. */ qreal QDeclarativeCamera::maximumDigitalZoom() const { - if (!m_isValid) - return 0.0; - - return m_focus->maximumDigitalZoom(); + return m_camera->focus()->maximumDigitalZoom(); } /*! \qmlproperty real Camera::opticalZoom - - The current optical zoom factor. -*/ -/*! \property QDeclarativeCamera::opticalZoom The current optical zoom factor. */ qreal QDeclarativeCamera::opticalZoom() const { - if (!m_isValid) - return 0.0; - - return m_focus->opticalZoom(); + return m_camera->focus()->opticalZoom(); } void QDeclarativeCamera::setOpticalZoom(qreal value) { - if (m_isValid) - m_focus->zoomTo(value, digitalZoom()); + m_camera->focus()->zoomTo(value, digitalZoom()); } /*! \qmlproperty real Camera::digitalZoom - - The current digital zoom factor. -*/ -/*! \property QDeclarativeCamera::digitalZoom The current digital zoom factor. */ qreal QDeclarativeCamera::digitalZoom() const { - if (!m_isValid) - return 0.0; - - return m_focus->digitalZoom(); + return m_camera->focus()->digitalZoom(); } void QDeclarativeCamera::setDigitalZoom(qreal value) { - if (m_isValid) - m_focus->zoomTo(opticalZoom(), value); + m_camera->focus()->zoomTo(opticalZoom(), value); } -/*! - \enum QDeclarativeCamera::WhiteBalanceMode - \value WhiteBalanceManual Manual white balance. In this mode the manual white balance property value is used. - \value WhiteBalanceAuto Auto white balance mode. - \value WhiteBalanceSunlight Sunlight white balance mode. - \value WhiteBalanceCloudy Cloudy white balance mode. - \value WhiteBalanceShade Shade white balance mode. - \value WhiteBalanceTungsten Tungsten white balance mode. - \value WhiteBalanceFluorescent Fluorescent white balance mode. - \value WhiteBalanceIncandescent Incandescent white balance mode. - \value WhiteBalanceFlash Flash white balance mode. - \value WhiteBalanceSunset Sunset white balance mode. - \value WhiteBalanceVendor Vendor defined white balance mode. -*/ -/*! - \qmlproperty enumeration Camera::whiteBalanceMode - - \table - \header \o Value \o Description - \row \o WhiteBalanceManual \o Manual white balance. In this mode the manual white balance property value is used. - \row \o WhiteBalanceAuto \o Auto white balance mode. - \row \o WhiteBalanceSunlight \o Sunlight white balance mode. - \row \o WhiteBalanceCloudy \o Cloudy white balance mode. - \row \o WhiteBalanceShade \o Shade white balance mode. - \row \o WhiteBalanceTungsten \o Tungsten white balance mode. - \row \o WhiteBalanceFluorescent \o Fluorescent white balance mode. - \row \o WhiteBalanceIncandescent \o Incandescent white balance mode. - \row \o WhiteBalanceFlash \o Flash white balance mode. - \row \o WhiteBalanceSunset \o Sunset white balance mode. - \row \o WhiteBalanceVendor \o Vendor defined white balance mode. - \endtable - - \sa manualWhiteBalance -*/ -/*! - \property QDeclarativeCamera::whiteBalanceMode - - \sa WhiteBalanceMode -*/ -QDeclarativeCamera::WhiteBalanceMode QDeclarativeCamera::whiteBalanceMode() const -{ - if (!m_isValid) - return QDeclarativeCamera::WhiteBalanceAuto; - - return WhiteBalanceMode(m_camera->imageProcessing()->whiteBalanceMode()); -} - -void QDeclarativeCamera::setWhiteBalanceMode(QDeclarativeCamera::WhiteBalanceMode mode) const -{ - if (m_isValid && whiteBalanceMode() != mode) { - m_camera->imageProcessing()->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceMode(mode)); - emit whiteBalanceModeChanged(whiteBalanceMode()); - } -} - -/*! - \qmlproperty int Camera::manualWhiteBalance - - The color temperature used when in manual white balance mode (WhiteBalanceManual). - - \sa whiteBalanceMode -*/ -/*! - \property QDeclarativeCamera::manualWhiteBalance - - The color temperature used when in manual white balance mode (WhiteBalanceManual). - - \sa whiteBalanceMode -*/ -int QDeclarativeCamera::manualWhiteBalance() const -{ - if (!m_isValid) - return 0; - - return m_camera->imageProcessing()->manualWhiteBalance(); -} - -void QDeclarativeCamera::setManualWhiteBalance(int colorTemp) const -{ - if (m_isValid && manualWhiteBalance() != colorTemp) { - m_camera->imageProcessing()->setManualWhiteBalance(colorTemp); - emit manualWhiteBalanceChanged(manualWhiteBalance()); - } -} /*! \qmlsignal Camera::onError(error, errorString) @@ -1131,66 +467,6 @@ void QDeclarativeCamera::setManualWhiteBalance(int colorTemp) const \row \o NotSupportedFeatureError \o The feature is not supported. \endtable */ -/*! - \qmlsignal Camera::onError(error, errorString) - - - This handler is called when an error occurs. The enumeration value \a error is one of the - values defined below, and a descriptive string value is available in \a errorString. -*/ -/*! - \enum QDeclarativeCamera::Error - \value NoError No errors have occurred. - \value CameraError An error has occurred. - \value InvalidRequestError System resource doesn't support requested functionality. - \value ServiceMissingError No camera service available. - \value NotSupportedFeatureError The feature is not supported. -*/ - - -/*! - \qmlsignal Camera::onCaptureFailed(message) - - This handler is called when an error occurs during capture. A descriptive message is available in \a message. -*/ -/*! - \fn QDeclarativeCamera::captureFailed(const QString &message) - - This handler is called when an error occurs during capture. A descriptive message is available in \a message. -*/ - -/*! - \qmlsignal Camera::onImageCaptured(preview) - - This handler is called when an image has been captured but not yet saved to the filesystem. The \a preview - parameter can be used as the URL supplied to an Image element. - - \sa onImageSaved -*/ -/*! - \fn QDeclarativeCamera::imageCaptured(const QString &preview) - - This handler is called when an image has been captured but not yet saved to the filesystem. The \a preview - parameter can be used as the URL supplied to an Image element. - - \sa imageSaved() -*/ - -/*! - \qmlsignal Camera::onImageSaved(path) - - This handler is called after the image has been written to the filesystem. The \a path is a local file path, not a URL. - - \sa onImageCaptured -*/ -/*! - \fn QDeclarativeCamera::imageSaved(const QString &path) - - This handler is called after the image has been written to the filesystem. The \a path is a local file path, not a URL. - - \sa imageCaptured() -*/ - /*! \fn void QDeclarativeCamera::lockStatusChanged() @@ -1288,34 +564,6 @@ void QDeclarativeCamera::setManualWhiteBalance(int colorTemp) const /*! - \fn void QDeclarativeCamera::exposureModeChanged(QDeclarativeCamera::ExposureMode) - - \qmlsignal Camera::exposureModeChanged(Camera::ExposureMode) -*/ - -/*! - \fn void QDeclarativeCamera::flashModeChanged(int) -*/ -/*! - \qmlsignal Camera::flashModeChanged(int) -*/ - -/*! - \fn void QDeclarativeCamera::whiteBalanceModeChanged(QDeclarativeCamera::WhiteBalanceMode) const - -*/ -/*! - \qmlsignal Camera::whiteBalanceModeChanged(Camera::WhiteBalanceMode) -*/ - -/*! - \fn void QDeclarativeCamera::manualWhiteBalanceChanged(int) const -*/ -/*! - \qmlsignal Camera::manualWhiteBalanceChanged(int) -*/ - -/*! \fn void QDeclarativeCamera::captureResolutionChanged(const QSize &) \qmlsignal Camera::captureResolutionChanged(Item) |