Engauge Digitizer 2
Loading...
Searching...
No Matches
DocumentModelAxesChecker.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 "QtToString.h"
14#include <QXmlStreamWriter>
15#include "Xml.h"
16
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.
22
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 (static_cast<CheckerMode> (attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE).toInt()));
82 setLineColor (static_cast<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
127
129{
130 m_checkerSeconds = seconds;
131}
132
QString checkerModeToString(CheckerMode checkerMode)
CheckerMode
Options for axes checker mode. Specifically, how long the checker is displayed after a change.
Definition CheckerMode.h:14
@ CHECKER_MODE_N_SECONDS
Definition CheckerMode.h:16
QString colorPaletteToString(ColorPalette colorPalette)
ColorPalette
@ COLOR_PALETTE_RED
const int DEFAULT_CHECKER_SECONDS
const ColorPalette DEFAULT_LINE_COLOR
const QString DOCUMENT_SERIALIZE_AXES_CHECKER
const QString DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR
const QString DOCUMENT_SERIALIZE_AXES_CHECKER_MODE
const QString DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS
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 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:44
#define LOG4CPP_INFO_S(logger)
Definition convenience.h:18