Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
LineStyle.cpp
1 #include "DocumentSerialize.h"
2 #include "LineStyle.h"
3 #include "Logger.h"
4 #include <QSettings>
5 #include <QTextStream>
6 #include <QXmlStreamReader>
7 #include <QXmlStreamWriter>
8 #include "Settings.h"
9 #include "SettingsForGraph.h"
10 #include "Xml.h"
11 
12 const ColorPalette DEFAULT_LINE_COLOR_AXES = COLOR_PALETTE_TRANSPARENT; // Same default color as used for PointStyle axes curve default
13 const ColorPalette DEFAULT_LINE_COLOR_GRAPH = COLOR_PALETTE_BLUE; // Same default color as used for PointStyle axes curve default
14 const CurveConnectAs DEFAULT_LINE_CONNECT_AS_AXES = CONNECT_SKIP_FOR_AXIS_CURVE;
15 const CurveConnectAs DEFAULT_LINE_CONNECT_AS_GRAPH = CONNECT_AS_FUNCTION_SMOOTH;
16 const int DEFAULT_LINE_WIDTH_AXES = 0;
17 const int DEFAULT_LINE_WIDTH_GRAPH = 1;
18 
20 {
21  QSettings settings (SETTINGS_ENGAUGE, SETTINGS_DIGITIZER);
22  settings.beginGroup (SETTINGS_GROUP_CURVE_AXES);
23  m_width = settings.value (SETTINGS_CURVE_LINE_WIDTH,
24  DEFAULT_LINE_WIDTH_AXES).toInt();
25  m_paletteColor = (ColorPalette) settings.value (SETTINGS_CURVE_LINE_COLOR,
26  DEFAULT_LINE_COLOR_AXES).toInt();
27  m_curveConnectAs = (CurveConnectAs) settings.value (SETTINGS_CURVE_LINE_CONNECT_AS,
28  DEFAULT_LINE_CONNECT_AS_AXES).toInt();
29 }
30 
31 LineStyle::LineStyle (unsigned int width,
32  ColorPalette paletteColor,
33  CurveConnectAs curveConnectAs) :
34  m_width (width),
35  m_paletteColor (paletteColor),
36  m_curveConnectAs (curveConnectAs)
37 {
38 }
39 
41  m_width (other.width ()),
42  m_paletteColor (other.paletteColor()),
43  m_curveConnectAs (other.curveConnectAs())
44 {
45 }
46 
48 {
49  m_width = other.width ();
50  m_paletteColor = other.paletteColor();
51  m_curveConnectAs = other.curveConnectAs();
52 
53  return *this;
54 }
55 
56 CurveConnectAs LineStyle::curveConnectAs () const
57 {
58  return m_curveConnectAs;
59 }
60 
62 {
63  QSettings settings (SETTINGS_ENGAUGE, SETTINGS_DIGITIZER);
64  settings.beginGroup (SETTINGS_GROUP_CURVE_AXES);
65  int width = settings.value (SETTINGS_CURVE_LINE_WIDTH,
66  DEFAULT_LINE_WIDTH_AXES).toInt();
67  ColorPalette color = (ColorPalette) settings.value (SETTINGS_CURVE_LINE_COLOR,
68  DEFAULT_LINE_COLOR_AXES).toInt();
69  CurveConnectAs connectAs = (CurveConnectAs) settings.value (SETTINGS_CURVE_LINE_CONNECT_AS,
70  DEFAULT_LINE_CONNECT_AS_AXES).toInt();
71 
72  return LineStyle (width,
73  color,
74  connectAs);
75 }
76 
78 {
79  SettingsForGraph settingsForGraph;
80  int indexOneBased = index + 1;
81  QString groupName = settingsForGraph.groupNameForNthCurve (indexOneBased);
82 
83  QSettings settings (SETTINGS_ENGAUGE, SETTINGS_DIGITIZER);
84  settings.beginGroup (groupName);
85  int width = settings.value (SETTINGS_CURVE_LINE_WIDTH,
86  DEFAULT_LINE_WIDTH_GRAPH).toInt();
87  ColorPalette color = (ColorPalette) settings.value (SETTINGS_CURVE_LINE_COLOR,
88  DEFAULT_LINE_COLOR_GRAPH).toInt();
89  CurveConnectAs connectAs = (CurveConnectAs) settings.value (SETTINGS_CURVE_LINE_CONNECT_AS,
90  DEFAULT_LINE_CONNECT_AS_GRAPH).toInt();
91 
92  return LineStyle (width,
93  color,
94  connectAs);
95 }
96 
97 void LineStyle::loadXml(QXmlStreamReader &reader)
98 {
99  LOG4CPP_INFO_S ((*mainCat)) << "LineStyle::loadXml";
100 
101  QXmlStreamAttributes attributes = reader.attributes();
102 
103  if (attributes.hasAttribute(DOCUMENT_SERIALIZE_LINE_STYLE_WIDTH) &&
104  attributes.hasAttribute(DOCUMENT_SERIALIZE_LINE_STYLE_COLOR) &&
105  attributes.hasAttribute(DOCUMENT_SERIALIZE_LINE_STYLE_CONNECT_AS)) {
106 
107  setWidth (attributes.value(DOCUMENT_SERIALIZE_LINE_STYLE_WIDTH).toInt());
108  setPaletteColor ((ColorPalette) attributes.value(DOCUMENT_SERIALIZE_LINE_STYLE_COLOR).toInt());
109  setCurveConnectAs ((CurveConnectAs) attributes.value(DOCUMENT_SERIALIZE_LINE_STYLE_CONNECT_AS).toInt());
110 
111  // Read until end of this subtree
112  while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
113  (reader.name() != DOCUMENT_SERIALIZE_LINE_STYLE)){
114  loadNextFromReader(reader);
115  }
116  } else {
117  reader.raiseError ("Cannot read line style data");
118  }
119 }
120 
121 ColorPalette LineStyle::paletteColor() const
122 {
123  return m_paletteColor;
124 }
125 
126 void LineStyle::printStream(QString indentation,
127  QTextStream &str) const
128 {
129  str << indentation << "LineStyle\n";
130 
131  indentation += INDENTATION_DELTA;
132 
133  str << indentation << "width=" << m_width << "\n";
134  str << indentation << "color=" << colorPaletteToString (m_paletteColor) << "\n";
135  str << indentation << "curveConnectAs=" << curveConnectAsToString (m_curveConnectAs) << "\n";
136 }
137 
138 void LineStyle::saveXml(QXmlStreamWriter &writer) const
139 {
140  LOG4CPP_INFO_S ((*mainCat)) << "LineStyle::saveXml";
141 
142  writer.writeStartElement(DOCUMENT_SERIALIZE_LINE_STYLE);
143  writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_WIDTH, QString::number(m_width));
144  writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_COLOR, QString::number (m_paletteColor));
145  writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_COLOR_STRING, colorPaletteToString (m_paletteColor));
146  writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_CONNECT_AS, QString::number (m_curveConnectAs));
147  writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_CONNECT_AS_STRING, curveConnectAsToString (m_curveConnectAs));
148  writer.writeEndElement();
149 }
150 
151 void LineStyle::setCurveConnectAs(CurveConnectAs curveConnectAs)
152 {
153  m_curveConnectAs = curveConnectAs;
154 }
155 
156 void LineStyle::setPaletteColor (ColorPalette paletteColor)
157 {
158  m_paletteColor = paletteColor;
159 }
160 
161 void LineStyle::setWidth (int width)
162 {
163  m_width = width;
164 }
165 
166 unsigned int LineStyle::width () const
167 {
168  return m_width;
169 }
Manage storage and retrieval of the settings for the curves.
void loadXml(QXmlStreamReader &reader)
Load model from serialized xml. Returns the curve name.
Definition: LineStyle.cpp:97
static LineStyle defaultGraphCurve(int index)
Initial default for index&#39;th graph curve.
Definition: LineStyle.cpp:77
unsigned int width() const
Width of line.
Definition: LineStyle.cpp:166
LineStyle & operator=(const LineStyle &other)
Assignment operator.
Definition: LineStyle.cpp:47
static LineStyle defaultAxesCurve()
Initial default for axes curve.
Definition: LineStyle.cpp:61
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: LineStyle.cpp:126
QString groupNameForNthCurve(int indexOneBased) const
Return the group name, that appears in the settings file/registry, for the specified curve index...
Details for a specific Line.
Definition: LineStyle.h:13
ColorPalette paletteColor() const
Line color.
Definition: LineStyle.cpp:121
void setCurveConnectAs(CurveConnectAs curveConnectAs)
Set connect as.
Definition: LineStyle.cpp:151
CurveConnectAs curveConnectAs() const
Get method for connect type.
Definition: LineStyle.cpp:56
void setPaletteColor(ColorPalette paletteColor)
Set method for line color.
Definition: LineStyle.cpp:156
void saveXml(QXmlStreamWriter &writer) const
Serialize to stream.
Definition: LineStyle.cpp:138
void setWidth(int width)
Set width of line.
Definition: LineStyle.cpp:161
LineStyle()
Default constructor only for use when this class is being stored by a container that requires the def...
Definition: LineStyle.cpp:19