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/multimedia/qdeclarativecamerafocus.cpp | |
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/multimedia/qdeclarativecamerafocus.cpp')
-rw-r--r-- | src/imports/multimedia/qdeclarativecamerafocus.cpp | 117 |
1 files changed, 2 insertions, 115 deletions
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 |