Engauge Digitizer  2
DocumentModelDigitizeCurve.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 "Logger.h"
11 #include <QObject>
12 #include <QTextStream>
13 #include <QXmlStreamWriter>
14 #include "Xml.h"
15 
20 
22  m_cursorStandardCross (DEFAULT_CURSOR_STANDARD_CROSS),
23  m_cursorInnerRadius (DEFAULT_CURSOR_INNER_RADIUS),
24  m_cursorLineWidth (DEFAULT_CURSOR_LINE_WIDTH),
25  m_cursorSize (DEFAULT_CURSOR_SIZE)
26 {
27 }
28 
30  m_cursorStandardCross (document.modelDigitizeCurve().cursorStandardCross()),
31  m_cursorInnerRadius (document.modelDigitizeCurve().cursorInnerRadius()),
32  m_cursorLineWidth (document.modelDigitizeCurve().cursorLineWidth()),
33  m_cursorSize (document.modelDigitizeCurve().cursorSize())
34 {
35 }
36 
38  m_cursorStandardCross (other.cursorStandardCross()),
39  m_cursorInnerRadius (other.cursorInnerRadius()),
40  m_cursorLineWidth (other.cursorLineWidth()),
41  m_cursorSize (other.cursorSize ())
42 {
43 }
44 
46 {
47  m_cursorStandardCross = other.cursorStandardCross();
48  m_cursorInnerRadius = other.cursorInnerRadius();
49  m_cursorLineWidth = other.cursorLineWidth();
50  m_cursorSize = other.cursorSize ();
51 
52  return *this;
53 }
54 
56 {
57  return m_cursorInnerRadius;
58 }
59 
61 {
62  return m_cursorLineWidth;
63 }
64 
66 {
67  return m_cursorSize;
68 }
69 
71 {
72  return m_cursorStandardCross;
73 }
74 
75 void DocumentModelDigitizeCurve::loadXml(QXmlStreamReader &reader)
76 {
77  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelDigitizeCurve::loadXml";
78 
79  bool success = true;
80 
81  QXmlStreamAttributes attributes = reader.attributes();
82 
83  if (attributes.hasAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_INNER_RADIUS) &&
84  attributes.hasAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_LINE_WIDTH) &&
85  attributes.hasAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_SIZE) &&
87 
88  // Boolean values
89  QString standardCrossValue = attributes.value(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_STANDARD_CROSS).toString();
90 
93  setCursorSize (static_cast<CursorSize> (attributes.value(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_SIZE).toInt()));
95 
96  // Read until end of this subtree
97  while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
98  (reader.name() != DOCUMENT_SERIALIZE_DIGITIZE_CURVE)){
99  loadNextFromReader(reader);
100  if (reader.atEnd()) {
101  success = false;
102  break;
103  }
104  }
105  }
106 
107  if (!success) {
108  reader.raiseError (QObject::tr ("Cannot read digitize curve data"));
109  }
110 }
111 
112 void DocumentModelDigitizeCurve::printStream(QString indentation,
113  QTextStream &str) const
114 {
115  str << indentation << "DocumentModelDigitizeCurve\n";
116 
117  indentation += INDENTATION_DELTA;
118 
119  str << indentation << "cursorStandardCross=" << (m_cursorStandardCross ? "true" : "false") << "\n";
120  str << indentation << "cursorInnerRadius=" << m_cursorInnerRadius << "\n";
121  str << indentation << "cursorSize=" << m_cursorSize << "\n";
122  str << indentation << "cursorLineWidth=" << m_cursorLineWidth << "\n";
123 }
124 
125 void DocumentModelDigitizeCurve::saveXml(QXmlStreamWriter &writer) const
126 {
127  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelDigitizeCurve::saveXml";
128 
129  writer.writeStartElement(DOCUMENT_SERIALIZE_DIGITIZE_CURVE);
130  writer.writeAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_INNER_RADIUS, QString::number (m_cursorInnerRadius));
131  writer.writeAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_LINE_WIDTH, QString::number (m_cursorLineWidth));
132  writer.writeAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_SIZE, QString::number (m_cursorSize));
133  writer.writeAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_STANDARD_CROSS, m_cursorStandardCross ?
136  writer.writeEndElement();
137 }
138 
139 void DocumentModelDigitizeCurve::setCursorInnerRadius (int cursorInnerRadius)
140 {
141  m_cursorInnerRadius = cursorInnerRadius;
142 }
143 
144 void DocumentModelDigitizeCurve::setCursorLineWidth (int cursorLineWidth)
145 {
146  m_cursorLineWidth = cursorLineWidth;
147 }
148 
150 {
151  m_cursorSize = cursorSize;
152 }
153 
154 void DocumentModelDigitizeCurve::setCursorStandardCross (bool cursorStandardCross)
155 {
156  m_cursorStandardCross = cursorStandardCross;
157 }
DocumentModelDigitizeCurve::cursorInnerRadius
int cursorInnerRadius() const
Get method for cursor inner radius.
Definition: DocumentModelDigitizeCurve.cpp:54
Xml.h
DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_LINE_WIDTH
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_LINE_WIDTH
DEFAULT_CURSOR_SIZE
const CursorSize DEFAULT_CURSOR_SIZE
Definition: DocumentModelDigitizeCurve.cpp:18
DocumentModelDigitizeCurve::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelDigitizeCurve.cpp:111
DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_STANDARD_CROSS
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_STANDARD_CROSS
DEFAULT_CURSOR_STANDARD_CROSS
const bool DEFAULT_CURSOR_STANDARD_CROSS
Definition: DocumentModelDigitizeCurve.cpp:15
DOCUMENT_SERIALIZE_BOOL_TRUE
const QString DOCUMENT_SERIALIZE_BOOL_TRUE
DocumentModelDigitizeCurve::DocumentModelDigitizeCurve
DocumentModelDigitizeCurve()
Default constructor.
Definition: DocumentModelDigitizeCurve.cpp:20
DocumentModelDigitizeCurve::setCursorStandardCross
void setCursorStandardCross(bool cursorStandardCross)
Set method for cursor type.
Definition: DocumentModelDigitizeCurve.cpp:153
DocumentModelDigitizeCurve::cursorSize
CursorSize cursorSize() const
Get method for cursor size.
Definition: DocumentModelDigitizeCurve.cpp:64
DEFAULT_CURSOR_LINE_WIDTH
const int DEFAULT_CURSOR_LINE_WIDTH
Definition: DocumentModelDigitizeCurve.cpp:17
CmdMediator.h
DocumentModelDigitizeCurve::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelDigitizeCurve.cpp:124
Document
Storage of one imported image and the data attached to that image.
Definition: Document.h:40
DocumentModelDigitizeCurve::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelDigitizeCurve.cpp:74
DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_INNER_RADIUS
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_INNER_RADIUS
DocumentSerialize.h
DocumentModelDigitizeCurve.h
DocumentModelDigitizeCurve::cursorLineWidth
int cursorLineWidth() const
Get method for cursor line width.
Definition: DocumentModelDigitizeCurve.cpp:59
DocumentModelDigitizeCurve::setCursorSize
void setCursorSize(CursorSize cursorSize)
Set method for cursor size.
Definition: DocumentModelDigitizeCurve.cpp:148
Logger.h
LOG4CPP_INFO_S
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
DocumentModelDigitizeCurve::setCursorInnerRadius
void setCursorInnerRadius(int innerRadius)
Set method for cursor inner radius.
Definition: DocumentModelDigitizeCurve.cpp:138
DEFAULT_CURSOR_INNER_RADIUS
const int DEFAULT_CURSOR_INNER_RADIUS
Definition: DocumentModelDigitizeCurve.cpp:16
CURSOR_SIZE_32
Definition: CursorSize.h:15
DocumentModelDigitizeCurve::cursorStandardCross
bool cursorStandardCross() const
Get method for cursor type.
Definition: DocumentModelDigitizeCurve.cpp:69
mainCat
log4cpp::Category * mainCat
Definition: Logger.cpp:14
CursorSize
CursorSize
Custom cursor sizes supported on all platforms for the most part, according to QCursor documentation.
Definition: CursorSize.h:10
DocumentModelDigitizeCurve
Model for DlgSettingsDigitizeCurve and CmdSettingsDigitizeCurve.
Definition: DocumentModelDigitizeCurve.h:17
INDENTATION_DELTA
const QString INDENTATION_DELTA
DocumentModelDigitizeCurve::operator=
DocumentModelDigitizeCurve & operator=(const DocumentModelDigitizeCurve &other)
Assignment constructor.
Definition: DocumentModelDigitizeCurve.cpp:44
DOCUMENT_SERIALIZE_BOOL_FALSE
const QString DOCUMENT_SERIALIZE_BOOL_FALSE
DOCUMENT_SERIALIZE_DIGITIZE_CURVE
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE
loadNextFromReader
QXmlStreamReader::TokenType loadNextFromReader(QXmlStreamReader &reader)
Load next token from xml reader.
Definition: Xml.cpp:14
DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_SIZE
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_SIZE
DocumentModelDigitizeCurve::setCursorLineWidth
void setCursorLineWidth(int lineWidth)
Set method for cursor line width.
Definition: DocumentModelDigitizeCurve.cpp:143