Engauge Digitizer  2
DocumentModelPointMatch.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 "DocumentModelPointMatch.h"
9 #include "DocumentSerialize.h"
10 #include "Logger.h"
11 #include <QObject>
12 #include <QTextStream>
13 #include <QXmlStreamWriter>
14 #include "Xml.h"
15 
16 const double DEFAULT_MIN_POINT_SEPARATION = 20;
17 const double DEFAULT_MAX_POINT_SIZE = 48;
18 const ColorPalette DEFAULT_COLOR_ACCEPTED = COLOR_PALETTE_GREEN;
19 const ColorPalette DEFAULT_COLOR_CANDIDATE = COLOR_PALETTE_YELLOW;
20 const ColorPalette DEFAULT_COLOR_REJECTED = COLOR_PALETTE_RED;
21 
23  m_minPointSeparation (DEFAULT_MIN_POINT_SEPARATION),
24  m_maxPointSize (DEFAULT_MAX_POINT_SIZE),
25  m_paletteColorAccepted (DEFAULT_COLOR_ACCEPTED),
26  m_paletteColorCandidate (DEFAULT_COLOR_CANDIDATE),
27  m_paletteColorRejected (DEFAULT_COLOR_REJECTED)
28 {
29 }
30 
32  m_maxPointSize (document.modelPointMatch().maxPointSize()),
33  m_paletteColorAccepted (document.modelPointMatch().paletteColorAccepted()),
34  m_paletteColorCandidate (document.modelPointMatch().paletteColorCandidate()),
35  m_paletteColorRejected (document.modelPointMatch().paletteColorRejected())
36 {
37 }
38 
40  m_maxPointSize (other.maxPointSize()),
41  m_paletteColorAccepted (other.paletteColorAccepted()),
42  m_paletteColorCandidate (other.paletteColorCandidate()),
43  m_paletteColorRejected (other.paletteColorRejected())
44 {
45 }
46 
48 {
49  m_maxPointSize = other.maxPointSize();
50  m_paletteColorAccepted = other.paletteColorAccepted();
51  m_paletteColorCandidate = other.paletteColorCandidate();
52  m_paletteColorRejected = other.paletteColorRejected();
53 
54  return *this;
55 }
56 
57 void DocumentModelPointMatch::loadXml(QXmlStreamReader &reader)
58 {
59  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelPointMatch::loadXml";
60 
61  bool success = true;
62 
63  QXmlStreamAttributes attributes = reader.attributes();
64 
65  if (attributes.hasAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_POINT_SIZE) &&
66  attributes.hasAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_ACCEPTED) &&
67  attributes.hasAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_CANDIDATE) &&
68  attributes.hasAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_REJECTED)) {
69 
70  setMaxPointSize (attributes.value(DOCUMENT_SERIALIZE_POINT_MATCH_POINT_SIZE).toDouble());
71  setPaletteColorAccepted ((ColorPalette) attributes.value(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_ACCEPTED).toInt());
72  setPaletteColorCandidate ((ColorPalette) attributes.value(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_CANDIDATE).toInt());
73  setPaletteColorRejected ((ColorPalette) attributes.value(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_REJECTED).toInt());
74 
75  // Read until end of this subtree
76  while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
77  (reader.name() != DOCUMENT_SERIALIZE_POINT_MATCH)){
78  loadNextFromReader(reader);
79  if (reader.atEnd()) {
80  success = false;
81  break;
82  }
83  }
84  }
85 
86  if (!success) {
87  reader.raiseError (QObject::tr ("Cannot read point match data"));
88  }
89 }
90 
92 {
93  return m_maxPointSize;
94 }
95 
97 {
98  return m_paletteColorAccepted;
99 }
100 
102 {
103  return m_paletteColorCandidate;
104 }
105 
107 {
108  return m_paletteColorRejected;
109 }
110 
111 void DocumentModelPointMatch::printStream(QString indentation,
112  QTextStream &str) const
113 {
114  str << indentation << "DocumentModelPointMatch\n";
115 
116  indentation += INDENTATION_DELTA;
117 
118  str << indentation << "minPointSeparation=" << m_minPointSeparation << "\n";
119  str << indentation << "maxPointSize=" << m_maxPointSize << "\n";
120  str << indentation << "colorAccepted=" << colorPaletteToString (m_paletteColorAccepted) << "\n";
121  str << indentation << "colorCandidate=" << colorPaletteToString (m_paletteColorCandidate) << "\n";
122  str << indentation << "colorRejected=" << colorPaletteToString (m_paletteColorRejected) << "\n";
123 }
124 
125 void DocumentModelPointMatch::saveXml(QXmlStreamWriter &writer) const
126 {
127  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelPointMatch::saveXml";
128 
129  writer.writeStartElement(DOCUMENT_SERIALIZE_POINT_MATCH);
130  writer.writeAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_POINT_SIZE, QString::number (m_maxPointSize));
131  writer.writeAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_ACCEPTED, QString::number (m_paletteColorAccepted));
132  writer.writeAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_ACCEPTED_STRING, colorPaletteToString (m_paletteColorAccepted));
133  writer.writeAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_CANDIDATE, QString::number (m_paletteColorCandidate));
134  writer.writeAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_CANDIDATE_STRING, colorPaletteToString (m_paletteColorCandidate));
135  writer.writeAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_REJECTED, QString::number (m_paletteColorRejected));
136  writer.writeAttribute(DOCUMENT_SERIALIZE_POINT_MATCH_COLOR_REJECTED_STRING, colorPaletteToString (m_paletteColorRejected));
137  writer.writeEndElement();
138 }
139 
141 {
142  m_maxPointSize = maxPointSize;
143 }
144 
146 {
147  m_paletteColorAccepted = paletteColorAccepted;
148 }
149 
151 {
152  m_paletteColorCandidate = paletteColorCandidate;
153 }
154 
156 {
157  m_paletteColorRejected = paletteColorRejected;
158 }
Model for DlgSettingsPointMatch and CmdSettingsPointMatch.
void setPaletteColorCandidate(ColorPalette paletteColorCandidate)
Set method for candidate color.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
DocumentModelPointMatch & operator=(const DocumentModelPointMatch &other)
Assignment constructor.
ColorPalette paletteColorCandidate() const
Get method for candidate color.
void setMaxPointSize(double maxPointSize)
Set method for max point size.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
ColorPalette paletteColorAccepted() const
Get method for accepted color.
DocumentModelPointMatch()
Default constructor.
Storage of one imported image and the data attached to that image.
Definition: Document.h:41
void setPaletteColorRejected(ColorPalette paletteColorRejected)
Set method for rejected color.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
ColorPalette paletteColorRejected() const
Get method for rejected color.
double maxPointSize() const
Get method for max point size.
void setPaletteColorAccepted(ColorPalette paletteColorAccepted)
Set method for accepted color.