void ExportFileFunctions::outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride, const DocumentModelCoords &modelCoords, const MainWindowModel &modelMainWindow, const QStringList &curvesIncluded, const ExportValuesXOrY &xThetaValuesMerged, const Transformation &transformation, QVector<QVector<QString*> > &yRadiusValues, const QString &delimiter, QTextStream &str) const { LOG4CPP_INFO_S ((*mainCat)) << "ExportFileFunctions::outputXThetaYRadiusValues"; // Header if (modelExportOverride.header() != EXPORT_HEADER_NONE) { if (modelExportOverride.header() == EXPORT_HEADER_GNUPLOT) { str << curveSeparator (str.string()); str << gnuplotComment(); } str << modelExportOverride.xLabel(); QStringList::const_iterator itrHeader; for (itrHeader = curvesIncluded.begin(); itrHeader != curvesIncluded.end(); itrHeader++) { QString curveName = *itrHeader; str << delimiter << curveName; } str << "\n"; } FormatCoordsUnits format; const double DUMMY_Y_RADIUS = 1.0; for (int row = 0; row < xThetaValuesMerged.count(); row++) { if (rowHasAtLeastOneYRadiusEntry (yRadiusValues, row)) { double xTheta = xThetaValuesMerged.at (row); // Output x/theta value for this row QString xThetaString, yRadiusString; format.unformattedToFormatted (xTheta, DUMMY_Y_RADIUS, modelCoords, modelMainWindow, xThetaString, yRadiusString, transformation); str << xThetaString; for (int col = 0; col < yRadiusValues.count(); col++) { str << delimiter << *(yRadiusValues [col] [row]); } str << "\n"; } } }
void ExportFileRelations::outputXThetaYRadiusValues (const DocumentModelExportFormat &modelExportOverride, const QStringList &curvesIncluded, QVector<QVector<QString*> > &xThetaYRadiusValues, const QString &delimiter, QTextStream &str) const { LOG4CPP_INFO_S ((*mainCat)) << "ExportFileRelations::outputXThetaYRadiusValues"; // Header if (modelExportOverride.header() != EXPORT_HEADER_NONE) { if (modelExportOverride.header() == EXPORT_HEADER_GNUPLOT) { str << curveSeparator(str.string()); str << gnuplotComment(); } QString delimiterForRow; QStringList::const_iterator itr; for (itr = curvesIncluded.begin(); itr != curvesIncluded.end(); itr++) { QString curveName = *itr; str << delimiterForRow << modelExportOverride.xLabel(); delimiterForRow = delimiter; str << delimiterForRow << curveName; } str << "\n"; } for (int row = 0; row < xThetaYRadiusValues [0].count(); row++) { QString delimiterForRow; for (int col = 0; col < xThetaYRadiusValues.count(); col++) { str << delimiterForRow << *(xThetaYRadiusValues [col] [row]); delimiterForRow = delimiter; } str << "\n"; } }
void ExportFileFunctions::exportOnePerLineXThetaValuesMerged (const DocumentModelExportFormat &modelExportOverride, const Document &document, const MainWindowModel &modelMainWindow, const QStringList &curvesIncluded, const ExportValuesXOrY &xThetaValues, const QString &delimiter, const Transformation &transformation, QTextStream &str) const { LOG4CPP_INFO_S ((*mainCat)) << "ExportFileFunctions::exportOnePerLineXThetaValuesMerged"; bool isFirst = true; QStringList::const_iterator itr; for (itr = curvesIncluded.begin(); itr != curvesIncluded.end(); itr++) { insertLineSeparator (isFirst, modelExportOverride.header(), str); // This curve const int CURVE_COUNT = 1; QString curveIncluded = *itr; QStringList curvesIncluded (curveIncluded); int xThetaCount = xThetaValues.count(); QVector<QVector<QString*> > yRadiusValues (CURVE_COUNT, QVector<QString*> (xThetaCount)); initializeYRadiusValues (curvesIncluded, xThetaValues, yRadiusValues); loadYRadiusValues (modelExportOverride, document, modelMainWindow, curvesIncluded, transformation, xThetaValues, yRadiusValues); outputXThetaYRadiusValues (modelExportOverride, document.modelCoords(), modelMainWindow, curvesIncluded, xThetaValues, transformation, yRadiusValues, delimiter, str); destroy2DArray (yRadiusValues); } }
DocumentModelExportFormat::DocumentModelExportFormat(const DocumentModelExportFormat &other) : m_curveNamesNotExported (other.curveNamesNotExported()), m_pointsSelectionFunctions (other.pointsSelectionFunctions()), m_pointsIntervalFunctions (other.pointsIntervalFunctions()), m_pointsIntervalUnitsFunctions (other.pointsIntervalUnitsFunctions()), m_pointsSelectionRelations (other.pointsSelectionRelations()), m_pointsIntervalRelations (other.pointsIntervalRelations()), m_pointsIntervalUnitsRelations (other.pointsIntervalUnitsRelations()), m_layoutFunctions (other.layoutFunctions()), m_delimiter (other.delimiter()), m_header (other.header()), m_xLabel (other.xLabel ()) { }
void ExportFileRelations::exportToFile (const DocumentModelExportFormat &modelExportOverride, const Document &document, const MainWindowModel &modelMainWindow, const Transformation &transformation, QTextStream &str) const { LOG4CPP_INFO_S ((*mainCat)) << "ExportFileRelations::exportToFile"; // Identify curves to be included QStringList curvesIncluded = curvesToInclude (modelExportOverride, document, document.curvesGraphsNames(), CONNECT_AS_RELATION_SMOOTH, CONNECT_AS_RELATION_STRAIGHT); // Delimiter const QString delimiter = exportDelimiterToText (modelExportOverride.delimiter(), modelExportOverride.header() == EXPORT_HEADER_GNUPLOT); // Export in one of two layouts if (modelExportOverride.layoutFunctions() == EXPORT_LAYOUT_ALL_PER_LINE) { exportAllPerLineXThetaValuesMerged (modelExportOverride, document, modelMainWindow, curvesIncluded, delimiter, transformation, str); } else { exportOnePerLineXThetaValuesMerged (modelExportOverride, document, modelMainWindow, curvesIncluded, delimiter, transformation, str); } }