summaryrefslogtreecommitdiffstats
path: root/src/imports/multimedia/qdeclarativecamera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/multimedia/qdeclarativecamera.cpp')
-rw-r--r--src/imports/multimedia/qdeclarativecamera.cpp999
1 files changed, 0 insertions, 999 deletions
diff --git a/src/imports/multimedia/qdeclarativecamera.cpp b/src/imports/multimedia/qdeclarativecamera.cpp
deleted file mode 100644
index c530fbe0b..000000000
--- a/src/imports/multimedia/qdeclarativecamera.cpp
+++ /dev/null
@@ -1,999 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#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 "qdeclarativecameraviewfinder_p.h"
-
-#include "qdeclarativemediametadata_p.h"
-
-#include <qmediaplayercontrol.h>
-#include <qmediaservice.h>
-#include <qvideorenderercontrol.h>
-#include <qvideodeviceselectorcontrol.h>
-#include <QtQml/qqmlinfo.h>
-
-#include <QtCore/QTimer>
-#include <QtGui/qevent.h>
-
-QT_BEGIN_NAMESPACE
-
-void QDeclarativeCamera::_q_errorOccurred(QCamera::Error errorCode)
-{
- emit errorOccurred(Error(errorCode), errorString());
- emit errorChanged();
-}
-
-void QDeclarativeCamera::_q_updateState(QCamera::State state)
-{
- emit cameraStateChanged(QDeclarativeCamera::State(state));
-}
-
-void QDeclarativeCamera::_q_availabilityChanged(QMultimedia::AvailabilityStatus availability)
-{
- emit availabilityChanged(Availability(availability));
-}
-
-/*!
- \qmltype Camera
- \instantiates QDeclarativeCamera
- \brief Access viewfinder frames, and take photos and movies.
- \ingroup multimedia_qml
- \ingroup camera_qml
- \inqmlmodule QtMultimedia
-
- \inherits QtObject
-
- You can use \c Camera to capture images and movies from a camera, and manipulate
- the capture and processing settings that get applied to the images. To display the
- viewfinder you can use \l VideoOutput with the Camera set as the source.
-
- \qml
- Item {
- width: 640
- height: 360
-
- Camera {
- id: camera
-
- imageProcessing.whiteBalanceMode: CameraImageProcessing.WhiteBalanceFlash
-
- exposure {
- exposureCompensation: -1.0
- exposureMode: Camera.ExposurePortrait
- }
-
- flash.mode: Camera.FlashRedEyeReduction
-
- imageCapture {
- onImageCaptured: {
- photoPreview.source = preview // Show the preview in an Image
- }
- }
- }
-
- VideoOutput {
- source: camera
- anchors.fill: parent
- focus : visible // to receive focus and capture key events when visible
- }
-
- Image {
- id: photoPreview
- }
- }
- \endqml
-
- If multiple cameras are available, you can select which one to use by setting the \l deviceId
- property to a value from
- \l{QtMultimedia::QtMultimedia::availableCameras}{QtMultimedia.availableCameras}.
- On a mobile device, you can conveniently switch between front-facing and back-facing cameras
- by setting the \l position property.
-
- The various settings and functionality of the Camera stack is spread
- across a few different child properties of Camera.
-
- \table
- \header \li Property \li Description
- \row \li \l {CameraCapture} {imageCapture}
- \li Methods and properties for capturing still images.
- \row \li \l {CameraRecorder} {videoRecorder}
- \li Methods and properties for capturing movies.
- \row \li \l {CameraExposure} {exposure}
- \li Methods and properties for adjusting exposure (aperture, shutter speed etc).
- \row \li \l {CameraFocus} {focus}
- \li Methods and properties for adjusting focus and providing feedback on autofocus progress.
- \row \li \l {CameraFlash} {flash}
- \li Methods and properties for controlling the camera flash.
- \row \li \l {CameraImageProcessing} {imageProcessing}
- \li Methods and properties for adjusting camera image processing parameters.
- \endtable
-
- Basic camera state management, error reporting, and simple zoom properties are
- available in the Camera itself. For integration with C++ code, the
- \l mediaObject property allows you to
- access the standard Qt Multimedia camera controls.
-
- Many of the camera settings may take some time to apply, and might be limited
- to certain supported values depending on the hardware. Some camera settings may be
- set manually or automatically. These settings properties contain the current set value.
- For example, when autofocus is enabled the focus zones are exposed in the
- \l {CameraFocus}{focus} property.
-
- For additional information, read also the \l{Camera Overview}{camera overview}.
-*/
-
-/*!
- \class QDeclarativeCamera
- \internal
- \brief The QDeclarativeCamera class provides a camera item that you can add to a QQuickView.
-*/
-
-/*!
- Construct a declarative camera object using \a parent object.
- */
-QDeclarativeCamera::QDeclarativeCamera(QObject *parent) :
- QObject(parent),
- m_camera(0),
- m_metaData(0),
- m_pendingState(ActiveState),
- m_componentComplete(false)
-{
- m_currentCameraInfo = QCameraInfo::defaultCamera();
- m_camera = new QCamera(m_currentCameraInfo);
-
- m_imageCapture = new QDeclarativeCameraCapture(m_camera);
- m_videoRecorder = new QDeclarativeCameraRecorder(m_camera);
- m_exposure = new QDeclarativeCameraExposure(m_camera);
- m_flash = new QDeclarativeCameraFlash(m_camera);
- m_focus = new QDeclarativeCameraFocus(m_camera);
- m_imageProcessing = new QDeclarativeCameraImageProcessing(m_camera);
- m_viewfinder = new QDeclarativeCameraViewfinder(m_camera);
-
- connect(m_camera, SIGNAL(captureModeChanged(QCamera::CaptureModes)),
- this, SIGNAL(captureModeChanged()));
- connect(m_camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason)),
- this, SIGNAL(lockStatusChanged()));
- connect(m_camera, &QCamera::stateChanged, this, &QDeclarativeCamera::_q_updateState);
- connect(m_camera, SIGNAL(statusChanged(QCamera::Status)), this, SIGNAL(cameraStatusChanged()));
- connect(m_camera, SIGNAL(errorOccurred(QCamera::Error)), this, SLOT(_q_errorOccurred(QCamera::Error)));
- connect(m_camera, SIGNAL(availabilityChanged(QMultimedia::AvailabilityStatus)),
- this, SLOT(_q_availabilityChanged(QMultimedia::AvailabilityStatus)));
-
- connect(m_camera->focus(), &QCameraFocus::opticalZoomChanged,
- this, &QDeclarativeCamera::opticalZoomChanged);
- connect(m_camera->focus(), &QCameraFocus::digitalZoomChanged,
- this, &QDeclarativeCamera::digitalZoomChanged);
- connect(m_camera->focus(), &QCameraFocus::maximumOpticalZoomChanged,
- this, &QDeclarativeCamera::maximumOpticalZoomChanged);
- connect(m_camera->focus(), &QCameraFocus::maximumDigitalZoomChanged,
- this, &QDeclarativeCamera::maximumDigitalZoomChanged);
-}
-
-/*! Destructor, clean up memory */
-QDeclarativeCamera::~QDeclarativeCamera()
-{
- m_camera->unload();
-
- // These must be deleted before QCamera
- delete m_imageCapture;
- delete m_videoRecorder;
- delete m_exposure;
- delete m_flash;
- delete m_focus;
- delete m_imageProcessing;
- delete m_metaData;
- delete m_viewfinder;
-
- delete m_camera;
-}
-
-void QDeclarativeCamera::classBegin()
-{
-}
-
-void QDeclarativeCamera::componentComplete()
-{
- m_componentComplete = true;
- setCameraState(m_pendingState);
-}
-
-/*!
- \qmlproperty string QtMultimedia::Camera::deviceId
-
- This property holds the unique identifier for the camera device being used. It may not be human-readable.
-
- You can get all available device IDs from \l{QtMultimedia::QtMultimedia::availableCameras}{QtMultimedia.availableCameras}.
- If no value is provided or if set to an empty string, the system's default camera will be used.
-
- If possible, \l cameraState, \l captureMode, \l digitalZoom and other camera parameters are
- preserved when changing the camera device.
-
- \sa displayName, position
- \since 5.4
-*/
-
-QString QDeclarativeCamera::deviceId() const
-{
- return m_currentCameraInfo.deviceName();
-}
-
-void QDeclarativeCamera::setDeviceId(const QString &name)
-{
- if (name == m_currentCameraInfo.deviceName())
- return;
-
- setupDevice(name);
-}
-
-/*!
- \qmlproperty enumeration QtMultimedia::Camera::position
-
- This property holds the physical position of the camera on the hardware system.
-
- On a mobile device, this property can be used to easily choose between
- front-facing and back-facing cameras. If this property is set to
- \c Camera.UnspecifiedPosition, the system's default camera is used.
-
- If possible, \l cameraState, \l captureMode, \l digitalZoom and other camera
- parameters are preserved when changing the camera device.
-
- \value Camera.UnspecifiedPosition
- The camera position is unspecified or unknown.
- \value Camera.BackFace
- The camera is on the back face of the system hardware. For example,
- on a mobile device, it is on side opposite from the screen.
- \value Camera.FrontFace
- The camera is on the front face of the system hardware. For example,
- on a mobile device, it means it is on the same side as the screen.
- Viewfinder frames of front-facing cameras are mirrored horizontally,
- so the users can see themselves as looking into a mirror. Captured
- images or videos are not mirrored.
-
- \sa deviceId
- \since 5.4
-*/
-
-QDeclarativeCamera::Position QDeclarativeCamera::position() const
-{
- return QDeclarativeCamera::Position(m_currentCameraInfo.position());
-}
-
-void QDeclarativeCamera::setPosition(Position position)
-{
- QCamera::Position pos = QCamera::Position(position);
- if (pos == m_currentCameraInfo.position())
- return;
-
- QString id;
-
- if (pos == QCamera::UnspecifiedPosition) {
- id = QCameraInfo::defaultCamera().deviceName();
- } else {
- QList<QCameraInfo> cameras = QCameraInfo::availableCameras(pos);
- if (!cameras.isEmpty())
- id = cameras.first().deviceName();
- }
-
- if (!id.isEmpty())
- setupDevice(id);
-}
-
-/*!
- \qmlproperty string QtMultimedia::Camera::displayName
-
- This property holds the human-readable name of the camera.
-
- You can use this property to display the name of the camera in a user interface.
-
- \readonly
- \sa deviceId
- \since 5.4
-*/
-
-QString QDeclarativeCamera::displayName() const
-{
- return m_currentCameraInfo.description();
-}
-
-/*!
- \qmlproperty int QtMultimedia::Camera::orientation
-
- This property holds the physical orientation of the camera sensor.
-
- The value is the orientation angle (clockwise, in steps of 90 degrees) of the camera sensor in
- relation to the display in its natural orientation.
-
- For example, suppose a mobile device which is naturally in portrait orientation. The back-facing
- camera is mounted in landscape. If the top side of the camera sensor is aligned with the right
- edge of the screen in natural orientation, \c orientation returns \c 270. If the top side of a
- front-facing camera sensor is aligned with the right edge of the screen, \c orientation
- returns \c 90.
-
- \readonly
- \sa VideoOutput::orientation
- \since 5.4
-*/
-
-int QDeclarativeCamera::orientation() const
-{
- return m_currentCameraInfo.orientation();
-}
-
-void QDeclarativeCamera::setupDevice(const QString &deviceName)
-{
- QMediaService *service = m_camera->service();
- if (!service)
- return;
-
- QVideoDeviceSelectorControl *deviceControl = qobject_cast<QVideoDeviceSelectorControl*>(service->requestControl(QVideoDeviceSelectorControl_iid));
- if (!deviceControl)
- return;
-
- int deviceIndex = -1;
-
- if (deviceName.isEmpty()) {
- deviceIndex = deviceControl->defaultDevice();
- } else {
- for (int i = 0; i < deviceControl->deviceCount(); ++i) {
- if (deviceControl->deviceName(i) == deviceName) {
- deviceIndex = i;
- break;
- }
- }
- }
-
- if (deviceIndex == -1)
- return;
-
- State previousState = cameraState();
- setCameraState(UnloadedState);
-
- deviceControl->setSelectedDevice(deviceIndex);
-
- QCameraInfo oldCameraInfo = m_currentCameraInfo;
- m_currentCameraInfo = QCameraInfo(*m_camera);
-
- emit deviceIdChanged();
- if (oldCameraInfo.description() != m_currentCameraInfo.description())
- emit displayNameChanged();
- if (oldCameraInfo.position() != m_currentCameraInfo.position())
- emit positionChanged();
- if (oldCameraInfo.orientation() != m_currentCameraInfo.orientation())
- emit orientationChanged();
-
- setCameraState(previousState);
-}
-
-/*!
- Returns any camera error.
- \sa QDeclarativeCameraError::Error
-*/
-QDeclarativeCamera::Error QDeclarativeCamera::errorCode() const
-{
- return QDeclarativeCamera::Error(m_camera->error());
-}
-
-/*!
- \qmlproperty string QtMultimedia::Camera::errorString
-
- This property holds the last error string, if any.
-
- \sa errorOccurred, errorCode
-*/
-QString QDeclarativeCamera::errorString() const
-{
- return m_camera->errorString();
-}
-
-/*!
- \qmlproperty enumeration QtMultimedia::Camera::availability
-
- This property holds the availability state of the camera.
-
- \value Camera.Available
- The camera is available for use.
- \value Camera.Busy
- The camera is busy at the moment as it is being used by another
- process.
- \value Camera.Unavailable
- The camera is not available for use (there may be no camera
- hardware).
- \value Camera.ResourceMissing
- The camera cannot be used because of missing resources.
- It may be possible to try again at a later time.
- */
-QDeclarativeCamera::Availability QDeclarativeCamera::availability() const
-{
- return Availability(m_camera->availability());
-}
-
-
-/*!
- \qmlproperty enumeration QtMultimedia::Camera::captureMode
-
- This property holds the camera capture mode. The default capture mode is
- \c CaptureStillImage.
-
- \value Camera.CaptureViewfinder
- Camera is only configured to display viewfinder.
- \value Camera.CaptureStillImage
- Prepares the Camera for capturing still images.
- \value Camera.CaptureVideo
- Prepares the Camera for capturing video.
-*/
-QDeclarativeCamera::CaptureMode QDeclarativeCamera::captureMode() const
-{
- return QDeclarativeCamera::CaptureMode(int(m_camera->captureMode()));
-}
-
-void QDeclarativeCamera::setCaptureMode(QDeclarativeCamera::CaptureMode mode)
-{
- m_camera->setCaptureMode(QCamera::CaptureModes(int(mode)));
-}
-
-
-/*!
- \qmlproperty enumeration QtMultimedia::Camera::cameraState
-
- This property holds the camera object's current state. The default camera
- state is \c ActiveState.
-
- \value Camera.UnloadedState
- The initial camera state, with the camera not loaded.
- The camera capabilities (with the exception of supported capture modes)
- are unknown. This state saves the most power, but takes the longest
- time to be ready for capture.
- While the supported settings are unknown in this state,
- you can still set the camera capture settings like codec,
- resolution, or frame rate.
- \value Camera.LoadedState
- The camera is loaded and ready to be configured.
- In this state you can query camera capabilities,
- set capture resolution, codecs, and so on.
- The viewfinder is not active in the loaded state.
- The camera consumes power in this state.
- \value Camera.ActiveState
- In the active state, the viewfinder frames are available
- and the camera is ready for capture.
-*/
-QDeclarativeCamera::State QDeclarativeCamera::cameraState() const
-{
- return m_componentComplete ? QDeclarativeCamera::State(m_camera->state()) : m_pendingState;
-}
-
-/*!
- \qmlproperty enumeration QtMultimedia::Camera::cameraStatus
-
- This property holds the camera object's current status.
-
- \value Camera.ActiveStatus
- The camera has been started and can produce data,
- viewfinder displays video frames.
- Depending on backend, changing camera settings such as
- capture mode, codecs, or resolution in \c {Camera.ActiveState} may
- lead to changing the status to \c LoadedStatus and \c StartingStatus
- while the settings are applied, and back to \c ActiveStatus when
- the camera is ready.
- \value Camera.StartingStatus
- The camera is transitioning to \c {Camera.ActiveState}. The camera
- service is not ready to capture yet.
- \value Camera.StoppingStatus
- The camera is transitioning from \c {Camera.ActiveState} to
- \c {Camera.LoadedState} or \c {Camera.UnloadedState}.
- \value Camera.StandbyStatus
- The camera is in the power saving standby mode.
- The camera may enter standby mode after some time of inactivity
- in the \c {Camera.LoadedState} state.
- \value Camera.LoadedStatus
- The camera is loaded and ready to be configured.
- This status indicates that the camera is opened and it's
- possible to query for supported image and video capture
- settings, such as resolution, frame rate, and codecs.
- \value Camera.LoadingStatus
- The camera is transitioning from \c {Camera.UnloadedState} to
- \c {Camera.LoadedState} or \c {Camera.ActiveState}.
- \value Camera.UnloadingStatus
- The camera is transitioning from \c {Camera.LoadedState} or
- \c {Camera.ActiveState} to \c {Camera.UnloadedState}.
- \value Camera.UnloadedStatus
- The initial camera status, with camera not loaded.
- The camera capabilities including supported capture
- settings may be unknown.
- \value Camera.UnavailableStatus
- The camera or camera backend is not available.
-*/
-QDeclarativeCamera::Status QDeclarativeCamera::cameraStatus() const
-{
- return QDeclarativeCamera::Status(m_camera->status());
-}
-
-void QDeclarativeCamera::setCameraState(QDeclarativeCamera::State state)
-{
- if (!m_componentComplete) {
- m_pendingState = state;
- return;
- }
-
- switch (state) {
- case QDeclarativeCamera::ActiveState:
- m_camera->start();
- break;
- case QDeclarativeCamera::UnloadedState:
- m_camera->unload();
- break;
- case QDeclarativeCamera::LoadedState:
- m_camera->load();
- break;
- }
-}
-
-/*!
- \qmlmethod QtMultimedia::Camera::start()
-
- Starts the camera. Viewfinder frames will
- be available and image or movie capture will
- be possible.
-*/
-void QDeclarativeCamera::start()
-{
- setCameraState(QDeclarativeCamera::ActiveState);
-}
-
-/*!
- \qmlmethod QtMultimedia::Camera::stop()
-
- Stops the camera, but leaves the camera
- stack loaded.
-
- In this state, the camera still consumes power.
-*/
-void QDeclarativeCamera::stop()
-{
- setCameraState(QDeclarativeCamera::LoadedState);
-}
-
-
-/*!
- \qmlproperty enumeration QtMultimedia::Camera::lockStatus
-
- This property holds the status of all the requested camera locks.
-
- \value Camera.Unlocked
- The application is not interested in camera settings value.
- The camera may keep this parameter without changes, which is common
- with camera focus, or adjust exposure and white balance constantly
- to keep the viewfinder image nice.
- \value Camera.Searching
- The application has requested the camera focus, exposure, or white
- balance lock with searchAndLock(). This state indicates the camera
- is focusing or calculating exposure and white balance.
- \value Camera.Locked
- The camera focus, exposure, or white balance is locked.
- The camera is ready to capture, and the application may check the
- exposure parameters.
- The locked state usually means the requested parameter stays the
- same, except in cases where the parameter is requested to be updated
- constantly. For example, in continuous focusing mode, the focus is
- considered locked as long as the object is in focus, even while the
- actual focusing distance may be constantly changing.
-*/
-/*!
- \property QDeclarativeCamera::lockStatus
-
- This property holds the status of all the requested camera locks.
-*/
-QDeclarativeCamera::LockStatus QDeclarativeCamera::lockStatus() const
-{
- return QDeclarativeCamera::LockStatus(m_camera->lockStatus());
-}
-
-/*!
- \qmlmethod QtMultimedia::Camera::searchAndLock()
-
- Start focusing, exposure and white balance calculation.
-
- This is appropriate to call when the camera focus button is pressed
- (or on a camera capture button half-press). If the camera supports
- autofocusing, information on the focus zones is available through
- the \l {CameraFocus}{focus} property.
-*/
-void QDeclarativeCamera::searchAndLock()
-{
- m_camera->searchAndLock();
-}
-
-/*!
- \qmlmethod QtMultimedia::Camera::unlock()
-
- Unlock focus, exposure and white balance locks.
- */
-void QDeclarativeCamera::unlock()
-{
- m_camera->unlock();
-}
-/*!
- \property QDeclarativeCamera::maximumOpticalZoom
-
- This property holds the maximum optical zoom factor supported, or 1.0 if optical zoom is not supported.
-*/
-/*!
- \qmlproperty real QtMultimedia::Camera::maximumOpticalZoom
-
- This property holds the maximum optical zoom factor supported, or 1.0 if optical zoom is not supported.
-*/
-qreal QDeclarativeCamera::maximumOpticalZoom() const
-{
- return m_camera->focus()->maximumOpticalZoom();
-}
-/*!
- \property QDeclarativeCamera::maximumDigitalZoom
-
- This property holds the maximum digital zoom factor supported, or 1.0 if digital zoom is not supported.
-*/
-/*!
- \qmlproperty real QtMultimedia::Camera::maximumDigitalZoom
-
- This property holds the maximum digital zoom factor supported, or 1.0 if digital zoom is not supported.
-*/
-qreal QDeclarativeCamera::maximumDigitalZoom() const
-{
- return m_camera->focus()->maximumDigitalZoom();
-}
-/*!
- \property QDeclarativeCamera::opticalZoom
-
- This property holds the current optical zoom factor.
-*/
-
-/*!
- \qmlproperty real QtMultimedia::Camera::opticalZoom
-
- This property holds the current optical zoom factor.
-*/
-qreal QDeclarativeCamera::opticalZoom() const
-{
- return m_camera->focus()->opticalZoom();
-}
-
-void QDeclarativeCamera::setOpticalZoom(qreal value)
-{
- m_camera->focus()->zoomTo(value, digitalZoom());
-}
-/*!
- \property QDeclarativeCamera::digitalZoom
-
- This property holds the current digital zoom factor.
-*/
-/*!
- \qmlproperty real QtMultimedia::Camera::digitalZoom
-
- This property holds the current digital zoom factor.
-*/
-qreal QDeclarativeCamera::digitalZoom() const
-{
- return m_camera->focus()->digitalZoom();
-}
-
-void QDeclarativeCamera::setDigitalZoom(qreal value)
-{
- m_camera->focus()->zoomTo(opticalZoom(), value);
-}
-
-/*!
- \qmlproperty variant QtMultimedia::Camera::mediaObject
-
- This property holds the native media object for the camera.
-
- It can be used to get a pointer to a QCamera object in order to integrate with C++ code.
-
- \code
- QObject *qmlCamera; // The QML Camera object
- QCamera *camera = qvariant_cast<QCamera *>(qmlCamera->property("mediaObject"));
- \endcode
-
- \note This property is not accessible from QML.
-*/
-
-/*!
- \qmlproperty enumeration QtMultimedia::Camera::errorCode
-
- This property holds the last error code.
-
- \value Camera.NoError
- No errors have occurred.
- \value Camera.CameraError
- An error has occurred.
- \value Camera.InvalidRequestError
- System resources do not support the requested functionality.
- \value Camera.ServiceMissingError
- No camera service available.
- \value Camera.NotSupportedFeatureError
- The feature is not supported.
-
- \sa errorOccurred, errorString
-*/
-
-/*!
- \qmlsignal QtMultimedia::Camera::error(errorCode, errorString)
- \obsolete
-
- Use errorOccurred() instead.
-*/
-
-/*!
- \qmlsignal QtMultimedia::Camera::errorOccurred(errorCode, errorString)
- \since 5.15
-
- This signal is emitted when an error specified by \a errorCode occurs.
- A descriptive string value is available in \a errorString.
-
- The corresponding handler is \c onError.
-
- \sa errorCode, errorString
-*/
-
-/*!
- \qmlsignal Camera::lockStatusChanged()
-
- This signal is emitted when the lock status (focus, exposure etc) changes.
- This can happen when locking (e.g. autofocusing) is complete or has failed.
-
- The corresponding handler is \c onLockStatusChanged.
-*/
-
-/*!
- \qmlsignal Camera::cameraStateChanged(state)
-
- This signal is emitted when the camera state has changed to \a state. Since the
- state changes may take some time to occur this signal may arrive sometime
- after the state change has been requested.
-
- The corresponding handler is \c onCameraStateChanged.
-*/
-
-/*!
- \qmlsignal Camera::opticalZoomChanged(zoom)
-
- This signal is emitted when the optical zoom setting has changed to \a zoom.
-
- The corresponding handler is \c onOpticalZoomChanged.
-*/
-
-/*!
- \qmlsignal Camera::digitalZoomChanged(zoom)
-
- This signal is emitted when the digital zoom setting has changed to \a zoom.
-
- The corresponding handler is \c onDigitalZoomChanged.
-*/
-
-/*!
- \qmlsignal Camera::maximumOpticalZoomChanged(zoom)
-
- This signal is emitted when the maximum optical zoom setting has
- changed to \a zoom. This can occur when you change between video
- and still image capture modes, or the capture settings are changed.
-
- The corresponding handler is \c onMaximumOpticalZoomChanged.
-*/
-
-/*!
- \qmlsignal Camera::maximumDigitalZoomChanged(zoom)
-
- This signal is emitted when the maximum digital zoom setting has
- changed to \a zoom. This can occur when you change between video
- and still image capture modes, or the capture settings are changed.
-
- The corresponding handler is \c onMaximumDigitalZoomChanged.
-*/
-
-/*!
- \qmlpropertygroup QtMultimedia::Camera::metaData
- \qmlproperty variant QtMultimedia::Camera::metaData.cameraManufacturer
- \qmlproperty variant QtMultimedia::Camera::metaData.cameraModel
- \qmlproperty variant QtMultimedia::Camera::metaData.event
- \qmlproperty variant QtMultimedia::Camera::metaData.subject
- \qmlproperty variant QtMultimedia::Camera::metaData.orientation
- \qmlproperty variant QtMultimedia::Camera::metaData.dateTimeOriginal
- \qmlproperty variant QtMultimedia::Camera::metaData.gpsLatitude
- \qmlproperty variant QtMultimedia::Camera::metaData.gpsLongitude
- \qmlproperty variant QtMultimedia::Camera::metaData.gpsAltitude
- \qmlproperty variant QtMultimedia::Camera::metaData.gpsTimestamp
- \qmlproperty variant QtMultimedia::Camera::metaData.gpsTrack
- \qmlproperty variant QtMultimedia::Camera::metaData.gpsSpeed
- \qmlproperty variant QtMultimedia::Camera::metaData.gpsImgDirection
- \qmlproperty variant QtMultimedia::Camera::metaData.gpsProcessingMethod
-
- These properties hold the meta data for the camera captures.
-
- \list
- \li \c metaData.cameraManufacturer holds the name of the manufacturer of the camera.
- \li \c metaData.cameraModel holds the name of the model of the camera.
- \li \c metaData.event holds the event during which the photo or video is to be captured.
- \li \c metaData.subject holds the name of the subject of the capture or recording.
- \li \c metaData.orientation holds the clockwise rotation of the camera at time of capture.
- \li \c metaData.dateTimeOriginal holds the initial time at which the photo or video is captured.
- \li \c metaData.gpsLatitude holds the latitude of the camera in decimal degrees at time of capture.
- \li \c metaData.gpsLongitude holds the longitude of the camera in decimal degrees at time of capture.
- \li \c metaData.gpsAltitude holds the altitude of the camera in meters at time of capture.
- \li \c metaData.gpsTimestamp holds the timestamp of the GPS position data.
- \li \c metaData.gpsTrack holds direction of movement of the camera at the time of
- capture. It is measured in degrees clockwise from north.
- \li \c metaData.gpsSpeed holds the velocity in kilometers per hour of the camera at time of capture.
- \li \c metaData.gpsImgDirection holds direction the camera is facing at the time of capture.
- It is measured in degrees clockwise from north.
- \li \c metaData.gpsProcessingMethod holds the name of the method for determining the GPS position.
- \endlist
-
- \sa {QMediaMetaData}
- \since 5.4
-*/
-
-QDeclarativeMediaMetaData *QDeclarativeCamera::metaData()
-{
- if (!m_metaData)
- m_metaData = new QDeclarativeMediaMetaData(m_camera);
- return m_metaData;
-}
-
-/*!
- \qmlpropertygroup QtMultimedia::Camera::viewfinder
- \qmlproperty size QtMultimedia::Camera::viewfinder.resolution
- \qmlproperty real QtMultimedia::Camera::viewfinder.minimumFrameRate
- \qmlproperty real QtMultimedia::Camera::viewfinder.maximumFrameRate
-
- These properties hold the viewfinder settings.
-
- \c viewfinder.resolution holds the resolution of the camera viewfinder. If no
- resolution is given or if it is empty, the backend uses a default value.
-
- \c viewfinder.minimumFrameRate holds the minimum frame rate for the viewfinder in
- frames per second. If no value is given or if set to \c 0, the backend uses a default value.
-
- \c viewfinder.maximumFrameRate holds the maximum frame rate for the viewfinder in
- frames per second. If no value is given or if set to \c 0, the backend uses a default value.
-
- If \c viewfinder.minimumFrameRate is equal to \c viewfinder.maximumFrameRate, the frame rate is
- fixed. If not, the actual frame rate fluctuates between the two values.
-
- Changing the viewfinder settings while the camera is in the \c Camera.ActiveState state may
- cause the camera to be restarted.
-
- If the camera is used to capture videos or images, the viewfinder settings might be
- ignored if they conflict with the capture settings. You can check the actual viewfinder settings
- once the camera is in the \c Camera.ActiveStatus status.
-
- Supported values can be retrieved with supportedViewfinderResolutions() and
- supportedViewfinderFrameRateRanges().
-
- \since 5.4
- */
-
-QDeclarativeCameraViewfinder *QDeclarativeCamera::viewfinder()
-{
- return m_viewfinder;
-}
-
-/*!
- \qmlmethod list<size> QtMultimedia::Camera::supportedViewfinderResolutions(real minimumFrameRate, real maximumFrameRate)
-
- Returns a list of supported viewfinder resolutions.
-
- If both optional parameters \a minimumFrameRate and \a maximumFrameRate are specified, the
- returned list is reduced to resolutions supported for the given frame rate range.
-
- The camera must be loaded before calling this function, otherwise the returned list
- is empty.
-
- \sa {QtMultimedia::Camera::viewfinder}{viewfinder}
-
- \since 5.5
-*/
-QJSValue QDeclarativeCamera::supportedViewfinderResolutions(qreal minimumFrameRate, qreal maximumFrameRate)
-{
- QQmlEngine *engine = qmlEngine(this);
-
- QCameraViewfinderSettings settings;
- settings.setMinimumFrameRate(minimumFrameRate);
- settings.setMaximumFrameRate(maximumFrameRate);
- const QList<QSize> resolutions = m_camera->supportedViewfinderResolutions(settings);
-
- QJSValue supportedResolutions = engine->newArray(resolutions.count());
- int i = 0;
- for (const QSize &resolution : resolutions) {
- QJSValue size = engine->newObject();
- size.setProperty(QStringLiteral("width"), resolution.width());
- size.setProperty(QStringLiteral("height"), resolution.height());
- supportedResolutions.setProperty(i++, size);
- }
-
- return supportedResolutions;
-}
-
-/*!
- \qmlmethod list<object> QtMultimedia::Camera::supportedViewfinderFrameRateRanges(size resolution)
-
- Returns a list of supported viewfinder frame rate ranges.
-
- Each range object in the list has the \c minimumFrameRate and \c maximumFrameRate properties.
-
- If the optional parameter \a resolution is specified, the returned list is reduced to frame rate
- ranges supported for the given \a resolution.
-
- The camera must be loaded before calling this function, otherwise the returned list
- is empty.
-
- \sa {QtMultimedia::Camera::viewfinder}{viewfinder}
-
- \since 5.5
-*/
-QJSValue QDeclarativeCamera::supportedViewfinderFrameRateRanges(const QJSValue &resolution)
-{
- QQmlEngine *engine = qmlEngine(this);
-
- QCameraViewfinderSettings settings;
- if (!resolution.isUndefined()) {
- QJSValue width = resolution.property(QStringLiteral("width"));
- QJSValue height = resolution.property(QStringLiteral("height"));
- if (width.isNumber() && height.isNumber())
- settings.setResolution(width.toInt(), height.toInt());
- }
- const QList<QCamera::FrameRateRange> frameRateRanges = m_camera->supportedViewfinderFrameRateRanges(settings);
-
- QJSValue supportedFrameRateRanges = engine->newArray(frameRateRanges.count());
- int i = 0;
- for (const QCamera::FrameRateRange &frameRateRange : frameRateRanges) {
- QJSValue range = engine->newObject();
- range.setProperty(QStringLiteral("minimumFrameRate"), frameRateRange.minimumFrameRate);
- range.setProperty(QStringLiteral("maximumFrameRate"), frameRateRange.maximumFrameRate);
- supportedFrameRateRanges.setProperty(i++, range);
- }
-
- return supportedFrameRateRanges;
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qdeclarativecamera_p.cpp"