00001
00002
00003
00004
00005
00006
00007 #include "Curve.h"
00008 #include "CurveStyles.h"
00009 #include "DataKey.h"
00010 #include "EngaugeAssert.h"
00011 #include "GraphicsLinesForCurve.h"
00012 #include "GraphicsLinesForCurves.h"
00013 #include "GraphicsPoint.h"
00014 #include "GraphicsPointAbstractBase.h"
00015 #include "GraphicsScene.h"
00016 #include <iostream>
00017 #include "Logger.h"
00018 #include "Point.h"
00019 #include <QGraphicsItem>
00020 #include <QTextStream>
00021 #include "QtToString.h"
00022 #include "Transformation.h"
00023
00024 GraphicsLinesForCurves::GraphicsLinesForCurves()
00025 {
00026 }
00027
00028 void GraphicsLinesForCurves::addPoint (const QString &curveName,
00029 const QString &pointIdentifier,
00030 double ordinal,
00031 GraphicsPoint &point)
00032 {
00033 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::addPoint"
00034 << " curve=" << curveName.toLatin1().data()
00035 << " identifier=" << pointIdentifier.toLatin1().data()
00036 << " ordinal=" << ordinal
00037 << " pos=" << QPointFToString (point.pos()).toLatin1().data();
00038
00039 m_graphicsLinesForCurve [curveName]->addPoint (pointIdentifier,
00040 ordinal,
00041 point);
00042 }
00043
00044 void GraphicsLinesForCurves::addRemoveCurves (GraphicsScene &scene,
00045 const QStringList &curveNames)
00046 {
00047 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::addRemoveCurves"
00048 << " curveCount=" << m_graphicsLinesForCurve.count();
00049
00050
00051 QStringList::const_iterator itrC;
00052 for (itrC = curveNames.begin (); itrC != curveNames.end (); itrC++) {
00053
00054 QString curveName = *itrC;
00055
00056 if (!m_graphicsLinesForCurve.contains (curveName)) {
00057
00058 GraphicsLinesForCurve *item = new GraphicsLinesForCurve(curveName);
00059 scene.addItem (item);
00060
00061 m_graphicsLinesForCurve [curveName] = item;
00062 }
00063 }
00064
00065
00066 GraphicsLinesContainer::const_iterator itrG, itrGNext;
00067 for (itrG = m_graphicsLinesForCurve.begin (); itrG != m_graphicsLinesForCurve.end (); itrG = itrGNext) {
00068
00069 const QString curveName = itrG.key ();
00070 GraphicsLinesForCurve *graphicsLines = itrG.value();
00071
00072 itrGNext = itrG;
00073 itrGNext++;
00074
00075 if (!curveNames.contains (curveName)) {
00076
00077 delete graphicsLines;
00078 m_graphicsLinesForCurve.remove (curveName);
00079 }
00080 }
00081 }
00082
00083 void GraphicsLinesForCurves::lineMembershipPurge(const CurveStyles &curveStyles)
00084 {
00085 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::lineMembershipPurge";
00086
00087 GraphicsLinesContainer::const_iterator itr;
00088 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
00089
00090 const QString curveName = itr.key ();
00091 GraphicsLinesForCurve *graphicsLines = itr.value();
00092
00093 graphicsLines->lineMembershipPurge (curveStyles.lineStyle (curveName));
00094 }
00095 }
00096
00097 void GraphicsLinesForCurves::lineMembershipReset()
00098 {
00099 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::lineMembershipReset";
00100
00101 GraphicsLinesContainer::const_iterator itr;
00102 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
00103
00104 GraphicsLinesForCurve *graphicsLines = itr.value();
00105
00106 graphicsLines->lineMembershipReset ();
00107 }
00108 }
00109
00110 void GraphicsLinesForCurves::print () const
00111 {
00112 QString text;
00113 QTextStream str (&text);
00114
00115 printStream ("", str);
00116 std::cerr << text.toLatin1().data();
00117 }
00118
00119 void GraphicsLinesForCurves::printStream (QString indentation,
00120 QTextStream &str) const
00121 {
00122 str << indentation << "GraphicsLinesForCurves\n";
00123
00124 indentation += INDENTATION_DELTA;
00125
00126 GraphicsLinesContainer::const_iterator itr;
00127 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
00128
00129 const GraphicsLinesForCurve *graphicsLines = itr.value();
00130
00131 graphicsLines->printStream (indentation,
00132 str);
00133 }
00134 }
00135
00136 void GraphicsLinesForCurves::removePoint(const QString &identifier)
00137 {
00138 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::removePoint"
00139 << " point=" << identifier.toLatin1().data ()
00140 << " curveCount=" << m_graphicsLinesForCurve.count();
00141
00142 QString curveName = Point::curveNameFromPointIdentifier(identifier);
00143
00144 ENGAUGE_ASSERT (m_graphicsLinesForCurve.contains (curveName));
00145 double ordinal = m_graphicsLinesForCurve [curveName]->identifierToOrdinal (identifier);
00146 m_graphicsLinesForCurve [curveName]->removePoint(ordinal);
00147 }
00148
00149 void GraphicsLinesForCurves::removeTemporaryPointIfExists()
00150 {
00151 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::removeTemporaryPointIfExists";
00152
00153 QString curveName = Point::curveNameFromPointIdentifier(Point::temporaryPointIdentifier());
00154
00155 ENGAUGE_ASSERT (m_graphicsLinesForCurve.contains (curveName));
00156 m_graphicsLinesForCurve [curveName]->removeTemporaryPointIfExists ();
00157 }
00158
00159 void GraphicsLinesForCurves::resetOnLoad()
00160 {
00161 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::resetOnLoad";
00162
00163 GraphicsLinesContainer::iterator itr;
00164 for (itr = m_graphicsLinesForCurve.begin(); itr != m_graphicsLinesForCurve.end(); itr++) {
00165 GraphicsLinesForCurve *curve = itr.value();
00166 delete curve;
00167 }
00168
00169 m_graphicsLinesForCurve.clear();
00170 }
00171
00172 void GraphicsLinesForCurves::updateAfterCommand (GraphicsScene &scene,
00173 const CurveStyles &curveStyles,
00174 const QString &curveName,
00175 const Point &point,
00176 GeometryWindow *geometryWindow)
00177 {
00178 LOG4CPP_DEBUG_S ((*mainCat)) << "GraphicsLinesForCurves::updateAfterCommand"
00179 << " point=" << point.identifier().toLatin1().data()
00180 << " curveCount=" << m_graphicsLinesForCurve.count();
00181
00182 ENGAUGE_ASSERT (m_graphicsLinesForCurve.contains (curveName));
00183 m_graphicsLinesForCurve [curveName]->updateAfterCommand (scene,
00184 curveStyles.pointStyle(curveName),
00185 point,
00186 geometryWindow);
00187 }
00188
00189 void GraphicsLinesForCurves::updateCurveStyles (const CurveStyles &modelCurveStyles)
00190 {
00191 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::updateCurveStyles";
00192
00193 GraphicsLinesContainer::const_iterator itr;
00194 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
00195
00196 QString curveName = itr.key();
00197
00198 m_graphicsLinesForCurve [curveName]->updateCurveStyle (modelCurveStyles.curveStyle (curveName));
00199 }
00200 }
00201
00202 void GraphicsLinesForCurves::updateGraphicsLinesToMatchGraphicsPoints (const CurveStyles &curveStyles)
00203 {
00204 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::updateGraphicsLinesToMatchGraphicsPoints";
00205
00206 GraphicsLinesContainer::const_iterator itr;
00207 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
00208
00209 QString curveName = itr.key();
00210
00211
00212 if (curveName != AXIS_CURVE_NAME) {
00213
00214 m_graphicsLinesForCurve [curveName]->updateGraphicsLinesToMatchGraphicsPoints(curveStyles.lineStyle (curveName));
00215 }
00216 }
00217 }
00218
00219 void GraphicsLinesForCurves::updateHighlightOpacity (double highlightOpacity)
00220 {
00221 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::updateHighlightOpacity"
00222 << " highlightOpacity=" << highlightOpacity;
00223
00224 GraphicsLinesContainer::const_iterator itr;
00225 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
00226
00227 QString curveName = itr.key();
00228
00229 m_graphicsLinesForCurve [curveName]->updateHighlightOpacity (highlightOpacity);
00230 }
00231 }
00232
00233 void GraphicsLinesForCurves::updatePointOrdinalsAfterDrag (const CurveStyles &curveStyles,
00234 const Transformation &transformation)
00235 {
00236 LOG4CPP_INFO_S ((*mainCat)) << "GraphicsLinesForCurves::updatePointOrdinalsAfterDrag";
00237
00238 GraphicsLinesContainer::const_iterator itr;
00239 for (itr = m_graphicsLinesForCurve.begin (); itr != m_graphicsLinesForCurve.end (); itr++) {
00240
00241 QString curveName = itr.key();
00242 GraphicsLinesForCurve *graphicsLines = itr.value();
00243
00244 graphicsLines->updatePointOrdinalsAfterDrag (curveStyles.lineStyle (curveName),
00245 transformation);
00246 }
00247 }