Engauge Digitizer 2
Loading...
Searching...
No Matches
DocumentModelGuidelines.cpp
Go to the documentation of this file.
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"
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
21
23 m_valuesX (document.modelGuidelines().valuesX ()),
24 m_valuesY (document.modelGuidelines().valuesY ())
25{
26}
27
29 m_valuesX (other.valuesX ()),
30 m_valuesY (other.valuesY ())
31{
32}
33
35{
36 m_valuesX = other.valuesX ();
37 m_valuesY = other.valuesY ();
38
39 return *this;
40}
41
43 const GuidelineValues &valuesYR) :
44 m_valuesX (valuesXT),
45 m_valuesY (valuesYR)
46{
47}
48
49void DocumentModelGuidelines::loadXml(QXmlStreamReader &reader)
50{
51 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelGuidelines::loadXml";
52
53 bool success = true;
54
55 // Read until end of this subtree
56 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
57 (reader.name() != DOCUMENT_SERIALIZE_GUIDELINES)){
58
59 QXmlStreamReader::TokenType tokenType = loadNextFromReader(reader);
60
61 if ((tokenType == QXmlStreamReader::StartElement) &&
62 (reader.name() == DOCUMENT_SERIALIZE_GUIDELINES_X)) {
63
64 loadXmlVector (reader,
66 m_valuesX);
67 }
68
69 if ((tokenType == QXmlStreamReader::StartElement) &&
70 (reader.name() == DOCUMENT_SERIALIZE_GUIDELINES_Y)) {
71
72 loadXmlVector (reader,
74 m_valuesY);
75 }
76
77 if (reader.atEnd()) {
78 success = false;
79 break;
80 }
81 }
82
83 if (!success) {
84 reader.raiseError (QObject::tr ("Cannot read grid display data"));
85 }
86}
87
88void DocumentModelGuidelines::loadXmlVector (QXmlStreamReader &reader,
89 const QString &tokenEnd,
90 GuidelineValues &guidelineValues) const
91{
92 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelGuidelines::loadXmlVector";
93
94 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
95 (reader.name() != tokenEnd)){
96
97 QXmlStreamReader::TokenType tokenType = loadNextFromReader(reader);
98
99 if (reader.atEnd()) {
100 break;
101 }
102
103 if (tokenType == QXmlStreamReader::StartElement) {
104
105 if (reader.attributes().hasAttribute (DOCUMENT_SERIALIZE_GUIDELINE_IDENTIFIER) &&
106 reader.attributes().hasAttribute (DOCUMENT_SERIALIZE_GUIDELINE_VALUE)) {
107
108 QString identifier = reader.attributes ().value (DOCUMENT_SERIALIZE_GUIDELINE_IDENTIFIER).toString ();
109 double value = reader.attributes ().value (DOCUMENT_SERIALIZE_GUIDELINE_VALUE).toDouble ();
110
111 guidelineValues [identifier] = value;
112 }
113 }
114 }
115}
116
118 QTextStream &str) const
119{
120 str << indentation << "DocumentModelGuidelines\n";
121
122 indentation += INDENTATION_DELTA;
123}
124
125void DocumentModelGuidelines::saveXml(QXmlStreamWriter &writer) const
126{
127 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelGuidelines::saveXml";
128
129 writer.writeStartElement(DOCUMENT_SERIALIZE_GUIDELINES);
130 saveXmlVector (writer,
132 m_valuesX);
133 saveXmlVector (writer,
135 m_valuesY);
136 writer.writeEndElement();
137}
138
139void DocumentModelGuidelines::saveXmlVector(QXmlStreamWriter &writer,
140 const QString &tokenAll,
141 const GuidelineValues &values) const
142{
143 writer.writeStartElement(tokenAll);
144
145 // Loop through values
146 GuidelineValues::const_iterator itr;
147 for (itr = values.begin(); itr != values.end(); itr++) {
148 QString identifier = itr.key();
149 double value = itr.value();
150 writer.writeStartElement (DOCUMENT_SERIALIZE_GUIDELINE);
151 writer.writeAttribute (DOCUMENT_SERIALIZE_GUIDELINE_IDENTIFIER, identifier);
152 writer.writeAttribute (DOCUMENT_SERIALIZE_GUIDELINE_VALUE, QString::number (value));
153 writer.writeEndElement ();
154 }
155
156 writer.writeEndElement();
157}
158
163
168
170{
171 return m_valuesX;
172}
173
175{
176 return m_valuesY;
177}
const QString DOCUMENT_SERIALIZE_GUIDELINES
const QString DOCUMENT_SERIALIZE_GUIDELINE
const QString DOCUMENT_SERIALIZE_GUIDELINE_VALUE
const QString DOCUMENT_SERIALIZE_GUIDELINES_Y
const QString DOCUMENT_SERIALIZE_GUIDELINE_IDENTIFIER
const QString DOCUMENT_SERIALIZE_GUIDELINES_X
QMap< QString, double > GuidelineValues
log4cpp::Category * mainCat
Definition Logger.cpp:14
const QString INDENTATION_DELTA
QXmlStreamReader::TokenType loadNextFromReader(QXmlStreamReader &reader)
Load next token from xml reader.
Definition Xml.cpp:14
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
void setValuesX(const GuidelineValues &valuesX)
Set method for x/t values.
DocumentModelGuidelines()
Default constructor.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
GuidelineValues valuesX() const
Get method for x/t values.
void setValuesY(const GuidelineValues &valuesY)
Set method for y/r values.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
DocumentModelGuidelines & operator=(const DocumentModelGuidelines &other)
Assignment constructor.
GuidelineValues valuesY() const
Get method for y/r values.
Storage of one imported image and the data attached to that image.
Definition Document.h:44
#define LOG4CPP_INFO_S(logger)
Definition convenience.h:18