diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-02-26 12:43:04 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-03-16 07:35:45 +0000 |
commit | 95dcadf5de41d5b2f385c5bdf547ee673fe83dff (patch) | |
tree | 692fd29a5fa4749a312d39cda02d81b06355abe6 /src/imports | |
parent | f610426bf5d12f83a64ffed3b991d3c7e228b2be (diff) |
Get rid of focus zones
This wasn't ever really supported on any platform (Android got
closest...). Instead keep a simpler API with a single point of
interest for focus handling that can be implemented on most
backends.
Change-Id: I3fb24d04a809c71780b13865bac228d41d0abddc
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/multimedia/plugins.qmltypes | 9 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamera_p.h | 7 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamerafocus.cpp | 117 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamerafocus_p.h | 30 |
4 files changed, 2 insertions, 161 deletions
diff --git a/src/imports/multimedia/plugins.qmltypes b/src/imports/multimedia/plugins.qmltypes index 96534656c..51fa76499 100644 --- a/src/imports/multimedia/plugins.qmltypes +++ b/src/imports/multimedia/plugins.qmltypes @@ -616,14 +616,6 @@ Module { } } Enum { - name: "FocusAreaStatus" - values: { - "FocusAreaUnused": 1, - "FocusAreaSelected": 2, - "FocusAreaFocused": 3 - } - } - Enum { name: "Availability" values: { "Available": 0, @@ -980,7 +972,6 @@ Module { Property { name: "focusPointMode"; type: "FocusPointMode" } Property { name: "supportedFocusPointModes"; revision: 1; type: "QVariantList"; isReadonly: true } Property { name: "customFocusPoint"; type: "QPointF" } - Property { name: "focusZones"; type: "QObject"; isReadonly: true; isPointer: true } Signal { name: "focusModeChanged" Parameter { type: "FocusMode" } diff --git a/src/imports/multimedia/qdeclarativecamera_p.h b/src/imports/multimedia/qdeclarativecamera_p.h index 4db93f13f..34c810adc 100644 --- a/src/imports/multimedia/qdeclarativecamera_p.h +++ b/src/imports/multimedia/qdeclarativecamera_p.h @@ -111,7 +111,6 @@ class QDeclarativeCamera : public QObject, public QQmlParserStatus Q_ENUMS(FocusMode) Q_ENUMS(FocusPointMode) - Q_ENUMS(FocusAreaStatus) public: enum Position { @@ -187,12 +186,6 @@ public: FocusPointCustom = QCameraFocus::FocusPointCustom }; - enum FocusAreaStatus { - FocusAreaUnused = QCameraFocusZone::Unused, - FocusAreaSelected = QCameraFocusZone::Selected, - FocusAreaFocused = QCameraFocusZone::Focused - }; - QDeclarativeCamera(QObject *parent = 0); ~QDeclarativeCamera(); diff --git a/src/imports/multimedia/qdeclarativecamerafocus.cpp b/src/imports/multimedia/qdeclarativecamerafocus.cpp index 5e1d5ee6e..11e106078 100644 --- a/src/imports/multimedia/qdeclarativecamerafocus.cpp +++ b/src/imports/multimedia/qdeclarativecamerafocus.cpp @@ -96,11 +96,7 @@ QDeclarativeCameraFocus::QDeclarativeCameraFocus(QCamera *camera, QObject *paren QObject(parent) { m_focus = camera->focus(); - m_focusZones = new FocusZonesModel(this); - updateFocusZones(); - - connect(m_focus, SIGNAL(focusZonesChanged()), SLOT(updateFocusZones())); connect(camera, &QCamera::statusChanged, [this](QCamera::Status status) { if (status != QCamera::UnloadedStatus && status != QCamera::LoadedStatus && status != QCamera::ActiveStatus) { @@ -122,7 +118,7 @@ QDeclarativeCameraFocus::~QDeclarativeCameraFocus() = default; for example QCameraFocus::MacroFocus + QCameraFocus::ContinuousFocus. In automatic focusing modes, the \l focusPointMode - and \l focusZones properties provide information and control + property provides information and control over how automatic focusing is performed. */ @@ -159,7 +155,7 @@ QDeclarativeCameraFocus::~QDeclarativeCameraFocus() = default; for example Camera.FocusMacro + Camera.FocusContinuous. In automatic focusing modes, the \l focusPointMode property - and \l focusZones property provide information and control + provides information and control over how automatic focusing is performed. */ QDeclarativeCameraFocus::FocusMode QDeclarativeCameraFocus::focusMode() const @@ -296,115 +292,6 @@ void QDeclarativeCameraFocus::setCustomFocusPoint(const QPointF &point) emit customFocusPointChanged(customFocusPoint()); } } -/*! - \property QDeclarativeCameraFocus::focusZones - - This property holds the list of current camera focus zones, - each including \c area specified in the same coordinates as \l customFocusPoint, and zone \c status as one of the following values: - \table - \header \li Value \li Description - \row \li QCameraFocusZone::Unused \li This focus point area is currently unused in autofocusing. - \row \li QCameraFocusZone::Selected \li This focus point area is used in autofocusing, but is not in focus. - \row \li QCameraFocusZone::Focused \li This focus point is used in autofocusing, and is in focus. - \endtable -*/ -/*! - \qmlproperty list<focusZone> QtMultimedia::CameraFocus::focusZones - - This property holds the list of current camera focus zones, - each including \c area specified in the same coordinates as \l customFocusPoint, - and zone \c status as one of the following values: - - \table - \header \li Value \li Description - \row \li Camera.FocusAreaUnused \li This focus point area is currently unused in autofocusing. - \row \li Camera.FocusAreaSelected \li This focus point area is used in autofocusing, but is not in focus. - \row \li Camera.FocusAreaFocused \li This focus point is used in autofocusing, and is in focus. - \endtable - - \qml - - VideoOutput { - id: viewfinder - source: camera - - //display focus areas on camera viewfinder: - Repeater { - model: camera.focus.focusZones - - Rectangle { - border { - width: 2 - color: status == Camera.FocusAreaFocused ? "green" : "white" - } - color: "transparent" - - // Map from the relative, normalized frame coordinates - property variant mappedRect: viewfinder.mapNormalizedRectToItem(area); - - x: mappedRect.x - y: mappedRect.y - width: mappedRect.width - height: mappedRect.height - } - } - } - \endqml -*/ - -QAbstractListModel *QDeclarativeCameraFocus::focusZones() const -{ - return m_focusZones; -} - -/*! \internal */ -void QDeclarativeCameraFocus::updateFocusZones() -{ - m_focusZones->setFocusZones(m_focus->focusZones()); -} - - -FocusZonesModel::FocusZonesModel(QObject *parent) - :QAbstractListModel(parent) -{ -} - -int FocusZonesModel::rowCount(const QModelIndex &parent) const -{ - if (parent == QModelIndex()) - return m_focusZones.count(); - - return 0; -} - -QVariant FocusZonesModel::data(const QModelIndex &index, int role) const -{ - if (index.row() < 0 || index.row() > m_focusZones.count()) - return QVariant(); - - QCameraFocusZone zone = m_focusZones.value(index.row()); - - if (role == StatusRole) - return zone.status(); - - if (role == AreaRole) - return zone.area(); - - return QVariant(); -} - -QHash<int,QByteArray> FocusZonesModel::roleNames() const -{ - return {{StatusRole, QByteArrayLiteral("status")}, - {AreaRole, QByteArrayLiteral("area")}}; -} - -void FocusZonesModel::setFocusZones(const QCameraFocusZoneList &zones) -{ - beginResetModel(); - m_focusZones = zones; - endResetModel(); -} QT_END_NAMESPACE diff --git a/src/imports/multimedia/qdeclarativecamerafocus_p.h b/src/imports/multimedia/qdeclarativecamerafocus_p.h index df2514f13..4d0d13ef8 100644 --- a/src/imports/multimedia/qdeclarativecamerafocus_p.h +++ b/src/imports/multimedia/qdeclarativecamerafocus_p.h @@ -58,7 +58,6 @@ QT_BEGIN_NAMESPACE -class FocusZonesModel; class QDeclarativeCamera; class QDeclarativeCameraFocus : public QObject @@ -72,7 +71,6 @@ class QDeclarativeCameraFocus : public QObject Q_PROPERTY(QVariantList supportedFocusPointModes READ supportedFocusPointModes NOTIFY supportedFocusPointModesChanged REVISION 1) Q_PROPERTY(QPointF customFocusPoint READ customFocusPoint WRITE setCustomFocusPoint NOTIFY customFocusPointChanged) - Q_PROPERTY(QObject *focusZones READ focusZones CONSTANT) Q_ENUMS(FocusMode) Q_ENUMS(FocusPointMode) @@ -102,7 +100,6 @@ public: QVariantList supportedFocusPointModes() const; QPointF customFocusPoint() const; - QAbstractListModel *focusZones() const; public Q_SLOTS: void setFocusMode(FocusMode); @@ -116,40 +113,13 @@ Q_SIGNALS: void supportedFocusPointModesChanged(); void customFocusPointChanged(const QPointF &); -private Q_SLOTS: - void updateFocusZones(); - private: friend class QDeclarativeCamera; QDeclarativeCameraFocus(QCamera *camera, QObject *parent = 0); QCameraFocus *m_focus; - FocusZonesModel *m_focusZones; -}; - -class FocusZonesModel : public QAbstractListModel -{ -Q_OBJECT -public: - enum FocusZoneRoles { - StatusRole = Qt::UserRole + 1, - AreaRole - }; - - FocusZonesModel(QObject *parent = 0); - - int rowCount(const QModelIndex &parent = QModelIndex()) const override; - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - QHash<int,QByteArray> roleNames() const override; - -public slots: - void setFocusZones(const QCameraFocusZoneList &zones); - -private: - QCameraFocusZoneList m_focusZones; }; - QT_END_NAMESPACE QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeCameraFocus)) |