Engauge Digitizer  2
ExportFileFunctions.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_FUNCTIONS_H
8 #define EXPORT_FILE_FUNCTIONS_H
9 
10 #include "ExportFileAbstractBase.h"
11 #include "ExportValuesXOrY.h"
12 #include <QStringList>
13 #include <QVector>
14 
15 class Document;
19 class MainWindowModel;
20 class QTextStream;
21 class Transformation;
22 
25 {
26  // For unit testing
27  friend class TestExport;
28 
29 public:
32 
35  void exportToFile (const DocumentModelExportFormat &modelExportOverride,
36  const Document &document,
37  const MainWindowModel &modelMainWindow,
38  const Transformation &transformation,
39  QTextStream &str,
40  unsigned int &numWritesSoFar) const;
41 
42 private:
43 
44  void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
45  const Document &document,
46  const MainWindowModel &modelMainWindow,
47  const QStringList &curvesIncluded,
48  const ExportValuesXOrY &xThetaValues,
49  const QString &delimiter,
50  const Transformation &transformation,
51  bool isLogXTheta,
52  bool isLogYRadius,
53  QTextStream &str,
54  unsigned int &numWritesSoFar) const;
55  void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
56  const Document &document,
57  const MainWindowModel &modelMainWindow,
58  const QStringList &curvesIncluded,
59  const ExportValuesXOrY &xThetaValues,
60  const QString &delimiter,
61  const Transformation &transformation,
62  bool isLogXTheta,
63  bool isLogYRadius,
64  QTextStream &str,
65  unsigned int &numWritesSoFar) const;
66 
70  void initializeYRadiusValues (const QStringList &curvesIncluded,
71  const ExportValuesXOrY &xThetaValuesMerged,
72  QVector<QVector<QString*> > &yRadiusValues) const;
73 
74  double linearlyInterpolate (const Points &points,
75  double xThetaValue,
76  const Transformation &transformation) const;
77  void loadYRadiusValues (const DocumentModelExportFormat &modelExport,
78  const Document &document,
79  const MainWindowModel &modelMainWindow,
80  const QStringList &curvesIncluded,
81  const Transformation &transformation,
82  bool isLogXTheta,
83  bool isLogYRadius,
84  const ExportValuesXOrY &xThetaValues,
85  QVector<QVector<QString*> > &yRadiusValues) const;
86  void loadYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
87  const DocumentModelGeneral &modelGeneral,
88  const MainWindowModel &modelMainWindow,
89  const Points &points,
90  const ExportValuesXOrY &xThetaValues,
91  const Transformation &transformation,
92  bool isLogXTheta,
93  bool isLogYRadius,
94  QVector<QString*> &yRadiusValues) const;
95  void loadYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
96  const DocumentModelGeneral &modelGeneral,
97  const MainWindowModel &modelMainWindow,
98  const Points &points,
99  const ExportValuesXOrY &xThetaValues,
100  const Transformation &transformation,
101  QVector<QString*> &yRadiusValues) const;
102  void loadYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
103  const DocumentModelGeneral &modelGeneral,
104  const MainWindowModel &modelMainWindow,
105  const Points &points,
106  const ExportValuesXOrY &xThetaValues,
107  const Transformation &transformation,
108  QVector<QString*> &yRadiusValues) const;
109 
111  void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
112  const DocumentModelCoords &modelCoords,
113  const DocumentModelGeneral &modelGeneral,
114  const MainWindowModel &modelMainWindow,
115  const QStringList &curvesIncluded,
116  const ExportValuesXOrY &xThetaValuesMerged,
117  const Transformation &transformation,
118  QVector<QVector<QString*> > &yRadiusValues,
119  const QString &delimiter,
120  QTextStream &str,
121  unsigned int &numWritesSoFar) const;
122  // Only include rows that have at least one y/radius entry. This check is required when outputing one curve per row
123  // since the union of all x/theta values is applied to each curve
124  bool rowHasAtLeastOneYRadiusEntry (const QVector<QVector<QString*> > &yRadiusValues,
125  int row) const;
126 };
127 
128 #endif // EXPORT_FILE_FUNCTIONS_H
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
ExportFileFunctions()
Single constructor.
Unit test of Export classes.
Definition: TestExport.h:15
Affine transformation between screen and graph coordinates, based on digitized axis points...
Model for DlgSettingsMainWindow.
Model for DlgSettingsCoords and CmdSettingsCoords.
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.
Strategy class for exporting to a file. This strategy is external to the Document class so that class...
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.