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

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2014 Calin Cruceru <crucerucalincristian@gmail.com>
0004 //
0005 
0006 #ifndef POLYLINENODE_H
0007 #define POLYLINENODE_H
0008 
0009 #include <QRegion>
0010 #include <QPoint>
0011 
0012 namespace Marble
0013 {
0014 
0015 class PolylineNode
0016 {
0017 public:
0018     enum PolyNodeFlag {
0019         NoOption = 0x0,
0020         NodeIsSelected = 0x1,
0021         NodeIsMerged = 0x2,
0022         NodeIsEditingHighlighted = 0x4,
0023         NodeIsMergingHighlighted = 0x8
0024     };
0025     Q_DECLARE_FLAGS(PolyNodeFlags, PolyNodeFlag)
0026 
0027     explicit PolylineNode( const QRegion& region = QRegion() );
0028     ~PolylineNode();
0029 
0030     bool isSelected() const;
0031     bool isBeingMerged() const;
0032     bool isEditingHighlighted() const;
0033     bool isMergingHighlighted() const;
0034 
0035     PolyNodeFlags flags() const;
0036 
0037     void setFlag( PolyNodeFlag flag, bool enabled = true );
0038     void setFlags( PolyNodeFlags flags );
0039     void setRegion( const QRegion& newRegion );
0040 
0041     bool containsPoint( const QPoint &eventPos ) const;
0042 
0043 private:
0044     QRegion m_region;
0045     PolyNodeFlags m_flags;
0046 };
0047 
0048 }
0049 
0050 Q_DECLARE_TYPEINFO(Marble::PolylineNode, Q_MOVABLE_TYPE);
0051 
0052 #endif