00001
00002
00003
00004
00005
00006
00007 #include "CmdMediator.h"
00008 #include "CoordSystem.h"
00009 #include "CurveStyles.h"
00010 #include "DocumentSerialize.h"
00011 #include "EngaugeAssert.h"
00012 #include "Logger.h"
00013 #include <QDebug>
00014 #include <QXmlStreamReader>
00015 #include <QXmlStreamWriter>
00016 #include "Xml.h"
00017
00018 CurveStyles::CurveStyles()
00019 {
00020 }
00021
00022 CurveStyles::CurveStyles (const CoordSystem &coordSystem)
00023 {
00024
00025 const Curve &curveAxes = coordSystem.curveAxes();
00026 m_curveStyles [AXIS_CURVE_NAME].setLineStyle (curveAxes.curveStyle().lineStyle());
00027 m_curveStyles [AXIS_CURVE_NAME].setPointStyle (curveAxes.curveStyle().pointStyle());
00028
00029
00030 QStringList graphCurveNames = coordSystem.curvesGraphsNames();
00031 QStringList::const_iterator itr;
00032 for (itr = graphCurveNames.begin (); itr != graphCurveNames.end (); itr++) {
00033
00034 const QString &graphCurveName = *itr;
00035 const Curve *graphCurve = coordSystem.curveForCurveName(graphCurveName);
00036 m_curveStyles [graphCurveName].setLineStyle (graphCurve->curveStyle().lineStyle());
00037 m_curveStyles [graphCurveName].setPointStyle (graphCurve->curveStyle().pointStyle());
00038 }
00039 }
00040
00041 CurveStyles::CurveStyles (const CurveStyles &other)
00042 {
00043 const QStringList curveNames = other.curveNames();
00044 QStringList::const_iterator itr;
00045 for (itr = curveNames.begin(); itr != curveNames.end(); itr++) {
00046
00047 QString curveName = *itr;
00048
00049 m_curveStyles [curveName] = other.curveStyle (curveName);
00050 }
00051 }
00052
00053 CurveStyles &CurveStyles::operator=(const CurveStyles &other)
00054 {
00055 const QStringList curveNames = other.curveNames();
00056 QStringList::const_iterator itr;
00057 for (itr = curveNames.begin(); itr != curveNames.end(); itr++) {
00058
00059 QString curveName = *itr;
00060
00061 m_curveStyles [curveName] = other.curveStyle (curveName);
00062 }
00063
00064 return *this;
00065 }
00066
00067 QStringList CurveStyles::curveNames () const
00068 {
00069 QStringList curveNames;
00070 CurveStylesInternal::const_iterator itr;
00071 for (itr = m_curveStyles.begin(); itr != m_curveStyles.end(); itr++) {
00072
00073 curveNames << itr.key();
00074 }
00075
00076 return curveNames;
00077 }
00078
00079 CurveStyle CurveStyles::curveStyle (const QString &curveName) const
00080 {
00081 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00082 return m_curveStyles [curveName];
00083 }
00084
00085 ColorPalette CurveStyles::lineColor (const QString &curveName) const
00086 {
00087 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00088 return m_curveStyles [curveName].lineStyle().paletteColor();
00089 }
00090
00091 CurveConnectAs CurveStyles::lineConnectAs (const QString &curveName) const
00092 {
00093 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00094 return m_curveStyles [curveName].lineStyle().curveConnectAs();
00095 }
00096
00097 const LineStyle CurveStyles::lineStyle (const QString &curveName) const
00098 {
00099 return m_curveStyles [curveName].lineStyle();
00100 }
00101
00102 int CurveStyles::lineWidth (const QString &curveName) const
00103 {
00104 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00105 return m_curveStyles [curveName].lineStyle().width();
00106 }
00107
00108 void CurveStyles::loadXml (QXmlStreamReader &reader)
00109 {
00110 bool success = true;
00111
00112
00113 while (loadNextFromReader (reader)) {
00114
00115 if (reader.atEnd() || reader.hasError ()) {
00116 success = false;
00117 break;
00118 }
00119
00120 if ((reader.tokenType() == QXmlStreamReader::EndElement) &&
00121 (reader.name() == DOCUMENT_SERIALIZE_CURVE_STYLES)) {
00122 break;
00123 }
00124
00125
00126 if ((reader.tokenType() == QXmlStreamReader::StartElement) &&
00127 (reader.name() == DOCUMENT_SERIALIZE_CURVE_STYLE)) {
00128
00129
00130 CurveStyle curveStyle;
00131 QString curveName = curveStyle.loadXml (reader);
00132
00133 m_curveStyles [curveName] = curveStyle;
00134 }
00135 }
00136
00137 if (!success) {
00138 reader.raiseError ("Cannot read curve styles");
00139 }
00140 }
00141
00142 ColorPalette CurveStyles::pointColor (const QString &curveName) const
00143 {
00144 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00145 return m_curveStyles [curveName].pointStyle().paletteColor();
00146 }
00147
00148 bool CurveStyles::pointIsCircle (const QString &curveName) const
00149 {
00150 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00151 return m_curveStyles [curveName].pointStyle().isCircle();
00152 }
00153
00154 int CurveStyles::pointLineWidth (const QString &curveName) const
00155 {
00156 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00157 return m_curveStyles [curveName].pointStyle().lineWidth();
00158 }
00159
00160 QPolygonF CurveStyles::pointPolygon (const QString &curveName) const
00161 {
00162 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00163 return m_curveStyles [curveName].pointStyle().polygon();
00164 }
00165
00166 int CurveStyles::pointRadius (const QString &curveName) const
00167 {
00168 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00169 return m_curveStyles [curveName].pointStyle().radius();
00170 }
00171
00172 PointShape CurveStyles::pointShape (const QString &curveName) const
00173 {
00174 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00175 return m_curveStyles [curveName].pointStyle().shape ();
00176 }
00177
00178 const PointStyle CurveStyles::pointStyle (const QString &curveName) const
00179 {
00180 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00181 return m_curveStyles [curveName].pointStyle();
00182 }
00183
00184 void CurveStyles::saveXml(QXmlStreamWriter &writer) const
00185 {
00186 LOG4CPP_INFO_S ((*mainCat)) << "CurveStyles::saveXml";
00187
00188 writer.writeStartElement(DOCUMENT_SERIALIZE_CURVE_STYLES);
00189 CurveStylesInternal::const_iterator itr;
00190 for (itr = m_curveStyles.begin(); itr != m_curveStyles.end(); itr++) {
00191
00192 QString curveName = itr.key();
00193 const CurveStyle &curveStyle = itr.value();
00194
00195 curveStyle.saveXml(writer,
00196 curveName);
00197 }
00198 writer.writeEndElement();
00199 }
00200
00201 void CurveStyles::setCurveStyle (const QString &curveName,
00202 const CurveStyle &curveStyle)
00203 {
00204 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00205 m_curveStyles [curveName] = curveStyle;
00206 }
00207
00208 void CurveStyles::setLineColor (const QString &curveName,
00209 ColorPalette lineColor)
00210 {
00211 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00212 CurveStyle &curveStyle = m_curveStyles [curveName];
00213 curveStyle.setLineColor (lineColor);
00214 }
00215
00216 void CurveStyles::setLineConnectAs (const QString &curveName,
00217 CurveConnectAs curveConnectAs)
00218 {
00219 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00220 CurveStyle &curveStyle = m_curveStyles [curveName];
00221 curveStyle.setLineConnectAs(curveConnectAs);
00222 }
00223
00224 void CurveStyles::setLineWidth (const QString &curveName,
00225 int width)
00226 {
00227 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00228 CurveStyle &curveStyle = m_curveStyles [curveName];
00229 curveStyle.setLineWidth(width);
00230 }
00231
00232 void CurveStyles::setPointColor (const QString &curveName,
00233 ColorPalette curveColor)
00234 {
00235 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00236 CurveStyle &curveStyle = m_curveStyles [curveName];
00237 curveStyle.setPointColor (curveColor);
00238 }
00239
00240 void CurveStyles::setPointLineWidth (const QString &curveName,
00241 int width)
00242 {
00243 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00244 CurveStyle &curveStyle = m_curveStyles [curveName];
00245 curveStyle.setPointLineWidth (width);
00246 }
00247
00248 void CurveStyles::setPointRadius (const QString &curveName,
00249 int radius)
00250 {
00251 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00252 CurveStyle &curveStyle = m_curveStyles [curveName];
00253 curveStyle.setPointRadius (radius);
00254 }
00255
00256 void CurveStyles::setPointShape (const QString &curveName,
00257 PointShape shape)
00258 {
00259 ENGAUGE_ASSERT (m_curveStyles.contains (curveName));
00260 CurveStyle &curveStyle = m_curveStyles [curveName];
00261 curveStyle.setPointShape (shape);
00262 }
00263