summaryrefslogtreecommitdiffstats
path: root/src/multimedia/camera/qcamera.h
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/multimedia/camera/qcamera.h
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/multimedia/camera/qcamera.h')
-rw-r--r--src/multimedia/camera/qcamera.h48
1 files changed, 45 insertions, 3 deletions
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;