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