Engauge Digitizer  2
CoordSystemInterface.h
Go to the documentation of this file.
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 COORD_SYSTEM_INTERFACE_H
8 #define COORD_SYSTEM_INTERFACE_H
9 
10 #include "CallbackSearchReturn.h"
11 #include "CurveStyles.h"
15 #include "DocumentModelCoords.h"
18 #include "DocumentModelGeneral.h"
22 #include "DocumentModelSegments.h"
23 #include "functor.h"
24 #include "Point.h"
25 
26 class Curve;
27 class CurvesGraphs;
28 class QPointF;
29 class QString;
30 class QStringList;
31 class Transformation;
32 
35 {
36 public:
39  virtual ~CoordSystemInterface ();
40 
42  virtual void addGraphCurveAtEnd (const QString &curveName) = 0;
43 
50  virtual void addPointAxisWithGeneratedIdentifier (const QPointF &posScreen,
51  const QPointF &posGraph,
52  QString &identifier,
53  double ordinal,
54  bool isXOnly) = 0;
55 
62  virtual void addPointAxisWithSpecifiedIdentifier (const QPointF &posScreen,
63  const QPointF &posGraph,
64  const QString &identifier,
65  double ordinal,
66  bool isXOnly) = 0;
67 
69  virtual void addPointGraphWithGeneratedIdentifier (const QString &curveName,
70  const QPointF &posScreen,
71  QString &generatedIentifier,
72  double ordinal) = 0;
73 
75  virtual void addPointGraphWithSpecifiedIdentifier (const QString &curveName,
76  const QPointF &posScreen,
77  const QString &identifier,
78  double ordinal) = 0;
79 
82 
84  virtual void checkAddPointAxis (const QPointF &posScreen,
85  const QPointF &posGraph,
86  bool &isError,
87  QString &errorMessage,
88  bool isXOnly,
89  DocumentAxesPointsRequired documentAxesPointsRequired) = 0;
90 
92  virtual void checkEditPointAxis (const QString &pointIdentifier,
93  const QPointF &posScreen,
94  const QPointF &posGraph,
95  bool &isError,
96  QString &errorMessage,
97  DocumentAxesPointsRequired documentAxesPointsRequired) = 0;
98 
100  virtual const Curve &curveAxes () const = 0;
101 
103  virtual Curve *curveForCurveName (const QString &curveName) = 0;
104 
106  virtual const Curve *curveForCurveName (const QString &curveName) const = 0;
107 
109  virtual const CurvesGraphs &curvesGraphs () const = 0;
110 
112  virtual QStringList curvesGraphsNames () const = 0;
113 
115  virtual int curvesGraphsNumPoints (const QString &curveName) const = 0;
116 
118  virtual void editPointAxis (const QPointF &posGraph,
119  const QString &identifier) = 0;
120 
122  virtual void editPointGraph (bool isX,
123  bool isY,
124  double x,
125  double y,
126  const QStringList &identifiers,
127  const Transformation &transformation) = 0;
128 
130  virtual void iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) = 0;
131 
133  virtual void iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const = 0;
134 
136  virtual void iterateThroughCurveSegments (const QString &curveName,
137  const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback) const = 0;
138 
140  virtual void iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) = 0;
141 
143  virtual void iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const = 0;
144 
146  virtual bool loadCurvesFile (const QString &curvesFile) = 0;
147 
149  virtual DocumentModelAxesChecker modelAxesChecker() const = 0;
150 
152  virtual DocumentModelColorFilter modelColorFilter() const = 0;
153 
155  virtual DocumentModelCoords modelCoords () const = 0;
156 
158  virtual CurveStyles modelCurveStyles() const = 0;
159 
162 
164  virtual DocumentModelExportFormat modelExport() const = 0;
165 
167  virtual DocumentModelGeneral modelGeneral() const = 0;
168 
170  virtual DocumentModelGridDisplay modelGridDisplay() const = 0;
171 
173  virtual DocumentModelGridRemoval modelGridRemoval() const = 0;
174 
176  virtual DocumentModelPointMatch modelPointMatch() const = 0;
177 
179  virtual DocumentModelSegments modelSegments() const = 0;
180 
182  virtual void movePoint (const QString &pointIdentifier,
183  const QPointF &deltaScreen) = 0;
184 
186  virtual int nextOrdinalForCurve (const QString &curveName) const = 0;
187 
189  virtual QPointF positionGraph (const QString &pointIdentifier) const = 0;
190 
192  virtual QPointF positionScreen (const QString &pointIdentifier) const = 0;
193 
195  virtual void print () const = 0;
196 
198  virtual void printStream (QString indentation,
199  QTextStream &str) const = 0;
200 
202  virtual QString reasonForUnsuccessfulRead () const = 0;
203 
205  virtual void removePointAxis (const QString &identifier) = 0;
206 
208  virtual void removePointGraph (const QString &identifier) = 0;
209 
212 
214  virtual void saveXml (QXmlStreamWriter &writer) const = 0;
215 
217  virtual QString selectedCurveName () const = 0;
218 
220  virtual void setCurveAxes (const Curve &curveAxes) = 0;
221 
223  virtual void setCurvesGraphs (const CurvesGraphs &curvesGraphs) = 0;
224 
227 
230 
232  virtual void setModelCoords (const DocumentModelCoords &modelCoords) = 0;
233 
235  virtual void setModelCurveStyles(const CurveStyles &modelCurveStyles) = 0;
236 
239 
241  virtual void setModelExport(const DocumentModelExportFormat &modelExport) = 0;
242 
244  virtual void setModelGeneral (const DocumentModelGeneral &modelGeneral) = 0;
245 
248 
251 
254 
256  virtual void setModelSegments(const DocumentModelSegments &modelSegments) = 0;
257 
259  virtual void setSelectedCurveName(const QString &selectedCurveName) = 0;
260 
262  virtual bool successfulRead () const = 0;
263 
266  virtual void updatePointOrdinals (const Transformation &transformation) = 0;
267 };
268 
269 #endif // COORD_SYSTEM_INTERFACE_H
CoordSystemInterface::removePointsInCurvesGraphs
virtual void removePointsInCurvesGraphs(CurvesGraphs &curvesGraphs)=0
Remove all points identified in the specified CurvesGraphs. See also addPointsInCurvesGraphs.
DocumentModelAxesChecker.h
CoordSystemInterface::modelGridDisplay
virtual DocumentModelGridDisplay modelGridDisplay() const =0
Get method for DocumentModelGridDisplay.
CoordSystemInterface::setModelExport
virtual void setModelExport(const DocumentModelExportFormat &modelExport)=0
Set method for DocumentModelExportFormat.
CoordSystemInterface::checkEditPointAxis
virtual void checkEditPointAxis(const QString &pointIdentifier, const QPointF &posScreen, const QPointF &posGraph, bool &isError, QString &errorMessage, DocumentAxesPointsRequired documentAxesPointsRequired)=0
Check before calling editPointAxis.
CoordSystemInterface::curvesGraphsNumPoints
virtual int curvesGraphsNumPoints(const QString &curveName) const =0
See CurvesGraphs::curvesGraphsNumPoints.
Point.h
CoordSystemInterface::editPointAxis
virtual void editPointAxis(const QPointF &posGraph, const QString &identifier)=0
Edit the graph coordinates of a single axis point. Call this after checkAddPointAxis to guarantee suc...
DocumentModelGridRemoval.h
CoordSystemInterface::setModelCoords
virtual void setModelCoords(const DocumentModelCoords &modelCoords)=0
Set method for DocumentModelCoords.
CoordSystemInterface::removePointAxis
virtual void removePointAxis(const QString &identifier)=0
Perform the opposite of addPointAxis.
DocumentModelGeneral.h
CoordSystemInterface::addPointGraphWithGeneratedIdentifier
virtual void addPointGraphWithGeneratedIdentifier(const QString &curveName, const QPointF &posScreen, QString &generatedIentifier, double ordinal)=0
Add a single graph point with a generated point identifier.
CoordSystemInterface::curvesGraphs
virtual const CurvesGraphs & curvesGraphs() const =0
Make all Curves available, read only, for CmdAbstract classes only.
DocumentModelGridDisplay.h
CoordSystemInterface::addGraphCurveAtEnd
virtual void addGraphCurveAtEnd(const QString &curveName)=0
Add new graph curve to the list of existing graph curves.
CoordSystemInterface::modelCurveStyles
virtual CurveStyles modelCurveStyles() const =0
Get method for CurveStyles.
CoordSystemInterface::nextOrdinalForCurve
virtual int nextOrdinalForCurve(const QString &curveName) const =0
Default next ordinal value for specified curve.
CoordSystemInterface::selectedCurveName
virtual QString selectedCurveName() const =0
Currently selected curve name. This is used to set the selected curve combobox in MainWindow.
DocumentModelGridDisplay
Model for DlgSettingsGridDisplay and CmdSettingsGridDisplay.
Definition: DocumentModelGridDisplay.h:17
DocumentAxesPointsRequired
DocumentAxesPointsRequired
Definition: DocumentAxesPointsRequired.h:9
CoordSystemInterface::modelGridRemoval
virtual DocumentModelGridRemoval modelGridRemoval() const =0
Get method for DocumentModelGridRemoval.
CoordSystemInterface::positionScreen
virtual QPointF positionScreen(const QString &pointIdentifier) const =0
See Curve::positionScreen.
DocumentModelExportFormat.h
CoordSystemInterface::modelSegments
virtual DocumentModelSegments modelSegments() const =0
Get method for DocumentModelSegments.
CoordSystemInterface::iterateThroughCurvePointsAxes
virtual void iterateThroughCurvePointsAxes(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)=0
See Curve::iterateThroughCurvePoints, for the axes curve.
CoordSystemInterface::setModelSegments
virtual void setModelSegments(const DocumentModelSegments &modelSegments)=0
Set method for DocumentModelSegments.
CoordSystemInterface::updatePointOrdinals
virtual void updatePointOrdinals(const Transformation &transformation)=0
Update point ordinals after point addition/removal or dragging.
CoordSystemInterface::modelColorFilter
virtual DocumentModelColorFilter modelColorFilter() const =0
Get method for DocumentModelColorFilter.
CoordSystemInterface::modelExport
virtual DocumentModelExportFormat modelExport() const =0
Get method for DocumentModelExportFormat.
CoordSystemInterface::~CoordSystemInterface
virtual ~CoordSystemInterface()
Definition: CoordSystemInterface.cpp:12
Transformation
Affine transformation between screen and graph coordinates, based on digitized axis points.
Definition: Transformation.h:30
CoordSystemInterface::iterateThroughCurveSegments
virtual void iterateThroughCurveSegments(const QString &curveName, const Functor2wRet< const Point &, const Point &, CallbackSearchReturn > &ftorWithCallback) const =0
See Curve::iterateThroughCurveSegments, for any axes or graph curve.
CurveStyles.h
CoordSystemInterface::setModelDigitizeCurve
virtual void setModelDigitizeCurve(const DocumentModelDigitizeCurve &modelDigitizeCurve)=0
Set method for DocumentModelDigitizeCurve.
Curve
Container for one set of digitized Points.
Definition: Curve.h:32
DocumentModelDigitizeCurve.h
DocumentModelColorFilter
Model for DlgSettingsColorFilter and CmdSettingsColorFilter.
Definition: DocumentModelColorFilter.h:20
CoordSystemInterface::printStream
virtual void printStream(QString indentation, QTextStream &str) const =0
Debugging method that supports print method of this class and printStream method of some other class(...
CoordSystemInterface::modelCoords
virtual DocumentModelCoords modelCoords() const =0
Get method for DocumentModelCoords.
CoordSystemInterface::movePoint
virtual void movePoint(const QString &pointIdentifier, const QPointF &deltaScreen)=0
See Curve::movePoint.
CoordSystemInterface::reasonForUnsuccessfulRead
virtual QString reasonForUnsuccessfulRead() const =0
Return an informative text message explaining why startup loading failed. Applies if successfulRead r...
CoordSystemInterface::modelGeneral
virtual DocumentModelGeneral modelGeneral() const =0
Get method for DocumentModelGeneral.
CoordSystemInterface::setModelColorFilter
virtual void setModelColorFilter(const DocumentModelColorFilter &modelColorFilter)=0
Set method for DocumentModelColorFilter.
DocumentModelGeneral
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Definition: DocumentModelGeneral.h:15
CoordSystemInterface::curveForCurveName
virtual Curve * curveForCurveName(const QString &curveName)=0
See CurvesGraphs::curveForCurveName, although this also works for AXIS_CURVE_NAME.
DocumentAxesPointsRequired.h
CoordSystemInterface::successfulRead
virtual bool successfulRead() const =0
Return true if startup loading succeeded. If the loading failed then reasonForUnsuccessfulRed will ex...
CoordSystemInterface::curvesGraphsNames
virtual QStringList curvesGraphsNames() const =0
See CurvesGraphs::curvesGraphsNames.
CoordSystemInterface::positionGraph
virtual QPointF positionGraph(const QString &pointIdentifier) const =0
See Curve::positionGraph.
CallbackSearchReturn.h
CoordSystemInterface::setModelGeneral
virtual void setModelGeneral(const DocumentModelGeneral &modelGeneral)=0
Set method for DocumentModelGeneral.
CoordSystemInterface::iterateThroughCurvesPointsGraphs
virtual void iterateThroughCurvesPointsGraphs(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)=0
See Curve::iterateThroughCurvePoints, for all the graphs curves.
CoordSystemInterface::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const =0
Save graph to xml.
CoordSystemInterface::setModelPointMatch
virtual void setModelPointMatch(const DocumentModelPointMatch &modelPointMatch)=0
Set method for DocumentModelPointMatch.
DocumentModelExportFormat
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
Definition: DocumentModelExportFormat.h:22
DocumentModelSegments
Model for DlgSettingsSegments and CmdSettingsSegments.
Definition: DocumentModelSegments.h:16
CurvesGraphs
Container for all graph curves. The axes point curve is external to this class.
Definition: CurvesGraphs.h:23
CoordSystemInterface::modelDigitizeCurve
virtual DocumentModelDigitizeCurve modelDigitizeCurve() const =0
Get method for DocumentModelDigitizeCurve.
CoordSystemInterface
Interface common to CoordSystemContext and CoordSystem classes.
Definition: CoordSystemInterface.h:33
CoordSystemInterface::curveAxes
virtual const Curve & curveAxes() const =0
Get method for axis curve.
DocumentModelDigitizeCurve
Model for DlgSettingsDigitizeCurve and CmdSettingsDigitizeCurve.
Definition: DocumentModelDigitizeCurve.h:17
CoordSystemInterface::modelPointMatch
virtual DocumentModelPointMatch modelPointMatch() const =0
Get method for DocumentModelPointMatch.
CoordSystemInterface::setCurveAxes
virtual void setCurveAxes(const Curve &curveAxes)=0
Let CmdAbstract classes overwrite axes Curve. Applies to current coordinate system.
DocumentModelPointMatch
Model for DlgSettingsPointMatch and CmdSettingsPointMatch.
Definition: DocumentModelPointMatch.h:16
DocumentModelAxesChecker
Model for DlgSettingsAxesChecker and CmdSettingsAxesChecker.
Definition: DocumentModelAxesChecker.h:17
CoordSystemInterface::setModelGridRemoval
virtual void setModelGridRemoval(const DocumentModelGridRemoval &modelGridRemoval)=0
Set method for DocumentModelGridRemoval.
DocumentModelPointMatch.h
CoordSystemInterface::addPointGraphWithSpecifiedIdentifier
virtual void addPointGraphWithSpecifiedIdentifier(const QString &curveName, const QPointF &posScreen, const QString &identifier, double ordinal)=0
Add a single graph point with the specified point identifer. Note that PointStyle is not applied to t...
CoordSystemInterface::setModelGridDisplay
virtual void setModelGridDisplay(const DocumentModelGridDisplay &modelGridDisplay)=0
Set method for DocumentModelGridDisplay.
DocumentModelGridRemoval
Model for DlgSettingsGridRemoval and CmdSettingsGridRemoval. The settings are unstable until the user...
Definition: DocumentModelGridRemoval.h:16
DocumentModelColorFilter.h
CoordSystemInterface::addPointsInCurvesGraphs
virtual void addPointsInCurvesGraphs(CurvesGraphs &curvesGraphs)=0
Add all points identified in the specified CurvesGraphs. See also removePointsInCurvesGraphs.
CurveStyles
Model for DlgSettingsCurveProperties and CmdSettingsCurveProperties.
Definition: CurveStyles.h:21
CoordSystemInterface::loadCurvesFile
virtual bool loadCurvesFile(const QString &curvesFile)=0
Load the curve names in the specified Engauge file into the current graph. This is called near the en...
DocumentModelCoords
Model for DlgSettingsCoords and CmdSettingsCoords.
Definition: DocumentModelCoords.h:19
CoordSystemInterface::setModelCurveStyles
virtual void setModelCurveStyles(const CurveStyles &modelCurveStyles)=0
Set method for CurveStyles.
CoordSystemInterface::CoordSystemInterface
CoordSystemInterface()
Single constructor.
Definition: CoordSystemInterface.cpp:8
DocumentModelCoords.h
CoordSystemInterface::print
virtual void print() const =0
Debugging method for printing directly from symbolic debugger.
CoordSystemInterface::setSelectedCurveName
virtual void setSelectedCurveName(const QString &selectedCurveName)=0
Save curve name that is selected for the current coordinate system, for the next time the coordinate ...
CoordSystemInterface::modelAxesChecker
virtual DocumentModelAxesChecker modelAxesChecker() const =0
Get method for DocumentModelAxesChecker.
CoordSystemInterface::setModelAxesChecker
virtual void setModelAxesChecker(const DocumentModelAxesChecker &modelAxesChecker)=0
Set method for DocumentModelAxesChecker.
DocumentModelSegments.h
CoordSystemInterface::checkAddPointAxis
virtual void checkAddPointAxis(const QPointF &posScreen, const QPointF &posGraph, bool &isError, QString &errorMessage, bool isXOnly, DocumentAxesPointsRequired documentAxesPointsRequired)=0
Check before calling addPointAxis. Also returns the next available ordinal number (to prevent clashes...
CoordSystemInterface::addPointAxisWithGeneratedIdentifier
virtual void addPointAxisWithGeneratedIdentifier(const QPointF &posScreen, const QPointF &posGraph, QString &identifier, double ordinal, bool isXOnly)=0
Add a single axis point with a generated point identifier.
CoordSystemInterface::setCurvesGraphs
virtual void setCurvesGraphs(const CurvesGraphs &curvesGraphs)=0
Let CmdAbstract classes overwrite CurvesGraphs. Applies to current coordinate system.
CoordSystemInterface::removePointGraph
virtual void removePointGraph(const QString &identifier)=0
Perform the opposite of addPointGraph.
CoordSystemInterface::editPointGraph
virtual void editPointGraph(bool isX, bool isY, double x, double y, const QStringList &identifiers, const Transformation &transformation)=0
Edit the graph coordinates of one or more graph points.
CoordSystemInterface::addPointAxisWithSpecifiedIdentifier
virtual void addPointAxisWithSpecifiedIdentifier(const QPointF &posScreen, const QPointF &posGraph, const QString &identifier, double ordinal, bool isXOnly)=0
Add a single axis point with the specified point identifier.