File indexing completed on 2024-05-05 03:50:39

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2014 Calin Cruceru <crucerucalincristian@gmail.com>
0004 //
0005 
0006 #ifndef MERGINGPOLYLINENODESANIMATION_H
0007 #define MERGINGPOLYLINENODESANIMATION_H
0008 
0009 #include <QObject>
0010 #include <QTimer>
0011 
0012 #include "GeoDataCoordinates.h"
0013 
0014 
0015 namespace Marble
0016 {
0017 
0018 class PolylineAnnotation;
0019 class GeoDataLineString;
0020 
0021 class MergingPolylineNodesAnimation : public QObject
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     explicit MergingPolylineNodesAnimation( PolylineAnnotation *polyline );
0027     ~MergingPolylineNodesAnimation() override;
0028 
0029 public Q_SLOTS:
0030     void startAnimation();
0031 
0032 Q_SIGNALS:
0033     void nodesMoved();
0034     void animationFinished();
0035 
0036 private Q_SLOTS:
0037     void updateNodes();
0038 
0039 private:
0040     qreal nodesDistance();
0041     GeoDataCoordinates newCoords();
0042 
0043     QTimer *m_timer;
0044 
0045     const int m_firstNodeIndex;
0046     const int m_secondNodeIndex;
0047 
0048     GeoDataLineString *m_lineString;
0049 
0050     const GeoDataCoordinates m_firstInitialCoords;
0051     const GeoDataCoordinates m_secondInitialCoords;
0052 };
0053 
0054 } // namespace Marble
0055 
0056 #endif // MERGINGPOLYLINENODESANIMATION_H