Loading...
Searching...
No Matches
CurvePointView.hpp
1#pragma once
2#include <score/model/IdentifiedObjectMap.hpp>
3#include <score/model/Identifier.hpp>
4
5#include <QGraphicsItem>
6#include <QPoint>
7#include <QRect>
8
9#include <score_plugin_curve_export.h>
10
11#include <verdigris>
12
13class QGraphicsSceneContextMenuEvent;
14class QPainter;
15class QStyleOptionGraphicsItem;
16class QWidget;
17namespace Curve
18{
19class PointModel;
20struct Style;
21class SCORE_PLUGIN_CURVE_EXPORT PointView final
22 : public QObject
23 , public QGraphicsItem
24{
25 W_OBJECT(PointView)
26 Q_INTERFACES(QGraphicsItem)
27public:
28 PointView(const PointModel* model, const Curve::Style& style, QGraphicsItem* parent);
29
30 const PointModel& model() const;
31 const PointModel* modelPtr() const noexcept { return m_model; }
32 const Id<PointModel>& id() const;
33
34 static const constexpr int Type = QGraphicsItem::UserType + 100;
35 int type() const final override { return Type; }
36
37 QRectF boundingRect() const override;
38 void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
39 override;
40
41 void setSelected(bool selected);
42
43 void enable();
44 void disable();
45
46 void setModel(const PointModel* model);
47
48public:
49 void contextMenuRequested(const QPoint& arg_1, const QPointF& arg_2)
50 E_SIGNAL(SCORE_PLUGIN_CURVE_EXPORT, contextMenuRequested, arg_1, arg_2)
51protected:
52 void contextMenuEvent(QGraphicsSceneContextMenuEvent*) override;
53
54private:
55 const PointModel* m_model{};
56 const Curve::Style& m_style;
57 bool m_selected{};
58};
59}
60
61#if !defined(SCORE_ALL_UNITY)
62//extern template class IdContainer<Curve::PointView, Curve::PointModel>;
63#endif
Definition CurvePointModel.hpp:18
Definition CurvePointView.hpp:24
The id_base_t class.
Definition Identifier.hpp:59
Utilities and base classes for 1D curves.
Definition FocusDispatcher.hpp:12
Definition CurveStyle.hpp:14