Engauge Digitizer  2
DocumentModelGridDisplay.cpp
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #include "CmdMediator.h"
8 #include "DocumentModelGridDisplay.h"
9 #include "DocumentSerialize.h"
10 #include "EngaugeAssert.h"
11 #include "Logger.h"
12 #include <QObject>
13 #include <QTextStream>
14 #include "QtToString.h"
15 #include <QXmlStreamWriter>
16 #include "Xml.h"
17 
18 const ColorPalette DEFAULT_COLOR = COLOR_PALETTE_BLACK;
19 
21  m_stable (false),
22  m_disableX (GRID_COORD_DISABLE_COUNT),
23  m_countX (2),
24  m_startX (0.0),
25  m_stepX (1.0),
26  m_stopX (1.0),
27  m_disableY (GRID_COORD_DISABLE_COUNT),
28  m_countY (2),
29  m_startY (0.0),
30  m_stepY (1.0),
31  m_stopY (1.0),
32  m_paletteColor (DEFAULT_COLOR)
33 {
34 }
35 
37  m_stable (document.modelGridDisplay().stable()),
38  m_disableX (document.modelGridDisplay().disableX()),
39  m_countX (document.modelGridDisplay().countX()),
40  m_startX (document.modelGridDisplay().startX()),
41  m_stepX (document.modelGridDisplay().stepX()),
42  m_stopX (document.modelGridDisplay().stopX()),
43  m_disableY (document.modelGridDisplay().disableY()),
44  m_countY (document.modelGridDisplay().countY()),
45  m_startY (document.modelGridDisplay().startY()),
46  m_stepY (document.modelGridDisplay().stepY()),
47  m_stopY (document.modelGridDisplay().stopY()),
48  m_paletteColor (document.modelGridDisplay().paletteColor())
49 {
50 }
51 
53  m_stable(other.stable()),
54  m_disableX (other.disableX()),
55  m_countX (other.countX()),
56  m_startX (other.startX()),
57  m_stepX (other.stepX()),
58  m_stopX (other.stopX()),
59  m_disableY (other.disableY()),
60  m_countY (other.countY()),
61  m_startY (other.startY()),
62  m_stepY (other.stepY()),
63  m_stopY (other.stopY()),
64  m_paletteColor (other.paletteColor())
65 {
66 }
67 
69 {
70  m_stable = other.stable();
71  m_disableX = other.disableX();
72  m_countX = other.countX();
73  m_startX = other.startX();
74  m_stepX = other.stepX();
75  m_stopX = other.stopX();
76  m_disableY = other.disableY();
77  m_countY = other.countY();
78  m_startY = other.startY();
79  m_stepY = other.stepY();
80  m_stopY = other.stopY();
81  m_paletteColor = other.paletteColor();
82 
83  return *this;
84 }
85 
86 unsigned int DocumentModelGridDisplay::countX () const
87 {
88  return m_countX;
89 }
90 
91 unsigned int DocumentModelGridDisplay::countY () const
92 {
93  return m_countY;
94 }
95 
96 GridCoordDisable DocumentModelGridDisplay::disableX () const
97 {
98  return m_disableX;
99 }
100 
101 GridCoordDisable DocumentModelGridDisplay::disableY () const
102 {
103  return m_disableY;
104 }
105 
106 void DocumentModelGridDisplay::loadXml(QXmlStreamReader &reader)
107 {
108  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelGridDisplay::loadXml";
109 
110  bool success = true;
111 
112  QXmlStreamAttributes attributes = reader.attributes();
113 
114  if (attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STABLE) &&
115  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_DISABLE_X) &&
116  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_COUNT_X) &&
117  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_START_X) &&
118  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STEP_X) &&
119  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STOP_X) &&
120  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_DISABLE_Y) &&
121  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_COUNT_Y) &&
122  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_START_Y) &&
123  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STEP_Y) &&
124  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STOP_Y) &&
125  attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_COLOR)) {
126 
127  // Boolean values
128  QString stableValue = attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_STABLE).toString();
129 
130  setStable (stableValue == DOCUMENT_SERIALIZE_BOOL_TRUE);
131  setDisableX ((GridCoordDisable) attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_DISABLE_X).toInt());
132  setCountX (attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_COUNT_X).toInt());
133  setStartX (attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_START_X).toDouble());
134  setStepX (attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_STEP_X).toDouble());
135  setStopX (attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_STOP_X).toDouble());
136  setDisableY ((GridCoordDisable) attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_DISABLE_Y).toInt());
137  setCountY (attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_COUNT_Y).toInt());
138  setStartY (attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_START_Y).toDouble());
139  setStepY (attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_STEP_Y).toDouble());
140  setStopY (attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_STOP_Y).toDouble());
141  setPaletteColor ((ColorPalette) attributes.value(DOCUMENT_SERIALIZE_GRID_DISPLAY_COLOR).toInt());
142 
143  // Read until end of this subtree
144  while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
145  (reader.name() != DOCUMENT_SERIALIZE_GRID_DISPLAY)){
146  loadNextFromReader(reader);
147  if (reader.atEnd()) {
148  success = false;
149  break;
150  }
151  }
152  }
153 
154  if (!success) {
155  reader.raiseError (QObject::tr ("Cannot read grid display data"));
156  }
157 }
158 
160 {
161  return m_paletteColor;
162 }
163 
164 void DocumentModelGridDisplay::printStream(QString indentation,
165  QTextStream &str) const
166 {
167  str << indentation << "DocumentModelGridDisplay\n";
168 
169  indentation += INDENTATION_DELTA;
170 
171  str << indentation << "stable=" << (m_stable ? "true" : "false") << "\n";
172  str << indentation << "disableX=" << m_disableX << "\n";
173  str << indentation << "countX=" << m_countX << "\n";
174  str << indentation << "startX=" << m_startX << "\n";
175  str << indentation << "stepX=" << m_stepX << "\n";
176  str << indentation << "stopX=" << m_stopX << "\n";
177  str << indentation << "disableY=" << m_disableY << "\n";
178  str << indentation << "countY=" << m_countY << "\n";
179  str << indentation << "startY=" << m_startY << "\n";
180  str << indentation << "stepY=" << m_stepY << "\n";
181  str << indentation << "stopY=" << m_stopY << "\n";
182  str << indentation << "color=" << colorPaletteToString (m_paletteColor) << "\n";
183 }
184 
185 void DocumentModelGridDisplay::saveXml(QXmlStreamWriter &writer) const
186 {
187  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelGridDisplay::saveXml";
188 
189  writer.writeStartElement(DOCUMENT_SERIALIZE_GRID_DISPLAY);
190  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STABLE, m_stable ?
191  DOCUMENT_SERIALIZE_BOOL_TRUE :
192  DOCUMENT_SERIALIZE_BOOL_FALSE);
193  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_DISABLE_X, QString::number (m_disableX));
194  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_COUNT_X, QString::number (m_countX));
195  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_START_X, QString::number (m_startX));
196  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STEP_X, QString::number (m_stepX));
197  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STOP_X, QString::number (m_stopX));
198  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_DISABLE_Y, QString::number (m_disableY));
199  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_COUNT_Y, QString::number (m_countY));
200  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_START_Y, QString::number (m_startY));
201  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STEP_Y, QString::number (m_stepY));
202  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_STOP_Y, QString::number (m_stopY));
203  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_COLOR, QString::number (m_paletteColor));
204  writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_DISPLAY_COLOR_STRING, colorPaletteToString (m_paletteColor));
205  writer.writeEndElement();
206 }
207 
209 {
210  m_countX = countX;
211 }
212 
214 {
215  m_countY = countY;
216 }
217 
219 {
220  m_disableX = disableX;
221 }
222 
224 {
225  m_disableY = disableY;
226 }
227 
229 {
230  m_paletteColor = paletteColor;
231 }
232 
234 {
235  m_stable = stable;
236 }
237 
239 {
240  m_startX = startX;
241 }
242 
244 {
245  m_startY = startY;
246 }
247 
249 {
250  m_stepX = stepX;
251 }
252 
254 {
255  m_stepY = stepY;
256 }
257 
259 {
260  m_stopX = stopX;
261 }
262 
264 {
265  m_stopY = stopY;
266 }
267 
269 {
270  return m_stable;
271 }
272 
274 {
275  return m_startX;
276 }
277 
279 {
280  return m_startY;
281 }
282 
284 {
285  return m_stepX;
286 }
287 
289 {
290  return m_stepY;
291 }
292 
294 {
295  return m_stopX;
296 }
297 
299 {
300  return m_stopY;
301 }
void setStartX(double startX)
Set method for x grid line lower bound (inclusive).
GridCoordDisable disableY() const
Get method for y grid line disabled variable.
Model for DlgSettingsGridDisplay and CmdSettingsGridDisplay.
void setCountY(unsigned int countY)
Set method for y grid line count.
void setStepX(double stepX)
Set method for x grid line increment.
unsigned int countX() const
Get method for x grid line count.
DocumentModelGridDisplay()
Default constructor.
void setStepY(double yStep)
Set method for y grid line increment.
bool stable() const
Get method for stable flag.
unsigned int countY() const
Get method for y grid line count.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
void setStable(bool stable)
Set method for stable flag.
GridCoordDisable disableX() const
Get method for x grid line disabled variable.
DocumentModelGridDisplay & operator=(const DocumentModelGridDisplay &other)
Assignment constructor.
void setStopX(double stopX)
Set method for x grid line upper bound (inclusive).
double stopY() const
Get method for y grid line upper bound (inclusive).
void setDisableX(GridCoordDisable disableX)
Set method for x grid line disabled variable.
double stopX() const
Get method for x grid line upper bound (inclusive).
ColorPalette paletteColor() const
Get method for color.
void setStopY(double yStop)
Set method for y grid line upper bound (inclusive).
Storage of one imported image and the data attached to that image.
Definition: Document.h:41
void setDisableY(GridCoordDisable disableY)
Set method for y grid line disabled variable.
double startY() const
Get method for y grid line lower bound (inclusive).
void setCountX(unsigned int countX)
Set method for x grid line count.
void setStartY(double yStart)
Set method for y grid line lower bound (inclusive).
double stepY() const
Get method for y grid line increment.
double startX() const
Get method for x grid line lower bound (inclusive).
double stepX() const
Get method for x grid line increment.
void setPaletteColor(ColorPalette paletteColor)
Set method for color.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.