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 DocumentModelGeneral;
00019 class MainWindowModel;
00020 class QTextStream;
00021 class Transformation;
00022
00024 class ExportFileFunctions : public ExportFileAbstractBase
00025 {
00026 public:
00028 ExportFileFunctions();
00029
00032 void exportToFile (const DocumentModelExportFormat &modelExportOverride,
00033 const Document &document,
00034 const MainWindowModel &modelMainWindow,
00035 const Transformation &transformation,
00036 QTextStream &str) const;
00037
00038 private:
00039
00040 void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
00041 const Document &document,
00042 const MainWindowModel &modelMainWindow,
00043 const QStringList &curvesIncluded,
00044 const ExportValuesXOrY &xThetaValues,
00045 const QString &delimiter,
00046 const Transformation &transformation,
00047 QTextStream &str) const;
00048 void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
00049 const Document &document,
00050 const MainWindowModel &modelMainWindow,
00051 const QStringList &curvesIncluded,
00052 const ExportValuesXOrY &xThetaValues,
00053 const QString &delimiter,
00054 const Transformation &transformation,
00055 QTextStream &str) const;
00056
00060 void initializeYRadiusValues (const QStringList &curvesIncluded,
00061 const ExportValuesXOrY &xThetaValuesMerged,
00062 QVector<QVector<QString*> > &yRadiusValues) const;
00063
00064 double linearlyInterpolate (const Points &points,
00065 double xThetaValue,
00066 const Transformation &transformation) const;
00067 void loadYRadiusValues (const DocumentModelExportFormat &modelExport,
00068 const Document &document,
00069 const MainWindowModel &modelMainWindow,
00070 const QStringList &curvesIncluded,
00071 const Transformation &transformation,
00072 const ExportValuesXOrY &xThetaValues,
00073 QVector<QVector<QString*> > &yRadiusValues) const;
00074 void loadYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
00075 const DocumentModelGeneral &modelGeneral,
00076 const MainWindowModel &modelMainWindow,
00077 const Points &points,
00078 const ExportValuesXOrY &xThetaValues,
00079 const Transformation &transformation,
00080 QVector<QString*> &yRadiusValues) const;
00081 void loadYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
00082 const DocumentModelGeneral &modelGeneral,
00083 const MainWindowModel &modelMainWindow,
00084 const Points &points,
00085 const ExportValuesXOrY &xThetaValues,
00086 const Transformation &transformation,
00087 QVector<QString*> &yRadiusValues) const;
00088 void loadYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
00089 const DocumentModelGeneral &modelGeneral,
00090 const MainWindowModel &modelMainWindow,
00091 const Points &points,
00092 const ExportValuesXOrY &xThetaValues,
00093 const Transformation &transformation,
00094 QVector<QString*> &yRadiusValues) const;
00095
00097 void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
00098 const DocumentModelCoords &modelCoords,
00099 const DocumentModelGeneral &modelGeneral,
00100 const MainWindowModel &modelMainWindow,
00101 const QStringList &curvesIncluded,
00102 const ExportValuesXOrY &xThetaValuesMerged,
00103 const Transformation &transformation,
00104 QVector<QVector<QString*> > &yRadiusValues,
00105 const QString &delimiter,
00106 QTextStream &str) const;
00107
00108
00109 bool rowHasAtLeastOneYRadiusEntry (const QVector<QVector<QString*> > &yRadiusValues,
00110 int row) const;
00111 };
00112
00113 #endif // EXPORT_FILE_FUNCTIONS_H