Engauge Digitizer  2
CurveStyles.cpp
1 #include "CmdMediator.h"
2 #include "CurveStyles.h"
3 #include "DocumentSerialize.h"
4 #include "EngaugeAssert.h"
5 #include "Logger.h"
6 #include <QDebug>
7 #include <QXmlStreamReader>
8 #include <QXmlStreamWriter>
9 #include "Xml.h"
10 
12 {
13 }
14 
16 {
17  // Axis curve
18  const Curve &curveAxes = document.curveAxes();
19  m_curveStyles [AXIS_CURVE_NAME].setLineStyle (curveAxes.curveStyle().lineStyle());
20  m_curveStyles [AXIS_CURVE_NAME].setPointStyle (curveAxes.curveStyle().pointStyle());
21 
22  // Graph curves
23  QStringList graphCurveNames = document.curvesGraphsNames();
24  QStringList::const_iterator itr;
25  for (itr = graphCurveNames.begin (); itr != graphCurveNames.end (); itr++) {
26 
27  const QString &graphCurveName = *itr;
28  const Curve *graphCurve = document.curveForCurveName(graphCurveName);
29  m_curveStyles [graphCurveName].setLineStyle (graphCurve->curveStyle().lineStyle());
30  m_curveStyles [graphCurveName].setPointStyle (graphCurve->curveStyle().pointStyle());
31  }
32 }
33 
35 {
36  const QStringList curveNames = other.curveNames();
37  QStringList::const_iterator itr;
38  for (itr = curveNames.begin(); itr != curveNames.end(); itr++) {
39 
40  QString curveName = *itr;
41 
42  m_curveStyles [curveName] = other.curveStyle (curveName);
43  }
44 }
45 
47 {
48  const QStringList curveNames = other.curveNames();
49  QStringList::const_iterator itr;
50  for (itr = curveNames.begin(); itr != curveNames.end(); itr++) {
51 
52  QString curveName = *itr;
53 
54  m_curveStyles [curveName] = other.curveStyle (curveName);
55  }
56 
57  return *this;
58 }
59 
60 QStringList CurveStyles::curveNames () const
61 {
62  QStringList curveNames;
63  CurveStylesInternal::const_iterator itr;
64  for (itr = m_curveStyles.begin(); itr != m_curveStyles.end(); itr++) {
65 
66  curveNames << itr.key();
67  }
68 
69  return curveNames;
70 }
71 
72 CurveStyle CurveStyles::curveStyle (const QString &curveName) const
73 {
74  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
75  return m_curveStyles [curveName];
76 }
77 
78 ColorPalette CurveStyles::lineColor (const QString &curveName) const
79 {
80  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
81  return m_curveStyles [curveName].lineStyle().paletteColor();
82 }
83 
84 CurveConnectAs CurveStyles::lineConnectAs (const QString &curveName) const
85 {
86  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
87  return m_curveStyles [curveName].lineStyle().curveConnectAs();
88 }
89 
90 const LineStyle CurveStyles::lineStyle (const QString &curveName) const
91 {
92  return m_curveStyles [curveName].lineStyle();
93 }
94 
95 int CurveStyles::lineWidth (const QString &curveName) const
96 {
97  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
98  return m_curveStyles [curveName].lineStyle().width();
99 }
100 
101 void CurveStyles::loadXml (QXmlStreamReader &reader)
102 {
103  bool success = true;
104 
105  // Read through each DOCUMENT_SERIALIZE_LINE_STYLE and DOCUMENT_SERIALIZE_POINT_STYLE until end of DOCUMENT_SERIALIZE_CURVE_STYLES is encountered
106  while (loadNextFromReader (reader)) {
107 
108  if (reader.atEnd() || reader.hasError ()) {
109  success = false;
110  break;
111  }
112 
113  if ((reader.tokenType() == QXmlStreamReader::EndElement) &&
114  (reader.name() == DOCUMENT_SERIALIZE_CURVE_STYLES)) {
115  break;
116  }
117 
118  // Not done yet
119  if ((reader.tokenType() == QXmlStreamReader::StartElement) &&
120  (reader.name() == DOCUMENT_SERIALIZE_CURVE_STYLE)) {
121 
122  // Node has a CurveStyle that we need to parse and save
124  QString curveName = curveStyle.loadXml (reader);
125 
126  m_curveStyles [curveName] = curveStyle;
127  }
128  }
129 
130  if (!success) {
131  reader.raiseError ("Cannot read curve styles");
132  }
133 }
134 
135 ColorPalette CurveStyles::pointColor (const QString &curveName) const
136 {
137  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
138  return m_curveStyles [curveName].pointStyle().paletteColor();
139 }
140 
141 bool CurveStyles::pointIsCircle (const QString &curveName) const
142 {
143  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
144  return m_curveStyles [curveName].pointStyle().isCircle();
145 }
146 
147 int CurveStyles::pointLineWidth (const QString &curveName) const
148 {
149  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
150  return m_curveStyles [curveName].pointStyle().lineWidth();
151 }
152 
153 QPolygonF CurveStyles::pointPolygon (const QString &curveName) const
154 {
155  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
156  return m_curveStyles [curveName].pointStyle().polygon();
157 }
158 
159 int CurveStyles::pointRadius (const QString &curveName) const
160 {
161  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
162  return m_curveStyles [curveName].pointStyle().radius();
163 }
164 
165 PointShape CurveStyles::pointShape (const QString &curveName) const
166 {
167  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
168  return m_curveStyles [curveName].pointStyle().shape ();
169 }
170 
171 const PointStyle CurveStyles::pointStyle (const QString &curveName) const
172 {
173  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
174  return m_curveStyles [curveName].pointStyle();
175 }
176 
177 void CurveStyles::saveXml(QXmlStreamWriter &writer) const
178 {
179  LOG4CPP_INFO_S ((*mainCat)) << "CurveStyles::saveXml";
180 
181  writer.writeStartElement(DOCUMENT_SERIALIZE_CURVE_STYLES);
182  CurveStylesInternal::const_iterator itr;
183  for (itr = m_curveStyles.begin(); itr != m_curveStyles.end(); itr++) {
184 
185  QString curveName = itr.key();
186  const CurveStyle &curveStyle = itr.value();
187 
188  curveStyle.saveXml(writer,
189  curveName);
190  }
191  writer.writeEndElement();
192 }
193 
194 void CurveStyles::setCurveStyle (const QString &curveName,
195  const CurveStyle &curveStyle)
196 {
197  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
198  m_curveStyles [curveName] = curveStyle;
199 }
200 
201 void CurveStyles::setLineColor (const QString &curveName,
202  ColorPalette lineColor)
203 {
204  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
205  CurveStyle &curveStyle = m_curveStyles [curveName];
206  curveStyle.setLineColor (lineColor);
207 }
208 
209 void CurveStyles::setLineConnectAs (const QString &curveName,
210  CurveConnectAs curveConnectAs)
211 {
212  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
213  CurveStyle &curveStyle = m_curveStyles [curveName];
214  curveStyle.setLineConnectAs(curveConnectAs);
215 }
216 
217 void CurveStyles::setLineWidth (const QString &curveName,
218  int width)
219 {
220  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
221  CurveStyle &curveStyle = m_curveStyles [curveName];
222  curveStyle.setLineWidth(width);
223 }
224 
225 void CurveStyles::setPointColor (const QString &curveName,
226  ColorPalette curveColor)
227 {
228  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
229  CurveStyle &curveStyle = m_curveStyles [curveName];
230  curveStyle.setPointColor (curveColor);
231 }
232 
233 void CurveStyles::setPointLineWidth (const QString &curveName,
234  int width)
235 {
236  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
237  CurveStyle &curveStyle = m_curveStyles [curveName];
238  curveStyle.setPointLineWidth (width);
239 }
240 
241 void CurveStyles::setPointRadius (const QString &curveName,
242  int radius)
243 {
244  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
245  CurveStyle &curveStyle = m_curveStyles [curveName];
246  curveStyle.setPointRadius (radius);
247 }
248 
249 void CurveStyles::setPointShape (const QString &curveName,
250  PointShape shape)
251 {
252  ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
253  CurveStyle &curveStyle = m_curveStyles [curveName];
254  curveStyle.setPointShape (shape);
255 }
256 
void setLineColor(const QString &curveName, ColorPalette lineColor)
Set method for line color in specified curve.
QStringList curveNames() const
List of all curve names.
Definition: CurveStyles.cpp:60
QPolygonF pointPolygon(const QString &curveName) const
Get method for curve point polygon in specified curve.
void setLineConnectAs(const QString &curveName, CurveConnectAs curveConnectAs)
Set method for connect as method for lines in specified curve.
bool pointIsCircle(const QString &curveName) const
Get method for curve point is circle in specified curve.
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 saveXml(QXmlStreamWriter &writer, const QString &curveName) const
Serialize to xml.
Definition: CurveStyle.cpp:87
void setLineWidth(const QString &curveName, int width)
Set method for line width in specified curve.
CurveStyles()
Default constructor.
Definition: CurveStyles.cpp:11
void setPointLineWidth(const QString &curveName, int width)
Set method for curve point perimeter line width.
Model for DlgSettingsCurveProperties and CmdSettingsCurveProperties.
Definition: CurveStyles.h:16
CurveStyles & operator=(const CurveStyles &other)
Assignment constructor.
Definition: CurveStyles.cpp:46
void loadXml(QXmlStreamReader &reader)
Load from serialized xml.
LineStyle lineStyle() const
Get method for LineStyle.
Definition: CurveStyle.cpp:20
const Curve & curveAxes() const
Get method for axis curve.
Definition: Document.cpp:279
int pointRadius(const QString &curveName) const
Get method for curve point radius.
PointStyle pointStyle() const
Get method for PointStyle.
Definition: CurveStyle.cpp:69
int lineWidth(const QString &curveName) const
Get method for line width in specified curve.
Definition: CurveStyles.cpp:95
ColorPalette lineColor(const QString &curveName) const
Get method for line color in specified curve.
Definition: CurveStyles.cpp:78
const LineStyle lineStyle(const QString &curveName) const
Get method for copying one line style in one step.
Definition: CurveStyles.cpp:90
void setCurveStyle(const QString &curveName, const CurveStyle &curveStyle)
Set method for curve style.
Details for a specific Point.
Definition: PointStyle.h:14
QString loadXml(QXmlStreamReader &reader)
Load from serialized xml. Returns the curve name.
Definition: CurveStyle.cpp:25
CurveConnectAs lineConnectAs(const QString &curveName) const
Get method for connect as method for lines in specified curve.
Definition: CurveStyles.cpp:84
Container for LineStyle and PointStyle for one Curve.
Definition: CurveStyle.h:12
Storage of one imported image and the data attached to that image.
Definition: Document.h:28
Container for one set of digitized Points.
Definition: Curve.h:24
Details for a specific Line.
Definition: LineStyle.h:13
PointShape pointShape(const QString &curveName) const
Get method for curve point shape.
QStringList curvesGraphsNames() const
See CurvesGraphs::curvesGraphsNames.
Definition: Document.cpp:317
ColorPalette pointColor(const QString &curveName) const
Get method for curve point color in specified curve.
void setPointRadius(const QString &curveName, int radius)
Set method for curve point radius.
void saveXml(QXmlStreamWriter &writer) const
Serialize to xml.
int pointLineWidth(const QString &curveName) const
Get method for curve point line width.
CurveStyle curveStyle(const QString &curveName) const
CurveStyle in specified curve.
Definition: CurveStyles.cpp:72
const Curve * curveForCurveName(const QString &curveName) const
See CurvesGraphs::curveForCurveNames, although this also works for AXIS_CURVE_NAME.
Definition: Document.cpp:299
CurveStyle curveStyle() const
Return the curve style.
Definition: Curve.cpp:70
void setPointShape(const QString &curveName, PointShape shape)
Set method for curve point shape in specified curve.
void setPointColor(const QString &curveName, ColorPalette curveColor)
Set method curve point color in specified curve.