00001
00002
00003
00004
00005
00006
00007 #ifndef CURVE_H
00008 #define CURVE_H
00009
00010 #include "CallbackSearchReturn.h"
00011 #include "ColorFilterSettings.h"
00012 #include "CurveStyle.h"
00013 #include "functor.h"
00014 #include "Point.h"
00015 #include "Points.h"
00016 #include <QHash>
00017 #include <QList>
00018 #include <QString>
00019
00020 extern const QString AXIS_CURVE_NAME;
00021 extern const QString DEFAULT_GRAPH_CURVE_NAME;
00022 extern const QString DUMMY_CURVE_NAME;
00023
00024 class CurvesGraphs;
00025 class QDataStream;
00026 class QTextStream;
00027 class QXmlStreamReader;
00028 class QXmlStreamWriter;
00029 class Transformation;
00030
00032 class Curve
00033 {
00034 public:
00036 Curve(const QString &curveName,
00037 const ColorFilterSettings &colorFilterSettings,
00038 const CurveStyle &curveStyle);
00039
00041 Curve (QDataStream &str);
00042
00044 Curve (QXmlStreamReader &reader);
00045
00047 Curve (const Curve &curve);
00048
00050 Curve &operator=(const Curve &curve);
00051
00053 void addPoint (Point point);
00054
00056 ColorFilterSettings colorFilterSettings () const;
00057
00059 QString curveName () const;
00060
00062 CurveStyle curveStyle() const;
00063
00065 void editPoint (const QPointF &posGraph,
00066 const QString &identifier);
00067
00069 void exportToClipboard (const QHash<QString, bool> &selectedHash,
00070 const Transformation &transformation,
00071 QTextStream &strCsv,
00072 QTextStream &strHtml,
00073 CurvesGraphs &curvesGraphs) const;
00074
00076 bool isXOnly (const QString &pointIdentifier) const;
00077
00079 void iterateThroughCurvePoints (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
00080
00082 void iterateThroughCurveSegments (const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
00083
00085 void movePoint (const QString &pointIdentifier,
00086 const QPointF &deltaScreen);
00087
00089 int numPoints () const;
00090
00092 const Points points () const;
00093
00095 QPointF positionGraph (const QString &pointIdentifier) const;
00096
00098 QPointF positionScreen (const QString &pointIdentifier) const;
00099
00101 void printStream (QString indentation,
00102 QTextStream &str) const;
00103
00105 void removePoint (const QString &identifier);
00106
00108 void saveXml(QXmlStreamWriter &writer) const;
00109
00111 void setColorFilterSettings (const ColorFilterSettings &colorFilterSettings);
00112
00114 void setCurveName (const QString &curveName);
00115
00117 void setCurveStyle (const CurveStyle &curveStyle);
00118
00121 void updatePointOrdinals (const Transformation &transformation);
00122
00123 private:
00124 Curve();
00125
00126 void loadCurvePoints(QXmlStreamReader &reader);
00127 void loadXml(QXmlStreamReader &reader);
00128 Point *pointForPointIdentifier (const QString pointIdentifier);
00129 void updatePointOrdinalsFunctions (const Transformation &transformation);
00130 void updatePointOrdinalsRelations ();
00131
00132 QString m_curveName;
00133 Points m_points;
00134
00135 ColorFilterSettings m_colorFilterSettings;
00136 CurveStyle m_curveStyle;
00137 };
00138
00139 #endif // CURVE_H