00001
00002
00003
00004
00005
00006
00007 #ifndef COORD_SYSTEM_H
00008 #define COORD_SYSTEM_H
00009
00010 #include "CoordSystemInterface.h"
00011 #include "CurvesGraphs.h"
00012 #include "CurveStyles.h"
00013 #include "DocumentAxesPointsRequired.h"
00014 #include "DocumentModelAxesChecker.h"
00015 #include "DocumentModelColorFilter.h"
00016 #include "DocumentModelCoords.h"
00017 #include "DocumentModelDigitizeCurve.h"
00018 #include "DocumentModelExportFormat.h"
00019 #include "DocumentModelGeneral.h"
00020 #include "DocumentModelGridDisplay.h"
00021 #include "DocumentModelGridRemoval.h"
00022 #include "DocumentModelPointMatch.h"
00023 #include "DocumentModelSegments.h"
00024 #include "PointStyle.h"
00025 #include <QList>
00026 #include <QPixmap>
00027 #include <QString>
00028 #include <QStringList>
00029 #include <QXmlStreamReader>
00030
00031 class Curve;
00032 class QByteArray;
00033 class QDataStream;
00034 class QImage;
00035 class QTransform;
00036 class QXmlStreamReader;
00037 class QXmlStreamWriter;
00038 class Transformation;
00039
00042 class CoordSystem : public CoordSystemInterface
00043 {
00044 public:
00046 CoordSystem ();
00047
00049 CoordSystem (const QString &fileName);
00050
00051 virtual void addGraphCurveAtEnd (const QString &curveName);
00052 virtual void addPointAxisWithGeneratedIdentifier (const QPointF &posScreen,
00053 const QPointF &posGraph,
00054 QString &identifier,
00055 double ordinal,
00056 bool isXOnly);
00057 virtual void addPointAxisWithSpecifiedIdentifier (const QPointF &posScreen,
00058 const QPointF &posGraph,
00059 const QString &identifier,
00060 double ordinal,
00061 bool isXOnly);
00062 virtual void addPointGraphWithGeneratedIdentifier (const QString &curveName,
00063 const QPointF &posScreen,
00064 QString &generatedIentifier,
00065 double ordinal);
00066 virtual void addPointGraphWithSpecifiedIdentifier (const QString &curveName,
00067 const QPointF &posScreen,
00068 const QString &identifier,
00069 double ordinal);
00070 virtual void addPointsInCurvesGraphs (CurvesGraphs &curvesGraphs);
00071 virtual void checkAddPointAxis (const QPointF &posScreen,
00072 const QPointF &posGraph,
00073 bool &isError,
00074 QString &errorMessage,
00075 bool isXOnly,
00076 DocumentAxesPointsRequired documentAxesPointsRequired);
00077 virtual void checkEditPointAxis (const QString &pointIdentifier,
00078 const QPointF &posScreen,
00079 const QPointF &posGraph,
00080 bool &isError,
00081 QString &errorMessage,
00082 DocumentAxesPointsRequired documentAxesPointsRequired);
00083 virtual const Curve &curveAxes () const;
00084 virtual Curve *curveForCurveName (const QString &curveName);
00085 virtual const Curve *curveForCurveName (const QString &curveName) const;
00086 virtual const CurvesGraphs &curvesGraphs () const;
00087 virtual QStringList curvesGraphsNames () const;
00088 virtual int curvesGraphsNumPoints (const QString &curveName) const;
00089 virtual void editPointAxis (const QPointF &posGraph,
00090 const QString &identifier);
00091 virtual void editPointGraph (bool isX,
00092 bool isY,
00093 double x,
00094 double y,
00095 const QStringList &identifiers,
00096 const Transformation &transformation);
00097
00100 bool isXOnly (const QString &pointIdentifier) const;
00101
00102 virtual void iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback);
00103 virtual void iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
00104 virtual void iterateThroughCurveSegments (const QString &curveName,
00105 const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
00106 virtual void iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback);
00107 virtual void iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
00108 virtual bool loadCurvesFile (const QString &curvesFile);
00109
00111 void loadPreVersion6 (QDataStream &str,
00112 double version,
00113 DocumentAxesPointsRequired &documentAxesPointsRequired);
00115 void loadVersion6 (QXmlStreamReader &reader,
00116 DocumentAxesPointsRequired &documentAxesPointsRequired);
00118 void loadVersions7AndUp (QXmlStreamReader &reader);
00119
00120 virtual DocumentModelAxesChecker modelAxesChecker() const;
00121 virtual DocumentModelColorFilter modelColorFilter() const;
00122 virtual DocumentModelCoords modelCoords () const;
00123 virtual CurveStyles modelCurveStyles() const;
00124 virtual DocumentModelDigitizeCurve modelDigitizeCurve() const;
00125 virtual DocumentModelExportFormat modelExport() const;
00126 virtual DocumentModelGeneral modelGeneral() const;
00127 virtual DocumentModelGridDisplay modelGridDisplay() const;
00128 virtual DocumentModelGridRemoval modelGridRemoval() const;
00129 virtual DocumentModelPointMatch modelPointMatch() const;
00130 virtual DocumentModelSegments modelSegments() const;
00131 virtual void movePoint (const QString &pointIdentifier,
00132 const QPointF &deltaScreen);
00133 virtual int nextOrdinalForCurve (const QString &curveName) const;
00134 virtual QPointF positionGraph (const QString &pointIdentifier) const;
00135 virtual QPointF positionScreen (const QString &pointIdentifier) const;
00136 virtual void print () const;
00137 virtual void printStream (QString indentation,
00138 QTextStream &str) const;
00139 virtual QString reasonForUnsuccessfulRead () const;
00140 virtual void removePointAxis (const QString &identifier);
00141 virtual void removePointGraph (const QString &identifier);
00142 virtual void removePointsInCurvesGraphs (CurvesGraphs &curvesGraphs);
00143 virtual void saveXml (QXmlStreamWriter &writer) const;
00144 virtual QString selectedCurveName () const;
00145 virtual void setCurveAxes (const Curve &curveAxes);
00146 virtual void setCurvesGraphs (const CurvesGraphs &curvesGraphs);
00147 virtual void setModelAxesChecker(const DocumentModelAxesChecker &modelAxesChecker);
00148 virtual void setModelColorFilter(const DocumentModelColorFilter &modelColorFilter);
00149 virtual void setModelCoords (const DocumentModelCoords &modelCoords);
00150 virtual void setModelCurveStyles(const CurveStyles &modelCurveStyles);
00151 virtual void setModelDigitizeCurve (const DocumentModelDigitizeCurve &modelDigitizeCurve);
00152 virtual void setModelExport(const DocumentModelExportFormat &modelExport);
00153 virtual void setModelGeneral (const DocumentModelGeneral &modelGeneral);
00154 virtual void setModelGridDisplay(const DocumentModelGridDisplay &modelGridDisplay);
00155 virtual void setModelGridRemoval(const DocumentModelGridRemoval &modelGridRemoval);
00156 void setModelPointMatch(const DocumentModelPointMatch &modelPointMatch);
00157 virtual void setModelSegments(const DocumentModelSegments &modelSegments);
00158 virtual void setSelectedCurveName(const QString &selectedCurveName);
00159 virtual bool successfulRead () const;
00160 virtual void updatePointOrdinals (const Transformation &transformation);
00161
00162 private:
00163
00164 bool bytesIndicatePreVersion6 (const QByteArray &bytes) const;
00165 void resetSelectedCurveNameIfNecessary ();
00166
00167
00168 bool m_successfulRead;
00169 QString m_reasonForUnsuccessfulRead;
00170
00171
00172 Curve *m_curveAxes;
00173 CurvesGraphs m_curvesGraphs;
00174
00175
00176 DocumentModelAxesChecker m_modelAxesChecker;
00177
00178 DocumentModelCoords m_modelCoords;
00179
00180 DocumentModelDigitizeCurve m_modelDigitizeCurve;
00181 DocumentModelExportFormat m_modelExport;
00182 DocumentModelGeneral m_modelGeneral;
00183 DocumentModelGridDisplay m_modelGridDisplay;
00184 DocumentModelGridRemoval m_modelGridRemoval;
00185 DocumentModelPointMatch m_modelPointMatch;
00186 DocumentModelSegments m_modelSegments;
00187
00188
00189 QString m_selectedCurveName;
00190 };
00191
00192 #endif // COORD_SYSTEM_H