diff options
Diffstat (limited to 'src/imports/multimedia/qdeclarativecameraexposure.cpp')
-rw-r--r-- | src/imports/multimedia/qdeclarativecameraexposure.cpp | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/src/imports/multimedia/qdeclarativecameraexposure.cpp b/src/imports/multimedia/qdeclarativecameraexposure.cpp new file mode 100644 index 000000000..c7a8335b0 --- /dev/null +++ b/src/imports/multimedia/qdeclarativecameraexposure.cpp @@ -0,0 +1,260 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qdeclarativecamera_p.h" +#include "qdeclarativecameraexposure_p.h" + +QT_BEGIN_NAMESPACE + +/*! + \qmlclass CameraExposure QDeclarativeCameraExposure + \since 4.0 + \brief The CameraExposure element provides interface for exposure related camera settings. + \ingroup qml-multimedia + + This element is part of the \bold{Qt.multimediakit 4.0} module. + + It should not be constructed separately but provided by Camera.exposure. + + \qml + import QtQuick 2.0 + import Qt.multimediakit 4.0 + + Camera { + id: camera + + exposure.exposureCompensation: -1.0 + exposure.exposureMode: Camera.ExposurePortrait + } + + \endqml +*/ + +/*! + \class QDeclarativeCameraExposure + \brief The CameraExposure element provides interface for exposure related camera settings. +*/ + +/*! + Construct a declarative camera exposure object using \a parent object. + */ +QDeclarativeCameraExposure::QDeclarativeCameraExposure(QCamera *camera, QObject *parent) : + QObject(parent) +{ + m_exposure = camera->exposure(); + + 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))); +} + +QDeclarativeCameraExposure::~QDeclarativeCameraExposure() +{ +} + +/*! + \qmlproperty real CameraExposure::exposureCompensation + \property QDeclarativeCameraExposure::exposureCompensation + + Adjustment for the automatically calculated exposure. The value is + in EV units. + */ +qreal QDeclarativeCameraExposure::exposureCompensation() const +{ + return m_exposure->exposureCompensation(); +} + +void QDeclarativeCameraExposure::setExposureCompensation(qreal ev) +{ + m_exposure->setExposureCompensation(ev); +} + +/*! + \qmlproperty real CameraExposure::isoSensitivity + \property QDeclarativeCameraExposure::iso + + The sensor's ISO sensitivity. + */ +int QDeclarativeCameraExposure::isoSensitivity() const +{ + return m_exposure->isoSensitivity(); +} + +/*! + \qmlproperty real CameraExposure::shutterSpeed + \property QDeclarativeCameraExposure::shutterSpeed + + The camera's shutter speed, in seconds. +*/ +qreal QDeclarativeCameraExposure::shutterSpeed() const +{ + return m_exposure->shutterSpeed(); +} + +/*! + \qmlproperty real CameraExposure::aperture + \property QDeclarativeCameraExposure::aperture + + The lens aperture as an F number (the ratio of the focal length to effective aperture diameter). +*/ +qreal QDeclarativeCameraExposure::aperture() const +{ + return m_exposure->aperture(); +} + +int QDeclarativeCameraExposure::manualIsoSensitivity() const +{ + return m_manualIso; +} + +void QDeclarativeCameraExposure::setManualIsoSensitivity(int iso) +{ + m_manualIso = iso; + if (iso > 0) + m_exposure->setManualIsoSensitivity(iso); + else + m_exposure->setAutoIsoSensitivity(); + + emit manualIsoSensitivityChanged(iso); +} + +qreal QDeclarativeCameraExposure::manualShutterSpeed() const +{ + return m_manualShutterSpeed; +} + +void QDeclarativeCameraExposure::setManualShutterSpeed(qreal speed) +{ + m_manualShutterSpeed = speed; + if (speed > 0) + m_exposure->setManualShutterSpeed(speed); + else + m_exposure->setAutoShutterSpeed(); + + emit manualShutterSpeedChanged(speed); +} + +qreal QDeclarativeCameraExposure::manualAperture() const +{ + return m_manualAperture; +} + +void QDeclarativeCameraExposure::setManualAperture(qreal aperture) +{ + m_manualAperture = aperture; + if (aperture > 0) + m_exposure->setManualAperture(aperture); + else + m_exposure->setAutoAperture(); + + emit manualApertureChanged(aperture); +} + +/*! + Turn on auto aperture. The manual aperture value is reset to -1.0 + */ +void QDeclarativeCameraExposure::setAutoAperture() +{ + setManualAperture(-1.0); +} + +/*! + Turn on auto shutter speed. The manual shutter speed value is reset to -1.0 + */ +void QDeclarativeCameraExposure::setAutoShutterSpeed() +{ + setManualShutterSpeed(-1.0); +} + +/*! + Turn on auto ISO sensitivity. The manual ISO value is reset to -1. + */ +void QDeclarativeCameraExposure::setAutoIsoSensitivity() +{ + setManualIsoSensitivity(-1); +} + +/*! + \qmlproperty enumeration CameraExposure::exposureMode + \property QDeclarativeCameraExposure::exposureMode + + \table + \header \o Value \o Description + \row \o Camera.ExposureManual \o Manual mode. + \row \o Camera.ExposureAuto \o Automatic mode. + \row \o Camera.ExposureNight \o Night mode. + \row \o Camera.ExposureBacklight \o Backlight exposure mode. + \row \o Camera.ExposureSpotlight \o Spotlight exposure mode. + \row \o Camera.ExposureSports \o Spots exposure mode. + \row \o Camera.ExposureSnow \o Snow exposure mode. + \row \o Camera.ExposureBeach \o Beach exposure mode. + \row \o Camera.ExposureLargeAperture \o Use larger aperture with small depth of field. + \row \o Camera.ExposureSmallAperture \o Use smaller aperture. + \row \o Camera.ExposurePortrait \o Portrait exposure mode. + \row \o Camera.ExposureModeVendor \o The base value for device specific exposure modes. + \endtable +*/ + +QDeclarativeCamera::ExposureMode QDeclarativeCameraExposure::exposureMode() const +{ + return QDeclarativeCamera::ExposureMode(m_exposure->exposureMode()); +} + +void QDeclarativeCameraExposure::setExposureMode(QDeclarativeCamera::ExposureMode mode) +{ + if (exposureMode() != mode) { + m_exposure->setExposureMode(QCameraExposure::ExposureMode(mode)); + emit exposureModeChanged(exposureMode()); + } +} + +/*! + \qmlsignal CameraExposure::exposureModeChanged(CameraExposure::ExposureMode) + \fn void QDeclarativeCameraExposure::exposureModeChanged(QDeclarativeCamera::ExposureMode) +*/ + + + +QT_END_NAMESPACE + +#include "moc_qdeclarativecameraexposure_p.cpp" |