summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-05-17 14:13:54 +0200
committerLars Knoll <lars.knoll@qt.io>2021-05-18 08:44:27 +0000
commitd78a921256b50399cead644d69d2a06d43ef3e5c (patch)
tree9e50e522fd048f4fffff9e6669e090b640819f4d /src
parentac2f3c0ef78e8374dea63b658959a8a6db890bca (diff)
Merge the QCameraFocus API into QCamera
After API review, we decided that one large API in QCamera is easier than having separate sub-objects that are only trying to structure the API. Change-Id: I5f820a580db1ddb3f47e11b88ca86215997f96ce Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/multimedia/CMakeLists.txt1
-rw-r--r--src/multimedia/camera/qcamera.cpp232
-rw-r--r--src/multimedia/camera/qcamera.h48
-rw-r--r--src/multimedia/camera/qcamera_p.h6
-rw-r--r--src/multimedia/camera/qcamerafocus.cpp354
-rw-r--r--src/multimedia/camera/qcamerafocus.h139
-rw-r--r--src/multimedia/doc/snippets/multimedia-snippets/camera.cpp17
-rw-r--r--src/multimedia/doc/src/cameraoverview.qdoc24
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol.cpp36
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol_p.h12
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamerafocus.mm43
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamerafocus_p.h8
-rw-r--r--src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus.cpp20
-rw-r--r--src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus_p.h8
-rw-r--r--src/multimedia/platform/qnx/camera/bbcamerafocuscontrol.cpp40
-rw-r--r--src/multimedia/platform/qnx/camera/bbcamerafocuscontrol_p.h8
-rw-r--r--src/multimedia/platform/qplatformcamerafocus.cpp14
-rw-r--r--src/multimedia/platform/qplatformcamerafocus_p.h10
-rw-r--r--src/multimedia/platform/windows/mediacapture/qwindowscamerafocus.cpp8
-rw-r--r--src/multimedia/platform/windows/mediacapture/qwindowscamerafocus_p.h6
-rw-r--r--src/multimediaquick/camerafocus.qdoc2
-rw-r--r--src/multimediaquick/qtmultimediaquicktypes_p.h8
22 files changed, 397 insertions, 647 deletions
diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt
index d7593df96..3dc1078e2 100644
--- a/src/multimedia/CMakeLists.txt
+++ b/src/multimedia/CMakeLists.txt
@@ -28,7 +28,6 @@ qt_internal_add_module(Multimedia
audio/qwavedecoder.cpp audio/qwavedecoder.h
camera/qcamera.cpp camera/qcamera.h camera/qcamera_p.h
camera/qcameraexposure.cpp camera/qcameraexposure.h
- camera/qcamerafocus.cpp camera/qcamerafocus.h
camera/qcameraimagecapture.cpp camera/qcameraimagecapture.h
camera/qcameraimageprocessing.cpp camera/qcameraimageprocessing.h
camera/qcamerainfo.cpp camera/qcamerainfo.h camera/qcamerainfo_p.h
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp
index 08ad0b0f9..fbe0496e6 100644
--- a/src/multimedia/camera/qcamera.cpp
+++ b/src/multimedia/camera/qcamera.cpp
@@ -71,6 +71,20 @@ QT_BEGIN_NAMESPACE
\snippet multimedia-snippets/camera.cpp Camera selection
+ On hardware that supports it, QCamera lets you adjust the focus
+ and zoom. This also includes things
+ like "Macro" mode for close up work (e.g. reading barcodes, or
+ recognising letters), or "touch to focus" - indicating an
+ interesting area of the viewfinder for the hardware to attempt
+ to focus on.
+
+ \snippet multimedia-snippets/camera.cpp Camera custom focus
+
+ The \l minimumZoomFactor() and \l maximumZoomFactor() methods allows checking the
+ range of allowed zoom factors. The \l zoomTo() method allows changing the zoom factor.
+
+ \snippet multimedia-snippets/camera.cpp Camera zoom
+
See the \l{Camera Overview}{camera overview} for more information.
*/
@@ -101,7 +115,16 @@ void QCameraPrivate::init()
q->connect(control, SIGNAL(activeChanged(bool)), q, SIGNAL(activeChanged(bool)));
q->connect(control, SIGNAL(error(int,QString)), q, SLOT(_q_error(int,QString)));
cameraExposure = new QCameraExposure(q, control);
- cameraFocus = new QCameraFocus(q, control);
+
+ focusControl = control->focusControl();
+
+ if (focusControl) {
+ q->connect(focusControl, SIGNAL(minimumZoomFactorChanged(float)),
+ q, SIGNAL(minimumZoomFactorChanged(float)));
+ q->connect(focusControl, SIGNAL(maximumZoomFactorChanged(float)),
+ q, SIGNAL(maximumZoomFactorChanged(float)));
+ }
+
imageProcessing = new QCameraImageProcessing(q, control);
}
@@ -214,14 +237,6 @@ QCameraExposure *QCamera::exposure() const
}
/*!
- Returns the camera focus control object.
-*/
-QCameraFocus *QCamera::focus() const
-{
- return d_func()->cameraFocus;
-}
-
-/*!
Returns the camera image processing control object.
*/
QCameraImageProcessing *QCamera::imageProcessing() const
@@ -445,6 +460,205 @@ void QCamera::setCameraFormat(const QCameraFormat &format)
*/
+
+/*!
+ \property QCamera::focusMode
+ \brief the current camera focus mode.
+
+ Sets up different focus modes for the camera. All auto focus modes will focus continuously.
+ Locking the focus is possible by setting the focus mode to \l FocusModeManual. This will keep
+ the current focus and stop any automatic focusing.
+
+ \sa QCamera::isFocusModeSupported()
+*/
+
+QCamera::FocusMode QCamera::focusMode() const
+{
+ Q_D(const QCamera);
+ return d->focusControl ? d->focusControl->focusMode() : QCamera::FocusModeAuto;
+}
+
+void QCamera::setFocusMode(QCamera::FocusMode mode)
+{
+ Q_D(QCamera);
+ if (!d->focusControl || d->focusControl->focusMode() == mode)
+ return;
+ d->focusControl->setFocusMode(mode);
+ emit focusModeChanged();
+}
+
+/*!
+ Returns true if the focus \a mode is supported by camera.
+*/
+
+bool QCamera::isFocusModeSupported(FocusMode mode) const
+{
+ Q_D(const QCamera);
+ return d->focusControl ? d->focusControl->isFocusModeSupported(mode) : false;
+}
+
+/*!
+ Returns the point currently used by the auto focus system to focus onto.
+ */
+QPointF QCamera::focusPoint() const
+{
+ Q_D(const QCamera);
+ return d->focusControl ? d->focusControl->focusPoint() : QPointF(-1., -1.);
+
+}
+
+/*!
+ \property QCamera::customFocusPoint
+
+ This property represents the position of the custom focus point, in relative frame coordinates:
+ QPointF(0,0) points to the left top frame point, QPointF(0.5,0.5) points to the frame center.
+
+ The custom focus point property is used only in \c FocusPointCustom focus mode.
+ */
+
+QPointF QCamera::customFocusPoint() const
+{
+ Q_D(const QCamera);
+ return d->customFocusPoint;
+}
+
+void QCamera::setCustomFocusPoint(const QPointF &point)
+{
+ Q_D(QCamera);
+ if (!d->focusControl || d->customFocusPoint == point)
+ return;
+ d->customFocusPoint = point;
+ d->focusControl->setCustomFocusPoint(point);
+ Q_EMIT customFocusPointChanged();
+}
+
+bool QCamera::isCustomFocusPointSupported() const
+{
+ Q_D(const QCamera);
+ return d->focusControl ? d->focusControl->isCustomFocusPointSupported() : false;
+}
+
+/*!
+ \property QCamera::focusDistance
+
+ This property return an approximate focus distance of the camera. The value reported is between 0 and 1, 0 being the closest
+ possible focus distance, 1 being as far away as possible. Note that 1 is often, but not always infinity.
+
+ Setting the focus distance will be ignored unless the focus mode is set to \l FocusModeManual.
+ */
+void QCamera::setFocusDistance(float d)
+{
+ if (!d_func()->focusControl || focusMode() != FocusModeManual)
+ return;
+ d_func()->focusControl->setFocusDistance(d);
+}
+
+float QCamera::focusDistance() const
+{
+ if (d_func()->focusControl)
+ return d_func()->focusControl->focusDistance();
+ return 0.;
+}
+
+/*!
+ Returns the maximum zoom factor.
+
+ This will be \c 1.0 on cameras that do not support zooming.
+*/
+
+float QCamera::maximumZoomFactor() const
+{
+ Q_D(const QCamera);
+ return d->focusControl ? d->focusControl->zoomFactorRange().max : 1.;
+}
+
+/*!
+ Returns the minimum zoom factor.
+
+ This will be \c 1.0 on cameras that do not support zooming.
+*/
+
+float QCamera::minimumZoomFactor() const
+{
+ Q_D(const QCamera);
+ return d->focusControl ? d->focusControl->zoomFactorRange().min : 1.;
+}
+
+/*!
+ \property QCamera::zoomFactor
+ \brief The current zoom factor.
+*/
+float QCamera::zoomFactor() const
+{
+ return d_func()->zoomFactor;
+}
+
+void QCamera::setZoomFactor(float factor)
+{
+ zoomTo(factor, 0.);
+}
+
+/*!
+ Zooms to a zoom factor \a factor using \a rate.
+
+ The rate is specified in powers of two per second. A rate of 1
+ would take two seconds to zoom from a zoom factor of 1 to a zoom factor of 4.
+ */
+void QCamera::zoomTo(float factor, float rate)
+{
+ Q_ASSERT(rate >= 0.);
+ if (rate < 0.)
+ rate = 0.;
+
+ Q_D(QCamera);
+ if (!d->focusControl)
+ return;
+ factor = qBound(minimumZoomFactor(), factor, maximumZoomFactor());
+ d->zoomFactor = factor;
+ d->focusControl->zoomTo(factor, rate);
+ emit zoomFactorChanged(factor);
+}
+
+/*!
+ \enum QCamera::FocusMode
+
+ \value FocusModeAuto Continuous auto focus mode.
+ \value FocusModeAutoNear Continuous auto focus mode on near objects.
+ \value FocusModeAutoFar Continuous auto focus mode on objects far away.
+ \value FocusModeHyperfocal Focus to hyperfocal distance, with the maximum depth of field achieved.
+ All objects at distances from half of this
+ distance out to infinity will be acceptably sharp.
+ \value FocusModeInfinity Focus strictly to infinity.
+ \value FocusModeManual Manual or fixed focus mode.
+*/
+
+/*!
+ \fn void QCamera::opticalZoomChanged(qreal value)
+
+ Signal emitted when optical zoom value changes to new \a value.
+*/
+
+/*!
+ \fn void QCamera::digitalZoomChanged(qreal value)
+
+ Signal emitted when digital zoom value changes to new \a value.
+*/
+
+/*!
+ \fn void QCamera::maximumOpticalZoomChanged(qreal zoom)
+
+ Signal emitted when the maximum supported optical \a zoom value changed.
+*/
+
+/*!
+ \fn void QCamera::maximumDigitalZoomChanged(qreal zoom)
+
+ Signal emitted when the maximum supported digital \a zoom value changed.
+
+ The maximum supported zoom value can depend on other camera settings,
+ like capture mode or resolution.
+*/
+
QT_END_NAMESPACE
#include "moc_qcamera.cpp"
diff --git a/src/multimedia/camera/qcamera.h b/src/multimedia/camera/qcamera.h
index 4e7f1b401..7acae0c3a 100644
--- a/src/multimedia/camera/qcamera.h
+++ b/src/multimedia/camera/qcamera.h
@@ -49,7 +49,6 @@
#include <QtCore/qobject.h>
#include <QtMultimedia/qcameraexposure.h>
-#include <QtMultimedia/qcamerafocus.h>
#include <QtMultimedia/qcameraimageprocessing.h>
#include <QtMultimedia/qcamerainfo.h>
@@ -69,13 +68,21 @@ class Q_MULTIMEDIA_EXPORT QCamera : public QObject
Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
Q_PROPERTY(QCamera::Status status READ status NOTIFY statusChanged)
Q_PROPERTY(QCameraExposure* exposure READ exposure CONSTANT)
- Q_PROPERTY(QCameraFocus* focus READ focus CONSTANT)
Q_PROPERTY(QCameraImageProcessing* imageProcessing READ imageProcessing CONSTANT)
Q_PROPERTY(QCameraInfo cameraInfo READ cameraInfo WRITE setCameraInfo NOTIFY cameraInfoChanged)
Q_PROPERTY(Error error READ error NOTIFY errorChanged)
Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
Q_PROPERTY(QCameraFormat cameraFormat READ cameraFormat WRITE setCameraFormat NOTIFY cameraFormatChanged)
+ Q_PROPERTY(FocusMode focusMode READ focusMode WRITE setFocusMode)
+ Q_PROPERTY(QPointF customFocusPoint READ customFocusPoint WRITE setCustomFocusPoint NOTIFY customFocusPointChanged)
+ Q_PROPERTY(float focusDistance READ focusDistance WRITE setFocusDistance NOTIFY focusDistanceChanged)
+
+ Q_PROPERTY(float minimumZoomFactor READ minimumZoomFactor NOTIFY minimumZoomFactorChanged)
+ Q_PROPERTY(float maximumZoomFactor READ maximumZoomFactor NOTIFY maximumZoomFactorChanged)
+ Q_PROPERTY(float zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged)
+
+ Q_ENUMS(FocusMode)
Q_ENUMS(Status)
Q_ENUMS(Error)
public:
@@ -93,6 +100,15 @@ public:
CameraError
};
+ enum FocusMode {
+ FocusModeAuto,
+ FocusModeAutoNear,
+ FocusModeAutoFar,
+ FocusModeHyperfocal,
+ FocusModeInfinity,
+ FocusModeManual
+ };
+
explicit QCamera(QObject *parent = nullptr);
explicit QCamera(const QCameraInfo& cameraInfo, QObject *parent = nullptr);
explicit QCamera(QCameraInfo::Position position, QObject *parent = nullptr);
@@ -112,17 +128,36 @@ public:
void setCameraFormat(const QCameraFormat &format);
QCameraExposure *exposure() const;
- QCameraFocus *focus() const;
QCameraImageProcessing *imageProcessing() const;
Error error() const;
QString errorString() const;
+ FocusMode focusMode() const;
+ void setFocusMode(FocusMode mode);
+ bool isFocusModeSupported(FocusMode mode) const;
+
+ QPointF focusPoint() const;
+
+ QPointF customFocusPoint() const;
+ void setCustomFocusPoint(const QPointF &point);
+ bool isCustomFocusPointSupported() const;
+
+ void setFocusDistance(float d);
+ float focusDistance() const;
+
+ float minimumZoomFactor() const;
+ float maximumZoomFactor() const;
+ float zoomFactor() const;
+ void setZoomFactor(float factor);
+
public Q_SLOTS:
void setActive(bool active);
void start() { setActive(true); }
void stop() { setActive(false); }
+ void zoomTo(float zoom, float rate);
+
Q_SIGNALS:
void activeChanged(bool);
void statusChanged(QCamera::Status status);
@@ -131,6 +166,13 @@ Q_SIGNALS:
void cameraInfoChanged();
void cameraFormatChanged();
+ void focusModeChanged();
+ void zoomFactorChanged(float);
+ void minimumZoomFactorChanged(float);
+ void maximumZoomFactorChanged(float);
+ void focusDistanceChanged(float);
+ void customFocusPointChanged();
+
private:
void setCaptureSession(QMediaCaptureSession *session);
friend class QMediaCaptureSession;
diff --git a/src/multimedia/camera/qcamera_p.h b/src/multimedia/camera/qcamera_p.h
index c71cc7f73..67f06eeb3 100644
--- a/src/multimedia/camera/qcamera_p.h
+++ b/src/multimedia/camera/qcamera_p.h
@@ -58,6 +58,7 @@
QT_BEGIN_NAMESPACE
class QPlatformCamera;
+class QPlatformCameraFocus;
class QPlatformMediaCaptureSession;
class QCameraPrivate : public QObjectPrivate
@@ -77,7 +78,6 @@ public:
QPlatformCamera *control = nullptr;
QCameraExposure *cameraExposure = nullptr;
- QCameraFocus *cameraFocus = nullptr;
QCameraImageProcessing *imageProcessing = nullptr;
QObject *capture = nullptr;
@@ -88,6 +88,10 @@ public:
QCameraInfo cameraInfo;
QCameraFormat cameraFormat;
+ QPlatformCameraFocus *focusControl = nullptr;
+ float zoomFactor = 1.;
+ QPointF customFocusPoint{-1, -1};
+
void _q_error(int error, const QString &errorString);
void unsetError() { error = QCamera::NoError; errorString.clear(); }
};
diff --git a/src/multimedia/camera/qcamerafocus.cpp b/src/multimedia/camera/qcamerafocus.cpp
deleted file mode 100644
index cfa6148ae..000000000
--- a/src/multimedia/camera/qcamerafocus.cpp
+++ /dev/null
@@ -1,354 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part 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 "qcamerafocus.h"
-#include "private/qobject_p.h"
-
-#include <qcamera.h>
-#include <private/qplatformcamera_p.h>
-#include <private/qplatformcameraexposure_p.h>
-#include <private/qplatformcamerafocus_p.h>
-#include <private/qplatformcameraimagecapture_p.h>
-
-#include <QtCore/QDebug>
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class QCameraFocus
-
- \brief The QCameraFocus class provides an interface for focus and zoom related camera settings.
-
- \inmodule QtMultimedia
- \ingroup multimedia
- \ingroup multimedia_camera
-
- On hardware that supports it, this class lets you adjust the focus
- or zoom (both optical and digital). This also includes things
- like "Macro" mode for close up work (e.g. reading barcodes, or
- recognising letters), or "touch to focus" - indicating an
- interesting area of the viewfinder for the hardware to attempt
- to focus on.
-
- \snippet multimedia-snippets/camera.cpp Camera custom zoom
-
- Zooming can be accomplished in a number of ways - usually the more
- expensive but higher quality approach is an optical zoom, which allows
- using the full extent of the camera sensor to gather image pixels. In
- addition it is possible to digitally zoom, which will generally just
- enlarge part of the sensor frame and throw away other parts. If the
- camera hardware supports optical zoom this should generally always
- be used first. The \l maximumOpticalZoom() method allows this to be
- checked. The \l zoomTo() method allows changing both optical and
- digital zoom at once.
-
- \snippet multimedia-snippets/camera.cpp Camera combined zoom
-
- \section2 Some notes on autofocus
- Some hardware supports a movable focus lens assembly, and typically
- this hardware also supports automatically focusing via some heuristic.
- You can influence this via the \l focusPoint property (usually provided
- by a user in a "touch to focus" scenario).
-*/
-
-#define Q_DECLARE_NON_CONST_PUBLIC(Class) \
- inline Class* q_func() { return static_cast<Class *>(q_ptr); } \
- friend class Class;
-
-class QCameraFocusPrivate : public QObjectPrivate
-{
- Q_DECLARE_NON_CONST_PUBLIC(QCameraFocus)
-public:
- void init(QPlatformCamera *cameraControl);
-
- QCamera *camera;
-
- QPlatformCameraFocus *focusControl;
- float zoomFactor = 1.;
- QPointF customFocusPoint{-1, -1};
-};
-
-#undef Q_DECLARE_NON_CONST_PUBLIC
-
-void QCameraFocusPrivate::init(QPlatformCamera *cameraControl)
-{
- Q_Q(QCameraFocus);
-
- focusControl = cameraControl->focusControl();
-
- if (!focusControl)
- return;
-
- q->connect(focusControl, SIGNAL(minimumZoomFactorChanged(float)),
- q, SIGNAL(minimumZoomFactorChanged(float)));
- q->connect(focusControl, SIGNAL(maximumZoomFactorChanged(float)),
- q, SIGNAL(maximumZoomFactorChanged(float)));
-}
-
-/*!
- \internal
- Construct a QCameraFocus for \a camera.
-*/
-
-QCameraFocus::QCameraFocus(QCamera *camera, QPlatformCamera *cameraControl)
- : QObject(*new QCameraFocusPrivate, camera)
-{
- Q_D(QCameraFocus);
- d->camera = camera;
- d->init(cameraControl);
-}
-
-
-/*!
- Destroys the camera focus object.
-*/
-
-QCameraFocus::~QCameraFocus() = default;
-
-/*!
- Returns true if focus related settings are supported by this camera.
-
- You may need to also check if any specific features are supported.
-*/
-bool QCameraFocus::isAvailable() const
-{
- return d_func()->focusControl != nullptr;
-}
-
-/*!
- \property QCameraFocus::focusMode
- \brief the current camera focus mode.
-
- Sets up different focus modes for the camera. All auto focus modes will focus continuously.
- Locking the focus is possible by setting the focus mode to \l FocusModeManual. This will keep
- the current focus and stop any automatic focusing.
-
- \sa QCameraFocus::isFocusModeSupported()
-*/
-
-QCameraFocus::FocusMode QCameraFocus::focusMode() const
-{
- Q_D(const QCameraFocus);
- return d->focusControl ? d->focusControl->focusMode() : QCameraFocus::FocusModeAuto;
-}
-
-void QCameraFocus::setFocusMode(QCameraFocus::FocusMode mode)
-{
- Q_D(QCameraFocus);
- if (!d->focusControl || d->focusControl->focusMode() == mode)
- return;
- d->focusControl->setFocusMode(mode);
- emit focusModeChanged();
-}
-
-/*!
- Returns true if the focus \a mode is supported by camera.
-*/
-
-bool QCameraFocus::isFocusModeSupported(FocusMode mode) const
-{
- Q_D(const QCameraFocus);
- return d->focusControl ? d->focusControl->isFocusModeSupported(mode) : false;
-}
-
-/*!
- Returns the point currently used by the auto focus system to focus onto.
- */
-QPointF QCameraFocus::focusPoint() const
-{
- Q_D(const QCameraFocus);
- return d->focusControl ? d->focusControl->focusPoint() : QPointF(-1., -1.);
-
-}
-
-/*!
- \property QCameraFocus::customFocusPoint
-
- This property represents the position of the custom focus point, in relative frame coordinates:
- QPointF(0,0) points to the left top frame point, QPointF(0.5,0.5) points to the frame center.
-
- The custom focus point property is used only in \c FocusPointCustom focus mode.
- */
-
-QPointF QCameraFocus::customFocusPoint() const
-{
- Q_D(const QCameraFocus);
- return d->customFocusPoint;
-}
-
-void QCameraFocus::setCustomFocusPoint(const QPointF &point)
-{
- Q_D(QCameraFocus);
- if (!d->focusControl || d->customFocusPoint == point)
- return;
- d->customFocusPoint = point;
- d->focusControl->setCustomFocusPoint(point);
- Q_EMIT customFocusPointChanged();
-}
-
-bool QCameraFocus::isCustomFocusPointSupported() const
-{
- Q_D(const QCameraFocus);
- return d->focusControl ? d->focusControl->isCustomFocusPointSupported() : false;
-}
-
-/*!
- \property QCameraFocus::focusDistance
-
- This property return an approximate focus distance of the camera. The value reported is between 0 and 1, 0 being the closest
- possible focus distance, 1 being as far away as possible. Note that 1 is often, but not always infinity.
-
- Setting the focus distance will be ignored unless the focus mode is set to \l FocusModeManual.
- */
-void QCameraFocus::setFocusDistance(float d)
-{
- if (!d_func()->focusControl || focusMode() != FocusModeManual)
- return;
- d_func()->focusControl->setFocusDistance(d);
-}
-
-float QCameraFocus::focusDistance() const
-{
- if (d_func()->focusControl)
- return d_func()->focusControl->focusDistance();
- return 0.;
-}
-
-/*!
- Returns the maximum zoom factor.
-
- This will be \c 1.0 on cameras that do not support zooming.
-*/
-
-float QCameraFocus::maximumZoomFactor() const
-{
- Q_D(const QCameraFocus);
- return d->focusControl ? d->focusControl->zoomFactorRange().max : 1.;
-}
-
-/*!
- Returns the minimum zoom factor.
-
- This will be \c 1.0 on cameras that do not support zooming.
-*/
-
-float QCameraFocus::minimumZoomFactor() const
-{
- Q_D(const QCameraFocus);
- return d->focusControl ? d->focusControl->zoomFactorRange().min : 1.;
-}
-
-/*!
- \property QCameraFocus::zoomFactor
- \brief The current zoom factor.
-*/
-float QCameraFocus::zoomFactor() const
-{
- return d_func()->zoomFactor;
-}
-
-void QCameraFocus::setZoomFactor(float factor)
-{
- zoomTo(factor, 0.);
-}
-
-/*!
- Zooms to a zoom factor \a factor using \a rate.
-
- The rate is specified in powers of two per second. A rate of 1
- would take two seconds to zoom from a zoom factor of 1 to a zoom factor of 4.
- */
-void QCameraFocus::zoomTo(float factor, float rate)
-{
- Q_ASSERT(rate >= 0.);
- if (rate < 0.)
- rate = 0.;
-
- Q_D(QCameraFocus);
- if (!d->focusControl)
- return;
- factor = qBound(minimumZoomFactor(), factor, maximumZoomFactor());
- d->zoomFactor = factor;
- d->focusControl->zoomTo(factor, rate);
- emit zoomFactorChanged(factor);
-}
-
-/*!
- \enum QCameraFocus::FocusMode
-
- \value FocusModeAuto Continuous auto focus mode.
- \value FocusModeAutoNear Continuous auto focus mode on near objects.
- \value FocusModeAutoFar Continuous auto focus mode on objects far away.
- \value FocusModeHyperfocal Focus to hyperfocal distance, with the maximum depth of field achieved.
- All objects at distances from half of this
- distance out to infinity will be acceptably sharp.
- \value FocusModeInfinity Focus strictly to infinity.
- \value FocusModeManual Manual or fixed focus mode.
-*/
-
-/*!
- \fn void QCameraFocus::opticalZoomChanged(qreal value)
-
- Signal emitted when optical zoom value changes to new \a value.
-*/
-
-/*!
- \fn void QCameraFocus::digitalZoomChanged(qreal value)
-
- Signal emitted when digital zoom value changes to new \a value.
-*/
-
-/*!
- \fn void QCameraFocus::maximumOpticalZoomChanged(qreal zoom)
-
- Signal emitted when the maximum supported optical \a zoom value changed.
-*/
-
-/*!
- \fn void QCameraFocus::maximumDigitalZoomChanged(qreal zoom)
-
- Signal emitted when the maximum supported digital \a zoom value changed.
-
- The maximum supported zoom value can depend on other camera settings,
- like capture mode or resolution.
-*/
-
-QT_END_NAMESPACE
-
-#include "moc_qcamerafocus.cpp"
diff --git a/src/multimedia/camera/qcamerafocus.h b/src/multimedia/camera/qcamerafocus.h
deleted file mode 100644
index df521afd4..000000000
--- a/src/multimedia/camera/qcamerafocus.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part 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$
-**
-****************************************************************************/
-
-#ifndef QCAMERAFOCUS_H
-#define QCAMERAFOCUS_H
-
-#include <QtCore/qstringlist.h>
-#include <QtCore/qpair.h>
-#include <QtCore/qsize.h>
-#include <QtCore/qpoint.h>
-#include <QtCore/qrect.h>
-#include <QtCore/qshareddata.h>
-#include <QtCore/qobject.h>
-
-#include <QtMultimedia/qtmultimediaglobal.h>
-#include <QtMultimedia/qmediaenumdebug.h>
-
-QT_BEGIN_NAMESPACE
-
-
-class QCamera;
-class QPlatformCamera;
-
-class QCameraFocusPrivate;
-class Q_MULTIMEDIA_EXPORT QCameraFocus : public QObject
-{
- Q_OBJECT
-
- Q_PROPERTY(FocusMode focusMode READ focusMode WRITE setFocusMode)
- Q_PROPERTY(QPointF customFocusPoint READ customFocusPoint WRITE setCustomFocusPoint NOTIFY customFocusPointChanged)
- Q_PROPERTY(float focusDistance READ focusDistance WRITE setFocusDistance NOTIFY focusDistanceChanged)
-
- Q_PROPERTY(float minimumZoomFactor READ minimumZoomFactor NOTIFY minimumZoomFactorChanged)
- Q_PROPERTY(float maximumZoomFactor READ maximumZoomFactor NOTIFY maximumZoomFactorChanged)
- Q_PROPERTY(float zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged)
-
- Q_ENUMS(FocusMode)
-public:
- enum FocusMode {
- FocusModeAuto,
- FocusModeAutoNear,
- FocusModeAutoFar,
- FocusModeHyperfocal,
- FocusModeInfinity,
- FocusModeManual
-#if 1 // QT_DEPRECATED
- , ContinuousFocus = FocusModeAuto,
- AutoFocus = FocusModeAuto, // Not quite
- MacroFocus = FocusModeAutoNear,
- HyperfocalFocus = FocusModeHyperfocal,
- InfinityFocus = FocusModeInfinity,
- ManualFocus = FocusModeManual
-#endif
- };
-
- bool isAvailable() const;
-
- FocusMode focusMode() const;
- void setFocusMode(FocusMode mode);
- bool isFocusModeSupported(FocusMode mode) const;
-
- QPointF focusPoint() const;
-
- QPointF customFocusPoint() const;
- void setCustomFocusPoint(const QPointF &point);
- bool isCustomFocusPointSupported() const;
-
- void setFocusDistance(float d);
- float focusDistance() const;
-
- float minimumZoomFactor() const;
- float maximumZoomFactor() const;
- float zoomFactor() const;
- void setZoomFactor(float factor);
-
-public Q_SLOTS:
- void zoomTo(float zoom, float rate);
-
-Q_SIGNALS:
- void focusModeChanged();
- void zoomFactorChanged(float);
- void minimumZoomFactorChanged(float);
- void maximumZoomFactorChanged(float);
- void focusDistanceChanged(float);
- void customFocusPointChanged();
-
-protected:
- ~QCameraFocus();
-
-private:
- friend class QCamera;
- friend class QCameraPrivate;
- QCameraFocus(QCamera *camera, QPlatformCamera *cameraControl);
-
- Q_DISABLE_COPY(QCameraFocus)
- Q_DECLARE_PRIVATE(QCameraFocus)
-};
-
-QT_END_NAMESPACE
-
-Q_MEDIA_ENUM_DEBUG(QCameraFocus, FocusMode)
-
-#endif // QCAMERAFOCUS_H
diff --git a/src/multimedia/doc/snippets/multimedia-snippets/camera.cpp b/src/multimedia/doc/snippets/multimedia-snippets/camera.cpp
index 80d4853f7..1f2273002 100644
--- a/src/multimedia/doc/snippets/multimedia-snippets/camera.cpp
+++ b/src/multimedia/doc/snippets/multimedia-snippets/camera.cpp
@@ -243,13 +243,12 @@ void cameraimageprocessing()
void camerafocus()
{
- //! [Camera custom zoom]
- QCameraFocus *focus = camera->focus();
- focus->setFocusPointMode(QCameraFocus::FocusModeManual);
- focus->setCustomFocusPoint(QPointF(0.25f, 0.75f)); // A point near the bottom left, 25% away from the corner, near that shiny vase
- //! [Camera custom zoom]
-
- //! [Camera combined zoom]
- focus->setZoomFactor(3.0);
- //! [Camera combined zoom]
+ //! [Camera custom focus]
+ camera->setFocusPointMode(QCamera::FocusModeManual);
+ camera->setCustomFocusPoint(QPointF(0.25f, 0.75f)); // A point near the bottom left, 25% away from the corner, near that shiny vase
+ //! [Camera custom focus]
+
+ //! [Camera zoom]
+ camera->setZoomFactor(3.0);
+ //! [Camera zoom]
}
diff --git a/src/multimedia/doc/src/cameraoverview.qdoc b/src/multimedia/doc/src/cameraoverview.qdoc
index f832bc6bb..53015339a 100644
--- a/src/multimedia/doc/src/cameraoverview.qdoc
+++ b/src/multimedia/doc/src/cameraoverview.qdoc
@@ -231,24 +231,18 @@ the final images, and you can control them with different classes.
\section3 Focus and Zoom
-Focusing (and zoom) is managed primarily by the \l QCameraFocus class.
-QCameraFocus allows the developer to set the general policy by means of the
-enums for the \l {QCameraFocus::FocusMode}{FocusMode} and the
-\l {QCameraFocus::FocusPointMode}{FocusPointMode}. \l {QCameraFocus::FocusMode}{FocusMode}
-deals with settings such as \l {QCameraFocus::FocusModeAuto},
-and \l {QCameraFocus::FocusModeInfinity},
-whereas \l {QCameraFocus::FocusMode}{FocusPointMode} deals with the
-various focus zones within the view that are used for autofocus modes. \l {QCameraFocus::FocusMode}{FocusPointMode}
-has support for face recognition (where the camera supports it), center focus and a custom
-focus where the focus point can be specified.
-
-For camera hardware that supports it, \l {QCameraFocus::FocusMode}{Macro focus} allows
+QCamera allows the developer to set the general focus policy by means of the
+enums for the \l {QCamera::FocusMode}{FocusMode}. \l {QCamera::FocusMode}{FocusMode}
+deals with settings such as \l {QCamera::FocusModeAuto},
+and \l {QCamera::FocusModeInfinity}.
+
+For camera hardware that supports it, \l QCamera::FocusModeAutoNear} allows
imaging of things that are close to the sensor. This is useful in applications like
barcode recognition, or business card scanning.
-In addition to focus, QCameraFocus allows you to control any available optical or
-digital zoom. In general, optical zoom is higher quality, but more expensive to
-manufacture, so the available zoom range might be limited (or fixed to unity).
+In addition to focus, QCameraFocus allows you to control any available zoom using \l setZoomFactor()
+or \l zoomTo(). The available zoom range might be limited (or fixed to unity), the allowed range can
+be checked with \l minimumZoomFactor() and maximumZoomFactor().
\section3 Exposure, Aperture, Shutter Speed and Flash
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol.cpp b/src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol.cpp
index 42bb3c842..d95941430 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol.cpp
+++ b/src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol.cpp
@@ -62,7 +62,7 @@ static QRect adjustedArea(const QRectF &area)
QAndroidCameraFocusControl::QAndroidCameraFocusControl(QAndroidCameraSession *session)
: QPlatformCameraFocus()
, m_session(session)
- , m_focusMode(QCameraFocus::AutoFocus)
+ , m_focusMode(QCamera::FocusModeAuto)
, m_focusPoint(0.5, 0.5)
, m_continuousPictureFocusSupported(false)
, m_continuousVideoFocusSupported(false)
@@ -71,12 +71,12 @@ QAndroidCameraFocusControl::QAndroidCameraFocusControl(QAndroidCameraSession *se
this, SLOT(onCameraOpened()));
}
-QCameraFocus::FocusMode QAndroidCameraFocusControl::focusMode() const
+QCamera::FocusMode QAndroidCameraFocusControl::focusMode() const
{
return m_focusMode;
}
-void QAndroidCameraFocusControl::setFocusMode(QCameraFocus::FocusMode mode)
+void QAndroidCameraFocusControl::setFocusMode(QCamera::FocusMode mode)
{
if (!m_session->camera()) {
setFocusModeHelper(mode);
@@ -87,20 +87,20 @@ void QAndroidCameraFocusControl::setFocusMode(QCameraFocus::FocusMode mode)
QString focusMode;
switch (mode) {
- case QCameraFocus::FocusModeHyperfocal:
+ case QCamera::FocusModeHyperfocal:
focusMode = QLatin1String("edof");
break;
- case QCameraFocus::FocusModeInfinity: // not 100%, but close
+ case QCamera::FocusModeInfinity: // not 100%, but close
focusMode = QLatin1String("infinity");
break;
- case QCameraFocus::FocusModeManual:
+ case QCamera::FocusModeManual:
focusMode = QLatin1String("fixed");
break;
- case QCameraFocus::FocusModeAutoNear:
+ case QCamera::FocusModeAutoNear:
focusMode = QLatin1String("macro");
break;
- case QCameraFocus::FocusModeAuto:
- case QCameraFocus::FocusModeAutoFar:
+ case QCamera::FocusModeAuto:
+ case QCamera::FocusModeAutoFar:
if (1) { // ###?
focusMode = QLatin1String("continuous-video");
} else {
@@ -118,7 +118,7 @@ void QAndroidCameraFocusControl::setFocusMode(QCameraFocus::FocusMode mode)
}
}
-bool QAndroidCameraFocusControl::isFocusModeSupported(QCameraFocus::FocusMode mode) const
+bool QAndroidCameraFocusControl::isFocusModeSupported(QCamera::FocusMode mode) const
{
return m_session->camera() ? m_supportedFocusModes.contains(mode) : false;
}
@@ -162,19 +162,19 @@ void QAndroidCameraFocusControl::onCameraOpened()
for (int i = 0; i < focusModes.size(); ++i) {
const QString &focusMode = focusModes.at(i);
if (focusMode == QLatin1String("continuous-picture")) {
- m_supportedFocusModes << QCameraFocus::FocusModeAuto;
+ m_supportedFocusModes << QCamera::FocusModeAuto;
m_continuousPictureFocusSupported = true;
} else if (focusMode == QLatin1String("continuous-video")) {
- m_supportedFocusModes << QCameraFocus::FocusModeAuto;
+ m_supportedFocusModes << QCamera::FocusModeAuto;
m_continuousVideoFocusSupported = true;
} else if (focusMode == QLatin1String("edof")) {
- m_supportedFocusModes << QCameraFocus::FocusModeHyperfocal;
+ m_supportedFocusModes << QCamera::FocusModeHyperfocal;
} else if (focusMode == QLatin1String("fixed")) {
- m_supportedFocusModes << QCameraFocus::FocusModeManual;
+ m_supportedFocusModes << QCamera::FocusModeManual;
} else if (focusMode == QLatin1String("infinity")) {
- m_supportedFocusModes << QCameraFocus::FocusModeInfinity;
+ m_supportedFocusModes << QCamera::FocusModeInfinity;
} else if (focusMode == QLatin1String("macro")) {
- m_supportedFocusModes << QCameraFocus::FocusModeAutoNear;
+ m_supportedFocusModes << QCamera::FocusModeAutoNear;
}
}
@@ -182,7 +182,7 @@ void QAndroidCameraFocusControl::onCameraOpened()
m_focusPointSupported = true;
if (!m_supportedFocusModes.contains(m_focusMode))
- setFocusModeHelper(QCameraFocus::AutoFocus);
+ setFocusModeHelper(QCamera::FocusModeAuto);
setFocusMode(m_focusMode);
setCustomFocusPoint(m_focusPoint);
@@ -234,7 +234,7 @@ void QAndroidCameraFocusControl::onViewportSizeChanged()
void QAndroidCameraFocusControl::onCameraCaptureModeChanged()
{
-// if (m_session->camera() && m_focusMode == QCameraFocus::ContinuousFocus) {
+// if (m_session->camera() && m_focusMode == QCamera::FocusModeAudio) {
// QString focusMode;
// if ((m_session->captureMode().testFlag(QCamera::CaptureVideo) && m_continuousVideoFocusSupported)
// || !m_continuousPictureFocusSupported) {
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol_p.h b/src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol_p.h
index 5b72f978d..ca9e23725 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol_p.h
+++ b/src/multimedia/platform/android/mediacapture/qandroidcamerafocuscontrol_p.h
@@ -63,9 +63,9 @@ class QAndroidCameraFocusControl : public QPlatformCameraFocus
public:
explicit QAndroidCameraFocusControl(QAndroidCameraSession *session);
- QCameraFocus::FocusMode focusMode() const override;
- void setFocusMode(QCameraFocus::FocusMode mode) override;
- bool isFocusModeSupported(QCameraFocus::FocusMode mode) const override;
+ QCamera::FocusMode focusMode() const override;
+ void setFocusMode(QCamera::FocusMode mode) override;
+ bool isFocusModeSupported(QCamera::FocusMode mode) const override;
bool isCustomFocusPointSupported() const override;
QPointF focusPoint() const override;
@@ -82,7 +82,7 @@ private Q_SLOTS:
void onAutoFocusComplete(bool success);
private:
- inline void setFocusModeHelper(QCameraFocus::FocusMode mode)
+ inline void setFocusModeHelper(QCamera::FocusMode mode)
{
if (m_focusMode != mode) {
m_focusMode = mode;
@@ -94,10 +94,10 @@ private:
QAndroidCameraSession *m_session;
- QCameraFocus::FocusMode m_focusMode;
+ QCamera::FocusMode m_focusMode;
QPointF m_focusPoint;
- QList<QCameraFocus::FocusMode> m_supportedFocusModes;
+ QList<QCamera::FocusMode> m_supportedFocusModes;
bool m_continuousPictureFocusSupported;
bool m_continuousVideoFocusSupported;
bool m_focusPointSupported = false;
diff --git a/src/multimedia/platform/darwin/camera/avfcamerafocus.mm b/src/multimedia/platform/darwin/camera/avfcamerafocus.mm
index dc62ce507..ab430894d 100644
--- a/src/multimedia/platform/darwin/camera/avfcamerafocus.mm
+++ b/src/multimedia/platform/darwin/camera/avfcamerafocus.mm
@@ -50,23 +50,22 @@ QT_BEGIN_NAMESPACE
namespace {
-bool qt_focus_mode_supported(QCameraFocus::FocusMode mode)
+bool qt_focus_mode_supported(QCamera::FocusMode mode)
{
- // Check if QCameraFocus::FocusMode has counterpart in AVFoundation.
+ // Check if QCamera::FocusMode has counterpart in AVFoundation.
// AVFoundation has 'Manual', 'Auto' and 'Continuous',
// where 'Manual' is actually 'Locked' + writable property 'lensPosition'.
- return mode == QCameraFocus::AutoFocus
- || mode == QCameraFocus::ContinuousFocus
- || mode == QCameraFocus::ManualFocus;
+ return mode == QCamera::FocusModeAuto
+ || mode == QCamera::FocusModeManual;
}
-AVCaptureFocusMode avf_focus_mode(QCameraFocus::FocusMode requestedMode)
+AVCaptureFocusMode avf_focus_mode(QCamera::FocusMode requestedMode)
{
switch (requestedMode) {
- case QCameraFocus::FocusModeHyperfocal:
- case QCameraFocus::FocusModeInfinity:
- case QCameraFocus::FocusModeManual:
+ case QCamera::FocusModeHyperfocal:
+ case QCamera::FocusModeInfinity:
+ case QCamera::FocusModeManual:
return AVCaptureFocusModeLocked;
default:
return AVCaptureFocusModeContinuousAutoFocus;
@@ -79,7 +78,7 @@ AVCaptureFocusMode avf_focus_mode(QCameraFocus::FocusMode requestedMode)
AVFCameraFocus::AVFCameraFocus(AVFCamera *camera)
: QPlatformCameraFocus(camera),
m_camera(camera),
- m_focusMode(QCameraFocus::ContinuousFocus),
+ m_focusMode(QCamera::FocusModeAuto),
m_customFocusPoint(0.5f, 0.5f),
m_actualFocusPoint(m_customFocusPoint)
{
@@ -87,12 +86,12 @@ AVFCameraFocus::AVFCameraFocus(AVFCamera *camera)
connect(m_camera, SIGNAL(activeChanged(bool)), SLOT(cameraActiveChanged(bool)));
}
-QCameraFocus::FocusMode AVFCameraFocus::focusMode() const
+QCamera::FocusMode AVFCameraFocus::focusMode() const
{
return m_focusMode;
}
-void AVFCameraFocus::setFocusMode(QCameraFocus::FocusMode mode)
+void AVFCameraFocus::setFocusMode(QCamera::FocusMode mode)
{
if (m_focusMode == mode)
return;
@@ -127,7 +126,7 @@ void AVFCameraFocus::setFocusMode(QCameraFocus::FocusMode mode)
Q_EMIT focusModeChanged(m_focusMode);
}
-bool AVFCameraFocus::isFocusModeSupported(QCameraFocus::FocusMode mode) const
+bool AVFCameraFocus::isFocusModeSupported(QCamera::FocusMode mode) const
{
AVCaptureDevice *captureDevice = m_camera->device();
if (!captureDevice)
@@ -136,19 +135,19 @@ bool AVFCameraFocus::isFocusModeSupported(QCameraFocus::FocusMode mode) const
#ifdef Q_OS_IOS
AVCaptureFocusMode avMode = avf_focus_mode(mode);
switch (mode) {
- case QCameraFocus::FocusModeAuto:
- case QCameraFocus::FocusModeHyperfocal:
- case QCameraFocus::FocusModeInfinity:
- case QCameraFocus::FocusModeManual:
+ case QCamera::FocusModeAuto:
+ case QCamera::FocusModeHyperfocal:
+ case QCamera::FocusModeInfinity:
+ case QCamera::FocusModeManual:
return [captureDevice isFocusModeSupported:avMode];
- case QCameraFocus::FocusModeAutoNear:
+ case QCamera::FocusModeAutoNear:
Q_FALLTHROUGH();
- case QCameraFocus::FocusModeAutoFar:
+ case QCamera::FocusModeAutoFar:
return captureDevice.autoFocusRangeRestrictionSupported
&& [captureDevice isFocusModeSupported:avMode];
}
#else
- return mode == QCameraFocus::FocusModeAuto; // stupid builtin webcam doesn't do any focus handling, but hey it's usually focused :)
+ return mode == QCamera::FocusModeAuto; // stupid builtin webcam doesn't do any focus handling, but hey it's usually focused :)
#endif
}
@@ -185,7 +184,7 @@ void AVFCameraFocus::setCustomFocusPoint(const QPointF &point)
m_actualFocusPoint = m_customFocusPoint;
const CGPoint focusPOI = CGPointMake(point.x(), point.y());
[captureDevice setFocusPointOfInterest:focusPOI];
- if (m_focusMode != QCameraFocus::ContinuousFocus)
+ if (m_focusMode != QCamera::FocusModeAuto)
[captureDevice setFocusMode:AVCaptureFocusModeAutoFocus];
} else {
qDebugCamera() << Q_FUNC_INFO << "focus point of interest not supported";
@@ -263,7 +262,7 @@ void AVFCameraFocus::cameraActiveChanged(bool active)
[captureDevice setFocusPointOfInterest:focusPOI];
}
- if (m_focusMode != QCameraFocus::ContinuousFocus) {
+ if (m_focusMode != QCamera::FocusModeAuto) {
const AVCaptureFocusMode avMode = avf_focus_mode(m_focusMode);
if (captureDevice.focusMode != avMode) {
if (![captureDevice isFocusModeSupported:avMode]) {
diff --git a/src/multimedia/platform/darwin/camera/avfcamerafocus_p.h b/src/multimedia/platform/darwin/camera/avfcamerafocus_p.h
index 2c9b8b004..2f4adf5fa 100644
--- a/src/multimedia/platform/darwin/camera/avfcamerafocus_p.h
+++ b/src/multimedia/platform/darwin/camera/avfcamerafocus_p.h
@@ -70,9 +70,9 @@ class AVFCameraFocus : public QPlatformCameraFocus
public:
explicit AVFCameraFocus(AVFCamera *camera);
- QCameraFocus::FocusMode focusMode() const override;
- void setFocusMode(QCameraFocus::FocusMode mode) override;
- bool isFocusModeSupported(QCameraFocus::FocusMode mode) const override;
+ QCamera::FocusMode focusMode() const override;
+ void setFocusMode(QCamera::FocusMode mode) override;
+ bool isFocusModeSupported(QCamera::FocusMode mode) const override;
QPointF focusPoint() const override;
void setCustomFocusPoint(const QPointF &point) override;
@@ -89,7 +89,7 @@ private Q_SLOTS:
private:
AVFCamera *m_camera;
- QCameraFocus::FocusMode m_focusMode;
+ QCamera::FocusMode m_focusMode;
QPointF m_customFocusPoint;
QPointF m_actualFocusPoint;
diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus.cpp b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus.cpp
index beb09a897..b5919bca8 100644
--- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus.cpp
+++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus.cpp
@@ -56,7 +56,7 @@ QT_BEGIN_NAMESPACE
QGstreamerCameraFocus::QGstreamerCameraFocus(QGstreamerCamera *session)
: QPlatformCameraFocus(session),
m_camera(session),
- m_focusMode(QCameraFocus::AutoFocus)
+ m_focusMode(QCamera::FocusModeAuto)
{
#if QT_CONFIG(gstreamer_photography)
auto photography = m_camera->photography();
@@ -69,12 +69,12 @@ QGstreamerCameraFocus::~QGstreamerCameraFocus()
{
}
-QCameraFocus::FocusMode QGstreamerCameraFocus::focusMode() const
+QCamera::FocusMode QGstreamerCameraFocus::focusMode() const
{
return m_focusMode;
}
-void QGstreamerCameraFocus::setFocusMode(QCameraFocus::FocusMode mode)
+void QGstreamerCameraFocus::setFocusMode(QCamera::FocusMode mode)
{
if (mode == m_focusMode)
return;
@@ -85,22 +85,22 @@ void QGstreamerCameraFocus::setFocusMode(QCameraFocus::FocusMode mode)
GstPhotographyFocusMode photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL;
switch (mode) {
- case QCameraFocus::FocusModeAutoNear:
+ case QCamera::FocusModeAutoNear:
photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_MACRO;
break;
- case QCameraFocus::FocusModeAutoFar:
+ case QCamera::FocusModeAutoFar:
// not quite, but hey :)
Q_FALLTHROUGH();
- case QCameraFocus::HyperfocalFocus:
+ case QCamera::FocusModeHyperfocal:
photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL;
break;
- case QCameraFocus::FocusModeInfinity:
+ case QCamera::FocusModeInfinity:
photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY;
break;
- case QCameraFocus::FocusModeManual:
+ case QCamera::FocusModeManual:
photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_MANUAL;
break;
- default: // QCameraFocus::FocusModeAuto:
+ default: // QCamera::FocusModeAuto:
break;
}
@@ -112,7 +112,7 @@ void QGstreamerCameraFocus::setFocusMode(QCameraFocus::FocusMode mode)
#endif
}
-bool QGstreamerCameraFocus::isFocusModeSupported(QCameraFocus::FocusMode mode) const
+bool QGstreamerCameraFocus::isFocusModeSupported(QCamera::FocusMode mode) const
{
Q_UNUSED(mode);
diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus_p.h b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus_p.h
index d77f6ff51..e9dd069d5 100644
--- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus_p.h
+++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamerafocus_p.h
@@ -75,16 +75,16 @@ public:
QGstreamerCameraFocus(QGstreamerCamera *session);
virtual ~QGstreamerCameraFocus();
- QCameraFocus::FocusMode focusMode() const override;
- void setFocusMode(QCameraFocus::FocusMode mode) override;
- bool isFocusModeSupported(QCameraFocus::FocusMode mode) const override;
+ QCamera::FocusMode focusMode() const override;
+ void setFocusMode(QCamera::FocusMode mode) override;
+ bool isFocusModeSupported(QCamera::FocusMode mode) const override;
ZoomRange zoomFactorRange() const override;
void zoomTo(float newZoomFactor, float rate) override;
private:
QGstreamerCamera *m_camera;
- QCameraFocus::FocusMode m_focusMode;
+ QCamera::FocusMode m_focusMode;
float requestedZoomFactor = 1.;
float maxZoomFactor = 1.;
};
diff --git a/src/multimedia/platform/qnx/camera/bbcamerafocuscontrol.cpp b/src/multimedia/platform/qnx/camera/bbcamerafocuscontrol.cpp
index 2865a0363..20d2d540a 100644
--- a/src/multimedia/platform/qnx/camera/bbcamerafocuscontrol.cpp
+++ b/src/multimedia/platform/qnx/camera/bbcamerafocuscontrol.cpp
@@ -47,40 +47,40 @@ QT_BEGIN_NAMESPACE
BbCameraFocusControl::BbCameraFocusControl(BbCameraSession *session, QObject *parent)
: QPlatformCameraFocus(parent)
, m_session(session)
- , m_focusMode(QCameraFocus::FocusModeAuto)
+ , m_focusMode(QCamera::FocusModeAuto)
, m_customFocusPoint(QPointF(0, 0))
{
connect(m_session, SIGNAL(statusChanged(QCamera::Status)), this, SLOT(statusChanged(QCamera::Status)));
}
-QCameraFocus::FocusMode BbCameraFocusControl::focusMode() const
+QCamera::FocusMode BbCameraFocusControl::focusMode() const
{
camera_focusmode_t focusMode = CAMERA_FOCUSMODE_OFF;
const camera_error_t result = camera_get_focus_mode(m_session->handle(), &focusMode);
if (result != CAMERA_EOK) {
qWarning() << "Unable to retrieve focus mode from camera:" << result;
- return QCameraFocus::FocusModeAuto;
+ return QCamera::FocusModeAuto;
}
switch (focusMode) {
case CAMERA_FOCUSMODE_EDOF:
- return QCameraFocus::FocusModeHyperfocal;
+ return QCamera::FocusModeHyperfocal;
case CAMERA_FOCUSMODE_MANUAL:
- return QCameraFocus::FocusModeManual;
+ return QCamera::FocusModeManual;
case CAMERA_FOCUSMODE_CONTINUOUS_MACRO: // fall through
case CAMERA_FOCUSMODE_MACRO:
- return QCameraFocus::MacroFocus;
+ return QCamera::FocusModeAutoNear;
case CAMERA_FOCUSMODE_AUTO: // fall through
case CAMERA_FOCUSMODE_CONTINUOUS_AUTO:
- return QCameraFocus::FocusModeAuto;
+ return QCamera::FocusModeAuto;
case CAMERA_FOCUSMODE_OFF:
default:
- return QCameraFocus::FocusModeAuto;
+ return QCamera::FocusModeAuto;
}
}
-void BbCameraFocusControl::setFocusMode(QCameraFocus::FocusMode mode)
+void BbCameraFocusControl::setFocusMode(QCamera::FocusMode mode)
{
if (m_focusMode == mode)
return;
@@ -88,18 +88,18 @@ void BbCameraFocusControl::setFocusMode(QCameraFocus::FocusMode mode)
camera_focusmode_t focusMode = CAMERA_FOCUSMODE_OFF;
switch (mode) {
- case QCameraFocus::FocusModeHyperfocal:
- case QCameraFocus::FocusModeInfinity: // not 100%, but close
+ case QCamera::FocusModeHyperfocal:
+ case QCamera::FocusModeInfinity: // not 100%, but close
focusMode = CAMERA_FOCUSMODE_EDOF;
break;
- case QCameraFocus::FocusModeManual:
+ case QCamera::FocusModeManual:
focusMode = CAMERA_FOCUSMODE_MANUAL;
break;
- case QCameraFocus::FocusModeAutoNear:
+ case QCamera::FocusModeAutoNear:
focusMode = CAMERA_FOCUSMODE_MACRO;
break;
- case QCameraFocus::FocusModeAuto:
- case QCameraFocus::FocusModeAutoFar:
+ case QCamera::FocusModeAuto:
+ case QCamera::FocusModeAutoFar:
focusMode = CAMERA_FOCUSMODE_CONTINUOUS_AUTO;
break;
}
@@ -115,18 +115,18 @@ void BbCameraFocusControl::setFocusMode(QCameraFocus::FocusMode mode)
emit focusModeChanged(m_focusMode);
}
-bool BbCameraFocusControl::isFocusModeSupported(QCameraFocus::FocusMode mode) const
+bool BbCameraFocusControl::isFocusModeSupported(QCamera::FocusMode mode) const
{
if (m_session->state() == QCamera::UnloadedState)
return false;
- if (mode == QCameraFocus::FocusModeHyperfocal)
+ if (mode == QCamera::FocusModeHyperfocal)
return false; //TODO how to check?
- else if (mode == QCameraFocus::FocusModeManual)
+ else if (mode == QCamera::FocusModeManual)
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_MANUALFOCUS);
- else if (mode == QCameraFocus::FocusModeAuto)
+ else if (mode == QCamera::FocusModeAuto)
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOFOCUS);
- else if (mode == QCameraFocus::FocusModeAutoNear)
+ else if (mode == QCamera::FocusModeAutoNear)
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_MACROFOCUS);
return false;
diff --git a/src/multimedia/platform/qnx/camera/bbcamerafocuscontrol_p.h b/src/multimedia/platform/qnx/camera/bbcamerafocuscontrol_p.h
index 231ff9025..895701283 100644
--- a/src/multimedia/platform/qnx/camera/bbcamerafocuscontrol_p.h
+++ b/src/multimedia/platform/qnx/camera/bbcamerafocuscontrol_p.h
@@ -62,9 +62,9 @@ class BbCameraFocusControl : public QPlatformCameraFocus
public:
explicit BbCameraFocusControl(BbCameraSession *session, QObject *parent = 0);
- QCameraFocus::FocusMode focusMode() const override;
- void setFocusMode(QCameraFocus::FocusMode mode) override;
- bool isFocusModeSupported(QCameraFocus::FocusMode mode) const override;
+ QCamera::FocusMode focusMode() const override;
+ void setFocusMode(QCamera::FocusMode mode) override;
+ bool isFocusModeSupported(QCamera::FocusMode mode) const override;
QPointF focusPoint() const override;
void setCustomFocusPoint(const QPointF &point) override;
@@ -85,7 +85,7 @@ private:
BbCameraSession *m_session;
- QCameraFocus::FocusMode m_focusMode;
+ QCamera::FocusMode m_focusMode;
QPointF m_customFocusPoint;
qreal m_minimumZoomFactor;
diff --git a/src/multimedia/platform/qplatformcamerafocus.cpp b/src/multimedia/platform/qplatformcamerafocus.cpp
index 9e1c1edc1..174705d1e 100644
--- a/src/multimedia/platform/qplatformcamerafocus.cpp
+++ b/src/multimedia/platform/qplatformcamerafocus.cpp
@@ -65,21 +65,21 @@ QPlatformCameraFocus::QPlatformCameraFocus(QObject *parent)
}
/*!
- \fn QCameraFocus::FocusMode QPlatformCameraFocus::focusMode() const
+ \fn QCamera::FocusMode QPlatformCameraFocus::focusMode() const
Returns the focus mode being used.
*/
/*!
- \fn void QPlatformCameraFocus::setFocusMode(QCameraFocus::FocusMode mode)
+ \fn void QPlatformCameraFocus::setFocusMode(QCamera::FocusMode mode)
Set the focus mode to \a mode.
*/
/*!
- \fn bool QPlatformCameraFocus::isFocusModeSupported(QCameraFocus::FocusMode mode) const
+ \fn bool QPlatformCameraFocus::isFocusModeSupported(QCamera::FocusMode mode) const
Returns true if focus \a mode is supported.
*/
@@ -91,13 +91,13 @@ QPlatformCameraFocus::QPlatformCameraFocus(QObject *parent)
*/
/*!
- \fn QPlatformCameraFocus::setFocusPointMode(QCameraFocus::FocusPointMode mode)
+ \fn QPlatformCameraFocus::setFocusPointMode(QCamera::FocusPointMode mode)
Sets the camera focus point selection \a mode.
*/
/*!
- \fn QPlatformCameraFocus::isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const
+ \fn QPlatformCameraFocus::isFocusPointModeSupported(QCamera::FocusPointMode mode) const
Returns true if the camera focus point \a mode is supported.
*/
@@ -120,7 +120,7 @@ QPlatformCameraFocus::QPlatformCameraFocus(QObject *parent)
*/
/*!
- \fn void QPlatformCameraFocus::focusModeChanged(QCameraFocus::FocusMode mode)
+ \fn void QPlatformCameraFocus::focusModeChanged(QCamera::FocusMode mode)
Signal is emitted when the focus \a mode is changed,
usually in result of QPlatformCameraFocus::setFocusMode call or capture mode changes.
@@ -129,7 +129,7 @@ QPlatformCameraFocus::QPlatformCameraFocus(QObject *parent)
*/
/*!
- \fn void QPlatformCameraFocus::focusPointModeChanged(QCameraFocus::FocusPointMode mode)
+ \fn void QPlatformCameraFocus::focusPointModeChanged(QCamera::FocusPointMode mode)
Signal is emitted when the focus point \a mode is changed,
usually in result of QPlatformCameraFocus::setFocusPointMode call or capture mode changes.
diff --git a/src/multimedia/platform/qplatformcamerafocus_p.h b/src/multimedia/platform/qplatformcamerafocus_p.h
index 7813e087e..f6eb88f71 100644
--- a/src/multimedia/platform/qplatformcamerafocus_p.h
+++ b/src/multimedia/platform/qplatformcamerafocus_p.h
@@ -54,7 +54,7 @@
#include <QtCore/qobject.h>
#include <QtMultimedia/qtmultimediaglobal.h>
-#include <QtMultimedia/qcamerafocus.h>
+#include <QtMultimedia/qcamera.h>
QT_BEGIN_NAMESPACE
@@ -66,9 +66,9 @@ class Q_MULTIMEDIA_EXPORT QPlatformCameraFocus : public QObject
Q_OBJECT
public:
- virtual QCameraFocus::FocusMode focusMode() const = 0;
- virtual void setFocusMode(QCameraFocus::FocusMode mode) = 0;
- virtual bool isFocusModeSupported(QCameraFocus::FocusMode mode) const = 0;
+ virtual QCamera::FocusMode focusMode() const = 0;
+ virtual void setFocusMode(QCamera::FocusMode mode) = 0;
+ virtual bool isFocusModeSupported(QCamera::FocusMode mode) const = 0;
virtual bool isCustomFocusPointSupported() const { return false; }
virtual void setCustomFocusPoint(const QPointF &/*point*/) {}
@@ -87,7 +87,7 @@ public:
virtual void zoomTo(float newZoomFactor, float rate = -1.) = 0;
Q_SIGNALS:
- void focusModeChanged(QCameraFocus::FocusMode mode);
+ void focusModeChanged(QCamera::FocusMode mode);
void customFocusPointChanged(const QPointF &point);
void minimumZoomFactorChanged(float);
void maximumZoomFactorChanged(float);
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowscamerafocus.cpp b/src/multimedia/platform/windows/mediacapture/qwindowscamerafocus.cpp
index 2ecebe031..eecda095e 100644
--- a/src/multimedia/platform/windows/mediacapture/qwindowscamerafocus.cpp
+++ b/src/multimedia/platform/windows/mediacapture/qwindowscamerafocus.cpp
@@ -50,16 +50,16 @@ QWindowsCameraFocus::QWindowsCameraFocus(QWindowsCameraSession *session)
Q_ASSERT(m_session);
}
-QCameraFocus::FocusMode QWindowsCameraFocus::focusMode() const
+QCamera::FocusMode QWindowsCameraFocus::focusMode() const
{
- return QCameraFocus::AutoFocus;
+ return QCamera::FocusModeAuto;
}
-void QWindowsCameraFocus::setFocusMode(QCameraFocus::FocusMode mode)
+void QWindowsCameraFocus::setFocusMode(QCamera::FocusMode mode)
{
}
-bool QWindowsCameraFocus::isFocusModeSupported(QCameraFocus::FocusMode mode) const
+bool QWindowsCameraFocus::isFocusModeSupported(QCamera::FocusMode mode) const
{
return false;
}
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowscamerafocus_p.h b/src/multimedia/platform/windows/mediacapture/qwindowscamerafocus_p.h
index 5de905d3e..cb91e21a3 100644
--- a/src/multimedia/platform/windows/mediacapture/qwindowscamerafocus_p.h
+++ b/src/multimedia/platform/windows/mediacapture/qwindowscamerafocus_p.h
@@ -63,9 +63,9 @@ class QWindowsCameraFocus : public QPlatformCameraFocus
public:
explicit QWindowsCameraFocus(QWindowsCameraSession *session);
- QCameraFocus::FocusMode focusMode() const override;
- void setFocusMode(QCameraFocus::FocusMode mode) override;
- bool isFocusModeSupported(QCameraFocus::FocusMode mode) const override;
+ QCamera::FocusMode focusMode() const override;
+ void setFocusMode(QCamera::FocusMode mode) override;
+ bool isFocusModeSupported(QCamera::FocusMode mode) const override;
bool isCustomFocusPointSupported() const override;
QPointF focusPoint() const override;
diff --git a/src/multimediaquick/camerafocus.qdoc b/src/multimediaquick/camerafocus.qdoc
index ea827ab58..00177ec61 100644
--- a/src/multimediaquick/camerafocus.qdoc
+++ b/src/multimediaquick/camerafocus.qdoc
@@ -144,7 +144,7 @@ QT_BEGIN_NAMESPACE
frame coordinates. For example, QPointF(0,0) pointing to the left top corner of the frame, and QPointF(0.5,0.5)
pointing to the center of the frame.
- Custom focus point is used only in QCameraFocus::FocusPointCustom focus mode.
+ Custom focus point is used only in QCamera::FocusPointCustom focus mode.
*/
/*!
diff --git a/src/multimediaquick/qtmultimediaquicktypes_p.h b/src/multimediaquick/qtmultimediaquicktypes_p.h
index 4ef94fe64..91f355db0 100644
--- a/src/multimediaquick/qtmultimediaquicktypes_p.h
+++ b/src/multimediaquick/qtmultimediaquicktypes_p.h
@@ -85,14 +85,6 @@ struct QCameraForeign
QML_NAMED_ELEMENT(Camera)
};
-struct QCameraFocusForeign
-{
- Q_GADGET
- QML_FOREIGN(QCameraFocus)
- QML_UNCREATABLE("CameraFocus is provided by Camera")
- QML_NAMED_ELEMENT(CameraFocus)
-};
-
struct QCameraImageProcessingForeign
{
Q_GADGET