Engauge Digitizer
2
Toggle main menu visibility
Loading...
Searching...
No Matches
Export
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
"
11
#include "
ExportFileAbstractBase.h
"
12
#include "
ExportValuesXOrY.h
"
13
#include "
FittingPointsConvenient.h
"
14
#include "
Points.h
"
15
#include <QStringList>
16
#include <QVector>
17
#include "
ValuesVectorXOrY.h
"
18
19
class
Document
;
20
class
DocumentModelCoords
;
21
class
DocumentModelExportFormat
;
22
class
DocumentModelGeneral
;
23
class
MainWindowModel
;
24
class
QTextStream;
25
class
Transformation
;
26
28
class
ExportFileFunctions
:
public
ExportFileAbstractBase
29
{
30
// For unit testing
31
friend
class
TestExport
;
32
33
public
:
35
ExportFileFunctions
();
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
47
private
:
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
CurveLimits.h
CurveLimits
QHash< QString, double > CurveLimits
Definition
CurveLimits.h:14
ExportFileAbstractBase.h
ExportValuesXOrY.h
ExportValuesXOrY
QList< double > ExportValuesXOrY
Definition
ExportValuesXOrY.h:12
FittingPointsConvenient.h
FittingPointsConvenient
QList< QPointF > FittingPointsConvenient
Array of (x,y) points in graph coordinates.
Definition
FittingPointsConvenient.h:15
Points.h
Points
QList< Point > Points
Definition
Points.h:13
ValuesVectorXOrY.h
DocumentModelCoords
Model for DlgSettingsCoords and CmdSettingsCoords.
Definition
DocumentModelCoords.h:21
DocumentModelExportFormat
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
Definition
DocumentModelExportFormat.h:24
DocumentModelGeneral
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Definition
DocumentModelGeneral.h:17
Document
Storage of one imported image and the data attached to that image.
Definition
Document.h:44
ExportFileAbstractBase::ExportFileAbstractBase
ExportFileAbstractBase()
Single constructor.
Definition
ExportFileAbstractBase.cpp:21
ExportFileFunctions::TestExport
friend class TestExport
Definition
ExportFileFunctions.h:31
ExportFileFunctions::ExportFileFunctions
ExportFileFunctions()
Single constructor.
Definition
ExportFileFunctions.cpp:31
ExportFileFunctions::exportToFile
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.
Definition
ExportFileFunctions.cpp:138
MainWindowModel
Model for DlgSettingsMainWindow.
Definition
MainWindowModel.h:33
Transformation
Affine transformation between screen and graph coordinates, based on digitized axis points.
Definition
Transformation.h:32
Generated on
for Engauge Digitizer by
1.17.0