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 const int FOUR_BYTES = 4;
50 m_successfulRead =
true;
53 QFile *file =
new QFile (fileName);
54 if (file->open(QIODevice::ReadOnly)) {
56 QByteArray bytes = file->read (FOUR_BYTES);
59 QByteArray preVersion6MagicNumber;
60 preVersion6MagicNumber.resize (FOUR_BYTES);
61 preVersion6MagicNumber[0] = 0x00;
62 preVersion6MagicNumber[1] = 0x00;
63 preVersion6MagicNumber[2] = 0xCA;
64 preVersion6MagicNumber[3] = 0xFE;
65 if (bytes == preVersion6MagicNumber) {
66 loadPreVersion6 (fileName);
68 loadPostVersion5 (fileName);
72 m_successfulRead =
false;
73 m_reasonForUnsuccessfulRead = QString (
"File '%1' was not found")
88 const QPointF &posGraph,
92 Point point (AXIS_CURVE_NAME,
100 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointAxisWithGeneratedIdentifier"
101 <<
" ordinal=" << ordinal
102 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
103 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ()
104 <<
" identifier=" << identifier.toLatin1 ().data ();
108 const QPointF &posGraph,
109 const QString &identifier,
112 Point point (AXIS_CURVE_NAME,
119 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointAxisWithSpecifiedIdentifier"
120 <<
" ordinal=" << ordinal
121 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
122 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ()
123 <<
" identifier=" << identifier.toLatin1 ().data ();
127 const QPointF &posScreen,
131 Point point (curveName,
138 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointGraphWithGeneratedIdentifier"
139 <<
" ordinal=" << ordinal
140 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
141 <<
" identifier=" << identifier.toLatin1 ().data ();
145 const QPointF &posScreen,
146 const QString &identifier,
149 Point point (curveName,
155 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::addPointGraphWithSpecifiedIdentifier"
156 <<
" ordinal=" << ordinal
157 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
158 <<
" identifier=" << identifier.toLatin1 ().data ();
165 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
172 const QPointF &posGraph,
174 QString &errorMessage)
176 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::checkAddPointAxis"
177 <<
" posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
178 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ();
184 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
193 const QPointF &posScreen,
194 const QPointF &posGraph,
196 QString &errorMessage)
198 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::checkEditPointAxis"
199 <<
" posGraph=" << QPointFToString (posGraph).toLatin1 ().data ();
206 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
216 ENGAUGE_CHECK_PTR (m_curveAxes);
223 if (curveName == AXIS_CURVE_NAME) {
236 if (curveName == AXIS_CURVE_NAME) {
249 return m_curvesGraphs;
263 const QString &identifier)
265 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::editPointAxis posGraph=("
266 << posGraph.x () <<
", " << posGraph.y () <<
") identifier="
267 << identifier.toLatin1 ().data ();
273 void Document::generateEmptyPixmap(
const QXmlStreamAttributes &attributes)
275 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::generateEmptyPixmap";
277 int width = 800, height = 500;
279 if (attributes.hasAttribute (DOCUMENT_SERIALIZE_IMAGE_WIDTH) &&
280 attributes.hasAttribute (DOCUMENT_SERIALIZE_IMAGE_HEIGHT)) {
282 width = attributes.value (DOCUMENT_SERIALIZE_IMAGE_WIDTH).toInt();
283 height = attributes.value (DOCUMENT_SERIALIZE_IMAGE_HEIGHT).toInt();
287 m_pixmap = QPixmap (width, height);
292 ENGAUGE_CHECK_PTR (m_curveAxes);
299 ENGAUGE_CHECK_PTR (m_curveAxes);
305 const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback)
const
307 if (curveName == AXIS_CURVE_NAME) {
317 ENGAUGE_CHECK_PTR (m_curveAxes);
324 ENGAUGE_CHECK_PTR (m_curveAxes);
329 void Document::loadImage(QXmlStreamReader &reader)
331 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::loadImage";
333 loadNextFromReader(reader);
334 if (reader.isCDATA ()) {
337 QByteArray array64 = reader.text().toString().toUtf8();
341 array = QByteArray::fromBase64(array64);
344 QDataStream str (&array, QIODevice::ReadOnly);
345 QImage img = m_pixmap.toImage ();
347 m_pixmap = QPixmap::fromImage (img);
350 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
351 (reader.name() != DOCUMENT_SERIALIZE_IMAGE)){
352 loadNextFromReader(reader);
360 reader.raiseError (
"Cannot read image data");
364 void Document::loadPostVersion5 (
const QString &fileName)
366 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::loadPostVersion5";
368 QFile *file =
new QFile (fileName);
369 if (file->open (QIODevice::ReadOnly | QIODevice::Text)) {
371 QXmlStreamReader reader (file);
375 bool inDocumentSubtree =
false;
378 while (!reader.atEnd() &&
379 !reader.hasError()) {
380 QXmlStreamReader::TokenType tokenType = loadNextFromReader(reader);
383 if ((reader.name() == DOCUMENT_SERIALIZE_IMAGE) &&
384 (tokenType == QXmlStreamReader::StartElement)) {
386 generateEmptyPixmap (reader.attributes());
390 if ((reader.name() == DOCUMENT_SERIALIZE_DOCUMENT) &&
391 (tokenType == QXmlStreamReader::StartElement)) {
393 inDocumentSubtree =
true;
395 }
else if ((reader.name() == DOCUMENT_SERIALIZE_DOCUMENT) &&
396 (tokenType == QXmlStreamReader::EndElement)) {
402 if (inDocumentSubtree) {
405 if (tokenType == QXmlStreamReader::StartElement) {
408 QString tag = reader.name().toString();
409 if (tag == DOCUMENT_SERIALIZE_AXES_CHECKER){
410 m_modelAxesChecker.
loadXml (reader);
411 }
else if (tag == DOCUMENT_SERIALIZE_COMMON) {
412 m_modelCommon.
loadXml (reader);
413 }
else if (tag == DOCUMENT_SERIALIZE_COORDS) {
414 m_modelCoords.
loadXml (reader);
415 }
else if (tag == DOCUMENT_SERIALIZE_CURVE) {
416 m_curveAxes =
new Curve (reader);
417 }
else if (tag == DOCUMENT_SERIALIZE_CURVES_GRAPHS) {
418 m_curvesGraphs.
loadXml (reader);
419 }
else if (tag == DOCUMENT_SERIALIZE_DIGITIZE_CURVE) {
420 m_modelDigitizeCurve.
loadXml (reader);
421 }
else if (tag == DOCUMENT_SERIALIZE_DOCUMENT) {
423 }
else if (tag == DOCUMENT_SERIALIZE_EXPORT) {
424 m_modelExport.
loadXml (reader);
425 }
else if (tag == DOCUMENT_SERIALIZE_GRID_REMOVAL) {
426 m_modelGridRemoval.
loadXml (reader);
427 }
else if (tag == DOCUMENT_SERIALIZE_IMAGE) {
430 }
else if (tag == DOCUMENT_SERIALIZE_POINT_MATCH) {
431 m_modelPointMatch.
loadXml (reader);
432 }
else if (tag == DOCUMENT_SERIALIZE_SEGMENTS) {
433 m_modelSegments.
loadXml (reader);
435 m_successfulRead =
false;
436 m_reasonForUnsuccessfulRead = QString (
"Unexpected xml token '%1' encountered").arg (tokenType);
442 if (reader.hasError ()) {
444 m_successfulRead =
false;
445 m_reasonForUnsuccessfulRead = reader.errorString();
455 m_successfulRead =
false;
456 m_reasonForUnsuccessfulRead =
"Operating system says file is not readable";
462 void Document::loadPreVersion6 (
const QString &fileName)
464 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::loadPreVersion6";
466 QFile *file =
new QFile (fileName);
467 if (file->open (QIODevice::ReadOnly)) {
468 QDataStream str (file);
471 double dbl, versionDouble, radius = 0.0;
475 str >> versionDouble;
484 if (versionDouble >= 3) {
485 str >> (
double &) radius;
504 m_modelExport.
setHeader((ExportHeader) int32);
505 if (versionDouble >= 5.2) {
507 if (m_modelCoords.
coordsType() == COORDS_TYPE_CARTESIAN) {
511 if (m_modelCoords.
coordsType() == COORDS_TYPE_POLAR) {
545 if (versionDouble >= 5) {
583 if (versionDouble < 4) {
602 m_curveAxes =
new Curve (str);
603 Curve curveScale (str);
615 return m_modelAxesChecker;
628 return m_modelCommon;
633 return m_modelCoords;
646 return m_modelDigitizeCurve;
651 return m_modelExport;
656 return m_modelGridRemoval;
661 return m_modelPointMatch;
666 return m_modelSegments;
670 const QPointF &deltaScreen)
683 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
686 if (curveName == AXIS_CURVE_NAME) {
719 QTextStream str (&text);
723 std::cerr << text.toLatin1().data();
727 QTextStream &str)
const
729 str << indentation <<
"Document\n";
731 indentation += INDENTATION_DELTA;
733 str << indentation <<
"name=" << m_name <<
"\n";
734 str << indentation <<
"pixmap=" << m_pixmap.width() <<
"x" << m_pixmap.height() <<
"\n";
761 ENGAUGE_ASSERT (!m_successfulRead);
763 return m_reasonForUnsuccessfulRead;
768 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::removePointAxis identifier=" << identifier.toLatin1 ().data ();
775 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::removePointGraph identifier=" << identifier.toLatin1 ().data ();
784 Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
792 writer.writeStartElement(DOCUMENT_SERIALIZE_DOCUMENT);
796 QDataStream str (&array, QIODevice::WriteOnly);
797 QImage img = m_pixmap.toImage ();
799 writer.writeStartElement(DOCUMENT_SERIALIZE_IMAGE);
803 writer.writeAttribute(DOCUMENT_SERIALIZE_IMAGE_WIDTH, QString::number (img.width()));
804 writer.writeAttribute(DOCUMENT_SERIALIZE_IMAGE_HEIGHT, QString::number (img.height()));
806 writer.writeCDATA (array.toBase64 ());
807 writer.writeEndElement();
810 m_modelCommon.
saveXml (writer);
811 m_modelCoords.
saveXml (writer);
812 m_modelDigitizeCurve.
saveXml (writer);
813 m_modelExport.
saveXml (writer);
814 m_modelAxesChecker.
saveXml (writer);
815 m_modelGridRemoval.
saveXml (writer);
816 m_modelPointMatch.
saveXml (writer);
817 m_modelSegments.
saveXml (writer);
819 m_curvesGraphs.
saveXml (writer);
820 writer.writeEndElement();
825 LOG4CPP_INFO_S ((*mainCat)) <<
"Document::setCurvesGraphs";
838 ColorFilterSettingsList::const_iterator itr;
843 QString curveName = itr.key();
864 QStringList curveNames = modelCurveStyles.
curveNames();
865 QStringList::iterator itr;
866 for (itr = curveNames.begin(); itr != curveNames.end(); itr++) {
868 QString curveName = *itr;
903 return m_successfulRead;
908 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.