Engauge Digitizer  2
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 
17 const 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.
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 
68 void 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 
100 void DocumentModelAxesChecker::printStream(QString indentation,
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 
112 void 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 
124 {
125  m_checkerMode = checkerMode;
126 }
127 
129 {
130  m_checkerSeconds = seconds;
131 }
132 
134 {
135  m_lineColor = lineColor;
136 }
DocumentModelAxesChecker.h
Xml.h
DocumentModelAxesChecker::setCheckerSeconds
void setCheckerSeconds(int seconds)
Set method for checker lifetime in seconds.
Definition: DocumentModelAxesChecker.cpp:127
DocumentModelAxesChecker::checkerMode
CheckerMode checkerMode() const
Get method for checker lifetime mode.
Definition: DocumentModelAxesChecker.cpp:52
DocumentModelAxesChecker::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelAxesChecker.cpp:111
DocumentModelAxesChecker::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelAxesChecker.cpp:67
DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS
const QString DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS
ColorPalette
ColorPalette
Definition: ColorPalette.h:11
checkerModeToString
QString checkerModeToString(CheckerMode checkerMode)
Definition: CheckerMode.cpp:9
CmdMediator.h
DOCUMENT_SERIALIZE_AXES_CHECKER
const QString DOCUMENT_SERIALIZE_AXES_CHECKER
Document
Storage of one imported image and the data attached to that image.
Definition: Document.h:40
DocumentSerialize.h
DocumentModelAxesChecker::lineColor
ColorPalette lineColor() const
Get method for line color.
Definition: DocumentModelAxesChecker.cpp:62
DocumentModelAxesChecker::setLineColor
void setLineColor(ColorPalette lineColor)
Set method for line color.
Definition: DocumentModelAxesChecker.cpp:132
Logger.h
COLOR_PALETTE_RED
Definition: ColorPalette.h:21
LOG4CPP_INFO_S
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
CheckerMode
CheckerMode
Options for axes checker mode. Specifically, how long the checker is displayed after a change.
Definition: CheckerMode.h:12
DEFAULT_LINE_COLOR
const ColorPalette DEFAULT_LINE_COLOR
Definition: DocumentModelAxesChecker.cpp:20
mainCat
log4cpp::Category * mainCat
Definition: Logger.cpp:14
DocumentModelAxesChecker::setCheckerMode
void setCheckerMode(CheckerMode checkerMode)
Set method for checker mode.
Definition: DocumentModelAxesChecker.cpp:122
DEFAULT_CHECKER_SECONDS
const int DEFAULT_CHECKER_SECONDS
Definition: DocumentModelAxesChecker.cpp:16
colorPaletteToString
QString colorPaletteToString(ColorPalette colorPalette)
Definition: ColorPalette.cpp:9
DocumentModelAxesChecker::DocumentModelAxesChecker
DocumentModelAxesChecker()
Default constructor.
Definition: DocumentModelAxesChecker.cpp:22
DocumentModelAxesChecker::checkerSeconds
int checkerSeconds() const
Get method for checker lifetime in seconds.
Definition: DocumentModelAxesChecker.cpp:57
DocumentModelAxesChecker
Model for DlgSettingsAxesChecker and CmdSettingsAxesChecker.
Definition: DocumentModelAxesChecker.h:17
INDENTATION_DELTA
const QString INDENTATION_DELTA
CHECKER_MODE_N_SECONDS
Definition: CheckerMode.h:18
QtToString.h
DOCUMENT_SERIALIZE_AXES_CHECKER_MODE
const QString DOCUMENT_SERIALIZE_AXES_CHECKER_MODE
DocumentModelAxesChecker::operator=
DocumentModelAxesChecker & operator=(const DocumentModelAxesChecker &other)
Assignment constructor.
Definition: DocumentModelAxesChecker.cpp:43
loadNextFromReader
QXmlStreamReader::TokenType loadNextFromReader(QXmlStreamReader &reader)
Load next token from xml reader.
Definition: Xml.cpp:14
DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR
const QString DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR
DocumentModelAxesChecker::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: DocumentModelAxesChecker.cpp:99