Plasma Engine  2.0
Loading...
Searching...
No Matches
Pin.h
1#pragma once
2
3#include <GuiFoundation/GuiFoundationDLL.h>
4#include <GuiFoundation/NodeEditor/NodeScene.moc.h>
5#include <QGraphicsPathItem>
6
7class plPin;
9
10enum class plQtPinHighlightState
11{
12 None,
13 CannotConnect,
14 CannotConnectSameDirection,
15 CanAddConnection,
16 CanReplaceConnection,
17};
18
19class PL_GUIFOUNDATION_DLL plQtPin : public QGraphicsPathItem
20{
21public:
22 plQtPin();
23 ~plQtPin();
24 virtual int type() const override { return plQtNodeScene::Pin; }
25
26 void AddConnection(plQtConnection* pConnection);
27 void RemoveConnection(plQtConnection* pConnection);
28 plArrayPtr<plQtConnection*> GetConnections() { return m_Connections; }
29 bool HasAnyConnections() const { return !m_Connections.IsEmpty(); }
30
31 const plPin* GetPin() const { return m_pPin; }
32 virtual void SetPin(const plPin& pin);
33 virtual void ConnectedStateChanged(bool bConnected);
34
35 virtual QPointF GetPinPos() const;
36 virtual QPointF GetPinDir() const;
37 virtual QRectF GetPinRect() const;
38 virtual void UpdateConnections();
39 void SetHighlightState(plQtPinHighlightState state);
40
41 void SetActive(bool bActive);
42
43 virtual void ExtendContextMenu(QMenu& ref_menu) {}
44 virtual void keyPressEvent(QKeyEvent* pEvent) override {}
45
46protected:
47 virtual bool UpdatePinColors(const plColorGammaUB* pOverwriteColor = nullptr);
48 virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value) override;
49
50 plQtPinHighlightState m_HighlightState = plQtPinHighlightState::None;
51 QGraphicsTextItem* m_pLabel;
52 QPointF m_PinCenter;
53
54 bool m_bTranslatePinName = true;
55
56private:
57 bool m_bIsActive = true;
58
59 const plPin* m_pPin = nullptr;
61};
This class encapsulates an array and it's size. It is recommended to use this class instead of plain ...
Definition ArrayPtr.h:37
PL_ALWAYS_INLINE bool IsEmpty() const
Returns whether the array is empty.
Definition ArrayPtr.h:136
A 8bit per channel unsigned normalized (values interpreted as 0-1) color storage format that represen...
Definition Color8UNorm.h:99
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition DocumentNodeManager.h:59
Definition Connection.h:10
Definition Pin.h:20