Engauge Digitizer  2
CoordSystem.cpp
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 
10 #include "CallbackNextOrdinal.h"
12 #include "CoordSystem.h"
13 #include "Curve.h"
14 #include "CurvesGraphs.h"
15 #include "CurveStyles.h"
16 #include "DocumentSerialize.h"
17 #include "EngaugeAssert.h"
18 #include "EnumsToQt.h"
19 #include <iostream>
20 #include "Logger.h"
21 #include "OrdinalGenerator.h"
22 #include "Point.h"
23 #include <QByteArray>
24 #include <QDataStream>
25 #include <QDebug>
26 #include <QFile>
27 #include <QImage>
28 #include <qmath.h>
29 #include <QtToString.h>
30 #include <QXmlStreamReader>
31 #include <QXmlStreamWriter>
32 #include "SettingsForGraph.h"
33 #include "Transformation.h"
34 #include "Version.h"
35 #include "Xml.h"
36 
37 const int FOUR_BYTES = 4;
38 
40  m_curveAxes (new Curve (AXIS_CURVE_NAME,
41  ColorFilterSettings::defaultFilter (),
42  CurveStyle (LineStyle::defaultAxesCurve(),
43  PointStyle::defaultAxesCurve ())))
44 {
45  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::CoordSystem";
46 
47  SettingsForGraph settingsForGraph;
48 
49  // Create one curve, or as many curve as specified in the configuration file, whichever is greater
50  for (int indexOneBased = 1; indexOneBased <= settingsForGraph.numberOfCurvesForImport (); indexOneBased++) {
51 
52  QString curveName = settingsForGraph.defaultCurveName (indexOneBased,
54  m_curvesGraphs.addGraphCurveAtEnd (Curve (curveName,
57  PointStyle::defaultGraphCurve (m_curvesGraphs.numCurves ()))));
58 
59  resetSelectedCurveNameIfNecessary ();
60  }
61 }
62 
64 {
65  delete m_curveAxes;
66 }
67 
68 void CoordSystem::addGraphCurveAtEnd (const QString &curveName)
69 {
70  m_curvesGraphs.addGraphCurveAtEnd (Curve (curveName,
73  PointStyle::defaultGraphCurve(m_curvesGraphs.numCurves()))));
74 
75  resetSelectedCurveNameIfNecessary ();
76 }
77 
78 void CoordSystem::addPointAxisWithGeneratedIdentifier (const QPointF &posScreen,
79  const QPointF &posGraph,
80  QString &identifier,
81  double ordinal,
82  bool isXOnly)
83 {
84  Point point (AXIS_CURVE_NAME,
85  posScreen,
86  posGraph,
87  ordinal,
88  isXOnly);
89  m_curveAxes->addPoint (point);
90 
91  identifier = point.identifier();
92 
93  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::addPointAxisWithGeneratedIdentifier"
94  << " ordinal=" << ordinal
95  << " posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
96  << " posGraph=" << QPointFToString (posGraph).toLatin1 ().data ()
97  << " identifier=" << identifier.toLatin1 ().data ();
98 }
99 
101  const QPointF &posGraph,
102  const QString &identifier,
103  double ordinal,
104  bool isXOnly)
105 {
106  Point point (AXIS_CURVE_NAME,
107  identifier,
108  posScreen,
109  posGraph,
110  ordinal,
111  isXOnly);
112  m_curveAxes->addPoint (point);
113 
114  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::addPointAxisWithSpecifiedIdentifier"
115  << " ordinal=" << ordinal
116  << " posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
117  << " posGraph=" << QPointFToString (posGraph).toLatin1 ().data ()
118  << " identifier=" << identifier.toLatin1 ().data ();
119 }
120 
122  const QPointF &posScreen,
123  QString &identifier,
124  double ordinal)
125 {
126  Point point (curveName,
127  posScreen,
128  ordinal);
129  m_curvesGraphs.addPoint (point);
130 
131  identifier = point.identifier();
132 
133  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::addPointGraphWithGeneratedIdentifier"
134  << " ordinal=" << ordinal
135  << " posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
136  << " identifier=" << identifier.toLatin1 ().data ();
137 }
138 
140  const QPointF &posScreen,
141  const QString &identifier,
142  double ordinal)
143 {
144  Point point (curveName,
145  identifier,
146  posScreen,
147  ordinal);
148  m_curvesGraphs.addPoint (point);
149 
150  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::addPointGraphWithSpecifiedIdentifier"
151  << " ordinal=" << ordinal
152  << " posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
153  << " identifier=" << identifier.toLatin1 ().data ();
154 }
155 
157 {
158  CallbackAddPointsInCurvesGraphs ftor (*this);
159 
160  Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
162 
163  curvesGraphs.iterateThroughCurvesPoints (ftorWithCallback);
164 }
165 
166 bool CoordSystem::bytesIndicatePreVersion6 (const QByteArray &bytes) const
167 {
168  QByteArray preVersion6MagicNumber;
169  preVersion6MagicNumber.resize (FOUR_BYTES);
170 
171  // Windows compiler gives warning if 0x## is used instead of '\x##' below
172  preVersion6MagicNumber[0] = '\x00';
173  preVersion6MagicNumber[1] = '\x00';
174  preVersion6MagicNumber[2] = '\xCA';
175  preVersion6MagicNumber[3] = '\xFE';
176 
177  return (bytes == preVersion6MagicNumber);
178 }
179 
180 void CoordSystem::checkAddPointAxis (const QPointF &posScreen,
181  const QPointF &posGraph,
182  bool &isError,
183  QString &errorMessage,
184  bool isXOnly,
185  DocumentAxesPointsRequired documentAxesPointsRequired)
186 {
187  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::checkAddPointAxis"
188  << " posScreen=" << QPointFToString (posScreen).toLatin1 ().data ()
189  << " posGraph=" << QPointFToString (posGraph).toLatin1 ().data ();
190 
191  CallbackCheckAddPointAxis ftor (m_modelCoords,
192  posScreen,
193  posGraph,
194  documentAxesPointsRequired,
195  isXOnly);
196 
197  Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
199  m_curveAxes->iterateThroughCurvePoints (ftorWithCallback);
200 
201  isError = ftor.isError ();
202  errorMessage = ftor.errorMessage ();
203 }
204 
205 void CoordSystem::checkEditPointAxis (const QString &pointIdentifier,
206  const QPointF &posScreen,
207  const QPointF &posGraph,
208  bool &isError,
209  QString &errorMessage,
210  DocumentAxesPointsRequired documentAxesPointsRequired)
211 {
212  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::checkEditPointAxis"
213  << " posGraph=" << QPointFToString (posGraph).toLatin1 ().data ();
214 
215  CallbackCheckEditPointAxis ftor (m_modelCoords,
216  pointIdentifier,
217  posScreen,
218  posGraph,
219  documentAxesPointsRequired);
220 
221  Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
223  m_curveAxes->iterateThroughCurvePoints (ftorWithCallback);
224 
225  isError = ftor.isError ();
226  errorMessage = ftor.errorMessage ();
227 }
228 
230 {
231  ENGAUGE_CHECK_PTR (m_curveAxes);
232 
233  return *m_curveAxes;
234 }
235 
236 Curve *CoordSystem::curveForCurveName (const QString &curveName)
237 {
238  if (curveName == AXIS_CURVE_NAME) {
239 
240  return m_curveAxes;
241 
242  } else {
243 
244  return m_curvesGraphs.curveForCurveName (curveName);
245 
246  }
247 }
248 
249 const Curve *CoordSystem::curveForCurveName (const QString &curveName) const
250 {
251  if (curveName == AXIS_CURVE_NAME) {
252 
253  return m_curveAxes;
254 
255  } else {
256 
257  return m_curvesGraphs.curveForCurveName (curveName);
258 
259  }
260 }
261 
263 {
264  return m_curvesGraphs;
265 }
266 
268 {
269  return m_curvesGraphs.curvesGraphsNames();
270 }
271 
272 int CoordSystem::curvesGraphsNumPoints(const QString &curveName) const
273 {
274  return m_curvesGraphs.curvesGraphsNumPoints(curveName);
275 }
276 
277 void CoordSystem::editPointAxis (const QPointF &posGraph,
278  const QString &identifier)
279 {
280  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::editPointAxis"
281  << " posGraph=(" << posGraph.x () << ", " << posGraph.y () << ") identifier="
282  << " identifier=" << identifier.toLatin1 ().data ();
283 
284  m_curveAxes->editPointAxis (posGraph,
285  identifier);
286 }
287 
289  bool isY,
290  double x,
291  double y,
292  const QStringList &identifiers,
293  const Transformation &transformation)
294 {
295  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::editPointGraph posGraph=("
296  << " x=" << (isX ? QString::number (x).toLatin1().data() : "")
297  << " y=" << (isY ? QString::number (y).toLatin1().data() : "")
298  << ") identifiers=" << identifiers.join(" ").toLatin1 ().data ();
299 
300  m_curvesGraphs.editPointGraph (isX,
301  isY,
302  x,
303  y,
304  identifiers,
305  transformation);
306 }
307 
308 void CoordSystem::initializeUnsetGridRemovalFromGridDisplay (double version)
309 {
310  // In issue #273 a broken dig file was encountered with grid removal values that were apparently
311  // corrupted, from version 4.1. This code was inserted to accomodate that file and other files presumably having
312  // the same issue. Newer versions are assumed to be properly initialized, and this code is not applied
313  // so it does not interfere with properly set values
314 
315  if (version < 5) {
316 
317  // Most reliable indicator of a problem is very unrealistic values for counts
318  if (m_modelGridRemoval.countX () < 2 ||
319  m_modelGridRemoval.countY () < 2 ||
320  m_modelGridRemoval.countX () > 100 ||
321  m_modelGridRemoval.countY () > 100) {
322 
323  // Problem found. Prevent issues later by copying values from m_modelGridDisplay
324  m_modelGridRemoval.setStartX (m_modelGridDisplay.startX ());
325  m_modelGridRemoval.setStartY (m_modelGridDisplay.startY ());
326  m_modelGridRemoval.setStepX (m_modelGridDisplay.stepX ());
327  m_modelGridRemoval.setStepY (m_modelGridDisplay.stepY ());
328  m_modelGridRemoval.setStopX (m_modelGridDisplay.stopX ());
329  m_modelGridRemoval.setStopY (m_modelGridDisplay.stopY ());
330  m_modelGridRemoval.setCountX (signed (m_modelGridDisplay.countX ()));
331  m_modelGridRemoval.setCountY (signed (m_modelGridDisplay.countY ()));
332  }
333  }
334 }
335 
336 bool CoordSystem::isXOnly (const QString &pointIdentifier) const
337 {
338  return m_curveAxes->isXOnly (pointIdentifier);
339 }
340 
341 void CoordSystem::iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback)
342 {
343  ENGAUGE_CHECK_PTR (m_curveAxes);
344 
345  m_curveAxes->iterateThroughCurvePoints (ftorWithCallback);
346 }
347 
348 void CoordSystem::iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const
349 {
350  ENGAUGE_CHECK_PTR (m_curveAxes);
351 
352  m_curveAxes->iterateThroughCurvePoints (ftorWithCallback);
353 }
354 
355 void CoordSystem::iterateThroughCurveSegments (const QString &curveName,
356  const Functor2wRet<const Point &, const Point &, CallbackSearchReturn> &ftorWithCallback) const
357 {
358  if (curveName == AXIS_CURVE_NAME) {
359  m_curveAxes->iterateThroughCurveSegments(ftorWithCallback);
360  } else {
361  m_curvesGraphs.iterateThroughCurveSegments(curveName,
362  ftorWithCallback);
363  }
364 }
365 
366 void CoordSystem::iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback)
367 {
368  ENGAUGE_CHECK_PTR (m_curveAxes);
369 
370  m_curvesGraphs.iterateThroughCurvesPoints (ftorWithCallback);
371 }
372 
373 void CoordSystem::iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const
374 {
375  ENGAUGE_CHECK_PTR (m_curveAxes);
376 
377  m_curvesGraphs.iterateThroughCurvesPoints (ftorWithCallback);
378 }
379 
380 bool CoordSystem::loadCurvesFile(const QString & /* curvesFile */)
381 {
382  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::loadCurvesFile";
383 
384  return true;
385 }
386 
387 void CoordSystem::loadPreVersion6 (QDataStream &str,
388  double version,
389  DocumentAxesPointsRequired &documentAxesPointsRequired)
390 {
391  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::loadPreVersion6";
392 
393  qint32 int32;
394  double dbl, radius = 0.0;
395  QString st;
396 
397  str >> st; // CurveCmbText selection
398  str >> st; // MeasureCmbText selection
399  str >> int32;
400  m_modelCoords.setCoordsType(static_cast<CoordsType> (int32));
401  if (version >= 3) {
402  str >> static_cast<double &> (radius);
403  }
404  m_modelCoords.setOriginRadius(radius);
405  str >> int32;
407  m_modelCoords.setCoordUnitsTheta(static_cast<CoordUnitsPolarTheta> (int32));
408  str >> int32;
409  m_modelCoords.setCoordScaleXTheta(static_cast<CoordScale> (int32));
410  str >> int32;
411  m_modelCoords.setCoordScaleYRadius(static_cast<CoordScale> (int32));
412 
413  str >> int32;
414  m_modelExport.setDelimiter(static_cast<ExportDelimiter> (int32));
415  str >> int32;
416  m_modelExport.setLayoutFunctions(static_cast<ExportLayoutFunctions> (int32));
417  str >> int32;
418  m_modelExport.setPointsSelectionFunctions(static_cast<ExportPointsSelectionFunctions> (int32));
420  m_modelExport.setPointsIntervalUnitsFunctions(static_cast<ExportPointsIntervalUnits> (int32));
421  m_modelExport.setPointsIntervalUnitsRelations(static_cast<ExportPointsIntervalUnits> (int32));
422  str >> int32;
423  m_modelExport.setHeader(static_cast<ExportHeader> (int32));
424  if (version >= 5.1) {
425  str >> st; // X label
426  if (m_modelCoords.coordsType() == COORDS_TYPE_CARTESIAN) {
427  m_modelExport.setXLabel(st);
428  }
429  str >> st; // Theta label
430  if (m_modelCoords.coordsType() == COORDS_TYPE_POLAR) {
431  m_modelExport.setXLabel(st);
432  }
433  }
434 
435  // Stable flag in m_modelGridRemoval is set below after points are read in
436  str >> int32; // Remove thin lines parallel to axes
437  str >> dbl; // Thin thickness
438  str >> int32;
439  m_modelGridRemoval.setRemoveDefinedGridLines(int32);
440  str >> int32; // Initialized
441  str >> int32;
442  m_modelGridRemoval.setCountX(int32);
443  str >> int32;
444  m_modelGridRemoval.setCountY(int32);
445  str >> int32;
446  m_modelGridRemoval.setGridCoordDisableX(static_cast<GridCoordDisable> (int32));
447  str >> int32;
448  m_modelGridRemoval.setGridCoordDisableY(static_cast<GridCoordDisable> (int32));
449  str >> dbl;
450  m_modelGridRemoval.setStartX(dbl);
451  str >> dbl;
452  m_modelGridRemoval.setStartY(dbl);
453  str >> dbl;
454  m_modelGridRemoval.setStepX(dbl);
455  str >> dbl;
456  m_modelGridRemoval.setStepY(dbl);
457  str >> dbl;
458  m_modelGridRemoval.setStopX(dbl);
459  str >> dbl;
460  m_modelGridRemoval.setStopY(dbl);
461  str >> dbl;
462  m_modelGridRemoval.setCloseDistance(dbl);
463  str >> int32; // Boolean remove color flag
464  if (version >= 5) {
465  QColor color;
466  str >> color;
467  } else {
468  str >> int32; // Rgb color
469  }
470  str >> int32; // Foreground threshold low
471  str >> int32; // Foreground threshold high
472  str >> dbl; // Gap separation
473 
474  str >> int32;
475  m_modelGridDisplay.setStable(int32);
476  str >> int32;
477  m_modelGridDisplay.setCountX(unsigned (int32));
478  str >> int32;
479  m_modelGridDisplay.setCountY(unsigned (int32));
480  str >> int32;
481  m_modelGridDisplay.setDisableX(static_cast<GridCoordDisable> (int32));
482  str >> int32;
483  m_modelGridDisplay.setDisableY(static_cast<GridCoordDisable> (int32));
484  str >> dbl;
485  m_modelGridDisplay.setStartX (dbl);
486  str >> dbl;
487  m_modelGridDisplay.setStartY (dbl);
488  str >> dbl;
489  m_modelGridDisplay.setStepX (dbl);
490  str >> dbl;
491  m_modelGridDisplay.setStepY (dbl);
492  str >> dbl;
493  m_modelGridDisplay.setStopX (dbl);
494  str >> dbl;
495  m_modelGridDisplay.setStopY (dbl);
496 
497  initializeUnsetGridRemovalFromGridDisplay (version);
498 
499  str >> int32;
500  m_modelSegments.setMinLength(int32);
501  str >> int32;
502  m_modelSegments.setPointSeparation(int32);
503  str >> int32;
504  m_modelSegments.setLineWidth(int32);
505  str >> int32;
506  m_modelSegments.setLineColor(static_cast<ColorPalette> (int32));
507 
508  str >> int32; // Point separation
509  str >> int32;
510  m_modelPointMatch.setMaxPointSize(int32);
511  str >> int32;
512  m_modelPointMatch.setPaletteColorAccepted(static_cast<ColorPalette> (int32));
513  str >> int32;
514  m_modelPointMatch.setPaletteColorRejected(static_cast<ColorPalette> (int32));
515  if (version < 4) {
516  m_modelPointMatch.setPaletteColorCandidate(COLOR_PALETTE_BLUE);
517  } else {
518  str >> int32;
519  m_modelPointMatch.setPaletteColorCandidate(static_cast<ColorPalette> (int32));
520  }
521 
522  str >> int32; // Discretize method
523  str >> int32; // Intensity threshold low
524  str >> int32; // Intensity threshold high
525  str >> int32; // Foreground threshold low
526  str >> int32; // Foreground threshold high
527  str >> int32; // Hue threshold low
528  str >> int32; // Hue threshold high
529  str >> int32; // Saturation threshold low
530  str >> int32; // Saturation threshold high
531  str >> int32; // Value threshold low
532  str >> int32; // Value threshold high
533 
534  // Old versions have two Curve objects for 3 point axes and 2 point scales. New version picks one Curve
535  Curve *curveAxesIn = new Curve (str);
536  Curve *curveScaleIn = new Curve (str);
537  if (curveScaleIn->numPoints() == 2) {
538  // Nondefault case is map with scale bar
539  documentAxesPointsRequired = DOCUMENT_AXES_POINTS_REQUIRED_2;
540  delete m_curveAxes;
541  m_curveAxes = curveScaleIn;
542  m_curveAxes->setCurveName (AXIS_CURVE_NAME); // Override existing "Scale" name
543  delete curveAxesIn;
544  } else {
545  // Default case is graph with axes
546  documentAxesPointsRequired = DOCUMENT_AXES_POINTS_REQUIRED_3;
547  delete m_curveAxes;
548  m_curveAxes = curveAxesIn;
549  delete curveScaleIn;
550  }
551  m_curvesGraphs.loadPreVersion6 (str);
552 
553  // Information from curves and points can affect some data structures that were (mostly) set earlier
554  if (m_curveAxes->numPoints () >= documentAxesPointsRequired) {
555  m_modelGridRemoval.setStable();
556  }
557 
558  resetSelectedCurveNameIfNecessary ();
559 }
560 
561 void CoordSystem::loadVersion6 (QXmlStreamReader &reader,
562  DocumentAxesPointsRequired &documentAxesPointsRequired)
563 {
564  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::loadVersion6";
565 
566  documentAxesPointsRequired = DOCUMENT_AXES_POINTS_REQUIRED_3;
567 
568  // Import from xml. Loop to end of data or error condition occurs, whichever is first
569  while (!reader.atEnd() &&
570  !reader.hasError()) {
571  QXmlStreamReader::TokenType tokenType = loadNextFromReader(reader);
572 
573  if ((reader.name() == DOCUMENT_SERIALIZE_DOCUMENT) &&
574  (tokenType == QXmlStreamReader::EndElement)) {
575 
576  // Exit out of loop immediately
577  break;
578  }
579 
580  // Iterate to next StartElement
581  if (tokenType == QXmlStreamReader::StartElement) {
582 
583  // This is a StartElement, so process it
584  QString tag = reader.name().toString();
586  m_modelAxesChecker.loadXml (reader);
587  } else if (tag == DOCUMENT_SERIALIZE_COORDS) {
588  m_modelCoords.loadXml (reader);
589  } else if (tag == DOCUMENT_SERIALIZE_CURVE) {
590  delete m_curveAxes;
591  m_curveAxes = new Curve (reader);
592  } else if (tag == DOCUMENT_SERIALIZE_CURVES_GRAPHS) {
593  m_curvesGraphs.loadXml (reader);
594  } else if (tag == DOCUMENT_SERIALIZE_DIGITIZE_CURVE) {
595  m_modelDigitizeCurve.loadXml (reader);
596  } else if (tag == DOCUMENT_SERIALIZE_EXPORT) {
597  m_modelExport.loadXml (reader);
598  } else if (tag == DOCUMENT_SERIALIZE_GENERAL || tag == DOCUMENT_SERIALIZE_COMMON) {
599  m_modelGeneral.loadXml (reader);
600  } else if (tag == DOCUMENT_SERIALIZE_GRID_REMOVAL) {
601  m_modelGridRemoval.loadXml (reader);
602  } else if (tag == DOCUMENT_SERIALIZE_IMAGE) {
603  ENGAUGE_ASSERT (false); // The image should have been read before this method was called
604  } else if (tag == DOCUMENT_SERIALIZE_POINT_MATCH) {
605  m_modelPointMatch.loadXml (reader);
606  } else if (tag == DOCUMENT_SERIALIZE_SEGMENTS) {
607  m_modelSegments.loadXml (reader);
608  } else {
609  m_successfulRead = false;
610  m_reasonForUnsuccessfulRead = QString ("%1 '%2' %3")
611  .arg (QObject::tr ("Unexpected xml token"))
612  .arg (tag)
613  .arg ("encountered");
614  break;
615  }
616  }
617  }
618 
619  resetSelectedCurveNameIfNecessary ();
620 }
621 
622 void CoordSystem::loadVersions7AndUp (QXmlStreamReader &reader)
623 {
624  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::loadVersions7AndUp";
625 
626  // Import from xml. Loop to end of data or error condition occurs, whichever is first
627  while (!reader.atEnd() &&
628  !reader.hasError()) {
629  QXmlStreamReader::TokenType tokenType = loadNextFromReader(reader);
630 
631  if ((reader.name() == DOCUMENT_SERIALIZE_COORD_SYSTEM) &&
632  (tokenType == QXmlStreamReader::EndElement)) {
633 
634  // Exit out of loop immediately
635  break;
636  }
637 
638  // Iterate to next StartElement
639  if (tokenType == QXmlStreamReader::StartElement) {
640 
641  // This is a StartElement, so process it
642  QString tag = reader.name().toString();
644  m_modelAxesChecker.loadXml (reader);
645  } else if (tag == DOCUMENT_SERIALIZE_COORDS) {
646  m_modelCoords.loadXml (reader);
647  } else if (tag == DOCUMENT_SERIALIZE_CURVE) {
648  delete m_curveAxes;
649  m_curveAxes = new Curve (reader);
650  } else if (tag == DOCUMENT_SERIALIZE_CURVES_GRAPHS) {
651  m_curvesGraphs.loadXml (reader);
652  } else if (tag == DOCUMENT_SERIALIZE_DIGITIZE_CURVE) {
653  m_modelDigitizeCurve.loadXml (reader);
654  } else if (tag == DOCUMENT_SERIALIZE_EXPORT) {
655  m_modelExport.loadXml (reader);
656  } else if (tag == DOCUMENT_SERIALIZE_GENERAL || tag == DOCUMENT_SERIALIZE_COMMON) {
657  m_modelGeneral.loadXml (reader);
658  } else if (tag == DOCUMENT_SERIALIZE_GRID_DISPLAY) {
659  m_modelGridDisplay.loadXml (reader);
660  } else if (tag == DOCUMENT_SERIALIZE_GRID_REMOVAL) {
661  m_modelGridRemoval.loadXml (reader);
662  } else if (tag == DOCUMENT_SERIALIZE_IMAGE) {
663  ENGAUGE_ASSERT (false); // The image should have been read before this method was called
664  } else if (tag == DOCUMENT_SERIALIZE_POINT_MATCH) {
665  m_modelPointMatch.loadXml (reader);
666  } else if (tag == DOCUMENT_SERIALIZE_SEGMENTS) {
667  m_modelSegments.loadXml (reader);
668  } else {
669  m_successfulRead = false;
670  m_reasonForUnsuccessfulRead = QString ("Unexpected xml token '%1' encountered").arg (tag);
671  break;
672  }
673  }
674  }
675 
676  resetSelectedCurveNameIfNecessary ();
677 }
678 
680 {
681  return m_modelAxesChecker;
682 }
683 
685 {
686  // Construct a curve-specific model
688 
689  return modelColorFilter;
690 }
691 
693 {
694  return m_modelCoords;
695 }
696 
698 {
699  // Construct a curve-specific model
701 
702  return modelCurveStyles;
703 }
704 
706 {
707  return m_modelDigitizeCurve;
708 }
709 
711 {
712  return m_modelExport;
713 }
714 
716 {
717  return m_modelGeneral;
718 }
719 
721 {
722  return m_modelGridDisplay;
723 }
724 
726 {
727  return m_modelGridRemoval;
728 }
729 
731 {
732  return m_modelPointMatch;
733 }
734 
736 {
737  return m_modelSegments;
738 }
739 
740 void CoordSystem::movePoint (const QString &pointIdentifier,
741  const QPointF &deltaScreen)
742 {
743  QString curveName = Point::curveNameFromPointIdentifier (pointIdentifier);
744 
745  Curve *curve = curveForCurveName (curveName);
746  ENGAUGE_CHECK_PTR (curve);
747  curve->movePoint (pointIdentifier,
748  deltaScreen);
749 }
750 
751 int CoordSystem::nextOrdinalForCurve (const QString &curveName) const
752 {
753  CallbackNextOrdinal ftor (curveName);
754 
755  Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
757 
758  if (curveName == AXIS_CURVE_NAME) {
759  m_curveAxes->iterateThroughCurvePoints (ftorWithCallback);
760  } else {
761  m_curvesGraphs.iterateThroughCurvesPoints (ftorWithCallback);
762  }
763 
764  return qFloor (ftor.nextOrdinal ());
765 }
766 
767 QPointF CoordSystem::positionGraph (const QString &pointIdentifier) const
768 {
769  QString curveName = Point::curveNameFromPointIdentifier (pointIdentifier);
770 
771  const Curve *curve = curveForCurveName (curveName);
772  return curve->positionGraph (pointIdentifier);
773 }
774 
775 QPointF CoordSystem::positionScreen (const QString &pointIdentifier) const
776 {
777  QString curveName = Point::curveNameFromPointIdentifier (pointIdentifier);
778 
779  const Curve *curve = curveForCurveName (curveName);
780  return curve->positionScreen (pointIdentifier);
781 }
782 
783 void CoordSystem::print () const
784 {
785  QString text;
786  QTextStream str (&text);
787 
788  printStream ("",
789  str);
790  std::cerr << text.toLatin1().data();
791 }
792 
793 void CoordSystem::printStream (QString indentation,
794  QTextStream &str) const
795 {
796  str << indentation << "Graph\n";
797 
798  indentation += INDENTATION_DELTA;
799 
800  // str << indentation << "name=" << m_name << "\n";
801  // str << indentation << "pixmap=" << m_pixmap.width() << "x" << m_pixmap.height() << "\n";
802 
803  m_curveAxes->printStream (indentation,
804  str);
805  m_curvesGraphs.printStream (indentation,
806  str);
807 
808  m_modelAxesChecker.printStream (indentation,
809  str);
810  m_modelCoords.printStream (indentation,
811  str);
812  m_modelDigitizeCurve.printStream (indentation,
813  str);
814  m_modelExport.printStream (indentation,
815  str);
816  m_modelGeneral.printStream (indentation,
817  str);
818  m_modelGridDisplay.printStream (indentation,
819  str);
820  m_modelGridRemoval.printStream (indentation,
821  str);
822  m_modelPointMatch.printStream (indentation,
823  str);
824  m_modelSegments.printStream (indentation,
825  str);
826 }
827 
829 {
830  ENGAUGE_ASSERT (!m_successfulRead);
831 
832  return m_reasonForUnsuccessfulRead;
833 }
834 
835 void CoordSystem::removePointAxis (const QString &identifier)
836 {
837  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::removePointAxis identifier=" << identifier.toLatin1 ().data ();
838 
839  m_curveAxes->removePoint (identifier);
840 }
841 
842 void CoordSystem::removePointGraph (const QString &identifier)
843 {
844  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::removePointGraph identifier=" << identifier.toLatin1 ().data ();
845 
846  m_curvesGraphs.removePoint (identifier);
847 }
848 
850 {
852 
853  Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor,
855 
856  curvesGraphs.iterateThroughCurvesPoints (ftorWithCallback);
857 }
858 
859 void CoordSystem::resetSelectedCurveNameIfNecessary ()
860 {
861  if (m_selectedCurveName.isEmpty () ||
862  curveForCurveName (m_selectedCurveName) == nullptr) {
863 
864  // Selected curve name is empty, or the curve has been removed so we pick another. The first is arbitrarily picked
865  m_selectedCurveName = m_curvesGraphs.curvesGraphsNames().first();
866  }
867 
868 }
869 
870 void CoordSystem::saveXml (QXmlStreamWriter &writer) const
871 {
872  writer.writeStartElement(DOCUMENT_SERIALIZE_COORD_SYSTEM);
873 
874  // Serialize the Document variables
875  m_modelGeneral.saveXml (writer);
876  m_modelCoords.saveXml (writer);
877  m_modelDigitizeCurve.saveXml (writer);
878  m_modelExport.saveXml (writer);
879  m_modelAxesChecker.saveXml (writer);
880  m_modelGridDisplay.saveXml (writer);
881  m_modelGridRemoval.saveXml (writer);
882  m_modelPointMatch.saveXml (writer);
883  m_modelSegments.saveXml (writer);
884  m_curveAxes->saveXml (writer);
885  m_curvesGraphs.saveXml (writer);
886  writer.writeEndElement();
887 }
888 
890 {
891  return m_selectedCurveName;
892 }
893 
894 void CoordSystem::setCurveAxes (const Curve &curveAxes)
895 {
896  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::setCurveAxes";
897 
898  delete m_curveAxes;
899 
900  m_curveAxes = new Curve (curveAxes);
901 }
902 
903 void CoordSystem::setCurvesGraphs (const CurvesGraphs &curvesGraphs)
904 {
905  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::setCurvesGraphs";
906 
907  m_curvesGraphs = curvesGraphs;
908 
909  resetSelectedCurveNameIfNecessary ();
910 }
911 
913 {
914  m_modelAxesChecker = modelAxesChecker;
915 }
916 
918 {
919  // Save the CurveFilter for each Curve
920  ColorFilterSettingsList::const_iterator itr;
921  for (itr = modelColorFilter.colorFilterSettingsList().constBegin ();
922  itr != modelColorFilter.colorFilterSettingsList().constEnd();
923  itr++) {
924 
925  QString curveName = itr.key();
926  const ColorFilterSettings &colorFilterSettings = itr.value();
927 
928  Curve *curve = curveForCurveName (curveName);
929  curve->setColorFilterSettings (colorFilterSettings);
930  }
931 }
932 
934 {
935  m_modelCoords = modelCoords;
936 }
937 
938 void CoordSystem::setModelCurveStyles(const CurveStyles &modelCurveStyles)
939 {
940  // Save the LineStyle and PointStyle for each Curve
941  QStringList curveNames = modelCurveStyles.curveNames();
942  QStringList::iterator itr;
943  for (itr = curveNames.begin(); itr != curveNames.end(); itr++) {
944 
945  QString curveName = *itr;
946  const CurveStyle &curveStyle = modelCurveStyles.curveStyle (curveName);
947 
948  Curve *curve = curveForCurveName (curveName);
949  curve->setCurveStyle (curveStyle);
950  }
951 }
952 
954 {
955  m_modelDigitizeCurve = modelDigitizeCurve;
956 }
957 
959 {
960  m_modelExport = modelExport;
961 }
962 
964 {
965  m_modelGeneral = modelGeneral;
966 }
967 
969 {
970  m_modelGridDisplay = modelGridDisplay;
971 }
972 
974 {
975  m_modelGridRemoval = modelGridRemoval;
976 }
977 
979 {
980  m_modelPointMatch = modelPointMatch;
981 }
982 
984 {
985  m_modelSegments = modelSegments;
986 }
987 
988 void CoordSystem::setSelectedCurveName(const QString &selectedCurveName)
989 {
990  m_selectedCurveName = selectedCurveName;
991 }
992 
994 {
995  return m_successfulRead;
996 }
997 
999 {
1000  LOG4CPP_INFO_S ((*mainCat)) << "CoordSystem::updatePointOrdinals";
1001 
1002  // The graph coordinates of all points in m_curvesGraphs must have already been updated at this point. See applyTransformation
1003  m_curvesGraphs.updatePointOrdinals (transformation);
1004 }
Curve::iterateThroughCurvePoints
void iterateThroughCurvePoints(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
Apply functor to Points on Curve.
Definition: Curve.cpp:301
LineStyle::defaultGraphCurve
static LineStyle defaultGraphCurve(int index)
Initial default for index'th graph curve.
Definition: LineStyle.cpp:84
CoordSystem::modelGridDisplay
virtual DocumentModelGridDisplay modelGridDisplay() const
Get method for DocumentModelGridDisplay.
Definition: CoordSystem.cpp:720
Xml.h
CoordSystem::modelGeneral
virtual DocumentModelGeneral modelGeneral() const
Get method for DocumentModelGeneral.
Definition: CoordSystem.cpp:715
CurvesGraphs::saveXml
void saveXml(QXmlStreamWriter &writer) const
Serialize curves.
Definition: CurvesGraphs.cpp:270
DocumentModelGeneral::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelGeneral.cpp:107
DocumentModelExportFormat::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelExportFormat.cpp:296
DocumentModelPointMatch::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelPointMatch.cpp:56
DocumentModelGridRemoval::setStartX
void setStartX(double startX)
Set method for x start.
Definition: DocumentModelGridRemoval.cpp:289
DOCUMENT_SERIALIZE_COORD_SYSTEM
const QString DOCUMENT_SERIALIZE_COORD_SYSTEM
DOCUMENT_SERIALIZE_POINT_MATCH
const QString DOCUMENT_SERIALIZE_POINT_MATCH
DOCUMENT_SERIALIZE_EXPORT
const QString DOCUMENT_SERIALIZE_EXPORT
DocumentModelExportFormat::setDelimiter
void setDelimiter(ExportDelimiter exportDelimiter)
Set method for delimiter.
Definition: DocumentModelExportFormat.cpp:342
CallbackCheckAddPointAxis::errorMessage
QString errorMessage() const
Error message that explains the problem indicated by isError.
Definition: CallbackCheckAddPointAxis.cpp:37
CurvesGraphs.h
Point.h
CurvesGraphs::iterateThroughCurvesPoints
void iterateThroughCurvesPoints(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
Apply functor to Points on all of the Curves.
Definition: CurvesGraphs.cpp:152
DocumentModelCoords::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelCoords.cpp:129
CoordSystem::loadVersions7AndUp
void loadVersions7AndUp(QXmlStreamReader &reader)
Load from file in versions 7 and 8 formats. Number of axes points is already defined at Document leve...
Definition: CoordSystem.cpp:622
DocumentModelGridDisplay::stepX
double stepX() const
Get method for x grid line increment.
Definition: DocumentModelGridDisplay.cpp:282
DocumentModelGridDisplay::countY
unsigned int countY() const
Get method for y grid line count.
Definition: DocumentModelGridDisplay.cpp:90
DOCUMENT_SERIALIZE_GRID_REMOVAL
const QString DOCUMENT_SERIALIZE_GRID_REMOVAL
CurveStyles::curveStyle
CurveStyle curveStyle(const QString &curveName) const
CurveStyle in specified curve.
Definition: CurveStyles.cpp:78
DocumentModelDigitizeCurve::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelDigitizeCurve.cpp:111
CallbackNextOrdinal.h
CallbackRemovePointsInCurvesGraphs::callback
CallbackSearchReturn callback(const QString &curveName, const Point &point)
Callback method.
Definition: CallbackRemovePointsInCurvesGraphs.cpp:17
AXIS_CURVE_NAME
const QString AXIS_CURVE_NAME
CoordSystem::editPointAxis
virtual void editPointAxis(const QPointF &posGraph, const QString &identifier)
Edit the graph coordinates of a single axis point. Call this after checkAddPointAxis to guarantee suc...
Definition: CoordSystem.cpp:277
CurvesGraphs::iterateThroughCurveSegments
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.
Definition: CurvesGraphs.cpp:134
DocumentModelAxesChecker::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelAxesChecker.cpp:111
DocumentModelAxesChecker::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelAxesChecker.cpp:67
CoordSystem::updatePointOrdinals
virtual void updatePointOrdinals(const Transformation &transformation)
Update point ordinals after point addition/removal or dragging.
Definition: CoordSystem.cpp:998
DocumentModelCoords::setCoordScaleXTheta
void setCoordScaleXTheta(CoordScale coordScale)
Set method for linear/log scale on x/theta.
Definition: DocumentModelCoords.cpp:226
DOCUMENT_SERIALIZE_CURVE
const QString DOCUMENT_SERIALIZE_CURVE
DocumentModelGridRemoval::setRemoveDefinedGridLines
void setRemoveDefinedGridLines(bool removeDefinedGridLines)
Set method for removing defined grid lines.
Definition: DocumentModelGridRemoval.cpp:274
CallbackAddPointsInCurvesGraphs
Callback that is used when iterating through a read-only CurvesGraphs to add corresponding points in ...
Definition: CallbackAddPointsInCurvesGraphs.h:16
CoordSystem::setSelectedCurveName
virtual void setSelectedCurveName(const QString &selectedCurveName)
Save curve name that is selected for the current coordinate system, for the next time the coordinate ...
Definition: CoordSystem.cpp:988
DocumentModelGeneral::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelGeneral.cpp:65
CallbackCheckAddPointAxis::isError
bool isError() const
True if an error occurred during iteration.
Definition: CallbackCheckAddPointAxis.cpp:32
DocumentModelSegments::setLineColor
void setLineColor(ColorPalette lineColor)
Set method for line color.
Definition: DocumentModelSegments.cpp:139
Curve::setColorFilterSettings
void setColorFilterSettings(const ColorFilterSettings &colorFilterSettings)
Set color filter.
Definition: Curve.cpp:546
CallbackRemovePointsInCurvesGraphs.h
DocumentModelGridDisplay::setStepY
void setStepY(double yStep)
Set method for y grid line increment.
Definition: DocumentModelGridDisplay.cpp:252
CoordSystem::CoordSystem
CoordSystem()
Single constructor.
Definition: CoordSystem.cpp:39
Curve::setCurveStyle
void setCurveStyle(const CurveStyle &curveStyle)
Set curve style.
Definition: Curve.cpp:563
PointStyle::defaultGraphCurve
static PointStyle defaultGraphCurve(int index)
Initial default for index'th graph curve.
Definition: PointStyle.cpp:88
Curve::removePoint
void removePoint(const QString &identifier)
Perform the opposite of addPointAtEnd.
Definition: Curve.cpp:510
DocumentModelGridRemoval::setStartY
void setStartY(double startY)
Set method for y start.
Definition: DocumentModelGridRemoval.cpp:294
SettingsForGraph
Manage storage and retrieval of the settings for the curves.
Definition: SettingsForGraph.h:12
SettingsForGraph::defaultCurveName
QString defaultCurveName(int indexOneBased, const QString &defaultName) const
Default graph name for the specified curve index.
Definition: SettingsForGraph.cpp:16
DocumentModelGridDisplay
Model for DlgSettingsGridDisplay and CmdSettingsGridDisplay.
Definition: DocumentModelGridDisplay.h:17
CurvesGraphs::editPointGraph
void editPointGraph(bool isX, bool isY, double x, double y, const QStringList &identifiers, const Transformation &transformation)
Set the x and/or y coordinate values of the specified points.
Definition: CurvesGraphs.cpp:96
CallbackCheckAddPointAxis.h
DocumentAxesPointsRequired
DocumentAxesPointsRequired
Definition: DocumentAxesPointsRequired.h:9
CallbackCheckEditPointAxis::errorMessage
QString errorMessage() const
Error message that explains the problem indicated by isError.
Definition: CallbackCheckEditPointAxis.cpp:28
DocumentModelCoords::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelCoords.cpp:180
CoordSystem::modelSegments
virtual DocumentModelSegments modelSegments() const
Get method for DocumentModelSegments.
Definition: CoordSystem.cpp:735
DOCUMENT_SERIALIZE_GRID_DISPLAY
const QString DOCUMENT_SERIALIZE_GRID_DISPLAY
CoordSystem::setModelSegments
virtual void setModelSegments(const DocumentModelSegments &modelSegments)
Set method for DocumentModelSegments.
Definition: CoordSystem.cpp:983
DocumentModelGeneral::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelGeneral.cpp:96
DocumentModelDigitizeCurve::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelDigitizeCurve.cpp:124
DOCUMENT_SERIALIZE_AXES_CHECKER
const QString DOCUMENT_SERIALIZE_AXES_CHECKER
DocumentModelPointMatch::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelPointMatch.cpp:110
DocumentModelGridDisplay::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelGridDisplay.cpp:105
CurvesGraphs::loadXml
void loadXml(QXmlStreamReader &reader)
Load from serialized xml post-version 5 file.
Definition: CurvesGraphs.cpp:197
CoordSystem::iterateThroughCurveSegments
virtual void iterateThroughCurveSegments(const QString &curveName, const Functor2wRet< const Point &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
See Curve::iterateThroughCurveSegments, for any axes or graph curve.
Definition: CoordSystem.cpp:355
DocumentModelGridDisplay::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelGridDisplay.cpp:163
Transformation
Affine transformation between screen and graph coordinates, based on digitized axis points.
Definition: Transformation.h:30
EngaugeAssert.h
COORDS_TYPE_POLAR
Definition: CoordsType.h:16
CoordSystem::modelAxesChecker
virtual DocumentModelAxesChecker modelAxesChecker() const
Get method for DocumentModelAxesChecker.
Definition: CoordSystem.cpp:679
Curve::positionScreen
QPointF positionScreen(const QString &pointIdentifier) const
Return the position, in screen coordinates, of the specified Point.
Definition: Curve.cpp:473
DocumentModelExportFormat::setXLabel
void setXLabel(const QString &xLabel)
Set method for x label.
Definition: DocumentModelExportFormat.cpp:397
DocumentModelDigitizeCurve::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelDigitizeCurve.cpp:74
DocumentModelExportFormat::setPointsSelectionRelations
void setPointsSelectionRelations(ExportPointsSelectionRelations exportPointsSelectionRelations)
Set method for point selection for relations.
Definition: DocumentModelExportFormat.cpp:392
DocumentModelCoords::setCoordScaleYRadius
void setCoordScaleYRadius(CoordScale coordScale)
Set method for linear/log scale on y/radius.
Definition: DocumentModelCoords.cpp:231
DOCUMENT_AXES_POINTS_REQUIRED_2
Definition: DocumentAxesPointsRequired.h:15
CurveStyles::curveNames
QStringList curveNames() const
List of all curve names.
Definition: CurveStyles.cpp:66
DocumentModelGridDisplay::setStable
void setStable(bool stable)
Set method for stable flag.
Definition: DocumentModelGridDisplay.cpp:232
DOCUMENT_SERIALIZE_DOCUMENT
const QString DOCUMENT_SERIALIZE_DOCUMENT
DocumentModelCoords::setOriginRadius
void setOriginRadius(double originRadius)
Set method for origin radius in polar mode.
Definition: DocumentModelCoords.cpp:271
DocumentSerialize.h
DocumentModelGridDisplay::setStartX
void setStartX(double startX)
Set method for x grid line lower bound (inclusive).
Definition: DocumentModelGridDisplay.cpp:237
CoordSystem::setCurvesGraphs
virtual void setCurvesGraphs(const CurvesGraphs &curvesGraphs)
Let CmdAbstract classes overwrite CurvesGraphs. Applies to current coordinate system.
Definition: CoordSystem.cpp:903
ColorFilterSettings
Color filter parameters for one curve. For a class, this is handled the same as LineStyle and PointSt...
Definition: ColorFilterSettings.h:18
CurveStyles.h
CoordSystem::loadVersion6
void loadVersion6(QXmlStreamReader &reader, DocumentAxesPointsRequired &documentAxesPointsRequired)
Load from file in version 6 format. Number of axes points is read in and passed to Document.
Definition: CoordSystem.cpp:561
Curve
Container for one set of digitized Points.
Definition: Curve.h:32
COLOR_PALETTE_BLUE
Definition: ColorPalette.h:16
DOCUMENT_SERIALIZE_COMMON
const QString DOCUMENT_SERIALIZE_COMMON
CoordSystem::curvesGraphs
virtual const CurvesGraphs & curvesGraphs() const
Make all Curves available, read only, for CmdAbstract classes only.
Definition: CoordSystem.cpp:262
DocumentModelGridDisplay::setStepX
void setStepX(double stepX)
Set method for x grid line increment.
Definition: DocumentModelGridDisplay.cpp:247
DocumentModelSegments::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelSegments.cpp:73
DocumentModelColorFilter
Model for DlgSettingsColorFilter and CmdSettingsColorFilter.
Definition: DocumentModelColorFilter.h:20
DocumentModelExportFormat::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelExportFormat.cpp:263
CoordSystem::setModelGridDisplay
virtual void setModelGridDisplay(const DocumentModelGridDisplay &modelGridDisplay)
Set method for DocumentModelGridDisplay.
Definition: CoordSystem.cpp:968
DocumentModelGridRemoval::setStable
void setStable()
Set the stable flag to true. This public version has no argument since it cannot be undone.
Definition: DocumentModelGridRemoval.cpp:279
CoordSystem::printStream
virtual void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: CoordSystem.cpp:793
CurvesGraphs::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: CurvesGraphs.cpp:246
CallbackRemovePointsInCurvesGraphs
Callback that is used when iterating through a read-only CurvesGraphs to remove corresponding points ...
Definition: CallbackRemovePointsInCurvesGraphs.h:16
DocumentModelGridRemoval::setCloseDistance
void setCloseDistance(double closeDistance)
Set method for close distance.
Definition: DocumentModelGridRemoval.cpp:249
Version.h
DocumentModelPointMatch::setMaxPointSize
void setMaxPointSize(double maxPointSize)
Set method for max point size.
Definition: DocumentModelPointMatch.cpp:139
CurvesGraphs::removePoint
void removePoint(const QString &pointIdentifier)
Remove the Point from its Curve.
Definition: CurvesGraphs.cpp:262
DocumentModelCoords::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelCoords.cpp:199
DocumentModelGridDisplay::setDisableX
void setDisableX(GridCoordDisable disableX)
Set method for x grid line disabled variable.
Definition: DocumentModelGridDisplay.cpp:217
SettingsForGraph.h
CoordSystem::setModelPointMatch
void setModelPointMatch(const DocumentModelPointMatch &modelPointMatch)
Set method for DocumentModelPointMatch.
Definition: CoordSystem.cpp:978
Curve::editPointAxis
void editPointAxis(const QPointF &posGraph, const QString &identifier)
Edit the graph coordinates of an axis point. This method does not apply to a graph point.
Definition: Curve.cpp:154
CoordSystem::setModelExport
virtual void setModelExport(const DocumentModelExportFormat &modelExport)
Set method for DocumentModelExportFormat.
Definition: CoordSystem.cpp:958
DocumentModelGridRemoval::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelGridRemoval.cpp:194
CurveStyle
Container for LineStyle and PointStyle for one Curve.
Definition: CurveStyle.h:17
DocumentModelExportFormat::setPointsIntervalUnitsFunctions
void setPointsIntervalUnitsFunctions(ExportPointsIntervalUnits pointsIntervalUnitsFunctions)
Set method for points interval units for functions.
Definition: DocumentModelExportFormat.cpp:377
Transformation.h
DocumentModelExportFormat::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelExportFormat.cpp:139
DocumentModelGridRemoval::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: DocumentModelGridRemoval.cpp:138
DEFAULT_GRAPH_CURVE_NAME
const QString DEFAULT_GRAPH_CURVE_NAME
Curve::setCurveName
void setCurveName(const QString &curveName)
Change the curve name.
Definition: Curve.cpp:551
DocumentModelGeneral
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Definition: DocumentModelGeneral.h:15
COORD_UNITS_NON_POLAR_THETA_NUMBER
Definition: CoordUnitsNonPolarTheta.h:17
ENGAUGE_CHECK_PTR
#define ENGAUGE_CHECK_PTR(ptr)
#endif
Definition: EngaugeAssert.h:26
CoordSystem::modelPointMatch
virtual DocumentModelPointMatch modelPointMatch() const
Get method for DocumentModelPointMatch.
Definition: CoordSystem.cpp:730
CallbackNextOrdinal::nextOrdinal
double nextOrdinal() const
Computed next ordinal.
Definition: CallbackNextOrdinal.cpp:30
DocumentModelSegments::setMinLength
void setMinLength(double minLength)
Set method for min length.
Definition: DocumentModelSegments.cpp:149
Logger.h
Curve::movePoint
void movePoint(const QString &pointIdentifier, const QPointF &deltaScreen)
Translate the position of a point by the specified distance vector.
Definition: Curve.cpp:423
LineStyle
Details for a specific Line.
Definition: LineStyle.h:18
DocumentModelGridDisplay::stopY
double stopY() const
Get method for y grid line upper bound (inclusive).
Definition: DocumentModelGridDisplay.cpp:297
DocumentModelGridDisplay::setStartY
void setStartY(double yStart)
Set method for y grid line lower bound (inclusive).
Definition: DocumentModelGridDisplay.cpp:242
CoordSystem::editPointGraph
virtual void editPointGraph(bool isX, bool isY, double x, double y, const QStringList &identifiers, const Transformation &transformation)
Edit the graph coordinates of one or more graph points.
Definition: CoordSystem.cpp:288
CallbackNextOrdinal::callback
CallbackSearchReturn callback(const QString &curveName, const Point &point)
Callback method.
Definition: CallbackNextOrdinal.cpp:18
CoordSystem::addPointsInCurvesGraphs
virtual void addPointsInCurvesGraphs(CurvesGraphs &curvesGraphs)
Add all points identified in the specified CurvesGraphs. See also removePointsInCurvesGraphs.
Definition: CoordSystem.cpp:156
DocumentModelCoords::setCoordUnitsTheta
void setCoordUnitsTheta(CoordUnitsPolarTheta coordUnits)
Set method for theta units.
Definition: DocumentModelCoords.cpp:251
COORDS_TYPE_CARTESIAN
Definition: CoordsType.h:15
ColorFilterSettings::defaultFilter
static ColorFilterSettings defaultFilter()
Initial default for any Curve.
Definition: ColorFilterSettings.cpp:128
CoordSystem::curvesGraphsNames
virtual QStringList curvesGraphsNames() const
See CurvesGraphs::curvesGraphsNames.
Definition: CoordSystem.cpp:267
DOCUMENT_SERIALIZE_IMAGE
const QString DOCUMENT_SERIALIZE_IMAGE
CoordSystem::modelExport
virtual DocumentModelExportFormat modelExport() const
Get method for DocumentModelExportFormat.
Definition: CoordSystem.cpp:710
Curve::numPoints
int numPoints() const
Number of points.
Definition: Curve.cpp:432
Curve::iterateThroughCurveSegments
void iterateThroughCurveSegments(const Functor2wRet< const Point &, const Point &, CallbackSearchReturn > &ftorWithCallback) const
Apply functor to successive Points, as line segments, on Curve. This could be a bit slow.
Definition: Curve.cpp:316
CoordSystem::curveForCurveName
virtual Curve * curveForCurveName(const QString &curveName)
See CurvesGraphs::curveForCurveName, although this also works for AXIS_CURVE_NAME.
Definition: CoordSystem.cpp:236
LOG4CPP_INFO_S
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
CurvesGraphs::curvesGraphsNames
QStringList curvesGraphsNames() const
List of graph curve names.
Definition: CurvesGraphs.cpp:67
Curve::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: Curve.cpp:490
CoordSystem::removePointAxis
virtual void removePointAxis(const QString &identifier)
Perform the opposite of addPointAxis.
Definition: CoordSystem.cpp:835
DocumentModelGridDisplay::stepY
double stepY() const
Get method for y grid line increment.
Definition: DocumentModelGridDisplay.cpp:287
CoordSystem::positionScreen
virtual QPointF positionScreen(const QString &pointIdentifier) const
See Curve::positionScreen.
Definition: CoordSystem.cpp:775
DocumentModelGridDisplay::startX
double startX() const
Get method for x grid line lower bound (inclusive).
Definition: DocumentModelGridDisplay.cpp:272
CoordSystem::isXOnly
bool isXOnly(const QString &pointIdentifier) const
Return true if y coordinate is undefined, otherwise x coordinae is undefined in DOCUMENT_AXES_POINT_R...
Definition: CoordSystem.cpp:336
DocumentModelPointMatch::setPaletteColorCandidate
void setPaletteColorCandidate(ColorPalette paletteColorCandidate)
Set method for candidate color.
Definition: DocumentModelPointMatch.cpp:149
CoordSystem::print
virtual void print() const
Debugging method for printing directly from symbolic debugger.
Definition: CoordSystem.cpp:783
Curve::addPoint
void addPoint(const Point &point)
Add Point to this Curve.
Definition: Curve.cpp:134
DOCUMENT_SERIALIZE_GENERAL
const QString DOCUMENT_SERIALIZE_GENERAL
DocumentModelGridRemoval::setStepY
void setStepY(double stepY)
Set method for y step.
Definition: DocumentModelGridRemoval.cpp:304
CoordSystem::setModelCurveStyles
virtual void setModelCurveStyles(const CurveStyles &modelCurveStyles)
Set method for CurveStyles.
Definition: CoordSystem.cpp:938
CoordSystem::movePoint
virtual void movePoint(const QString &pointIdentifier, const QPointF &deltaScreen)
See Curve::movePoint.
Definition: CoordSystem.cpp:740
CurvesGraphs::curvesGraphsNumPoints
int curvesGraphsNumPoints(const QString &curveName) const
Point count.
Definition: CurvesGraphs.cpp:81
CoordSystem::modelDigitizeCurve
virtual DocumentModelDigitizeCurve modelDigitizeCurve() const
Get method for DocumentModelDigitizeCurve.
Definition: CoordSystem.cpp:705
CoordSystem::nextOrdinalForCurve
virtual int nextOrdinalForCurve(const QString &curveName) const
Default next ordinal value for specified curve.
Definition: CoordSystem.cpp:751
CoordSystem::modelCoords
virtual DocumentModelCoords modelCoords() const
Get method for DocumentModelCoords.
Definition: CoordSystem.cpp:692
CoordSystem::modelCurveStyles
virtual CurveStyles modelCurveStyles() const
Get method for CurveStyles.
Definition: CoordSystem.cpp:697
DocumentModelExportFormat
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
Definition: DocumentModelExportFormat.h:22
DocumentModelCoords::setCoordUnitsRadius
void setCoordUnitsRadius(CoordUnitsNonPolarTheta coordUnits)
Set method for radius units.
Definition: DocumentModelCoords.cpp:246
DocumentModelGridDisplay::setStopX
void setStopX(double stopX)
Set method for x grid line upper bound (inclusive).
Definition: DocumentModelGridDisplay.cpp:257
DocumentModelGridRemoval::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelGridRemoval.cpp:221
Point::identifier
QString identifier() const
Unique identifier for a specific Point.
Definition: Point.cpp:268
DocumentModelSegments
Model for DlgSettingsSegments and CmdSettingsSegments.
Definition: DocumentModelSegments.h:16
CoordSystem::setModelGridRemoval
virtual void setModelGridRemoval(const DocumentModelGridRemoval &modelGridRemoval)
Set method for DocumentModelGridRemoval.
Definition: CoordSystem.cpp:973
CoordSystem::curveAxes
virtual const Curve & curveAxes() const
Get method for axis curve.
Definition: CoordSystem.cpp:229
CurvesGraphs::loadPreVersion6
void loadPreVersion6(QDataStream &str)
Load from serialized binary pre-version 6 file.
Definition: CurvesGraphs.cpp:172
CurvesGraphs::addPoint
void addPoint(const Point &point)
Append new Point to the specified Curve.
Definition: CurvesGraphs.cpp:29
CurvesGraphs
Container for all graph curves. The axes point curve is external to this class.
Definition: CurvesGraphs.h:23
CallbackCheckEditPointAxis::isError
bool isError() const
True if an error occurred during iteration.
Definition: CallbackCheckEditPointAxis.cpp:23
DocumentModelGridRemoval::countY
int countY() const
Get method for y count.
Definition: DocumentModelGridRemoval.cpp:123
CoordSystem::setCurveAxes
virtual void setCurveAxes(const Curve &curveAxes)
Let CmdAbstract classes overwrite axes Curve. Applies to current coordinate system.
Definition: CoordSystem.cpp:894
DocumentModelCoords::setCoordsType
void setCoordsType(CoordsType coordsType)
Set method for coordinates type.
Definition: DocumentModelCoords.cpp:236
FOUR_BYTES
const int FOUR_BYTES
Definition: CoordSystem.cpp:37
CoordSystem::addPointAxisWithSpecifiedIdentifier
virtual void addPointAxisWithSpecifiedIdentifier(const QPointF &posScreen, const QPointF &posGraph, const QString &identifier, double ordinal, bool isXOnly)
Add a single axis point with the specified point identifier.
Definition: CoordSystem.cpp:100
mainCat
log4cpp::Category * mainCat
Definition: Logger.cpp:14
CoordSystem::addPointGraphWithGeneratedIdentifier
virtual void addPointGraphWithGeneratedIdentifier(const QString &curveName, const QPointF &posScreen, QString &generatedIentifier, double ordinal)
Add a single graph point with a generated point identifier.
Definition: CoordSystem.cpp:121
CoordSystem::iterateThroughCurvePointsAxes
virtual void iterateThroughCurvePointsAxes(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for the axes curve.
Definition: CoordSystem.cpp:341
DocumentModelExportFormat::setPointsSelectionFunctions
void setPointsSelectionFunctions(ExportPointsSelectionFunctions exportPointsSelectionFunctions)
Set method for point selection for functions.
Definition: DocumentModelExportFormat.cpp:387
CoordSystem::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save graph to xml.
Definition: CoordSystem.cpp:870
CoordSystem::setModelColorFilter
virtual void setModelColorFilter(const DocumentModelColorFilter &modelColorFilter)
Set method for DocumentModelColorFilter.
Definition: CoordSystem.cpp:917
CoordSystem::setModelCoords
virtual void setModelCoords(const DocumentModelCoords &modelCoords)
Set method for DocumentModelCoords.
Definition: CoordSystem.cpp:933
CoordSystem::setModelGeneral
virtual void setModelGeneral(const DocumentModelGeneral &modelGeneral)
Set method for DocumentModelGeneral.
Definition: CoordSystem.cpp:963
DocumentModelSegments::setLineWidth
void setLineWidth(double lineWidth)
Set method for line width.
Definition: DocumentModelSegments.cpp:144
DocumentModelDigitizeCurve
Model for DlgSettingsDigitizeCurve and CmdSettingsDigitizeCurve.
Definition: DocumentModelDigitizeCurve.h:17
DocumentModelExportFormat::setHeader
void setHeader(ExportHeader exportHeader)
Set method for header.
Definition: DocumentModelExportFormat.cpp:352
DocumentModelExportFormat::setLayoutFunctions
void setLayoutFunctions(ExportLayoutFunctions exportLayoutFunctions)
Set method for functions layout.
Definition: DocumentModelExportFormat.cpp:357
CoordSystem::removePointGraph
virtual void removePointGraph(const QString &identifier)
Perform the opposite of addPointGraph.
Definition: CoordSystem.cpp:842
DocumentModelPointMatch
Model for DlgSettingsPointMatch and CmdSettingsPointMatch.
Definition: DocumentModelPointMatch.h:16
PointStyle
Details for a specific Point.
Definition: PointStyle.h:19
CoordSystem::selectedCurveName
virtual QString selectedCurveName() const
Currently selected curve name. This is used to set the selected curve combobox in MainWindow.
Definition: CoordSystem.cpp:889
DocumentModelGridRemoval::setStepX
void setStepX(double stepX)
Set method for x step.
Definition: DocumentModelGridRemoval.cpp:299
Curve::isXOnly
bool isXOnly(const QString &pointIdentifier) const
Determine if specified point has just x coordinate. Otherwise has just y coordinate,...
Definition: Curve.cpp:285
DocumentModelSegments::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelSegments.cpp:104
DOCUMENT_SERIALIZE_COORDS
const QString DOCUMENT_SERIALIZE_COORDS
DocumentModelGridDisplay::stopX
double stopX() const
Get method for x grid line upper bound (inclusive).
Definition: DocumentModelGridDisplay.cpp:292
DocumentModelAxesChecker
Model for DlgSettingsAxesChecker and CmdSettingsAxesChecker.
Definition: DocumentModelAxesChecker.h:17
DocumentModelGridDisplay::setStopY
void setStopY(double yStop)
Set method for y grid line upper bound (inclusive).
Definition: DocumentModelGridDisplay.cpp:262
CallbackCheckEditPointAxis.h
CurvesGraphs::curveForCurveName
Curve * curveForCurveName(const QString &curveName)
Return the axis or graph curve for the specified curve name.
Definition: CurvesGraphs.cpp:37
CoordSystem::~CoordSystem
~CoordSystem()
Definition: CoordSystem.cpp:63
INDENTATION_DELTA
const QString INDENTATION_DELTA
Curve.h
Point
Class that represents one digitized point. The screen-to-graph coordinate transformation is always ex...
Definition: Point.h:24
CurvesGraphs::numCurves
int numCurves() const
Current number of graphs curves.
Definition: CurvesGraphs.cpp:241
CallbackAddPointsInCurvesGraphs.h
CoordSystem::removePointsInCurvesGraphs
virtual void removePointsInCurvesGraphs(CurvesGraphs &curvesGraphs)
Remove all points identified in the specified CurvesGraphs. See also addPointsInCurvesGraphs.
Definition: CoordSystem.cpp:849
DOCUMENT_SERIALIZE_CURVES_GRAPHS
const QString DOCUMENT_SERIALIZE_CURVES_GRAPHS
CurvesGraphs::updatePointOrdinals
void updatePointOrdinals(const Transformation &transformation)
Update point ordinals to be consistent with their CurveStyle and x/theta coordinate.
Definition: CurvesGraphs.cpp:286
DOCUMENT_AXES_POINTS_REQUIRED_3
Definition: DocumentAxesPointsRequired.h:13
CoordSystem::positionGraph
virtual QPointF positionGraph(const QString &pointIdentifier) const
See Curve::positionGraph.
Definition: CoordSystem.cpp:767
EnumsToQt.h
CurvesGraphs::addGraphCurveAtEnd
void addGraphCurveAtEnd(const Curve &curve)
Append new graph Curve to end of Curve list.
Definition: CurvesGraphs.cpp:24
Curve::positionGraph
QPointF positionGraph(const QString &pointIdentifier) const
Return the position, in graph coordinates, of the specified Point.
Definition: Curve.cpp:456
CoordSystem::modelColorFilter
virtual DocumentModelColorFilter modelColorFilter() const
Get method for DocumentModelColorFilter.
Definition: CoordSystem.cpp:684
DocumentModelSegments::setPointSeparation
void setPointSeparation(double pointSeparation)
Set method for point separation.
Definition: DocumentModelSegments.cpp:154
DocumentModelGridDisplay::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelGridDisplay.cpp:184
CoordSystem::checkEditPointAxis
virtual void checkEditPointAxis(const QString &pointIdentifier, const QPointF &posScreen, const QPointF &posGraph, bool &isError, QString &errorMessage, DocumentAxesPointsRequired documentAxesPointsRequired)
Check before calling editPointAxis.
Definition: CoordSystem.cpp:205
CoordSystem::setModelDigitizeCurve
virtual void setModelDigitizeCurve(const DocumentModelDigitizeCurve &modelDigitizeCurve)
Set method for DocumentModelDigitizeCurve.
Definition: CoordSystem.cpp:953
DocumentModelGridRemoval::setCountX
void setCountX(int countX)
Set method for x count.
Definition: DocumentModelGridRemoval.cpp:254
DocumentModelGridRemoval
Model for DlgSettingsGridRemoval and CmdSettingsGridRemoval. The settings are unstable until the user...
Definition: DocumentModelGridRemoval.h:16
DocumentModelGridRemoval::setCountY
void setCountY(int countY)
Set method for y count.
Definition: DocumentModelGridRemoval.cpp:259
QtToString.h
CallbackCheckEditPointAxis
Callback for sanity checking the screen and graph coordinates of an axis point that is in the axes cu...
Definition: CallbackCheckEditPointAxis.h:17
DocumentModelGridDisplay::setDisableY
void setDisableY(GridCoordDisable disableY)
Set method for y grid line disabled variable.
Definition: DocumentModelGridDisplay.cpp:222
CurveStyles
Model for DlgSettingsCurveProperties and CmdSettingsCurveProperties.
Definition: CurveStyles.h:21
DocumentModelGridRemoval::setStopX
void setStopX(double stopX)
Set method for x stop.
Definition: DocumentModelGridRemoval.cpp:309
CallbackAxisPointsAbstract::callback
CallbackSearchReturn callback(const QString &curveName, const Point &point)
Callback method.
Definition: CallbackAxisPointsAbstract.cpp:78
CoordSystem.h
DocumentModelGridDisplay::startY
double startY() const
Get method for y grid line lower bound (inclusive).
Definition: DocumentModelGridDisplay.cpp:277
DocumentModelCoords
Model for DlgSettingsCoords and CmdSettingsCoords.
Definition: DocumentModelCoords.h:19
DOCUMENT_SERIALIZE_SEGMENTS
const QString DOCUMENT_SERIALIZE_SEGMENTS
DOCUMENT_SERIALIZE_DIGITIZE_CURVE
const QString DOCUMENT_SERIALIZE_DIGITIZE_CURVE
CoordSystem::modelGridRemoval
virtual DocumentModelGridRemoval modelGridRemoval() const
Get method for DocumentModelGridRemoval.
Definition: CoordSystem.cpp:725
DocumentModelCoords::coordsType
CoordsType coordsType() const
Get method for coordinates type.
Definition: DocumentModelCoords.cpp:94
DocumentModelExportFormat::setPointsIntervalUnitsRelations
void setPointsIntervalUnitsRelations(ExportPointsIntervalUnits pointsIntervalUnitsRelations)
Set method for points interval units for relations.
Definition: DocumentModelExportFormat.cpp:382
QPointFToString
QString QPointFToString(const QPointF &pos)
Definition: QtToString.cpp:17
CoordSystem::loadCurvesFile
virtual bool loadCurvesFile(const QString &curvesFile)
Load the curve names in the specified Engauge file into the current graph. This is called near the en...
Definition: CoordSystem.cpp:380
DocumentModelGridRemoval::setGridCoordDisableY
void setGridCoordDisableY(GridCoordDisable gridCoordDisable)
Set method for y coord parameter to disable.
Definition: DocumentModelGridRemoval.cpp:269
DocumentModelGridRemoval::setStopY
void setStopY(double stopY)
Set method for y stop.
Definition: DocumentModelGridRemoval.cpp:314
DocumentModelSegments::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelSegments.cpp:118
CoordSystem::addPointAxisWithGeneratedIdentifier
virtual void addPointAxisWithGeneratedIdentifier(const QPointF &posScreen, const QPointF &posGraph, QString &identifier, double ordinal, bool isXOnly)
Add a single axis point with a generated point identifier.
Definition: CoordSystem.cpp:78
DocumentModelGridDisplay::setCountX
void setCountX(unsigned int countX)
Set method for x grid line count.
Definition: DocumentModelGridDisplay.cpp:207
loadNextFromReader
QXmlStreamReader::TokenType loadNextFromReader(QXmlStreamReader &reader)
Load next token from xml reader.
Definition: Xml.cpp:14
DocumentModelColorFilter::colorFilterSettingsList
const ColorFilterSettingsList & colorFilterSettingsList() const
Get method for copying all color filters in one step.
Definition: DocumentModelColorFilter.cpp:77
DocumentModelGridDisplay::setCountY
void setCountY(unsigned int countY)
Set method for y grid line count.
Definition: DocumentModelGridDisplay.cpp:212
ENGAUGE_ASSERT
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) define ENGAUGE...
Definition: EngaugeAssert.h:19
CoordSystem::loadPreVersion6
void loadPreVersion6(QDataStream &str, double version, DocumentAxesPointsRequired &documentAxesPointsRequired)
Load from file in pre-version 6 format. Number of axes points is read in and passed to Document.
Definition: CoordSystem.cpp:387
CallbackAddPointsInCurvesGraphs::callback
CallbackSearchReturn callback(const QString &curveName, const Point &point)
Callback method.
Definition: CallbackAddPointsInCurvesGraphs.cpp:17
CoordSystem::reasonForUnsuccessfulRead
virtual QString reasonForUnsuccessfulRead() const
Return an informative text message explaining why startup loading failed. Applies if successfulRead r...
Definition: CoordSystem.cpp:828
CoordSystem::setModelAxesChecker
virtual void setModelAxesChecker(const DocumentModelAxesChecker &modelAxesChecker)
Set method for DocumentModelAxesChecker.
Definition: CoordSystem.cpp:912
CoordSystem::iterateThroughCurvesPointsGraphs
virtual void iterateThroughCurvesPointsGraphs(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for all the graphs curves.
Definition: CoordSystem.cpp:366
DocumentModelPointMatch::setPaletteColorAccepted
void setPaletteColorAccepted(ColorPalette paletteColorAccepted)
Set method for accepted color.
Definition: DocumentModelPointMatch.cpp:144
SettingsForGraph::numberOfCurvesForImport
int numberOfCurvesForImport() const
Return the number of curve names to be generated. Value is maximum of 1 and the number in the configu...
Definition: SettingsForGraph.cpp:43
CallbackCheckAddPointAxis
Callback for sanity checking the screen and graph coordinates of an axis point, before it is added to...
Definition: CallbackCheckAddPointAxis.h:17
DocumentModelAxesChecker::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: DocumentModelAxesChecker.cpp:99
DocumentModelGridDisplay::countX
unsigned int countX() const
Get method for x grid line count.
Definition: DocumentModelGridDisplay.cpp:85
CoordSystem::curvesGraphsNumPoints
virtual int curvesGraphsNumPoints(const QString &curveName) const
See CurvesGraphs::curvesGraphsNumPoints.
Definition: CoordSystem.cpp:272
CoordSystem::successfulRead
virtual bool successfulRead() const
Return true if startup loading succeeded. If the loading failed then reasonForUnsuccessfulRed will ex...
Definition: CoordSystem.cpp:993
EXPORT_POINTS_SELECTION_RELATIONS_RAW
Definition: ExportPointsSelectionRelations.h:16
CoordSystem::addGraphCurveAtEnd
virtual void addGraphCurveAtEnd(const QString &curveName)
Add new graph curve to the list of existing graph curves.
Definition: CoordSystem.cpp:68
OrdinalGenerator.h
CoordSystem::checkAddPointAxis
virtual void checkAddPointAxis(const QPointF &posScreen, const QPointF &posGraph, bool &isError, QString &errorMessage, bool isXOnly, DocumentAxesPointsRequired documentAxesPointsRequired)
Check before calling addPointAxis. Also returns the next available ordinal number (to prevent clashes...
Definition: CoordSystem.cpp:180
DocumentModelPointMatch::setPaletteColorRejected
void setPaletteColorRejected(ColorPalette paletteColorRejected)
Set method for rejected color.
Definition: DocumentModelPointMatch.cpp:154
Point::curveNameFromPointIdentifier
static QString curveNameFromPointIdentifier(const QString &pointIdentifier)
Parse the curve name from the specified point identifier. This does the opposite of uniqueIdentifierG...
Definition: Point.cpp:227
DocumentModelGridRemoval::countX
int countX() const
Get method for x count.
Definition: DocumentModelGridRemoval.cpp:118
DocumentModelGridRemoval::setGridCoordDisableX
void setGridCoordDisableX(GridCoordDisable gridCoordDisable)
Set method for x coord parameter to disable.
Definition: DocumentModelGridRemoval.cpp:264
DocumentModelPointMatch::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: DocumentModelPointMatch.cpp:124
Curve::saveXml
void saveXml(QXmlStreamWriter &writer) const
Serialize curve.
Definition: Curve.cpp:523
CallbackNextOrdinal
Callback for computing the next ordinal for a new point.
Definition: CallbackNextOrdinal.h:16
CoordSystem::addPointGraphWithSpecifiedIdentifier
virtual 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...
Definition: CoordSystem.cpp:139