Engauge Digitizer 2
Loading...
Searching...
No Matches
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
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
20extern const QString AXIS_CURVE_NAME;
21extern const QString DEFAULT_GRAPH_CURVE_NAME;
22extern const QString DUMMY_CURVE_NAME;
23
24class CurvesGraphs;
25class QDataStream;
26class QTextStream;
27class QXmlStreamReader;
28class QXmlStreamWriter;
29class Transformation;
30
32class Curve
33{
34public:
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
112
114 void setCurveName (const QString &curveName);
115
117 void setCurveStyle (const CurveStyle &curveStyle);
118
121 void updatePointOrdinals (const Transformation &transformation);
122
123private:
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
Color filter parameters for one curve. For a class, this is handled the same as LineStyle and PointSt...
Container for LineStyle and PointStyle for one Curve.
Definition CurveStyle.h:19
Container for one set of digitized Points.
Definition Curve.h:33
void addPoint(Point point)
Add Point to this Curve.
Definition Curve.cpp:123
bool isXOnly(const QString &pointIdentifier) const
Determine if specified point has just x coordinate. Otherwise has just y coordinate,...
Definition Curve.cpp:225
void saveXml(QXmlStreamWriter &writer) const
Serialize curve.
Definition Curve.cpp:464
void movePoint(const QString &pointIdentifier, const QPointF &deltaScreen)
Translate the position of a point by the specified distance vector.
Definition Curve.cpp:364
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
Curve & operator=(const Curve &curve)
Assignment constructor.
Definition Curve.cpp:113
CurveStyle curveStyle() const
Return the curve style.
Definition Curve.cpp:138
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
void setCurveStyle(const CurveStyle &curveStyle)
Set curve style.
Definition Curve.cpp:504
void updatePointOrdinals(const Transformation &transformation)
See CurveGraphs::updatePointOrdinals.
Definition Curve.cpp:509
ColorFilterSettings colorFilterSettings() const
Return the color filter.
Definition Curve.cpp:128
void removePoint(const QString &identifier)
Perform the opposite of addPointAtEnd.
Definition Curve.cpp:451
const Points points() const
Return a shallow copy of the Points.
Definition Curve.cpp:392
void setColorFilterSettings(const ColorFilterSettings &colorFilterSettings)
Set color filter.
Definition Curve.cpp:487
void setCurveName(const QString &curveName)
Change the curve name.
Definition Curve.cpp:492
QString curveName() const
Name of this Curve.
Definition Curve.cpp:133
QPointF positionScreen(const QString &pointIdentifier) const
Return the position, in screen coordinates, of the specified Point.
Definition Curve.cpp:414
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
void iterateThroughCurvePoints(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
Apply functor to Points on Curve.
Definition Curve.cpp:242
QPointF positionGraph(const QString &pointIdentifier) const
Return the position, in graph coordinates, of the specified Point.
Definition Curve.cpp:397
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
int numPoints() const
Number of points.
Definition Curve.cpp:373
Container for all graph curves. The axes point curve is external to this class.
Class that represents one digitized point. The screen-to-graph coordinate transformation is always ex...
Definition Point.h:24
Affine transformation between screen and graph coordinates, based on digitized axis points.