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"
14#include "Points.h"
15#include <QStringList>
16#include <QVector>
17#include "ValuesVectorXOrY.h"
18
19class Document;
23class MainWindowModel;
24class QTextStream;
25class Transformation;
26
29{
30 // For unit testing
31 friend class TestExport;
32
33public:
36
39 void exportToFile (const DocumentModelExportFormat &modelExportOverride,
40 const Document &document,
41 const MainWindowModel &modelMainWindow,
42 const Transformation &transformation,
43 QTextStream &str,
44 unsigned int &numWritesSoFar,
45 bool &isOverrun) const;
46
47private:
48
49 void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
50 const Document &document,
51 const MainWindowModel &modelMainWindow,
52 const QStringList &curvesIncluded,
53 const ExportValuesXOrY &xThetaValues,
54 const QString &delimiter,
55 const Transformation &transformation,
56 bool isLogXTheta,
57 bool isLogYRadius,
58 const CurveLimits curveLimitsMin,
59 const CurveLimits curveLimitsMax,
60 QTextStream &str,
61 unsigned int &numWritesSoFar) const;
62 void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
63 const Document &document,
64 const MainWindowModel &modelMainWindow,
65 const QStringList &curvesIncluded,
66 const ExportValuesXOrY &xThetaValues,
67 const QString &delimiter,
68 const Transformation &transformation,
69 bool isLogXTheta,
70 bool isLogYRadius,
71 const CurveLimits curveLimitsMin,
72 const CurveLimits curveLimitsMax,
73 QTextStream &str,
74 unsigned int &numWritesSoFar) const;
75
79 void initializeYRadiusValues (const QStringList &curvesIncluded,
80 const ExportValuesXOrY &xThetaValuesMerged,
81 QVector<QVector<QString*> > &yRadiusValues) const;
82
83 double linearlyInterpolate (const FittingPointsConvenient &positionsLinearized,
84 double xThetaLinearized) const;
85 void loadYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
86 const Document &document,
87 const MainWindowModel &modelMainWindow,
88 const QStringList &curvesIncluded,
89 const Transformation &transformation,
90 bool isLogXTheta,
91 bool isLogYRadius,
92 const ExportValuesXOrY &xThetaValues,
93 const CurveLimits &curveLimitsMin,
94 const CurveLimits &curveLimitsMax,
95 QVector<QVector<QString*> > &yRadiusValues) const;
96 void loadYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
97 const DocumentModelGeneral &modelGeneral,
98 const MainWindowModel &modelMainWindow,
99 const Points &points,
100 const ExportValuesXOrY &xThetaValues,
101 const Transformation &transformation,
102 bool isLogXTheta,
103 bool isLogYRadius,
104 const QString &curveName,
105 const CurveLimits &curveLimitsMin,
106 const CurveLimits &curveLimitsMax,
107 QVector<QString*> &yRadiusValues) const;
108 void loadYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
109 const DocumentModelGeneral &modelGeneral,
110 const MainWindowModel &modelMainWindow,
111 const Points &points,
112 const ExportValuesXOrY &xThetaValues,
113 const Transformation &transformation,
114 bool isLogXTheta,
115 bool isLogYRadius,
116 const QString &curveName,
117 const CurveLimits &curveLimitsMin,
118 const CurveLimits &curveLimitsMax,
119 QVector<QString*> &yRadiusValues) const;
120 void loadYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
121 const DocumentModelGeneral &modelGeneral,
122 const MainWindowModel &modelMainWindow,
123 const Points &points,
124 const ExportValuesXOrY &xThetaValues,
125 const Transformation &transformation,
126 const QString &curveName,
127 const CurveLimits &curveLimitsMin,
128 const CurveLimits &curveLimitsMax,
129 QVector<QString*> &yRadiusValues) const;
130
132 void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
133 const DocumentModelCoords &modelCoords,
134 const DocumentModelGeneral &modelGeneral,
135 const MainWindowModel &modelMainWindow,
136 const QStringList &curvesIncluded,
137 const ExportValuesXOrY &xThetaValuesMerged,
138 const Transformation &transformation,
139 QVector<QVector<QString*> > &yRadiusValues,
140 const QString &delimiter,
141 QTextStream &str,
142 unsigned int &numWritesSoFar) const;
143 // Transform screen points into linearized graph points
144 FittingPointsConvenient populateLinearizedFittingPositions (const Points &points,
145 const Transformation &transformation,
146 bool isLogXTheta,
147 bool isLogYRadius) const;
148 // Only include rows that have at least one y/radius entry. This check is required when outputing one curve per row
149 // since the union of all x/theta values is applied to each curve
150 bool rowHasAtLeastOneYRadiusEntry (const QVector<QVector<QString*> > &yRadiusValues,
151 int row) const;
152
153 // If there are bounds for the curve, make sure xTheta is within those bounds
154 bool xThetaIsNotOutOfBounds (double xTheta,
155 const QString &curveName,
156 const CurveLimits &curveLimitsMin,
157 const CurveLimits &curveLimitsMax) const;
158};
159
160#endif // EXPORT_FILE_FUNCTIONS_H
QHash< QString, double > CurveLimits
Definition CurveLimits.h:14
QList< double > ExportValuesXOrY
QList< QPointF > FittingPointsConvenient
Array of (x,y) points in graph coordinates.
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:44
ExportFileAbstractBase()
Single constructor.
ExportFileFunctions()
Single constructor.
void exportToFile(const DocumentModelExportFormat &modelExportOverride, const Document &document, const MainWindowModel &modelMainWindow, const Transformation &transformation, QTextStream &str, unsigned int &numWritesSoFar, bool &isOverrun) const
Export Document points according to the settings.
Model for DlgSettingsMainWindow.
Affine transformation between screen and graph coordinates, based on digitized axis points.