Engauge Digitizer 2
Loading...
Searching...
No Matches
DocumentModelAxesChecker.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 "DocumentModelAxesChecker.h"
9#include "DocumentSerialize.h"
10#include "Logger.h"
11#include <QObject>
12#include <QTextStream>
13#include "QtToString.h"
14#include <QXmlStreamWriter>
15#include "Xml.h"
16
17const int DEFAULT_CHECKER_SECONDS = 3;
18
19// Color that should be easily visible against black axes lines. Red resonates with
20// the default axes point color, and seems fairly bright when opacity is made transparent.
21const ColorPalette DEFAULT_LINE_COLOR = COLOR_PALETTE_RED;
22
24 m_checkerMode (CHECKER_MODE_N_SECONDS),
25 m_checkerSeconds (DEFAULT_CHECKER_SECONDS),
26 m_lineColor (DEFAULT_LINE_COLOR)
27{
28}
29
31 m_checkerMode (document.modelAxesChecker().checkerMode()),
32 m_checkerSeconds (document.modelAxesChecker().checkerSeconds()),
33 m_lineColor (document.modelAxesChecker().lineColor())
34{
35}
36
38 m_checkerMode (other.checkerMode()),
39 m_checkerSeconds (other.checkerSeconds()),
40 m_lineColor (other.lineColor())
41{
42}
43
45{
46 m_checkerMode = other.checkerMode();
47 m_checkerSeconds = other.checkerSeconds();
48 m_lineColor = other.lineColor();
49
50 return *this;
51}
52
54{
55 return m_checkerMode;
56}
57
59{
60 return m_checkerSeconds;
61}
62
64{
65 return m_lineColor;
66}
67
68void DocumentModelAxesChecker::loadXml(QXmlStreamReader &reader)
69{
70 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelAxesChecker::loadXml";
71
72 bool success = true;
73
74 QXmlStreamAttributes attributes = reader.attributes();
75
76 if (attributes.hasAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE) &&
77 attributes.hasAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS) &&
78 attributes.hasAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR)) {
79
80 setCheckerMode ((CheckerMode) attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE).toInt());
81 setCheckerSeconds (attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS).toInt());
82 setLineColor ((ColorPalette) attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR).toInt());
83
84 // Read until end of this subtree
85 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
86 (reader.name() != DOCUMENT_SERIALIZE_AXES_CHECKER)){
87 loadNextFromReader(reader);
88 if (reader.atEnd()) {
89 success = false;
90 break;
91 }
92 }
93 }
94
95 if (!success) {
96 reader.raiseError (QObject::tr ("Cannot read axes checker data"));
97 }
98}
99
101 QTextStream &str) const
102{
103 str << indentation << "DocumentModelAxesChecker\n";
104
105 indentation += INDENTATION_DELTA;
106
107 str << indentation << "checkerMode=" << checkerModeToString (m_checkerMode) << "\n";
108 str << indentation << "checkerSeconds=" << m_checkerSeconds << "\n";
109 str << indentation << "color=" << colorPaletteToString (m_lineColor) << "\n";
110}
111
112void DocumentModelAxesChecker::saveXml(QXmlStreamWriter &writer) const
113{
114 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelAxesChecker::saveXml";
115
116 writer.writeStartElement(DOCUMENT_SERIALIZE_AXES_CHECKER);
117 writer.writeAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE, QString::number (m_checkerMode));
118 writer.writeAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS, QString::number (m_checkerSeconds));
119 writer.writeAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR, QString::number (m_lineColor));
120 writer.writeEndElement();
121}
122
123void DocumentModelAxesChecker::setCheckerMode(CheckerMode checkerMode)
124{
125 m_checkerMode = checkerMode;
126}
127
129{
130 m_checkerSeconds = seconds;
131}
132
133void DocumentModelAxesChecker::setLineColor (ColorPalette lineColor)
134{
135 m_lineColor = lineColor;
136}
Model for DlgSettingsAxesChecker and CmdSettingsAxesChecker.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void setLineColor(ColorPalette lineColor)
Set method for line color.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
ColorPalette lineColor() const
Get method for line color.
int checkerSeconds() const
Get method for checker lifetime in seconds.
DocumentModelAxesChecker()
Default constructor.
void setCheckerSeconds(int seconds)
Set method for checker lifetime in seconds.
CheckerMode checkerMode() const
Get method for checker lifetime mode.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
DocumentModelAxesChecker & operator=(const DocumentModelAxesChecker &other)
Assignment constructor.
void setCheckerMode(CheckerMode checkerMode)
Set method for checker mode.
Storage of one imported image and the data attached to that image.
Definition Document.h:41