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