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 public:
29 
32  void exportToFile (const DocumentModelExportFormat &modelExportOverride,
33  const Document &document,
34  const MainWindowModel &modelMainWindow,
35  const Transformation &transformation,
36  QTextStream &str) const;
37 
38 private:
39 
40  void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
41  const Document &document,
42  const MainWindowModel &modelMainWindow,
43  const QStringList &curvesIncluded,
44  const ExportValuesXOrY &xThetaValues,
45  const QString &delimiter,
46  const Transformation &transformation,
47  QTextStream &str) const;
48  void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
49  const Document &document,
50  const MainWindowModel &modelMainWindow,
51  const QStringList &curvesIncluded,
52  const ExportValuesXOrY &xThetaValues,
53  const QString &delimiter,
54  const Transformation &transformation,
55  QTextStream &str) const;
56 
60  void initializeYRadiusValues (const QStringList &curvesIncluded,
61  const ExportValuesXOrY &xThetaValuesMerged,
62  QVector<QVector<QString*> > &yRadiusValues) const;
63 
64  double linearlyInterpolate (const Points &points,
65  double xThetaValue,
66  const Transformation &transformation) const;
67  void loadYRadiusValues (const DocumentModelExportFormat &modelExport,
68  const Document &document,
69  const MainWindowModel &modelMainWindow,
70  const QStringList &curvesIncluded,
71  const Transformation &transformation,
72  const ExportValuesXOrY &xThetaValues,
73  QVector<QVector<QString*> > &yRadiusValues) const;
74  void loadYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
75  const DocumentModelGeneral &modelGeneral,
76  const MainWindowModel &modelMainWindow,
77  const Points &points,
78  const ExportValuesXOrY &xThetaValues,
79  const Transformation &transformation,
80  QVector<QString*> &yRadiusValues) const;
81  void loadYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
82  const DocumentModelGeneral &modelGeneral,
83  const MainWindowModel &modelMainWindow,
84  const Points &points,
85  const ExportValuesXOrY &xThetaValues,
86  const Transformation &transformation,
87  QVector<QString*> &yRadiusValues) const;
88  void loadYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
89  const DocumentModelGeneral &modelGeneral,
90  const MainWindowModel &modelMainWindow,
91  const Points &points,
92  const ExportValuesXOrY &xThetaValues,
93  const Transformation &transformation,
94  QVector<QString*> &yRadiusValues) const;
95 
97  void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
98  const DocumentModelCoords &modelCoords,
99  const DocumentModelGeneral &modelGeneral,
100  const MainWindowModel &modelMainWindow,
101  const QStringList &curvesIncluded,
102  const ExportValuesXOrY &xThetaValuesMerged,
103  const Transformation &transformation,
104  QVector<QVector<QString*> > &yRadiusValues,
105  const QString &delimiter,
106  QTextStream &str) const;
107  // Only include rows that have at least one y/radius entry. This check is required when outputing one curve per row
108  // since the union of all x/theta values is applied to each curve
109  bool rowHasAtLeastOneYRadiusEntry (const QVector<QVector<QString*> > &yRadiusValues,
110  int row) const;
111 };
112 
113 #endif // EXPORT_FILE_FUNCTIONS_H
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
ExportFileFunctions()
Single constructor.
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) const
Export Document points according to the settings.