Engauge Digitizer
2
Toggle main menu visibility
Loading...
Searching...
No Matches
Guideline
GuidelineStateAbstractBase.cpp
Go to the documentation of this file.
1
/******************************************************************************************************
2
* (C) 2019 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 "
GuidelineAbstract.h
"
11
#include "
GuidelineIdentifierGenerator.h
"
12
#include "
GuidelineStateAbstractBase.h
"
13
#include "
GuidelineStateContext.h
"
14
#include "
Logger.h
"
15
#include <QGraphicsScene>
16
#include <qmath.h>
17
18
GuidelineStateAbstractBase::GuidelineStateAbstractBase
(
GuidelineStateContext
&
context
) :
19
m_context (
context
)
20
{
21
}
22
23
GuidelineStateAbstractBase::~GuidelineStateAbstractBase
()
24
{
25
}
26
27
GuidelineStateContext
&
GuidelineStateAbstractBase::context
()
const
28
{
29
return
m_context;
30
}
31
32
void
GuidelineStateAbstractBase::handleMousePressCommon
(
const
QPointF &posScene,
33
GuidelineState
stateHandle,
34
GuidelineState
stateDeployed)
35
{
36
qCInfo(ENGAUGE_LOG) <<
"GuidelineStateAbstractBase::handleMousePressCommon "
37
<< m_context.
stateDump
().toLatin1().data();
38
39
// Unselect all selected items. This prevents the extremely confusing error where an
40
// a currently-selected axis point stays selected and gets dragged along with this Guideline,
41
// which moves the axis unexpectedly
42
QList<QGraphicsItem*>::iterator itr;
43
QList<QGraphicsItem*> items = m_context.guideline().scene().selectedItems();
44
for
(itr = items.begin(); itr != items.end(); itr++) {
45
QGraphicsItem *item = *itr;
46
47
// How do we know which is the Guideline that we want to keep selected? By its type
48
if
(item->data (
DATA_KEY_GRAPHICS_ITEM_TYPE
).toInt () !=
GRAPHICS_ITEM_TYPE_GUIDELINE
) {
49
item->setSelected (
false
);
50
}
51
}
52
53
// Visible Guideline will follow this one. Its geometry will be set after every drag event. It is
54
// not registered with Guidelines container
55
GuidelineAbstract
*guidelineVisible =
context
().
createGuideline
(
GuidelineIdentifierGenerator::next
(),
56
stateDeployed);
57
58
DocumentModelGuideline
modelGuideline =
context
().
modelGuideline
();
59
60
guidelineVisible->
setGraphicsItemPen
(
ColorPaletteToQColor
(modelGuideline.
lineColor
()),
61
modelGuideline.
lineWidthInactive
());
62
63
// Place new Guideline at cursor position
64
guidelineVisible->
updateGeometry
(posScene);
65
66
context
().
guideline
().
bindGuidelineVisibleToInvisible
(guidelineVisible);
67
68
context
().
requestStateTransition
(stateHandle);
69
}
70
71
QRectF
GuidelineStateAbstractBase::sceneRect
()
const
72
{
73
return
m_context.guideline().scene().sceneRect();
74
}
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_GUIDELINE
@ GRAPHICS_ITEM_TYPE_GUIDELINE
Definition
GraphicsItemType.h:17
GuidelineAbstract.h
GuidelineIdentifierGenerator.h
GuidelineStateAbstractBase.h
GuidelineStateContext.h
GuidelineState
GuidelineState
Set of possible Guideline states. See class Guideline for more information.
Definition
GuidelineState.h:13
Logger.h
DocumentModelGuideline
Model for managing the coordinate values corresponding Guidelines.
Definition
DocumentModelGuideline.h:22
DocumentModelGuideline::lineWidthInactive
double lineWidthInactive() const
Get method for line width when inactive.
Definition
DocumentModelGuideline.cpp:78
DocumentModelGuideline::lineColor
ColorPalette lineColor() const
Get method for line color.
Definition
DocumentModelGuideline.cpp:68
GuidelineAbstract
This class is a special case of the standard QGraphicsLineItem for guidelines, and serves as the base...
Definition
GuidelineAbstract.h:69
GuidelineAbstract::updateGeometry
virtual void updateGeometry(double valueGraph)=0
Update the geometry so it passes through the specified coordinate value in graph coordinates.
GuidelineAbstract::bindGuidelineVisibleToInvisible
void bindGuidelineVisibleToInvisible(GuidelineAbstract *guidelineVisible)
Bind a newly-created visible Guideline to this Guideline, and make this one invisible.
Definition
GuidelineAbstract.cpp:40
GuidelineAbstract::setGraphicsItemPen
virtual void setGraphicsItemPen(const QColor &color, double lineWidth)=0
Wrapper for QGraphicsItem::setPen.
GuidelineIdentifierGenerator::next
static QString next()
Create next identifier.
Definition
GuidelineIdentifierGenerator.cpp:15
GuidelineStateAbstractBase::sceneRect
QRectF sceneRect() const
Scene rectangle in screen coordinates (=pixels).
Definition
GuidelineStateAbstractBase.cpp:71
GuidelineStateAbstractBase::handleMousePressCommon
void handleMousePressCommon(const QPointF &posAbsolute, GuidelineState stateHandle, GuidelineState stateDeployed)
Common mouse press handling.
Definition
GuidelineStateAbstractBase.cpp:32
GuidelineStateAbstractBase::context
GuidelineStateContext & context() const
Context in charge of the state classes.
Definition
GuidelineStateAbstractBase.cpp:27
GuidelineStateAbstractBase::~GuidelineStateAbstractBase
virtual ~GuidelineStateAbstractBase()
Definition
GuidelineStateAbstractBase.cpp:23
GuidelineStateAbstractBase::GuidelineStateAbstractBase
GuidelineStateAbstractBase(GuidelineStateContext &context)
Single constructor.
Definition
GuidelineStateAbstractBase.cpp:18
GuidelineStateContext
Context class for state machine that belongs to the Guideline class.
Definition
GuidelineStateContext.h:132
GuidelineStateContext::stateDump
QString stateDump() const
Dump state for debugging only.
Definition
GuidelineStateContext.cpp:255
GuidelineStateContext::guideline
GuidelineAbstract & guideline()
Guideline that owns this context class.
Definition
GuidelineStateContext.cpp:155
GuidelineStateContext::requestStateTransition
void requestStateTransition(GuidelineState guidelineState)
Request a state transition.
Definition
GuidelineStateContext.cpp:233
GuidelineStateContext::modelGuideline
DocumentModelGuideline modelGuideline() const
Up-to-date guideline settings.
Definition
GuidelineStateContext.cpp:209
GuidelineStateContext::createGuideline
GuidelineAbstract * createGuideline(const QString &identifier, GuidelineState stateInitial) const
Factory method for creating a new Guideline.
Definition
GuidelineStateContext.cpp:135
Generated on
for Engauge Digitizer by
1.17.0