00001
00002
00003
00004
00005
00006
00007 #include "CmdMediator.h"
00008 #include "DocumentModelDigitizeCurve.h"
00009 #include "DocumentSerialize.h"
00010 #include "Logger.h"
00011 #include <QObject>
00012 #include <QTextStream>
00013 #include <QXmlStreamWriter>
00014 #include "Xml.h"
00015
00016 const bool DEFAULT_CURSOR_STANDARD_CROSS = true;
00017 const int DEFAULT_CURSOR_INNER_RADIUS = 5;
00018 const int DEFAULT_CURSOR_LINE_WIDTH = 2;
00019 const CursorSize DEFAULT_CURSOR_SIZE = CURSOR_SIZE_32;
00020
00021 DocumentModelDigitizeCurve::DocumentModelDigitizeCurve() :
00022 m_cursorStandardCross (DEFAULT_CURSOR_STANDARD_CROSS),
00023 m_cursorInnerRadius (DEFAULT_CURSOR_INNER_RADIUS),
00024 m_cursorLineWidth (DEFAULT_CURSOR_LINE_WIDTH),
00025 m_cursorSize (DEFAULT_CURSOR_SIZE)
00026 {
00027 }
00028
00029 DocumentModelDigitizeCurve::DocumentModelDigitizeCurve(const Document &document) :
00030 m_cursorStandardCross (document.modelDigitizeCurve().cursorStandardCross()),
00031 m_cursorInnerRadius (document.modelDigitizeCurve().cursorInnerRadius()),
00032 m_cursorLineWidth (document.modelDigitizeCurve().cursorLineWidth()),
00033 m_cursorSize (document.modelDigitizeCurve().cursorSize())
00034 {
00035 }
00036
00037 DocumentModelDigitizeCurve::DocumentModelDigitizeCurve(const DocumentModelDigitizeCurve &other) :
00038 m_cursorStandardCross (other.cursorStandardCross()),
00039 m_cursorInnerRadius (other.cursorInnerRadius()),
00040 m_cursorLineWidth (other.cursorLineWidth()),
00041 m_cursorSize (other.cursorSize ())
00042 {
00043 }
00044
00045 DocumentModelDigitizeCurve &DocumentModelDigitizeCurve::operator=(const DocumentModelDigitizeCurve &other)
00046 {
00047 m_cursorStandardCross = other.cursorStandardCross();
00048 m_cursorInnerRadius = other.cursorInnerRadius();
00049 m_cursorLineWidth = other.cursorLineWidth();
00050 m_cursorSize = other.cursorSize ();
00051
00052 return *this;
00053 }
00054
00055 int DocumentModelDigitizeCurve::cursorInnerRadius() const
00056 {
00057 return m_cursorInnerRadius;
00058 }
00059
00060 int DocumentModelDigitizeCurve::cursorLineWidth() const
00061 {
00062 return m_cursorLineWidth;
00063 }
00064
00065 CursorSize DocumentModelDigitizeCurve::cursorSize() const
00066 {
00067 return m_cursorSize;
00068 }
00069
00070 bool DocumentModelDigitizeCurve::cursorStandardCross () const
00071 {
00072 return m_cursorStandardCross;
00073 }
00074
00075 void DocumentModelDigitizeCurve::loadXml(QXmlStreamReader &reader)
00076 {
00077 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelDigitizeCurve::loadXml";
00078
00079 bool success = true;
00080
00081 QXmlStreamAttributes attributes = reader.attributes();
00082
00083 if (attributes.hasAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_INNER_RADIUS) &&
00084 attributes.hasAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_LINE_WIDTH) &&
00085 attributes.hasAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_SIZE) &&
00086 attributes.hasAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_STANDARD_CROSS)) {
00087
00088
00089 QString standardCrossValue = attributes.value(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_STANDARD_CROSS).toString();
00090
00091 setCursorInnerRadius (attributes.value(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_INNER_RADIUS).toInt());
00092 setCursorLineWidth (attributes.value(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_LINE_WIDTH).toInt());
00093 setCursorSize ((CursorSize) attributes.value(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_SIZE).toInt());
00094 setCursorStandardCross (standardCrossValue == DOCUMENT_SERIALIZE_BOOL_TRUE);
00095
00096
00097 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
00098 (reader.name() != DOCUMENT_SERIALIZE_DIGITIZE_CURVE)){
00099 loadNextFromReader(reader);
00100 if (reader.atEnd()) {
00101 success = false;
00102 break;
00103 }
00104 }
00105 }
00106
00107 if (!success) {
00108 reader.raiseError (QObject::tr ("Cannot read digitize curve data"));
00109 }
00110 }
00111
00112 void DocumentModelDigitizeCurve::printStream(QString indentation,
00113 QTextStream &str) const
00114 {
00115 str << indentation << "DocumentModelDigitizeCurve\n";
00116
00117 indentation += INDENTATION_DELTA;
00118
00119 str << indentation << "cursorStandardCross=" << (m_cursorStandardCross ? "true" : "false") << "\n";
00120 str << indentation << "cursorInnerRadius=" << m_cursorInnerRadius << "\n";
00121 str << indentation << "cursorSize=" << m_cursorSize << "\n";
00122 str << indentation << "cursorLineWidth=" << m_cursorLineWidth << "\n";
00123 }
00124
00125 void DocumentModelDigitizeCurve::saveXml(QXmlStreamWriter &writer) const
00126 {
00127 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelDigitizeCurve::saveXml";
00128
00129 writer.writeStartElement(DOCUMENT_SERIALIZE_DIGITIZE_CURVE);
00130 writer.writeAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_INNER_RADIUS, QString::number (m_cursorInnerRadius));
00131 writer.writeAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_LINE_WIDTH, QString::number (m_cursorLineWidth));
00132 writer.writeAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_SIZE, QString::number (m_cursorSize));
00133 writer.writeAttribute(DOCUMENT_SERIALIZE_DIGITIZE_CURVE_CURSOR_STANDARD_CROSS, m_cursorStandardCross ?
00134 DOCUMENT_SERIALIZE_BOOL_TRUE :
00135 DOCUMENT_SERIALIZE_BOOL_FALSE);
00136 writer.writeEndElement();
00137 }
00138
00139 void DocumentModelDigitizeCurve::setCursorInnerRadius (int cursorInnerRadius)
00140 {
00141 m_cursorInnerRadius = cursorInnerRadius;
00142 }
00143
00144 void DocumentModelDigitizeCurve::setCursorLineWidth (int cursorLineWidth)
00145 {
00146 m_cursorLineWidth = cursorLineWidth;
00147 }
00148
00149 void DocumentModelDigitizeCurve::setCursorSize (CursorSize cursorSize)
00150 {
00151 m_cursorSize = cursorSize;
00152 }
00153
00154 void DocumentModelDigitizeCurve::setCursorStandardCross (bool cursorStandardCross)
00155 {
00156 m_cursorStandardCross = cursorStandardCross;
00157 }