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
00027 friend class TestExport;
00028
00029 public:
00031 ExportFileFunctions();
00032
00035 void exportToFile (const DocumentModelExportFormat &modelExportOverride,
00036 const Document &document,
00037 const MainWindowModel &modelMainWindow,
00038 const Transformation &transformation,
00039 QTextStream &str,
00040 unsigned int &numWritesSoFar) const;
00041
00042 private:
00043
00044 void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
00045 const Document &document,
00046 const MainWindowModel &modelMainWindow,
00047 const QStringList &curvesIncluded,
00048 const ExportValuesXOrY &xThetaValues,
00049 const QString &delimiter,
00050 const Transformation &transformation,
00051 bool isLogXTheta,
00052 bool isLogYRadius,
00053 QTextStream &str,
00054 unsigned int &numWritesSoFar) const;
00055 void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
00056 const Document &document,
00057 const MainWindowModel &modelMainWindow,
00058 const QStringList &curvesIncluded,
00059 const ExportValuesXOrY &xThetaValues,
00060 const QString &delimiter,
00061 const Transformation &transformation,
00062 bool isLogXTheta,
00063 bool isLogYRadius,
00064 QTextStream &str,
00065 unsigned int &numWritesSoFar) const;
00066
00070 void initializeYRadiusValues (const QStringList &curvesIncluded,
00071 const ExportValuesXOrY &xThetaValuesMerged,
00072 QVector<QVector<QString*> > &yRadiusValues) const;
00073
00074 double linearlyInterpolate (const Points &points,
00075 double xThetaValue,
00076 const Transformation &transformation) const;
00077 void loadYRadiusValues (const DocumentModelExportFormat &modelExport,
00078 const Document &document,
00079 const MainWindowModel &modelMainWindow,
00080 const QStringList &curvesIncluded,
00081 const Transformation &transformation,
00082 bool isLogXTheta,
00083 bool isLogYRadius,
00084 const ExportValuesXOrY &xThetaValues,
00085 QVector<QVector<QString*> > &yRadiusValues) const;
00086 void loadYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
00087 const DocumentModelGeneral &modelGeneral,
00088 const MainWindowModel &modelMainWindow,
00089 const Points &points,
00090 const ExportValuesXOrY &xThetaValues,
00091 const Transformation &transformation,
00092 bool isLogXTheta,
00093 bool isLogYRadius,
00094 QVector<QString*> &yRadiusValues) const;
00095 void loadYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
00096 const DocumentModelGeneral &modelGeneral,
00097 const MainWindowModel &modelMainWindow,
00098 const Points &points,
00099 const ExportValuesXOrY &xThetaValues,
00100 const Transformation &transformation,
00101 QVector<QString*> &yRadiusValues) const;
00102 void loadYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
00103 const DocumentModelGeneral &modelGeneral,
00104 const MainWindowModel &modelMainWindow,
00105 const Points &points,
00106 const ExportValuesXOrY &xThetaValues,
00107 const Transformation &transformation,
00108 QVector<QString*> &yRadiusValues) const;
00109
00111 void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
00112 const DocumentModelCoords &modelCoords,
00113 const DocumentModelGeneral &modelGeneral,
00114 const MainWindowModel &modelMainWindow,
00115 const QStringList &curvesIncluded,
00116 const ExportValuesXOrY &xThetaValuesMerged,
00117 const Transformation &transformation,
00118 QVector<QVector<QString*> > &yRadiusValues,
00119 const QString &delimiter,
00120 QTextStream &str,
00121 unsigned int &numWritesSoFar) const;
00122
00123
00124 bool rowHasAtLeastOneYRadiusEntry (const QVector<QVector<QString*> > &yRadiusValues,
00125 int row) const;
00126 };
00127
00128 #endif // EXPORT_FILE_FUNCTIONS_H