Engauge Digitizer
2
Toggle main menu visibility
Loading...
Searching...
No Matches
Segment
SegmentLine.cpp
Go to the documentation of this file.
1
/******************************************************************************************************
2
* (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3
* under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4
* LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5
******************************************************************************************************/
6
7
#include "
DataKey.h
"
8
#include "
EnumsToQt.h
"
9
#include "
GraphicsItemType.h
"
10
#include "
InactiveOpacity.h
"
11
#include "
Logger.h
"
12
#include <QGraphicsScene>
13
#include <QPen>
14
#include "
Segment.h
"
15
#include "
SegmentLine.h
"
16
#include "
ZValues.h
"
17
18
SegmentLine::SegmentLine
(QGraphicsScene &scene,
19
const
DocumentModelSegments
&modelSegments,
20
Segment
*
segment
) :
21
m_modelSegments (modelSegments),
22
m_segment (
segment
)
23
{
24
qCDebug(ENGAUGE_LOG) <<
"SegmentLine::SegmentLine"
25
<<
" address=0x"
<< std::hex << static_cast<void *> (
this
);
26
27
setData (
DATA_KEY_GRAPHICS_ITEM_TYPE
, QVariant (
GRAPHICS_ITEM_TYPE_SEGMENT
));
28
29
// Make this transparent now, but always visible so hover events work
30
scene.addItem (
this
);
31
setPen (QPen (Qt::transparent));
32
setZValue (
Z_VALUE_CURVE
);
33
setVisible (
true
);
34
setAcceptHoverEvents (
true
);
35
setHover
(
false
);
// Initially the cursor is not hovering over this object. Later a hover event will change this state
36
setFlags (QGraphicsItem::ItemIsFocusable);
37
38
connect (
this
, SIGNAL (
signalHover
(
bool
)),
segment
, SLOT (slotHover (
bool
)));
39
}
40
41
SegmentLine::~SegmentLine
()
42
{
43
qCDebug(ENGAUGE_LOG) <<
"SegmentLine::~SegmentLine"
44
<<
" address=0x"
<< std::hex << static_cast<void *> (
this
);
45
}
46
47
void
SegmentLine::hoverEnterEvent
(QGraphicsSceneHoverEvent *
/* event */
)
48
{
49
qCInfo(ENGAUGE_LOG) <<
"SegmentLine::hoverEnterEvent"
;
50
51
emit (
signalHover
(
true
));
52
}
53
54
void
SegmentLine::hoverLeaveEvent
(QGraphicsSceneHoverEvent *
/* event */
)
55
{
56
qCInfo(ENGAUGE_LOG) <<
"SegmentLine::hoverLeaveEvent"
;
57
58
emit (
signalHover
(
false
));
59
}
60
61
void
SegmentLine::mousePressEvent
(QGraphicsSceneMouseEvent *
/* event */
)
62
{
63
qCInfo(ENGAUGE_LOG) <<
"SegmentLine::mousePressEvent"
;
64
65
m_segment->forwardMousePress();
66
}
67
68
Segment
*
SegmentLine::segment
()
const
69
{
70
return
m_segment;
71
}
72
73
void
SegmentLine::setHover
(
bool
hover)
74
{
75
QColor colorOpaque (
ColorPaletteToQColor
(m_modelSegments.lineColor()));
76
77
if
(hover) {
78
79
setPen (QPen (QBrush (colorOpaque),
80
m_modelSegments.lineWidthActive()));
81
82
}
else
{
83
84
QColor colorSoft (colorOpaque.red (),
85
colorOpaque.green (),
86
colorOpaque.blue (),
87
inactiveOpacityEnumToAlpha
(m_modelSegments.inactiveOpacity()));
88
89
setPen (QPen (QBrush (colorSoft),
90
m_modelSegments.lineWidthInactive()));
91
92
}
93
}
94
95
void
SegmentLine::updateModelSegment
(
const
DocumentModelSegments
&modelSegments)
96
{
97
qCInfo(ENGAUGE_LOG) <<
"SegmentLine::updateModelSegment"
;
98
99
m_modelSegments = modelSegments;
100
}
DataKey.h
DATA_KEY_GRAPHICS_ITEM_TYPE
@ DATA_KEY_GRAPHICS_ITEM_TYPE
Definition
DataKey.h:15
ColorPaletteToQColor
QColor ColorPaletteToQColor(ColorPalette color)
Definition
EnumsToQt.cpp:16
EnumsToQt.h
GraphicsItemType.h
GRAPHICS_ITEM_TYPE_SEGMENT
@ GRAPHICS_ITEM_TYPE_SEGMENT
Definition
GraphicsItemType.h:16
inactiveOpacityEnumToAlpha
int inactiveOpacityEnumToAlpha(InactiveOpacity inactiveOpacity)
Map InactiveOpacity enum to corresponding alpha value.
Definition
InactiveOpacity.cpp:13
InactiveOpacity.h
Logger.h
SegmentLine.h
Segment.h
Z_VALUE_CURVE
const int Z_VALUE_CURVE
Definition
ZValues.cpp:10
ZValues.h
DocumentModelSegments
Model for DlgSettingsSegments and CmdSettingsSegments.
Definition
DocumentModelSegments.h:19
SegmentLine::mousePressEvent
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event)
Create points along this curve.
Definition
SegmentLine.cpp:61
SegmentLine::signalHover
void signalHover(bool)
Pass hover enter/leave events to Segment that owns this.
SegmentLine::SegmentLine
SegmentLine(QGraphicsScene &scene, const DocumentModelSegments &modelSegments, Segment *segment)
Single constructor.
Definition
SegmentLine.cpp:18
SegmentLine::setHover
void setHover(bool hover)
Apply/remove highlighting triggered by hover enter/leave.
Definition
SegmentLine.cpp:73
SegmentLine::segment
Segment * segment() const
Segment that owns this line.
Definition
SegmentLine.cpp:68
SegmentLine::updateModelSegment
void updateModelSegment(const DocumentModelSegments &modelSegments)
Update this segment line with new settings.
Definition
SegmentLine.cpp:95
SegmentLine::hoverEnterEvent
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event)
Highlight this and all other SegmentLines belonging to the same Segment upon hover enter.
Definition
SegmentLine.cpp:47
SegmentLine::hoverLeaveEvent
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Unset highlighting triggered by hover enter.
Definition
SegmentLine.cpp:54
SegmentLine::~SegmentLine
~SegmentLine()
Definition
SegmentLine.cpp:41
Segment
Selectable piecewise-defined line that follows a filtered line in the image.
Definition
Segment.h:22
Generated on
for Engauge Digitizer by
1.17.0