00001
00002
00003
00004
00005
00006
00007 #include "CmdMediator.h"
00008 #include "CoordSystem.h"
00009 #include "DocumentModelColorFilter.h"
00010 #include "DocumentSerialize.h"
00011 #include "EngaugeAssert.h"
00012 #include "Logger.h"
00013 #include <QStringList>
00014 #include <QTextStream>
00015 #include <QXmlStreamWriter>
00016 #include "Xml.h"
00017
00018 DocumentModelColorFilter::DocumentModelColorFilter()
00019 {
00020 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::DocumentModelColorFilter";
00021 }
00022
00023 DocumentModelColorFilter::DocumentModelColorFilter(const CoordSystem &coordSystem)
00024 {
00025 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::DocumentModelColorFilter";
00026
00027
00028 const Curve &curveAxes = coordSystem.curveAxes();
00029 m_colorFilterSettingsList [AXIS_CURVE_NAME] = curveAxes.colorFilterSettings ();
00030
00031
00032 QStringList graphCurveNames = coordSystem.curvesGraphsNames();
00033 QStringList::const_iterator itr;
00034 for (itr = graphCurveNames.begin (); itr != graphCurveNames.end (); itr++) {
00035
00036 const QString &graphCurveName = *itr;
00037 const Curve *graphCurve = coordSystem.curveForCurveName(graphCurveName);
00038 m_colorFilterSettingsList [graphCurveName] = graphCurve->colorFilterSettings();
00039 }
00040 }
00041
00042 DocumentModelColorFilter::DocumentModelColorFilter(const DocumentModelColorFilter &other)
00043 {
00044
00045 ColorFilterSettingsList::const_iterator itr;
00046 for (itr = other.colorFilterSettingsList ().constBegin (); itr != other.colorFilterSettingsList().constEnd(); itr++) {
00047 QString curveName = itr.key();
00048 ColorFilterSettings colorFilterSettings = itr.value();
00049 m_colorFilterSettingsList [curveName] = colorFilterSettings;
00050 }
00051 }
00052
00053 DocumentModelColorFilter &DocumentModelColorFilter::operator=(const DocumentModelColorFilter &other)
00054 {
00055
00056 ColorFilterSettingsList::const_iterator itr;
00057 for (itr = other.colorFilterSettingsList ().constBegin (); itr != other.colorFilterSettingsList ().constEnd(); itr++) {
00058 QString curveName = itr.key();
00059 ColorFilterSettings colorFilterSettings = itr.value();
00060 m_colorFilterSettingsList [curveName] = colorFilterSettings;
00061 }
00062
00063 return *this;
00064 }
00065
00066 ColorFilterMode DocumentModelColorFilter::colorFilterMode(const QString &curveName) const
00067 {
00068 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00069 return m_colorFilterSettingsList [curveName].colorFilterMode();
00070 }
00071
00072 const ColorFilterSettings DocumentModelColorFilter::colorFilterSettings (const QString &curveName) const
00073 {
00074 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00075 return m_colorFilterSettingsList [curveName];
00076 }
00077
00078 const ColorFilterSettingsList &DocumentModelColorFilter::colorFilterSettingsList () const
00079 {
00080 return m_colorFilterSettingsList;
00081 }
00082
00083 int DocumentModelColorFilter::foregroundHigh (const QString &curveName) const
00084 {
00085 QStringList curveNames (m_colorFilterSettingsList.keys());
00086 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::foregroundHigh"
00087 << " curve=" << curveName.toLatin1().data()
00088 << " curves=" << curveNames.join(",").toLatin1().data();
00089
00090 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00091 return m_colorFilterSettingsList [curveName].foregroundHigh();
00092 }
00093
00094 int DocumentModelColorFilter::foregroundLow (const QString &curveName) const
00095 {
00096 QStringList curveNames (m_colorFilterSettingsList.keys());
00097 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::foregroundLow"
00098 << " curve=" << curveName.toLatin1().data()
00099 << " curves=" << curveNames.join(",").toLatin1().data();
00100
00101 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00102 return m_colorFilterSettingsList [curveName].foregroundLow();
00103 }
00104
00105 double DocumentModelColorFilter::high (const QString &curveName) const
00106 {
00107 QStringList curveNames (m_colorFilterSettingsList.keys());
00108 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::high"
00109 << " curve=" << curveName.toLatin1().data()
00110 << " curves=" << curveNames.join(",").toLatin1().data();
00111
00112 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00113 return m_colorFilterSettingsList [curveName].high();
00114 }
00115
00116 int DocumentModelColorFilter::hueHigh (const QString &curveName) const
00117 {
00118 QStringList curveNames (m_colorFilterSettingsList.keys());
00119 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::hueHigh"
00120 << " curve=" << curveName.toLatin1().data()
00121 << " curves=" << curveNames.join(",").toLatin1().data();
00122
00123 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00124 return m_colorFilterSettingsList [curveName].hueHigh();
00125 }
00126
00127 int DocumentModelColorFilter::hueLow (const QString &curveName) const
00128 {
00129 QStringList curveNames (m_colorFilterSettingsList.keys());
00130 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::hueLow"
00131 << " curve=" << curveName.toLatin1().data()
00132 << " curves=" << curveNames.join(",").toLatin1().data();
00133
00134 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00135 return m_colorFilterSettingsList [curveName].hueLow();
00136 }
00137
00138 int DocumentModelColorFilter::intensityHigh (const QString &curveName) const
00139 {
00140 QStringList curveNames (m_colorFilterSettingsList.keys());
00141 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::intensityHigh"
00142 << " curve=" << curveName.toLatin1().data()
00143 << " curves=" << curveNames.join(",").toLatin1().data();
00144
00145 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00146 return m_colorFilterSettingsList [curveName].intensityHigh();
00147 }
00148
00149 int DocumentModelColorFilter::intensityLow (const QString &curveName) const
00150 {
00151 QStringList curveNames (m_colorFilterSettingsList.keys());
00152 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::intensityLow"
00153 << " curve=" << curveName.toLatin1().data()
00154 << " curves=" << curveNames.join(",").toLatin1().data();
00155
00156 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00157 return m_colorFilterSettingsList [curveName].intensityLow();
00158 }
00159
00160 void DocumentModelColorFilter::loadXml(QXmlStreamReader &reader)
00161 {
00162 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::loadXml";
00163
00164 bool success = true;
00165
00166 m_colorFilterSettingsList.clear();
00167
00168
00169
00170 bool inFilter = false;
00171 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
00172 (reader.name() != DOCUMENT_SERIALIZE_FILTER)) {
00173 loadNextFromReader(reader);
00174 if (reader.atEnd()) {
00175 success = false;
00176 break;
00177 }
00178
00179 if ((reader.tokenType() == QXmlStreamReader::StartElement) &&
00180 (reader.name() == DOCUMENT_SERIALIZE_COLOR_FILTER)) {
00181
00182 inFilter = true;
00183 }
00184
00185 if (inFilter && ((reader.tokenType() == QXmlStreamReader::StartElement) &&
00186 (reader.name() == DOCUMENT_SERIALIZE_COLOR_FILTER))) {
00187
00188 QXmlStreamAttributes attributes = reader.attributes();
00189
00190 if (attributes.hasAttribute(DOCUMENT_SERIALIZE_CURVE_NAME)) {
00191
00192 QString curveName = attributes.value(DOCUMENT_SERIALIZE_CURVE_NAME).toString();
00193
00194 ColorFilterSettings colorFilterSettings (reader);
00195 m_colorFilterSettingsList [curveName] = colorFilterSettings;
00196
00197 } else {
00198 success = false;
00199 break;
00200 }
00201 }
00202 }
00203
00204 if (!success) {
00205 reader.raiseError(QObject::tr ("Cannot read filter data"));
00206 }
00207
00208
00209 loadNextFromReader(reader);
00210 }
00211
00212 double DocumentModelColorFilter::low (const QString &curveName) const
00213 {
00214 QStringList curveNames (m_colorFilterSettingsList.keys());
00215 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::low"
00216 << " curve=" << curveName.toLatin1().data()
00217 << " curves=" << curveNames.join(",").toLatin1().data();
00218
00219 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00220 return m_colorFilterSettingsList [curveName].low();
00221 }
00222
00223 int DocumentModelColorFilter::saturationHigh (const QString &curveName) const
00224 {
00225 QStringList curveNames (m_colorFilterSettingsList.keys());
00226 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::saturationHigh"
00227 << " curve=" << curveName.toLatin1().data()
00228 << " curves=" << curveNames.join(",").toLatin1().data();
00229
00230 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00231 return m_colorFilterSettingsList [curveName].saturationHigh();
00232 }
00233
00234 int DocumentModelColorFilter::saturationLow (const QString &curveName) const
00235 {
00236 QStringList curveNames (m_colorFilterSettingsList.keys());
00237 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::saturationLow"
00238 << " curve=" << curveName.toLatin1().data()
00239 << " curves=" << curveNames.join(",").toLatin1().data();
00240
00241 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00242 return m_colorFilterSettingsList [curveName].saturationLow();
00243 }
00244
00245 void DocumentModelColorFilter::saveXml(QXmlStreamWriter &writer) const
00246 {
00247 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::saveXml";
00248
00249 writer.writeStartElement(DOCUMENT_SERIALIZE_FILTER);
00250
00251
00252 ColorFilterSettingsList::const_iterator itr;
00253 for (itr = m_colorFilterSettingsList.begin (); itr != m_colorFilterSettingsList.end (); itr++) {
00254
00255 QString curveName = itr.key();
00256 const ColorFilterSettings &colorFilterSettings = itr.value();
00257
00258 colorFilterSettings.saveXml(writer,
00259 curveName);
00260 }
00261
00262 writer.writeEndElement();
00263 }
00264
00265 void DocumentModelColorFilter::setColorFilterMode(const QString &curveName,
00266 ColorFilterMode colorFilterMode)
00267 {
00268 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00269 m_colorFilterSettingsList [curveName].setColorFilterMode(colorFilterMode);
00270 }
00271
00272 void DocumentModelColorFilter::setForegroundHigh (const QString &curveName,
00273 int foregroundHigh)
00274 {
00275 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00276 m_colorFilterSettingsList [curveName].setForegroundHigh(foregroundHigh);
00277 }
00278
00279 void DocumentModelColorFilter::setForegroundLow (const QString &curveName,
00280 int foregroundLow)
00281 {
00282 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00283 m_colorFilterSettingsList [curveName].setForegroundLow(foregroundLow);
00284 }
00285
00286 void DocumentModelColorFilter::setHigh (const QString &curveName,
00287 double s0To1)
00288 {
00289 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00290 m_colorFilterSettingsList [curveName].setHigh(s0To1);
00291 }
00292
00293 void DocumentModelColorFilter::setHueHigh (const QString &curveName,
00294 int hueHigh)
00295 {
00296 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00297 m_colorFilterSettingsList [curveName].setHueHigh(hueHigh);
00298 }
00299
00300 void DocumentModelColorFilter::setHueLow (const QString &curveName,
00301 int hueLow)
00302 {
00303 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00304 m_colorFilterSettingsList [curveName].setHueLow(hueLow);
00305 }
00306
00307 void DocumentModelColorFilter::setIntensityHigh (const QString &curveName,
00308 int intensityHigh)
00309 {
00310 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00311 m_colorFilterSettingsList [curveName].setIntensityHigh(intensityHigh);
00312 }
00313
00314 void DocumentModelColorFilter::setIntensityLow (const QString &curveName,
00315 int intensityLow)
00316 {
00317 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00318 m_colorFilterSettingsList [curveName].setIntensityLow(intensityLow);
00319 }
00320
00321 void DocumentModelColorFilter::setLow (const QString &curveName,
00322 double s0To1)
00323 {
00324 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00325 m_colorFilterSettingsList [curveName].setLow(s0To1);
00326 }
00327
00328 void DocumentModelColorFilter::setSaturationHigh (const QString &curveName,
00329 int saturationHigh)
00330 {
00331 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00332 m_colorFilterSettingsList [curveName].setSaturationHigh(saturationHigh);
00333 }
00334
00335 void DocumentModelColorFilter::setSaturationLow (const QString &curveName,
00336 int saturationLow)
00337 {
00338 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00339 m_colorFilterSettingsList [curveName].setSaturationLow(saturationLow);
00340 }
00341
00342 void DocumentModelColorFilter::setValueHigh (const QString &curveName,
00343 int valueHigh)
00344 {
00345 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00346 m_colorFilterSettingsList [curveName].setValueHigh(valueHigh);
00347 }
00348
00349 void DocumentModelColorFilter::setValueLow (const QString &curveName,
00350 int valueLow)
00351 {
00352 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00353 m_colorFilterSettingsList [curveName].setValueLow(valueLow);
00354 }
00355
00356 int DocumentModelColorFilter::valueHigh (const QString &curveName) const
00357 {
00358 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00359 return m_colorFilterSettingsList [curveName].valueHigh();
00360 }
00361
00362 int DocumentModelColorFilter::valueLow (const QString &curveName) const
00363 {
00364 ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
00365 return m_colorFilterSettingsList [curveName].valueLow();
00366 }