Engauge Digitizer 2
Loading...
Searching...
No Matches
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
75void 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) &&
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
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
125void 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
143
148
153
CursorSize
Custom cursor sizes supported on all platforms for the most part, according to QCursor documentation.
Definition CursorSize.h:11
@ CURSOR_SIZE_32
Definition CursorSize.h:13
const int DEFAULT_CURSOR_LINE_WIDTH
const CursorSize DEFAULT_CURSOR_SIZE
const int DEFAULT_CURSOR_INNER_RADIUS
const bool DEFAULT_CURSOR_STANDARD_CROSS
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_LINE_WIDTH
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_INNER_RADIUS
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_STANDARD_CROSS
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_SIZE
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE
const QString DOCUMENT_SERIALIZE_BOOL_TRUE
const QString DOCUMENT_SERIALIZE_BOOL_FALSE
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
void setCursorStandardCross(bool cursorStandardCross)
Set method for cursor type.
DocumentModelDigitizeCurve & operator=(const DocumentModelDigitizeCurve &other)
Assignment constructor.
DocumentModelDigitizeCurve()
Default constructor.
void setCursorLineWidth(int lineWidth)
Set method for cursor line width.
void setCursorInnerRadius(int innerRadius)
Set method for cursor inner radius.
CursorSize cursorSize() const
Get method for cursor size.
int cursorInnerRadius() const
Get method for cursor inner radius.
bool cursorStandardCross() const
Get method for cursor type.
int cursorLineWidth() const
Get method for cursor line width.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void setCursorSize(CursorSize cursorSize)
Set method for cursor size.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
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