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) const;
38 
39 private:
40  void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
41  const Document &document,
42  const MainWindowModel &modelMainWindow,
43  const QStringList &curvesIncluded,
44  const QString &delimiter,
45  const Transformation &transformation,
46  bool isLogXTheta,
47  bool isLogYRadius,
48  QTextStream &str) const;
49  void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
50  const Document &document,
51  const MainWindowModel &modelMainWindow,
52  const QStringList &curvesIncluded,
53  const QString &delimiter,
54  const Transformation &transformation,
55  bool isLogXTheta,
56  bool isLogYRadius,
57  QTextStream &str) const;
58  void initializeXThetaYRadiusValues (const QStringList &curvesIncluded,
59  QVector<QVector<QString*> > &xThetaYRadiusValues) const;
60  QPointF linearlyInterpolate (const Points &points,
61  double ordinal,
62  const Transformation &transformation) const;
63  void loadXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
64  const Document &document,
65  const MainWindowModel &modelMainWindow,
66  const QStringList &curvesIncluded,
67  const Transformation &transformation,
68  bool isLogXTheta,
69  bool isLogYRadius,
70  QVector<QVector<QString*> > &xThetaYRadiusValues) const;
71  void loadXThetaYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
72  const DocumentModelGeneral &modelGeneral,
73  const MainWindowModel &modelMainWindow,
74  const Points &points,
75  const ExportValuesOrdinal &ordinals,
76  QVector<QString*> &xThetaValues,
77  QVector<QString*> &yRadiusValues,
78  const Transformation &transformation,
79  bool isLogXTheta,
80  bool isLogYRadius) const;
81  void loadXThetaYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
82  const DocumentModelGeneral &modelGeneral,
83  const MainWindowModel &modelMainWindow,
84  const Points &points,
85  const ExportValuesOrdinal &ordinals,
86  QVector<QString*> &xThetaValues,
87  QVector<QString*> &yRadiusValues,
88  const Transformation &transformation) const;
89  void loadXThetaYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
90  const DocumentModelGeneral &modelGeneral,
91  const MainWindowModel &modelMainWindow,
92  const Points &points,
93  QVector<QString*> &xThetaValues,
94  QVector<QString*> &yRadiusValues,
95  const Transformation &transformation) const;
96  int maxColumnSizeAllocation (const DocumentModelExportFormat &modelExportOverride,
97  const Document &document,
98  const Transformation &transformation,
99  bool isLogXTheta,
100  bool isLogYRadius,
101  const QStringList &curvesIncluded) const;
102  ExportValuesOrdinal ordinalsAtIntervals (double pointsIntervalRelations,
103  ExportPointsIntervalUnits pointsIntervalUnits,
104  CurveConnectAs curveConnectAs,
105  const Transformation &transformation,
106  bool isLogXTheta,
107  bool isLogYRadius,
108  const Points &points) const;
109  ExportValuesOrdinal ordinalsAtIntervalsSmoothGraph (double pointsIntervalRelations,
110  const Transformation &transformation,
111  bool isLogXTheta,
112  bool isLogYRadius,
113  const Points &points) const;
114  ExportValuesOrdinal ordinalsAtIntervalsSmoothScreen (double pointsIntervalRelations,
115  const Points &points) const;
116  ExportValuesOrdinal ordinalsAtIntervalsStraightGraph (double pointsIntervalRelations,
117  const Transformation &transformation,
118  const Points &points) const;
119  ExportValuesOrdinal ordinalsAtIntervalsStraightScreen (double pointsIntervalRelations,
120  const Points &points) const;
121 
123  void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExport,
124  const QStringList &curvesIncluded,
125  QVector<QVector<QString*> > &xThetaYRadiusValues,
126  const QString &delimiter,
127  QTextStream &str) const;
128 };
129 
130 #endif // EXPORT_FILE_RELATIONS_H
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
void exportToFile(const DocumentModelExportFormat &modelExportOverride, const Document &document, const MainWindowModel &modelMainWindow, const Transformation &transformation, QTextStream &str) const
Export Document points according to the settings.
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
Strategy base class for exporting to a file. This class provides common methods.
ExportFileRelations()
Single constructor.