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 "CurveStyle.h"
8 #include "DocumentSerialize.h"
9 #include "Logger.h"
10 #include <QTextStream>
11 #include <QXmlStreamReader>
12 #include <QXmlStreamWriter>
13 #include "Xml.h"
14
CurveStyle()15 CurveStyle::CurveStyle()
16 {
17 }
18
CurveStyle(const LineStyle & lineStyle,const PointStyle & pointStyle)19 CurveStyle::CurveStyle (const LineStyle &lineStyle,
20 const PointStyle &pointStyle) :
21 m_pointStyle (pointStyle),
22 m_lineStyle (lineStyle)
23 {
24 }
25
lineStyle() const26 LineStyle CurveStyle::lineStyle() const
27 {
28 return m_lineStyle;
29 }
30
loadXml(QXmlStreamReader & reader)31 QString CurveStyle::loadXml(QXmlStreamReader &reader)
32 {
33 LOG4CPP_INFO_S ((*mainCat)) << "CurveStyle::loadXml";
34
35 bool success = true;
36 QString curveName;
37
38 QXmlStreamAttributes attributes = reader.attributes();
39
40 if (attributes.hasAttribute(DOCUMENT_SERIALIZE_CURVE_NAME)) {
41
42 curveName = attributes.value (DOCUMENT_SERIALIZE_CURVE_NAME).toString();
43
44 // Read until end of this subtree
45 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
46 (reader.name() != DOCUMENT_SERIALIZE_POINT_STYLE)){
47 loadNextFromReader(reader);
48
49 if (reader.atEnd()) {
50 success = false;
51 break;
52 }
53
54 if ((reader.tokenType() == QXmlStreamReader::StartElement) &&
55 (reader.name() == DOCUMENT_SERIALIZE_LINE_STYLE)) {
56
57 m_lineStyle.loadXml (reader);
58
59 } else if ((reader.tokenType() == QXmlStreamReader::StartElement) &
60 (reader.name() == DOCUMENT_SERIALIZE_POINT_STYLE)) {
61
62 m_pointStyle.loadXml (reader);
63
64 }
65 }
66 }
67
68 if (!success) {
69 reader.raiseError (QObject::tr ("Cannot read curve style data"));
70 }
71
72 return curveName;
73 }
74
pointStyle() const75 PointStyle CurveStyle::pointStyle() const
76 {
77 return m_pointStyle;
78 }
79
printStream(QString indentation,QTextStream & str) const80 void CurveStyle::printStream(QString indentation,
81 QTextStream &str) const
82 {
83 str << indentation << "CurveStyle\n";
84
85 indentation += INDENTATION_DELTA;
86
87 m_pointStyle.printStream (indentation,
88 str);
89 m_lineStyle.printStream (indentation,
90 str);
91 }
92
saveXml(QXmlStreamWriter & writer,const QString & curveName) const93 void CurveStyle::saveXml(QXmlStreamWriter &writer,
94 const QString &curveName) const
95 {
96 LOG4CPP_INFO_S ((*mainCat)) << "CurveStyle::saveXml";
97
98 writer.writeStartElement(DOCUMENT_SERIALIZE_CURVE_STYLE);
99 writer.writeAttribute (DOCUMENT_SERIALIZE_CURVE_NAME, curveName);
100 m_lineStyle.saveXml (writer);
101 m_pointStyle.saveXml (writer);
102 writer.writeEndElement();
103 }
104
setLineColor(ColorPalette lineColor)105 void CurveStyle::setLineColor (ColorPalette lineColor)
106 {
107 m_lineStyle.setPaletteColor(lineColor);
108 }
109
setLineConnectAs(CurveConnectAs curveConnectAs)110 void CurveStyle::setLineConnectAs (CurveConnectAs curveConnectAs)
111 {
112 m_lineStyle.setCurveConnectAs(curveConnectAs);
113 }
114
setLineStyle(const LineStyle & lineStyle)115 void CurveStyle::setLineStyle(const LineStyle &lineStyle)
116 {
117 m_lineStyle = lineStyle;
118 }
119
setLineWidth(int width)120 void CurveStyle::setLineWidth (int width)
121 {
122 m_lineStyle.setWidth(width);
123 }
124
setPointColor(ColorPalette curveColor)125 void CurveStyle::setPointColor (ColorPalette curveColor)
126 {
127 m_pointStyle.setPaletteColor(curveColor);
128 }
129
setPointLineWidth(int width)130 void CurveStyle::setPointLineWidth (int width)
131 {
132 m_pointStyle.setLineWidth(width);
133 }
134
setPointRadius(int radius)135 void CurveStyle::setPointRadius (int radius)
136 {
137 m_pointStyle.setRadius(radius);
138 }
139
setPointShape(PointShape shape)140 void CurveStyle::setPointShape (PointShape shape)
141 {
142 m_pointStyle.setShape(shape);
143 }
144
setPointStyle(const PointStyle & pointStyle)145 void CurveStyle::setPointStyle(const PointStyle &pointStyle)
146 {
147 m_pointStyle = pointStyle;
148 }
149