summaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-02-26 14:30:12 +0100
committerLars Knoll <lars.knoll@qt.io>2021-03-16 07:37:45 +0000
commitf202890086fa32222877a8f9f48ae570174bd385 (patch)
treeb0b913bdea52fd80f22b827626f958e40492c688 /src/imports
parent95dcadf5de41d5b2f385c5bdf547ee673fe83dff (diff)
Clean up focus modes and add manual focus control
Clean up the FocusMode enum and adjust it to what we can support on Apple platforms and Android. Add a focusDistance property to manually set the focus distance. Change-Id: Idddaed006935277a167cec12a91c57f3dc6df6fb Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/multimedia/plugins.qmltypes32
-rw-r--r--src/imports/multimedia/qdeclarativecamera_p.h20
-rw-r--r--src/imports/multimedia/qdeclarativecamerafocus.cpp39
-rw-r--r--src/imports/multimedia/qdeclarativecamerafocus_p.h26
4 files changed, 70 insertions, 47 deletions
diff --git a/src/imports/multimedia/plugins.qmltypes b/src/imports/multimedia/plugins.qmltypes
index 51fa76499..c19995431 100644
--- a/src/imports/multimedia/plugins.qmltypes
+++ b/src/imports/multimedia/plugins.qmltypes
@@ -598,12 +598,18 @@ Module {
Enum {
name: "FocusMode"
values: {
- "FocusManual": 1,
- "FocusHyperfocal": 2,
+ "FocusModeAuto": 0,
+ "FocusModeAutoNear": 1,
+ "FocusModeAutoFar": 2,
+ "FocusModeHyperfocal": 3,
+ "FocusModeInfinity": 4,
+ "FocusModeManual": 5,
+ "FocusContinuous": 0,
+ "FocusAuto": 0,
+ "FocusMacro": 1,
+ "FocusHyperfocal": 3,
"FocusInfinity": 4,
- "FocusAuto": 8,
- "FocusContinuous": 16,
- "FocusMacro": 32
+ "FocusManual": 5
}
}
Enum {
@@ -950,12 +956,18 @@ Module {
Enum {
name: "FocusMode"
values: {
- "FocusManual": 1,
- "FocusHyperfocal": 2,
+ "FocusModeAuto": 0,
+ "FocusModeAutoNear": 1,
+ "FocusModeAutoFar": 2,
+ "FocusModeHyperfocal": 3,
+ "FocusModeInfinity": 4,
+ "FocusModeManual": 5,
+ "FocusContinuous": 0,
+ "FocusAuto": 0,
+ "FocusMacro": 1,
+ "FocusHyperfocal": 3,
"FocusInfinity": 4,
- "FocusAuto": 8,
- "FocusContinuous": 16,
- "FocusMacro": 32
+ "FocusManual": 5
}
}
Enum {
diff --git a/src/imports/multimedia/qdeclarativecamera_p.h b/src/imports/multimedia/qdeclarativecamera_p.h
index 34c810adc..1c2da5384 100644
--- a/src/imports/multimedia/qdeclarativecamera_p.h
+++ b/src/imports/multimedia/qdeclarativecamera_p.h
@@ -171,12 +171,20 @@ public:
};
enum FocusMode {
- FocusManual = QCameraFocus::ManualFocus,
- FocusHyperfocal = QCameraFocus::HyperfocalFocus,
- FocusInfinity = QCameraFocus::InfinityFocus,
- FocusAuto = QCameraFocus::AutoFocus,
- FocusContinuous = QCameraFocus::ContinuousFocus,
- FocusMacro = QCameraFocus::MacroFocus
+ FocusModeAuto = QCameraFocus::FocusModeAuto,
+ FocusModeAutoNear = QCameraFocus::FocusModeAutoNear,
+ FocusModeAutoFar = QCameraFocus::FocusModeAutoFar,
+ FocusModeHyperfocal = QCameraFocus::FocusModeHyperfocal,
+ FocusModeInfinity = QCameraFocus::FocusModeInfinity,
+ FocusModeManual = QCameraFocus::FocusModeManual
+#if 1 // QT_DEPRECATED
+ , FocusContinuous = FocusModeAuto,
+ FocusAuto = FocusModeAuto,
+ FocusMacro = FocusModeAutoNear,
+ FocusHyperfocal = FocusModeHyperfocal,
+ FocusInfinity = FocusModeInfinity,
+ FocusManual = FocusModeManual
+#endif
};
enum FocusPointMode {
diff --git a/src/imports/multimedia/qdeclarativecamerafocus.cpp b/src/imports/multimedia/qdeclarativecamerafocus.cpp
index 11e106078..02d4995be 100644
--- a/src/imports/multimedia/qdeclarativecamerafocus.cpp
+++ b/src/imports/multimedia/qdeclarativecamerafocus.cpp
@@ -103,7 +103,7 @@ QDeclarativeCameraFocus::QDeclarativeCameraFocus(QCamera *camera, QObject *paren
return;
}
- emit supportedFocusModesChanged();
+ emit supportedFocusModeChanged();
emit supportedFocusPointModesChanged();
});
}
@@ -114,9 +114,6 @@ QDeclarativeCameraFocus::~QDeclarativeCameraFocus() = default;
This property holds the current camera focus mode.
- It's possible to combine multiple QCameraFocus::FocusMode enum values,
- for example QCameraFocus::MacroFocus + QCameraFocus::ContinuousFocus.
-
In automatic focusing modes, the \l focusPointMode
property provides information and control
over how automatic focusing is performed.
@@ -132,28 +129,26 @@ QDeclarativeCameraFocus::~QDeclarativeCameraFocus() = default;
\li Value
\li Description
\row
- \li FocusManual
- \li Manual or fixed focus mode.
+ \li FocusModeAuto
+ \li Continuous auto focus mode.
\row
- \li FocusHyperfocal
- \li 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.
+ \li FocusModeAutoNear
+ \li Continuous auto focus, preferring objects near to the camera.
\row
- \li FocusInfinity
- \li Focus strictly to infinity.
+ \li FocusModeAutoFar
+ \li Continuous auto focus, preferring objects far away from the camera.
\row
- \li FocusAuto
- \li One-shot auto focus mode.
+ \li FocusModeHyperfocal
+ \li 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.
\row
- \li FocusContinuous
- \li Continuous auto focus mode.
+ \li FocusModeInfinity
+ \li Focus strictly to infinity.
\row
- \li FocusMacro
- \li One shot auto focus to objects close to camera.
+ \li FocusModeManual
+ \li Manual or fixed focus mode.
\endtable
- It's possible to combine multiple Camera::FocusMode values,
- for example Camera.FocusMacro + Camera.FocusContinuous.
-
In automatic focusing modes, the \l focusPointMode property
provides information and control
over how automatic focusing is performed.
@@ -164,14 +159,14 @@ QDeclarativeCameraFocus::FocusMode QDeclarativeCameraFocus::focusMode() const
}
/*!
- \qmlproperty list<FocusMode> CameraFocus::supportedFocusModes
+ \qmlproperty list<FocusMode> CameraFocus::supportedFocusMode
This property holds the supported focus modes of the camera.
\since 5.11
\sa focusMode
*/
-QVariantList QDeclarativeCameraFocus::supportedFocusModes() const
+QVariantList QDeclarativeCameraFocus::supportedFocusMode() const
{
QVariantList supportedModes;
@@ -186,7 +181,7 @@ QVariantList QDeclarativeCameraFocus::supportedFocusModes() const
void QDeclarativeCameraFocus::setFocusMode(QDeclarativeCameraFocus::FocusMode mode)
{
if (mode != focusMode()) {
- m_focus->setFocusMode(QCameraFocus::FocusModes(int(mode)));
+ m_focus->setFocusMode(QCameraFocus::FocusMode(int(mode)));
emit focusModeChanged(focusMode());
}
}
diff --git a/src/imports/multimedia/qdeclarativecamerafocus_p.h b/src/imports/multimedia/qdeclarativecamerafocus_p.h
index 4d0d13ef8..c9919e332 100644
--- a/src/imports/multimedia/qdeclarativecamerafocus_p.h
+++ b/src/imports/multimedia/qdeclarativecamerafocus_p.h
@@ -65,7 +65,7 @@ class QDeclarativeCameraFocus : public QObject
Q_OBJECT
Q_PROPERTY(FocusMode focusMode READ focusMode WRITE setFocusMode NOTIFY focusModeChanged)
- Q_PROPERTY(QVariantList supportedFocusModes READ supportedFocusModes NOTIFY supportedFocusModesChanged REVISION 1)
+ Q_PROPERTY(QVariantList supportedFocusMode READ supportedFocusMode NOTIFY supportedFocusModeChanged REVISION 1)
Q_PROPERTY(FocusPointMode focusPointMode READ focusPointMode WRITE setFocusPointMode NOTIFY focusPointModeChanged)
Q_PROPERTY(QVariantList supportedFocusPointModes READ supportedFocusPointModes NOTIFY supportedFocusPointModesChanged REVISION 1)
@@ -76,12 +76,20 @@ class QDeclarativeCameraFocus : public QObject
Q_ENUMS(FocusPointMode)
public:
enum FocusMode {
- FocusManual = QCameraFocus::ManualFocus,
- FocusHyperfocal = QCameraFocus::HyperfocalFocus,
- FocusInfinity = QCameraFocus::InfinityFocus,
- FocusAuto = QCameraFocus::AutoFocus,
- FocusContinuous = QCameraFocus::ContinuousFocus,
- FocusMacro = QCameraFocus::MacroFocus
+ FocusModeAuto = QCameraFocus::FocusModeAuto,
+ FocusModeAutoNear = QCameraFocus::FocusModeAutoNear,
+ FocusModeAutoFar = QCameraFocus::FocusModeAutoFar,
+ FocusModeHyperfocal = QCameraFocus::FocusModeHyperfocal,
+ FocusModeInfinity = QCameraFocus::FocusModeInfinity,
+ FocusModeManual = QCameraFocus::FocusModeManual
+#if 1 // QT_DEPRECATED
+ , FocusContinuous = FocusModeAuto,
+ FocusAuto = FocusModeAuto,
+ FocusMacro = FocusModeAutoNear,
+ FocusHyperfocal = FocusModeHyperfocal,
+ FocusInfinity = FocusModeInfinity,
+ FocusManual = FocusModeManual
+#endif
};
enum FocusPointMode {
@@ -94,7 +102,7 @@ public:
~QDeclarativeCameraFocus();
FocusMode focusMode() const;
- QVariantList supportedFocusModes() const;
+ QVariantList supportedFocusMode() const;
FocusPointMode focusPointMode() const;
QVariantList supportedFocusPointModes() const;
@@ -108,7 +116,7 @@ public Q_SLOTS:
Q_SIGNALS:
void focusModeChanged(FocusMode);
- void supportedFocusModesChanged();
+ void supportedFocusModeChanged();
void focusPointModeChanged(FocusPointMode);
void supportedFocusPointModesChanged();
void customFocusPointChanged(const QPointF &);