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 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.
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.