7 #include "CmdMediator.h" 8 #include "ColorConstants.h" 9 #include "ColorFilterSettings.h" 10 #include "DocumentSerialize.h" 11 #include "EngaugeAssert.h" 12 #include "GridCoordDisable.h" 14 #include <QTextStream> 15 #include <QXmlStreamWriter> 19 m_colorFilterMode (COLOR_FILTER_MODE_INTENSITY),
20 m_intensityLow (INTENSITY_LOW_DEFAULT),
21 m_intensityHigh (INTENSITY_HIGH_DEFAULT),
22 m_foregroundLow (FOREGROUND_LOW_DEFAULT),
23 m_foregroundHigh (FOREGROUND_HIGH_DEFAULT),
24 m_hueLow (HUE_LOW_DEFAULT),
25 m_hueHigh (HUE_HIGH_DEFAULT),
26 m_saturationLow (SATURATION_LOW_DEFAULT),
27 m_saturationHigh (SATURATION_HIGH_DEFAULT),
28 m_valueLow (VALUE_LOW_DEFAULT),
29 m_valueHigh (VALUE_HIGH_DEFAULT)
44 m_colorFilterMode (colorFilterMode),
45 m_intensityLow (intensityLow),
46 m_intensityHigh (intensityHigh),
47 m_foregroundLow (foregroundLow),
48 m_foregroundHigh (foregroundHigh),
51 m_saturationLow (saturationLow),
52 m_saturationHigh (saturationHigh),
53 m_valueLow (valueLow),
54 m_valueHigh (valueHigh)
97 return m_colorFilterMode;
107 return m_foregroundHigh;
112 return m_foregroundLow;
117 switch (m_colorFilterMode)
119 case COLOR_FILTER_MODE_FOREGROUND:
120 return (
double) (m_foregroundHigh - FOREGROUND_MIN) /
121 (
double) (FOREGROUND_MAX - FOREGROUND_MIN);
123 case COLOR_FILTER_MODE_HUE:
124 return (
double) (m_hueHigh - HUE_MIN) /
125 ((
double) HUE_MAX - HUE_MIN);
127 case COLOR_FILTER_MODE_INTENSITY:
128 return (
double) (m_intensityHigh - INTENSITY_MIN) /
129 (
double) (INTENSITY_MAX - INTENSITY_MIN);
131 case COLOR_FILTER_MODE_SATURATION:
132 return (
double) (m_saturationHigh - SATURATION_MIN) /
133 (
double) (SATURATION_MAX - SATURATION_MIN);
135 case COLOR_FILTER_MODE_VALUE:
136 return (
double) (m_valueHigh - VALUE_MIN) /
137 (
double) (VALUE_MAX - VALUE_MIN);
140 ENGAUGE_ASSERT (
false);
141 return (
double) (m_intensityHigh - INTENSITY_MIN) /
142 (
double) (INTENSITY_MAX - INTENSITY_MIN);
158 return m_intensityHigh;
163 return m_intensityLow;
168 LOG4CPP_INFO_S ((*mainCat)) <<
"ColorFilterSettings::loadXml";
172 QXmlStreamAttributes attributes = reader.attributes();
174 if (attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_MODE) &&
175 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_INTENSITY_LOW) &&
176 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_INTENSITY_HIGH) &&
177 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_FOREGROUND_LOW) &&
178 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_FOREGROUND_HIGH) &&
179 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_HUE_LOW) &&
180 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_HUE_HIGH) &&
181 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_SATURATION_LOW) &&
182 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_SATURATION_HIGH) &&
183 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_VALUE_LOW) &&
184 attributes.hasAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_VALUE_HIGH)) {
186 setColorFilterMode ((ColorFilterMode) attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_MODE).toInt());
187 setIntensityLow (attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_INTENSITY_LOW).toInt());
188 setIntensityHigh ((GridCoordDisable) attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_INTENSITY_HIGH).toInt());
189 setForegroundLow (attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_FOREGROUND_LOW).toInt());
190 setForegroundHigh (attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_FOREGROUND_HIGH).toInt());
191 setHueLow (attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_HUE_LOW).toInt());
192 setHueHigh (attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_HUE_HIGH).toInt());
193 setSaturationLow ((GridCoordDisable) attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_SATURATION_LOW).toInt());
194 setSaturationHigh (attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_SATURATION_HIGH).toInt());
195 setValueLow (attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_VALUE_LOW).toInt());
196 setValueHigh (attributes.value(DOCUMENT_SERIALIZE_COLOR_FILTER_VALUE_HIGH).toInt());
199 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
200 (reader.name() != DOCUMENT_SERIALIZE_COLOR_FILTER)){
201 loadNextFromReader(reader);
203 if (reader.atEnd()) {
211 reader.raiseError (QObject::tr (
"Cannot read curve filter data"));
217 switch (m_colorFilterMode)
219 case COLOR_FILTER_MODE_FOREGROUND:
220 return (
double) (m_foregroundLow - FOREGROUND_MIN) /
221 (
double) (FOREGROUND_MAX - FOREGROUND_MIN);
223 case COLOR_FILTER_MODE_HUE:
224 return (
double) (m_hueLow - HUE_MIN) /
225 ((
double) HUE_MAX - HUE_MIN);
227 case COLOR_FILTER_MODE_INTENSITY:
228 return (
double) (m_intensityLow - INTENSITY_MIN) /
229 (
double) (INTENSITY_MAX - INTENSITY_MIN);
231 case COLOR_FILTER_MODE_SATURATION:
232 return (
double) (m_saturationLow - SATURATION_MIN) /
233 (
double) (SATURATION_MAX - SATURATION_MIN);
235 case COLOR_FILTER_MODE_VALUE:
236 return (
double) (m_valueLow - VALUE_MIN) /
237 (
double) (VALUE_MAX - VALUE_MIN);
240 ENGAUGE_ASSERT (
false);
241 return (
double) (m_intensityLow - INTENSITY_MIN) /
242 (
double) (INTENSITY_MAX - INTENSITY_MIN);
247 QTextStream &str)
const 249 str << indentation <<
"ColorFilterSettings\n";
251 indentation += INDENTATION_DELTA;
253 switch (m_colorFilterMode) {
254 case COLOR_FILTER_MODE_INTENSITY:
255 str << indentation <<
"intensityLow=" << m_intensityLow <<
"\n";
256 str << indentation <<
"intensityHigh=" << m_intensityHigh <<
"\n";
259 case COLOR_FILTER_MODE_FOREGROUND:
260 str << indentation <<
"foregroundLow=" << m_foregroundLow <<
"\n";
261 str << indentation <<
"foregroundHigh=" << m_foregroundHigh <<
"\n";
264 case COLOR_FILTER_MODE_HUE:
265 str << indentation <<
"hueLow=" << m_hueLow <<
"\n";
266 str << indentation <<
"hueHigh=" << m_hueHigh <<
"\n";
269 case COLOR_FILTER_MODE_SATURATION:
270 str << indentation <<
"saturationLow" << m_saturationLow <<
"\n";
271 str << indentation <<
"saturationHigh" << m_saturationHigh <<
"\n";
274 case COLOR_FILTER_MODE_VALUE:
275 str << indentation <<
"valueLow=" << m_valueLow <<
"\n";
276 str << indentation <<
"valueHigh=" << m_valueHigh <<
"\n";
286 return m_saturationHigh;
291 return m_saturationLow;
295 const QString &curveName)
const 297 LOG4CPP_INFO_S ((*mainCat)) <<
"ColorFilterSettings::saveXml";
299 writer.writeStartElement(DOCUMENT_SERIALIZE_COLOR_FILTER);
300 writer.writeAttribute(DOCUMENT_SERIALIZE_CURVE_NAME, curveName);
301 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_MODE, QString::number (m_colorFilterMode));
302 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_MODE_STRING, colorFilterModeToString (m_colorFilterMode));
303 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_INTENSITY_LOW, QString::number (m_intensityLow));
304 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_INTENSITY_HIGH, QString::number (m_intensityHigh));
305 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_FOREGROUND_LOW, QString::number (m_foregroundLow));
306 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_FOREGROUND_HIGH, QString::number (m_foregroundHigh));
307 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_HUE_LOW, QString::number (m_hueLow));
308 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_HUE_HIGH, QString::number (m_hueHigh));
309 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_SATURATION_LOW, QString::number (m_saturationLow));
310 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_SATURATION_HIGH, QString::number (m_saturationHigh));
311 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_VALUE_LOW, QString::number (m_valueLow));
312 writer.writeAttribute(DOCUMENT_SERIALIZE_COLOR_FILTER_VALUE_HIGH, QString::number (m_valueHigh));
313 writer.writeEndElement();
323 ENGAUGE_ASSERT (FOREGROUND_MIN <= foregroundHigh && foregroundHigh <= FOREGROUND_MAX);
329 ENGAUGE_ASSERT (FOREGROUND_MIN <= foregroundLow && foregroundLow <= FOREGROUND_MAX);
335 switch (m_colorFilterMode) {
336 case COLOR_FILTER_MODE_FOREGROUND:
340 case COLOR_FILTER_MODE_HUE:
341 setHueHigh (HUE_MIN + s0To1 * (HUE_MAX - HUE_MIN));
344 case COLOR_FILTER_MODE_INTENSITY:
348 case COLOR_FILTER_MODE_SATURATION:
352 case COLOR_FILTER_MODE_VALUE:
353 setValueHigh (VALUE_MIN + s0To1 * (VALUE_MAX - VALUE_MIN));
357 ENGAUGE_ASSERT (
false);
363 ENGAUGE_ASSERT (HUE_MIN <= hueHigh && hueHigh <= HUE_MAX);
369 ENGAUGE_ASSERT (HUE_MIN <= hueLow && hueLow <= HUE_MAX);
375 ENGAUGE_ASSERT (INTENSITY_MIN <= intensityHigh && intensityHigh <= INTENSITY_MAX);
381 ENGAUGE_ASSERT (INTENSITY_MIN <= intensityLow && intensityLow <= INTENSITY_MAX);
387 switch (m_colorFilterMode) {
388 case COLOR_FILTER_MODE_FOREGROUND:
389 setForegroundLow (FOREGROUND_MIN + s0To1 * (FOREGROUND_MAX - FOREGROUND_MIN));
392 case COLOR_FILTER_MODE_HUE:
393 setHueLow (HUE_MIN + s0To1 * (HUE_MAX - HUE_MIN));
396 case COLOR_FILTER_MODE_INTENSITY:
397 setIntensityLow (INTENSITY_MIN + s0To1 * (INTENSITY_MAX - INTENSITY_MIN));
400 case COLOR_FILTER_MODE_SATURATION:
401 setSaturationLow (SATURATION_MIN + s0To1 * (SATURATION_MAX - SATURATION_MIN));
404 case COLOR_FILTER_MODE_VALUE:
405 setValueLow (VALUE_MIN + s0To1 * (VALUE_MAX - VALUE_MIN));
409 ENGAUGE_ASSERT (
false);
415 ENGAUGE_ASSERT (SATURATION_MIN <= saturationHigh && saturationHigh <= SATURATION_MAX);
421 ENGAUGE_ASSERT (SATURATION_MIN <= saturationLow && saturationLow <= SATURATION_MAX);
427 ENGAUGE_ASSERT (VALUE_MIN <= valueHigh && valueHigh <= VALUE_MAX);
433 ENGAUGE_ASSERT (VALUE_MIN <= valueLow && valueLow <= VALUE_MAX);
void setSaturationLow(int saturationLow)
Set method for saturation low.
void setLow(double s0To1)
Set the low value for the current filter mode.
void setHueLow(int hueLow)
Set method for hue lower bound.
int saturationLow() const
Get method for saturation lower bound.
Color filter parameters for one curve. For a class, this is handled the same as LineStyle and PointSt...
void setColorFilterMode(ColorFilterMode colorFilterMode)
Set method for filter mode.
int hueLow() const
Get method for hue lower bound.
int foregroundHigh() const
Get method for foreground higher bound.
int hueHigh() const
Get method for hue higher bound.
int saturationHigh() const
Get method for saturation higher bound.
ColorFilterSettings & operator=(const ColorFilterSettings &other)
Assignment operator.
void setForegroundLow(int foregroundLow)
Set method for foreground lower bound.
void setHigh(double s0To1)
Set the high value for the current filter mode.
int foregroundLow() const
Get method for foreground lower bound.
void setHueHigh(int hueHigh)
Set method for hue higher bound.
ColorFilterMode colorFilterMode() const
Get method for filter mode.
int valueLow() const
Get method for value low.
void setForegroundHigh(int foregroundHigh)
Set method for foreground higher bound.
void saveXml(QXmlStreamWriter &writer, const QString &curveName) const
Save curve filter to stream.
static ColorFilterSettings defaultFilter()
Initial default for any Curve.
void setIntensityHigh(int intensityHigh)
Set method for intensity higher bound.
int intensityHigh() const
Get method for intensity higher bound.
void setValueHigh(int valueHigh)
Set method for value high.
void setIntensityLow(int intensityLow)
Set method for intensity lower bound.
int valueHigh() const
Get method for value high.
double low() const
Low value of foreground, hue, intensity, saturation or value according to current filter mode...
void setValueLow(int valueLow)
Set method for value low.
void setSaturationHigh(int saturationHigh)
Set method for saturation high.
void loadXml(QXmlStreamReader &reader)
Load curve filter to stream.
double high() const
High value of foreground, hue, intensity, saturation or value according to current filter mode...
ColorFilterSettings()
Default constructor only for use when this class is being stored by a container that requires the def...
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
int intensityLow() const
Get method for intensity lower bound.