2 #include "CurveStyles.h"
4 #include "EngaugeAssert.h"
5 #include "GraphicsLinesForCurve.h"
6 #include "GraphicsLinesForCurves.h"
7 #include "GraphicsPoint.h"
8 #include "GraphicsPointAbstractBase.h"
9 #include "GraphicsScene.h"
13 #include <QGraphicsItem>
14 #include <QTextStream>
15 #include "QtToString.h"
16 #include "Transformation.h"
23 const QString &pointIdentifier,
27 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::addPoint"
28 <<
" curve=" << curveName.toLatin1().data()
29 <<
" identifier=" << pointIdentifier.toLatin1().data()
30 <<
" ordinal=" << ordinal
31 <<
" pos=" << QPointFToString (point.
pos()).toLatin1().data();
33 m_graphicsLinesForCurve [curveName]->addPoint (pointIdentifier,
39 const QStringList &curveNames)
41 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::addRemoveCurves"
42 <<
" curveCount=" << m_graphicsLinesForCurve.count();
45 QStringList::const_iterator itrC;
46 for (itrC = curveNames.begin (); itrC != curveNames.end (); itrC++) {
48 QString curveName = *itrC;
50 if (!m_graphicsLinesForCurve.contains (curveName)) {
55 m_graphicsLinesForCurve [curveName] = item;
60 GraphicsLinesContainer::const_iterator itrG, itrGNext;
61 for (itrG = m_graphicsLinesForCurve.begin (); itrG != m_graphicsLinesForCurve.end (); itrG = itrGNext) {
63 const QString curveName = itrG.key ();
69 if (!curveNames.contains (curveName)) {
72 m_graphicsLinesForCurve.remove (curveName);
79 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::lineMembershipPurge";
81 GraphicsLinesContainer::const_iterator itr;
82 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
84 const QString curveName = itr.key ();
93 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::lineMembershipReset";
95 GraphicsLinesContainer::const_iterator itr;
96 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
107 QTextStream str (&text);
110 std::cerr << text.toLatin1().data();
114 QTextStream &str)
const
116 str << indentation <<
"GraphicsLinesForCurves\n";
118 indentation += INDENTATION_DELTA;
120 GraphicsLinesContainer::const_iterator itr;
121 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
132 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::removePoint"
133 <<
" point=" << identifier.toLatin1().data ()
134 <<
" curveCount=" << m_graphicsLinesForCurve.count();
138 ENGAUGE_ASSERT (m_graphicsLinesForCurve.contains (curveName));
139 double ordinal = m_graphicsLinesForCurve [curveName]->identifierToOrdinal (identifier);
140 m_graphicsLinesForCurve [curveName]->removePoint(ordinal);
145 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::removeTemporaryPointIfExists";
149 ENGAUGE_ASSERT (m_graphicsLinesForCurve.contains (curveName));
150 m_graphicsLinesForCurve [curveName]->removeTemporaryPointIfExists ();
155 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::resetOnLoad";
157 GraphicsLinesContainer::iterator itr;
158 for (itr = m_graphicsLinesForCurve.begin(); itr != m_graphicsLinesForCurve.end(); itr++) {
163 m_graphicsLinesForCurve.clear();
168 const QString &curveName,
171 LOG4CPP_DEBUG_S ((*mainCat)) <<
"GraphicsLinesForCurves::updateAfterCommand"
172 <<
" point=" << point.
identifier().toLatin1().data()
173 <<
" curveCount=" << m_graphicsLinesForCurve.count();
175 ENGAUGE_ASSERT (m_graphicsLinesForCurve.contains (curveName));
176 m_graphicsLinesForCurve [curveName]->updateAfterCommand (scene,
183 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::updateCurveStyles";
185 GraphicsLinesContainer::const_iterator itr;
186 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
188 QString curveName = itr.key();
190 m_graphicsLinesForCurve [curveName]->updateCurveStyle (modelCurveStyles.
curveStyle (curveName));
196 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::updateGraphicsLinesToMatchGraphicsPoints";
198 GraphicsLinesContainer::const_iterator itr;
199 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
201 QString curveName = itr.key();
204 if (curveName != AXIS_CURVE_NAME) {
206 m_graphicsLinesForCurve [curveName]->updateGraphicsLinesToMatchGraphicsPoints(curveStyles.
lineStyle (curveName));
214 LOG4CPP_INFO_S ((*mainCat)) <<
"GraphicsLinesForCurves::updatePointOrdinalsAfterDrag";
216 GraphicsLinesContainer::const_iterator itr;
217 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
219 QString curveName = itr.key();
void lineMembershipPurge(const CurveStyles &curveStyles)
Mark the end of addPoint calls. Remove stale lines, insert missing lines, and draw the graphics lines...
void removePoint(const QString &identifier)
Remove the specified point. The act of deleting it will automatically remove it from the GraphicsScen...
static QString curveNameFromPointIdentifier(const QString &pointIdentifier)
Parse the curve name from the specified point identifier. This does the opposite of uniqueIdentifierG...
void lineMembershipReset()
Mark points as unwanted. Afterwards, lineMembershipPurge gets called.
const PointStyle pointStyle(const QString &curveName) const
Get method for copying one point style. Cannot return just a reference or else there is a warning abo...
void print() const
Debugging method for printing directly from symbolic debugger.
GraphicsLinesForCurves()
Single constructor.
Model for DlgSettingsCurveProperties and CmdSettingsCurveProperties.
void addPoint(const QString &curveName, const QString &pointIdentifier, double ordinal, GraphicsPoint &point)
Add new point.
void lineMembershipReset()
Mark points as unwanted. Afterwards, lineMembershipPurge gets called.
void removeTemporaryPointIfExists()
Remove temporary point if it exists.
Class that represents one digitized point. The screen-to-graph coordinate transformation is always ex...
static QString temporaryPointIdentifier()
Point identifier for temporary point that is used by DigitzeStateAxis.
QString identifier() const
Unique identifier for a specific Point.
void updatePointOrdinalsAfterDrag(const CurveStyles &curveStyles, const Transformation &transformation)
See GraphicsScene::updateOrdinalsAfterDrag.
void updatePointOrdinalsAfterDrag(const LineStyle &lineStyle, const Transformation &transformation)
See GraphicsScene::updateOrdinalsAfterDrag. Pretty much the same steps as Curve::updatePointOrdinals...
const LineStyle lineStyle(const QString &curveName) const
Get method for copying one line style in one step.
This class stores the GraphicsLine objects for one Curve.
void updateGraphicsLinesToMatchGraphicsPoints(const CurveStyles &curveStyles)
Calls to moveLinesWithDraggedPoint have finished so update the lines correspondingly.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void updateAfterCommand(GraphicsScene &scene, const CurveStyles &curveStyles, const QString &curveName, const Point &point)
Update the GraphicsScene with the specified Point from the Document. If it does not exist yet in the ...
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Graphics item for drawing a circular or polygonal Point.
CurveStyle curveStyle(const QString &curveName) const
CurveStyle in specified curve.
void updateCurveStyles(const CurveStyles &modelCurveStyles)
Update the curve style for every curve.
QPointF pos() const
Proxy method for QGraphicsItem::pos.
Add point and line handling to generic QGraphicsScene.
void resetOnLoad()
Reset, when loading a document after the first, to same state that first document was at when loaded...
void lineMembershipPurge(const LineStyle &lineStyle)
Mark the end of addPoint calls. Remove stale lines, insert missing lines, and draw the graphics lines...
void addRemoveCurves(GraphicsScene &scene, const QStringList &curveNames)
Add new curves and remove expired curves to match the specified list.