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>
This commit is contained in:
Michael Goddard
2012-01-06 15:21:38 +10:00
committed by Qt by Nokia
parent c97f5f8c2e
commit 6b67a11032
11 changed files with 137 additions and 5 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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);