11 #ifndef ASSOCIATIONLINE_H 12 #define ASSOCIATIONLINE_H 16 #include <QGraphicsObject> 58 virtual void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option, QWidget *widget);
61 virtual QPainterPath
shape()
const;
63 void alignTo(
const QLineF& line);
115 QPointF point(
int index)
const;
116 bool setPoint(
int index,
const QPointF& point);
117 QPointF startPoint()
const;
118 QPointF endPoint()
const;
120 void addPoint(
const QPointF& point);
121 void insertPoint(
int index,
const QPointF& point);
122 void removePoint(
int index);
127 void optimizeLinePoints();
129 int closestPointIndex(
const QPointF& point, qreal delta = Delta)
const;
130 int closestSegmentIndex(
const QPointF& point, qreal delta = Delta)
const;
132 bool isEndPointIndex(
int index)
const;
133 bool isEndSegmentIndex(
int index)
const;
134 bool isAutoLayouted()
const;
136 bool enableAutoLayout();
138 bool setEndPoints(
const QPointF &start,
const QPointF &end);
142 bool loadFromXMI1(QDomElement &qElement);
143 void saveToXMI1(QDomDocument &qDoc, QDomElement &qElement);
145 QBrush
brush()
const;
147 void setPen(
const QPen &pen);
148 void updatePenStyle();
150 virtual void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option, QWidget* widget);
152 QPainterPath path()
const;
155 QPainterPath
shape()
const;
160 void mousePressEvent(QGraphicsSceneMouseEvent *event);
161 void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
162 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
164 void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
165 void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
166 void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
168 void calculateInitialEndPoints();
170 void reconstructSymbols();
176 void createSubsetSymbol();
177 void removeSubsetSymbol();
179 void createCollaborationLine();
180 void removeCollaborationLine();
184 void createSplinePoints();
198 static QPainterPath createBezierCurve(QVector<QPointF> points);
199 static QPainterPath createOrthogonalPath(QVector<QPointF> points);
201 qreal c1dx{0.0}, c1dy{0.0}, c2dx{0.0}, c2dy{0.0};
Definition: associationline.h:44
SymbolType symbolType() const
Definition: associationline.cpp:1425
virtual ~Symbol()
Definition: associationline.cpp:1418
QPair< QPointF, QPointF > SymbolEndPoints
Definition: associationline.h:35
Symbol * m_subsetSymbol
subset symbol
Definition: associationline.h:192
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
Definition: associationline.cpp:1443
QBrush brush() const
Definition: associationline.cpp:1531
void setPen(const QPen &pen)
Definition: associationline.cpp:1521
QRectF boundRect
Definition: associationline.h:79
Definition: associationline.h:47
A structure to hold a table of values for all symbols.
Definition: associationline.h:78
Definition: associationline.h:46
Definition: associationline.h:49
Definition: associationline.h:48
SymbolEndPoints endPoints
Definition: associationline.h:82
int m_activeSegmentIndex
index of active segment
Definition: associationline.h:189
Symbol * m_collaborationLineHead
arrow head drawn at end of m_collaborationLineItem
Definition: associationline.h:194
QGraphicsLineItem * m_collaborationLineItem
parallel arrow line drawn in case of collaboration message
Definition: associationline.h:193
Definition: associationline.h:43
int m_activePointIndex
index of active point which can be dragged to modify association line
Definition: associationline.h:188
static const qreal Delta
default delta for fuzzy recognition of points closer to point
Definition: associationline.h:202
Definition: associationline.h:105
SymbolEndPoints symbolEndPoints() const
Definition: associationline.cpp:1505
void setBrush(const QBrush &brush)
Definition: associationline.cpp:1539
bool m_autoLayoutSpline
Definition: associationline.h:197
SymbolType
Definition: associationline.h:41
Symbol * m_startSymbol
symbol drawn at the end of "first" line segment
Definition: associationline.h:190
Definition: associationline.h:42
AssociationWidget * m_associationWidget
association widget for which this line represents
Definition: associationline.h:186
QPen m_pen
pen used to draw Symbol
Definition: associationline.h:73
QPen m_pen
pen used to draw an association line
Definition: associationline.h:196
Uml::LayoutType::Enum m_layout
Definition: associationline.h:195
Symbol(SymbolType symbolType, QGraphicsItem *parent=0)
Definition: associationline.cpp:1407
SymbolType m_symbolType
current symbol being represented by this item
Definition: associationline.h:75
void alignTo(const QLineF &line)
Definition: associationline.cpp:1488
virtual QRectF boundingRect() const
Definition: associationline.cpp:1462
QVector< QPointF > m_points
points representing the association line
Definition: associationline.h:187
static SymbolProperty symbolTable[Symbol::Count]
a table which stores all symbol properties
Definition: associationline.h:85
static void setupSymbolTable()
Definition: associationline.cpp:1328
static const qreal SelfAssociationMinimumHeight
minimum height for self association's loop
Definition: associationline.h:204
static const qreal SelectedPointDiameter
radius of circles drawn to show "selection"
Definition: associationline.h:203
QPainterPath shape
Definition: associationline.h:80
QLineF axisLine
Definition: associationline.h:81
QString toString(Enum item)
Definition: basictypes.cpp:47
void setSymbolType(SymbolType symbolType)
Definition: associationline.cpp:1433
Definition: associationline.h:32
Definition: associationline.h:45
QPen pen() const
Definition: associationline.cpp:1513
Symbol * m_endSymbol
symbol drawn at the end of "last" line segment
Definition: associationline.h:191
Enum fromString(const QString &item)
Definition: basictypes.cpp:69
QBrush m_brush
brush used to fill Symbol
Definition: associationline.h:74
virtual QPainterPath shape() const
Definition: associationline.cpp:1472
Enum
Definition: basictypes.h:144