summaryrefslogtreecommitdiffstats
path: root/src/imports/multimedia
diff options
context:
space:
mode:
authorMichael Goddard <michael.goddard@nokia.com>2012-01-06 15:21:38 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-06 07:26:59 +0100
commit6b67a11032779ff3a7a78a57e8d2bb2cd8b7e525 (patch)
treea40f277b1df310f2a83223d24f0e1f11b69da7f7 /src/imports/multimedia
parentc97f5f8c2e91c1b76d42583efaf232487d490060 (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.h7
-rw-r--r--src/imports/multimedia/qdeclarativecameraexposure.cpp34
-rw-r--r--src/imports/multimedia/qdeclarativecameraexposure_p.h12
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);