diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-02-26 14:30:12 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-03-16 07:37:45 +0000 |
commit | f202890086fa32222877a8f9f48ae570174bd385 (patch) | |
tree | b0b913bdea52fd80f22b827626f958e40492c688 /src/imports | |
parent | 95dcadf5de41d5b2f385c5bdf547ee673fe83dff (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.qmltypes | 32 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamera_p.h | 20 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamerafocus.cpp | 39 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamerafocus_p.h | 26 |
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 &); |