diff options
Diffstat (limited to 'src/quick/handlers/qquickpinchhandler_p.h')
-rw-r--r-- | src/quick/handlers/qquickpinchhandler_p.h | 148 |
1 files changed, 68 insertions, 80 deletions
diff --git a/src/quick/handlers/qquickpinchhandler_p.h b/src/quick/handlers/qquickpinchhandler_p.h index 8099982d46..114ae9642a 100644 --- a/src/quick/handlers/qquickpinchhandler_p.h +++ b/src/quick/handlers/qquickpinchhandler_p.h @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtQuick module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QQUICKPINCHHANDLER_H #define QQUICKPINCHHANDLER_H @@ -51,59 +15,97 @@ // We mean it. // -#include "qquickitem.h" -#include "qevent.h" +#include <QtGui/qevent.h> +#include <QtQuick/qquickitem.h> + #include "qquickmultipointhandler_p.h" #include <private/qquicktranslate_p.h> #include "qquickdragaxis_p.h" QT_BEGIN_NAMESPACE -class Q_QUICK_PRIVATE_EXPORT QQuickPinchHandler : public QQuickMultiPointHandler +using namespace Qt::StringLiterals; + +class Q_QUICK_EXPORT QQuickPinchHandler : public QQuickMultiPointHandler { Q_OBJECT + + Q_PROPERTY(QQuickDragAxis *scaleAxis READ scaleAxis CONSTANT) +#if QT_DEPRECATED_SINCE(6, 5) Q_PROPERTY(qreal minimumScale READ minimumScale WRITE setMinimumScale NOTIFY minimumScaleChanged) Q_PROPERTY(qreal maximumScale READ maximumScale WRITE setMaximumScale NOTIFY maximumScaleChanged) + Q_PROPERTY(qreal scale READ scale NOTIFY updated) +#endif + Q_PROPERTY(qreal activeScale READ activeScale NOTIFY scaleChanged) + Q_PROPERTY(qreal persistentScale READ persistentScale WRITE setPersistentScale NOTIFY scaleChanged) + + Q_PROPERTY(QQuickDragAxis *rotationAxis READ rotationAxis CONSTANT) +#if QT_DEPRECATED_SINCE(6, 5) Q_PROPERTY(qreal minimumRotation READ minimumRotation WRITE setMinimumRotation NOTIFY minimumRotationChanged) Q_PROPERTY(qreal maximumRotation READ maximumRotation WRITE setMaximumRotation NOTIFY maximumRotationChanged) - Q_PROPERTY(qreal scale READ scale NOTIFY updated) - Q_PROPERTY(qreal activeScale READ activeScale NOTIFY updated) Q_PROPERTY(qreal rotation READ rotation NOTIFY updated) - Q_PROPERTY(QVector2D translation READ translation NOTIFY updated) +#endif + Q_PROPERTY(qreal activeRotation READ activeRotation NOTIFY rotationChanged) + Q_PROPERTY(qreal persistentRotation READ persistentRotation WRITE setPersistentRotation NOTIFY rotationChanged) + Q_PROPERTY(QQuickDragAxis * xAxis READ xAxis CONSTANT) Q_PROPERTY(QQuickDragAxis * yAxis READ yAxis CONSTANT) +#if QT_DEPRECATED_SINCE(6, 5) + Q_PROPERTY(QVector2D translation READ translation NOTIFY updated) +#endif + Q_PROPERTY(QPointF activeTranslation READ activeTranslation NOTIFY translationChanged REVISION(6, 5)) + Q_PROPERTY(QPointF persistentTranslation READ persistentTranslation WRITE setPersistentTranslation NOTIFY translationChanged REVISION(6, 5)) + QML_NAMED_ELEMENT(PinchHandler) QML_ADDED_IN_VERSION(2, 12) public: explicit QQuickPinchHandler(QQuickItem *parent = nullptr); - qreal minimumScale() const { return m_minimumScale; } + QQuickDragAxis *xAxis() { return &m_xAxis; } + QQuickDragAxis *yAxis() { return &m_yAxis; } +#if QT_DEPRECATED_SINCE(6, 5) + QVector2D translation() const { return QVector2D(activeTranslation()); } +#endif + QPointF activeTranslation() const { return QPointF(m_xAxis.activeValue(), m_yAxis.activeValue()); } + QPointF persistentTranslation() const { return QPointF(m_xAxis.persistentValue(), m_yAxis.persistentValue()); } + void setPersistentTranslation(const QPointF &trans); + + QQuickDragAxis *scaleAxis() { return &m_scaleAxis; } +#if QT_DEPRECATED_SINCE(6, 5) + qreal minimumScale() const { return m_scaleAxis.minimum(); } void setMinimumScale(qreal minimumScale); - - qreal maximumScale() const { return m_maximumScale; } + qreal maximumScale() const { return m_scaleAxis.maximum(); } void setMaximumScale(qreal maximumScale); - - qreal minimumRotation() const { return m_minimumRotation; } + qreal scale() const { return persistentScale(); } +#endif + qreal activeScale() const { return m_scaleAxis.activeValue(); } + void setActiveScale(qreal scale); + qreal persistentScale() const { return m_scaleAxis.persistentValue(); } + void setPersistentScale(qreal scale); + + QQuickDragAxis *rotationAxis() { return &m_rotationAxis; } +#if QT_DEPRECATED_SINCE(6, 5) + qreal minimumRotation() const { return m_rotationAxis.minimum(); } void setMinimumRotation(qreal minimumRotation); - - qreal maximumRotation() const { return m_maximumRotation; } + qreal maximumRotation() const { return m_rotationAxis.maximum(); } void setMaximumRotation(qreal maximumRotation); - - QVector2D translation() const { return m_activeTranslation; } - qreal scale() const { return m_accumulatedScale; } - qreal activeScale() const { return m_activeScale; } - qreal rotation() const { return m_activeRotation; } - - QQuickDragAxis *xAxis() { return &m_xAxis; } - QQuickDragAxis *yAxis() { return &m_yAxis; } - -signals: + qreal rotation() const { return activeRotation(); } +#endif + qreal activeRotation() const { return m_rotationAxis.activeValue(); } + void setActiveRotation(qreal rot); + qreal persistentRotation() const { return m_rotationAxis.persistentValue(); } + void setPersistentRotation(qreal rot); + +Q_SIGNALS: void minimumScaleChanged(); void maximumScaleChanged(); void minimumRotationChanged(); void maximumRotationChanged(); void updated(); + void scaleChanged(qreal delta); + void rotationChanged(qreal delta); + void translationChanged(QVector2D delta); protected: bool wantsPointerEvent(QPointerEvent *event) override; @@ -111,33 +113,19 @@ protected: void handlePointerEventImpl(QPointerEvent *event) override; private: - // properties - qreal m_activeScale = 1; - qreal m_accumulatedScale = 1; - qreal m_activeRotation = 0; - QVector2D m_activeTranslation = QVector2D(0, 0); - - qreal m_minimumScale = -qInf(); - qreal m_maximumScale = qInf(); - - qreal m_minimumRotation = -qInf(); - qreal m_maximumRotation = qInf(); - - QQuickDragAxis m_xAxis; - QQuickDragAxis m_yAxis; + QQuickDragAxis m_xAxis = {this, u"x"_s}; + QQuickDragAxis m_yAxis = {this, u"y"_s}; + QQuickDragAxis m_scaleAxis = {this, u"scale"_s, 1}; + QQuickDragAxis m_rotationAxis = {this, u"rotation"_s}; // internal - qreal m_startScale = 1; - qreal m_startRotation = 0; qreal m_startDistance = 0; - QPointF m_startPos; qreal m_accumulatedStartCentroidDistance = 0; + QPointF m_startTargetPos; QVector<PointData> m_startAngles; QQuickMatrix4x4 m_transform; }; QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickPinchHandler) - #endif // QQUICKPINCHHANDLER_H |