00001
00002
00003
00004
00005
00006
00007 #ifndef COORD_SYSTEM_CONTEXT_H
00008 #define COORD_SYSTEM_CONTEXT_H
00009
00010 #include "CoordSystem.h"
00011 #include "CoordSystemIndex.h"
00012 #include "CoordSystemInterface.h"
00013 #include "DocumentAxesPointsRequired.h"
00014 #include <QVector>
00015
00016 class QDataStream;
00017 class QXmlStreamReader;
00018 class QXmlStreamWriter;
00019
00020 typedef QVector<CoordSystem*> CoordSystems;
00021
00024 class CoordSystemContext : public CoordSystemInterface
00025 {
00026 public:
00028 CoordSystemContext();
00029
00030 ~CoordSystemContext();
00031
00033 void addCoordSystems(unsigned int numberCoordSystemToAdd);
00034
00035 virtual void addGraphCurveAtEnd (const QString &curveName);
00036 virtual void addPointAxisWithGeneratedIdentifier (const QPointF &posScreen,
00037 const QPointF &posGraph,
00038 QString &identifier,
00039 double ordinal,
00040 bool isXOnly);
00041 virtual void addPointAxisWithSpecifiedIdentifier (const QPointF &posScreen,
00042 const QPointF &posGraph,
00043 const QString &identifier,
00044 double ordinal,
00045 bool isXOnly);
00046 virtual void addPointGraphWithGeneratedIdentifier (const QString &curveName,
00047 const QPointF &posScreen,
00048 QString &generatedIentifier,
00049 double ordinal);
00050 virtual void addPointGraphWithSpecifiedIdentifier (const QString &curveName,
00051 const QPointF &posScreen,
00052 const QString &identifier,
00053 double ordinal);
00054 virtual void addPointsInCurvesGraphs (CurvesGraphs &curvesGraphs);
00055 virtual void checkAddPointAxis (const QPointF &posScreen,
00056 const QPointF &posGraph,
00057 bool &isError,
00058 QString &errorMessage,
00059 bool isXOnly,
00060 DocumentAxesPointsRequired documentAxesPointsRequired);
00061 virtual void checkEditPointAxis (const QString &pointIdentifier,
00062 const QPointF &posScreen,
00063 const QPointF &posGraph,
00064 bool &isError,
00065 QString &errorMessage,
00066 DocumentAxesPointsRequired documentAxesPointsRequired);
00067
00069 const CoordSystem &coordSystem () const;
00070
00072 unsigned int coordSystemCount() const;
00073
00075 CoordSystemIndex coordSystemIndex () const;
00076
00077 virtual const Curve &curveAxes () const;
00078 virtual Curve *curveForCurveName (const QString &curveName);
00079 virtual const Curve *curveForCurveName (const QString &curveName) const;
00080 virtual const CurvesGraphs &curvesGraphs () const;
00081 virtual QStringList curvesGraphsNames () const;
00082 virtual int curvesGraphsNumPoints (const QString &curveName) const;
00083 virtual void editPointAxis (const QPointF &posGraph,
00084 const QString &identifier);
00085 virtual void editPointGraph (bool isX,
00086 bool isY,
00087 double x,
00088 double y,
00089 const QStringList &identifiers,
00090 const Transformation &transformation);
00091
00093 bool isXOnly (const QString &pointIdentifier) const;
00094
00095 virtual void iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback);
00096 virtual void iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
00097 virtual void iterateThroughCurveSegments (const QString &curveName,
00098 const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
00099 virtual void iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback);
00100 virtual void iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
00101 virtual bool loadCurvesFile (const QString &curvesFile);
00102
00104 void loadPreVersion6 (QDataStream &str,
00105 double version,
00106 DocumentAxesPointsRequired &documentAxesPointsRequired);
00108 void loadVersion6 (QXmlStreamReader &reader,
00109 DocumentAxesPointsRequired &documentAxesPointsRequired);
00112 void loadVersions7AndUp (QXmlStreamReader &reader);
00113
00114 virtual DocumentModelAxesChecker modelAxesChecker() const;
00115 virtual DocumentModelColorFilter modelColorFilter() const;
00116 virtual DocumentModelCoords modelCoords () const;
00117 virtual CurveStyles modelCurveStyles() const;
00118 virtual DocumentModelDigitizeCurve modelDigitizeCurve() const;
00119 virtual DocumentModelExportFormat modelExport() const;
00120 virtual DocumentModelGeneral modelGeneral() const;
00121 virtual DocumentModelGridDisplay modelGridDisplay() const;
00122 virtual DocumentModelGridRemoval modelGridRemoval() const;
00123 virtual DocumentModelPointMatch modelPointMatch() const;
00124 virtual DocumentModelSegments modelSegments() const;
00125 virtual void movePoint (const QString &pointIdentifier,
00126 const QPointF &deltaScreen);
00127 virtual int nextOrdinalForCurve (const QString &curveName) const;
00128 virtual QPointF positionGraph (const QString &pointIdentifier) const;
00129 virtual QPointF positionScreen (const QString &pointIdentifier) const;
00130 virtual void print () const;
00131 virtual void printStream (QString indentation,
00132 QTextStream &str) const;
00133 virtual QString reasonForUnsuccessfulRead () const;
00134 virtual void removePointAxis (const QString &identifier);
00135 virtual void removePointGraph (const QString &identifier);
00136 virtual void removePointsInCurvesGraphs (CurvesGraphs &curvesGraphs);
00137 virtual void saveXml (QXmlStreamWriter &writer) const;
00138 virtual QString selectedCurveName () const;
00139
00141 void setCoordSystemIndex (CoordSystemIndex coordSystemIndex);
00142
00143 virtual void setCurveAxes (const Curve &curveAxes);
00144 virtual void setCurvesGraphs (const CurvesGraphs &curvesGraphs);
00145 virtual void setModelAxesChecker(const DocumentModelAxesChecker &modelAxesChecker);
00146 virtual void setModelColorFilter(const DocumentModelColorFilter &modelColorFilter);
00147 virtual void setModelCoords (const DocumentModelCoords &modelCoords);
00148 virtual void setModelCurveStyles(const CurveStyles &modelCurveStyles);
00149 virtual void setModelDigitizeCurve (const DocumentModelDigitizeCurve &modelDigitizeCurve);
00150 virtual void setModelExport(const DocumentModelExportFormat &modelExport);
00151 virtual void setModelGeneral (const DocumentModelGeneral &modelGeneral);
00152 virtual void setModelGridDisplay(const DocumentModelGridDisplay &modelGridDisplay);
00153 virtual void setModelGridRemoval(const DocumentModelGridRemoval &modelGridRemoval);
00154 void setModelPointMatch(const DocumentModelPointMatch &modelPointMatch);
00155 virtual void setModelSegments(const DocumentModelSegments &modelSegments);
00156 virtual void setSelectedCurveName(const QString &selectedCurveName);
00157 virtual bool successfulRead () const;
00158 virtual void updatePointOrdinals (const Transformation &transformation);
00159
00160 private:
00161
00162 CoordSystemIndex m_coordSystemIndex;
00163 CoordSystems m_coordSystems;
00164
00165 };
00166
00167 #endif // COORD_SYSTEM_CONTEXT_H