00001
00002
00003
00004
00005
00006
00007 #ifndef EXPORT_FILE_FUNCTIONS_H
00008 #define EXPORT_FILE_FUNCTIONS_H
00009
00010 #include "ExportFileAbstractBase.h"
00011 #include "ExportValuesXOrY.h"
00012 #include <QStringList>
00013 #include <QVector>
00014
00015 class Document;
00016 class DocumentModelCoords;
00017 class DocumentModelExportFormat;
00018 class MainWindowModel;
00019 class QTextStream;
00020 class Transformation;
00021
00023 class ExportFileFunctions : public ExportFileAbstractBase
00024 {
00025 public:
00027 ExportFileFunctions();
00028
00031 void exportToFile (const DocumentModelExportFormat &modelExportOverride,
00032 const Document &document,
00033 const MainWindowModel &modelMainWindow,
00034 const Transformation &transformation,
00035 QTextStream &str) const;
00036
00037 private:
00038
00039 void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
00040 const Document &document,
00041 const MainWindowModel &modelMainWindow,
00042 const QStringList &curvesIncluded,
00043 const ExportValuesXOrY &xThetaValues,
00044 const QString &delimiter,
00045 const Transformation &transformation,
00046 QTextStream &str) const;
00047 void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
00048 const Document &document,
00049 const MainWindowModel &modelMainWindow,
00050 const QStringList &curvesIncluded,
00051 const ExportValuesXOrY &xThetaValues,
00052 const QString &delimiter,
00053 const Transformation &transformation,
00054 QTextStream &str) const;
00055
00059 void initializeYRadiusValues (const QStringList &curvesIncluded,
00060 const ExportValuesXOrY &xThetaValuesMerged,
00061 QVector<QVector<QString*> > &yRadiusValues) const;
00062
00063 double linearlyInterpolate (const Points &points,
00064 double xThetaValue,
00065 const Transformation &transformation) const;
00066 void loadYRadiusValues (const DocumentModelExportFormat &modelExport,
00067 const Document &document,
00068 const MainWindowModel &modelMainWindow,
00069 const QStringList &curvesIncluded,
00070 const Transformation &transformation,
00071 const ExportValuesXOrY &xThetaValues,
00072 QVector<QVector<QString*> > &yRadiusValues) const;
00073 void loadYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
00074 const MainWindowModel &modelMainWindow,
00075 const Points &points,
00076 const ExportValuesXOrY &xThetaValues,
00077 const Transformation &transformation,
00078 QVector<QString*> &yRadiusValues) const;
00079 void loadYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
00080 const MainWindowModel &modelMainWindow,
00081 const Points &points,
00082 const ExportValuesXOrY &xThetaValues,
00083 const Transformation &transformation,
00084 QVector<QString*> &yRadiusValues) const;
00085 void loadYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
00086 const MainWindowModel &modelMainWindow,
00087 const Points &points,
00088 const ExportValuesXOrY &xThetaValues,
00089 const Transformation &transformation,
00090 QVector<QString*> &yRadiusValues) const;
00091
00093 void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
00094 const DocumentModelCoords &modelCoords,
00095 const MainWindowModel &modelMainWindow,
00096 const QStringList &curvesIncluded,
00097 const ExportValuesXOrY &xThetaValuesMerged,
00098 const Transformation &transformation,
00099 QVector<QVector<QString*> > &yRadiusValues,
00100 const QString &delimiter,
00101 QTextStream &str) const;
00102
00103
00104 bool rowHasAtLeastOneYRadiusEntry (const QVector<QVector<QString*> > &yRadiusValues,
00105 int row) const;
00106 };
00107
00108 #endif // EXPORT_FILE_FUNCTIONS_H