diff options
author | Michael Goddard <michael.goddard@nokia.com> | 2012-01-06 15:21:38 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-06 07:26:59 +0100 |
commit | 6b67a11032779ff3a7a78a57e8d2bb2cd8b7e525 (patch) | |
tree | a40f277b1df310f2a83223d24f0e1f11b69da7f7 /src/imports/multimedia | |
parent | c97f5f8c2e91c1b76d42583efaf232487d490060 (diff) |
Add the spot for spot metering mode.
Not yet fully documented in QML - needs a bit of an overhaul first.
Change-Id: Ic11684858fb872d0b4dcedf60b390571371db252
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Diffstat (limited to 'src/imports/multimedia')
-rw-r--r-- | src/imports/multimedia/qdeclarativecamera_p.h | 7 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecameraexposure.cpp | 34 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecameraexposure_p.h | 12 |
3 files changed, 53 insertions, 0 deletions
diff --git a/src/imports/multimedia/qdeclarativecamera_p.h b/src/imports/multimedia/qdeclarativecamera_p.h index 7004f7e58..6de84f05f 100644 --- a/src/imports/multimedia/qdeclarativecamera_p.h +++ b/src/imports/multimedia/qdeclarativecamera_p.h @@ -104,6 +104,7 @@ class QDeclarativeCamera : public QObject, public QDeclarativeParserStatus Q_ENUMS(FlashMode) Q_ENUMS(ExposureMode) + Q_ENUMS(MeteringMode) Q_ENUMS(FocusMode) Q_ENUMS(FocusPointMode) @@ -164,6 +165,12 @@ public: ExposureModeVendor = QCameraExposure::ExposureModeVendor }; + enum MeteringMode { + MeteringMatrix = QCameraExposure::MeteringMatrix, + MeteringAverage = QCameraExposure::MeteringAverage, + MeteringSpot = QCameraExposure::MeteringSpot + }; + enum FocusMode { FocusManual = QCameraFocus::ManualFocus, FocusHyperfocal = QCameraFocus::HyperfocalFocus, diff --git a/src/imports/multimedia/qdeclarativecameraexposure.cpp b/src/imports/multimedia/qdeclarativecameraexposure.cpp index 5eca87ca9..79d939e83 100644 --- a/src/imports/multimedia/qdeclarativecameraexposure.cpp +++ b/src/imports/multimedia/qdeclarativecameraexposure.cpp @@ -253,7 +253,41 @@ void QDeclarativeCameraExposure::setExposureMode(QDeclarativeCamera::ExposureMod \fn void QDeclarativeCameraExposure::exposureModeChanged(QDeclarativeCamera::ExposureMode) */ +/*! + \qmlproperty QPointF CameraExposure::spotMeteringPoint + \property QDeclarativeCameraExposure::spotMeteringPoint + + The relative frame coordinates of the point to use for exposure metering (in relative + frame coordinates). This point is only used in spot metering mode, and typically defaults + to the center \c (0.5, 0.5). + */ + +QPointF QDeclarativeCameraExposure::spotMeteringPoint() const +{ + return m_exposure->spotMeteringPoint(); +} + +void QDeclarativeCameraExposure::setSpotMeteringPoint(const QPointF &point) +{ + QPointF oldPoint(spotMeteringPoint()); + m_exposure->setSpotMeteringPoint(point); + if (oldPoint != spotMeteringPoint()) + emit spotMeteringPointChanged(spotMeteringPoint()); +} + +QDeclarativeCamera::MeteringMode QDeclarativeCameraExposure::meteringMode() const +{ + return QDeclarativeCamera::MeteringMode(m_exposure->meteringMode()); +} + +void QDeclarativeCameraExposure::setMeteringMode(QDeclarativeCamera::MeteringMode mode) +{ + QDeclarativeCamera::MeteringMode oldMode = meteringMode(); + m_exposure->setMeteringMode(QCameraExposure::MeteringMode(mode)); + if (oldMode != meteringMode()) + emit meteringModeChanged(meteringMode()); +} QT_END_NAMESPACE diff --git a/src/imports/multimedia/qdeclarativecameraexposure_p.h b/src/imports/multimedia/qdeclarativecameraexposure_p.h index bd2788fcd..127e62384 100644 --- a/src/imports/multimedia/qdeclarativecameraexposure_p.h +++ b/src/imports/multimedia/qdeclarativecameraexposure_p.h @@ -78,6 +78,9 @@ class QDeclarativeCameraExposure : public QObject Q_PROPERTY(QDeclarativeCamera::ExposureMode exposureMode READ exposureMode WRITE setExposureMode NOTIFY exposureModeChanged) + Q_PROPERTY(QPointF spotMeteringPoint READ spotMeteringPoint WRITE setSpotMeteringPoint NOTIFY spotMeteringPointChanged) + Q_PROPERTY(QDeclarativeCamera::MeteringMode meteringMode READ meteringMode WRITE setMeteringMode NOTIFY meteringModeChanged) + public: ~QDeclarativeCameraExposure(); @@ -92,6 +95,12 @@ public: qreal manualShutterSpeed() const; qreal manualAperture() const; + QPointF spotMeteringPoint() const; + void setSpotMeteringPoint(const QPointF &point); + + QDeclarativeCamera::MeteringMode meteringMode() const; + void setMeteringMode(QDeclarativeCamera::MeteringMode mode); + public Q_SLOTS: void setExposureMode(QDeclarativeCamera::ExposureMode); void setExposureCompensation(qreal ev); @@ -116,6 +125,9 @@ Q_SIGNALS: void exposureCompensationChanged(qreal); void exposureModeChanged(QDeclarativeCamera::ExposureMode); + void meteringModeChanged(QDeclarativeCamera::MeteringMode); + void spotMeteringPointChanged(QPointF); + private: friend class QDeclarativeCamera; QDeclarativeCameraExposure(QCamera *camera, QObject *parent = 0); |