00001
00002
00003
00004
00005
00006
00007 #ifndef EXPORT_FILE_RELATIONS_H
00008 #define EXPORT_FILE_RELATIONS_H
00009
00010 #include "ExportFileAbstractBase.h"
00011 #include "ExportPointsIntervalUnits.h"
00012 #include "ExportValuesOrdinal.h"
00013 #include <QStringList>
00014 #include <QVector>
00015
00016 class Document;
00017 class DocumentModelCoords;
00018 class DocumentModelExportFormat;
00019 class DocumentModelGeneral;
00020 class MainWindowModel;
00021 class QTextStream;
00022 class Transformation;
00023
00025 class ExportFileRelations : public ExportFileAbstractBase
00026 {
00027
00028 friend class TestExport;
00029
00030 public:
00032 ExportFileRelations();
00033
00036 void exportToFile (const DocumentModelExportFormat &modelExportOverride,
00037 const Document &document,
00038 const MainWindowModel &modelMainWindow,
00039 const Transformation &transformation,
00040 QTextStream &str,
00041 unsigned int &numWritesSoFar) const;
00042
00043 private:
00044 void exportAllPerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
00045 const Document &document,
00046 const MainWindowModel &modelMainWindow,
00047 const QStringList &curvesIncluded,
00048 const QString &delimiter,
00049 const Transformation &transformation,
00050 bool isLogXTheta,
00051 bool isLogYRadius,
00052 QTextStream &str,
00053 unsigned int &numWritesSoFar) const;
00054 void exportAllPerLineXThetaValuesMergedMultiplePass (int maxColumnSize,
00055 const DocumentModelExportFormat &modelExportOverride,
00056 const Document &document,
00057 const MainWindowModel &modelMainWindow,
00058 const QStringList &curvesIncluded,
00059 const QString &delimiter,
00060 const Transformation &transformation,
00061 bool isLogXTheta,
00062 bool isLogYRadius,
00063 QTextStream &str,
00064 unsigned int &numWritesSoFar) const;
00065 void exportAllPerLineXThetaValuesMergedOnePass (int maxColumnSize,
00066 const DocumentModelExportFormat &modelExportOverride,
00067 const Document &document,
00068 const MainWindowModel &modelMainWindow,
00069 const QStringList &curvesIncluded,
00070 const QString &delimiter,
00071 const Transformation &transformation,
00072 bool isLogXTheta,
00073 bool isLogYRadius,
00074 QTextStream &str,
00075 unsigned int &numWritesSoFar) const;
00076 void exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride,
00077 const Document &document,
00078 const MainWindowModel &modelMainWindow,
00079 const QStringList &curvesIncluded,
00080 const QString &delimiter,
00081 const Transformation &transformation,
00082 bool isLogXTheta,
00083 bool isLogYRadius,
00084 QTextStream &str,
00085 unsigned int &numWritesSoFar) const;
00086 void initializeXThetaYRadiusValues (const QStringList &curvesIncluded,
00087 QVector<QVector<QString*> > &xThetaYRadiusValues) const;
00088 QPointF linearlyInterpolate (const Points &points,
00089 double ordinal,
00090 const Transformation &transformation) const;
00091 void loadXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride,
00092 const Document &document,
00093 const MainWindowModel &modelMainWindow,
00094 const QStringList &curvesIncluded,
00095 const Transformation &transformation,
00096 bool isLogXTheta,
00097 bool isLogYRadius,
00098 QVector<QVector<QString*> > &xThetaYRadiusValues) const;
00099 void loadXThetaYRadiusValuesForCurveInterpolatedSmooth (const DocumentModelCoords &modelCoords,
00100 const DocumentModelGeneral &modelGeneral,
00101 const MainWindowModel &modelMainWindow,
00102 const Points &points,
00103 const ExportValuesOrdinal &ordinals,
00104 QVector<QString*> &xThetaValues,
00105 QVector<QString*> &yRadiusValues,
00106 const Transformation &transformation,
00107 bool isLogXTheta,
00108 bool isLogYRadius) const;
00109 void loadXThetaYRadiusValuesForCurveInterpolatedStraight (const DocumentModelCoords &modelCoords,
00110 const DocumentModelGeneral &modelGeneral,
00111 const MainWindowModel &modelMainWindow,
00112 const Points &points,
00113 const ExportValuesOrdinal &ordinals,
00114 QVector<QString*> &xThetaValues,
00115 QVector<QString*> &yRadiusValues,
00116 const Transformation &transformation) const;
00117 void loadXThetaYRadiusValuesForCurveRaw (const DocumentModelCoords &modelCoords,
00118 const DocumentModelGeneral &modelGeneral,
00119 const MainWindowModel &modelMainWindow,
00120 const Points &points,
00121 QVector<QString*> &xThetaValues,
00122 QVector<QString*> &yRadiusValues,
00123 const Transformation &transformation) const;
00124 int maxColumnSizeAllocation (const DocumentModelExportFormat &modelExportOverride,
00125 const Document &document,
00126 const Transformation &transformation,
00127 bool isLogXTheta,
00128 bool isLogYRadius,
00129 const QStringList &curvesIncluded) const;
00130 ExportValuesOrdinal ordinalsAtIntervals (double pointsIntervalRelations,
00131 ExportPointsIntervalUnits pointsIntervalUnits,
00132 CurveConnectAs curveConnectAs,
00133 const Transformation &transformation,
00134 bool isLogXTheta,
00135 bool isLogYRadius,
00136 const Points &points) const;
00137 ExportValuesOrdinal ordinalsAtIntervalsSmoothGraph (double pointsIntervalRelations,
00138 const Transformation &transformation,
00139 bool isLogXTheta,
00140 bool isLogYRadius,
00141 const Points &points) const;
00142 ExportValuesOrdinal ordinalsAtIntervalsSmoothScreen (double pointsIntervalRelations,
00143 const Points &points) const;
00144 ExportValuesOrdinal ordinalsAtIntervalsStraightGraph (double pointsIntervalRelations,
00145 const Transformation &transformation,
00146 const Points &points) const;
00147 ExportValuesOrdinal ordinalsAtIntervalsStraightScreen (double pointsIntervalRelations,
00148 const Points &points) const;
00149
00151 void outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExport,
00152 const QStringList &curvesIncluded,
00153 QVector<QVector<QString*> > &xThetaYRadiusValues,
00154 const QString &delimiter,
00155 QTextStream &str,
00156 unsigned int &numWritesSoFar) const;
00157 };
00158
00159 #endif // EXPORT_FILE_RELATIONS_H