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 editPointAxis (const QPointF &posGraph,
66  const QString &identifier);
67 
69  void editPointGraph (bool isX,
70  bool isY,
71  double x,
72  double y,
73  const QStringList &identifiers,
74  const Transformation &transformation);
75 
77  void exportToClipboard (const QHash<QString, bool> &selectedHash,
78  const Transformation &transformation,
79  QTextStream &strCsv,
80  QTextStream &strHtml,
81  CurvesGraphs &curvesGraphs) const;
82 
84  bool isXOnly (const QString &pointIdentifier) const;
85 
87  void iterateThroughCurvePoints (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
88 
90  void iterateThroughCurveSegments (const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback) const;
91 
93  void movePoint (const QString &pointIdentifier,
94  const QPointF &deltaScreen);
95 
97  int numPoints () const;
98 
100  const Points points () const;
101 
103  QPointF positionGraph (const QString &pointIdentifier) const;
104 
106  QPointF positionScreen (const QString &pointIdentifier) const;
107 
109  void printStream (QString indentation,
110  QTextStream &str) const;
111 
113  void removePoint (const QString &identifier);
114 
116  void saveXml(QXmlStreamWriter &writer) const;
117 
119  void setColorFilterSettings (const ColorFilterSettings &colorFilterSettings);
120 
122  void setCurveName (const QString &curveName);
123 
125  void setCurveStyle (const CurveStyle &curveStyle);
126 
129  void updatePointOrdinals (const Transformation &transformation);
130 
131 private:
132  Curve();
133 
134  void loadCurvePoints(QXmlStreamReader &reader);
135  void loadXml(QXmlStreamReader &reader);
136  Point *pointForPointIdentifier (const QString pointIdentifier);
137  void updatePointOrdinalsFunctions (const Transformation &transformation);
138  void updatePointOrdinalsRelations ();
139 
140  QString m_curveName;
141  Points m_points;
142 
143  ColorFilterSettings m_colorFilterSettings;
144  CurveStyle m_curveStyle;
145 };
146 
147 #endif // CURVE_H
void removePoint(const QString &identifier)
Perform the opposite of addPointAtEnd.
Definition: Curve.cpp:503
QPointF positionScreen(const QString &pointIdentifier) const
Return the position, in screen coordinates, of the specified Point.
Definition: Curve.cpp:466
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:212
const Points points() const
Return a shallow copy of the Points.
Definition: Curve.cpp:444
void setCurveStyle(const CurveStyle &curveStyle)
Set curve style.
Definition: Curve.cpp:556
void addPoint(Point point)
Add Point to this Curve.
Definition: Curve.cpp:126
void setColorFilterSettings(const ColorFilterSettings &colorFilterSettings)
Set color filter.
Definition: Curve.cpp:539
int numPoints() const
Number of points.
Definition: Curve.cpp:425
void updatePointOrdinals(const Transformation &transformation)
See CurveGraphs::updatePointOrdinals.
Definition: Curve.cpp:561
void editPointAxis(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:146
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:277
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:449
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:483
Curve & operator=(const Curve &curve)
Assignment constructor.
Definition: Curve.cpp:116
void movePoint(const QString &pointIdentifier, const QPointF &deltaScreen)
Translate the position of a point by the specified distance vector.
Definition: Curve.cpp:416
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:294
void setCurveName(const QString &curveName)
Change the curve name.
Definition: Curve.cpp:544
Container for LineStyle and PointStyle for one Curve.
Definition: CurveStyle.h:18
Container for one set of digitized Points.
Definition: Curve.h:32
void editPointGraph(bool isX, bool isY, double x, double y, const QStringList &identifiers, const Transformation &transformation)
Edit the graph coordinates of one or more graph points. This method does not apply to an axis point...
Definition: Curve.cpp:163
CurveStyle curveStyle() const
Return the curve style.
Definition: Curve.cpp:141
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:309
void saveXml(QXmlStreamWriter &writer) const
Serialize curve.
Definition: Curve.cpp:516
ColorFilterSettings colorFilterSettings() const
Return the color filter.
Definition: Curve.cpp:131
QString curveName() const
Name of this Curve.
Definition: Curve.cpp:136