Engauge Digitizer  2
ExportFileRelations.h
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #ifndef EXPORT_FILE_RELATIONS_H
8 #define EXPORT_FILE_RELATIONS_H
9 
10 #include "ExportFileAbstractBase.h"
11 #include "ExportPointsIntervalUnits.h"
12 #include "ExportValuesOrdinal.h"
13 #include "Points.h"
14 #include <QStringList>
15 #include <QVector>
16 
17 class Document;
21 class MainWindowModel;
22 class QTextStream;
23 class Transformation;
24 
27 {
28  // For unit testing
29  friend class TestExport;
30 
31 public:
34 
37  void exportToFile (const DocumentModelExportFormat &modelExportOverride,
38  const Document &document,
39  const MainWindowModel &modelMainWindow,
40  const Transformation &transformation,
41  QTextStream &str,
42  unsigned int &numWritesSoFar) const;
43 
44 private:
45  void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
46  const Document &document,
47  const MainWindowModel &modelMainWindow,
48  const QStringList &curvesIncluded,
49  const QString &delimiter,
50  const Transformation &transformation,
51  bool isLogXTheta,
52  bool isLogYRadius,
53  QTextStream &str,
54  unsigned int &numWritesSoFar) const;
55  void exportAllPerLineXThetaValuesMergedMultiplePass (int maxColumnSize,
56  const DocumentModelExportFormat &modelExportOverride,
57  const Document &document,
58  const MainWindowModel &modelMainWindow,
59  const QStringList &curvesIncluded,
60  const QString &delimiter,
61  const Transformation &transformation,
62  bool isLogXTheta,
63  bool isLogYRadius,
64  QTextStream &str,
65  unsigned int &numWritesSoFar) const;
66  void exportAllPerLineXThetaValuesMergedOnePass (int maxColumnSize,
67  const DocumentModelExportFormat &modelExportOverride,
68  const Document &document,
69  const MainWindowModel &modelMainWindow,
70  const QStringList &curvesIncluded,
71  const QString &delimiter,
72  const Transformation &transformation,
73  bool isLogXTheta,
74  bool isLogYRadius,
75  QTextStream &str,
76  unsigned int &numWritesSoFar) const;
77  void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
78  const Document &document,
79  const MainWindowModel &modelMainWindow,
80  const QStringList &curvesIncluded,
81  const QString &delimiter,
82  const Transformation &transformation,
83  bool isLogXTheta,
84  bool isLogYRadius,
85  QTextStream &str,
86  unsigned int &numWritesSoFar) const;
87  void initializeXThetaYRadiusValues (const QStringList &curvesIncluded,
88  QVector<QVector<QString*> > &xThetaYRadiusValues) const;
89  QPointF linearlyInterpolate (const Points &points,
90  double ordinal,
91  const Transformation &transformation) const;
92  void loadXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
93  const Document &document,
94  const MainWindowModel &modelMainWindow,
95  const QStringList &curvesIncluded,
96  const Transformation &transformation,
97  bool isLogXTheta,
98  bool isLogYRadius,
99  QVector<QVector<QString*> > &xThetaYRadiusValues) const;
100  void loadXThetaYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
101  const DocumentModelGeneral &modelGeneral,
102  const MainWindowModel &modelMainWindow,
103  const Points &points,
104  const ExportValuesOrdinal &ordinals,
105  QVector<QString*> &xThetaValues,
106  QVector<QString*> &yRadiusValues,
107  const Transformation &transformation,
108  bool isLogXTheta,
109  bool isLogYRadius) const;
110  void loadXThetaYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
111  const DocumentModelGeneral &modelGeneral,
112  const MainWindowModel &modelMainWindow,
113  const Points &points,
114  const ExportValuesOrdinal &ordinals,
115  QVector<QString*> &xThetaValues,
116  QVector<QString*> &yRadiusValues,
117  const Transformation &transformation) const;
118  void loadXThetaYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
119  const DocumentModelGeneral &modelGeneral,
120  const MainWindowModel &modelMainWindow,
121  const Points &points,
122  QVector<QString*> &xThetaValues,
123  QVector<QString*> &yRadiusValues,
124  const Transformation &transformation) const;
125  int maxColumnSizeAllocation (const DocumentModelExportFormat &modelExportOverride,
126  const Document &document,
127  const Transformation &transformation,
128  bool isLogXTheta,
129  bool isLogYRadius,
130  const QStringList &curvesIncluded) const;
131  ExportValuesOrdinal ordinalsAtIntervals (double pointsIntervalRelations,
132  ExportPointsIntervalUnits pointsIntervalUnits,
133  CurveConnectAs curveConnectAs,
134  const Transformation &transformation,
135  bool isLogXTheta,
136  bool isLogYRadius,
137  const Points &points) const;
138  ExportValuesOrdinal ordinalsAtIntervalsSmoothGraph (double pointsIntervalRelations,
139  const Transformation &transformation,
140  bool isLogXTheta,
141  bool isLogYRadius,
142  const Points &points) const;
143  ExportValuesOrdinal ordinalsAtIntervalsSmoothScreen (double pointsIntervalRelations,
144  const Points &points) const;
145  ExportValuesOrdinal ordinalsAtIntervalsStraightGraph (double pointsIntervalRelations,
146  const Transformation &transformation,
147  const Points &points) const;
148  ExportValuesOrdinal ordinalsAtIntervalsStraightScreen (double pointsIntervalRelations,
149  const Points &points) const;
150 
152  void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExport,
153  const QStringList &curvesIncluded,
154  QVector<QVector<QString*> > &xThetaYRadiusValues,
155  const QString &delimiter,
156  QTextStream &str,
157  unsigned int &numWritesSoFar) const;
158 };
159 
160 #endif // EXPORT_FILE_RELATIONS_H
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
Unit test of Export classes.
Definition: TestExport.h:16
Affine transformation between screen and graph coordinates, based on digitized axis points.
Strategy class for exporting to a file. This strategy is external to the Document class so that class...
Model for DlgSettingsMainWindow.
Model for DlgSettingsCoords and CmdSettingsCoords.
void exportToFile(const DocumentModelExportFormat &modelExportOverride, const Document &document, const MainWindowModel &modelMainWindow, const Transformation &transformation, QTextStream &str, unsigned int &numWritesSoFar) const
Export Document points according to the settings.
Storage of one imported image and the data attached to that image.
Definition: Document.h:41
Strategy base class for exporting to a file. This class provides common methods.
ExportFileRelations()
Single constructor.