Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
Curve.h
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #ifndef CURVE_H
8 #define CURVE_H
9 
10 #include "CallbackSearchReturn.h"
11 #include "ColorFilterSettings.h"
12 #include "CurveStyle.h"
13 #include "functor.h"
14 #include "Point.h"
15 #include "Points.h"
16 #include <QHash>
17 #include <QList>
18 #include <QString>
19 
20 extern const QString AXIS_CURVE_NAME;
21 extern const QString DEFAULT_GRAPH_CURVE_NAME;
22 extern const QString DUMMY_CURVE_NAME;
23 
24 class CurvesGraphs;
25 class QDataStream;
26 class QTextStream;
27 class QXmlStreamReader;
28 class QXmlStreamWriter;
29 class Transformation;
30 
32 class Curve
33 {
34 public:
36  Curve(const QString &curveName,
38  const CurveStyle &curveStyle);
39 
41  Curve (QDataStream &str);
42 
44  Curve (QXmlStreamReader &reader);
45 
47  Curve (const Curve &curve);
48 
50  Curve &operator=(const Curve &curve);
51 
53  void addPoint (Point point);
54 
57 
59  QString curveName () const;
60 
62  CurveStyle curveStyle() const;
63 
65  void editPoint (const QPointF &posGraph,
66  const QString &identifier);
67 
69  void exportToClipboard (const QHash<QString, bool> &selectedHash,
70  const Transformation &transformation,
71  QTextStream &strCsv,
72  QTextStream &strHtml,
73  CurvesGraphs &curvesGraphs) const;
74 
76  bool isXOnly (const QString &pointIdentifier) const;
77 
79  void iterateThroughCurvePoints (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
80 
82  void iterateThroughCurveSegments (const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
83 
85  void movePoint (const QString &pointIdentifier,
86  const QPointF &deltaScreen);
87 
89  int numPoints () const;
90 
92  const Points points () const;
93 
95  QPointF positionGraph (const QString &pointIdentifier) const;
96 
98  QPointF positionScreen (const QString &pointIdentifier) const;
99 
101  void printStream (QString indentation,
102  QTextStream &str) const;
103 
105  void removePoint (const QString &identifier);
106 
108  void saveXml(QXmlStreamWriter &writer) const;
109 
111  void setColorFilterSettings (const ColorFilterSettings &colorFilterSettings);
112 
114  void setCurveName (const QString &curveName);
115 
117  void setCurveStyle (const CurveStyle &curveStyle);
118 
121  void updatePointOrdinals (const Transformation &transformation);
122 
123 private:
124  Curve();
125 
126  void loadCurvePoints(QXmlStreamReader &reader);
127  void loadXml(QXmlStreamReader &reader);
128  Point *pointForPointIdentifier (const QString pointIdentifier);
129  void updatePointOrdinalsFunctions (const Transformation &transformation);
130  void updatePointOrdinalsRelations ();
131 
132  QString m_curveName;
133  Points m_points;
134 
135  ColorFilterSettings m_colorFilterSettings;
136  CurveStyle m_curveStyle;
137 };
138 
139 #endif // CURVE_H
void removePoint(const QString &identifier)
Perform the opposite of addPointAtEnd.
Definition: Curve.cpp:451
QPointF positionScreen(const QString &pointIdentifier) const
Return the position, in screen coordinates, of the specified Point.
Definition: Curve.cpp:414
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:160
const Points points() const
Return a shallow copy of the Points.
Definition: Curve.cpp:392
void setCurveStyle(const CurveStyle &curveStyle)
Set curve style.
Definition: Curve.cpp:504
void addPoint(Point point)
Add Point to this Curve.
Definition: Curve.cpp:123
void setColorFilterSettings(const ColorFilterSettings &colorFilterSettings)
Set color filter.
Definition: Curve.cpp:487
int numPoints() const
Number of points.
Definition: Curve.cpp:373
void updatePointOrdinals(const Transformation &transformation)
See CurveGraphs::updatePointOrdinals.
Definition: Curve.cpp:509
bool isXOnly(const QString &pointIdentifier) const
Determine if specified point has just x coordinate. Otherwise has just y coordinate, or both x and y coordinates.
Definition: Curve.cpp:225
Class that represents one digitized point. The screen-to-graph coordinate transformation is always ex...
Definition: Point.h:23
QPointF positionGraph(const QString &pointIdentifier) const
Return the position, in graph coordinates, of the specified Point.
Definition: Curve.cpp:397
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:431
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:143
Curve & operator=(const Curve &curve)
Assignment constructor.
Definition: Curve.cpp:113
void movePoint(const QString &pointIdentifier, const QPointF &deltaScreen)
Translate the position of a point by the specified distance vector.
Definition: Curve.cpp:364
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:24
void iterateThroughCurvePoints(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
Apply functor to Points on Curve.
Definition: Curve.cpp:242
void setCurveName(const QString &curveName)
Change the curve name.
Definition: Curve.cpp:492
Container for LineStyle and PointStyle for one Curve.
Definition: CurveStyle.h:18
Container for one set of digitized Points.
Definition: Curve.h:32
CurveStyle curveStyle() const
Return the curve style.
Definition: Curve.cpp:138
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:257
void saveXml(QXmlStreamWriter &writer) const
Serialize curve.
Definition: Curve.cpp:464
ColorFilterSettings colorFilterSettings() const
Return the color filter.
Definition: Curve.cpp:128
QString curveName() const
Name of this Curve.
Definition: Curve.cpp:133