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"
27 const int FOUR_BYTES = 4;
31 m_curveAxes (new
Curve (AXIS_CURVE_NAME,
36 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::Document"
37 <<
" image=" << image.width() <<
"x" << image.height();
39 m_successfulRead =
true;
41 m_pixmap.convertFromImage (image);
53 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::Document"
54 <<
" fileName=" << fileName.toLatin1().data();
56 m_successfulRead =
true;
59 QFile *file =
new QFile (fileName);
60 if (file->open(QIODevice::ReadOnly)) {
62 QByteArray bytesStart = file->read (FOUR_BYTES);
65 if (bytesIndicatePreVersion6 (bytesStart)) {
67 QFile *file =
new QFile (fileName);
68 if (file->open (QIODevice::ReadOnly)) {
69 QDataStream str (file);
71 loadPreVersion6 (str);
75 m_successfulRead =
false;
76 m_reasonForUnsuccessfulRead =
"Operating system says file is not readable";
81 QFile *file =
new QFile (fileName);
82 if (file->open (QIODevice::ReadOnly | QIODevice::Text)) {
84 QXmlStreamReader reader (file);
86 loadPostVersion5 (reader);
95 m_successfulRead =
false;
96 m_reasonForUnsuccessfulRead =
"Operating system says file is not readable";
101 m_successfulRead =
false;
102 m_reasonForUnsuccessfulRead = QString (
"File '%1' was not found")
117 const QPointF &posGraph,
121 Point point (AXIS_CURVE_NAME,
129 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointAxisWithGeneratedIdentifier"
130 <<
" ordinal=" << ordinal
131 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
132 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ()
133 <<
" identifier=" << identifier.toLatin1 ().data ();
137 const QPointF &posGraph,
138 const QString &identifier,
141 Point point (AXIS_CURVE_NAME,
148 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointAxisWithSpecifiedIdentifier"
149 <<
" ordinal=" << ordinal
150 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
151 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ()
152 <<
" identifier=" << identifier.toLatin1 ().data ();
156 const QPointF &posScreen,
160 Point point (curveName,
167 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointGraphWithGeneratedIdentifier"
168 <<
" ordinal=" << ordinal
169 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
170 <<
" identifier=" << identifier.toLatin1 ().data ();
174 const QPointF &posScreen,
175 const QString &identifier,
178 Point point (curveName,
184 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointGraphWithSpecifiedIdentifier"
185 <<
" ordinal=" << ordinal
186 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
187 <<
" identifier=" << identifier.toLatin1 ().data ();
194 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
200 bool Document::bytesIndicatePreVersion6 (
const QByteArray &bytes)
const
202 QByteArray preVersion6MagicNumber;
203 preVersion6MagicNumber.resize (FOUR_BYTES);
204 preVersion6MagicNumber[0] = 0x00;
205 preVersion6MagicNumber[1] = 0x00;
206 preVersion6MagicNumber[2] = 0xCA;
207 preVersion6MagicNumber[3] = 0xFE;
209 return (bytes == preVersion6MagicNumber);
213 const QPointF &posGraph,
215 QString &errorMessage)
217 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::checkAddPointAxis"
218 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
219 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ();
225 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
234 const QPointF &posScreen,
235 const QPointF &posGraph,
237 QString &errorMessage)
239 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::checkEditPointAxis"
240 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ();
247 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
257 ENGAUGE_CHECK_PTR (m_curveAxes);
264 if (curveName == AXIS_CURVE_NAME) {
277 if (curveName == AXIS_CURVE_NAME) {
290 return m_curvesGraphs;
304 const QString &identifier)
306 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::editPointAxis posGraph=("
307 << posGraph.x () <<
", " << posGraph.y () <<
") identifier="
308 << identifier.toLatin1 ().data ();
314 void Document::generateEmptyPixmap(
const QXmlStreamAttributes &attributes)
316 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::generateEmptyPixmap";
318 int width = 800, height = 500;
320 if (attributes.hasAttribute (DOCUMENT_SERIALIZE_IMAGE_WIDTH) &&
321 attributes.hasAttribute (DOCUMENT_SERIALIZE_IMAGE_HEIGHT)) {
323 width = attributes.value (DOCUMENT_SERIALIZE_IMAGE_WIDTH).toInt();
324 height = attributes.value (DOCUMENT_SERIALIZE_IMAGE_HEIGHT).toInt();
328 m_pixmap = QPixmap (width, height);
333 ENGAUGE_CHECK_PTR (m_curveAxes);
340 ENGAUGE_CHECK_PTR (m_curveAxes);
346 const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback)
const
348 if (curveName == AXIS_CURVE_NAME) {
358 ENGAUGE_CHECK_PTR (m_curveAxes);
365 ENGAUGE_CHECK_PTR (m_curveAxes);
370 void Document::loadImage(QXmlStreamReader &reader)
372 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::loadImage";
374 loadNextFromReader(reader);
375 if (reader.isCDATA ()) {
378 QByteArray array64 = reader.text().toString().toUtf8();
382 array = QByteArray::fromBase64(array64);
385 QDataStream str (&array, QIODevice::ReadOnly);
386 QImage img = m_pixmap.toImage ();
388 m_pixmap = QPixmap::fromImage (img);
391 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
392 (reader.name() != DOCUMENT_SERIALIZE_IMAGE)){
393 loadNextFromReader(reader);
401 reader.raiseError (
"Cannot read image data");
405 void Document::loadPostVersion5 (QXmlStreamReader &reader)
407 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::loadPostVersion5";
411 bool inDocumentSubtree =
false;
414 while (!reader.atEnd() &&
415 !reader.hasError()) {
416 QXmlStreamReader::TokenType tokenType = loadNextFromReader(reader);
419 if ((reader.name() == DOCUMENT_SERIALIZE_IMAGE) &&
420 (tokenType == QXmlStreamReader::StartElement)) {
422 generateEmptyPixmap (reader.attributes());
426 if ((reader.name() == DOCUMENT_SERIALIZE_DOCUMENT) &&
427 (tokenType == QXmlStreamReader::StartElement)) {
429 inDocumentSubtree =
true;
431 }
else if ((reader.name() == DOCUMENT_SERIALIZE_DOCUMENT) &&
432 (tokenType == QXmlStreamReader::EndElement)) {
438 if (inDocumentSubtree) {
441 if (tokenType == QXmlStreamReader::StartElement) {
444 QString tag = reader.name().toString();
445 if (tag == DOCUMENT_SERIALIZE_AXES_CHECKER){
446 m_modelAxesChecker.
loadXml (reader);
447 }
else if (tag == DOCUMENT_SERIALIZE_COMMON) {
448 m_modelCommon.
loadXml (reader);
449 }
else if (tag == DOCUMENT_SERIALIZE_COORDS) {
450 m_modelCoords.
loadXml (reader);
451 }
else if (tag == DOCUMENT_SERIALIZE_CURVE) {
452 m_curveAxes =
new Curve (reader);
453 }
else if (tag == DOCUMENT_SERIALIZE_CURVES_GRAPHS) {
454 m_curvesGraphs.
loadXml (reader);
455 }
else if (tag == DOCUMENT_SERIALIZE_DIGITIZE_CURVE) {
456 m_modelDigitizeCurve.
loadXml (reader);
457 }
else if (tag == DOCUMENT_SERIALIZE_DOCUMENT) {
459 }
else if (tag == DOCUMENT_SERIALIZE_EXPORT) {
460 m_modelExport.
loadXml (reader);
461 }
else if (tag == DOCUMENT_SERIALIZE_GRID_REMOVAL) {
462 m_modelGridRemoval.
loadXml (reader);
463 }
else if (tag == DOCUMENT_SERIALIZE_IMAGE) {
466 }
else if (tag == DOCUMENT_SERIALIZE_POINT_MATCH) {
467 m_modelPointMatch.
loadXml (reader);
468 }
else if (tag == DOCUMENT_SERIALIZE_SEGMENTS) {
469 m_modelSegments.
loadXml (reader);
471 m_successfulRead =
false;
472 m_reasonForUnsuccessfulRead = QString (
"Unexpected xml token '%1' encountered").arg (tokenType);
478 if (reader.hasError ()) {
480 m_successfulRead =
false;
481 m_reasonForUnsuccessfulRead = reader.errorString();
487 void Document::loadPreVersion6 (QDataStream &str)
489 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::loadPreVersion6";
492 double dbl, versionDouble, radius = 0.0;
496 str >> versionDouble;
505 if (versionDouble >= 3) {
506 str >> (
double &) radius;
525 m_modelExport.
setHeader((ExportHeader) int32);
526 if (versionDouble >= 5.2) {
528 if (m_modelCoords.
coordsType() == COORDS_TYPE_CARTESIAN) {
532 if (m_modelCoords.
coordsType() == COORDS_TYPE_POLAR) {
566 if (versionDouble >= 5) {
604 if (versionDouble < 4) {
623 m_curveAxes =
new Curve (str);
624 Curve curveScale (str);
635 return m_modelAxesChecker;
648 return m_modelCommon;
653 return m_modelCoords;
666 return m_modelDigitizeCurve;
671 return m_modelExport;
676 return m_modelGridRemoval;
681 return m_modelPointMatch;
686 return m_modelSegments;
690 const QPointF &deltaScreen)
703 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
706 if (curveName == AXIS_CURVE_NAME) {
739 QTextStream str (&text);
743 std::cerr << text.toLatin1().data();
747 QTextStream &str)
const
749 str << indentation <<
"Document\n";
751 indentation += INDENTATION_DELTA;
753 str << indentation <<
"name=" << m_name <<
"\n";
754 str << indentation <<
"pixmap=" << m_pixmap.width() <<
"x" << m_pixmap.height() <<
"\n";
781 ENGAUGE_ASSERT (!m_successfulRead);
783 return m_reasonForUnsuccessfulRead;
788 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::removePointAxis identifier=" << identifier.toLatin1 ().data ();
795 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::removePointGraph identifier=" << identifier.toLatin1 ().data ();
804 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
812 writer.writeStartElement(DOCUMENT_SERIALIZE_DOCUMENT);
816 QDataStream str (&array, QIODevice::WriteOnly);
817 QImage img = m_pixmap.toImage ();
819 writer.writeStartElement(DOCUMENT_SERIALIZE_IMAGE);
823 writer.writeAttribute(DOCUMENT_SERIALIZE_IMAGE_WIDTH, QString::number (img.width()));
824 writer.writeAttribute(DOCUMENT_SERIALIZE_IMAGE_HEIGHT, QString::number (img.height()));
826 writer.writeCDATA (array.toBase64 ());
827 writer.writeEndElement();
830 m_modelCommon.
saveXml (writer);
831 m_modelCoords.
saveXml (writer);
832 m_modelDigitizeCurve.
saveXml (writer);
833 m_modelExport.
saveXml (writer);
834 m_modelAxesChecker.
saveXml (writer);
835 m_modelGridRemoval.
saveXml (writer);
836 m_modelPointMatch.
saveXml (writer);
837 m_modelSegments.
saveXml (writer);
839 m_curvesGraphs.
saveXml (writer);
840 writer.writeEndElement();
845 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::setCurvesGraphs";
858 ColorFilterSettingsList::const_iterator itr;
863 QString curveName = itr.key();
884 QStringList curveNames = modelCurveStyles.
curveNames();
885 QStringList::iterator itr;
886 for (itr = curveNames.begin(); itr != curveNames.end(); itr++) {
888 QString curveName = *itr;
923 return m_successfulRead;
928 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 xml post-version 5 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 setCloseDistance(double closeDistance)
Set method for close distance.
void setModelPointMatch(const DocumentModelPointMatch &modelPointMatch)
Set method for DocumentModelPointMatch.
void setLineColor(ColorPalette lineColor)
Set method for line color.
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 setCountX(int countX)
Set method for x count.
void setMinLength(double minLength)
Set method for min length.
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 setPaletteColorCandidate(ColorPalette paletteColorCandidate)
Set method for candidate color.
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.
void setStopY(double stopY)
Set method for y stop.
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.
int numPoints() const
Number of points.
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...
void setCoordScaleYRadius(CoordScale coordScale)
Set method for linear/log scale on y/radius.
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 setStartY(double startY)
Set method for y start.
void setStepY(double stepY)
Set method for y step.
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 setStartX(double startX)
Set method for x start.
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 setLineWidth(double lineWidth)
Set method for line width.
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 setCountY(int countY)
Set method for y count.
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 setStepX(double stepX)
Set method for x step.
void setMaxPointSize(double maxPointSize)
Set method for max point size.
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 setCoordUnitsTheta(CoordUnitsPolarTheta coordUnits)
Set method for theta units.
void setRemoveDefinedGridLines(bool removeDefinedGridLines)
Set method for removing defined grid lines.
CoordsType coordsType() const
Get method for coordinates type.
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.
void setOriginRadius(double originRadius)
Set method for origin radius in polar mode.
void setGridCoordDisableY(GridCoordDisable gridCoordDisable)
Set method for y coord parameter to disable.
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.
void setCoordUnitsRadius(CoordUnitsNonPolarTheta coordUnits)
Set method for radius units.
void setGridCoordDisableX(GridCoordDisable gridCoordDisable)
Set method for x coord parameter to disable.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
void setPaletteColorRejected(ColorPalette paletteColorRejected)
Set method for rejected color.
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 setStable()
Set the stable flag to true. This public version has no argument since it cannot be undone...
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 loadPreVersion6(QDataStream &str)
Load from serialized binary pre-version 6 file.
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.
void setPointSeparation(double pointSeparation)
Set method for point separation.
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 setPaletteColorAccepted(ColorPalette paletteColorAccepted)
Set method for accepted color.
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...
void setStopX(double stopX)
Set method for x stop.
void setCoordScaleXTheta(CoordScale coordScale)
Set method for linear/log scale on x/theta.
CallbackSearchReturn callback(const QString &curveName, const Point &point)
Callback method.
void setCoordsType(CoordsType coordsType)
Set method for coordinates type.