1 #include "CallbackAddPointsInCurvesGraphs.h"
2 #include "CallbackCheckAddPointAxis.h"
3 #include "CallbackCheckEditPointAxis.h"
4 #include "CallbackNextOrdinal.h"
5 #include "CallbackRemovePointsInCurvesGraphs.h"
7 #include "CurveStyles.h"
9 #include "DocumentSerialize.h"
10 #include "EngaugeAssert.h"
11 #include "EnumsToQt.h"
14 #include "OrdinalGenerator.h"
17 #include <QDataStream>
21 #include <QtToString.h>
22 #include <QXmlStreamReader>
23 #include <QXmlStreamWriter>
24 #include "Transformation.h"
29 m_curveAxes (new
Curve (AXIS_CURVE_NAME,
34 m_successfulRead =
true;
36 m_pixmap.convertFromImage (image);
48 m_successfulRead =
true;
50 QFile *file =
new QFile (fileName);
51 if (file->open (QIODevice::ReadOnly | QIODevice::Text)) {
53 QXmlStreamReader reader (file);
57 bool inDocumentSubtree =
false;
60 while (!reader.atEnd() &&
62 QXmlStreamReader::TokenType tokenType = loadNextFromReader(reader);
65 if ((reader.name() == DOCUMENT_SERIALIZE_IMAGE) &&
66 (tokenType == QXmlStreamReader::StartElement)) {
68 generateEmptyPixmap (reader.attributes());
72 if ((reader.name() == DOCUMENT_SERIALIZE_DOCUMENT) &&
73 (tokenType == QXmlStreamReader::StartElement)) {
75 inDocumentSubtree =
true;
77 }
else if ((reader.name() == DOCUMENT_SERIALIZE_DOCUMENT) &&
78 (tokenType == QXmlStreamReader::EndElement)) {
84 if (inDocumentSubtree) {
87 if (tokenType == QXmlStreamReader::StartElement) {
90 QString tag = reader.name().toString();
91 if (tag == DOCUMENT_SERIALIZE_AXES_CHECKER){
92 m_modelAxesChecker.
loadXml (reader);
93 }
else if (tag == DOCUMENT_SERIALIZE_COMMON) {
95 }
else if (tag == DOCUMENT_SERIALIZE_COORDS) {
97 }
else if (tag == DOCUMENT_SERIALIZE_CURVE) {
98 m_curveAxes =
new Curve (reader);
99 }
else if (tag == DOCUMENT_SERIALIZE_CURVES_GRAPHS) {
100 m_curvesGraphs.
loadXml (reader);
101 }
else if (tag == DOCUMENT_SERIALIZE_DIGITIZE_CURVE) {
102 m_modelDigitizeCurve.
loadXml (reader);
103 }
else if (tag == DOCUMENT_SERIALIZE_DOCUMENT) {
105 }
else if (tag == DOCUMENT_SERIALIZE_EXPORT) {
106 m_modelExport.
loadXml (reader);
107 }
else if (tag == DOCUMENT_SERIALIZE_GRID_REMOVAL) {
108 m_modelGridRemoval.
loadXml (reader);
109 }
else if (tag == DOCUMENT_SERIALIZE_IMAGE) {
112 }
else if (tag == DOCUMENT_SERIALIZE_POINT_MATCH) {
113 m_modelPointMatch.
loadXml (reader);
114 }
else if (tag == DOCUMENT_SERIALIZE_SEGMENTS) {
115 m_modelSegments.
loadXml (reader);
117 m_successfulRead =
false;
118 m_reasonForUnsuccessfulRead = QString (
"Unexpected xml token '%1' encountered").arg (tokenType);
124 if (reader.hasError ()) {
126 m_successfulRead =
false;
127 m_reasonForUnsuccessfulRead = reader.errorString();
137 m_successfulRead =
false;
138 m_reasonForUnsuccessfulRead =
"Operating system says file is not readable";
153 const QPointF &posGraph,
157 Point point (AXIS_CURVE_NAME,
165 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointAxisWithGeneratedIdentifier"
166 <<
" ordinal=" << ordinal
167 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
168 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ()
169 <<
" identifier=" << identifier.toLatin1 ().data ();
173 const QPointF &posGraph,
174 const QString &identifier,
177 Point point (AXIS_CURVE_NAME,
184 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointAxisWithSpecifiedIdentifier"
185 <<
" ordinal=" << ordinal
186 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
187 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ()
188 <<
" identifier=" << identifier.toLatin1 ().data ();
192 const QPointF &posScreen,
196 Point point (curveName,
203 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointGraphWithGeneratedIdentifier"
204 <<
" ordinal=" << ordinal
205 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
206 <<
" identifier=" << identifier.toLatin1 ().data ();
210 const QPointF &posScreen,
211 const QString &identifier,
214 Point point (curveName,
220 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointGraphWithSpecifiedIdentifier"
221 <<
" ordinal=" << ordinal
222 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
223 <<
" identifier=" << identifier.toLatin1 ().data ();
230 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
237 const QPointF &posGraph,
239 QString &errorMessage)
241 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::checkAddPointAxis"
242 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
243 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ();
249 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
258 const QPointF &posScreen,
259 const QPointF &posGraph,
261 QString &errorMessage)
263 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::checkEditPointAxis"
264 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ();
271 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
281 ENGAUGE_CHECK_PTR (m_curveAxes);
288 if (curveName == AXIS_CURVE_NAME) {
301 if (curveName == AXIS_CURVE_NAME) {
314 return m_curvesGraphs;
328 const QString &identifier)
330 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::editPointAxis posGraph=("
331 << posGraph.x () <<
", " << posGraph.y () <<
") identifier="
332 << identifier.toLatin1 ().data ();
338 void Document::generateEmptyPixmap(
const QXmlStreamAttributes &attributes)
340 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::generateEmptyPixmap";
342 int width = 800, height = 500;
344 if (attributes.hasAttribute (DOCUMENT_SERIALIZE_IMAGE_WIDTH) &&
345 attributes.hasAttribute (DOCUMENT_SERIALIZE_IMAGE_HEIGHT)) {
347 width = attributes.value (DOCUMENT_SERIALIZE_IMAGE_WIDTH).toInt();
348 height = attributes.value (DOCUMENT_SERIALIZE_IMAGE_HEIGHT).toInt();
352 m_pixmap = QPixmap (width, height);
357 ENGAUGE_CHECK_PTR (m_curveAxes);
364 ENGAUGE_CHECK_PTR (m_curveAxes);
370 const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback)
const
372 if (curveName == AXIS_CURVE_NAME) {
382 ENGAUGE_CHECK_PTR (m_curveAxes);
389 ENGAUGE_CHECK_PTR (m_curveAxes);
394 void Document::loadImage(QXmlStreamReader &reader)
396 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::loadImage";
398 loadNextFromReader(reader);
399 if (reader.isCDATA ()) {
402 QByteArray array64 = reader.text().toString().toUtf8();
406 array = QByteArray::fromBase64(array64);
409 QDataStream str (&array, QIODevice::ReadOnly);
410 QImage img = m_pixmap.toImage ();
412 m_pixmap = QPixmap::fromImage (img);
415 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
416 (reader.name() != DOCUMENT_SERIALIZE_IMAGE)){
417 loadNextFromReader(reader);
425 reader.raiseError (
"Cannot read image data");
431 return m_modelAxesChecker;
444 return m_modelCommon;
449 return m_modelCoords;
462 return m_modelDigitizeCurve;
467 return m_modelExport;
472 return m_modelGridRemoval;
477 return m_modelPointMatch;
482 return m_modelSegments;
486 const QPointF &deltaScreen)
499 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
502 if (curveName == AXIS_CURVE_NAME) {
535 QTextStream str (&text);
539 std::cerr << text.toLatin1().data();
543 QTextStream &str)
const
545 str << indentation <<
"Document\n";
547 indentation += INDENTATION_DELTA;
549 str << indentation <<
"name=" << m_name <<
"\n";
550 str << indentation <<
"pixmap=" << m_pixmap.width() <<
"x" << m_pixmap.height() <<
"\n";
577 ENGAUGE_ASSERT (!m_successfulRead);
579 return m_reasonForUnsuccessfulRead;
584 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::removePointAxis identifier=" << identifier.toLatin1 ().data ();
591 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::removePointGraph identifier=" << identifier.toLatin1 ().data ();
600 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
608 writer.writeStartElement(DOCUMENT_SERIALIZE_DOCUMENT);
612 QDataStream str (&array, QIODevice::WriteOnly);
613 QImage img = m_pixmap.toImage ();
615 writer.writeStartElement(DOCUMENT_SERIALIZE_IMAGE);
619 writer.writeAttribute(DOCUMENT_SERIALIZE_IMAGE_WIDTH, QString::number (img.width()));
620 writer.writeAttribute(DOCUMENT_SERIALIZE_IMAGE_HEIGHT, QString::number (img.height()));
622 writer.writeCDATA (array.toBase64 ());
623 writer.writeEndElement();
626 m_modelCommon.
saveXml (writer);
627 m_modelCoords.
saveXml (writer);
628 m_modelDigitizeCurve.
saveXml (writer);
629 m_modelExport.
saveXml (writer);
630 m_modelAxesChecker.
saveXml (writer);
631 m_modelGridRemoval.
saveXml (writer);
632 m_modelPointMatch.
saveXml (writer);
633 m_modelSegments.
saveXml (writer);
635 m_curvesGraphs.
saveXml (writer);
636 writer.writeEndElement();
641 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::setCurvesGraphs";
654 ColorFilterSettingsList::const_iterator itr;
659 QString curveName = itr.key();
680 QStringList curveNames = modelCurveStyles.
curveNames();
681 QStringList::iterator itr;
682 for (itr = curveNames.begin(); itr != curveNames.end(); itr++) {
684 QString curveName = *itr;
719 return m_successfulRead;
724 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::updatePointOrdinals";
DocumentModelCommon modelCommon() const
Get method for DocumentModelCommon.
void addGraphCurveAtEnd(const QString &curveName)
Add new graph curve to the list of existing graph curves.
void addPointAxisWithSpecifiedIdentifier(const QPointF &posScreen, const QPointF &posGraph, const QString &identifier, double ordinal)
Add a single axis point with the specified point identifier.
CallbackSearchReturn callback(const QString &curveName, const Point &point)
Callback method.
QPointF positionScreen(const QString &pointIdentifier) const
See Curve::positionScreen.
void removePoint(const QString &identifier)
Perform the opposite of addPointAtEnd.
QStringList curveNames() const
List of all curve names.
QPointF positionScreen(const QString &pointIdentifier) const
Return the position, in screen coordinates, of the specified Point.
static QString curveNameFromPointIdentifier(const QString &pointIdentifier)
Parse the curve name from the specified point identifier. This does the opposite of uniqueIdentifierG...
void saveXml(QXmlStreamWriter &writer) const
Serialize curves.
QString errorMessage() const
Error message that explains the problem indicated by isError.
void movePoint(const QString &pointIdentifier, const QPointF &deltaScreen)
See Curve::movePoint.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Model for DlgSettingsPointMatch and CmdSettingsPointMatch.
Callback for computing the next ordinal for a new point.
Color filter parameters for one curve. For a class, this is handled the same as LineStyle and PointSt...
static LineStyle defaultGraphCurve(int index)
Initial default for index'th graph curve.
DocumentModelColorFilter modelColorFilter() const
Get method for DocumentModelColorFilter.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void setModelAxesChecker(const DocumentModelAxesChecker &modelAxesChecker)
Set method for DocumentModelAxesChecker.
void setModelGridRemoval(const DocumentModelGridRemoval &modelGridRemoval)
Set method for DocumentModelGridRemoval.
void loadXml(QXmlStreamReader &reader)
Load from serialized file.
void addPointGraphWithGeneratedIdentifier(const QString &curveName, const QPointF &posScreen, QString &generatedIentifier, double ordinal)
Add a single graph point with a generated point identifier.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Callback that is used when iterating through a read-only CurvesGraphs to remove corresponding points ...
DocumentModelPointMatch modelPointMatch() const
Get method for DocumentModelPointMatch.
void setCurveStyle(const CurveStyle &curveStyle)
Set curve style.
void setModelPointMatch(const DocumentModelPointMatch &modelPointMatch)
Set method for DocumentModelPointMatch.
void removePointAxis(const QString &identifier)
Perform the opposite of addPointAxis.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Model for DlgSettingsCurveProperties and CmdSettingsCurveProperties.
void setModelSegments(const DocumentModelSegments &modelSegments)
Set method for DocumentModelSegments.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
void addPoint(Point point)
Add Point to this Curve.
void setColorFilterSettings(const ColorFilterSettings &colorFilterSettings)
Set color filter.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
void iterateThroughCurveSegments(const QString &curveNameWanted, const Functor2wRet< const Point &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
Apply functor to segments on the specified axis or graph Curve.
Model for DlgSettingsCommon and CmdSettingsCommon.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Curve * curveForCurveName(const QString &curveName)
Return the axis or graph curve for the specified curve name.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
int numCurves() const
Current number of graphs curves.
QString errorMessage() const
Error message that explains the problem indicated by isError.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void addPointGraphWithSpecifiedIdentifier(const QString &curveName, const QPointF &posScreen, const QString &identifier, double ordinal)
Add a single graph point with the specified point identifer. Note that PointStyle is not applied to t...
Callback that is used when iterating through a read-only CurvesGraphs to add corresponding points in ...
void iterateThroughCurvePointsAxes(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for the axes curve.
const Curve & curveAxes() const
Get method for axis curve.
bool isError() const
True if an error occurred during iteration.
DocumentModelCoords modelCoords() const
Get method for DocumentModelCoords.
void addGraphCurveAtEnd(Curve curve)
Append new graph Curve to end of Curve list.
void iterateThroughCurvesPoints(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
Apply functor to Points on all of the Curves.
void setModelDigitizeCurve(const DocumentModelDigitizeCurve &modelDigitizeCurve)
Set method for DocumentModelDigitizeCurve.
int curvesGraphsNumPoints(const QString &curveName) const
See CurvesGraphs::curvesGraphsNumPoints.
QPixmap pixmap() const
Return the image that is being digitized.
Class that represents one digitized point. The screen-to-graph coordinate transformation is always ex...
QPointF positionGraph(const QString &pointIdentifier) const
Return the position, in graph coordinates, of the specified Point.
bool successfulRead() const
Return true if startup loading succeeded. If the loading failed then reasonForUnsuccessfulRed will ex...
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
bool isError() const
True if an error occurred during iteration.
void setModelCoords(const DocumentModelCoords &modelCoords)
Set method for DocumentModelCoords.
Callback for sanity checking the screen and graph coordinates of an axis point that is in the axes cu...
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
CallbackSearchReturn callback(const QString &curveName, const Point &point)
Callback method.
void checkEditPointAxis(const QString &pointIdentifier, const QPointF &posScreen, const QPointF &posGraph, bool &isError, QString &errorMessage)
Check before calling editPointAxis.
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...
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
QString identifier() const
Unique identifier for a specific Point.
void removePointGraph(const QString &identifier)
Perform the opposite of addPointGraph.
double nextOrdinal() const
Computed next ordinal.
void movePoint(const QString &pointIdentifier, const QPointF &deltaScreen)
Translate the position of a point by the specified distance vector.
static ColorFilterSettings defaultFilter()
Initial default for any Curve.
void setModelExport(const DocumentModelExportFormat &modelExport)
Set method for DocumentModelExportFormat.
Model for DlgSettingsDigitizeCurve and CmdSettingsDigitizeCurve.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
void editPointAxis(const QPointF &posGraph, const QString &identifier)
Edit the graph coordinates of a single axis point. Call this after checkAddPointAxis to guarantee suc...
Details for a specific Point.
void addPoint(const Point &point)
Append new Point to the specified Curve.
Container for all graph curves. The axes point curve is external to this class.
Model for DlgSettingsColorFilter and CmdSettingsColorFilter.
void setModelCurveStyles(const CurveStyles &modelCurveStyles)
Set method for CurveStyles.
CurveStyles modelCurveStyles() const
Get method for CurveStyles.
DocumentModelAxesChecker modelAxesChecker() const
Get method for DocumentModelAxesChecker.
void removePointsInCurvesGraphs(CurvesGraphs &curvesGraphs)
Remove all points identified in the specified CurvesGraphs. See also addPointsInCurvesGraphs.
DocumentModelDigitizeCurve modelDigitizeCurve() const
Get method for DocumentModelDigitizeCurve.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
void iterateThroughCurvePoints(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
Apply functor to Points on Curve.
void setModelColorFilter(const DocumentModelColorFilter &modelColorFilter)
Set method for DocumentModelColorFilter.
CallbackSearchReturn callback(const QString &curveName, const Point &point)
Callback method.
Model for DlgSettingsCoords and CmdSettingsCoords.
int curvesGraphsNumPoints(const QString &curveName) const
Point count.
QPointF positionGraph(const QString &pointIdentifier) const
See Curve::positionGraph.
Container for LineStyle and PointStyle for one Curve.
Container for one set of digitized Points.
void updatePointOrdinals(const Transformation &transformation)
Update point ordinals to be consistent with their CurveStyle and x/theta coordinate.
Details for a specific Line.
QStringList curvesGraphsNames() const
See CurvesGraphs::curvesGraphsNames.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
void addPointAxisWithGeneratedIdentifier(const QPointF &posScreen, const QPointF &posGraph, QString &identifier, double ordinal)
Add a single axis point with a generated point identifier.
void print() const
Debugging method for printing directly from symbolic debugger.
Model for DlgSettingsAxesChecker and CmdSettingsAxesChecker.
void iterateThroughCurveSegments(const QString &curveName, const Functor2wRet< const Point &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
See Curve::iterateThroughCurveSegments, for any axes or graph curve.
CurveStyle curveStyle(const QString &curveName) const
CurveStyle in specified curve.
int nextOrdinalForCurve(const QString &curveName) const
Default next ordinal value for specified curve.
const CurvesGraphs & curvesGraphs() const
Make all Curves available, read only, for CmdAbstract classes only.
const Curve * curveForCurveName(const QString &curveName) const
See CurvesGraphs::curveForCurveNames, although this also works for AXIS_CURVE_NAME.
DocumentModelSegments modelSegments() const
Get method for DocumentModelSegments.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Model for DlgSettingsSegments and CmdSettingsSegments.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void iterateThroughCurvesPointsGraphs(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for all the graphs curves.
void setCurvesGraphs(const CurvesGraphs &curvesGraphs)
Let CmdAbstract classes overwrite CurvesGraphs.
Callback for sanity checking the screen and graph coordinates of an axis point, before it is added to...
void addPointsInCurvesGraphs(CurvesGraphs &curvesGraphs)
Add all points identified in the specified CurvesGraphs. See also removePointsInCurvesGraphs.
QStringList curvesGraphsNames() const
List of graph curve names.
Document(const QImage &image)
Constructor for imported images and dragged images.
void removePoint(const QString &pointIdentifier)
Remove the Point from its Curve.
void saveXml(QXmlStreamWriter &writer) const
Save document to xml.
const ColorFilterSettingsList & colorFilterSettingsList() const
Get method for copying all color filters in one step.
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...
Model for DlgSettingsGridRemoval and CmdSettingsGridRemoval. The settings are unstable until the user...
void setModelCommon(const DocumentModelCommon &modelCommon)
Set method for DocumentModelCommon.
void saveXml(QXmlStreamWriter &writer) const
Serialize curve.
QString reasonForUnsuccessfulRead() const
Return an informative text message explaining why startup loading failed. Applies if successfulRead r...
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
static PointStyle defaultGraphCurve(int index)
Initial default for index'th graph curve.
DocumentModelGridRemoval modelGridRemoval() const
Get method for DocumentModelGridRemoval.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void updatePointOrdinals(const Transformation &transformation)
Update point ordinals after point addition/removal or dragging.
DocumentModelExportFormat modelExport() const
Get method for DocumentModelExportFormat.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void checkAddPointAxis(const QPointF &posScreen, const QPointF &posGraph, bool &isError, QString &errorMessage)
Check before calling addPointAxis. Also returns the next available ordinal number (to prevent clashes...
CallbackSearchReturn callback(const QString &curveName, const Point &point)
Callback method.