Engauge Digitizer 2
Loading...
Searching...
No Matches
ExportFileFunctions.h
Go to the documentation of this file.
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 "CurveLimits.h"
12#include "ExportValuesXOrY.h"
13#include "Points.h"
14#include <QStringList>
15#include <QVector>
16#include "ValuesVectorXOrY.h"
17
18class Document;
22class MainWindowModel;
23class QTextStream;
24class Transformation;
25
28{
29 // For unit testing
30 friend class TestExport;
31
32public:
35
38 void exportToFile (const DocumentModelExportFormat &modelExportOverride,
39 const Document &document,
40 const MainWindowModel &modelMainWindow,
41 const Transformation &transformation,
43 unsigned int &numWritesSoFar) const;
44
45private:
46
47 void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
48 const Document &document,
49 const MainWindowModel &modelMainWindow,
50 const QStringList &curvesIncluded,
51 const ExportValuesXOrY &xThetaValues,
52 const QString &delimiter,
53 const Transformation &transformation,
54 bool isLogXTheta,
55 bool isLogYRadius,
56 const CurveLimits curveLimitsMin,
57 const CurveLimits curveLimitsMax,
59 unsigned int &numWritesSoFar) const;
60 void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
61 const Document &document,
62 const MainWindowModel &modelMainWindow,
63 const QStringList &curvesIncluded,
64 const ExportValuesXOrY &xThetaValues,
65 const QString &delimiter,
66 const Transformation &transformation,
67 bool isLogXTheta,
68 bool isLogYRadius,
69 const CurveLimits curveLimitsMin,
70 const CurveLimits curveLimitsMax,
72 unsigned int &numWritesSoFar) const;
73
77 void initializeYRadiusValues (const QStringList &curvesIncluded,
80
81 double linearlyInterpolate (const Points &points,
82 double xThetaValue,
83 const Transformation &transformation) const;
84 void loadYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
85 const Document &document,
86 const MainWindowModel &modelMainWindow,
87 const QStringList &curvesIncluded,
88 const Transformation &transformation,
89 bool isLogXTheta,
90 bool isLogYRadius,
91 const ExportValuesXOrY &xThetaValues,
92 const CurveLimits &curveLimitsMin,
93 const CurveLimits &curveLimitsMax,
95 void loadYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
96 const DocumentModelGeneral &modelGeneral,
97 const MainWindowModel &modelMainWindow,
98 const Points &points,
99 const ExportValuesXOrY &xThetaValues,
100 const Transformation &transformation,
101 bool isLogXTheta,
102 bool isLogYRadius,
103 const QString &curveName,
104 const CurveLimits &curveLimitsMin,
105 const CurveLimits &curveLimitsMax,
107 void loadYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
108 const DocumentModelGeneral &modelGeneral,
109 const MainWindowModel &modelMainWindow,
110 const Points &points,
111 const ExportValuesXOrY &xThetaValues,
112 const Transformation &transformation,
113 const QString &curveName,
114 const CurveLimits &curveLimitsMin,
115 const CurveLimits &curveLimitsMax,
117 void loadYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
118 const DocumentModelGeneral &modelGeneral,
119 const MainWindowModel &modelMainWindow,
120 const Points &points,
121 const ExportValuesXOrY &xThetaValues,
122 const Transformation &transformation,
123 const QString &curveName,
124 const CurveLimits &curveLimitsMin,
125 const CurveLimits &curveLimitsMax,
127
129 void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
130 const DocumentModelCoords &modelCoords,
131 const DocumentModelGeneral &modelGeneral,
132 const MainWindowModel &modelMainWindow,
133 const QStringList &curvesIncluded,
135 const Transformation &transformation,
137 const QString &delimiter,
139 unsigned int &numWritesSoFar) const;
140 // Only include rows that have at least one y/radius entry. This check is required when outputing one curve per row
141 // since the union of all x/theta values is applied to each curve
142 bool rowHasAtLeastOneYRadiusEntry (const QVector<QVector<QString*> > &yRadiusValues,
143 int row) const;
144
145 // If there are bounds for the curve, make sure xTheta is within those bounds
146 bool xThetaIsNotOutOfBounds (double xTheta,
147 const QString &curveName,
148 const CurveLimits &curveLimitsMin,
149 const CurveLimits &curveLimitsMax) const;
150};
151
152#endif // EXPORT_FILE_FUNCTIONS_H
QHash< QString, double > CurveLimits
Definition CurveLimits.h:14
const int INNER_RADIUS_MIN
QList< double > ExportValuesXOrY
QList< Point > Points
Definition Points.h:13
Model for DlgSettingsCoords and CmdSettingsCoords.
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Storage of one imported image and the data attached to that image.
Definition Document.h:42
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...
ExportFileFunctions()
Single constructor.
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.
Model for DlgSettingsMainWindow.
Unit test of Export classes.
Definition TestExport.h:17
Affine transformation between screen and graph coordinates, based on digitized axis points.