Engauge Digitizer  2
DocumentModelColorFilter.cpp
1 #include "CmdMediator.h"
2 #include "DocumentModelColorFilter.h"
3 #include "DocumentSerialize.h"
4 #include "EngaugeAssert.h"
5 #include "Logger.h"
6 #include <QTextStream>
7 #include <QXmlStreamWriter>
8 #include "Xml.h"
9 
11 {
12 }
13 
15 {
16  // Axis curve
17  const Curve &curveAxes = document.curveAxes();
18  m_colorFilterSettingsList [AXIS_CURVE_NAME] = curveAxes.colorFilterSettings ();
19 
20  // Graph curves
21  QStringList graphCurveNames = document.curvesGraphsNames();
22  QStringList::const_iterator itr;
23  for (itr = graphCurveNames.begin (); itr != graphCurveNames.end (); itr++) {
24 
25  const QString &graphCurveName = *itr;
26  const Curve *graphCurve = document.curveForCurveName(graphCurveName);
27  m_colorFilterSettingsList [graphCurveName] = graphCurve->colorFilterSettings();
28  }
29 }
30 
32 {
33  // Curve filters
34  ColorFilterSettingsList::const_iterator itr;
35  for (itr = other.colorFilterSettingsList ().constBegin (); itr != other.colorFilterSettingsList().constEnd(); itr++) {
36  QString curveName = itr.key();
38  m_colorFilterSettingsList [curveName] = colorFilterSettings;
39  }
40 }
41 
43 {
44  // Curve filters
45  ColorFilterSettingsList::const_iterator itr;
46  for (itr = other.colorFilterSettingsList ().constBegin (); itr != other.colorFilterSettingsList ().constEnd(); itr++) {
47  QString curveName = itr.key();
49  m_colorFilterSettingsList [curveName] = colorFilterSettings;
50  }
51 
52  return *this;
53 }
54 
55 ColorFilterMode DocumentModelColorFilter::colorFilterMode(const QString &curveName) const
56 {
57  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
58  return m_colorFilterSettingsList [curveName].colorFilterMode();
59 }
60 
62 {
63  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
64  return m_colorFilterSettingsList [curveName];
65 }
66 
67 const ColorFilterSettingsList &DocumentModelColorFilter::colorFilterSettingsList () const
68 {
69  return m_colorFilterSettingsList;
70 }
71 
72 int DocumentModelColorFilter::foregroundHigh (const QString &curveName) const
73 {
74  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
75  return m_colorFilterSettingsList [curveName].foregroundHigh();
76 }
77 
78 int DocumentModelColorFilter::foregroundLow (const QString &curveName) const
79 {
80  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
81  return m_colorFilterSettingsList [curveName].foregroundLow();
82 }
83 
84 double DocumentModelColorFilter::high (const QString &curveName) const
85 {
86  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
87  return m_colorFilterSettingsList [curveName].high();
88 }
89 
90 int DocumentModelColorFilter::hueHigh (const QString &curveName) const
91 {
92  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
93  return m_colorFilterSettingsList [curveName].hueHigh();
94 }
95 
96 int DocumentModelColorFilter::hueLow (const QString &curveName) const
97 {
98  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
99  return m_colorFilterSettingsList [curveName].hueLow();
100 }
101 
102 int DocumentModelColorFilter::intensityHigh (const QString &curveName) const
103 {
104  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
105  return m_colorFilterSettingsList [curveName].intensityHigh();
106 }
107 
108 int DocumentModelColorFilter::intensityLow (const QString &curveName) const
109 {
110  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
111  return m_colorFilterSettingsList [curveName].intensityLow();
112 }
113 
114 void DocumentModelColorFilter::loadXml(QXmlStreamReader &reader)
115 {
116  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::loadXml";
117 
118  bool success = true;
119 
120  m_colorFilterSettingsList.clear();
121 
122  while ((reader.tokenType() != QXmlStreamReader::EndElement) &&
123  (reader.name() != DOCUMENT_SERIALIZE_FILTER)) {
124  loadNextFromReader(reader);
125  if (reader.atEnd()) {
126  success = false;
127  break;
128  }
129 
130  if ((reader.tokenType() == QXmlStreamReader::StartElement) &&
131  (reader.name() == DOCUMENT_SERIALIZE_COLOR_FILTER)) {
132 
133  QXmlStreamAttributes attributes = reader.attributes();
134 
135  if (attributes.hasAttribute(DOCUMENT_SERIALIZE_CURVE_NAME)) {
136 
137  QString curveName = attributes.value(DOCUMENT_SERIALIZE_CURVE_NAME).toString();
138 
140  m_colorFilterSettingsList [curveName] = colorFilterSettings;
141 
142  } else {
143  success = false;
144  break;
145  }
146  }
147  }
148 
149  if (!success) {
150  reader.raiseError("Cannot read filter data");
151  }
152 }
153 
154 double DocumentModelColorFilter::low (const QString &curveName) const
155 {
156  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
157  return m_colorFilterSettingsList [curveName].low();
158 }
159 
160 int DocumentModelColorFilter::saturationHigh (const QString &curveName) const
161 {
162  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
163  return m_colorFilterSettingsList [curveName].saturationHigh();
164 }
165 
166 int DocumentModelColorFilter::saturationLow (const QString &curveName) const
167 {
168  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
169  return m_colorFilterSettingsList [curveName].saturationLow();
170 }
171 
172 void DocumentModelColorFilter::saveXml(QXmlStreamWriter &writer) const
173 {
174  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelColorFilter::saveXml";
175 
176  writer.writeStartElement(DOCUMENT_SERIALIZE_FILTER);
177 
178  // Loop through filters
179  ColorFilterSettingsList::const_iterator itr;
180  for (itr = m_colorFilterSettingsList.begin (); itr != m_colorFilterSettingsList.end (); itr++) {
182  colorFilterSettings.saveXml(writer);
183  }
184 
185  writer.writeEndElement();
186 }
187 
188 void DocumentModelColorFilter::setColorFilterMode(const QString &curveName,
189  ColorFilterMode colorFilterMode)
190 {
191  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
192  m_colorFilterSettingsList [curveName].setColorFilterMode(colorFilterMode);
193 }
194 
195 void DocumentModelColorFilter::setForegroundHigh (const QString &curveName,
196  int foregroundHigh)
197 {
198  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
199  m_colorFilterSettingsList [curveName].setForegroundHigh(foregroundHigh);
200 }
201 
202 void DocumentModelColorFilter::setForegroundLow (const QString &curveName,
203  int foregroundLow)
204 {
205  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
206  m_colorFilterSettingsList [curveName].setForegroundLow(foregroundLow);
207 }
208 
209 void DocumentModelColorFilter::setHigh (const QString &curveName,
210  double s0To1)
211 {
212  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
213  m_colorFilterSettingsList [curveName].setHigh(s0To1);
214 }
215 
216 void DocumentModelColorFilter::setHueHigh (const QString &curveName,
217  int hueHigh)
218 {
219  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
220  m_colorFilterSettingsList [curveName].setHueHigh(hueHigh);
221 }
222 
223 void DocumentModelColorFilter::setHueLow (const QString &curveName,
224  int hueLow)
225 {
226  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
227  m_colorFilterSettingsList [curveName].setHueLow(hueLow);
228 }
229 
230 void DocumentModelColorFilter::setIntensityHigh (const QString &curveName,
231  int intensityHigh)
232 {
233  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
234  m_colorFilterSettingsList [curveName].setIntensityHigh(intensityHigh);
235 }
236 
237 void DocumentModelColorFilter::setIntensityLow (const QString &curveName,
238  int intensityLow)
239 {
240  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
241  m_colorFilterSettingsList [curveName].setIntensityLow(intensityLow);
242 }
243 
244 void DocumentModelColorFilter::setLow (const QString &curveName,
245  double s0To1)
246 {
247  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
248  m_colorFilterSettingsList [curveName].setLow(s0To1);
249 }
250 
251 void DocumentModelColorFilter::setSaturationHigh (const QString &curveName,
252  int saturationHigh)
253 {
254  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
255  m_colorFilterSettingsList [curveName].setSaturationHigh(saturationHigh);
256 }
257 
258 void DocumentModelColorFilter::setSaturationLow (const QString &curveName,
259  int saturationLow)
260 {
261  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
262  m_colorFilterSettingsList [curveName].setSaturationLow(saturationLow);
263 }
264 
265 void DocumentModelColorFilter::setValueHigh (const QString &curveName,
266  int valueHigh)
267 {
268  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
269  m_colorFilterSettingsList [curveName].setValueHigh(valueHigh);
270 }
271 
272 void DocumentModelColorFilter::setValueLow (const QString &curveName,
273  int valueLow)
274 {
275  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
276  m_colorFilterSettingsList [curveName].setValueLow(valueLow);
277 }
278 
279 int DocumentModelColorFilter::valueHigh (const QString &curveName) const
280 {
281  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
282  return m_colorFilterSettingsList [curveName].valueHigh();
283 }
284 
285 int DocumentModelColorFilter::valueLow (const QString &curveName) const
286 {
287  ENGAUGE_ASSERT (m_colorFilterSettingsList.contains (curveName));
288  return m_colorFilterSettingsList [curveName].valueLow();
289 }
DocumentModelColorFilter()
Default constructor.
int valueHigh(const QString &curveName) const
Get method for value high.
Color filter parameters for one curve. For a class, this is handled the same as LineStyle and PointSt...
void setColorFilterMode(const QString &curveName, ColorFilterMode colorFilterMode)
Set method for filter mode.
int saturationLow(const QString &curveName) const
Get method for saturation lower bound.
const Curve & curveAxes() const
Get method for axis curve.
Definition: Document.cpp:214
int valueLow(const QString &curveName) const
Get method for value low.
void setValueLow(const QString &curveName, int valueLow)
Set method for value low.
int foregroundLow(const QString &curveName) const
Get method for foreground lower bound.
DocumentModelColorFilter & operator=(const DocumentModelColorFilter &other)
Assignment constructor.
int intensityLow(const QString &curveName) const
Get method for intensity lower bound.
void setForegroundLow(const QString &curveName, int foregroundLow)
Set method for foreground lower bound.
void setHueLow(const QString &curveName, int hueLow)
Set method for hue lower bound.
double low(const QString &curveName) const
Low value of foreground, hue, intensity, saturation or value according to current filter mode normali...
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
void setIntensityLow(const QString &curveName, int intensityLow)
Set method for intensity lower bound.
void setHigh(const QString &curveName, double s0To1)
Set the high value for the current filter mode.
void setForegroundHigh(const QString &curveName, int foregroundHigh)
Set method for foreground higher bound.
Model for DlgSettingsColorFilter and CmdSettingsColorFilter.
int hueLow(const QString &curveName) const
Get method for hue lower bound.
double high(const QString &curveName) const
High value of foreground, hue, intensity, saturation or value according to current filter mode...
void saveXml(QXmlStreamWriter &writer) const
Save curve filter to stream.
void setIntensityHigh(const QString &curveName, int intensityHigh)
Set method for intensity higher bound.
int hueHigh(const QString &curveName) const
Get method for hue higher bound.
int foregroundHigh(const QString &curveName) const
Get method for foreground higher bound.
ColorFilterMode colorFilterMode(const QString &curveName) const
Get method for filter mode.
Storage of one imported image and the data attached to that image.
Definition: Document.h:28
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Container for one set of digitized Points.
Definition: Curve.h:26
QStringList curvesGraphsNames() const
See CurvesGraphs::curvesGraphsNames.
Definition: Document.cpp:252
void setLow(const QString &curveName, double s0To1)
Set the low value for the current filter mode.
const ColorFilterSettings colorFilterSettings(const QString &curveName) const
Get method for copying one color filter. Cannot return just a reference or else there is a warning ab...
void setSaturationLow(const QString &curveName, int saturationLow)
Set method for saturation low.
void setSaturationHigh(const QString &curveName, int saturationHigh)
Set method for saturation high.
void setHueHigh(const QString &curveName, int hueHigh)
Set method for hue higher bound.
const Curve * curveForCurveName(const QString &curveName) const
See CurvesGraphs::curveForCurveNames, although this also works for AXIS_CURVE_NAME.
Definition: Document.cpp:234
void setValueHigh(const QString &curveName, int valueHigh)
Set method for value high.
int intensityHigh(const QString &curveName) const
Get method for intensity higher bound.
const ColorFilterSettingsList & colorFilterSettingsList() const
Get method for copying all color filters in one step.
ColorFilterSettings colorFilterSettings() const
Return the color filter.
Definition: Curve.cpp:122
int saturationHigh(const QString &curveName) const
Get method for saturation higher bound.