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 <QStringList>
14 #include <QVector>
15 
16 class Document;
20 class MainWindowModel;
21 class QTextStream;
22 class Transformation;
23 
26 {
27  // For unit testing
28  friend class TestExport;
29 
30 public:
33 
36  void exportToFile (const DocumentModelExportFormat &modelExportOverride,
37  const Document &document,
38  const MainWindowModel &modelMainWindow,
39  const Transformation &transformation,
40  QTextStream &str,
41  unsigned int &numWritesSoFar) const;
42 
43 private:
44  void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
45  const Document &document,
46  const MainWindowModel &modelMainWindow,
47  const QStringList &curvesIncluded,
48  const QString &delimiter,
49  const Transformation &transformation,
50  bool isLogXTheta,
51  bool isLogYRadius,
52  QTextStream &str,
53  unsigned int &numWritesSoFar) const;
54  void exportAllPerLineXThetaValuesMergedMultiplePass (int maxColumnSize,
55  const DocumentModelExportFormat &modelExportOverride,
56  const Document &document,
57  const MainWindowModel &modelMainWindow,
58  const QStringList &curvesIncluded,
59  const QString &delimiter,
60  const Transformation &transformation,
61  bool isLogXTheta,
62  bool isLogYRadius,
63  QTextStream &str,
64  unsigned int &numWritesSoFar) const;
65  void exportAllPerLineXThetaValuesMergedOnePass (int maxColumnSize,
66  const DocumentModelExportFormat &modelExportOverride,
67  const Document &document,
68  const MainWindowModel &modelMainWindow,
69  const QStringList &curvesIncluded,
70  const QString &delimiter,
71  const Transformation &transformation,
72  bool isLogXTheta,
73  bool isLogYRadius,
74  QTextStream &str,
75  unsigned int &numWritesSoFar) const;
76  void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
77  const Document &document,
78  const MainWindowModel &modelMainWindow,
79  const QStringList &curvesIncluded,
80  const QString &delimiter,
81  const Transformation &transformation,
82  bool isLogXTheta,
83  bool isLogYRadius,
84  QTextStream &str,
85  unsigned int &numWritesSoFar) const;
86  void initializeXThetaYRadiusValues (const QStringList &curvesIncluded,
87  QVector<QVector<QString*> > &xThetaYRadiusValues) const;
88  QPointF linearlyInterpolate (const Points &points,
89  double ordinal,
90  const Transformation &transformation) const;
91  void loadXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
92  const Document &document,
93  const MainWindowModel &modelMainWindow,
94  const QStringList &curvesIncluded,
95  const Transformation &transformation,
96  bool isLogXTheta,
97  bool isLogYRadius,
98  QVector<QVector<QString*> > &xThetaYRadiusValues) const;
99  void loadXThetaYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
100  const DocumentModelGeneral &modelGeneral,
101  const MainWindowModel &modelMainWindow,
102  const Points &points,
103  const ExportValuesOrdinal &ordinals,
104  QVector<QString*> &xThetaValues,
105  QVector<QString*> &yRadiusValues,
106  const Transformation &transformation,
107  bool isLogXTheta,
108  bool isLogYRadius) const;
109  void loadXThetaYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
110  const DocumentModelGeneral &modelGeneral,
111  const MainWindowModel &modelMainWindow,
112  const Points &points,
113  const ExportValuesOrdinal &ordinals,
114  QVector<QString*> &xThetaValues,
115  QVector<QString*> &yRadiusValues,
116  const Transformation &transformation) const;
117  void loadXThetaYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
118  const DocumentModelGeneral &modelGeneral,
119  const MainWindowModel &modelMainWindow,
120  const Points &points,
121  QVector<QString*> &xThetaValues,
122  QVector<QString*> &yRadiusValues,
123  const Transformation &transformation) const;
124  int maxColumnSizeAllocation (const DocumentModelExportFormat &modelExportOverride,
125  const Document &document,
126  const Transformation &transformation,
127  bool isLogXTheta,
128  bool isLogYRadius,
129  const QStringList &curvesIncluded) const;
130  ExportValuesOrdinal ordinalsAtIntervals (double pointsIntervalRelations,
131  ExportPointsIntervalUnits pointsIntervalUnits,
132  CurveConnectAs curveConnectAs,
133  const Transformation &transformation,
134  bool isLogXTheta,
135  bool isLogYRadius,
136  const Points &points) const;
137  ExportValuesOrdinal ordinalsAtIntervalsSmoothGraph (double pointsIntervalRelations,
138  const Transformation &transformation,
139  bool isLogXTheta,
140  bool isLogYRadius,
141  const Points &points) const;
142  ExportValuesOrdinal ordinalsAtIntervalsSmoothScreen (double pointsIntervalRelations,
143  const Points &points) const;
144  ExportValuesOrdinal ordinalsAtIntervalsStraightGraph (double pointsIntervalRelations,
145  const Transformation &transformation,
146  const Points &points) const;
147  ExportValuesOrdinal ordinalsAtIntervalsStraightScreen (double pointsIntervalRelations,
148  const Points &points) const;
149 
151  void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExport,
152  const QStringList &curvesIncluded,
153  QVector<QVector<QString*> > &xThetaYRadiusValues,
154  const QString &delimiter,
155  QTextStream &str,
156  unsigned int &numWritesSoFar) const;
157 };
158 
159 #endif // EXPORT_FILE_RELATIONS_H
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
Unit test of Export classes.
Definition: TestExport.h:15
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.