00001
00002
00003
00004
00005
00006
00007 #include "DocumentSerialize.h"
00008 #include "LineStyle.h"
00009 #include "Logger.h"
00010 #include <QObject>
00011 #include <QSettings>
00012 #include <QTextStream>
00013 #include <QXmlStreamReader>
00014 #include <QXmlStreamWriter>
00015 #include "Settings.h"
00016 #include "SettingsForGraph.h"
00017 #include "Xml.h"
00018
00019 const ColorPalette DEFAULT_LINE_COLOR_AXES = COLOR_PALETTE_TRANSPARENT;
00020 const ColorPalette DEFAULT_LINE_COLOR_GRAPH = COLOR_PALETTE_BLUE;
00021 const CurveConnectAs DEFAULT_LINE_CONNECT_AS_AXES = CONNECT_SKIP_FOR_AXIS_CURVE;
00022 const CurveConnectAs DEFAULT_LINE_CONNECT_AS_GRAPH = CONNECT_AS_FUNCTION_SMOOTH;
00023 const int DEFAULT_LINE_WIDTH_AXES = 0;
00024 const int DEFAULT_LINE_WIDTH_GRAPH = 1;
00025
00026 LineStyle::LineStyle ()
00027 {
00028 QSettings settings (SETTINGS_ENGAUGE, SETTINGS_DIGITIZER);
00029 settings.beginGroup (SETTINGS_GROUP_CURVE_AXES);
00030 m_width = settings.value (SETTINGS_CURVE_LINE_WIDTH,
00031 DEFAULT_LINE_WIDTH_AXES).toInt();
00032 m_paletteColor = (ColorPalette) settings.value (SETTINGS_CURVE_LINE_COLOR,
00033 DEFAULT_LINE_COLOR_AXES).toInt();
00034 m_curveConnectAs = (CurveConnectAs) settings.value (SETTINGS_CURVE_LINE_CONNECT_AS,
00035 DEFAULT_LINE_CONNECT_AS_AXES).toInt();
00036 }
00037
00038 LineStyle::LineStyle (unsigned int width,
00039 ColorPalette paletteColor,
00040 CurveConnectAs curveConnectAs) :
00041 m_width (width),
00042 m_paletteColor (paletteColor),
00043 m_curveConnectAs (curveConnectAs)
00044 {
00045 }
00046
00047 LineStyle::LineStyle (const LineStyle &other) :
00048 m_width (other.width ()),
00049 m_paletteColor (other.paletteColor()),
00050 m_curveConnectAs (other.curveConnectAs())
00051 {
00052 }
00053
00054 LineStyle &LineStyle::operator= (const LineStyle &other)
00055 {
00056 m_width = other.width ();
00057 m_paletteColor = other.paletteColor();
00058 m_curveConnectAs = other.curveConnectAs();
00059
00060 return *this;
00061 }
00062
00063 CurveConnectAs LineStyle::curveConnectAs () const
00064 {
00065 return m_curveConnectAs;
00066 }
00067
00068 LineStyle LineStyle::defaultAxesCurve ()
00069 {
00070 QSettings settings (SETTINGS_ENGAUGE, SETTINGS_DIGITIZER);
00071 settings.beginGroup (SETTINGS_GROUP_CURVE_AXES);
00072 int width = settings.value (SETTINGS_CURVE_LINE_WIDTH,
00073 DEFAULT_LINE_WIDTH_AXES).toInt();
00074 ColorPalette color = (ColorPalette) settings.value (SETTINGS_CURVE_LINE_COLOR,
00075 DEFAULT_LINE_COLOR_AXES).toInt();
00076 CurveConnectAs connectAs = (CurveConnectAs) settings.value (SETTINGS_CURVE_LINE_CONNECT_AS,
00077 DEFAULT_LINE_CONNECT_AS_AXES).toInt();
00078
00079 return LineStyle (width,
00080 color,
00081 connectAs);
00082 }
00083
00084 LineStyle LineStyle::defaultGraphCurve (int index)
00085 {
00086 SettingsForGraph settingsForGraph;
00087 int indexOneBased = index + 1;
00088 QString groupName = settingsForGraph.groupNameForNthCurve (indexOneBased);
00089
00090 QSettings settings (SETTINGS_ENGAUGE, SETTINGS_DIGITIZER);
00091 settings.beginGroup (groupName);
00092 int width = settings.value (SETTINGS_CURVE_LINE_WIDTH,
00093 DEFAULT_LINE_WIDTH_GRAPH).toInt();
00094 ColorPalette color = (ColorPalette) settings.value (SETTINGS_CURVE_LINE_COLOR,
00095 DEFAULT_LINE_COLOR_GRAPH).toInt();
00096 CurveConnectAs connectAs = (CurveConnectAs) settings.value (SETTINGS_CURVE_LINE_CONNECT_AS,
00097 DEFAULT_LINE_CONNECT_AS_GRAPH).toInt();
00098
00099 return LineStyle (width,
00100 color,
00101 connectAs);
00102 }
00103
00104 void LineStyle::loadXml(QXmlStreamReader &reader)
00105 {
00106 LOG4CPP_INFO_S ((*mainCat)) << "LineStyle::loadXml";
00107
00108 QXmlStreamAttributes attributes = reader.attributes();
00109
00110 if (attributes.hasAttribute(DOCUMENT_SERIALIZE_LINE_STYLE_WIDTH) &&
00111 attributes.hasAttribute(DOCUMENT_SERIALIZE_LINE_STYLE_COLOR) &&
00112 attributes.hasAttribute(DOCUMENT_SERIALIZE_LINE_STYLE_CONNECT_AS)) {
00113
00114 setWidth (attributes.value(DOCUMENT_SERIALIZE_LINE_STYLE_WIDTH).toInt());
00115 setPaletteColor ((ColorPalette) attributes.value(DOCUMENT_SERIALIZE_LINE_STYLE_COLOR).toInt());
00116 setCurveConnectAs ((CurveConnectAs) attributes.value(DOCUMENT_SERIALIZE_LINE_STYLE_CONNECT_AS).toInt());
00117
00118
00119 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
00120 (reader.name() != DOCUMENT_SERIALIZE_LINE_STYLE)){
00121 loadNextFromReader(reader);
00122 }
00123 } else {
00124 reader.raiseError (QObject::tr ("Cannot read line style data"));
00125 }
00126 }
00127
00128 ColorPalette LineStyle::paletteColor() const
00129 {
00130 return m_paletteColor;
00131 }
00132
00133 void LineStyle::printStream(QString indentation,
00134 QTextStream &str) const
00135 {
00136 str << indentation << "LineStyle\n";
00137
00138 indentation += INDENTATION_DELTA;
00139
00140 str << indentation << "width=" << m_width << "\n";
00141 str << indentation << "color=" << colorPaletteToString (m_paletteColor) << "\n";
00142 str << indentation << "curveConnectAs=" << curveConnectAsToString (m_curveConnectAs) << "\n";
00143 }
00144
00145 void LineStyle::saveXml(QXmlStreamWriter &writer) const
00146 {
00147 LOG4CPP_INFO_S ((*mainCat)) << "LineStyle::saveXml";
00148
00149 writer.writeStartElement(DOCUMENT_SERIALIZE_LINE_STYLE);
00150 writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_WIDTH, QString::number(m_width));
00151 writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_COLOR, QString::number (m_paletteColor));
00152 writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_COLOR_STRING, colorPaletteToString (m_paletteColor));
00153 writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_CONNECT_AS, QString::number (m_curveConnectAs));
00154 writer.writeAttribute (DOCUMENT_SERIALIZE_LINE_STYLE_CONNECT_AS_STRING, curveConnectAsToString (m_curveConnectAs));
00155 writer.writeEndElement();
00156 }
00157
00158 void LineStyle::setCurveConnectAs(CurveConnectAs curveConnectAs)
00159 {
00160 m_curveConnectAs = curveConnectAs;
00161 }
00162
00163 void LineStyle::setPaletteColor (ColorPalette paletteColor)
00164 {
00165 m_paletteColor = paletteColor;
00166 }
00167
00168 void LineStyle::setWidth (int width)
00169 {
00170 m_width = width;
00171 }
00172
00173 unsigned int LineStyle::width () const
00174 {
00175 return m_width;
00176 }