Engauge Digitizer  2
 All Classes Functions Variables Typedefs Enumerations Friends Pages
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.
Storage of one imported image and the data attached to that image.
Definition: Document.h:41
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.
Strategy base class for exporting to a file. This class provides common methods.
ExportFileRelations()
Single constructor.