Engauge Digitizer  2
 All Classes Functions Variables 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 <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.
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.