Engauge Digitizer  2
Curve.h
1 #ifndef CURVE_H
2 #define CURVE_H
3 
4 #include "CallbackSearchReturn.h"
5 #include "ColorFilterSettings.h"
6 #include "CurveStyle.h"
7 #include "functor.h"
8 #include "Point.h"
9 #include "Points.h"
10 #include <QHash>
11 #include <QList>
12 #include <QString>
13 
14 extern const QString AXIS_CURVE_NAME;
15 extern const QString DEFAULT_GRAPH_CURVE_NAME;
16 
17 class CurvesGraphs;
18 class QTextStream;
19 class QXmlStreamReader;
20 class QXmlStreamWriter;
21 class Transformation;
22 
24 class Curve
25 {
26 public:
28  Curve(const QString &curveName,
30  const CurveStyle &curveStyle);
31 
33  Curve (QXmlStreamReader &reader);
34 
36  Curve (const Curve &curve);
37 
39  Curve &operator=(const Curve &curve);
40 
42  void addPoint (Point point);
43 
46 
48  QString curveName () const;
49 
51  CurveStyle curveStyle() const;
52 
54  void editPoint (const QPointF &posGraph,
55  const QString &identifier);
56 
58  void exportToClipboard (const QHash<QString, bool> &selectedHash,
59  const Transformation &transformation,
60  QTextStream &strCsv,
61  QTextStream &strHtml,
62  CurvesGraphs &curvesGraphs) const;
63 
65  void iterateThroughCurvePoints (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
66 
68  void iterateThroughCurveSegments (const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
69 
71  void movePoint (const QString &pointIdentifier,
72  const QPointF &deltaScreen);
73 
75  int numPoints () const;
76 
78  const Points points () const;
79 
81  QPointF positionGraph (const QString &pointIdentifier) const;
82 
84  QPointF positionScreen (const QString &pointIdentifier) const;
85 
87  void printStream (QString indentation,
88  QTextStream &str) const;
89 
91  void removePoint (const QString &identifier);
92 
94  void saveXml(QXmlStreamWriter &writer) const;
95 
97  void setColorFilterSettings (const ColorFilterSettings &colorFilterSettings);
98 
100  void setCurveName (const QString &curveName);
101 
103  void setCurveStyle (const CurveStyle &curveStyle);
104 
107  void updatePointOrdinals (const Transformation &transformation);
108 
109 private:
110  Curve();
111 
112  void loadCurvePoints(QXmlStreamReader &reader);
113  void loadXml(QXmlStreamReader &reader);
114  Point *pointForPointIdentifier (const QString pointIdentifier);
115  void updatePointOrdinalsFunctions (const Transformation &transformation);
116  void updatePointOrdinalsRelations ();
117 
118  QString m_curveName;
119  Points m_points;
120 
121  ColorFilterSettings m_colorFilterSettings;
122  CurveStyle m_curveStyle;
123 };
124 
125 #endif // CURVE_H
void removePoint(const QString &identifier)
Perform the opposite of addPointAtEnd.
Definition: Curve.cpp:366
QPointF positionScreen(const QString &pointIdentifier) const
Return the position, in screen coordinates, of the specified Point.
Definition: Curve.cpp:329
Color filter parameters for one curve. For a class, this is handled the same as LineStyle and PointSt...
void exportToClipboard(const QHash< QString, bool > &selectedHash, const Transformation &transformation, QTextStream &strCsv, QTextStream &strHtml, CurvesGraphs &curvesGraphs) const
Export points in this Curve found in the specified point list.
Definition: Curve.cpp:92
const Points points() const
Return a shallow copy of the Points.
Definition: Curve.cpp:307
void setCurveStyle(const CurveStyle &curveStyle)
Set curve style.
Definition: Curve.cpp:411
void addPoint(Point point)
Add Point to this Curve.
Definition: Curve.cpp:55
void setColorFilterSettings(const ColorFilterSettings &colorFilterSettings)
Set color filter.
Definition: Curve.cpp:401
int numPoints() const
Number of points.
Definition: Curve.cpp:288
void updatePointOrdinals(const Transformation &transformation)
See CurveGraphs::updatePointOrdinals.
Definition: Curve.cpp:416
Class that represents one digitized point. The screen-to-graph coordinate transformation is always ex...
Definition: Point.h:17
QPointF positionGraph(const QString &pointIdentifier) const
Return the position, in graph coordinates, of the specified Point.
Definition: Curve.cpp:312
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: Curve.cpp:346
void editPoint(const QPointF &posGraph, const QString &identifier)
Edit the graph coordinates of an axis point. This method does not apply to a graph point...
Definition: Curve.cpp:75
Curve & operator=(const Curve &curve)
Assignment constructor.
Definition: Curve.cpp:45
void movePoint(const QString &pointIdentifier, const QPointF &deltaScreen)
Translate the position of a point by the specified distance vector.
Definition: Curve.cpp:279
Affine transformation between screen and graph coordinates, based on digitized axis points...
Container for all graph curves. The axes point curve is external to this class.
Definition: CurvesGraphs.h:18
void iterateThroughCurvePoints(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
Apply functor to Points on Curve.
Definition: Curve.cpp:157
void setCurveName(const QString &curveName)
Change the curve name.
Definition: Curve.cpp:406
Container for LineStyle and PointStyle for one Curve.
Definition: CurveStyle.h:12
Container for one set of digitized Points.
Definition: Curve.h:24
CurveStyle curveStyle() const
Return the curve style.
Definition: Curve.cpp:70
void iterateThroughCurveSegments(const Functor2wRet< const Point &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
Apply functor to successive Points, as line segments, on Curve. This could be a bit slow...
Definition: Curve.cpp:172
void saveXml(QXmlStreamWriter &writer) const
Serialize curve.
Definition: Curve.cpp:379
ColorFilterSettings colorFilterSettings() const
Return the color filter.
Definition: Curve.cpp:60
QString curveName() const
Name of this Curve.
Definition: Curve.cpp:65